@vadimcomanescu/nadicode-design-system 2.0.5 → 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 +793 -681
  176. package/scripts/ds-check.mjs +10 -2
  177. package/src/lib/tokens.config.js +63 -41
@@ -15,5 +15,5 @@ interface PricingTableProps {
15
15
  showBillingToggle?: boolean;
16
16
  className?: string;
17
17
  }
18
- export declare function PricingTable({ title, description, plans, showBillingToggle, className, }: PricingTableProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function PricingBlock({ title, description, plans, showBillingToggle, className, }: PricingTableProps): import("react/jsx-runtime").JSX.Element;
19
19
  export {};
@@ -1,125 +1,26 @@
1
1
  'use client';
2
- import { Shine } from '../../chunk-DARC2ACH.js';
2
+ export { PricingBlock } from '../../chunk-AURJQZC4.js';
3
+ import '../../chunk-DARC2ACH.js';
3
4
  import '../../chunk-G5EO22OR.js';
4
5
  import '../../chunk-ANBJ2OLC.js';
5
6
  import '../../chunk-LV4LBWCS.js';
6
7
  import '../../chunk-XZ3A33GP.js';
7
- import { CountingNumber } from '../../chunk-F3T2U7YL.js';
8
+ import '../../chunk-F3T2U7YL.js';
8
9
  import '../../chunk-6DYFX5IR.js';
9
10
  import '../../chunk-EB5PYS7Q.js';
10
11
  import '../../chunk-OHX2LFAH.js';
11
12
  import '../../chunk-SGI25ZJ6.js';
12
- import { Switch } from '../../chunk-R7N7YLFT.js';
13
- import { StaggerChildren } from '../../chunk-DQPK2XRL.js';
13
+ import '../../chunk-R7N7YLFT.js';
14
+ import '../../chunk-DQPK2XRL.js';
14
15
  import '../../chunk-ULLTRLBD.js';
15
16
  import '../../chunk-4O6L5YWT.js';
16
- import { Heading } from '../../chunk-WI547C47.js';
17
- import { Card, CardHeader, CardTitle, CardContent, CardFooter } from '../../chunk-AH6YSYYT.js';
18
- import { Button } from '../../chunk-7KIDDF3I.js';
17
+ import '../../chunk-WI547C47.js';
18
+ import '../../chunk-AH6YSYYT.js';
19
+ import '../../chunk-7KIDDF3I.js';
19
20
  import '../../chunk-PD2YEH3H.js';
20
21
  import '../../chunk-CRY67BIF.js';
21
22
  import '../../chunk-HJC6U46F.js';
22
- import { CheckIcon } from '../../chunk-CXACRCZ4.js';
23
- import { Badge } from '../../chunk-S4JAHKOP.js';
23
+ import '../../chunk-CXACRCZ4.js';
24
+ import '../../chunk-S4JAHKOP.js';
24
25
  import '../../chunk-ASKFAYYR.js';
25
- import { cn } from '../../chunk-QYZT24TS.js';
26
- import { useTranslations } from 'next-intl';
27
- import { useState } from 'react';
28
- import { jsx, jsxs } from 'react/jsx-runtime';
29
-
30
- var defaultPlans = [
31
- {
32
- name: "Starter",
33
- description: "Perfect for hobbyists and side projects.",
34
- price: "$0",
35
- period: "/forever",
36
- features: ["1,000 requests/mo", "Community support", "1 project", "Basic analytics"],
37
- action: "Get Started",
38
- variant: "outline"
39
- },
40
- {
41
- name: "Pro",
42
- description: "For professional developers and small teams.",
43
- price: (isYearly) => isYearly ? "$29" : "$39",
44
- period: "/month",
45
- features: ["100,000 requests/mo", "Priority support", "Unlimited projects", "Advanced analytics", "Custom domains"],
46
- action: "Upgrade to Pro",
47
- variant: "accent",
48
- popular: true
49
- },
50
- {
51
- name: "Enterprise",
52
- description: "Custom solutions for large organizations.",
53
- price: "Custom",
54
- period: "",
55
- features: ["Unlimited requests", "24/7 Dedicated support", "SSO & Audit logs", "SLA guarantees", "On-premise deployment"],
56
- action: "Contact Sales",
57
- variant: "outline"
58
- }
59
- ];
60
- function resolvePrice(price, isYearly) {
61
- return typeof price === "function" ? price(isYearly) : price;
62
- }
63
- function PricingTable({
64
- title = "Simple, transparent pricing",
65
- description = "Choose the plan that's right for you. Change or cancel anytime.",
66
- plans = defaultPlans,
67
- showBillingToggle = true,
68
- className
69
- }) {
70
- const t = useTranslations("blocks.pricingBlock");
71
- const [isYearly, setIsYearly] = useState(false);
72
- return /* @__PURE__ */ jsx("section", { className: className ?? "py-16 md:py-24", children: /* @__PURE__ */ jsxs("div", { className: "container mx-auto px-6 lg:px-8", children: [
73
- /* @__PURE__ */ jsxs("div", { className: "mb-12 text-center", children: [
74
- /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "mb-4 sm:text-4xl", children: title }),
75
- /* @__PURE__ */ jsx("p", { className: "mb-8 text-lg text-text-secondary", children: description }),
76
- !!showBillingToggle && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-4", children: [
77
- /* @__PURE__ */ jsx("span", { className: cn("text-sm font-medium", !isYearly ? "text-text-primary" : "text-text-tertiary"), children: t("monthly") }),
78
- /* @__PURE__ */ jsx(Switch, { checked: isYearly, onCheckedChange: setIsYearly, "aria-label": t("toggleYearlyBilling") }),
79
- /* @__PURE__ */ jsxs("span", { className: cn("text-sm font-medium", isYearly ? "text-text-primary" : "text-text-tertiary"), children: [
80
- t("yearly"),
81
- " ",
82
- /* @__PURE__ */ jsx("span", { className: "ml-1.5 text-accent", children: t("savePercent") })
83
- ] })
84
- ] })
85
- ] }),
86
- /* @__PURE__ */ jsx(StaggerChildren, { staggerMs: 120, className: "grid gap-8 md:grid-cols-3", children: plans.map((plan) => {
87
- const priceStr = resolvePrice(plan.price, isYearly);
88
- const card = /* @__PURE__ */ jsxs(
89
- Card,
90
- {
91
- interactive: true,
92
- className: cn(
93
- "flex flex-col relative overflow-hidden transition-all duration-300",
94
- plan.popular ? "border-accent shadow-lg shadow-accent/5 z-10" : "border-border/50 hover:border-border"
95
- ),
96
- children: [
97
- plan.popular && /* @__PURE__ */ jsx("div", { className: "absolute -top-4 left-0 ring-0 w-full flex justify-center", children: /* @__PURE__ */ jsx(Badge, { variant: "accent", className: "shadow-lg", children: t("mostPopular") }) }),
98
- /* @__PURE__ */ jsxs(CardHeader, { className: "pb-8 pt-8", children: [
99
- /* @__PURE__ */ jsx(CardTitle, { className: "text-xl font-semibold text-text-primary", children: plan.name }),
100
- /* @__PURE__ */ jsx("p", { className: "text-sm text-text-secondary", children: plan.description })
101
- ] }),
102
- /* @__PURE__ */ jsxs(CardContent, { className: "flex-1", children: [
103
- /* @__PURE__ */ jsxs("div", { className: "mb-8 flex items-baseline", children: [
104
- priceStr === "Custom" ? /* @__PURE__ */ jsx("span", { className: "text-4xl font-extrabold text-text-primary", children: priceStr }) : /* @__PURE__ */ jsxs("span", { className: "text-4xl font-extrabold text-text-primary tabular-nums", children: [
105
- "$",
106
- /* @__PURE__ */ jsx(CountingNumber, { number: parseInt(priceStr.slice(1), 10), inViewOnce: true })
107
- ] }),
108
- /* @__PURE__ */ jsx("span", { className: "ml-1.5 text-text-tertiary", children: plan.period })
109
- ] }),
110
- /* @__PURE__ */ jsx("ul", { className: "space-y-4", children: plan.features.map((feature) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-4 text-sm text-text-secondary", children: [
111
- /* @__PURE__ */ jsx("div", { className: cn("flex h-5 w-5 items-center justify-center rounded-full bg-primary/10 text-primary"), children: /* @__PURE__ */ jsx(CheckIcon, { size: 12 }) }),
112
- feature
113
- ] }, feature)) })
114
- ] }),
115
- /* @__PURE__ */ jsx(CardFooter, { children: /* @__PURE__ */ jsx(Button, { className: "w-full", variant: plan.variant, children: plan.action }) })
116
- ]
117
- },
118
- plan.name
119
- );
120
- return plan.popular ? /* @__PURE__ */ jsx(Shine, { enable: true, loop: true, loopDelay: 3e3, color: "var(--color-accent)", opacity: 0.12, duration: 1500, children: card }, plan.name) : /* @__PURE__ */ jsx("div", { children: card }, plan.name);
121
- }) })
122
- ] }) });
123
- }
124
-
125
- export { PricingTable };
26
+ import '../../chunk-QYZT24TS.js';
@@ -1,82 +1,15 @@
1
1
  'use client';
2
- import { StaggerChildren } from '../../chunk-DQPK2XRL.js';
3
- import { Heading } from '../../chunk-WI547C47.js';
4
- import { ScrollFadeIn } from '../../chunk-I23DDSU7.js';
5
- import { Card } from '../../chunk-AH6YSYYT.js';
2
+ export { ProcessFlowBlock } from '../../chunk-RMLS2QUC.js';
3
+ import '../../chunk-DQPK2XRL.js';
4
+ import '../../chunk-WI547C47.js';
5
+ import '../../chunk-I23DDSU7.js';
6
+ import '../../chunk-AH6YSYYT.js';
6
7
  import '../../chunk-PD2YEH3H.js';
7
8
  import '../../chunk-CRY67BIF.js';
8
9
  import '../../chunk-HJC6U46F.js';
9
- import { SparklesIcon } from '../../chunk-CGUCH322.js';
10
- import { SettingsIcon } from '../../chunk-OITJWGFV.js';
11
- import { SearchIcon } from '../../chunk-T6BRD7TS.js';
12
- import { Badge } from '../../chunk-S4JAHKOP.js';
10
+ import '../../chunk-CGUCH322.js';
11
+ import '../../chunk-OITJWGFV.js';
12
+ import '../../chunk-T6BRD7TS.js';
13
+ import '../../chunk-S4JAHKOP.js';
13
14
  import '../../chunk-ASKFAYYR.js';
14
- import { cn } from '../../chunk-QYZT24TS.js';
15
- import { jsx, jsxs } from 'react/jsx-runtime';
16
-
17
- var defaultSteps = [
18
- {
19
- title: "Discovery",
20
- description: "We analyze your workflows and identify automation opportunities.",
21
- icon: /* @__PURE__ */ jsx(SearchIcon, { size: 24, "aria-hidden": true })
22
- },
23
- {
24
- title: "Implementation",
25
- description: "Our team builds and integrates AI solutions tailored to your needs.",
26
- icon: /* @__PURE__ */ jsx(SettingsIcon, { size: 24, "aria-hidden": true })
27
- },
28
- {
29
- title: "Optimization",
30
- description: "Continuous monitoring and refinement to maximize ROI.",
31
- icon: /* @__PURE__ */ jsx(SparklesIcon, { size: 24, "aria-hidden": true })
32
- }
33
- ];
34
- function ProcessFlowBlock({
35
- title = "How it works",
36
- description,
37
- badge,
38
- steps = defaultSteps,
39
- className
40
- }) {
41
- const colsClass = steps.length === 4 ? "md:grid-cols-4" : "md:grid-cols-3";
42
- return /* @__PURE__ */ jsx("section", { className: cn("py-16 md:py-32", className), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-5xl px-6", children: [
43
- /* @__PURE__ */ jsx(ScrollFadeIn, { children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
44
- !!badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "mb-4", children: badge }),
45
- /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "text-4xl lg:text-5xl", children: title }),
46
- !!description && /* @__PURE__ */ jsx("p", { className: "mt-4 text-text-secondary", children: description })
47
- ] }) }),
48
- /* @__PURE__ */ jsxs("div", { className: "relative mt-8 md:mt-16", children: [
49
- /* @__PURE__ */ jsx(
50
- "div",
51
- {
52
- "aria-hidden": true,
53
- className: "absolute left-6 top-0 hidden h-full w-px border-l border-dashed border-border md:left-0 md:right-0 md:top-10 md:mx-auto md:block md:h-px md:w-full md:border-l-0 md:border-t"
54
- }
55
- ),
56
- /* @__PURE__ */ jsx(
57
- "div",
58
- {
59
- "aria-hidden": true,
60
- className: "absolute left-6 top-0 block h-full w-px border-l border-dashed border-border md:hidden"
61
- }
62
- ),
63
- /* @__PURE__ */ jsx(
64
- StaggerChildren,
65
- {
66
- staggerMs: 120,
67
- className: cn("relative grid gap-8", colsClass),
68
- children: steps.map((step, i) => /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center text-center", children: [
69
- /* @__PURE__ */ jsx("div", { className: "mb-4 flex size-10 items-center justify-center rounded-full bg-accent text-accent-foreground text-sm font-bold", children: String(i + 1).padStart(2, "0") }),
70
- /* @__PURE__ */ jsxs(Card, { className: "w-full", children: [
71
- step.icon && /* @__PURE__ */ jsx("div", { className: "mb-2 flex justify-center text-accent", children: step.icon }),
72
- /* @__PURE__ */ jsx(Heading, { level: 3, size: "title", className: "font-medium", children: step.title }),
73
- /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-text-secondary", children: step.description })
74
- ] })
75
- ] }, step.title))
76
- }
77
- )
78
- ] })
79
- ] }) });
80
- }
81
-
82
- export { ProcessFlowBlock };
15
+ import '../../chunk-QYZT24TS.js';
@@ -1,133 +1,19 @@
1
1
  'use client';
2
- import { Spinner } from '../../chunk-ZLSWCV55.js';
3
- import { PasswordInput } from '../../chunk-UJDEGCCZ.js';
4
- import { Field, FieldLabel } from '../../chunk-RX5EUODB.js';
2
+ export { ResetPasswordBlock } from '../../chunk-X6VXWEDO.js';
3
+ import '../../chunk-ZLSWCV55.js';
4
+ import '../../chunk-UJDEGCCZ.js';
5
+ import '../../chunk-RX5EUODB.js';
5
6
  import '../../chunk-AP3XXYAY.js';
6
7
  import '../../chunk-LIBXYD5Q.js';
7
- import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from '../../chunk-AH6YSYYT.js';
8
- import { Button } from '../../chunk-7KIDDF3I.js';
9
- import { m, scaleIn } from '../../chunk-PD2YEH3H.js';
8
+ import '../../chunk-AH6YSYYT.js';
9
+ import '../../chunk-7KIDDF3I.js';
10
+ import '../../chunk-PD2YEH3H.js';
10
11
  import '../../chunk-CRY67BIF.js';
11
12
  import '../../chunk-HJC6U46F.js';
12
- import { KeyIcon } from '../../chunk-QSU23VYZ.js';
13
+ import '../../chunk-QSU23VYZ.js';
13
14
  import '../../chunk-666N6OTL.js';
14
15
  import '../../chunk-FMH55OKV.js';
15
- import { CheckIcon } from '../../chunk-CXACRCZ4.js';
16
- import { XIcon } from '../../chunk-UIUMTURU.js';
16
+ import '../../chunk-CXACRCZ4.js';
17
+ import '../../chunk-UIUMTURU.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 RULE_TESTS = [
25
- { key: "minLength", test: (v) => v.length >= 8 },
26
- { key: "uppercase", test: (v) => /[A-Z]/.test(v) },
27
- { key: "number", test: (v) => /\d/.test(v) },
28
- { key: "special", test: (v) => /[^A-Za-z0-9]/.test(v) }
29
- ];
30
- function ResetPasswordBlock({
31
- className,
32
- onSubmit,
33
- onBackToLogin,
34
- title,
35
- description
36
- }) {
37
- const prefersReduced = useReducedMotion();
38
- const t = useTranslations("auth.reset");
39
- const [password, setPassword] = React.useState("");
40
- const [confirm, setConfirm] = React.useState("");
41
- const [loading, setLoading] = React.useState(false);
42
- const [error, setError] = React.useState("");
43
- const resolvedTitle = title ?? t("title");
44
- const resolvedDescription = description ?? t("description");
45
- const rules = React.useMemo(() => RULE_TESTS.map((r) => ({ label: t(`rules.${r.key}`), test: r.test })), [t]);
46
- const allRulesPass = rules.every((r) => r.test(password));
47
- const passwordsMatch = password === confirm && confirm.length > 0;
48
- const handleSubmit = (e) => {
49
- e.preventDefault();
50
- if (!allRulesPass) return;
51
- if (!passwordsMatch) {
52
- setError(t("passwordMismatch"));
53
- return;
54
- }
55
- setError("");
56
- setLoading(true);
57
- onSubmit?.(password);
58
- };
59
- return /* @__PURE__ */ jsx(m.div, { ...prefersReduced ? {} : scaleIn, className: cn("w-full max-w-sm mx-auto", className), children: /* @__PURE__ */ jsxs(Card, { children: [
60
- /* @__PURE__ */ jsxs(CardHeader, { className: "text-center", children: [
61
- /* @__PURE__ */ jsx("div", { className: "mx-auto mb-2", children: /* @__PURE__ */ jsx(KeyIcon, { size: 32, className: "text-text-secondary" }) }),
62
- /* @__PURE__ */ jsx(CardTitle, { className: "text-2xl", children: resolvedTitle }),
63
- /* @__PURE__ */ jsx(CardDescription, { children: resolvedDescription })
64
- ] }),
65
- /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("form", { noValidate: true, onSubmit: handleSubmit, className: "grid gap-4", children: [
66
- /* @__PURE__ */ jsxs(Field, { children: [
67
- /* @__PURE__ */ jsx(FieldLabel, { htmlFor: "new-password", children: t("newPassword") }),
68
- /* @__PURE__ */ jsx(
69
- PasswordInput,
70
- {
71
- name: "password",
72
- id: "new-password",
73
- value: password,
74
- onChange: (e) => setPassword(e.target.value),
75
- placeholder: t("newPasswordPlaceholder"),
76
- autoComplete: "new-password"
77
- }
78
- )
79
- ] }),
80
- /* @__PURE__ */ jsxs(Field, { children: [
81
- /* @__PURE__ */ jsx(FieldLabel, { htmlFor: "confirm-password", children: t("confirmPassword") }),
82
- /* @__PURE__ */ jsx(
83
- PasswordInput,
84
- {
85
- name: "confirmPassword",
86
- id: "confirm-password",
87
- value: confirm,
88
- onChange: (e) => setConfirm(e.target.value),
89
- placeholder: t("confirmPasswordPlaceholder"),
90
- autoComplete: "new-password"
91
- }
92
- )
93
- ] }),
94
- /* @__PURE__ */ jsxs("ul", { className: "space-y-1.5 text-xs", "aria-label": "Password requirements", children: [
95
- rules.map((rule) => {
96
- const pass = rule.test(password);
97
- return /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2", children: [
98
- pass ? /* @__PURE__ */ jsx(CheckIcon, { size: 14, className: "text-success shrink-0" }) : /* @__PURE__ */ jsx(XIcon, { size: 14, className: "text-text-tertiary shrink-0" }),
99
- /* @__PURE__ */ jsx("span", { className: pass ? "text-success" : "text-text-tertiary", children: rule.label })
100
- ] }, rule.label);
101
- }),
102
- /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2", children: [
103
- passwordsMatch ? /* @__PURE__ */ jsx(CheckIcon, { size: 14, className: "text-success shrink-0" }) : /* @__PURE__ */ jsx(XIcon, { size: 14, className: "text-text-tertiary shrink-0" }),
104
- /* @__PURE__ */ jsx("span", { className: passwordsMatch ? "text-success" : "text-text-tertiary", children: t("rules.match") })
105
- ] })
106
- ] }),
107
- !!error && /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-destructive", children: error }),
108
- /* @__PURE__ */ jsx(
109
- Button,
110
- {
111
- variant: "accent",
112
- className: "w-full",
113
- disabled: loading || !allRulesPass || !passwordsMatch,
114
- children: loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
115
- /* @__PURE__ */ jsx(Spinner, { className: "mr-2" }),
116
- t("pending")
117
- ] }) : t("submit")
118
- }
119
- )
120
- ] }) }),
121
- /* @__PURE__ */ jsx(CardFooter, { className: "justify-center", children: /* @__PURE__ */ jsx(
122
- "button",
123
- {
124
- type: "button",
125
- onClick: onBackToLogin,
126
- className: "text-sm text-text-tertiary hover:text-text-primary transition-colors",
127
- children: t("backToLogin")
128
- }
129
- ) })
130
- ] }) });
131
- }
132
-
133
- export { ResetPasswordBlock };
19
+ import '../../chunk-QYZT24TS.js';
@@ -7,5 +7,5 @@ interface SignUpBlockProps {
7
7
  onSubmit?: (e: FormEvent<HTMLFormElement>) => void;
8
8
  className?: string;
9
9
  }
10
- export declare function LoginPage({ title, description, showSocial, signInHref, onSubmit, className, }: SignUpBlockProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function SignUpBlock({ title, description, showSocial, signInHref, onSubmit, className, }: SignUpBlockProps): import("react/jsx-runtime").JSX.Element;
11
11
  export {};
@@ -14,7 +14,7 @@ import '../../chunk-QYZT24TS.js';
14
14
  import Link from 'next/link';
15
15
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
16
16
 
17
- function LoginPage({
17
+ function SignUpBlock({
18
18
  title = `Create a ${siteConfig.name} Account`,
19
19
  description = "Welcome! Create an account to get started",
20
20
  showSocial = true,
@@ -171,4 +171,4 @@ function LoginPage({
171
171
  ) });
172
172
  }
173
173
 
174
- export { LoginPage };
174
+ export { SignUpBlock };
@@ -1,23 +1,19 @@
1
- interface LogoItem {
1
+ export interface LogoItem {
2
2
  name: string;
3
3
  icon: (props: React.SVGProps<SVGSVGElement>) => React.ReactNode;
4
4
  }
5
- interface LogoCloudProps {
6
- logos?: LogoItem[];
7
- title?: string;
8
- className?: string;
9
- }
10
- export declare function LogoCloud({ logos, title, className, }?: LogoCloudProps): import("react/jsx-runtime").JSX.Element;
11
- interface SocialTestimonialItem {
5
+ export interface SocialTestimonialItem {
12
6
  quote: string;
13
7
  author: string;
14
8
  role: string;
15
9
  avatar: string;
16
10
  }
17
- interface SocialTestimonialsProps {
11
+ export type SocialProofBlockVariant = "logo-cloud" | "testimonials";
12
+ export interface SocialProofBlockProps {
13
+ variant?: SocialProofBlockVariant;
14
+ logos?: LogoItem[];
18
15
  title?: string;
19
16
  testimonials?: SocialTestimonialItem[];
20
17
  className?: string;
21
18
  }
22
- export declare function Testimonials({ title, testimonials, className, }?: SocialTestimonialsProps): import("react/jsx-runtime").JSX.Element;
23
- export {};
19
+ export declare function SocialProofBlock({ variant, ...props }: SocialProofBlockProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  'use client';
2
- import { Shine } from '../../chunk-DARC2ACH.js';
2
+ export { SocialProofBlock } from '../../chunk-OHOOQUVJ.js';
3
+ import '../../chunk-DARC2ACH.js';
3
4
  import '../../chunk-G5EO22OR.js';
4
5
  import '../../chunk-ANBJ2OLC.js';
5
6
  import '../../chunk-LV4LBWCS.js';
@@ -8,115 +9,15 @@ import '../../chunk-F3T2U7YL.js';
8
9
  import '../../chunk-6DYFX5IR.js';
9
10
  import '../../chunk-EB5PYS7Q.js';
10
11
  import '../../chunk-OHX2LFAH.js';
11
- import { ShimmeringText } from '../../chunk-SGI25ZJ6.js';
12
- import { StaggerChildren } from '../../chunk-DQPK2XRL.js';
12
+ import '../../chunk-SGI25ZJ6.js';
13
+ import '../../chunk-DQPK2XRL.js';
13
14
  import '../../chunk-ULLTRLBD.js';
14
15
  import '../../chunk-4O6L5YWT.js';
15
- import { Heading } from '../../chunk-WI547C47.js';
16
- import { siteConfig } from '../../chunk-A7NUWD76.js';
17
- import { Card, CardContent } from '../../chunk-AH6YSYYT.js';
18
- import { Avatar, AvatarImage, AvatarFallback } from '../../chunk-NAAU5IWU.js';
16
+ import '../../chunk-WI547C47.js';
17
+ import '../../chunk-A7NUWD76.js';
18
+ import '../../chunk-AH6YSYYT.js';
19
+ import '../../chunk-NAAU5IWU.js';
19
20
  import '../../chunk-PD2YEH3H.js';
20
21
  import '../../chunk-CRY67BIF.js';
21
22
  import '../../chunk-HJC6U46F.js';
22
23
  import '../../chunk-QYZT24TS.js';
23
- import { jsx, jsxs } from 'react/jsx-runtime';
24
-
25
- var defaultLogos = [
26
- { name: "Vercel", icon: (props) => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", ...props, children: /* @__PURE__ */ jsx("path", { d: "M12 2L22 22H2L12 2Z", fill: "currentColor", stroke: "none" }) }) },
27
- { name: "Stripe", icon: (props) => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", ...props, children: /* @__PURE__ */ jsx("path", { d: "M22 12h-4l-3 9L9 3l-3 9H2" }) }) },
28
- { name: "OpenAI", icon: (props) => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", ...props, children: [
29
- /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
30
- /* @__PURE__ */ jsx("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" })
31
- ] }) },
32
- { name: siteConfig.name, icon: (props) => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", ...props, children: [
33
- /* @__PURE__ */ jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }),
34
- /* @__PURE__ */ jsx("path", { d: "M9 9h6v6H9z" })
35
- ] }) },
36
- { name: "Next.js", icon: (props) => /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", ...props, children: [
37
- /* @__PURE__ */ jsx("path", { d: "M21 8v8a5 5 0 0 1-5 5H8a5 5 0 0 1-5-5V8a5 5 0 0 1 5-5h8a5 5 0 0 1 5 5z" }),
38
- /* @__PURE__ */ jsx("path", { d: "M10 12h4" })
39
- ] }) }
40
- ];
41
- function LogoCloud({
42
- logos = defaultLogos,
43
- title = "Trusted by innovative teams",
44
- className
45
- } = {}) {
46
- return /* @__PURE__ */ jsx("div", { className: className ?? "w-full py-12 lg:py-16", children: /* @__PURE__ */ jsxs("div", { className: "container mx-auto px-4 text-center", children: [
47
- /* @__PURE__ */ jsx("p", { className: "mb-8 text-sm font-medium text-text-tertiary uppercase tracking-wider", children: title }),
48
- /* @__PURE__ */ jsx(StaggerChildren, { staggerMs: 60, distance: 12, className: "flex flex-wrap gap-8 items-center justify-center opacity-70", children: logos.map((logo) => /* @__PURE__ */ jsxs(
49
- "div",
50
- {
51
- className: "group flex items-center justify-center transition-all duration-300 hover:opacity-100 hover:scale-110",
52
- children: [
53
- /* @__PURE__ */ jsx(logo.icon, { className: "h-8 w-8 text-text-tertiary transition-colors group-hover:text-primary group-hover:drop-shadow-[0_0_8px_rgb(var(--color-primary)/0.5)]" }),
54
- /* @__PURE__ */ jsx("span", { className: "ml-2 text-lg font-semibold text-text-tertiary group-hover:text-text-primary hidden md:inline-block", children: logo.name })
55
- ]
56
- },
57
- logo.name
58
- )) })
59
- ] }) });
60
- }
61
- var defaultSocialTestimonials = [
62
- {
63
- quote: "Seed has completely transformed how we build AI interfaces. The depth and realism are unmatched.",
64
- author: "Sarah Chen",
65
- role: "Product Designer @ NeuralNet",
66
- avatar: "SC"
67
- },
68
- {
69
- quote: "The glassmorphism effects are incredibly performant. It feels like a native app running in the browser.",
70
- author: "Marcus Rodriguez",
71
- role: "Frontend Lead @ FutureScale",
72
- avatar: "MR"
73
- },
74
- {
75
- quote: "Finally, a design system that understands what 'futuristic' actually means. No more flat, boring SaaS UI.",
76
- author: "Elena Kowalski",
77
- role: "CTO @ CyberSystems",
78
- avatar: "EK"
79
- },
80
- {
81
- quote: "Development velocity increased by 3x. The components are so easy to compose.",
82
- author: "David Park",
83
- role: "Indie Hacker",
84
- avatar: "DP"
85
- }
86
- ];
87
- function Testimonials({
88
- title = "Loved by Builders",
89
- testimonials = defaultSocialTestimonials,
90
- className
91
- } = {}) {
92
- return /* @__PURE__ */ jsx("section", { className: className ?? "py-16 md:py-24 relative overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "container mx-auto px-6 lg:px-8", children: [
93
- /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "text-center mb-12", children: /* @__PURE__ */ jsx(
94
- ShimmeringText,
95
- {
96
- text: title,
97
- color: "var(--color-text-primary)",
98
- shimmeringColor: "var(--color-accent)",
99
- duration: 2
100
- }
101
- ) }),
102
- /* @__PURE__ */ jsx(StaggerChildren, { staggerMs: 100, direction: "up", distance: 20, className: "flex flex-wrap justify-center gap-6", children: testimonials.map((t, i) => /* @__PURE__ */ jsx(Shine, { enableOnHover: true, loop: true, loopDelay: 200, color: "var(--color-accent)", opacity: 0.15, children: /* @__PURE__ */ jsx(Card, { interactive: true, className: "w-full max-w-md", children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
103
- /* @__PURE__ */ jsxs("p", { className: "mb-4 text-lg text-text-secondary leading-relaxed", children: [
104
- '"',
105
- t.quote,
106
- '"'
107
- ] }),
108
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
109
- /* @__PURE__ */ jsxs(Avatar, { className: "h-10 w-10 border border-primary/20", children: [
110
- /* @__PURE__ */ jsx(AvatarImage, { src: `https://api.dicebear.com/7.x/avataaars/svg?seed=${t.author}` }),
111
- /* @__PURE__ */ jsx(AvatarFallback, { children: t.avatar })
112
- ] }),
113
- /* @__PURE__ */ jsxs("div", { children: [
114
- /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-text-primary", children: t.author }),
115
- /* @__PURE__ */ jsx("div", { className: "text-xs text-text-tertiary", children: t.role })
116
- ] })
117
- ] })
118
- ] }) }) }, i)) })
119
- ] }) });
120
- }
121
-
122
- export { LogoCloud, Testimonials };
@@ -17,5 +17,5 @@ interface StatsGenericProps {
17
17
  stats?: StatItem[];
18
18
  className?: string;
19
19
  }
20
- export declare function StatsGeneric({ stats, className, }: StatsGenericProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function StatsBlock({ stats, className, }: StatsGenericProps): import("react/jsx-runtime").JSX.Element;
21
21
  export {};
@@ -157,7 +157,7 @@ var defaultStats = [
157
157
  periodText: "since last hour"
158
158
  }
159
159
  ];
160
- function StatsGeneric({
160
+ function StatsBlock({
161
161
  stats = defaultStats,
162
162
  className
163
163
  }) {
@@ -177,4 +177,4 @@ function StatsGeneric({
177
177
  )) });
178
178
  }
179
179
 
180
- export { StatsGeneric };
180
+ export { StatsBlock };
@@ -10,5 +10,5 @@ interface StatsSectionProps {
10
10
  stats?: StatItem[];
11
11
  className?: string;
12
12
  }
13
- export declare function StatsSection({ title, description, stats, className, }: StatsSectionProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function StatsMarketingBlock({ title, description, stats, className, }: StatsSectionProps): import("react/jsx-runtime").JSX.Element;
14
14
  export {};