@n3wth/ui 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atoms/AnimatedText/AnimatedText.js +65 -0
- package/dist/atoms/AnimatedText/AnimatedText.js.map +1 -0
- package/dist/atoms/Avatar/Avatar.js +55 -0
- package/dist/atoms/Avatar/Avatar.js.map +1 -0
- package/dist/atoms/Badge/Badge.js +57 -0
- package/dist/atoms/Badge/Badge.js.map +1 -0
- package/dist/atoms/Button/Button.js +92 -0
- package/dist/atoms/Button/Button.js.map +1 -0
- package/dist/atoms/Character/Character.js +155 -0
- package/dist/atoms/Character/Character.js.map +1 -0
- package/dist/atoms/CodeBlock/CodeBlock.js +75 -0
- package/dist/atoms/CodeBlock/CodeBlock.js.map +1 -0
- package/dist/atoms/HamburgerIcon/HamburgerIcon.js +50 -0
- package/dist/atoms/HamburgerIcon/HamburgerIcon.js.map +1 -0
- package/dist/atoms/Icon/Icon.js +199 -0
- package/dist/atoms/Icon/Icon.js.map +1 -0
- package/dist/atoms/Input/Input.js +80 -0
- package/dist/atoms/Input/Input.js.map +1 -0
- package/dist/atoms/Label/Label.js +32 -0
- package/dist/atoms/Label/Label.js.map +1 -0
- package/dist/atoms/NoiseOverlay/NoiseOverlay.js +32 -0
- package/dist/atoms/NoiseOverlay/NoiseOverlay.js.map +1 -0
- package/dist/atoms/Progress/Progress.js +63 -0
- package/dist/atoms/Progress/Progress.js.map +1 -0
- package/dist/atoms/ScrollIndicator/ScrollIndicator.js +51 -0
- package/dist/atoms/ScrollIndicator/ScrollIndicator.js.map +1 -0
- package/dist/atoms/Separator/Separator.js +28 -0
- package/dist/atoms/Separator/Separator.js.map +1 -0
- package/dist/atoms/Shape/Shape.js +110 -0
- package/dist/atoms/Shape/Shape.js.map +1 -0
- package/dist/atoms/Shape/patterns.js +66 -0
- package/dist/atoms/Shape/patterns.js.map +1 -0
- package/dist/atoms/Skeleton/Skeleton.js +77 -0
- package/dist/atoms/Skeleton/Skeleton.js.map +1 -0
- package/dist/atoms/SpeechBubble/SpeechBubble.js +98 -0
- package/dist/atoms/SpeechBubble/SpeechBubble.js.map +1 -0
- package/dist/atoms/Switch/Switch.js +78 -0
- package/dist/atoms/Switch/Switch.js.map +1 -0
- package/dist/atoms/Textarea/Textarea.js +40 -0
- package/dist/atoms/Textarea/Textarea.js.map +1 -0
- package/dist/atoms/Tooltip/Tooltip.js +153 -0
- package/dist/atoms/Tooltip/Tooltip.js.map +1 -0
- package/dist/hooks/useButtonPulse.js +43 -0
- package/dist/hooks/useButtonPulse.js.map +1 -0
- package/dist/hooks/useCountUp.js +52 -0
- package/dist/hooks/useCountUp.js.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +37 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/hooks/useMediaQuery.js +59 -0
- package/dist/hooks/useMediaQuery.js.map +1 -0
- package/dist/hooks/usePageTransition.js +39 -0
- package/dist/hooks/usePageTransition.js.map +1 -0
- package/dist/hooks/useReducedMotion.js +57 -0
- package/dist/hooks/useReducedMotion.js.map +1 -0
- package/dist/hooks/useScrollReveal.js +61 -0
- package/dist/hooks/useScrollReveal.js.map +1 -0
- package/dist/hooks/useStaggerList.js +54 -0
- package/dist/hooks/useStaggerList.js.map +1 -0
- package/dist/hooks/useTextReveal.js +59 -0
- package/dist/hooks/useTextReveal.js.map +1 -0
- package/dist/hooks/useTheme.js +37 -0
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/hooks/useToast.js +84 -0
- package/dist/hooks/useToast.js.map +1 -0
- package/dist/index.js +147 -7925
- package/dist/index.js.map +1 -1
- package/dist/molecules/Accordion/Accordion.js +178 -0
- package/dist/molecules/Accordion/Accordion.js.map +1 -0
- package/dist/molecules/Card/Card.js +104 -0
- package/dist/molecules/Card/Card.js.map +1 -0
- package/dist/molecules/CommandBox/CommandBox.js +65 -0
- package/dist/molecules/CommandBox/CommandBox.js.map +1 -0
- package/dist/molecules/CompositeShape/CompositeShape.js +69 -0
- package/dist/molecules/CompositeShape/CompositeShape.js.map +1 -0
- package/dist/molecules/CompositeShape/presets.js +71 -0
- package/dist/molecules/CompositeShape/presets.js.map +1 -0
- package/dist/molecules/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/molecules/Dropdown/Dropdown.js +530 -0
- package/dist/molecules/Dropdown/Dropdown.js.map +1 -0
- package/dist/molecules/ErrorBoundary/ErrorBoundary.js +128 -0
- package/dist/molecules/ErrorBoundary/ErrorBoundary.js.map +1 -0
- package/dist/molecules/MobileDrawer/MobileDrawer.js +78 -0
- package/dist/molecules/MobileDrawer/MobileDrawer.js.map +1 -0
- package/dist/molecules/Modal/Modal.js +262 -0
- package/dist/molecules/Modal/Modal.js.map +1 -0
- package/dist/molecules/NavLink/NavLink.js +38 -0
- package/dist/molecules/NavLink/NavLink.js.map +1 -0
- package/dist/molecules/Tabs/Tabs.js +188 -0
- package/dist/molecules/Tabs/Tabs.js.map +1 -0
- package/dist/molecules/ThemeToggle/ThemeToggle.js +48 -0
- package/dist/molecules/ThemeToggle/ThemeToggle.js.map +1 -0
- package/dist/molecules/Toast/Toast.js +156 -0
- package/dist/molecules/Toast/Toast.js.map +1 -0
- package/dist/node_modules/clsx/dist/clsx.js +17 -0
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/IconoirContext.js +6 -0
- package/dist/node_modules/iconoir-react/dist/esm/IconoirContext.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowDown.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowDown.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowLeft.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowLeft.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowRight.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowRight.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUp.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUp.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUpRight.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUpRight.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Bell.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Bell.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Calendar.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Calendar.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Check.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Check.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/CheckCircle.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/CheckCircle.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Clock.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Clock.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Code.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Code.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Copy.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Copy.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Download.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Download.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/EditPencil.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/EditPencil.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Eye.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Eye.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/EyeClosed.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/EyeClosed.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Filter.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Filter.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Folder.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Folder.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Github.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Github.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/HalfMoon.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/HalfMoon.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Heart.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Heart.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Home.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Home.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/InfoCircle.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/InfoCircle.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Link.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Link.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/List.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/List.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Lock.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Lock.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/LockSlash.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/LockSlash.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Mail.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Mail.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Menu.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Menu.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Minus.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Minus.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/MoreHoriz.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/MoreHoriz.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/MoreVert.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/MoreVert.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowDown.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowDown.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowLeft.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowLeft.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowRight.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowRight.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowUp.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowUp.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/OpenInWindow.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/OpenInWindow.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Page.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Page.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Plus.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Plus.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/RefreshDouble.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/RefreshDouble.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Search.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Search.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Settings.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Settings.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/SortDown.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/SortDown.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Sparks.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Sparks.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Star.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Star.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/SunLight.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/SunLight.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Terminal.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Terminal.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Trash.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Trash.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Upload.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Upload.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/User.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/User.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ViewGrid.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/ViewGrid.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/WarningTriangle.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/WarningTriangle.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Xmark.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/Xmark.js.map +1 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/XmarkCircle.js +17 -0
- package/dist/node_modules/iconoir-react/dist/esm/regular/XmarkCircle.js.map +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2996 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/organisms/Footer/Footer.js +108 -0
- package/dist/organisms/Footer/Footer.js.map +1 -0
- package/dist/organisms/Hero/Hero.d.ts.map +1 -1
- package/dist/organisms/Hero/Hero.js +101 -0
- package/dist/organisms/Hero/Hero.js.map +1 -0
- package/dist/organisms/Nav/Nav.js +177 -0
- package/dist/organisms/Nav/Nav.js.map +1 -0
- package/dist/organisms/Section/Section.js +57 -0
- package/dist/organisms/Section/Section.js.map +1 -0
- package/dist/theme.css +86 -0
- package/dist/tokens/colors.js +105 -0
- package/dist/tokens/colors.js.map +1 -0
- package/dist/tokens/effects.js +26 -0
- package/dist/tokens/effects.js.map +1 -0
- package/dist/tokens/motion.js +25 -0
- package/dist/tokens/motion.js.map +1 -0
- package/dist/tokens/spacing.js +31 -0
- package/dist/tokens/spacing.js.map +1 -0
- package/dist/tokens/typography.js +63 -0
- package/dist/tokens/typography.js.map +1 -0
- package/dist/utils/cn.js +9 -0
- package/dist/utils/cn.js.map +1 -0
- package/package.json +8 -5
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { jsx as e, jsxs as g } from "react/jsx-runtime";
|
|
2
|
+
import { cn as t } from "../../utils/cn.js";
|
|
3
|
+
import { Badge as h } from "../../atoms/Badge/Badge.js";
|
|
4
|
+
import { Button as y } from "../../atoms/Button/Button.js";
|
|
5
|
+
function j({
|
|
6
|
+
badge: s,
|
|
7
|
+
title: r,
|
|
8
|
+
description: i,
|
|
9
|
+
ctas: m = [],
|
|
10
|
+
align: a = "center",
|
|
11
|
+
size: n = "default",
|
|
12
|
+
gradient: x = !0,
|
|
13
|
+
className: o,
|
|
14
|
+
...d
|
|
15
|
+
}) {
|
|
16
|
+
const c = {
|
|
17
|
+
left: "text-left items-start",
|
|
18
|
+
center: "text-center items-center"
|
|
19
|
+
}, f = {
|
|
20
|
+
default: "text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl",
|
|
21
|
+
large: "text-3xl sm:text-5xl md:text-6xl lg:text-7xl xl:text-8xl"
|
|
22
|
+
};
|
|
23
|
+
return /* @__PURE__ */ e(
|
|
24
|
+
"section",
|
|
25
|
+
{
|
|
26
|
+
className: t(
|
|
27
|
+
"relative",
|
|
28
|
+
"px-4 sm:px-6 py-12 sm:py-20 md:py-24 lg:py-32 xl:py-40",
|
|
29
|
+
o
|
|
30
|
+
),
|
|
31
|
+
...d,
|
|
32
|
+
children: /* @__PURE__ */ g(
|
|
33
|
+
"div",
|
|
34
|
+
{
|
|
35
|
+
className: t(
|
|
36
|
+
"mx-auto max-w-4xl",
|
|
37
|
+
"flex flex-col gap-4 sm:gap-6 md:gap-8",
|
|
38
|
+
c[a]
|
|
39
|
+
),
|
|
40
|
+
children: [
|
|
41
|
+
s && /* @__PURE__ */ e(h, { variant: "default", size: "md", className: "animate-in", children: s }),
|
|
42
|
+
/* @__PURE__ */ e(
|
|
43
|
+
"h1",
|
|
44
|
+
{
|
|
45
|
+
className: t(
|
|
46
|
+
"font-display font-semibold tracking-tight",
|
|
47
|
+
f[n],
|
|
48
|
+
x ? "hero-gradient-text" : "text-[var(--color-white)]",
|
|
49
|
+
"animate-in",
|
|
50
|
+
"leading-tight sm:leading-snug"
|
|
51
|
+
),
|
|
52
|
+
style: { animationDelay: "0.1s", textAlign: a === "center" ? "center" : "left", width: "100%", display: "block" },
|
|
53
|
+
children: r
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
i && /* @__PURE__ */ e(
|
|
57
|
+
"p",
|
|
58
|
+
{
|
|
59
|
+
className: t(
|
|
60
|
+
"text-base sm:text-lg md:text-xl",
|
|
61
|
+
"text-[var(--color-grey-400)]",
|
|
62
|
+
"max-w-2xl leading-relaxed sm:leading-relaxed",
|
|
63
|
+
"animate-in",
|
|
64
|
+
"px-0 sm:px-0"
|
|
65
|
+
),
|
|
66
|
+
style: { animationDelay: "0.2s" },
|
|
67
|
+
children: i
|
|
68
|
+
}
|
|
69
|
+
),
|
|
70
|
+
m.length > 0 && /* @__PURE__ */ e(
|
|
71
|
+
"div",
|
|
72
|
+
{
|
|
73
|
+
className: t(
|
|
74
|
+
"flex flex-col sm:flex-wrap gap-3 sm:gap-4 mt-2 sm:mt-4 w-full sm:w-auto",
|
|
75
|
+
a === "center" ? "sm:justify-center" : "sm:justify-start",
|
|
76
|
+
"animate-in"
|
|
77
|
+
),
|
|
78
|
+
style: { animationDelay: "0.3s" },
|
|
79
|
+
children: m.map((l, p) => /* @__PURE__ */ e(
|
|
80
|
+
y,
|
|
81
|
+
{
|
|
82
|
+
variant: l.variant || (p === 0 ? "primary" : "secondary"),
|
|
83
|
+
size: "lg",
|
|
84
|
+
asChild: !0,
|
|
85
|
+
className: "w-full sm:w-auto",
|
|
86
|
+
children: /* @__PURE__ */ e("a", { href: l.href, children: l.label })
|
|
87
|
+
},
|
|
88
|
+
l.href
|
|
89
|
+
))
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
j as Hero
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=Hero.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Hero.js","sources":["../../../src/organisms/Hero/Hero.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode } from 'react'\nimport { cn } from '../../utils/cn'\nimport { Badge } from '../../atoms/Badge'\nimport { Button } from '../../atoms/Button'\n\nexport interface HeroCTA {\n label: string\n href: string\n variant?: 'primary' | 'secondary' | 'ghost'\n}\n\nexport interface HeroProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n badge?: string\n title: ReactNode\n description?: ReactNode\n ctas?: HeroCTA[]\n align?: 'left' | 'center'\n size?: 'default' | 'large'\n gradient?: boolean\n}\n\nexport function Hero({\n badge,\n title,\n description,\n ctas = [],\n align = 'center',\n size = 'default',\n gradient = true,\n className,\n ...props\n}: HeroProps) {\n const alignments = {\n left: 'text-left items-start',\n center: 'text-center items-center',\n }\n\n const titleSizes = {\n default: 'text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl',\n large: 'text-3xl sm:text-5xl md:text-6xl lg:text-7xl xl:text-8xl',\n }\n\n return (\n <section\n className={cn(\n 'relative',\n 'px-4 sm:px-6 py-12 sm:py-20 md:py-24 lg:py-32 xl:py-40',\n className\n )}\n {...props}\n >\n <div\n className={cn(\n 'mx-auto max-w-4xl',\n 'flex flex-col gap-4 sm:gap-6 md:gap-8',\n alignments[align]\n )}\n >\n {badge && (\n <Badge variant=\"default\" size=\"md\" className=\"animate-in\">\n {badge}\n </Badge>\n )}\n\n <h1\n className={cn(\n 'font-display font-semibold tracking-tight',\n titleSizes[size],\n gradient ? 'hero-gradient-text' : 'text-[var(--color-white)]',\n 'animate-in',\n 'leading-tight sm:leading-snug'\n )}\n style={{ animationDelay: '0.1s', textAlign: align === 'center' ? 'center' : 'left', width: '100%', display: 'block' }}\n >\n {title}\n </h1>\n\n {description && (\n <p\n className={cn(\n 'text-base sm:text-lg md:text-xl',\n 'text-[var(--color-grey-400)]',\n 'max-w-2xl leading-relaxed sm:leading-relaxed',\n 'animate-in',\n 'px-0 sm:px-0'\n )}\n style={{ animationDelay: '0.2s' }}\n >\n {description}\n </p>\n )}\n\n {ctas.length > 0 && (\n <div\n className={cn(\n 'flex flex-col sm:flex-wrap gap-3 sm:gap-4 mt-2 sm:mt-4 w-full sm:w-auto',\n align === 'center' ? 'sm:justify-center' : 'sm:justify-start',\n 'animate-in'\n )}\n style={{ animationDelay: '0.3s' }}\n >\n {ctas.map((cta, index) => (\n <Button\n key={cta.href}\n variant={cta.variant || (index === 0 ? 'primary' : 'secondary')}\n size=\"lg\"\n asChild\n className=\"w-full sm:w-auto\"\n >\n <a href={cta.href}>{cta.label}</a>\n </Button>\n ))}\n </div>\n )}\n </div>\n </section>\n )\n}\n"],"names":["Hero","badge","title","description","ctas","align","size","gradient","className","props","alignments","titleSizes","jsx","cn","jsxs","Badge","cta","index","Button"],"mappings":";;;;AAqBO,SAASA,EAAK;AAAA,EACnB,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAAC,IAAO,CAAA;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,GAAGC;AACL,GAAc;AACZ,QAAMC,IAAa;AAAA,IACjB,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA,GAGJC,IAAa;AAAA,IACjB,SAAS;AAAA,IACT,OAAO;AAAA,EAAA;AAGT,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA,gBAAAK;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWD;AAAA,YACT;AAAA,YACA;AAAA,YACAH,EAAWL,CAAK;AAAA,UAAA;AAAA,UAGjB,UAAA;AAAA,YAAAJ,KACC,gBAAAW,EAACG,KAAM,SAAQ,WAAU,MAAK,MAAK,WAAU,cAC1C,UAAAd,EAAA,CACH;AAAA,YAGF,gBAAAW;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWC;AAAA,kBACT;AAAA,kBACAF,EAAWL,CAAI;AAAA,kBACfC,IAAW,uBAAuB;AAAA,kBAClC;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAEF,OAAO,EAAE,gBAAgB,QAAQ,WAAWF,MAAU,WAAW,WAAW,QAAQ,OAAO,QAAQ,SAAS,QAAA;AAAA,gBAE3G,UAAAH;AAAA,cAAA;AAAA,YAAA;AAAA,YAGFC,KACC,gBAAAS;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWC;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAEF,OAAO,EAAE,gBAAgB,OAAA;AAAA,gBAExB,UAAAV;AAAA,cAAA;AAAA,YAAA;AAAA,YAIJC,EAAK,SAAS,KACb,gBAAAQ;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAWC;AAAA,kBACT;AAAA,kBACAR,MAAU,WAAW,sBAAsB;AAAA,kBAC3C;AAAA,gBAAA;AAAA,gBAEF,OAAO,EAAE,gBAAgB,OAAA;AAAA,gBAExB,UAAAD,EAAK,IAAI,CAACY,GAAKC,MACd,gBAAAL;AAAA,kBAACM;AAAA,kBAAA;AAAA,oBAEC,SAASF,EAAI,YAAYC,MAAU,IAAI,YAAY;AAAA,oBACnD,MAAK;AAAA,oBACL,SAAO;AAAA,oBACP,WAAU;AAAA,oBAEV,4BAAC,KAAA,EAAE,MAAMD,EAAI,MAAO,YAAI,MAAA,CAAM;AAAA,kBAAA;AAAA,kBANzBA,EAAI;AAAA,gBAAA,CAQZ;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { jsxs as n, Fragment as s, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useState as u, useRef as v, useCallback as w, useEffect as H } from "react";
|
|
3
|
+
import { cn as Y } from "../../utils/cn.js";
|
|
4
|
+
import { NavLink as A } from "../../molecules/NavLink/NavLink.js";
|
|
5
|
+
import { ThemeToggle as y } from "../../molecules/ThemeToggle/ThemeToggle.js";
|
|
6
|
+
import { MobileDrawer as B } from "../../molecules/MobileDrawer/MobileDrawer.js";
|
|
7
|
+
function F({
|
|
8
|
+
logo: g,
|
|
9
|
+
logoHref: i = "/",
|
|
10
|
+
items: c = [],
|
|
11
|
+
theme: d = "dark",
|
|
12
|
+
onThemeToggle: t,
|
|
13
|
+
showThemeToggle: h = !0,
|
|
14
|
+
fixed: b = !1,
|
|
15
|
+
hideOnScroll: o = !1,
|
|
16
|
+
className: k,
|
|
17
|
+
...N
|
|
18
|
+
}) {
|
|
19
|
+
const [l, p] = u(!1), [M, C] = u(0), f = v(0), m = v(null), L = w(() => {
|
|
20
|
+
p((r) => !r);
|
|
21
|
+
}, []), a = w(() => {
|
|
22
|
+
p(!1);
|
|
23
|
+
}, []);
|
|
24
|
+
return H(() => {
|
|
25
|
+
if (!o) return;
|
|
26
|
+
const r = () => {
|
|
27
|
+
const x = window.scrollY, j = x - f.current, O = m.current?.offsetHeight || 80;
|
|
28
|
+
C((z) => {
|
|
29
|
+
const E = z - j;
|
|
30
|
+
return Math.max(-O, Math.min(0, E));
|
|
31
|
+
}), f.current = x;
|
|
32
|
+
};
|
|
33
|
+
return window.addEventListener("scroll", r, { passive: !0 }), () => window.removeEventListener("scroll", r);
|
|
34
|
+
}, [o]), /* @__PURE__ */ n(s, { children: [
|
|
35
|
+
/* @__PURE__ */ e(
|
|
36
|
+
"nav",
|
|
37
|
+
{
|
|
38
|
+
ref: m,
|
|
39
|
+
className: Y(
|
|
40
|
+
"glass-nav",
|
|
41
|
+
"py-4 md:py-6",
|
|
42
|
+
b && "fixed left-0 right-0 z-50",
|
|
43
|
+
k
|
|
44
|
+
),
|
|
45
|
+
style: o ? { top: M } : void 0,
|
|
46
|
+
...N,
|
|
47
|
+
children: /* @__PURE__ */ n("div", { className: "mx-auto max-w-6xl px-6 md:px-12 flex items-center justify-between", children: [
|
|
48
|
+
/* @__PURE__ */ e(
|
|
49
|
+
"a",
|
|
50
|
+
{
|
|
51
|
+
href: i,
|
|
52
|
+
className: "text-base md:text-lg font-display font-semibold hover:opacity-70 transition-opacity",
|
|
53
|
+
style: { color: "var(--color-accent)" },
|
|
54
|
+
children: g
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ n("div", { className: "hidden md:flex md:items-center md:gap-6", children: [
|
|
58
|
+
c.map((r) => /* @__PURE__ */ e(
|
|
59
|
+
A,
|
|
60
|
+
{
|
|
61
|
+
href: r.href,
|
|
62
|
+
isActive: r.isActive,
|
|
63
|
+
variant: "underline",
|
|
64
|
+
...r.external && { target: "_blank", rel: "noopener noreferrer" },
|
|
65
|
+
children: r.label
|
|
66
|
+
},
|
|
67
|
+
r.href
|
|
68
|
+
)),
|
|
69
|
+
h && t && /* @__PURE__ */ e(y, { theme: d, onToggle: t, size: "sm" })
|
|
70
|
+
] }),
|
|
71
|
+
/* @__PURE__ */ e(
|
|
72
|
+
"button",
|
|
73
|
+
{
|
|
74
|
+
onClick: L,
|
|
75
|
+
className: "md:hidden p-2 min-w-[44px] min-h-[44px] flex items-center justify-center rounded-lg transition-opacity duration-200 hover:opacity-70",
|
|
76
|
+
style: { color: "var(--color-grey-200)" },
|
|
77
|
+
"aria-label": l ? "Close menu" : "Open menu",
|
|
78
|
+
"aria-expanded": l,
|
|
79
|
+
children: /* @__PURE__ */ e(
|
|
80
|
+
"svg",
|
|
81
|
+
{
|
|
82
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
83
|
+
width: "24",
|
|
84
|
+
height: "24",
|
|
85
|
+
viewBox: "0 0 24 24",
|
|
86
|
+
fill: "none",
|
|
87
|
+
stroke: "currentColor",
|
|
88
|
+
strokeWidth: "2",
|
|
89
|
+
strokeLinecap: "round",
|
|
90
|
+
strokeLinejoin: "round",
|
|
91
|
+
className: "transition-transform duration-300",
|
|
92
|
+
"aria-hidden": "true",
|
|
93
|
+
children: l ? /* @__PURE__ */ n(s, { children: [
|
|
94
|
+
/* @__PURE__ */ e("path", { d: "M18 6L6 18" }),
|
|
95
|
+
/* @__PURE__ */ e("path", { d: "M6 6l12 12" })
|
|
96
|
+
] }) : /* @__PURE__ */ n(s, { children: [
|
|
97
|
+
/* @__PURE__ */ e("path", { d: "M4 6h16" }),
|
|
98
|
+
/* @__PURE__ */ e("path", { d: "M4 12h16" }),
|
|
99
|
+
/* @__PURE__ */ e("path", { d: "M4 18h16" })
|
|
100
|
+
] })
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
)
|
|
105
|
+
] })
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
/* @__PURE__ */ e(
|
|
109
|
+
B,
|
|
110
|
+
{
|
|
111
|
+
isOpen: l,
|
|
112
|
+
onClose: a,
|
|
113
|
+
position: "right",
|
|
114
|
+
width: "280px",
|
|
115
|
+
zIndex: 55,
|
|
116
|
+
className: "md:hidden",
|
|
117
|
+
children: /* @__PURE__ */ n("div", { className: "flex flex-col h-full pt-20 px-6 pb-8", children: [
|
|
118
|
+
/* @__PURE__ */ n("div", { className: "flex flex-col gap-2", children: [
|
|
119
|
+
/* @__PURE__ */ e(
|
|
120
|
+
"a",
|
|
121
|
+
{
|
|
122
|
+
href: i,
|
|
123
|
+
onClick: a,
|
|
124
|
+
className: "mobile-nav-link text-lg py-4 px-4 rounded-xl transition-all duration-200 min-h-[52px] flex items-center",
|
|
125
|
+
style: { color: "var(--color-white)" },
|
|
126
|
+
children: "Home"
|
|
127
|
+
}
|
|
128
|
+
),
|
|
129
|
+
c.map((r) => /* @__PURE__ */ n(
|
|
130
|
+
"a",
|
|
131
|
+
{
|
|
132
|
+
href: r.href,
|
|
133
|
+
onClick: a,
|
|
134
|
+
className: "mobile-nav-link text-lg py-4 px-4 rounded-xl transition-all duration-200 min-h-[52px] flex items-center",
|
|
135
|
+
style: { color: "var(--color-white)" },
|
|
136
|
+
...r.external && { target: "_blank", rel: "noopener noreferrer" },
|
|
137
|
+
children: [
|
|
138
|
+
r.label,
|
|
139
|
+
r.external && /* @__PURE__ */ n(
|
|
140
|
+
"svg",
|
|
141
|
+
{
|
|
142
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
143
|
+
width: "16",
|
|
144
|
+
height: "16",
|
|
145
|
+
viewBox: "0 0 24 24",
|
|
146
|
+
fill: "none",
|
|
147
|
+
stroke: "currentColor",
|
|
148
|
+
strokeWidth: "2",
|
|
149
|
+
strokeLinecap: "round",
|
|
150
|
+
strokeLinejoin: "round",
|
|
151
|
+
className: "ml-2 opacity-50",
|
|
152
|
+
"aria-hidden": "true",
|
|
153
|
+
children: [
|
|
154
|
+
/* @__PURE__ */ e("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }),
|
|
155
|
+
/* @__PURE__ */ e("polyline", { points: "15 3 21 3 21 9" }),
|
|
156
|
+
/* @__PURE__ */ e("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
r.href
|
|
163
|
+
))
|
|
164
|
+
] }),
|
|
165
|
+
h && t && /* @__PURE__ */ e("div", { className: "mt-auto pt-6 border-t", style: { borderColor: "var(--glass-border)" }, children: /* @__PURE__ */ n("div", { className: "flex items-center justify-between px-4", children: [
|
|
166
|
+
/* @__PURE__ */ e("span", { className: "text-sm", style: { color: "var(--color-grey-400)" }, children: "Theme" }),
|
|
167
|
+
/* @__PURE__ */ e(y, { theme: d, onToggle: t, size: "sm" })
|
|
168
|
+
] }) })
|
|
169
|
+
] })
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
] });
|
|
173
|
+
}
|
|
174
|
+
export {
|
|
175
|
+
F as Nav
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=Nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Nav.js","sources":["../../../src/organisms/Nav/Nav.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode, useState, useCallback, useEffect, useRef } from 'react'\nimport { cn } from '../../utils/cn'\nimport { NavLink } from '../../molecules/NavLink'\nimport { ThemeToggle } from '../../molecules/ThemeToggle'\nimport { MobileDrawer } from '../../molecules/MobileDrawer'\n\nexport interface NavItem {\n label: string\n href: string\n isActive?: boolean\n external?: boolean\n}\n\nexport interface NavProps extends HTMLAttributes<HTMLElement> {\n logo?: ReactNode\n logoHref?: string\n items?: NavItem[]\n theme?: 'dark' | 'light'\n onThemeToggle?: () => void\n showThemeToggle?: boolean\n fixed?: boolean\n hideOnScroll?: boolean\n}\n\nexport function Nav({\n logo,\n logoHref = '/',\n items = [],\n theme = 'dark',\n onThemeToggle,\n showThemeToggle = true,\n fixed = false,\n hideOnScroll = false,\n className,\n ...props\n}: NavProps) {\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [navOffset, setNavOffset] = useState(0)\n const lastScrollY = useRef(0)\n const navRef = useRef<HTMLElement>(null)\n\n const toggleMenu = useCallback(() => {\n setIsMenuOpen((prev) => !prev)\n }, [])\n\n const closeMenu = useCallback(() => {\n setIsMenuOpen(false)\n }, [])\n\n useEffect(() => {\n if (!hideOnScroll) return\n\n const handleScroll = () => {\n const currentScrollY = window.scrollY\n const delta = currentScrollY - lastScrollY.current\n const navHeight = navRef.current?.offsetHeight || 80\n\n // Calculate new offset (clamped between -navHeight and 0)\n setNavOffset((prev) => {\n const newOffset = prev - delta\n return Math.max(-navHeight, Math.min(0, newOffset))\n })\n\n lastScrollY.current = currentScrollY\n }\n\n window.addEventListener('scroll', handleScroll, { passive: true })\n return () => window.removeEventListener('scroll', handleScroll)\n }, [hideOnScroll])\n\n return (\n <>\n <nav\n ref={navRef}\n className={cn(\n 'glass-nav',\n 'py-4 md:py-6',\n fixed && 'fixed left-0 right-0 z-50',\n className\n )}\n style={hideOnScroll ? { top: navOffset } : undefined}\n {...props}\n >\n <div className=\"mx-auto max-w-6xl px-6 md:px-12 flex items-center justify-between\">\n {/* Logo */}\n <a\n href={logoHref}\n className=\"text-base md:text-lg font-display font-semibold hover:opacity-70 transition-opacity\"\n style={{ color: 'var(--color-accent)' }}\n >\n {logo}\n </a>\n\n {/* Desktop Navigation */}\n <div className=\"hidden md:flex md:items-center md:gap-6\">\n {items.map((item) => (\n <NavLink\n key={item.href}\n href={item.href}\n isActive={item.isActive}\n variant=\"underline\"\n {...(item.external && { target: '_blank', rel: 'noopener noreferrer' })}\n >\n {item.label}\n </NavLink>\n ))}\n {showThemeToggle && onThemeToggle && (\n <ThemeToggle theme={theme} onToggle={onThemeToggle} size=\"sm\" />\n )}\n </div>\n\n {/* Mobile Menu Button */}\n <button\n onClick={toggleMenu}\n className=\"md:hidden p-2 min-w-[44px] min-h-[44px] flex items-center justify-center rounded-lg transition-opacity duration-200 hover:opacity-70\"\n style={{ color: 'var(--color-grey-200)' }}\n aria-label={isMenuOpen ? 'Close menu' : 'Open menu'}\n aria-expanded={isMenuOpen}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"transition-transform duration-300\"\n aria-hidden=\"true\"\n >\n {isMenuOpen ? (\n <>\n <path d=\"M18 6L6 18\" />\n <path d=\"M6 6l12 12\" />\n </>\n ) : (\n <>\n <path d=\"M4 6h16\" />\n <path d=\"M4 12h16\" />\n <path d=\"M4 18h16\" />\n </>\n )}\n </svg>\n </button>\n </div>\n </nav>\n\n {/* Mobile Drawer */}\n <MobileDrawer\n isOpen={isMenuOpen}\n onClose={closeMenu}\n position=\"right\"\n width=\"280px\"\n zIndex={55}\n className=\"md:hidden\"\n >\n <div className=\"flex flex-col h-full pt-20 px-6 pb-8\">\n <div className=\"flex flex-col gap-2\">\n <a\n href={logoHref}\n onClick={closeMenu}\n className=\"mobile-nav-link text-lg py-4 px-4 rounded-xl transition-all duration-200 min-h-[52px] flex items-center\"\n style={{ color: 'var(--color-white)' }}\n >\n Home\n </a>\n {items.map((item) => (\n <a\n key={item.href}\n href={item.href}\n onClick={closeMenu}\n className=\"mobile-nav-link text-lg py-4 px-4 rounded-xl transition-all duration-200 min-h-[52px] flex items-center\"\n style={{ color: 'var(--color-white)' }}\n {...(item.external && { target: '_blank', rel: 'noopener noreferrer' })}\n >\n {item.label}\n {item.external && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"ml-2 opacity-50\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n )}\n </a>\n ))}\n </div>\n\n {showThemeToggle && onThemeToggle && (\n <div className=\"mt-auto pt-6 border-t\" style={{ borderColor: 'var(--glass-border)' }}>\n <div className=\"flex items-center justify-between px-4\">\n <span className=\"text-sm\" style={{ color: 'var(--color-grey-400)' }}>\n Theme\n </span>\n <ThemeToggle theme={theme} onToggle={onThemeToggle} size=\"sm\" />\n </div>\n </div>\n )}\n </div>\n </MobileDrawer>\n </>\n )\n}\n"],"names":["Nav","logo","logoHref","items","theme","onThemeToggle","showThemeToggle","fixed","hideOnScroll","className","props","isMenuOpen","setIsMenuOpen","useState","navOffset","setNavOffset","lastScrollY","useRef","navRef","toggleMenu","useCallback","prev","closeMenu","useEffect","handleScroll","currentScrollY","delta","navHeight","newOffset","jsxs","Fragment","jsx","cn","item","NavLink","ThemeToggle","MobileDrawer"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as m, jsxs as d } from "react/jsx-runtime";
|
|
2
|
+
import { cn as x } from "../../utils/cn.js";
|
|
3
|
+
function f({
|
|
4
|
+
children: t,
|
|
5
|
+
size: e = "md",
|
|
6
|
+
spacing: l = "md",
|
|
7
|
+
container: n = !0,
|
|
8
|
+
className: a,
|
|
9
|
+
...s
|
|
10
|
+
}) {
|
|
11
|
+
const o = {
|
|
12
|
+
sm: "max-w-3xl",
|
|
13
|
+
md: "max-w-5xl",
|
|
14
|
+
lg: "max-w-7xl",
|
|
15
|
+
full: "max-w-none"
|
|
16
|
+
}, c = {
|
|
17
|
+
none: "py-0",
|
|
18
|
+
sm: "py-12 md:py-16",
|
|
19
|
+
md: "py-16 md:py-24",
|
|
20
|
+
lg: "py-24 md:py-32"
|
|
21
|
+
}, r = !!s.id;
|
|
22
|
+
return /* @__PURE__ */ m(
|
|
23
|
+
"section",
|
|
24
|
+
{
|
|
25
|
+
className: x(c[l], r && "scroll-mt-20", a),
|
|
26
|
+
...s,
|
|
27
|
+
children: n ? /* @__PURE__ */ m("div", { className: x("mx-auto px-6 md:px-10", o[e]), children: t }) : t
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
function g({
|
|
32
|
+
title: t,
|
|
33
|
+
description: e,
|
|
34
|
+
align: l = "left",
|
|
35
|
+
className: n,
|
|
36
|
+
...a
|
|
37
|
+
}) {
|
|
38
|
+
return /* @__PURE__ */ d(
|
|
39
|
+
"div",
|
|
40
|
+
{
|
|
41
|
+
className: x("max-w-2xl mb-12", {
|
|
42
|
+
left: "text-left",
|
|
43
|
+
center: "text-center mx-auto"
|
|
44
|
+
}[l], n),
|
|
45
|
+
...a,
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ m("h2", { className: "font-display text-2xl md:text-3xl font-semibold text-[var(--color-white)] tracking-tight", children: t }),
|
|
48
|
+
e && /* @__PURE__ */ m("p", { className: "mt-4 text-base md:text-lg text-[var(--color-grey-400)] leading-relaxed", children: e })
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
f as Section,
|
|
55
|
+
g as SectionHeader
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=Section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.js","sources":["../../../src/organisms/Section/Section.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode } from 'react'\nimport { cn } from '../../utils/cn'\n\nexport interface SectionProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode\n size?: 'sm' | 'md' | 'lg' | 'full'\n spacing?: 'none' | 'sm' | 'md' | 'lg'\n container?: boolean\n}\n\nexport function Section({\n children,\n size = 'md',\n spacing = 'md',\n container = true,\n className,\n ...props\n}: SectionProps) {\n const sizes = {\n sm: 'max-w-3xl',\n md: 'max-w-5xl',\n lg: 'max-w-7xl',\n full: 'max-w-none',\n }\n\n const spacings = {\n none: 'py-0',\n sm: 'py-12 md:py-16',\n md: 'py-16 md:py-24',\n lg: 'py-24 md:py-32',\n }\n\n // Add scroll-margin-top when section has an id for anchor links\n const hasId = Boolean(props.id)\n\n return (\n <section\n className={cn(spacings[spacing], hasId && 'scroll-mt-20', className)}\n {...props}\n >\n {container ? (\n <div className={cn('mx-auto px-6 md:px-10', sizes[size])}>\n {children}\n </div>\n ) : (\n children\n )}\n </section>\n )\n}\n\nexport interface SectionHeaderProps extends HTMLAttributes<HTMLDivElement> {\n title: string\n description?: string\n align?: 'left' | 'center'\n}\n\nexport function SectionHeader({\n title,\n description,\n align = 'left',\n className,\n ...props\n}: SectionHeaderProps) {\n const alignments = {\n left: 'text-left',\n center: 'text-center mx-auto',\n }\n\n return (\n <div\n className={cn('max-w-2xl mb-12', alignments[align], className)}\n {...props}\n >\n <h2 className=\"font-display text-2xl md:text-3xl font-semibold text-[var(--color-white)] tracking-tight\">\n {title}\n </h2>\n {description && (\n <p className=\"mt-4 text-base md:text-lg text-[var(--color-grey-400)] leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n )\n}\n"],"names":["Section","children","size","spacing","container","className","props","sizes","spacings","hasId","jsx","cn","SectionHeader","title","description","align","jsxs"],"mappings":";;AAUO,SAASA,EAAQ;AAAA,EACtB,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,GAAGC;AACL,GAAiB;AACf,QAAMC,IAAQ;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA,GAGFC,IAAW;AAAA,IACf,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAIAC,IAAQ,EAAQH,EAAM;AAE5B,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAGH,EAASL,CAAO,GAAGM,KAAS,gBAAgBJ,CAAS;AAAA,MAClE,GAAGC;AAAA,MAEH,UAAAF,IACC,gBAAAM,EAAC,OAAA,EAAI,WAAWC,EAAG,yBAAyBJ,EAAML,CAAI,CAAC,GACpD,UAAAD,EAAA,CACH,IAEAA;AAAA,IAAA;AAAA,EAAA;AAIR;AAQO,SAASW,EAAc;AAAA,EAC5B,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAV;AAAA,EACA,GAAGC;AACL,GAAuB;AAMrB,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWL,EAAG,mBAPC;AAAA,QACjB,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA,EAKsCI,CAAK,GAAGV,CAAS;AAAA,MAC5D,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC,MAAA,EAAG,WAAU,4FACX,UAAAG,GACH;AAAA,QACCC,KACC,gBAAAJ,EAAC,KAAA,EAAE,WAAU,0EACV,UAAAI,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
package/dist/theme.css
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
@n3wth/ui — canonical design tokens (Tailwind v4 @theme only)
|
|
3
|
+
|
|
4
|
+
Base-style-free token export. Import this in any Tailwind v4 app to
|
|
5
|
+
generate utilities (bg-bg, text-ink, border-rail...) AND get the
|
|
6
|
+
var(--color-*) custom properties, WITHOUT pulling in @n3wth/ui's
|
|
7
|
+
fonts or base reset:
|
|
8
|
+
|
|
9
|
+
@import 'tailwindcss';
|
|
10
|
+
@import '@n3wth/ui/theme';
|
|
11
|
+
|
|
12
|
+
Single source of truth for n3wth.com, agents.n3wth.com,
|
|
13
|
+
garden.n3wth.com. Fonts are intentionally NOT set here — each app
|
|
14
|
+
declares its own (Geist via next/font, local @font-face, etc.).
|
|
15
|
+
Keep in sync with the @theme block in styles.css.
|
|
16
|
+
============================================================ */
|
|
17
|
+
|
|
18
|
+
@theme {
|
|
19
|
+
/* n3wth canonical palette — values match production */
|
|
20
|
+
--color-bg: #08090b;
|
|
21
|
+
--color-bg-soft: #0d0e10;
|
|
22
|
+
--color-bg-raise: #131316;
|
|
23
|
+
--color-ink: #f2f3f5;
|
|
24
|
+
--color-ink-dim: #9aa0a8;
|
|
25
|
+
--color-ink-faint: #62666d;
|
|
26
|
+
--color-ink-label: #787c83;
|
|
27
|
+
--color-ink-ghost: #2c2f34;
|
|
28
|
+
--color-rail: rgba(255, 255, 255, 0.09);
|
|
29
|
+
--color-rail-strong: rgba(255, 255, 255, 0.17);
|
|
30
|
+
--color-accent-rail: rgba(255, 255, 255, 0.32);
|
|
31
|
+
--color-accent: #ffffff;
|
|
32
|
+
--color-accent-dim: #d4d6da;
|
|
33
|
+
--color-accent-ink: #08090b;
|
|
34
|
+
|
|
35
|
+
/* Legacy Apple-style scale (kept for existing @n3wth/ui components) */
|
|
36
|
+
--color-bg-secondary: #0a0a0a;
|
|
37
|
+
--color-white: #ffffff;
|
|
38
|
+
--color-grey-100: #f5f5f7;
|
|
39
|
+
--color-grey-200: #e8e8ed;
|
|
40
|
+
--color-grey-300: #c7c7cc;
|
|
41
|
+
--color-grey-400: #86868b;
|
|
42
|
+
--color-grey-600: #6e6e73;
|
|
43
|
+
--color-grey-800: #1d1d1f;
|
|
44
|
+
--color-accent-soft: rgba(255, 255, 255, 0.15);
|
|
45
|
+
|
|
46
|
+
/* Category colors */
|
|
47
|
+
--color-sage: #30d158;
|
|
48
|
+
--color-coral: #ff6961;
|
|
49
|
+
--color-mint: #64d2ff;
|
|
50
|
+
--color-gold: #ffd60a;
|
|
51
|
+
|
|
52
|
+
/* Glass effect */
|
|
53
|
+
--glass-bg: rgba(255, 255, 255, 0.05);
|
|
54
|
+
--glass-border: rgba(255, 255, 255, 0.1);
|
|
55
|
+
--glass-highlight: rgba(255, 255, 255, 0.15);
|
|
56
|
+
|
|
57
|
+
/* Semantic colors */
|
|
58
|
+
--color-success: #30d158;
|
|
59
|
+
--color-success-bg: rgba(48, 209, 88, 0.1);
|
|
60
|
+
--color-warning: #ffd60a;
|
|
61
|
+
--color-warning-bg: rgba(255, 214, 10, 0.1);
|
|
62
|
+
--color-error: #ff6961;
|
|
63
|
+
--color-error-bg: rgba(255, 105, 97, 0.1);
|
|
64
|
+
--color-info: #64d2ff;
|
|
65
|
+
--color-info-bg: rgba(100, 210, 255, 0.1);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Bare-name runtime aliases (--bg, --ink, --accent...) so apps that
|
|
69
|
+
reference these via var() inherit canonical values. */
|
|
70
|
+
:root {
|
|
71
|
+
--bg: var(--color-bg);
|
|
72
|
+
--bg-soft: var(--color-bg-soft);
|
|
73
|
+
--bg-raise: var(--color-bg-raise);
|
|
74
|
+
--ink: var(--color-ink);
|
|
75
|
+
--ink-dim: var(--color-ink-dim);
|
|
76
|
+
--ink-faint: var(--color-ink-faint);
|
|
77
|
+
--ink-label: var(--color-ink-label);
|
|
78
|
+
--ink-ghost: var(--color-ink-ghost);
|
|
79
|
+
--rail: var(--color-rail);
|
|
80
|
+
--rail-strong: var(--color-rail-strong);
|
|
81
|
+
--accent-rail: var(--color-accent-rail);
|
|
82
|
+
--accent: var(--color-accent);
|
|
83
|
+
--accent-dim: var(--color-accent-dim);
|
|
84
|
+
--accent-ink: var(--color-accent-ink);
|
|
85
|
+
--ease: cubic-bezier(0.16, 1, 0.3, 1);
|
|
86
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const a = {
|
|
2
|
+
// Dark mode (default)
|
|
3
|
+
dark: {
|
|
4
|
+
bg: "#000000",
|
|
5
|
+
bgSecondary: "#0a0a0a",
|
|
6
|
+
white: "#ffffff",
|
|
7
|
+
grey: {
|
|
8
|
+
100: "#f5f5f7",
|
|
9
|
+
200: "#e8e8ed",
|
|
10
|
+
300: "#c7c7cc",
|
|
11
|
+
400: "#86868b",
|
|
12
|
+
600: "#6e6e73",
|
|
13
|
+
800: "#1d1d1f"
|
|
14
|
+
},
|
|
15
|
+
accent: "#ffffff",
|
|
16
|
+
accentSoft: "rgba(255, 255, 255, 0.15)",
|
|
17
|
+
glass: {
|
|
18
|
+
bg: "rgba(255, 255, 255, 0.05)",
|
|
19
|
+
border: "rgba(255, 255, 255, 0.1)",
|
|
20
|
+
highlight: "rgba(255, 255, 255, 0.15)"
|
|
21
|
+
},
|
|
22
|
+
// Category colors (flat, no glow)
|
|
23
|
+
category: {
|
|
24
|
+
sage: "#30d158",
|
|
25
|
+
coral: "#ff6961",
|
|
26
|
+
mint: "#64d2ff",
|
|
27
|
+
gold: "#ffd60a"
|
|
28
|
+
},
|
|
29
|
+
// Semantic colors
|
|
30
|
+
semantic: {
|
|
31
|
+
success: "#30d158",
|
|
32
|
+
successBg: "rgba(48, 209, 88, 0.1)",
|
|
33
|
+
warning: "#ffd60a",
|
|
34
|
+
warningBg: "rgba(255, 214, 10, 0.1)",
|
|
35
|
+
error: "#ff6961",
|
|
36
|
+
errorBg: "rgba(255, 105, 97, 0.1)",
|
|
37
|
+
info: "#64d2ff",
|
|
38
|
+
infoBg: "rgba(100, 210, 255, 0.1)"
|
|
39
|
+
},
|
|
40
|
+
// Playful illustration colors
|
|
41
|
+
playful: {
|
|
42
|
+
pink: "#FF6B9D",
|
|
43
|
+
green: "#2ECC71",
|
|
44
|
+
maroon: "#922B3E",
|
|
45
|
+
olive: "#8B7355",
|
|
46
|
+
peach: "#FFAB91",
|
|
47
|
+
lavender: "#A78BFA",
|
|
48
|
+
teal: "#20B2AA",
|
|
49
|
+
mustard: "#F39C12"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
// Light mode
|
|
53
|
+
light: {
|
|
54
|
+
bg: "#ffffff",
|
|
55
|
+
bgSecondary: "#f5f5f7",
|
|
56
|
+
white: "#1d1d1f",
|
|
57
|
+
grey: {
|
|
58
|
+
100: "#1d1d1f",
|
|
59
|
+
200: "#3a3a3c",
|
|
60
|
+
300: "#48484a",
|
|
61
|
+
400: "#636366",
|
|
62
|
+
600: "#8e8e93",
|
|
63
|
+
800: "#e5e5ea"
|
|
64
|
+
},
|
|
65
|
+
accent: "#1d1d1f",
|
|
66
|
+
accentSoft: "rgba(0, 0, 0, 0.1)",
|
|
67
|
+
glass: {
|
|
68
|
+
bg: "rgba(0, 0, 0, 0.03)",
|
|
69
|
+
border: "rgba(0, 0, 0, 0.08)",
|
|
70
|
+
highlight: "rgba(0, 0, 0, 0.12)"
|
|
71
|
+
},
|
|
72
|
+
category: {
|
|
73
|
+
sage: "#248a3d",
|
|
74
|
+
coral: "#d70015",
|
|
75
|
+
mint: "#0071e3",
|
|
76
|
+
gold: "#b25000"
|
|
77
|
+
},
|
|
78
|
+
// Semantic colors
|
|
79
|
+
semantic: {
|
|
80
|
+
success: "#248a3d",
|
|
81
|
+
successBg: "rgba(36, 138, 61, 0.08)",
|
|
82
|
+
warning: "#b25000",
|
|
83
|
+
warningBg: "rgba(178, 80, 0, 0.08)",
|
|
84
|
+
error: "#d70015",
|
|
85
|
+
errorBg: "rgba(215, 0, 21, 0.08)",
|
|
86
|
+
info: "#0071e3",
|
|
87
|
+
infoBg: "rgba(0, 113, 227, 0.08)"
|
|
88
|
+
},
|
|
89
|
+
// Playful illustration colors (slightly adjusted for light mode)
|
|
90
|
+
playful: {
|
|
91
|
+
pink: "#E91E63",
|
|
92
|
+
green: "#27AE60",
|
|
93
|
+
maroon: "#7B1E2E",
|
|
94
|
+
olive: "#6B5344",
|
|
95
|
+
peach: "#FF8A65",
|
|
96
|
+
lavender: "#9575CD",
|
|
97
|
+
teal: "#009688",
|
|
98
|
+
mustard: "#E67E22"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
export {
|
|
103
|
+
a as colors
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sources":["../../src/tokens/colors.ts"],"sourcesContent":["export const colors = {\n // Dark mode (default)\n dark: {\n bg: '#000000',\n bgSecondary: '#0a0a0a',\n white: '#ffffff',\n grey: {\n 100: '#f5f5f7',\n 200: '#e8e8ed',\n 300: '#c7c7cc',\n 400: '#86868b',\n 600: '#6e6e73',\n 800: '#1d1d1f',\n },\n accent: '#ffffff',\n accentSoft: 'rgba(255, 255, 255, 0.15)',\n glass: {\n bg: 'rgba(255, 255, 255, 0.05)',\n border: 'rgba(255, 255, 255, 0.1)',\n highlight: 'rgba(255, 255, 255, 0.15)',\n },\n // Category colors (flat, no glow)\n category: {\n sage: '#30d158',\n coral: '#ff6961',\n mint: '#64d2ff',\n gold: '#ffd60a',\n },\n // Semantic colors\n semantic: {\n success: '#30d158',\n successBg: 'rgba(48, 209, 88, 0.1)',\n warning: '#ffd60a',\n warningBg: 'rgba(255, 214, 10, 0.1)',\n error: '#ff6961',\n errorBg: 'rgba(255, 105, 97, 0.1)',\n info: '#64d2ff',\n infoBg: 'rgba(100, 210, 255, 0.1)',\n },\n // Playful illustration colors\n playful: {\n pink: '#FF6B9D',\n green: '#2ECC71',\n maroon: '#922B3E',\n olive: '#8B7355',\n peach: '#FFAB91',\n lavender: '#A78BFA',\n teal: '#20B2AA',\n mustard: '#F39C12',\n },\n },\n // Light mode\n light: {\n bg: '#ffffff',\n bgSecondary: '#f5f5f7',\n white: '#1d1d1f',\n grey: {\n 100: '#1d1d1f',\n 200: '#3a3a3c',\n 300: '#48484a',\n 400: '#636366',\n 600: '#8e8e93',\n 800: '#e5e5ea',\n },\n accent: '#1d1d1f',\n accentSoft: 'rgba(0, 0, 0, 0.1)',\n glass: {\n bg: 'rgba(0, 0, 0, 0.03)',\n border: 'rgba(0, 0, 0, 0.08)',\n highlight: 'rgba(0, 0, 0, 0.12)',\n },\n category: {\n sage: '#248a3d',\n coral: '#d70015',\n mint: '#0071e3',\n gold: '#b25000',\n },\n // Semantic colors\n semantic: {\n success: '#248a3d',\n successBg: 'rgba(36, 138, 61, 0.08)',\n warning: '#b25000',\n warningBg: 'rgba(178, 80, 0, 0.08)',\n error: '#d70015',\n errorBg: 'rgba(215, 0, 21, 0.08)',\n info: '#0071e3',\n infoBg: 'rgba(0, 113, 227, 0.08)',\n },\n // Playful illustration colors (slightly adjusted for light mode)\n playful: {\n pink: '#E91E63',\n green: '#27AE60',\n maroon: '#7B1E2E',\n olive: '#6B5344',\n peach: '#FF8A65',\n lavender: '#9575CD',\n teal: '#009688',\n mustard: '#E67E22',\n },\n },\n} as const\n\nexport type ColorMode = keyof typeof colors\n"],"names":["colors"],"mappings":"AAAO,MAAMA,IAAS;AAAA;AAAA,EAEpB,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,IAEP,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW;AAAA,IAAA;AAAA;AAAA,IAGb,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,IAAA;AAAA;AAAA,IAGR,UAAU;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA;AAAA,IAGV,SAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,aAAa;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,IAEP,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,WAAW;AAAA,IAAA;AAAA,IAEb,UAAU;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,IAAA;AAAA;AAAA,IAGR,UAAU;AAAA,MACR,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA;AAAA,IAGV,SAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const e = {
|
|
2
|
+
// Transitions
|
|
3
|
+
transition: {
|
|
4
|
+
fast: "0.15s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
5
|
+
base: "0.2s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
6
|
+
slow: "0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
7
|
+
spring: "0.35s cubic-bezier(0.4, 0, 0.2, 1)"
|
|
8
|
+
},
|
|
9
|
+
// Backdrop blur for glass effect
|
|
10
|
+
backdropBlur: {
|
|
11
|
+
sm: "8px",
|
|
12
|
+
md: "12px",
|
|
13
|
+
lg: "20px",
|
|
14
|
+
xl: "40px"
|
|
15
|
+
},
|
|
16
|
+
// Transform scales for hover states (NO shadows!)
|
|
17
|
+
scale: {
|
|
18
|
+
press: "0.96",
|
|
19
|
+
hover: "1.02",
|
|
20
|
+
active: "1.05"
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export {
|
|
24
|
+
e as effects
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effects.js","sources":["../../src/tokens/effects.ts"],"sourcesContent":["export const effects = {\n // Transitions\n transition: {\n fast: '0.15s cubic-bezier(0.4, 0, 0.2, 1)',\n base: '0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n slow: '0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n spring: '0.35s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n // Backdrop blur for glass effect\n backdropBlur: {\n sm: '8px',\n md: '12px',\n lg: '20px',\n xl: '40px',\n },\n // Transform scales for hover states (NO shadows!)\n scale: {\n press: '0.96',\n hover: '1.02',\n active: '1.05',\n },\n} as const\n\n// NO box-shadow, drop-shadow, or glow effects!\n"],"names":["effects"],"mappings":"AAAO,MAAMA,IAAU;AAAA;AAAA,EAErB,YAAY;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA;AAAA;AAAA,EAGV,cAAc;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA;AAAA;AAAA,EAGN,OAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAEZ;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const e = {
|
|
2
|
+
duration: {
|
|
3
|
+
instant: "0ms",
|
|
4
|
+
fast: "150ms",
|
|
5
|
+
normal: "200ms",
|
|
6
|
+
slow: "300ms",
|
|
7
|
+
slower: "500ms"
|
|
8
|
+
},
|
|
9
|
+
easing: {
|
|
10
|
+
default: "cubic-bezier(0.25, 0.1, 0.25, 1)",
|
|
11
|
+
in: "cubic-bezier(0.4, 0, 1, 1)",
|
|
12
|
+
out: "cubic-bezier(0, 0, 0.2, 1)",
|
|
13
|
+
inOut: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
14
|
+
spring: "cubic-bezier(0.34, 1.56, 0.64, 1)"
|
|
15
|
+
},
|
|
16
|
+
scale: {
|
|
17
|
+
press: "0.96",
|
|
18
|
+
hover: "1.02",
|
|
19
|
+
active: "1.05"
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
e as motion
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion.js","sources":["../../src/tokens/motion.ts"],"sourcesContent":["export const motion = {\n duration: {\n instant: '0ms',\n fast: '150ms',\n normal: '200ms',\n slow: '300ms',\n slower: '500ms',\n },\n easing: {\n default: 'cubic-bezier(0.25, 0.1, 0.25, 1)',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n inOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n spring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n },\n scale: {\n press: '0.96',\n hover: '1.02',\n active: '1.05',\n },\n} as const\n\nexport type MotionDuration = keyof typeof motion.duration\nexport type MotionEasing = keyof typeof motion.easing\n"],"names":["motion"],"mappings":"AAAO,MAAMA,IAAS;AAAA,EACpB,UAAU;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAAA,EAEV,OAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAEZ;"}
|