@vadimcomanescu/nadicode-design-system 2.0.6 → 2.0.7

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 (177) hide show
  1. package/.agents/skills/seed/contract.md +1 -0
  2. package/.agents/skills/seed/recipes/marketing-shell.md +10 -19
  3. package/.agents/skills/seed/recipes/navigation-shell.md +5 -5
  4. package/.agents/skills/seed/recipes/service-detail.md +1 -1
  5. package/.agents/skills/seed/references/blocks.md +25 -24
  6. package/.agents/skills/seed/references/brand-override.md +3 -1
  7. package/css/tokens.css +300 -122
  8. package/dist/catalog.json +1926 -125
  9. package/dist/chunk-2BADJLMV.js +117 -0
  10. package/dist/chunk-35EX5FP5.js +106 -0
  11. package/dist/chunk-5PORR6LE.js +60 -0
  12. package/dist/chunk-5PZ4VR2D.js +142 -0
  13. package/dist/chunk-5UESKK6S.js +76 -0
  14. package/dist/chunk-6N6CSJVE.js +269 -0
  15. package/dist/chunk-AURJQZC4.js +110 -0
  16. package/dist/{chunk-DF47R6LN.js → chunk-AWIG4QN6.js} +9 -9
  17. package/dist/chunk-AYWL4IYM.js +67 -0
  18. package/dist/{chunk-SV3KZ6CB.js → chunk-DSMGCFMJ.js} +7 -2
  19. package/dist/chunk-E4L6LR6P.js +33 -0
  20. package/dist/chunk-EJNF6JLL.js +105 -0
  21. package/dist/chunk-FX23F33E.js +57 -0
  22. package/dist/chunk-GJPTPLCQ.js +52 -0
  23. package/dist/chunk-GV4PKHG4.js +147 -0
  24. package/dist/chunk-HJ3A2YNO.js +163 -0
  25. package/dist/chunk-HJZRSPWB.js +38 -0
  26. package/dist/chunk-IDKZEPWK.js +133 -0
  27. package/dist/chunk-K7NQ6ZAW.js +84 -0
  28. package/dist/chunk-LCKLZ4XK.js +60 -0
  29. package/dist/chunk-MX5FUFQR.js +205 -0
  30. package/dist/chunk-NEHCPO53.js +44 -0
  31. package/dist/chunk-OHOOQUVJ.js +113 -0
  32. package/dist/chunk-QIHA7S3A.js +36 -0
  33. package/dist/chunk-RKQPU75I.js +126 -0
  34. package/dist/chunk-RMLS2QUC.js +77 -0
  35. package/dist/chunk-TS2JSPQR.js +120 -0
  36. package/dist/chunk-TUKZKU72.js +110 -0
  37. package/dist/chunk-TZXZFSD2.js +33 -0
  38. package/dist/chunk-UGV45DH3.js +18 -0
  39. package/dist/chunk-VBZQ4DBE.js +52 -0
  40. package/dist/{chunk-LQLFA2EL.js → chunk-VDONTZZX.js} +2 -2
  41. package/dist/{chunk-RWNJ54CI.js → chunk-VN475YZS.js} +1 -1
  42. package/dist/chunk-VZCB4APK.js +94 -0
  43. package/dist/chunk-W7FXDRQJ.js +94 -0
  44. package/dist/chunk-WAVU744B.js +183 -0
  45. package/dist/{chunk-5I3FWRC5.js → chunk-WOYBVPXK.js} +10 -10
  46. package/dist/chunk-WST5NLLC.js +73 -0
  47. package/dist/chunk-X6VXWEDO.js +125 -0
  48. package/dist/chunk-ZM2NODUK.js +39 -0
  49. package/dist/components/blocks/AccountLockedBlock.js +7 -57
  50. package/dist/components/blocks/ActivityFeedBlock.js +6 -39
  51. package/dist/components/blocks/AgentConversationBlock.js +5 -33
  52. package/dist/components/blocks/AudioVisualizerBlock.d.ts +1 -1
  53. package/dist/components/blocks/AudioVisualizerBlock.js +2 -2
  54. package/dist/components/blocks/AuthSuccessBlock.js +5 -60
  55. package/dist/components/blocks/BarChartBlock.d.ts +1 -1
  56. package/dist/components/blocks/BarChartBlock.js +2 -2
  57. package/dist/components/blocks/CallToActionBlock.d.ts +1 -1
  58. package/dist/components/blocks/CallToActionBlock.js +6 -52
  59. package/dist/components/blocks/ChangelogBlock.js +8 -105
  60. package/dist/components/blocks/ChartCollectionBlock.js +2 -2
  61. package/dist/components/blocks/CodeBlock.js +7 -60
  62. package/dist/components/blocks/ComparisonBlock.js +9 -94
  63. package/dist/components/blocks/ContactBlock.js +11 -120
  64. package/dist/components/blocks/FAQBlock.js +6 -44
  65. package/dist/components/blocks/FeatureBlock.d.ts +10 -14
  66. package/dist/components/blocks/FeatureBlock.js +17 -159
  67. package/dist/components/blocks/FeatureGridBlock.d.ts +1 -1
  68. package/dist/components/blocks/FeatureGridBlock.js +2 -2
  69. package/dist/components/blocks/FooterBlock.d.ts +2 -2
  70. package/dist/components/blocks/FooterBlock.js +11 -67
  71. package/dist/components/blocks/HeaderBlock.d.ts +2 -2
  72. package/dist/components/blocks/HeaderBlock.js +1 -1
  73. package/dist/components/blocks/HeatmapChartBlock.d.ts +1 -1
  74. package/dist/components/blocks/HeatmapChartBlock.js +1 -1
  75. package/dist/components/blocks/HeroBlock.d.ts +6 -3
  76. package/dist/components/blocks/HeroBlock.js +16 -199
  77. package/dist/components/blocks/HeroSectionBlock.d.ts +1 -1
  78. package/dist/components/blocks/HeroSectionBlock.js +4 -4
  79. package/dist/components/blocks/IntegrationsBlock.d.ts +1 -1
  80. package/dist/components/blocks/IntegrationsBlock.js +4 -4
  81. package/dist/components/blocks/InteractiveAreaChartBlock.d.ts +1 -1
  82. package/dist/components/blocks/InteractiveAreaChartBlock.js +2 -2
  83. package/dist/components/blocks/NewsletterBlock.js +11 -84
  84. package/dist/components/blocks/PasswordRecoveryBlock.js +14 -142
  85. package/dist/components/blocks/PricingBlock.d.ts +1 -1
  86. package/dist/components/blocks/PricingBlock.js +11 -110
  87. package/dist/components/blocks/ProcessFlowBlock.js +10 -77
  88. package/dist/components/blocks/ResetPasswordBlock.js +11 -125
  89. package/dist/components/blocks/SignUpBlock.d.ts +1 -1
  90. package/dist/components/blocks/SignUpBlock.js +2 -2
  91. package/dist/components/blocks/SocialProofBlock.d.ts +7 -11
  92. package/dist/components/blocks/SocialProofBlock.js +8 -107
  93. package/dist/components/blocks/StatsBlock.d.ts +1 -1
  94. package/dist/components/blocks/StatsBlock.js +2 -2
  95. package/dist/components/blocks/StatsMarketingBlock.d.ts +1 -1
  96. package/dist/components/blocks/StatsMarketingBlock.js +5 -36
  97. package/dist/components/blocks/TeamBlock.d.ts +1 -1
  98. package/dist/components/blocks/TeamBlock.js +4 -52
  99. package/dist/components/blocks/TestimonialsBlock.d.ts +1 -1
  100. package/dist/components/blocks/TestimonialsBlock.js +4 -133
  101. package/dist/components/blocks/TwoFactorChallengeBlock.js +9 -94
  102. package/dist/components/blocks/TwoFactorSetupBlock.js +16 -183
  103. package/dist/components/blocks/UsageDonutBlock.d.ts +1 -1
  104. package/dist/components/blocks/UsageDonutBlock.js +2 -2
  105. package/dist/components/logos/index.js +2 -2
  106. package/dist/components/page-kits/AccountLockedPageKit.d.ts +10 -0
  107. package/dist/components/page-kits/AccountLockedPageKit.js +48 -0
  108. package/dist/components/page-kits/AgentsChatPageKit.d.ts +46 -0
  109. package/dist/components/page-kits/AgentsChatPageKit.js +289 -0
  110. package/dist/components/page-kits/AnalyticsPageKit.d.ts +49 -0
  111. package/dist/components/page-kits/AnalyticsPageKit.js +277 -0
  112. package/dist/components/page-kits/BlogContentPageKit.d.ts +64 -0
  113. package/dist/components/page-kits/BlogContentPageKit.js +296 -0
  114. package/dist/components/page-kits/CheckoutPageKit.d.ts +36 -0
  115. package/dist/components/page-kits/CheckoutPageKit.js +209 -0
  116. package/dist/components/page-kits/CompanySuitePageKit.d.ts +25 -0
  117. package/dist/components/page-kits/CompanySuitePageKit.js +240 -0
  118. package/dist/components/page-kits/CrudFormPageKit.d.ts +54 -0
  119. package/dist/components/page-kits/CrudFormPageKit.js +138 -0
  120. package/dist/components/page-kits/CrudListDetailPageKit.d.ts +70 -0
  121. package/dist/components/page-kits/CrudListDetailPageKit.js +138 -0
  122. package/dist/components/page-kits/DashboardPageKit.d.ts +39 -0
  123. package/dist/components/page-kits/DashboardPageKit.js +284 -0
  124. package/dist/components/page-kits/ErrorPageKit.d.ts +22 -0
  125. package/dist/components/page-kits/ErrorPageKit.js +55 -0
  126. package/dist/components/page-kits/KanbanBoardPageKit.d.ts +31 -0
  127. package/dist/components/page-kits/KanbanBoardPageKit.js +305 -0
  128. package/dist/components/page-kits/LandingPageKit.d.ts +29 -0
  129. package/dist/components/page-kits/LandingPageKit.js +221 -0
  130. package/dist/components/page-kits/LoginPageKit.d.ts +16 -0
  131. package/dist/components/page-kits/LoginPageKit.js +43 -0
  132. package/dist/components/page-kits/MarketingShellPageKit.d.ts +21 -0
  133. package/dist/components/page-kits/MarketingShellPageKit.js +131 -0
  134. package/dist/components/page-kits/NavigationShellPageKit.d.ts +41 -0
  135. package/dist/components/page-kits/NavigationShellPageKit.js +132 -0
  136. package/dist/components/page-kits/OnboardingPageKit.d.ts +26 -0
  137. package/dist/components/page-kits/OnboardingPageKit.js +248 -0
  138. package/dist/components/page-kits/PricingPageKit.d.ts +41 -0
  139. package/dist/components/page-kits/PricingPageKit.js +279 -0
  140. package/dist/components/page-kits/ProfileSettingsPageKit.d.ts +50 -0
  141. package/dist/components/page-kits/ProfileSettingsPageKit.js +171 -0
  142. package/dist/components/page-kits/RecoveryPageKit.d.ts +17 -0
  143. package/dist/components/page-kits/RecoveryPageKit.js +58 -0
  144. package/dist/components/page-kits/ResetPageKit.d.ts +14 -0
  145. package/dist/components/page-kits/ResetPageKit.js +52 -0
  146. package/dist/components/page-kits/ServiceSuitePageKit.d.ts +25 -0
  147. package/dist/components/page-kits/ServiceSuitePageKit.js +320 -0
  148. package/dist/components/page-kits/SettingsPageKit.d.ts +27 -0
  149. package/dist/components/page-kits/SettingsPageKit.js +11 -0
  150. package/dist/components/page-kits/SignupPageKit.d.ts +15 -0
  151. package/dist/components/page-kits/SignupPageKit.js +41 -0
  152. package/dist/components/page-kits/SuccessPageKit.d.ts +15 -0
  153. package/dist/components/page-kits/SuccessPageKit.js +146 -0
  154. package/dist/components/page-kits/TeamSettingsPageKit.d.ts +50 -0
  155. package/dist/components/page-kits/TeamSettingsPageKit.js +297 -0
  156. package/dist/components/page-kits/TwoFactorPageKit.d.ts +16 -0
  157. package/dist/components/page-kits/TwoFactorPageKit.js +156 -0
  158. package/dist/components/page-kits/VerifyEmailPageKit.d.ts +15 -0
  159. package/dist/components/page-kits/VerifyEmailPageKit.js +146 -0
  160. package/dist/components/page-kits/VoiceAgentsPageKit.d.ts +35 -0
  161. package/dist/components/page-kits/VoiceAgentsPageKit.js +246 -0
  162. package/dist/components/ui/AudioWaveform.js +2 -76
  163. package/dist/components/ui/AvatarUpload.js +1 -1
  164. package/dist/components/ui/Breadcrumb.js +4 -106
  165. package/dist/components/ui/ChartCard.js +5 -38
  166. package/dist/components/ui/CheckoutFormDemo.js +5 -6
  167. package/dist/components/ui/DataFreshness.js +2 -73
  168. package/dist/components/ui/MouseEffect.js +1 -1
  169. package/dist/components/ui/NativeSelect.js +2 -18
  170. package/dist/components/ui/Pagination.js +6 -117
  171. package/dist/components/ui/ShaderBackground.js +2 -2
  172. package/dist/hooks/use-shader-preset.js +2 -2
  173. package/dist/lib/shader-presets.js +1 -1
  174. package/dist/lib/tokens.config.d.ts +19 -0
  175. package/package.json +792 -680
  176. package/scripts/ds-check.mjs +8 -0
  177. package/src/lib/tokens.config.js +63 -41
@@ -1,4 +1,4 @@
1
- interface HeroProps {
1
+ interface HeroBlockBaseProps {
2
2
  headline?: string;
3
3
  subheadline?: string;
4
4
  primaryAction?: {
@@ -16,6 +16,9 @@ interface HeroProps {
16
16
  };
17
17
  className?: string;
18
18
  }
19
- export declare function HeroCentered({ headline, subheadline, primaryAction, secondaryAction, announcement, className, }: HeroProps): import("react/jsx-runtime").JSX.Element;
20
- export declare function HeroSplit({ headline, subheadline, primaryAction, className, }: HeroProps): import("react/jsx-runtime").JSX.Element;
19
+ export type HeroBlockVariant = "centered" | "split";
20
+ export interface HeroBlockProps extends HeroBlockBaseProps {
21
+ variant?: HeroBlockVariant;
22
+ }
23
+ export declare function HeroBlock({ variant, ...props }: HeroBlockProps): import("react/jsx-runtime").JSX.Element;
21
24
  export {};
@@ -1,8 +1,9 @@
1
1
  'use client';
2
+ export { HeroBlock } from '../../chunk-MX5FUFQR.js';
2
3
  import '../../chunk-G5EO22OR.js';
3
4
  import '../../chunk-ANBJ2OLC.js';
4
- import { TextReveal } from '../../chunk-LV4LBWCS.js';
5
- import { AnimatedGradientText } from '../../chunk-XZ3A33GP.js';
5
+ import '../../chunk-LV4LBWCS.js';
6
+ import '../../chunk-XZ3A33GP.js';
6
7
  import '../../chunk-F3T2U7YL.js';
7
8
  import '../../chunk-6DYFX5IR.js';
8
9
  import '../../chunk-EB5PYS7Q.js';
@@ -10,28 +11,28 @@ import '../../chunk-OHX2LFAH.js';
10
11
  import '../../chunk-SGI25ZJ6.js';
11
12
  import '../../chunk-ULLTRLBD.js';
12
13
  import '../../chunk-4O6L5YWT.js';
13
- import { Heading } from '../../chunk-WI547C47.js';
14
- import { siteConfig } from '../../chunk-A7NUWD76.js';
15
- import { Card, CardHeader, CardContent } from '../../chunk-AH6YSYYT.js';
16
- import { MouseGlow } from '../../chunk-SV3KZ6CB.js';
17
- import { Button } from '../../chunk-7KIDDF3I.js';
18
- import { m, heroStagger } from '../../chunk-PD2YEH3H.js';
14
+ import '../../chunk-WI547C47.js';
15
+ import '../../chunk-A7NUWD76.js';
16
+ import '../../chunk-AH6YSYYT.js';
17
+ import '../../chunk-DSMGCFMJ.js';
18
+ import '../../chunk-7KIDDF3I.js';
19
+ import '../../chunk-PD2YEH3H.js';
19
20
  import '../../chunk-CRY67BIF.js';
20
21
  import '../../chunk-HJC6U46F.js';
21
22
  import '../../chunk-GO35FTNJ.js';
22
23
  import '../../chunk-PSVQ7ZNX.js';
23
- import { ZapIcon } from '../../chunk-FLF5AMNO.js';
24
+ import '../../chunk-FLF5AMNO.js';
24
25
  import '../../chunk-WFJQ43SM.js';
25
26
  import '../../chunk-S4GKGKON.js';
26
27
  import '../../chunk-LCDDAE7J.js';
27
28
  import '../../chunk-R674XI7C.js';
28
29
  import '../../chunk-WUO7OONN.js';
29
30
  import '../../chunk-BPCCTJSK.js';
30
- import { SparklesIcon } from '../../chunk-CGUCH322.js';
31
+ import '../../chunk-CGUCH322.js';
31
32
  import '../../chunk-ELKIUARM.js';
32
33
  import '../../chunk-ZU2GYVAP.js';
33
34
  import '../../chunk-KSHJQ2VT.js';
34
- import { TerminalIcon } from '../../chunk-3CLXYQKB.js';
35
+ import '../../chunk-3CLXYQKB.js';
35
36
  import '../../chunk-JHQ5NMLZ.js';
36
37
  import '../../chunk-CRZ2JE24.js';
37
38
  import '../../chunk-TXGANOAX.js';
@@ -97,7 +98,7 @@ import '../../chunk-JHQTKMKG.js';
97
98
  import '../../chunk-CI7GPGCJ.js';
98
99
  import '../../chunk-226EBOTK.js';
99
100
  import '../../chunk-G5YLGJXR.js';
100
- import { ChevronRightIcon } from '../../chunk-G24VV5NO.js';
101
+ import '../../chunk-G24VV5NO.js';
101
102
  import '../../chunk-6BAV4TZ5.js';
102
103
  import '../../chunk-SW6QPJM4.js';
103
104
  import '../../chunk-V6WNRZT3.js';
@@ -119,7 +120,7 @@ import '../../chunk-666N6OTL.js';
119
120
  import '../../chunk-FMH55OKV.js';
120
121
  import '../../chunk-WXVNTJIB.js';
121
122
  import '../../chunk-CXACRCZ4.js';
122
- import { ArrowRightIcon } from '../../chunk-T7H53CK2.js';
123
+ import '../../chunk-T7H53CK2.js';
123
124
  import '../../chunk-BFLN54VR.js';
124
125
  import '../../chunk-P6IRHPFM.js';
125
126
  import '../../chunk-SXHYB7JB.js';
@@ -128,191 +129,7 @@ import '../../chunk-UHXGBV5N.js';
128
129
  import '../../chunk-UIUMTURU.js';
129
130
  import '../../chunk-PRUXIDBD.js';
130
131
  import '../../chunk-NURPUVUV.js';
131
- import { Badge } from '../../chunk-S4JAHKOP.js';
132
+ import '../../chunk-S4JAHKOP.js';
132
133
  import '../../chunk-HJBXUXTD.js';
133
134
  import '../../chunk-ASKFAYYR.js';
134
- import { cn } from '../../chunk-QYZT24TS.js';
135
- import { useReducedMotion } from 'motion/react';
136
- import { jsxs, jsx } from 'react/jsx-runtime';
137
-
138
- var TEXT_EFFECTS = {
139
- textRevealDelayMs: 200
140
- };
141
- var DEFAULT_PRIMARY_ACTION = { label: "Get Started" };
142
- var DEFAULT_SECONDARY_ACTION = { label: "View Components" };
143
- var DEFAULT_ANNOUNCEMENT = { label: "New", text: `${siteConfig.name} System v2.0 is now live`, href: "#" };
144
- function HeroCentered({
145
- headline = "Experience the Future of Synthetic Intelligence",
146
- subheadline = "Unleash the power of deep learning with our ultra-realistic, high-performance design system. Built for the next generation of AI interfaces.",
147
- primaryAction = DEFAULT_PRIMARY_ACTION,
148
- secondaryAction = DEFAULT_SECONDARY_ACTION,
149
- announcement = DEFAULT_ANNOUNCEMENT,
150
- className
151
- }) {
152
- const shouldReduceMotion = useReducedMotion();
153
- const Wrapper = shouldReduceMotion ? "div" : m.div;
154
- const Item = shouldReduceMotion ? "div" : m.div;
155
- return /* @__PURE__ */ jsxs("section", { className: cn("relative overflow-hidden py-24 md:py-32", className), children: [
156
- /* @__PURE__ */ jsx(MouseGlow, { className: "opacity-40" }),
157
- /* @__PURE__ */ jsxs(
158
- Wrapper,
159
- {
160
- className: "container relative z-10 mx-auto px-4 text-center",
161
- ...!shouldReduceMotion && {
162
- initial: "hidden",
163
- animate: "visible",
164
- variants: heroStagger.container
165
- },
166
- children: [
167
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsx("div", { className: "mb-8 flex justify-center", children: /* @__PURE__ */ jsxs(
168
- "a",
169
- {
170
- href: announcement.href,
171
- className: "inline-flex items-center rounded-full border border-border/50 bg-surface/50 px-4 py-1.5 text-sm font-medium text-text-secondary glass-overlay transition-colors hover:border-accent/10 hover:bg-surface-hover",
172
- children: [
173
- /* @__PURE__ */ jsx(Badge, { variant: "accent", className: "mr-2 h-5 px-1.5 text-[10px]", children: announcement.label }),
174
- /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
175
- announcement.text,
176
- /* @__PURE__ */ jsx(ChevronRightIcon, { size: 12 })
177
- ] })
178
- ]
179
- }
180
- ) }) }),
181
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsxs(Heading, { level: 1, size: "display", className: "mx-auto max-w-4xl text-5xl text-text-primary sm:text-7xl", children: [
182
- /* @__PURE__ */ jsx("span", { className: "block", children: /* @__PURE__ */ jsx(TextReveal, { text: headline.split(" ").slice(0, 3).join(" "), by: "word", delay: TEXT_EFFECTS.textRevealDelayMs, className: "justify-center" }) }),
183
- /* @__PURE__ */ jsx(AnimatedGradientText, { className: "mt-1.5", children: headline.split(" ").slice(3).join(" ") })
184
- ] }) }),
185
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsx("p", { className: "mx-auto mt-6 max-w-2xl text-lg leading-8 text-text-secondary", children: subheadline }) }),
186
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsxs("div", { className: "mt-10 flex items-center justify-center gap-4", children: [
187
- /* @__PURE__ */ jsxs(Button, { size: "lg", variant: "primary", onClick: primaryAction.onClick, children: [
188
- primaryAction.label,
189
- /* @__PURE__ */ jsx(ArrowRightIcon, { size: 16, className: "ml-2" })
190
- ] }),
191
- /* @__PURE__ */ jsx(Button, { size: "lg", variant: "outline", onClick: secondaryAction.onClick, children: secondaryAction.label })
192
- ] }) }),
193
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsx("div", { className: "mt-20", children: /* @__PURE__ */ jsx(Card, { className: "mx-auto max-w-5xl rounded-xl p-2 lg:rounded-2xl lg:p-4", children: /* @__PURE__ */ jsxs("div", { className: "aspect-[16/9] overflow-hidden rounded-lg border border-border glass-panel shadow-inner relative", children: [
194
- /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 flex flex-col", children: [
195
- /* @__PURE__ */ jsxs("div", { className: "h-12 border-b border-border flex items-center px-4 gap-4 bg-muted/30", children: [
196
- /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
197
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-destructive/50" }),
198
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-chart-5/50" }),
199
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-chart-4/50" })
200
- ] }),
201
- /* @__PURE__ */ jsx("div", { className: "h-6 w-full max-w-sm rounded bg-muted" })
202
- ] }),
203
- /* @__PURE__ */ jsxs("div", { className: "flex-1 flex", children: [
204
- /* @__PURE__ */ jsxs("div", { className: "w-64 border-r border-border p-4 space-y-4 bg-muted/10 hidden md:block", children: [
205
- /* @__PURE__ */ jsx("div", { className: "h-4 w-24 rounded bg-muted" }),
206
- /* @__PURE__ */ jsx("div", { className: "h-4 w-32 rounded bg-muted/50" }),
207
- /* @__PURE__ */ jsx("div", { className: "h-4 w-20 rounded bg-muted/50" }),
208
- /* @__PURE__ */ jsx("div", { className: "h-4 w-28 rounded bg-muted/50" })
209
- ] }),
210
- /* @__PURE__ */ jsxs("div", { className: "flex-1 p-6 space-y-6", children: [
211
- /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
212
- /* @__PURE__ */ jsx("div", { className: "h-32 flex-1 rounded-lg border border-border bg-muted/20" }),
213
- /* @__PURE__ */ jsx("div", { className: "h-32 flex-1 rounded-lg border border-border bg-muted/20" }),
214
- /* @__PURE__ */ jsx("div", { className: "h-32 flex-1 rounded-lg border border-border bg-muted/20" })
215
- ] }),
216
- /* @__PURE__ */ jsx("div", { className: "h-64 rounded-lg border border-border bg-muted/10" })
217
- ] })
218
- ] })
219
- ] }),
220
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex h-full w-full items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-8 opacity-20", children: [
221
- /* @__PURE__ */ jsx("div", { className: "h-32 w-32 rounded-full border border-primary/50 blur-3xl animate-pulse" }),
222
- /* @__PURE__ */ jsx("div", { className: "h-32 w-32 rounded-full border border-primary/50 blur-3xl animate-pulse delay-1000" })
223
- ] }) })
224
- ] }) }) }) })
225
- ]
226
- }
227
- )
228
- ] });
229
- }
230
- var DEFAULT_SPLIT_PRIMARY_ACTION = { label: "Start Building" };
231
- function HeroSplit({
232
- headline = `Build faster with ${siteConfig.name}`,
233
- subheadline = "A complete component library for building modern, high-contrast AI applications.",
234
- primaryAction = DEFAULT_SPLIT_PRIMARY_ACTION,
235
- className
236
- }) {
237
- const shouldReduceMotion = useReducedMotion();
238
- const Wrapper = shouldReduceMotion ? "div" : m.div;
239
- const Item = shouldReduceMotion ? "div" : m.div;
240
- return /* @__PURE__ */ jsx("section", { className: cn("relative overflow-hidden py-24 md:py-32", className), children: /* @__PURE__ */ jsxs("div", { className: "container mx-auto grid gap-12 px-6 lg:px-8 lg:grid-cols-2 lg:items-center", children: [
241
- /* @__PURE__ */ jsxs(
242
- Wrapper,
243
- {
244
- className: "relative z-10",
245
- ...!shouldReduceMotion && {
246
- initial: "hidden",
247
- animate: "visible",
248
- variants: heroStagger.container
249
- },
250
- children: [
251
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center rounded-lg border border-border bg-surface px-4 py-1.5 mb-6", children: [
252
- /* @__PURE__ */ jsx(SparklesIcon, { size: 16, className: "mr-2 text-accent" }),
253
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-text-secondary", children: "AI-Powered Components" })
254
- ] }) }),
255
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsx(Heading, { level: 1, size: "display", className: "text-text-primary sm:text-6xl mb-6", children: /* @__PURE__ */ jsx(TextReveal, { text: headline, by: "word", delay: TEXT_EFFECTS.textRevealDelayMs }) }) }),
256
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsx("p", { className: "text-lg text-text-secondary mb-8 leading-relaxed max-w-lg", children: subheadline }) }),
257
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-4", children: [
258
- /* @__PURE__ */ jsxs(Button, { size: "lg", variant: "accent", onClick: primaryAction.onClick, children: [
259
- primaryAction.label,
260
- /* @__PURE__ */ jsx(ZapIcon, { size: 16, className: "ml-2" })
261
- ] }),
262
- /* @__PURE__ */ jsx(Button, { size: "lg", variant: "ghost", children: "Documentation" })
263
- ] }) }),
264
- /* @__PURE__ */ jsx(Item, { ...!shouldReduceMotion && { variants: heroStagger.child }, children: /* @__PURE__ */ jsxs("div", { className: "mt-8 flex items-center gap-4 text-sm text-text-tertiary", children: [
265
- /* @__PURE__ */ jsx("div", { className: "flex -space-x-2", children: [1, 2, 3, 4].map((i) => /* @__PURE__ */ jsxs("div", { className: "h-8 w-8 rounded-full border-2 border-background bg-surface-active flex items-center justify-center text-[10px] font-bold", children: [
266
- "U",
267
- i
268
- ] }, i)) }),
269
- /* @__PURE__ */ jsx("p", { children: "Trusted by 10,000+ developers" })
270
- ] }) })
271
- ]
272
- }
273
- ),
274
- /* @__PURE__ */ jsxs("div", { className: "relative lg:ml-auto w-full max-w-md", children: [
275
- /* @__PURE__ */ jsx("div", { className: "absolute -inset-4 rounded-xl bg-gradient-to-r from-primary to-text-secondary opacity-20 blur-2xl" }),
276
- /* @__PURE__ */ jsxs(Card, { interactive: true, className: "relative w-full border-border/50", children: [
277
- /* @__PURE__ */ jsx(CardHeader, { className: "border-b border-border/50 pb-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
278
- /* @__PURE__ */ jsxs("div", { className: "flex space-x-2", children: [
279
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-destructive/50" }),
280
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-chart-5/50" }),
281
- /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-chart-4/50" })
282
- ] }),
283
- /* @__PURE__ */ jsx("div", { className: "text-xs text-text-tertiary font-mono", children: "terminal.tsx" })
284
- ] }) }),
285
- /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4 p-6 font-mono text-sm", children: [
286
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-chart-4", children: [
287
- /* @__PURE__ */ jsx(ChevronRightIcon, { size: 16 }),
288
- /* @__PURE__ */ jsx("span", { children: "npm install @nadicode/core" })
289
- ] }),
290
- /* @__PURE__ */ jsxs("div", { className: "text-text-secondary", children: [
291
- /* @__PURE__ */ jsx("span", { className: "text-chart-2", children: "\u2714" }),
292
- " Added 124 packages"
293
- ] }),
294
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-text-primary", children: [
295
- /* @__PURE__ */ jsx(ChevronRightIcon, { size: 16, className: "text-text-tertiary" }),
296
- /* @__PURE__ */ jsx("span", { children: "npx nadicode init" })
297
- ] }),
298
- /* @__PURE__ */ jsxs("div", { className: "bg-surface/50 p-4 rounded border border-border/50 text-xs text-text-secondary mt-4", children: [
299
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-2", children: [
300
- /* @__PURE__ */ jsx(TerminalIcon, { size: 12 }),
301
- /* @__PURE__ */ jsx("span", { children: "Initializing project..." })
302
- ] }),
303
- /* @__PURE__ */ jsx("div", { className: "h-1 w-full bg-border rounded-full overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "h-full bg-accent w-2/3" }) })
304
- ] })
305
- ] })
306
- ] }),
307
- /* @__PURE__ */ jsx("div", { className: "absolute -bottom-6 -left-6 max-w-[200px]", children: /* @__PURE__ */ jsx(Card, { className: "border-border/50 shadow-xl", children: /* @__PURE__ */ jsxs(CardContent, { className: "p-4 flex items-center gap-4", children: [
308
- /* @__PURE__ */ jsx("div", { className: "h-8 w-8 rounded-full bg-chart-4/20 flex items-center justify-center text-chart-4", children: /* @__PURE__ */ jsx(ZapIcon, { size: 16 }) }),
309
- /* @__PURE__ */ jsxs("div", { children: [
310
- /* @__PURE__ */ jsx("div", { className: "text-xs font-bold text-text-primary", children: "Deployment" }),
311
- /* @__PURE__ */ jsx("div", { className: "text-[10px] text-text-secondary", children: "Successful (24ms)" })
312
- ] })
313
- ] }) }) })
314
- ] })
315
- ] }) });
316
- }
317
-
318
- export { HeroCentered, HeroSplit };
135
+ import '../../chunk-QYZT24TS.js';
@@ -15,5 +15,5 @@ interface HeroSectionProps {
15
15
  logos?: HeroLogo[];
16
16
  className?: string;
17
17
  }
18
- export declare function HeroSection({ headline, flipWords, primaryAction, secondaryAction, logos, className, }: HeroSectionProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function HeroSectionBlock({ headline, flipWords, primaryAction, secondaryAction, logos, className, }: HeroSectionProps): import("react/jsx-runtime").JSX.Element;
19
19
  export {};
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { HeroHeader } from '../../chunk-5I3FWRC5.js';
2
+ import { HeaderBlock } from '../../chunk-WOYBVPXK.js';
3
3
  import '../../chunk-G5EO22OR.js';
4
4
  import '../../chunk-ANBJ2OLC.js';
5
5
  import '../../chunk-LV4LBWCS.js';
@@ -158,7 +158,7 @@ function heightClass(h) {
158
158
  if (n <= 24) return "h-6";
159
159
  return "h-7";
160
160
  }
161
- function HeroSection({
161
+ function HeroSectionBlock({
162
162
  headline = "Build 10x Faster with NS",
163
163
  flipWords = defaultFlipWords,
164
164
  primaryAction = defaultPrimaryAction,
@@ -167,7 +167,7 @@ function HeroSection({
167
167
  className
168
168
  }) {
169
169
  return /* @__PURE__ */ jsxs(Fragment, { children: [
170
- /* @__PURE__ */ jsx(HeroHeader, {}),
170
+ /* @__PURE__ */ jsx(HeaderBlock, {}),
171
171
  /* @__PURE__ */ jsxs("main", { className: className ?? "overflow-x-hidden", children: [
172
172
  /* @__PURE__ */ jsx("section", { children: /* @__PURE__ */ jsxs("div", { className: "py-24 md:pb-32 lg:pb-36 lg:pt-72", children: [
173
173
  /* @__PURE__ */ jsx("div", { className: "relative mx-auto flex max-w-7xl flex-col px-6 lg:block lg:px-12", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-lg text-center lg:ml-0 lg:max-w-full lg:text-left", children: [
@@ -264,4 +264,4 @@ function HeroSection({
264
264
  ] });
265
265
  }
266
266
 
267
- export { HeroSection };
267
+ export { HeroSectionBlock };
@@ -11,5 +11,5 @@ interface IntegrationsSectionProps {
11
11
  integrations?: IntegrationItem[];
12
12
  className?: string;
13
13
  }
14
- export declare function IntegrationsSection({ title, description, integrations, className, }?: IntegrationsSectionProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function IntegrationsBlock({ title, description, integrations, className, }?: IntegrationsSectionProps): import("react/jsx-runtime").JSX.Element;
15
15
  export {};
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
  import '../../chunk-3ZDYYZDD.js';
3
+ import { VSCodium } from '../../chunk-J5DRK4RF.js';
4
+ import { Gemini } from '../../chunk-TSVN5A2F.js';
3
5
  import { GooglePaLM } from '../../chunk-PX2WVDDB.js';
4
6
  import { MagicUI } from '../../chunk-BZYMCJHW.js';
5
7
  import { MediaWiki } from '../../chunk-H466RJCI.js';
6
8
  import { Replit } from '../../chunk-DT6DGTVW.js';
7
- import { VSCodium } from '../../chunk-J5DRK4RF.js';
8
- import { Gemini } from '../../chunk-TSVN5A2F.js';
9
9
  import { StaggerChildren } from '../../chunk-DQPK2XRL.js';
10
10
  import { Heading } from '../../chunk-WI547C47.js';
11
11
  import { ScrollFadeIn } from '../../chunk-I23DDSU7.js';
@@ -162,7 +162,7 @@ var defaultIntegrations = [
162
162
  icon: /* @__PURE__ */ jsx(GooglePaLM, {})
163
163
  }
164
164
  ];
165
- function IntegrationsSection({
165
+ function IntegrationsBlock({
166
166
  title = "Integrate with your favorite tools",
167
167
  description = "Connect seamlessly with popular platforms and services to enhance your workflow.",
168
168
  integrations = defaultIntegrations,
@@ -208,4 +208,4 @@ var IntegrationCard = ({ title, description, children, link = "https://github.co
208
208
  ] }) });
209
209
  };
210
210
 
211
- export { IntegrationsSection };
211
+ export { IntegrationsBlock };
@@ -17,5 +17,5 @@ interface InteractiveAreaChartProps {
17
17
  timeRanges?: TimeRange[];
18
18
  className?: string;
19
19
  }
20
- export declare function InteractiveAreaChart({ data, config, title, description, timeRanges, className, }: InteractiveAreaChartProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function InteractiveAreaChartBlock({ data, config, title, description, timeRanges, className, }: InteractiveAreaChartProps): import("react/jsx-runtime").JSX.Element;
21
21
  export {};
@@ -356,7 +356,7 @@ var defaultConfig = {
356
356
  color: "rgb(var(--chart-2))"
357
357
  }
358
358
  };
359
- function InteractiveAreaChart({
359
+ function InteractiveAreaChartBlock({
360
360
  data = defaultData,
361
361
  config = defaultConfig,
362
362
  title = "Traffic Analysis",
@@ -404,4 +404,4 @@ function InteractiveAreaChart({
404
404
  ] });
405
405
  }
406
406
 
407
- export { InteractiveAreaChart };
407
+ export { InteractiveAreaChartBlock };
@@ -1,90 +1,17 @@
1
1
  'use client';
2
- import { Shine } from '../../chunk-DARC2ACH.js';
3
- import { useSafeTimeout } from '../../chunk-MDAYDDTC.js';
4
- import { Typography } from '../../chunk-N53OMWW2.js';
5
- import { Spinner } from '../../chunk-ZLSWCV55.js';
6
- import { Heading } from '../../chunk-WI547C47.js';
7
- import { Input } from '../../chunk-AP3XXYAY.js';
2
+ export { NewsletterBlock } from '../../chunk-K7NQ6ZAW.js';
3
+ import '../../chunk-DARC2ACH.js';
4
+ import '../../chunk-MDAYDDTC.js';
5
+ import '../../chunk-N53OMWW2.js';
6
+ import '../../chunk-ZLSWCV55.js';
7
+ import '../../chunk-WI547C47.js';
8
+ import '../../chunk-AP3XXYAY.js';
8
9
  import '../../chunk-LIBXYD5Q.js';
9
- import { ScrollFadeIn } from '../../chunk-I23DDSU7.js';
10
- import { Button } from '../../chunk-7KIDDF3I.js';
10
+ import '../../chunk-I23DDSU7.js';
11
+ import '../../chunk-7KIDDF3I.js';
11
12
  import '../../chunk-PD2YEH3H.js';
12
13
  import '../../chunk-CRY67BIF.js';
13
14
  import '../../chunk-HJC6U46F.js';
14
- import { CheckIcon } from '../../chunk-CXACRCZ4.js';
15
+ import '../../chunk-CXACRCZ4.js';
15
16
  import '../../chunk-ASKFAYYR.js';
16
- import { cn } from '../../chunk-QYZT24TS.js';
17
- import { useState } from 'react';
18
- import { jsx, jsxs } from 'react/jsx-runtime';
19
-
20
- function NewsletterBlock({
21
- onSubscribe,
22
- title = "Stay in the loop",
23
- description = "Get notified about new components, updates, and design system tips. No spam.",
24
- className
25
- }) {
26
- const [email, setEmail] = useState("");
27
- const [status, setStatus] = useState("idle");
28
- const setSafeTimeout = useSafeTimeout();
29
- const handleSubmit = async (e) => {
30
- e.preventDefault();
31
- if (!email.trim()) return;
32
- setStatus("loading");
33
- try {
34
- await onSubscribe?.(email);
35
- } catch {
36
- }
37
- setSafeTimeout(() => {
38
- setStatus("success");
39
- setSafeTimeout(() => {
40
- setStatus("idle");
41
- setEmail("");
42
- }, 3e3);
43
- }, 600);
44
- };
45
- return /* @__PURE__ */ jsx("section", { className: cn("py-16 md:py-24", className), children: /* @__PURE__ */ jsx("div", { className: "mx-auto max-w-xl px-6", children: /* @__PURE__ */ jsx(ScrollFadeIn, { children: /* @__PURE__ */ jsx(Shine, { enableOnHover: true, loop: true, loopDelay: 300, color: "var(--color-accent)", opacity: 0.1, children: /* @__PURE__ */ jsxs("div", { className: "glass-panel rounded-2xl border border-border/50 p-8 text-center sm:p-12", children: [
46
- /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "text-text-primary", children: title }),
47
- /* @__PURE__ */ jsx(Typography, { variant: "body", className: "mt-4 text-text-secondary", children: description }),
48
- status === "success" ? /* @__PURE__ */ jsxs("div", { className: "mt-8 flex items-center justify-center gap-2 text-success", children: [
49
- /* @__PURE__ */ jsx(CheckIcon, { size: 20 }),
50
- /* @__PURE__ */ jsxs("span", { className: "text-sm font-medium", children: [
51
- "You",
52
- "'",
53
- "re subscribed!"
54
- ] })
55
- ] }) : /* @__PURE__ */ jsxs(
56
- "form",
57
- {
58
- onSubmit: handleSubmit,
59
- className: "mt-8 flex flex-col gap-4 sm:flex-row",
60
- children: [
61
- /* @__PURE__ */ jsx(
62
- Input,
63
- {
64
- name: "email",
65
- type: "email",
66
- placeholder: "you@example.com",
67
- value: email,
68
- onChange: (e) => setEmail(e.target.value),
69
- required: true,
70
- className: "flex-1"
71
- }
72
- ),
73
- /* @__PURE__ */ jsx(
74
- Button,
75
- {
76
- type: "submit",
77
- variant: "accent",
78
- disabled: status === "loading",
79
- className: "shrink-0",
80
- children: status === "loading" ? /* @__PURE__ */ jsx(Spinner, { className: "h-4 w-4" }) : "Subscribe"
81
- }
82
- )
83
- ]
84
- }
85
- ),
86
- /* @__PURE__ */ jsx(Typography, { variant: "small", className: "mt-4 text-text-tertiary", children: "Unsubscribe anytime. We respect your inbox." })
87
- ] }) }) }) }) });
88
- }
89
-
90
- export { NewsletterBlock };
17
+ import '../../chunk-QYZT24TS.js';
@@ -1,147 +1,19 @@
1
1
  'use client';
2
- import { useSafeTimeout } from '../../chunk-MDAYDDTC.js';
3
- import { Spinner } from '../../chunk-ZLSWCV55.js';
4
- import { Field, FieldLabel } from '../../chunk-RX5EUODB.js';
5
- import { Separator } from '../../chunk-CUZJIDU7.js';
6
- import { Input } from '../../chunk-AP3XXYAY.js';
2
+ export { PasswordRecoveryBlock } from '../../chunk-5PZ4VR2D.js';
3
+ import '../../chunk-MDAYDDTC.js';
4
+ import '../../chunk-ZLSWCV55.js';
5
+ import '../../chunk-RX5EUODB.js';
6
+ import '../../chunk-CUZJIDU7.js';
7
+ import '../../chunk-AP3XXYAY.js';
7
8
  import '../../chunk-LIBXYD5Q.js';
8
- import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from '../../chunk-AH6YSYYT.js';
9
- import { Button } from '../../chunk-7KIDDF3I.js';
10
- import { m, fadeInUp, scaleIn } from '../../chunk-PD2YEH3H.js';
9
+ import '../../chunk-AH6YSYYT.js';
10
+ import '../../chunk-7KIDDF3I.js';
11
+ import '../../chunk-PD2YEH3H.js';
11
12
  import '../../chunk-CRY67BIF.js';
12
13
  import '../../chunk-HJC6U46F.js';
13
- import { SparklesIcon } from '../../chunk-CGUCH322.js';
14
- import { MailIcon } from '../../chunk-XQ2UDMPO.js';
15
- import { CheckIcon } from '../../chunk-CXACRCZ4.js';
16
- import { Badge } from '../../chunk-S4JAHKOP.js';
14
+ import '../../chunk-CGUCH322.js';
15
+ import '../../chunk-XQ2UDMPO.js';
16
+ import '../../chunk-CXACRCZ4.js';
17
+ import '../../chunk-S4JAHKOP.js';
17
18
  import '../../chunk-ASKFAYYR.js';
18
- import { cn } from '../../chunk-QYZT24TS.js';
19
- import * as React from 'react';
20
- import { useTranslations } from 'next-intl';
21
- import { useReducedMotion } from 'motion/react';
22
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
23
-
24
- var MODE_ICONS = {
25
- reset: /* @__PURE__ */ jsx(MailIcon, { size: 32, className: "text-text-secondary" }),
26
- "magic-link": /* @__PURE__ */ jsx(SparklesIcon, { size: 32, className: "text-accent" })
27
- };
28
- var INSTRUCTION_STEPS = ["step1", "step2", "step3"];
29
- function PasswordRecoveryBlock({
30
- className,
31
- mode = "reset",
32
- onSubmit,
33
- onBackToLogin,
34
- title,
35
- description,
36
- buttonText,
37
- successTitle
38
- }) {
39
- const prefersReduced = useReducedMotion();
40
- const tShared = useTranslations("auth.passwordRecovery.shared");
41
- const tMode = useTranslations(mode === "magic-link" ? "auth.passwordRecovery.magicLink" : "auth.passwordRecovery.reset");
42
- const [email, setEmail] = React.useState("");
43
- const [state, setState] = React.useState("entry");
44
- const [resendState, setResendState] = React.useState("idle");
45
- const setSafeTimeout = useSafeTimeout();
46
- const resolvedTitle = title ?? tMode("title");
47
- const resolvedDescription = description ?? tMode("description");
48
- const resolvedButtonText = buttonText ?? tMode("button");
49
- const resolvedSuccessTitle = successTitle ?? tShared("checkEmail");
50
- const handleSubmit = (e) => {
51
- e.preventDefault();
52
- if (!email) return;
53
- setState("loading");
54
- onSubmit?.(email);
55
- setSafeTimeout(() => setState("success"), 1500);
56
- };
57
- const handleResend = () => {
58
- setResendState("sending");
59
- onSubmit?.(email);
60
- setSafeTimeout(() => {
61
- setResendState("sent");
62
- setSafeTimeout(() => setResendState("idle"), 3e3);
63
- }, 1e3);
64
- };
65
- if (state === "success") {
66
- return /* @__PURE__ */ jsx(m.div, { ...prefersReduced ? {} : fadeInUp, className: cn("w-full max-w-sm mx-auto", className), children: /* @__PURE__ */ jsxs(Card, { children: [
67
- /* @__PURE__ */ jsxs(CardHeader, { className: "text-center", children: [
68
- /* @__PURE__ */ jsx("div", { className: "mx-auto mb-2", children: /* @__PURE__ */ jsx(MailIcon, { size: 48, className: "text-accent" }) }),
69
- /* @__PURE__ */ jsx(CardTitle, { className: "text-2xl", children: resolvedSuccessTitle }),
70
- /* @__PURE__ */ jsx(CardDescription, { children: tMode("successDescription") })
71
- ] }),
72
- /* @__PURE__ */ jsxs(CardContent, { className: "grid gap-4", children: [
73
- /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "font-mono text-xs", children: email }) }),
74
- /* @__PURE__ */ jsx("ol", { className: "space-y-2 text-sm text-text-secondary list-none", children: INSTRUCTION_STEPS.map((key) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2", children: [
75
- /* @__PURE__ */ jsx(CheckIcon, { size: 16, className: "text-success mt-0.5 shrink-0" }),
76
- /* @__PURE__ */ jsx("span", { children: tMode(`instructions.${key}`) })
77
- ] }, key)) }),
78
- /* @__PURE__ */ jsx(Separator, {}),
79
- /* @__PURE__ */ jsxs("div", { className: "text-center space-y-2", children: [
80
- /* @__PURE__ */ jsx("p", { className: "text-sm text-text-tertiary", children: tShared("didNotReceiveEmail") }),
81
- /* @__PURE__ */ jsxs(
82
- Button,
83
- {
84
- variant: "outline",
85
- size: "sm",
86
- onClick: handleResend,
87
- disabled: resendState === "sending",
88
- children: [
89
- resendState === "sending" && /* @__PURE__ */ jsx(Spinner, { className: "mr-2" }),
90
- resendState === "sent" ? tShared("emailResent") : tShared("resendEmail")
91
- ]
92
- }
93
- )
94
- ] })
95
- ] }),
96
- /* @__PURE__ */ jsx(CardFooter, { className: "justify-center", children: /* @__PURE__ */ jsx(
97
- "button",
98
- {
99
- type: "button",
100
- onClick: onBackToLogin,
101
- className: "text-sm text-text-tertiary hover:text-text-primary transition-colors",
102
- children: tShared("backToLogin")
103
- }
104
- ) })
105
- ] }) });
106
- }
107
- return /* @__PURE__ */ jsx(m.div, { ...prefersReduced ? {} : scaleIn, className: cn("w-full max-w-sm mx-auto", className), children: /* @__PURE__ */ jsxs(Card, { children: [
108
- /* @__PURE__ */ jsxs(CardHeader, { className: "text-center", children: [
109
- /* @__PURE__ */ jsx("div", { className: "mx-auto mb-2", children: MODE_ICONS[mode] }),
110
- /* @__PURE__ */ jsx(CardTitle, { className: "text-2xl", children: resolvedTitle }),
111
- /* @__PURE__ */ jsx(CardDescription, { children: resolvedDescription })
112
- ] }),
113
- /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("form", { noValidate: true, onSubmit: handleSubmit, className: "grid gap-4", children: [
114
- /* @__PURE__ */ jsxs(Field, { children: [
115
- /* @__PURE__ */ jsx(FieldLabel, { htmlFor: "recovery-email", children: tShared("email") }),
116
- /* @__PURE__ */ jsx(
117
- Input,
118
- {
119
- name: "email",
120
- id: "recovery-email",
121
- type: "email",
122
- placeholder: tShared("emailPlaceholder"),
123
- value: email,
124
- onChange: (e) => setEmail(e.target.value),
125
- autoComplete: "email",
126
- required: true
127
- }
128
- )
129
- ] }),
130
- /* @__PURE__ */ jsx(Button, { variant: "accent", className: "w-full", disabled: state === "loading", children: state === "loading" ? /* @__PURE__ */ jsxs(Fragment, { children: [
131
- /* @__PURE__ */ jsx(Spinner, { className: "mr-2" }),
132
- tShared("sending")
133
- ] }) : resolvedButtonText })
134
- ] }) }),
135
- /* @__PURE__ */ jsx(CardFooter, { className: "justify-center", children: /* @__PURE__ */ jsx(
136
- "button",
137
- {
138
- type: "button",
139
- onClick: onBackToLogin,
140
- className: "text-sm text-text-tertiary hover:text-text-primary transition-colors",
141
- children: mode === "magic-link" ? tMode("backToPassword") : tShared("backToLogin")
142
- }
143
- ) })
144
- ] }) });
145
- }
146
-
147
- export { PasswordRecoveryBlock };
19
+ import '../../chunk-QYZT24TS.js';