@vadimcomanescu/nadicode-design-system 2.0.6 → 2.0.8

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 (339) hide show
  1. package/.agents/skills/seed/SKILL.md +17 -8
  2. package/.agents/skills/seed/contract.md +5 -4
  3. package/.agents/skills/seed/intent-map.md +3 -3
  4. package/.agents/skills/seed/recipes/agents-chat.md +44 -20
  5. package/.agents/skills/seed/recipes/marketing-shell.md +10 -19
  6. package/.agents/skills/seed/recipes/navigation-shell.md +5 -5
  7. package/.agents/skills/seed/recipes/service-detail.md +1 -1
  8. package/.agents/skills/seed/references/blocks.md +30 -26
  9. package/.agents/skills/seed/references/brand-override.md +3 -1
  10. package/.agents/skills/seed/references/components.md +22 -2
  11. package/.agents/skills/seed/references/dashboard-patterns.md +12 -12
  12. package/.agents/skills/seed/references/nextjs.md +20 -80
  13. package/.agents/skills/seed/references/tokens.md +57 -248
  14. package/README.md +43 -215
  15. package/contracts/block-props-schemas.json +2186 -0
  16. package/contracts/component-props-schemas.json +8322 -0
  17. package/contracts/consumer-contract.json +178 -0
  18. package/contracts/consumer-intent-map.json +707 -0
  19. package/contracts/message-catalog-contract.json +820 -0
  20. package/contracts/page-kit-props-schemas.json +1894 -0
  21. package/contracts/public-surface-registry.json +6162 -0
  22. package/contracts/public-surface-registry.schema.json +227 -0
  23. package/contracts/release-governance-baseline.json +850 -0
  24. package/contracts/spec-manifest.json +46 -0
  25. package/css/tokens.css +300 -122
  26. package/dist/catalog.json +2166 -162
  27. package/dist/chunk-2BADJLMV.js +117 -0
  28. package/dist/chunk-35EX5FP5.js +106 -0
  29. package/dist/chunk-4IGBBIYW.js +47 -0
  30. package/dist/chunk-4WPZ6T7V.js +186 -0
  31. package/dist/chunk-5PZ4VR2D.js +142 -0
  32. package/dist/chunk-5UESKK6S.js +76 -0
  33. package/dist/chunk-7A2RXKGH.js +205 -0
  34. package/dist/{chunk-DF47R6LN.js → chunk-AWIG4QN6.js} +9 -9
  35. package/dist/chunk-AYWL4IYM.js +67 -0
  36. package/dist/chunk-C7WHMSF3.js +114 -0
  37. package/dist/{chunk-SV3KZ6CB.js → chunk-DSMGCFMJ.js} +7 -2
  38. package/dist/{chunk-4K3PATUT.js → chunk-EEL4RAPC.js} +13 -1
  39. package/dist/{chunk-ILIHQ2KZ.js → chunk-EK43W2Y6.js} +16 -10
  40. package/dist/chunk-FV2G6SAF.js +134 -0
  41. package/dist/chunk-FX23F33E.js +57 -0
  42. package/dist/chunk-GJPTPLCQ.js +52 -0
  43. package/dist/chunk-HJ3A2YNO.js +163 -0
  44. package/dist/chunk-HJZRSPWB.js +38 -0
  45. package/dist/chunk-HWHJ6IRQ.js +78 -0
  46. package/dist/chunk-HZERHGBT.js +77 -0
  47. package/dist/{chunk-AUSYEAIJ.js → chunk-I66XWYSS.js} +32 -8
  48. package/dist/chunk-IXQGKJU4.js +183 -0
  49. package/dist/chunk-JDJY4ABS.js +60 -0
  50. package/dist/chunk-K7NQ6ZAW.js +84 -0
  51. package/dist/chunk-KWILREVQ.js +147 -0
  52. package/dist/chunk-LCKLZ4XK.js +60 -0
  53. package/dist/{chunk-WI37ZYIF.js → chunk-M4XKO45H.js} +13 -1
  54. package/dist/chunk-NEHCPO53.js +44 -0
  55. package/dist/chunk-OJ7OO3QB.js +269 -0
  56. package/dist/{chunk-ZHTQF2KI.js → chunk-OSNTB6RY.js} +29 -22
  57. package/dist/{chunk-GMMPLZLC.js → chunk-PDSQC6VE.js} +1 -1
  58. package/dist/chunk-QIHA7S3A.js +36 -0
  59. package/dist/chunk-QQOWC53X.js +98 -0
  60. package/dist/chunk-RKQPU75I.js +126 -0
  61. package/dist/chunk-U4GYSYGN.js +120 -0
  62. package/dist/chunk-UGV45DH3.js +18 -0
  63. package/dist/chunk-VBZQ4DBE.js +52 -0
  64. package/dist/{chunk-LQLFA2EL.js → chunk-VDONTZZX.js} +2 -2
  65. package/dist/chunk-VEO56RH4.js +105 -0
  66. package/dist/chunk-VJ5VD4UT.js +91 -0
  67. package/dist/{chunk-RWNJ54CI.js → chunk-VN475YZS.js} +1 -1
  68. package/dist/chunk-VNNAL4A6.js +110 -0
  69. package/dist/chunk-VZCB4APK.js +94 -0
  70. package/dist/chunk-W7FXDRQJ.js +94 -0
  71. package/dist/{chunk-5I3FWRC5.js → chunk-WOYBVPXK.js} +10 -10
  72. package/dist/chunk-WST5NLLC.js +73 -0
  73. package/dist/chunk-X6VXWEDO.js +125 -0
  74. package/dist/chunk-XTASI4IY.js +60 -0
  75. package/dist/chunk-Z233ZQZE.js +33 -0
  76. package/dist/chunk-ZKLB5N3Q.js +110 -0
  77. package/dist/chunk-ZM2NODUK.js +39 -0
  78. package/dist/components/blocks/AccountLockedBlock.js +7 -57
  79. package/dist/components/blocks/ActivityFeedBlock.js +6 -39
  80. package/dist/components/blocks/AgentConversationBlock.d.ts +6 -1
  81. package/dist/components/blocks/AgentConversationBlock.js +45 -71
  82. package/dist/components/blocks/AgentRunOverviewBlock.js +1 -1
  83. package/dist/components/blocks/AgentWorkbenchBlock.d.ts +5 -1
  84. package/dist/components/blocks/AgentWorkbenchBlock.js +47 -46
  85. package/dist/components/blocks/AudioVisualizerBlock.d.ts +1 -1
  86. package/dist/components/blocks/AudioVisualizerBlock.js +2 -2
  87. package/dist/components/blocks/AuthLayout.js +2 -2
  88. package/dist/components/blocks/AuthSuccessBlock.js +5 -60
  89. package/dist/components/blocks/BannerBlock.js +38 -38
  90. package/dist/components/blocks/BarChartBlock.d.ts +1 -1
  91. package/dist/components/blocks/BarChartBlock.js +2 -2
  92. package/dist/components/blocks/CallToActionBlock.d.ts +1 -1
  93. package/dist/components/blocks/CallToActionBlock.js +7 -53
  94. package/dist/components/blocks/ChangelogBlock.js +45 -142
  95. package/dist/components/blocks/ChartBlock.js +38 -38
  96. package/dist/components/blocks/ChartCollectionBlock.js +3 -3
  97. package/dist/components/blocks/ChatLayout.d.ts +4 -1
  98. package/dist/components/blocks/ChatLayout.js +39 -39
  99. package/dist/components/blocks/CodeBlock.js +7 -60
  100. package/dist/components/blocks/ComparisonBlock.js +9 -94
  101. package/dist/components/blocks/ContactBlock.js +11 -120
  102. package/dist/components/blocks/CreateBlock.js +39 -39
  103. package/dist/components/blocks/DataGridBlock.js +40 -40
  104. package/dist/components/blocks/DirectoryBlock.js +43 -43
  105. package/dist/components/blocks/FAQBlock.js +44 -82
  106. package/dist/components/blocks/FeatureBlock.d.ts +10 -14
  107. package/dist/components/blocks/FeatureBlock.js +54 -196
  108. package/dist/components/blocks/FeatureGridBlock.d.ts +1 -1
  109. package/dist/components/blocks/FeatureGridBlock.js +2 -2
  110. package/dist/components/blocks/FooterBlock.d.ts +2 -2
  111. package/dist/components/blocks/FooterBlock.js +11 -67
  112. package/dist/components/blocks/GalleryBlock.js +38 -38
  113. package/dist/components/blocks/HeaderBlock.d.ts +2 -2
  114. package/dist/components/blocks/HeaderBlock.js +39 -39
  115. package/dist/components/blocks/HeatmapChartBlock.d.ts +1 -1
  116. package/dist/components/blocks/HeatmapChartBlock.js +1 -1
  117. package/dist/components/blocks/HeroBlock.d.ts +6 -3
  118. package/dist/components/blocks/HeroBlock.js +53 -236
  119. package/dist/components/blocks/HeroSectionBlock.d.ts +1 -1
  120. package/dist/components/blocks/HeroSectionBlock.js +59 -63
  121. package/dist/components/blocks/IntegrationsBlock.d.ts +1 -1
  122. package/dist/components/blocks/IntegrationsBlock.js +42 -42
  123. package/dist/components/blocks/InteractiveAreaChartBlock.d.ts +1 -1
  124. package/dist/components/blocks/InteractiveAreaChartBlock.js +40 -40
  125. package/dist/components/blocks/KanbanDemoBlock.js +3 -3
  126. package/dist/components/blocks/LoginBlock.js +2 -2
  127. package/dist/components/blocks/LogoCloud.js +2 -13
  128. package/dist/components/blocks/NavUser.js +42 -42
  129. package/dist/components/blocks/NewsletterBlock.js +11 -84
  130. package/dist/components/blocks/NotFoundBlock.js +41 -41
  131. package/dist/components/blocks/OnboardingBlock.js +38 -38
  132. package/dist/components/blocks/PasswordRecoveryBlock.js +14 -142
  133. package/dist/components/blocks/PricingBlock.d.ts +1 -1
  134. package/dist/components/blocks/PricingBlock.js +13 -112
  135. package/dist/components/blocks/ProcessFlowBlock.js +10 -77
  136. package/dist/components/blocks/ResetPasswordBlock.js +11 -125
  137. package/dist/components/blocks/SettingsLayout.js +42 -42
  138. package/dist/components/blocks/SignUpBlock.d.ts +1 -1
  139. package/dist/components/blocks/SignUpBlock.js +3 -3
  140. package/dist/components/blocks/SocialProofBlock.d.ts +7 -11
  141. package/dist/components/blocks/SocialProofBlock.js +10 -108
  142. package/dist/components/blocks/StatsBlock.d.ts +1 -1
  143. package/dist/components/blocks/StatsBlock.js +40 -40
  144. package/dist/components/blocks/StatsMarketingBlock.d.ts +1 -1
  145. package/dist/components/blocks/StatsMarketingBlock.js +7 -38
  146. package/dist/components/blocks/TeamBlock.d.ts +1 -1
  147. package/dist/components/blocks/TeamBlock.js +4 -52
  148. package/dist/components/blocks/TestimonialsBlock.d.ts +1 -1
  149. package/dist/components/blocks/TestimonialsBlock.js +5 -133
  150. package/dist/components/blocks/TwoFactorChallengeBlock.js +46 -131
  151. package/dist/components/blocks/TwoFactorSetupBlock.js +53 -220
  152. package/dist/components/blocks/UsageDonutBlock.d.ts +1 -1
  153. package/dist/components/blocks/UsageDonutBlock.js +2 -2
  154. package/dist/components/blocks/VoiceAgentCard.d.ts +3 -1
  155. package/dist/components/blocks/VoiceAgentCard.js +7 -76
  156. package/dist/components/blocks/WizardBlock.js +39 -39
  157. package/dist/components/blocks/user/InviteUserModal.js +38 -38
  158. package/dist/components/logos/index.js +2 -2
  159. package/dist/components/page-kits/AccountLockedPageKit.d.ts +10 -0
  160. package/dist/components/page-kits/AccountLockedPageKit.js +48 -0
  161. package/dist/components/page-kits/AgentsChatPageKit.d.ts +46 -0
  162. package/dist/components/page-kits/AgentsChatPageKit.js +290 -0
  163. package/dist/components/page-kits/AnalyticsPageKit.d.ts +49 -0
  164. package/dist/components/page-kits/AnalyticsPageKit.js +277 -0
  165. package/dist/components/page-kits/BlogContentPageKit.d.ts +64 -0
  166. package/dist/components/page-kits/BlogContentPageKit.js +296 -0
  167. package/dist/components/page-kits/CheckoutPageKit.d.ts +36 -0
  168. package/dist/components/page-kits/CheckoutPageKit.js +209 -0
  169. package/dist/components/page-kits/CompanySuitePageKit.d.ts +25 -0
  170. package/dist/components/page-kits/CompanySuitePageKit.js +240 -0
  171. package/dist/components/page-kits/CrudFormPageKit.d.ts +54 -0
  172. package/dist/components/page-kits/CrudFormPageKit.js +138 -0
  173. package/dist/components/page-kits/CrudListDetailPageKit.d.ts +70 -0
  174. package/dist/components/page-kits/CrudListDetailPageKit.js +138 -0
  175. package/dist/components/page-kits/DashboardPageKit.d.ts +39 -0
  176. package/dist/components/page-kits/DashboardPageKit.js +284 -0
  177. package/dist/components/page-kits/ErrorPageKit.d.ts +22 -0
  178. package/dist/components/page-kits/ErrorPageKit.js +55 -0
  179. package/dist/components/page-kits/KanbanBoardPageKit.d.ts +31 -0
  180. package/dist/components/page-kits/KanbanBoardPageKit.js +305 -0
  181. package/dist/components/page-kits/LandingPageKit.d.ts +29 -0
  182. package/dist/components/page-kits/LandingPageKit.js +222 -0
  183. package/dist/components/page-kits/LoginPageKit.d.ts +16 -0
  184. package/dist/components/page-kits/LoginPageKit.js +43 -0
  185. package/dist/components/page-kits/MarketingShellPageKit.d.ts +21 -0
  186. package/dist/components/page-kits/MarketingShellPageKit.js +131 -0
  187. package/dist/components/page-kits/NavigationShellPageKit.d.ts +41 -0
  188. package/dist/components/page-kits/NavigationShellPageKit.js +132 -0
  189. package/dist/components/page-kits/OnboardingPageKit.d.ts +26 -0
  190. package/dist/components/page-kits/OnboardingPageKit.js +248 -0
  191. package/dist/components/page-kits/PricingPageKit.d.ts +41 -0
  192. package/dist/components/page-kits/PricingPageKit.js +279 -0
  193. package/dist/components/page-kits/ProfileSettingsPageKit.d.ts +50 -0
  194. package/dist/components/page-kits/ProfileSettingsPageKit.js +171 -0
  195. package/dist/components/page-kits/RecoveryPageKit.d.ts +17 -0
  196. package/dist/components/page-kits/RecoveryPageKit.js +58 -0
  197. package/dist/components/page-kits/ResetPageKit.d.ts +14 -0
  198. package/dist/components/page-kits/ResetPageKit.js +52 -0
  199. package/dist/components/page-kits/ServiceSuitePageKit.d.ts +25 -0
  200. package/dist/components/page-kits/ServiceSuitePageKit.js +321 -0
  201. package/dist/components/page-kits/SettingsPageKit.d.ts +27 -0
  202. package/dist/components/page-kits/SettingsPageKit.js +11 -0
  203. package/dist/components/page-kits/SignupPageKit.d.ts +15 -0
  204. package/dist/components/page-kits/SignupPageKit.js +41 -0
  205. package/dist/components/page-kits/SuccessPageKit.d.ts +15 -0
  206. package/dist/components/page-kits/SuccessPageKit.js +146 -0
  207. package/dist/components/page-kits/TeamSettingsPageKit.d.ts +50 -0
  208. package/dist/components/page-kits/TeamSettingsPageKit.js +297 -0
  209. package/dist/components/page-kits/TwoFactorPageKit.d.ts +16 -0
  210. package/dist/components/page-kits/TwoFactorPageKit.js +156 -0
  211. package/dist/components/page-kits/VerifyEmailPageKit.d.ts +15 -0
  212. package/dist/components/page-kits/VerifyEmailPageKit.js +146 -0
  213. package/dist/components/page-kits/VoiceAgentsPageKit.d.ts +35 -0
  214. package/dist/components/page-kits/VoiceAgentsPageKit.js +250 -0
  215. package/dist/components/ui/Accordion.js +38 -38
  216. package/dist/components/ui/AgentMessageBubble.d.ts +20 -4
  217. package/dist/components/ui/AgentMessageBubble.js +39 -39
  218. package/dist/components/ui/AgentStatus.d.ts +1 -1
  219. package/dist/components/ui/AgentStatus.js +5 -10
  220. package/dist/components/ui/AgentTerminal.d.ts +4 -1
  221. package/dist/components/ui/AgentTerminal.js +3 -1
  222. package/dist/components/ui/AgentTimeline.d.ts +2 -2
  223. package/dist/components/ui/AgentTimeline.js +15 -6
  224. package/dist/components/ui/AnimatedDialog.js +38 -38
  225. package/dist/components/ui/AnimatedSheet.js +38 -38
  226. package/dist/components/ui/ApprovalCard.js +1 -1
  227. package/dist/components/ui/AudioWaveform.js +2 -76
  228. package/dist/components/ui/AvatarUpload.js +1 -1
  229. package/dist/components/ui/Breadcrumb.js +41 -143
  230. package/dist/components/ui/Calendar.js +38 -38
  231. package/dist/components/ui/Carousel.js +38 -38
  232. package/dist/components/ui/ChartCard.js +5 -38
  233. package/dist/components/ui/ChatActions.d.ts +14 -0
  234. package/dist/components/ui/ChatActions.js +52 -0
  235. package/dist/components/ui/ChatBranch.d.ts +18 -0
  236. package/dist/components/ui/ChatBranch.js +84 -0
  237. package/dist/components/ui/ChatChainOfThought.d.ts +25 -0
  238. package/dist/components/ui/ChatChainOfThought.js +99 -0
  239. package/dist/components/ui/ChatConfirmation.d.ts +37 -0
  240. package/dist/components/ui/ChatConfirmation.js +115 -0
  241. package/dist/components/ui/ChatGreeting.d.ts +18 -0
  242. package/dist/components/ui/ChatGreeting.js +80 -0
  243. package/dist/components/ui/ChatMessage.d.ts +40 -0
  244. package/dist/components/ui/ChatMessage.js +96 -0
  245. package/dist/components/ui/ChatPlan.d.ts +29 -0
  246. package/dist/components/ui/ChatPlan.js +86 -0
  247. package/dist/components/ui/ChatPromptInput.d.ts +32 -0
  248. package/dist/components/ui/ChatPromptInput.js +193 -0
  249. package/dist/components/ui/ChatPromptInputAttachments.d.ts +9 -0
  250. package/dist/components/ui/ChatPromptInputAttachments.js +145 -0
  251. package/dist/components/ui/ChatQueue.d.ts +32 -0
  252. package/dist/components/ui/ChatQueue.js +93 -0
  253. package/dist/components/ui/ChatReasoning.d.ts +20 -0
  254. package/dist/components/ui/ChatReasoning.js +91 -0
  255. package/dist/components/ui/ChatResponse.d.ts +14 -0
  256. package/dist/components/ui/ChatResponse.js +25 -0
  257. package/dist/components/ui/ChatShimmer.d.ts +23 -0
  258. package/dist/components/ui/ChatShimmer.js +6 -0
  259. package/dist/components/ui/ChatSources.d.ts +30 -0
  260. package/dist/components/ui/ChatSources.js +113 -0
  261. package/dist/components/ui/ChatSuggestion.d.ts +13 -0
  262. package/dist/components/ui/ChatSuggestion.js +41 -0
  263. package/dist/components/ui/ChatThinkingMessage.d.ts +12 -0
  264. package/dist/components/ui/ChatThinkingMessage.js +55 -0
  265. package/dist/components/ui/ChatToolCall.d.ts +41 -0
  266. package/dist/components/ui/ChatToolCall.js +192 -0
  267. package/dist/components/ui/CheckStatus.d.ts +1 -1
  268. package/dist/components/ui/Checkbox.js +38 -38
  269. package/dist/components/ui/CheckoutForm.js +38 -38
  270. package/dist/components/ui/CheckoutFormDemo.js +43 -44
  271. package/dist/components/ui/Combobox.js +38 -38
  272. package/dist/components/ui/Command.js +38 -38
  273. package/dist/components/ui/ContextMenu.js +38 -38
  274. package/dist/components/ui/Conversation.d.ts +21 -0
  275. package/dist/components/ui/Conversation.js +196 -0
  276. package/dist/components/ui/ConversationThread.d.ts +8 -2
  277. package/dist/components/ui/ConversationThread.js +34 -16
  278. package/dist/components/ui/DataFreshness.js +2 -73
  279. package/dist/components/ui/DataTable.js +40 -40
  280. package/dist/components/ui/DatePicker.js +38 -38
  281. package/dist/components/ui/DateRangePicker.js +38 -38
  282. package/dist/components/ui/Dialog.js +38 -38
  283. package/dist/components/ui/DropdownMenu.js +39 -39
  284. package/dist/components/ui/FileUpload.js +38 -38
  285. package/dist/components/ui/InputOTP.js +38 -38
  286. package/dist/components/ui/KanbanBoard.js +2 -2
  287. package/dist/components/ui/LanguageSwitcher.js +38 -38
  288. package/dist/components/ui/Menubar.js +38 -38
  289. package/dist/components/ui/MouseEffect.js +1 -1
  290. package/dist/components/ui/NativeSelect.js +2 -18
  291. package/dist/components/ui/NavigationMenu.js +38 -38
  292. package/dist/components/ui/NotificationCenter.js +38 -38
  293. package/dist/components/ui/Pagination.js +42 -153
  294. package/dist/components/ui/RadioGroup.js +38 -38
  295. package/dist/components/ui/Resizable.js +38 -38
  296. package/dist/components/ui/SearchCommand.js +38 -38
  297. package/dist/components/ui/Select.js +38 -38
  298. package/dist/components/ui/SettingsModal.js +38 -38
  299. package/dist/components/ui/ShaderBackground.js +2 -2
  300. package/dist/components/ui/Sheet.js +38 -38
  301. package/dist/components/ui/Sidebar.js +41 -41
  302. package/dist/components/ui/StyleToggle.js +1 -1
  303. package/dist/components/ui/TagInput.js +38 -38
  304. package/dist/components/ui/ThemeToggle.js +39 -39
  305. package/dist/components/ui/ThinkingIndicator.d.ts +3 -1
  306. package/dist/components/ui/ThinkingIndicator.js +2 -1
  307. package/dist/components/ui/Toast.js +38 -38
  308. package/dist/components/ui/Toaster.js +38 -38
  309. package/dist/components/ui/ToolCallCard.d.ts +1 -1
  310. package/dist/components/ui/ToolCallCard.js +5 -1
  311. package/dist/components/ui/TreeView.js +38 -38
  312. package/dist/components/ui/charts/index.js +1 -1
  313. package/dist/components/ui/icons/index.js +38 -38
  314. package/dist/components/ui/text-effects/index.js +2 -2
  315. package/dist/hooks/use-scroll-to-bottom.d.ts +13 -0
  316. package/dist/hooks/use-scroll-to-bottom.js +2 -0
  317. package/dist/hooks/use-shader-preset.js +2 -2
  318. package/dist/index.js +43 -43
  319. package/dist/internal/local-image-assets.d.ts +12 -0
  320. package/dist/lib/shader-presets.js +1 -1
  321. package/dist/lib/tokens.config.d.ts +19 -0
  322. package/dist/messages/en.js +1 -1
  323. package/dist/messages/it.js +1 -1
  324. package/dist/test/PublicSeedTestProvider.js +2 -2
  325. package/dist/test/simulate-ime-composition.d.ts +54 -0
  326. package/dist/test/simulate-ime-composition.js +55 -0
  327. package/eslint-rules/nadicode/config.js +2 -0
  328. package/eslint-rules/nadicode/index.js +4 -0
  329. package/eslint-rules/nadicode/rules/no-deprecated-ds-import.js +77 -0
  330. package/eslint-rules/nadicode/rules/no-forbidden-page-kit-import.js +99 -0
  331. package/eslint-rules/nadicode/rules/no-unregistered-glass.js +2 -0
  332. package/package.json +895 -686
  333. package/scripts/ds-check.mjs +102 -73
  334. package/src/lib/tokens.config.js +63 -41
  335. package/dist/chunk-MLUSJTS2.js +0 -107
  336. package/dist/{chunk-5DKCZWC6.js → chunk-CQEUNASC.js} +1 -1
  337. package/dist/{chunk-4HRVRW2X.js → chunk-J2DCQDXO.js} +2 -2
  338. package/dist/{chunk-6MFAZU4B.js → chunk-RGE5OQMZ.js} +1 -1
  339. package/dist/{chunk-PJNHVPHF.js → chunk-TYP2MR3Q.js} +1 -1
@@ -0,0 +1,134 @@
1
+ import { createAvatarDataUri, LOCAL_NIKE_LOGO_SRC } from './chunk-QQOWC53X.js';
2
+ import { Heading } from './chunk-WI547C47.js';
3
+ import { Card, CardHeader, CardContent } from './chunk-AH6YSYYT.js';
4
+ import { Avatar, AvatarImage, AvatarFallback } from './chunk-NAAU5IWU.js';
5
+ import * as React from 'react';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var defaultTestimonials = [
9
+ {
10
+ quote: "Tailus has transformed the way I develop web applications. Their extensive collection of UI components, blocks, and templates has significantly accelerated my workflow. The flexibility to customize every aspect allows me to create unique user experiences. Tailus is a game-changer for modern web development",
11
+ author: "M\xE9schac Irung",
12
+ role: "Creator",
13
+ avatar: createAvatarDataUri("M\xE9schac Irung", "MI"),
14
+ featured: true
15
+ },
16
+ {
17
+ quote: "Tailus is really extraordinary and very practical, no need to break your head. A real gold mine.",
18
+ author: "Th\xE9o Balick",
19
+ role: "Frontend Dev",
20
+ avatar: createAvatarDataUri("Th\xE9o Balick", "TB")
21
+ },
22
+ {
23
+ quote: "Great work on tailfolio template. This is one of the best personal website that I have seen so far!",
24
+ author: "Glodie Lukose",
25
+ role: "Frontend Dev",
26
+ avatar: createAvatarDataUri("Glodie Lukose", "GL")
27
+ },
28
+ {
29
+ quote: "Great work on tailfolio template. This is one of the best personal website that I have seen so far!",
30
+ author: "Bernard Ngandu",
31
+ role: "Backend Dev",
32
+ avatar: createAvatarDataUri("Bernard Ngandu", "BN")
33
+ }
34
+ ];
35
+ function getInitials(name) {
36
+ return name.split(" ").map((w) => w[0]).join("").toUpperCase().slice(0, 2);
37
+ }
38
+ function TestimonialsBlock({
39
+ title = "Build by makers, loved by thousand developers",
40
+ description = "Gemini is evolving to be more than just the models. It supports an entire to the APIs and platforms helping developers and businesses innovate.",
41
+ testimonials = defaultTestimonials,
42
+ className
43
+ } = {}) {
44
+ const featured = React.useMemo(() => testimonials.find((t) => t.featured) ?? testimonials[0], [testimonials]);
45
+ const rest = React.useMemo(() => testimonials.filter((t) => t !== featured), [testimonials, featured]);
46
+ return /* @__PURE__ */ jsx("section", { className: className ?? "py-16 md:py-32", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-6xl space-y-8 px-6 md:space-y-16", children: [
47
+ /* @__PURE__ */ jsxs("div", { className: "relative z-10 mx-auto max-w-xl space-y-6 text-center md:space-y-12", children: [
48
+ /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "text-4xl lg:text-5xl", children: title }),
49
+ /* @__PURE__ */ jsx("p", { children: description })
50
+ ] }),
51
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 sm:grid-cols-2 md:grid-cols-4 lg:grid-rows-2", children: [
52
+ !!featured && /* @__PURE__ */ jsxs(Card, { className: "grid grid-rows-[auto_1fr] gap-8 sm:col-span-2 sm:p-6 lg:row-span-2", children: [
53
+ /* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(
54
+ "img",
55
+ {
56
+ className: "h-6 w-fit dark:invert",
57
+ src: LOCAL_NIKE_LOGO_SRC,
58
+ alt: "Nike Logo",
59
+ height: "24",
60
+ width: "auto"
61
+ }
62
+ ) }),
63
+ /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs("blockquote", { className: "grid h-full grid-rows-[1fr_auto] gap-6", children: [
64
+ /* @__PURE__ */ jsx("p", { className: "text-xl font-medium", children: featured.quote }),
65
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[auto_1fr] items-center gap-4", children: [
66
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-12", children: [
67
+ /* @__PURE__ */ jsx(
68
+ AvatarImage,
69
+ {
70
+ src: featured.avatar,
71
+ alt: featured.author,
72
+ height: "400",
73
+ width: "400",
74
+ loading: "lazy"
75
+ }
76
+ ),
77
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(featured.author) })
78
+ ] }),
79
+ /* @__PURE__ */ jsxs("div", { children: [
80
+ /* @__PURE__ */ jsx("cite", { className: "text-sm font-medium", children: featured.author }),
81
+ /* @__PURE__ */ jsx("span", { className: "text-text-tertiary block text-sm", children: featured.role })
82
+ ] })
83
+ ] })
84
+ ] }) })
85
+ ] }),
86
+ rest[0] && /* @__PURE__ */ jsx(Card, { className: "md:col-span-2", children: /* @__PURE__ */ jsx(CardContent, { className: "h-full pt-6", children: /* @__PURE__ */ jsxs("blockquote", { className: "grid h-full grid-rows-[1fr_auto] gap-6", children: [
87
+ /* @__PURE__ */ jsx("p", { className: "text-xl font-medium", children: rest[0].quote }),
88
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[auto_1fr] items-center gap-4", children: [
89
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-12", children: [
90
+ /* @__PURE__ */ jsx(
91
+ AvatarImage,
92
+ {
93
+ src: rest[0].avatar,
94
+ alt: rest[0].author,
95
+ height: "400",
96
+ width: "400",
97
+ loading: "lazy"
98
+ }
99
+ ),
100
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(rest[0].author) })
101
+ ] }),
102
+ /* @__PURE__ */ jsxs("div", { children: [
103
+ /* @__PURE__ */ jsx("cite", { className: "text-sm font-medium", children: rest[0].author }),
104
+ /* @__PURE__ */ jsx("span", { className: "text-text-tertiary block text-sm", children: rest[0].role })
105
+ ] })
106
+ ] })
107
+ ] }) }) }),
108
+ rest.slice(1).map((t, i) => /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(CardContent, { className: "h-full pt-6", children: /* @__PURE__ */ jsxs("blockquote", { className: "grid h-full grid-rows-[1fr_auto] gap-6", children: [
109
+ /* @__PURE__ */ jsx("p", { children: t.quote }),
110
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[auto_1fr] items-center gap-4", children: [
111
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-12", children: [
112
+ /* @__PURE__ */ jsx(
113
+ AvatarImage,
114
+ {
115
+ src: t.avatar,
116
+ alt: t.author,
117
+ height: "400",
118
+ width: "400",
119
+ loading: "lazy"
120
+ }
121
+ ),
122
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(t.author) })
123
+ ] }),
124
+ /* @__PURE__ */ jsxs("div", { children: [
125
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: t.author }),
126
+ /* @__PURE__ */ jsx("span", { className: "text-text-tertiary block text-sm", children: t.role })
127
+ ] })
128
+ ] })
129
+ ] }) }) }, i))
130
+ ] })
131
+ ] }) });
132
+ }
133
+
134
+ export { TestimonialsBlock };
@@ -0,0 +1,57 @@
1
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from './chunk-AH6YSYYT.js';
2
+ import { Alert, AlertDescription } from './chunk-GJUR6HT3.js';
3
+ import { Button } from './chunk-7KIDDF3I.js';
4
+ import { useMotionConfig, m, scaleIn, motionSpring } from './chunk-PD2YEH3H.js';
5
+ import { LockIcon } from './chunk-RYOTIXZO.js';
6
+ import { cn } from './chunk-QYZT24TS.js';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ var reasonMessages = {
10
+ too_many_attempts: (minutes) => `Too many failed login attempts.${minutes ? ` Try again in ${minutes} minutes.` : ""}`,
11
+ suspicious_activity: () => "We detected unusual activity on your account.",
12
+ admin: () => "Your account has been locked by an administrator."
13
+ };
14
+ function AccountLockedBlock({
15
+ className,
16
+ reason = "too_many_attempts",
17
+ unlockMinutes,
18
+ onContactSupport,
19
+ onBackToLogin,
20
+ title = "Account locked",
21
+ description = "Your account has been temporarily locked for security"
22
+ }) {
23
+ const motionConfig = useMotionConfig();
24
+ return /* @__PURE__ */ jsx(m.div, { ...scaleIn, className: cn("w-full max-w-md mx-auto", className), children: /* @__PURE__ */ jsxs(Card, { children: [
25
+ /* @__PURE__ */ jsxs(CardHeader, { className: "text-center", children: [
26
+ /* @__PURE__ */ jsx(
27
+ m.div,
28
+ {
29
+ className: "mx-auto mb-2",
30
+ initial: { x: 0 },
31
+ animate: { x: [0, -4, 4, -4, 4, 0] },
32
+ transition: { ...motionSpring.gentle, delay: 0.3, ...motionConfig },
33
+ children: /* @__PURE__ */ jsx("div", { className: "flex h-16 w-16 items-center justify-center rounded-full bg-destructive/10 shadow-[0_0_24px_rgb(var(--color-destructive)/0.2)]", children: /* @__PURE__ */ jsx(LockIcon, { size: 32, className: "text-destructive" }) })
34
+ }
35
+ ),
36
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-2xl", children: title }),
37
+ /* @__PURE__ */ jsx(CardDescription, { children: description })
38
+ ] }),
39
+ /* @__PURE__ */ jsxs(CardContent, { className: "grid gap-4", children: [
40
+ /* @__PURE__ */ jsx(Alert, { variant: "warning", children: /* @__PURE__ */ jsx(AlertDescription, { children: reasonMessages[reason](unlockMinutes) }) }),
41
+ reason === "too_many_attempts" && unlockMinutes && /* @__PURE__ */ jsx("p", { className: "text-center text-sm text-text-tertiary", children: "Your account will be automatically unlocked after the waiting period." }),
42
+ (reason === "suspicious_activity" || reason === "admin") && /* @__PURE__ */ jsx("p", { className: "text-center text-sm text-text-tertiary", children: "Please contact support to regain access to your account." }),
43
+ /* @__PURE__ */ jsx(Button, { variant: "outline", className: "w-full", onClick: onContactSupport, children: "Contact support" })
44
+ ] }),
45
+ /* @__PURE__ */ jsx(CardFooter, { className: "justify-center", children: /* @__PURE__ */ jsx(
46
+ "button",
47
+ {
48
+ type: "button",
49
+ onClick: onBackToLogin,
50
+ className: "text-sm text-text-tertiary hover:text-text-primary transition-colors",
51
+ children: "Back to login"
52
+ }
53
+ ) })
54
+ ] }) });
55
+ }
56
+
57
+ export { AccountLockedBlock };
@@ -0,0 +1,52 @@
1
+ import { ShimmeringText } from './chunk-SGI25ZJ6.js';
2
+ import { StaggerChildren } from './chunk-DQPK2XRL.js';
3
+ import { Heading } from './chunk-WI547C47.js';
4
+ import { siteConfig } from './chunk-A7NUWD76.js';
5
+ import { Button } from './chunk-7KIDDF3I.js';
6
+ import Link from 'next/link';
7
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
+
9
+ var defaultDescription = `Join thousands of developers building premium interfaces with ${siteConfig.name}.`;
10
+ var defaultPrimaryAction = { label: "Get Started", href: "#" };
11
+ var defaultSecondaryAction = { label: "Book Demo", href: "#" };
12
+ function CallToActionBlock({
13
+ title = "Start Building",
14
+ description = defaultDescription,
15
+ primaryAction = defaultPrimaryAction,
16
+ secondaryAction = defaultSecondaryAction,
17
+ className
18
+ }) {
19
+ return /* @__PURE__ */ jsx("section", { className: className ?? "py-16 md:py-24", children: /* @__PURE__ */ jsx("div", { className: "mx-auto max-w-5xl px-6", children: /* @__PURE__ */ jsxs(StaggerChildren, { staggerMs: 100, className: "text-center", children: [
20
+ /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "text-4xl lg:text-5xl", children: /* @__PURE__ */ jsx(
21
+ ShimmeringText,
22
+ {
23
+ text: title,
24
+ color: "var(--color-text-primary)",
25
+ shimmeringColor: "var(--color-accent)",
26
+ duration: 2
27
+ }
28
+ ) }),
29
+ /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-text-secondary", children: description }),
30
+ /* @__PURE__ */ jsxs("div", { className: "mt-12 flex flex-wrap justify-center gap-4", children: [
31
+ /* @__PURE__ */ jsx(
32
+ Button,
33
+ {
34
+ asChild: true,
35
+ size: "lg",
36
+ children: /* @__PURE__ */ jsx(Link, { href: primaryAction.href, children: /* @__PURE__ */ jsx("span", { children: primaryAction.label }) })
37
+ }
38
+ ),
39
+ /* @__PURE__ */ jsx(
40
+ Button,
41
+ {
42
+ asChild: true,
43
+ size: "lg",
44
+ variant: "outline",
45
+ children: /* @__PURE__ */ jsx(Link, { href: secondaryAction.href, children: /* @__PURE__ */ jsx("span", { children: secondaryAction.label }) })
46
+ }
47
+ )
48
+ ] })
49
+ ] }) }) });
50
+ }
51
+
52
+ export { CallToActionBlock };
@@ -0,0 +1,163 @@
1
+ import { StaggerChildren } from './chunk-DQPK2XRL.js';
2
+ import { Heading } from './chunk-WI547C47.js';
3
+ import { Card, CardHeader, CardTitle, CardContent } from './chunk-AH6YSYYT.js';
4
+ import { Button } from './chunk-7KIDDF3I.js';
5
+ import { ZapIcon } from './chunk-FLF5AMNO.js';
6
+ import { KeyIcon } from './chunk-QSU23VYZ.js';
7
+ import { LaptopIcon } from './chunk-BJYCQ2NV.js';
8
+ import { LayersIcon } from './chunk-VM462WZC.js';
9
+ import { GlobeIcon } from './chunk-JL4MVVFH.js';
10
+ import { DatabaseIcon } from './chunk-WA45EC4Y.js';
11
+ import { CloudIcon } from './chunk-JRJGSNI4.js';
12
+ import { Code2Icon } from './chunk-RF6ECFS5.js';
13
+ import { ChartBarIcon } from './chunk-KYZT3RNW.js';
14
+ import { ShieldIcon } from './chunk-P6IRHPFM.js';
15
+ import { Badge } from './chunk-S4JAHKOP.js';
16
+ import { cn } from './chunk-QYZT24TS.js';
17
+ import { jsx, jsxs } from 'react/jsx-runtime';
18
+
19
+ var ICON_COLORS = [
20
+ "bg-primary/10 text-primary",
21
+ "bg-accent/10 text-accent",
22
+ "bg-chart-1/10 text-chart-1",
23
+ "bg-chart-2/10 text-chart-2",
24
+ "bg-chart-3/10 text-chart-3",
25
+ "bg-chart-4/10 text-chart-4"
26
+ ];
27
+ var defaultGridFeatures = [
28
+ {
29
+ title: "Edge Network",
30
+ description: "Deploy your AI models to the edge with a single click. Global low-latency inference.",
31
+ icon: /* @__PURE__ */ jsx(GlobeIcon, { size: 20 })
32
+ },
33
+ {
34
+ title: "Real-time Processing",
35
+ description: "Process locally on device or in the cloud. WebGPU and WebAssembly support built-in.",
36
+ icon: /* @__PURE__ */ jsx(ZapIcon, { size: 20 })
37
+ },
38
+ {
39
+ title: "Vector Database",
40
+ description: "Integrated vector storage for semantic search and long-term memory retrieval.",
41
+ icon: /* @__PURE__ */ jsx(DatabaseIcon, { size: 20 })
42
+ },
43
+ {
44
+ title: "End-to-End Encryption",
45
+ description: "Your data is encrypted at rest and in transit. Enterprise-grade security standards.",
46
+ icon: /* @__PURE__ */ jsx(ShieldIcon, { size: 20 })
47
+ },
48
+ {
49
+ title: "Automated Scaling",
50
+ description: "Scale from 0 to millions of requests without managing infrastructure.",
51
+ icon: /* @__PURE__ */ jsx(ChartBarIcon, { size: 20 })
52
+ },
53
+ {
54
+ title: "API First",
55
+ description: "Everything is available via API. Integrate with your existing stack seamlessly.",
56
+ icon: /* @__PURE__ */ jsx(Code2Icon, { size: 20 })
57
+ }
58
+ ];
59
+ function FeatureGridVariant({
60
+ badge = "Capabilities",
61
+ title = "Everything you need to build",
62
+ description = "A complete toolkit for the next generation of intelligent applications.",
63
+ features = defaultGridFeatures,
64
+ className
65
+ } = {}) {
66
+ return /* @__PURE__ */ jsx("section", { className: className ?? "py-24 relative", children: /* @__PURE__ */ jsxs("div", { className: "container mx-auto px-6 lg:px-8", children: [
67
+ /* @__PURE__ */ jsxs("div", { className: "text-center mb-16 max-w-2xl mx-auto", children: [
68
+ /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "mb-4", children: badge }),
69
+ /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "text-text-primary sm:text-4xl mb-4", children: title }),
70
+ /* @__PURE__ */ jsx("p", { className: "text-text-secondary text-lg", children: description })
71
+ ] }),
72
+ /* @__PURE__ */ jsx(StaggerChildren, { staggerMs: 80, className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 [grid-auto-rows:1fr]", children: features.map((feature, i) => /* @__PURE__ */ jsxs(Card, { interactive: true, className: "h-full", children: [
73
+ /* @__PURE__ */ jsxs(CardHeader, { className: "pb-2", children: [
74
+ /* @__PURE__ */ jsx("div", { className: cn("h-10 w-10 rounded-lg flex items-center justify-center mb-4", ICON_COLORS[i % ICON_COLORS.length]), children: feature.icon }),
75
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-lg", children: feature.title })
76
+ ] }),
77
+ /* @__PURE__ */ jsx(CardContent, { className: "flex-1", children: /* @__PURE__ */ jsx("p", { className: "text-text-secondary", children: feature.description }) })
78
+ ] }, i)) })
79
+ ] }) });
80
+ }
81
+ var defaultListFeatures = [
82
+ {
83
+ title: "Unified Component Architecture",
84
+ description: "Stop wrestling with fragmented libraries. Seed provides a cohesive set of primitives that work together perfectly out of the box. Themeable, accessible, and composable.",
85
+ icon: /* @__PURE__ */ jsx(LayersIcon, { size: 24 }),
86
+ bullets: ["Type-safe design tokens", "Radix UI primitives", "Automatic dark mode"],
87
+ buttonLabel: "Explore Architecture"
88
+ },
89
+ {
90
+ title: "Secure by Default",
91
+ description: "Enterprise-ready security features including SSO, audit logs, and role-based access control. Compliant with SOC2 and GDPR.",
92
+ icon: /* @__PURE__ */ jsx(ShieldIcon, { size: 24 }),
93
+ bullets: ["End-to-end encryption", "SAML & OIDC support", "99.99% Uptime SLA"],
94
+ buttonLabel: "View Security Docs"
95
+ }
96
+ ];
97
+ function FeatureListVariant({
98
+ features = defaultListFeatures,
99
+ className
100
+ } = {}) {
101
+ return /* @__PURE__ */ jsx("section", { className: className ?? "py-24 overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "container mx-auto px-6 lg:px-8 space-y-24", children: features.map((feature, i) => {
102
+ const isReversed = i % 2 !== 0;
103
+ return /* @__PURE__ */ jsxs("div", { className: "grid lg:grid-cols-2 gap-12 items-center", children: [
104
+ isReversed && /* @__PURE__ */ jsxs("div", { className: "order-2 lg:order-1 relative", children: [
105
+ /* @__PURE__ */ jsx("div", { className: "absolute -inset-4 bg-primary/10 blur-3xl rounded-full" }),
106
+ /* @__PURE__ */ jsx(Card, { className: "p-0 overflow-hidden border-border/50", children: /* @__PURE__ */ jsxs("div", { className: "glass-overlay p-6 h-[350px] relative overflow-hidden flex flex-col items-center justify-center", children: [
107
+ /* @__PURE__ */ jsx(CloudIcon, { size: 96, className: "text-primary opacity-20 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2" }),
108
+ /* @__PURE__ */ jsxs("div", { className: "z-10 surface-solid p-4 rounded-lg flex items-center gap-4 w-64", children: [
109
+ /* @__PURE__ */ jsx("div", { className: "h-8 w-8 rounded bg-chart-4/20 text-chart-4 flex items-center justify-center", children: /* @__PURE__ */ jsx(KeyIcon, { size: 16 }) }),
110
+ /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
111
+ /* @__PURE__ */ jsx("div", { className: "h-2 w-20 bg-text-primary/20 rounded mb-2" }),
112
+ /* @__PURE__ */ jsx("div", { className: "h-2 w-full bg-text-primary/10 rounded" })
113
+ ] })
114
+ ] }),
115
+ /* @__PURE__ */ jsxs("div", { className: "z-10 surface-solid p-4 rounded-lg flex items-center gap-4 w-64 mt-4 translate-x-4", children: [
116
+ /* @__PURE__ */ jsx("div", { className: "h-8 w-8 rounded bg-chart-2/20 text-chart-2 flex items-center justify-center", children: /* @__PURE__ */ jsx(LaptopIcon, { size: 16 }) }),
117
+ /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
118
+ /* @__PURE__ */ jsx("div", { className: "h-2 w-16 bg-text-primary/20 rounded mb-2" }),
119
+ /* @__PURE__ */ jsx("div", { className: "h-2 w-full bg-text-primary/10 rounded" })
120
+ ] })
121
+ ] })
122
+ ] }) })
123
+ ] }),
124
+ /* @__PURE__ */ jsxs("div", { className: isReversed ? "order-1 lg:order-2" : void 0, children: [
125
+ /* @__PURE__ */ jsx("div", { className: cn(
126
+ "h-12 w-12 rounded-xl flex items-center justify-center mb-6",
127
+ isReversed ? "bg-primary/20 text-primary" : "bg-accent/20 text-accent"
128
+ ), children: feature.icon }),
129
+ /* @__PURE__ */ jsx(Heading, { level: 3, size: "section", className: "text-text-primary mb-4", children: feature.title }),
130
+ /* @__PURE__ */ jsx("p", { className: "text-lg text-text-secondary mb-8 leading-relaxed", children: feature.description }),
131
+ /* @__PURE__ */ jsx("ul", { className: "space-y-4 mb-8", children: feature.bullets.map((item) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-4 text-text-primary", children: [
132
+ /* @__PURE__ */ jsx("div", { className: isReversed ? "h-1.5 w-1.5 rounded-full bg-primary" : "h-1.5 w-1.5 rounded-full bg-accent" }),
133
+ item
134
+ ] }, item)) }),
135
+ /* @__PURE__ */ jsx(Button, { variant: "outline", children: feature.buttonLabel })
136
+ ] }),
137
+ !isReversed && /* @__PURE__ */ jsxs("div", { className: "relative", children: [
138
+ /* @__PURE__ */ jsx("div", { className: "absolute -inset-4 bg-accent/10 blur-3xl rounded-full" }),
139
+ /* @__PURE__ */ jsxs(Card, { className: "p-0 overflow-hidden border-border/50", children: [
140
+ /* @__PURE__ */ jsxs("div", { className: "p-4 border-b border-border/50 flex items-center gap-2", children: [
141
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-destructive/50" }),
142
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-warning/50" }),
143
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-3 rounded-full bg-success/50" })
144
+ ] }),
145
+ /* @__PURE__ */ jsx("div", { className: "p-8 h-[300px] flex items-center justify-center bg-background/50", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4 w-full opacity-80", children: [
146
+ /* @__PURE__ */ jsx("div", { className: "h-24 bg-surface/50 rounded-lg border border-border animate-pulse" }),
147
+ /* @__PURE__ */ jsx("div", { className: "h-24 bg-surface-active/50 rounded-lg border border-primary/20" }),
148
+ /* @__PURE__ */ jsx("div", { className: "h-24 bg-surface/50 rounded-lg border border-border" }),
149
+ /* @__PURE__ */ jsx("div", { className: "h-24 bg-surface rounded-lg border border-border" })
150
+ ] }) })
151
+ ] })
152
+ ] })
153
+ ] }, i);
154
+ }) }) });
155
+ }
156
+ function FeatureBlock({ variant = "grid", ...props }) {
157
+ if (variant === "list") {
158
+ return /* @__PURE__ */ jsx(FeatureListVariant, { ...props, features: props.features });
159
+ }
160
+ return /* @__PURE__ */ jsx(FeatureGridVariant, { ...props, features: props.features });
161
+ }
162
+
163
+ export { FeatureBlock };
@@ -0,0 +1,38 @@
1
+ import { Skeleton } from './chunk-RASEB2XI.js';
2
+ import { Empty, EmptyIcon, EmptyTitle, EmptyDescription } from './chunk-55HD4L6G.js';
3
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent } from './chunk-AH6YSYYT.js';
4
+ import { cn } from './chunk-QYZT24TS.js';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ function ChartCard({
8
+ title,
9
+ description,
10
+ action,
11
+ chart,
12
+ data,
13
+ loading = false,
14
+ emptyIcon,
15
+ emptyTitle,
16
+ emptyDescription,
17
+ emptyCta,
18
+ className,
19
+ ref
20
+ }) {
21
+ return /* @__PURE__ */ jsxs(Card, { ref, className: cn(className), children: [
22
+ /* @__PURE__ */ jsxs(CardHeader, { className: action ? "flex flex-row items-start justify-between space-y-0 pb-4" : void 0, children: [
23
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-1.5", children: [
24
+ /* @__PURE__ */ jsx(CardTitle, { children: title }),
25
+ !!description && /* @__PURE__ */ jsx(CardDescription, { children: description })
26
+ ] }),
27
+ action
28
+ ] }),
29
+ /* @__PURE__ */ jsx(CardContent, { children: loading ? /* @__PURE__ */ jsx(Skeleton, { className: "h-[300px] rounded-lg" }) : data.length === 0 ? /* @__PURE__ */ jsxs(Empty, { children: [
30
+ !!emptyIcon && /* @__PURE__ */ jsx(EmptyIcon, { children: emptyIcon }),
31
+ !!emptyTitle && /* @__PURE__ */ jsx(EmptyTitle, { children: emptyTitle }),
32
+ !!emptyDescription && /* @__PURE__ */ jsx(EmptyDescription, { children: emptyDescription }),
33
+ !!emptyCta && emptyCta
34
+ ] }) : /* @__PURE__ */ jsx("div", { className: "chart-glow-bg", children: chart }) })
35
+ ] });
36
+ }
37
+
38
+ export { ChartCard };
@@ -0,0 +1,78 @@
1
+ import { Typography } from './chunk-N53OMWW2.js';
2
+ import { Heading } from './chunk-WI547C47.js';
3
+ import { Avatar3D } from './chunk-4S326Z3D.js';
4
+ import { useMotionConfig, m, motionSpring } from './chunk-PD2YEH3H.js';
5
+ import { Badge } from './chunk-S4JAHKOP.js';
6
+ import { cn } from './chunk-QYZT24TS.js';
7
+ import * as React from 'react';
8
+ import { useTranslations } from 'next-intl';
9
+ import { jsxs, jsx } from 'react/jsx-runtime';
10
+
11
+ var stateBadgeVariants = {
12
+ idle: "secondary",
13
+ listening: "primary",
14
+ speaking: "accent"
15
+ };
16
+ function VoiceAgentCard({
17
+ agent,
18
+ state,
19
+ selected = false,
20
+ onSelect,
21
+ ariaLabel,
22
+ className
23
+ }) {
24
+ const t = useTranslations("blocks.voiceAgentCard");
25
+ const motionConfig = useMotionConfig();
26
+ const isInteractive = typeof onSelect === "function";
27
+ const stateLabels = React.useMemo(() => ({
28
+ idle: t("stateReady"),
29
+ listening: t("stateListening"),
30
+ speaking: t("stateSpeaking")
31
+ }), [t]);
32
+ return /* @__PURE__ */ jsxs(
33
+ m.button,
34
+ {
35
+ type: "button",
36
+ className: cn(
37
+ "flex flex-col items-center gap-4 rounded-xl p-4 transition-colors border-0 bg-transparent text-left focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent",
38
+ isInteractive ? "cursor-pointer" : "cursor-default",
39
+ selected ? "glass-panel ring-1 ring-accent/30" : "hover:bg-surface-hover/50",
40
+ className
41
+ ),
42
+ onClick: onSelect,
43
+ disabled: !isInteractive,
44
+ "aria-label": ariaLabel,
45
+ "aria-pressed": selected,
46
+ whileHover: isInteractive ? { y: -2 } : void 0,
47
+ transition: { ...motionSpring.snappy, ...motionConfig },
48
+ children: [
49
+ /* @__PURE__ */ jsx("div", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(
50
+ Avatar3D,
51
+ {
52
+ src: agent.avatar,
53
+ name: agent.name,
54
+ state: selected ? state : "idle",
55
+ size: "lg",
56
+ enableTilt: selected,
57
+ interactive: false
58
+ }
59
+ ) }),
60
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-1.5 text-center", children: [
61
+ /* @__PURE__ */ jsx(Heading, { level: 4, size: "title", className: "text-sm font-semibold text-text-primary", children: agent.name }),
62
+ /* @__PURE__ */ jsx(Typography, { variant: "small", className: "text-text-tertiary text-xs", children: agent.role })
63
+ ] }),
64
+ !!selected && /* @__PURE__ */ jsx(
65
+ m.div,
66
+ {
67
+ initial: { opacity: 0, scale: 0.8 },
68
+ animate: { opacity: 1, scale: 1 },
69
+ transition: { ...motionSpring.snappy, ...motionConfig },
70
+ children: /* @__PURE__ */ jsx(Badge, { variant: stateBadgeVariants[state], className: "text-[10px]", children: stateLabels[state] })
71
+ }
72
+ )
73
+ ]
74
+ }
75
+ );
76
+ }
77
+
78
+ export { VoiceAgentCard };
@@ -0,0 +1,77 @@
1
+ import { StaggerChildren } from './chunk-DQPK2XRL.js';
2
+ import { Heading } from './chunk-WI547C47.js';
3
+ import { ScrollFadeIn } from './chunk-I23DDSU7.js';
4
+ import { Card } from './chunk-AH6YSYYT.js';
5
+ import { SparklesIcon } from './chunk-CGUCH322.js';
6
+ import { SearchIcon } from './chunk-T6BRD7TS.js';
7
+ import { SettingsIcon } from './chunk-OITJWGFV.js';
8
+ import { Badge } from './chunk-S4JAHKOP.js';
9
+ import { cn } from './chunk-QYZT24TS.js';
10
+ import { jsx, jsxs } from 'react/jsx-runtime';
11
+
12
+ var defaultSteps = [
13
+ {
14
+ title: "Discovery",
15
+ description: "We analyze your workflows and identify automation opportunities.",
16
+ icon: /* @__PURE__ */ jsx(SearchIcon, { size: 24, "aria-hidden": true })
17
+ },
18
+ {
19
+ title: "Implementation",
20
+ description: "Our team builds and integrates AI solutions tailored to your needs.",
21
+ icon: /* @__PURE__ */ jsx(SettingsIcon, { size: 24, "aria-hidden": true })
22
+ },
23
+ {
24
+ title: "Optimization",
25
+ description: "Continuous monitoring and refinement to maximize ROI.",
26
+ icon: /* @__PURE__ */ jsx(SparklesIcon, { size: 24, "aria-hidden": true })
27
+ }
28
+ ];
29
+ function ProcessFlowBlock({
30
+ title = "How it works",
31
+ description,
32
+ badge,
33
+ steps = defaultSteps,
34
+ className
35
+ }) {
36
+ const colsClass = steps.length === 4 ? "md:grid-cols-4" : "md:grid-cols-3";
37
+ 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: [
38
+ /* @__PURE__ */ jsx(ScrollFadeIn, { children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
39
+ !!badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "mb-4", children: badge }),
40
+ /* @__PURE__ */ jsx(Heading, { level: 2, size: "section", className: "text-4xl lg:text-5xl", children: title }),
41
+ !!description && /* @__PURE__ */ jsx("p", { className: "mt-4 text-text-secondary", children: description })
42
+ ] }) }),
43
+ /* @__PURE__ */ jsxs("div", { className: "relative mt-8 md:mt-16", children: [
44
+ /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ "aria-hidden": true,
48
+ 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"
49
+ }
50
+ ),
51
+ /* @__PURE__ */ jsx(
52
+ "div",
53
+ {
54
+ "aria-hidden": true,
55
+ className: "absolute left-6 top-0 block h-full w-px border-l border-dashed border-border md:hidden"
56
+ }
57
+ ),
58
+ /* @__PURE__ */ jsx(
59
+ StaggerChildren,
60
+ {
61
+ staggerMs: 120,
62
+ className: cn("relative grid gap-8", colsClass),
63
+ children: steps.map((step, i) => /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center text-center", children: [
64
+ /* @__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") }),
65
+ /* @__PURE__ */ jsxs(Card, { className: "w-full", children: [
66
+ step.icon && /* @__PURE__ */ jsx("div", { className: "mb-2 flex justify-center text-accent", children: step.icon }),
67
+ /* @__PURE__ */ jsx(Heading, { level: 3, size: "title", className: "font-medium", children: step.title }),
68
+ /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-text-secondary", children: step.description })
69
+ ] })
70
+ ] }, step.title))
71
+ }
72
+ )
73
+ ] })
74
+ ] }) });
75
+ }
76
+
77
+ export { ProcessFlowBlock };