forked from 77media/video-flow
Merge branch 'main' into dev
This commit is contained in:
commit
891d8bf454
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
|
package-lock.json
|
||||||
/node_modules
|
/node_modules
|
||||||
/.pnp
|
/.pnp
|
||||||
.pnp.*
|
.pnp.*
|
||||||
|
|||||||
13
app/page.tsx
13
app/page.tsx
@ -8,15 +8,4 @@ export default function Home() {
|
|||||||
<HomePage2 />
|
<HomePage2 />
|
||||||
</DashboardLayout>
|
</DashboardLayout>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// import LiquidGlass from '@/plugins/liquid-glass'
|
|
||||||
|
|
||||||
// export default function Home() {
|
|
||||||
// return (
|
|
||||||
// // <LiquidGlass />
|
|
||||||
// <div>
|
|
||||||
// <h1>Hello World</h1>
|
|
||||||
// </div>
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
|
import '../pages/style/top-bar.css';
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import {
|
import {
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
@ -24,15 +25,37 @@ export function TopBar({ collapsed, onToggleSidebar }: { collapsed: boolean; onT
|
|||||||
const { theme, setTheme } = useTheme();
|
const { theme, setTheme } = useTheme();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
const handleAnimationEnd = (event: React.AnimationEvent<HTMLDivElement>) => {
|
||||||
|
const element = event.currentTarget;
|
||||||
|
element.classList.remove('on');
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleMouseEnter = (event: React.MouseEvent<HTMLDivElement>) => {
|
||||||
|
const element = event.currentTarget;
|
||||||
|
element.classList.add('on');
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="fixed right-0 top-0 left-0 h-16">
|
<div className="fixed right-0 top-0 left-0 h-16 header">
|
||||||
<div className="h-full flex items-center justify-between pr-6 pl-2">
|
<div className="h-full flex items-center justify-between pr-6 pl-2">
|
||||||
<div className="flex items-center space-x-4">
|
<div className="flex items-center space-x-4">
|
||||||
<Button className='button-NxtqWZ' variant="ghost" size="sm" onClick={onToggleSidebar}>
|
<Button className='button-NxtqWZ' variant="ghost" size="sm" onClick={onToggleSidebar}>
|
||||||
<PanelsLeftBottom className="h-4 w-4" />
|
<PanelsLeftBottom className="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
<div className={`flex items-center space-x-4 cursor-pointer`} onClick={() => router.push('/')}>
|
<div
|
||||||
<h1 className="text-2xl font-bold bg-gradient-to-r from-primary to-white bg-clip-text text-transparent">Movie Flow</h1>
|
className={`flex items-center cursor-pointer space-x-4 link-logo roll event-on`}
|
||||||
|
onClick={() => router.push('/')}
|
||||||
|
onMouseEnter={handleMouseEnter}
|
||||||
|
onAnimationEnd={handleAnimationEnd}
|
||||||
|
>
|
||||||
|
<span className="translate">
|
||||||
|
<span>
|
||||||
|
<h1 className="logo text-2xl font-bold bg-gradient-to-r from-primary to-white bg-clip-text text-transparent">Movie Flow</h1>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<h1 className="logo text-2xl font-bold bg-gradient-to-r from-primary to-white bg-clip-text text-transparent">Movie Flow</h1>
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -54,7 +54,7 @@ export function HomePage2() {
|
|||||||
<div className="min-h-screen bg-[var(--background)]" ref={containerRef}>
|
<div className="min-h-screen bg-[var(--background)]" ref={containerRef}>
|
||||||
<div className="min-h-[100%] flex relative">
|
<div className="min-h-[100%] flex relative">
|
||||||
{/* 工具栏-列表形式切换 */}
|
{/* 工具栏-列表形式切换 */}
|
||||||
<div className="absolute top-[1rem] right-6 w-[8rem] flex z-[100] justify-end">
|
<div className="absolute top-[1rem] right-6 w-[8rem] flex justify-end">
|
||||||
<div role="group" className="flex p-1 bg-white/20 backdrop-blur-[15px] w-full rounded-[3rem]">
|
<div role="group" className="flex p-1 bg-white/20 backdrop-blur-[15px] w-full rounded-[3rem]">
|
||||||
<button
|
<button
|
||||||
className={`flex items-center justify-center h-10 transition-all duration-300 w-1/2 rounded-[3rem]
|
className={`flex items-center justify-center h-10 transition-all duration-300 w-1/2 rounded-[3rem]
|
||||||
@ -110,7 +110,7 @@ export function HomePage2() {
|
|||||||
{/* 玻璃按钮 */}
|
{/* 玻璃按钮 */}
|
||||||
<motion.div
|
<motion.div
|
||||||
className="add-project-btn relative flex items-center gap-3 px-6 py-4 rounded-2xl
|
className="add-project-btn relative flex items-center gap-3 px-6 py-4 rounded-2xl
|
||||||
bg-white/20 backdrop-blur-md border border-white/25 cursor-pointer
|
bg-white/20 backdrop-blur-md cursor-pointer
|
||||||
shadow-[0_8px_32px_rgba(0,0,0,0.2)] group-hover:shadow-[0_8px_32px_rgba(0,0,0,0.4)]
|
shadow-[0_8px_32px_rgba(0,0,0,0.2)] group-hover:shadow-[0_8px_32px_rgba(0,0,0,0.4)]
|
||||||
transition-all duration-300"
|
transition-all duration-300"
|
||||||
initial={false}
|
initial={false}
|
||||||
|
|||||||
55
components/pages/style/top-bar.css
Normal file
55
components/pages/style/top-bar.css
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
.header {
|
||||||
|
pointer-events: none;
|
||||||
|
transition: color .2s;
|
||||||
|
}
|
||||||
|
@keyframes btnAnimation2 {
|
||||||
|
0% {
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translate(0, 100%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (pointer: fine) {
|
||||||
|
.roll.on .translate {
|
||||||
|
animation-name: btnAnimation2;
|
||||||
|
animation-play-state: running;
|
||||||
|
animation-iteration-count: 1;
|
||||||
|
animation-duration: .4s;
|
||||||
|
animation-timing-function: cubic-bezier(.16, .03, .08, 1.55);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll .translate>span:last-child {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 100%;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
display: block;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-wrapper .logo,
|
||||||
|
.roll2>span .logo,
|
||||||
|
.roll3>span .logo {
|
||||||
|
height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roll .translate {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-wrapper,
|
||||||
|
.header .link-logo {
|
||||||
|
pointer-events: initial;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.header button {
|
||||||
|
pointer-events: initial;
|
||||||
|
}
|
||||||
4651
package-lock.json
generated
4651
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -12,6 +12,7 @@
|
|||||||
"@dnd-kit/core": "^6.3.1",
|
"@dnd-kit/core": "^6.3.1",
|
||||||
"@dnd-kit/sortable": "^10.0.0",
|
"@dnd-kit/sortable": "^10.0.0",
|
||||||
"@dnd-kit/utilities": "^3.2.2",
|
"@dnd-kit/utilities": "^3.2.2",
|
||||||
|
"@formatjs/intl-localematcher": "^0.6.1",
|
||||||
"@hookform/resolvers": "^3.9.0",
|
"@hookform/resolvers": "^3.9.0",
|
||||||
"@next/swc-wasm-nodejs": "13.5.1",
|
"@next/swc-wasm-nodejs": "13.5.1",
|
||||||
"@radix-ui/react-accordion": "^1.2.0",
|
"@radix-ui/react-accordion": "^1.2.0",
|
||||||
@ -60,6 +61,7 @@
|
|||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"lucide-react": "^0.446.0",
|
"lucide-react": "^0.446.0",
|
||||||
"motion": "^12.18.1",
|
"motion": "^12.18.1",
|
||||||
|
"negotiator": "^1.0.0",
|
||||||
"next": "13.5.1",
|
"next": "13.5.1",
|
||||||
"next-themes": "^0.3.0",
|
"next-themes": "^0.3.0",
|
||||||
"postcss": "8.4.30",
|
"postcss": "8.4.30",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user