@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.
Files changed (230) hide show
  1. package/dist/atoms/AnimatedText/AnimatedText.js +65 -0
  2. package/dist/atoms/AnimatedText/AnimatedText.js.map +1 -0
  3. package/dist/atoms/Avatar/Avatar.js +55 -0
  4. package/dist/atoms/Avatar/Avatar.js.map +1 -0
  5. package/dist/atoms/Badge/Badge.js +57 -0
  6. package/dist/atoms/Badge/Badge.js.map +1 -0
  7. package/dist/atoms/Button/Button.js +92 -0
  8. package/dist/atoms/Button/Button.js.map +1 -0
  9. package/dist/atoms/Character/Character.js +155 -0
  10. package/dist/atoms/Character/Character.js.map +1 -0
  11. package/dist/atoms/CodeBlock/CodeBlock.js +75 -0
  12. package/dist/atoms/CodeBlock/CodeBlock.js.map +1 -0
  13. package/dist/atoms/HamburgerIcon/HamburgerIcon.js +50 -0
  14. package/dist/atoms/HamburgerIcon/HamburgerIcon.js.map +1 -0
  15. package/dist/atoms/Icon/Icon.js +199 -0
  16. package/dist/atoms/Icon/Icon.js.map +1 -0
  17. package/dist/atoms/Input/Input.js +80 -0
  18. package/dist/atoms/Input/Input.js.map +1 -0
  19. package/dist/atoms/Label/Label.js +32 -0
  20. package/dist/atoms/Label/Label.js.map +1 -0
  21. package/dist/atoms/NoiseOverlay/NoiseOverlay.js +32 -0
  22. package/dist/atoms/NoiseOverlay/NoiseOverlay.js.map +1 -0
  23. package/dist/atoms/Progress/Progress.js +63 -0
  24. package/dist/atoms/Progress/Progress.js.map +1 -0
  25. package/dist/atoms/ScrollIndicator/ScrollIndicator.js +51 -0
  26. package/dist/atoms/ScrollIndicator/ScrollIndicator.js.map +1 -0
  27. package/dist/atoms/Separator/Separator.js +28 -0
  28. package/dist/atoms/Separator/Separator.js.map +1 -0
  29. package/dist/atoms/Shape/Shape.js +110 -0
  30. package/dist/atoms/Shape/Shape.js.map +1 -0
  31. package/dist/atoms/Shape/patterns.js +66 -0
  32. package/dist/atoms/Shape/patterns.js.map +1 -0
  33. package/dist/atoms/Skeleton/Skeleton.js +77 -0
  34. package/dist/atoms/Skeleton/Skeleton.js.map +1 -0
  35. package/dist/atoms/SpeechBubble/SpeechBubble.js +98 -0
  36. package/dist/atoms/SpeechBubble/SpeechBubble.js.map +1 -0
  37. package/dist/atoms/Switch/Switch.js +78 -0
  38. package/dist/atoms/Switch/Switch.js.map +1 -0
  39. package/dist/atoms/Textarea/Textarea.js +40 -0
  40. package/dist/atoms/Textarea/Textarea.js.map +1 -0
  41. package/dist/atoms/Tooltip/Tooltip.js +153 -0
  42. package/dist/atoms/Tooltip/Tooltip.js.map +1 -0
  43. package/dist/hooks/useButtonPulse.js +43 -0
  44. package/dist/hooks/useButtonPulse.js.map +1 -0
  45. package/dist/hooks/useCountUp.js +52 -0
  46. package/dist/hooks/useCountUp.js.map +1 -0
  47. package/dist/hooks/useKeyboardShortcuts.js +37 -0
  48. package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
  49. package/dist/hooks/useMediaQuery.js +59 -0
  50. package/dist/hooks/useMediaQuery.js.map +1 -0
  51. package/dist/hooks/usePageTransition.js +39 -0
  52. package/dist/hooks/usePageTransition.js.map +1 -0
  53. package/dist/hooks/useReducedMotion.js +57 -0
  54. package/dist/hooks/useReducedMotion.js.map +1 -0
  55. package/dist/hooks/useScrollReveal.js +61 -0
  56. package/dist/hooks/useScrollReveal.js.map +1 -0
  57. package/dist/hooks/useStaggerList.js +54 -0
  58. package/dist/hooks/useStaggerList.js.map +1 -0
  59. package/dist/hooks/useTextReveal.js +59 -0
  60. package/dist/hooks/useTextReveal.js.map +1 -0
  61. package/dist/hooks/useTheme.js +37 -0
  62. package/dist/hooks/useTheme.js.map +1 -0
  63. package/dist/hooks/useToast.js +84 -0
  64. package/dist/hooks/useToast.js.map +1 -0
  65. package/dist/index.js +147 -7925
  66. package/dist/index.js.map +1 -1
  67. package/dist/molecules/Accordion/Accordion.js +178 -0
  68. package/dist/molecules/Accordion/Accordion.js.map +1 -0
  69. package/dist/molecules/Card/Card.js +104 -0
  70. package/dist/molecules/Card/Card.js.map +1 -0
  71. package/dist/molecules/CommandBox/CommandBox.js +65 -0
  72. package/dist/molecules/CommandBox/CommandBox.js.map +1 -0
  73. package/dist/molecules/CompositeShape/CompositeShape.js +69 -0
  74. package/dist/molecules/CompositeShape/CompositeShape.js.map +1 -0
  75. package/dist/molecules/CompositeShape/presets.js +71 -0
  76. package/dist/molecules/CompositeShape/presets.js.map +1 -0
  77. package/dist/molecules/Dropdown/Dropdown.d.ts.map +1 -1
  78. package/dist/molecules/Dropdown/Dropdown.js +530 -0
  79. package/dist/molecules/Dropdown/Dropdown.js.map +1 -0
  80. package/dist/molecules/ErrorBoundary/ErrorBoundary.js +128 -0
  81. package/dist/molecules/ErrorBoundary/ErrorBoundary.js.map +1 -0
  82. package/dist/molecules/MobileDrawer/MobileDrawer.js +78 -0
  83. package/dist/molecules/MobileDrawer/MobileDrawer.js.map +1 -0
  84. package/dist/molecules/Modal/Modal.js +262 -0
  85. package/dist/molecules/Modal/Modal.js.map +1 -0
  86. package/dist/molecules/NavLink/NavLink.js +38 -0
  87. package/dist/molecules/NavLink/NavLink.js.map +1 -0
  88. package/dist/molecules/Tabs/Tabs.js +188 -0
  89. package/dist/molecules/Tabs/Tabs.js.map +1 -0
  90. package/dist/molecules/ThemeToggle/ThemeToggle.js +48 -0
  91. package/dist/molecules/ThemeToggle/ThemeToggle.js.map +1 -0
  92. package/dist/molecules/Toast/Toast.js +156 -0
  93. package/dist/molecules/Toast/Toast.js.map +1 -0
  94. package/dist/node_modules/clsx/dist/clsx.js +17 -0
  95. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  96. package/dist/node_modules/iconoir-react/dist/esm/IconoirContext.js +6 -0
  97. package/dist/node_modules/iconoir-react/dist/esm/IconoirContext.js.map +1 -0
  98. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowDown.js +17 -0
  99. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowDown.js.map +1 -0
  100. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowLeft.js +17 -0
  101. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowLeft.js.map +1 -0
  102. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowRight.js +17 -0
  103. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowRight.js.map +1 -0
  104. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUp.js +17 -0
  105. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUp.js.map +1 -0
  106. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUpRight.js +17 -0
  107. package/dist/node_modules/iconoir-react/dist/esm/regular/ArrowUpRight.js.map +1 -0
  108. package/dist/node_modules/iconoir-react/dist/esm/regular/Bell.js +17 -0
  109. package/dist/node_modules/iconoir-react/dist/esm/regular/Bell.js.map +1 -0
  110. package/dist/node_modules/iconoir-react/dist/esm/regular/Calendar.js +17 -0
  111. package/dist/node_modules/iconoir-react/dist/esm/regular/Calendar.js.map +1 -0
  112. package/dist/node_modules/iconoir-react/dist/esm/regular/Check.js +17 -0
  113. package/dist/node_modules/iconoir-react/dist/esm/regular/Check.js.map +1 -0
  114. package/dist/node_modules/iconoir-react/dist/esm/regular/CheckCircle.js +17 -0
  115. package/dist/node_modules/iconoir-react/dist/esm/regular/CheckCircle.js.map +1 -0
  116. package/dist/node_modules/iconoir-react/dist/esm/regular/Clock.js +17 -0
  117. package/dist/node_modules/iconoir-react/dist/esm/regular/Clock.js.map +1 -0
  118. package/dist/node_modules/iconoir-react/dist/esm/regular/Code.js +17 -0
  119. package/dist/node_modules/iconoir-react/dist/esm/regular/Code.js.map +1 -0
  120. package/dist/node_modules/iconoir-react/dist/esm/regular/Copy.js +17 -0
  121. package/dist/node_modules/iconoir-react/dist/esm/regular/Copy.js.map +1 -0
  122. package/dist/node_modules/iconoir-react/dist/esm/regular/Download.js +17 -0
  123. package/dist/node_modules/iconoir-react/dist/esm/regular/Download.js.map +1 -0
  124. package/dist/node_modules/iconoir-react/dist/esm/regular/EditPencil.js +17 -0
  125. package/dist/node_modules/iconoir-react/dist/esm/regular/EditPencil.js.map +1 -0
  126. package/dist/node_modules/iconoir-react/dist/esm/regular/Eye.js +17 -0
  127. package/dist/node_modules/iconoir-react/dist/esm/regular/Eye.js.map +1 -0
  128. package/dist/node_modules/iconoir-react/dist/esm/regular/EyeClosed.js +17 -0
  129. package/dist/node_modules/iconoir-react/dist/esm/regular/EyeClosed.js.map +1 -0
  130. package/dist/node_modules/iconoir-react/dist/esm/regular/Filter.js +17 -0
  131. package/dist/node_modules/iconoir-react/dist/esm/regular/Filter.js.map +1 -0
  132. package/dist/node_modules/iconoir-react/dist/esm/regular/Folder.js +17 -0
  133. package/dist/node_modules/iconoir-react/dist/esm/regular/Folder.js.map +1 -0
  134. package/dist/node_modules/iconoir-react/dist/esm/regular/Github.js +17 -0
  135. package/dist/node_modules/iconoir-react/dist/esm/regular/Github.js.map +1 -0
  136. package/dist/node_modules/iconoir-react/dist/esm/regular/HalfMoon.js +17 -0
  137. package/dist/node_modules/iconoir-react/dist/esm/regular/HalfMoon.js.map +1 -0
  138. package/dist/node_modules/iconoir-react/dist/esm/regular/Heart.js +17 -0
  139. package/dist/node_modules/iconoir-react/dist/esm/regular/Heart.js.map +1 -0
  140. package/dist/node_modules/iconoir-react/dist/esm/regular/Home.js +17 -0
  141. package/dist/node_modules/iconoir-react/dist/esm/regular/Home.js.map +1 -0
  142. package/dist/node_modules/iconoir-react/dist/esm/regular/InfoCircle.js +17 -0
  143. package/dist/node_modules/iconoir-react/dist/esm/regular/InfoCircle.js.map +1 -0
  144. package/dist/node_modules/iconoir-react/dist/esm/regular/Link.js +17 -0
  145. package/dist/node_modules/iconoir-react/dist/esm/regular/Link.js.map +1 -0
  146. package/dist/node_modules/iconoir-react/dist/esm/regular/List.js +17 -0
  147. package/dist/node_modules/iconoir-react/dist/esm/regular/List.js.map +1 -0
  148. package/dist/node_modules/iconoir-react/dist/esm/regular/Lock.js +17 -0
  149. package/dist/node_modules/iconoir-react/dist/esm/regular/Lock.js.map +1 -0
  150. package/dist/node_modules/iconoir-react/dist/esm/regular/LockSlash.js +17 -0
  151. package/dist/node_modules/iconoir-react/dist/esm/regular/LockSlash.js.map +1 -0
  152. package/dist/node_modules/iconoir-react/dist/esm/regular/Mail.js +17 -0
  153. package/dist/node_modules/iconoir-react/dist/esm/regular/Mail.js.map +1 -0
  154. package/dist/node_modules/iconoir-react/dist/esm/regular/Menu.js +17 -0
  155. package/dist/node_modules/iconoir-react/dist/esm/regular/Menu.js.map +1 -0
  156. package/dist/node_modules/iconoir-react/dist/esm/regular/Minus.js +17 -0
  157. package/dist/node_modules/iconoir-react/dist/esm/regular/Minus.js.map +1 -0
  158. package/dist/node_modules/iconoir-react/dist/esm/regular/MoreHoriz.js +17 -0
  159. package/dist/node_modules/iconoir-react/dist/esm/regular/MoreHoriz.js.map +1 -0
  160. package/dist/node_modules/iconoir-react/dist/esm/regular/MoreVert.js +17 -0
  161. package/dist/node_modules/iconoir-react/dist/esm/regular/MoreVert.js.map +1 -0
  162. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowDown.js +17 -0
  163. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowDown.js.map +1 -0
  164. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowLeft.js +17 -0
  165. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowLeft.js.map +1 -0
  166. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowRight.js +17 -0
  167. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowRight.js.map +1 -0
  168. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowUp.js +17 -0
  169. package/dist/node_modules/iconoir-react/dist/esm/regular/NavArrowUp.js.map +1 -0
  170. package/dist/node_modules/iconoir-react/dist/esm/regular/OpenInWindow.js +17 -0
  171. package/dist/node_modules/iconoir-react/dist/esm/regular/OpenInWindow.js.map +1 -0
  172. package/dist/node_modules/iconoir-react/dist/esm/regular/Page.js +17 -0
  173. package/dist/node_modules/iconoir-react/dist/esm/regular/Page.js.map +1 -0
  174. package/dist/node_modules/iconoir-react/dist/esm/regular/Plus.js +17 -0
  175. package/dist/node_modules/iconoir-react/dist/esm/regular/Plus.js.map +1 -0
  176. package/dist/node_modules/iconoir-react/dist/esm/regular/RefreshDouble.js +17 -0
  177. package/dist/node_modules/iconoir-react/dist/esm/regular/RefreshDouble.js.map +1 -0
  178. package/dist/node_modules/iconoir-react/dist/esm/regular/Search.js +17 -0
  179. package/dist/node_modules/iconoir-react/dist/esm/regular/Search.js.map +1 -0
  180. package/dist/node_modules/iconoir-react/dist/esm/regular/Settings.js +17 -0
  181. package/dist/node_modules/iconoir-react/dist/esm/regular/Settings.js.map +1 -0
  182. package/dist/node_modules/iconoir-react/dist/esm/regular/SortDown.js +17 -0
  183. package/dist/node_modules/iconoir-react/dist/esm/regular/SortDown.js.map +1 -0
  184. package/dist/node_modules/iconoir-react/dist/esm/regular/Sparks.js +17 -0
  185. package/dist/node_modules/iconoir-react/dist/esm/regular/Sparks.js.map +1 -0
  186. package/dist/node_modules/iconoir-react/dist/esm/regular/Star.js +17 -0
  187. package/dist/node_modules/iconoir-react/dist/esm/regular/Star.js.map +1 -0
  188. package/dist/node_modules/iconoir-react/dist/esm/regular/SunLight.js +17 -0
  189. package/dist/node_modules/iconoir-react/dist/esm/regular/SunLight.js.map +1 -0
  190. package/dist/node_modules/iconoir-react/dist/esm/regular/Terminal.js +17 -0
  191. package/dist/node_modules/iconoir-react/dist/esm/regular/Terminal.js.map +1 -0
  192. package/dist/node_modules/iconoir-react/dist/esm/regular/Trash.js +17 -0
  193. package/dist/node_modules/iconoir-react/dist/esm/regular/Trash.js.map +1 -0
  194. package/dist/node_modules/iconoir-react/dist/esm/regular/Upload.js +17 -0
  195. package/dist/node_modules/iconoir-react/dist/esm/regular/Upload.js.map +1 -0
  196. package/dist/node_modules/iconoir-react/dist/esm/regular/User.js +17 -0
  197. package/dist/node_modules/iconoir-react/dist/esm/regular/User.js.map +1 -0
  198. package/dist/node_modules/iconoir-react/dist/esm/regular/ViewGrid.js +17 -0
  199. package/dist/node_modules/iconoir-react/dist/esm/regular/ViewGrid.js.map +1 -0
  200. package/dist/node_modules/iconoir-react/dist/esm/regular/WarningTriangle.js +17 -0
  201. package/dist/node_modules/iconoir-react/dist/esm/regular/WarningTriangle.js.map +1 -0
  202. package/dist/node_modules/iconoir-react/dist/esm/regular/Xmark.js +17 -0
  203. package/dist/node_modules/iconoir-react/dist/esm/regular/Xmark.js.map +1 -0
  204. package/dist/node_modules/iconoir-react/dist/esm/regular/XmarkCircle.js +17 -0
  205. package/dist/node_modules/iconoir-react/dist/esm/regular/XmarkCircle.js.map +1 -0
  206. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2996 -0
  207. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  208. package/dist/organisms/Footer/Footer.js +108 -0
  209. package/dist/organisms/Footer/Footer.js.map +1 -0
  210. package/dist/organisms/Hero/Hero.d.ts.map +1 -1
  211. package/dist/organisms/Hero/Hero.js +101 -0
  212. package/dist/organisms/Hero/Hero.js.map +1 -0
  213. package/dist/organisms/Nav/Nav.js +177 -0
  214. package/dist/organisms/Nav/Nav.js.map +1 -0
  215. package/dist/organisms/Section/Section.js +57 -0
  216. package/dist/organisms/Section/Section.js.map +1 -0
  217. package/dist/theme.css +86 -0
  218. package/dist/tokens/colors.js +105 -0
  219. package/dist/tokens/colors.js.map +1 -0
  220. package/dist/tokens/effects.js +26 -0
  221. package/dist/tokens/effects.js.map +1 -0
  222. package/dist/tokens/motion.js +25 -0
  223. package/dist/tokens/motion.js.map +1 -0
  224. package/dist/tokens/spacing.js +31 -0
  225. package/dist/tokens/spacing.js.map +1 -0
  226. package/dist/tokens/typography.js +63 -0
  227. package/dist/tokens/typography.js.map +1 -0
  228. package/dist/utils/cn.js +9 -0
  229. package/dist/utils/cn.js.map +1 -0
  230. 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;"}