@lssm/lib.design-system 0.0.0-canary-20251217060433 → 0.0.0-canary-20251217062139

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 (232) hide show
  1. package/dist/_virtual/rolldown_runtime.js +1 -12
  2. package/dist/components/agent/AgentMonitor.js +3 -3
  3. package/dist/components/agent/ApprovalQueue.d.ts +2 -2
  4. package/dist/components/agent/ApprovalQueue.js +4 -5
  5. package/dist/components/atoms/ActionButtons.d.ts +3 -3
  6. package/dist/components/atoms/ActionButtons.js +3 -3
  7. package/dist/components/atoms/Button.d.ts +6 -6
  8. package/dist/components/atoms/Button.js +2 -2
  9. package/dist/components/atoms/ButtonLink.js +2 -2
  10. package/dist/components/atoms/Cta.d.ts +7 -7
  11. package/dist/components/atoms/Cta.js +2 -2
  12. package/dist/components/atoms/DataChips.d.ts +2 -2
  13. package/dist/components/atoms/DataChips.js +1 -1
  14. package/dist/components/atoms/EmptyState.d.ts +2 -2
  15. package/dist/components/atoms/EmptyState.js +1 -1
  16. package/dist/components/atoms/ErrorState.d.ts +6 -6
  17. package/dist/components/atoms/ErrorState.js +1 -1
  18. package/dist/components/atoms/Input.d.ts +2 -2
  19. package/dist/components/atoms/Input.js +1 -1
  20. package/dist/components/atoms/Link.web.d.ts +3 -3
  21. package/dist/components/atoms/Link.web.js +4 -6
  22. package/dist/components/atoms/LoaderCircular.d.ts +3 -3
  23. package/dist/components/atoms/LoaderCircular.js +2 -2
  24. package/dist/components/atoms/NavBrand.d.ts +3 -3
  25. package/dist/components/atoms/NavBrand.js +1 -1
  26. package/dist/components/atoms/Stepper.d.ts +2 -2
  27. package/dist/components/atoms/Stepper.js +1 -1
  28. package/dist/components/atoms/Textarea.d.ts +2 -2
  29. package/dist/components/atoms/Textarea.js +4 -4
  30. package/dist/components/data-view/DataViewDetail.d.ts +3 -3
  31. package/dist/components/data-view/DataViewList.d.ts +3 -3
  32. package/dist/components/data-view/DataViewRenderer.d.ts +5 -5
  33. package/dist/components/data-view/DataViewRenderer.js +3 -3
  34. package/dist/components/data-view/DataViewTable.d.ts +4 -4
  35. package/dist/components/forms/ActionForm.d.ts +3 -3
  36. package/dist/components/forms/ActionForm.js +1 -1
  37. package/dist/components/forms/FormCardLayout.d.ts +5 -5
  38. package/dist/components/forms/FormCardLayout.js +2 -2
  39. package/dist/components/forms/FormDialog.d.ts +5 -5
  40. package/dist/components/forms/FormDialog.js +1 -1
  41. package/dist/components/forms/FormLayout.d.ts +4 -4
  42. package/dist/components/forms/FormLayout.js +1 -1
  43. package/dist/components/forms/FormOneByOneLayout.d.ts +4 -4
  44. package/dist/components/forms/FormOneByOneLayout.js +4 -4
  45. package/dist/components/forms/FormStepsLayout.d.ts +4 -4
  46. package/dist/components/forms/FormStepsLayout.js +5 -5
  47. package/dist/components/forms/ZodForm.d.ts +4 -4
  48. package/dist/components/forms/ZodForm.js +1 -1
  49. package/dist/components/legal/atoms/DefinitionList.d.ts +3 -3
  50. package/dist/components/legal/atoms/DefinitionList.js +1 -1
  51. package/dist/components/legal/atoms/KeyValueList.d.ts +3 -3
  52. package/dist/components/legal/atoms/KeyValueList.js +1 -1
  53. package/dist/components/legal/atoms/LegalCallout.d.ts +2 -2
  54. package/dist/components/legal/atoms/LegalCallout.js +1 -1
  55. package/dist/components/legal/atoms/LegalHeading.d.ts +2 -2
  56. package/dist/components/legal/atoms/LegalHeading.js +1 -1
  57. package/dist/components/legal/atoms/LegalList.d.ts +2 -2
  58. package/dist/components/legal/atoms/LegalList.js +1 -1
  59. package/dist/components/legal/atoms/LegalSection.d.ts +2 -2
  60. package/dist/components/legal/atoms/LegalSection.js +1 -1
  61. package/dist/components/legal/atoms/LegalText.d.ts +2 -2
  62. package/dist/components/legal/atoms/LegalText.js +1 -1
  63. package/dist/components/legal/molecules/Consent.d.ts +5 -5
  64. package/dist/components/legal/molecules/Consent.js +2 -2
  65. package/dist/components/legal/molecules/ContactFields.js +1 -1
  66. package/dist/components/legal/molecules/LegalMeta.js +1 -1
  67. package/dist/components/legal/molecules/LegalTOC.d.ts +3 -3
  68. package/dist/components/legal/molecules/LegalTOC.js +1 -1
  69. package/dist/components/legal/organisms/ContactForm.d.ts +2 -2
  70. package/dist/components/legal/organisms/ContactForm.js +3 -3
  71. package/dist/components/legal/organisms/GDPRDataRequest.d.ts +3 -3
  72. package/dist/components/legal/organisms/GDPRDataRequest.js +2 -2
  73. package/dist/components/legal/organisms/GDPRRights.d.ts +3 -3
  74. package/dist/components/legal/organisms/LegalPageLayout.d.ts +3 -3
  75. package/dist/components/legal/organisms/LegalPageLayout.js +1 -1
  76. package/dist/components/legal/templates/ContactTemplate.d.ts +2 -2
  77. package/dist/components/legal/templates/ContactTemplate.js +3 -3
  78. package/dist/components/legal/templates/CookiesTemplate.d.ts +7 -7
  79. package/dist/components/legal/templates/PrivacyTemplate.d.ts +7 -7
  80. package/dist/components/legal/templates/SalesTermsTemplate.d.ts +5 -5
  81. package/dist/components/legal/templates/TermsTemplate.d.ts +5 -5
  82. package/dist/components/marketing/MarketingCard.d.ts +4 -4
  83. package/dist/components/marketing/MarketingCard.js +3 -3
  84. package/dist/components/marketing/MarketingCardsSection.d.ts +2 -2
  85. package/dist/components/marketing/MarketingCardsSection.js +1 -1
  86. package/dist/components/marketing/MarketingComparisonSection.d.ts +5 -5
  87. package/dist/components/marketing/MarketingComparisonSection.js +3 -3
  88. package/dist/components/marketing/MarketingIconCard.d.ts +5 -5
  89. package/dist/components/marketing/MarketingIconCard.js +4 -3
  90. package/dist/components/marketing/MarketingSection.d.ts +5 -5
  91. package/dist/components/marketing/MarketingSection.js +3 -3
  92. package/dist/components/marketing/MarketingStepCard.d.ts +3 -3
  93. package/dist/components/marketing/MarketingStepCard.js +4 -3
  94. package/dist/components/molecules/AiLinkButton.js +5 -5
  95. package/dist/components/molecules/Breadcrumbs.d.ts +4 -4
  96. package/dist/components/molecules/Breadcrumbs.js +3 -3
  97. package/dist/components/molecules/CommandPalette.js +4 -4
  98. package/dist/components/molecules/CommandSearchTrigger.d.ts +4 -4
  99. package/dist/components/molecules/CommandSearchTrigger.js +5 -5
  100. package/dist/components/molecules/EntityCard.d.ts +9 -9
  101. package/dist/components/molecules/EntityCard.js +2 -2
  102. package/dist/components/molecules/FiltersToolbar.d.ts +4 -4
  103. package/dist/components/molecules/FiltersToolbar.js +6 -6
  104. package/dist/components/molecules/HoverPreview.d.ts +3 -3
  105. package/dist/components/molecules/HoverPreview.js +4 -2
  106. package/dist/components/molecules/LangSwitch.d.ts +2 -2
  107. package/dist/components/molecules/LangSwitchDropdown.js +4 -4
  108. package/dist/components/molecules/LoaderBlock.d.ts +3 -3
  109. package/dist/components/molecules/LoaderBlock.js +1 -1
  110. package/dist/components/molecules/MobileNavMenu.js +1 -1
  111. package/dist/components/molecules/NavItemCard.js +1 -1
  112. package/dist/components/molecules/NavMain.js +4 -4
  113. package/dist/components/molecules/NavUser.js +2 -2
  114. package/dist/components/molecules/OverviewCard.d.ts +2 -2
  115. package/dist/components/molecules/OverviewCard.js +3 -5
  116. package/dist/components/molecules/SkeletonBlock/index.web.js +2 -2
  117. package/dist/components/molecules/SkeletonCircle/index.web.js +1 -1
  118. package/dist/components/molecules/SkeletonList/index.web.js +1 -1
  119. package/dist/components/molecules/StatCard.d.ts +8 -8
  120. package/dist/components/molecules/StatCard.js +2 -2
  121. package/dist/components/molecules/StatusChip.d.ts +5 -5
  122. package/dist/components/molecules/StatusChip.js +1 -1
  123. package/dist/components/molecules/hover-previews/Doc.d.ts +6 -6
  124. package/dist/components/molecules/hover-previews/Media.d.ts +5 -5
  125. package/dist/components/molecules/hover-previews/Simple.d.ts +7 -7
  126. package/dist/components/molecules/hover-previews/Stats.d.ts +6 -6
  127. package/dist/components/molecules/hover-previews/User.d.ts +7 -7
  128. package/dist/components/organisms/AcademyLayout.d.ts +7 -7
  129. package/dist/components/organisms/AcademyLayout.js +4 -4
  130. package/dist/components/organisms/AppHeader.d.ts +3 -3
  131. package/dist/components/organisms/AppHeader.js +2 -2
  132. package/dist/components/organisms/AppLayout.d.ts +6 -6
  133. package/dist/components/organisms/AppLayout.js +5 -5
  134. package/dist/components/organisms/AppSidebar.d.ts +3 -3
  135. package/dist/components/organisms/AppSidebar.js +2 -2
  136. package/dist/components/organisms/EmptyDataList.js +1 -1
  137. package/dist/components/organisms/EmptyDataList.types.d.ts +8 -8
  138. package/dist/components/organisms/EmptySearchResult.d.ts +5 -5
  139. package/dist/components/organisms/EmptySearchResult.js +3 -3
  140. package/dist/components/organisms/FAQSection.d.ts +6 -6
  141. package/dist/components/organisms/FAQSection.js +4 -4
  142. package/dist/components/organisms/FeatureCarousel.d.ts +6 -6
  143. package/dist/components/organisms/FeatureCarousel.js +2 -2
  144. package/dist/components/organisms/FeaturesSection.d.ts +4 -4
  145. package/dist/components/organisms/FeaturesSection.js +1 -1
  146. package/dist/components/organisms/Footer.d.ts +7 -7
  147. package/dist/components/organisms/Footer.js +2 -2
  148. package/dist/components/organisms/Header.d.ts +5 -5
  149. package/dist/components/organisms/Header.js +4 -4
  150. package/dist/components/organisms/HeroResponsive.d.ts +2 -2
  151. package/dist/components/organisms/HeroSection.d.ts +3 -3
  152. package/dist/components/organisms/HeroSection.js +1 -1
  153. package/dist/components/organisms/ListCardPage.d.ts +4 -4
  154. package/dist/components/organisms/ListCardPage.js +2 -2
  155. package/dist/components/organisms/ListGridPage.d.ts +4 -4
  156. package/dist/components/organisms/ListGridPage.js +1 -1
  157. package/dist/components/organisms/ListPageResponsive.js +1 -1
  158. package/dist/components/organisms/ListTablePage.d.ts +6 -6
  159. package/dist/components/organisms/ListTablePage.js +2 -2
  160. package/dist/components/organisms/MarketingHeader.d.ts +4 -4
  161. package/dist/components/organisms/MarketingHeader.js +9 -9
  162. package/dist/components/organisms/MarketingHeaderDesktop.js +3 -3
  163. package/dist/components/organisms/MarketingHeaderMobile.js +6 -6
  164. package/dist/components/organisms/MarketingLayout.d.ts +4 -4
  165. package/dist/components/organisms/MarketingLayout.js +2 -2
  166. package/dist/components/organisms/PageHeaderResponsive.js +1 -1
  167. package/dist/components/organisms/PricingCarousel.js +2 -2
  168. package/dist/components/organisms/PricingSection.d.ts +3 -3
  169. package/dist/components/organisms/PricingSection.js +1 -1
  170. package/dist/components/organisms/TestimonialCarousel.d.ts +5 -5
  171. package/dist/components/organisms/TestimonialCarousel.js +2 -2
  172. package/dist/components/templates/lists/ListPageTemplate/index.web.js +5 -5
  173. package/dist/components/templates/lists/ListPageTemplate/types.d.ts +7 -7
  174. package/dist/contracts/dist/client/react/drivers/shadcn.js +7 -0
  175. package/dist/contracts/dist/client/react/form-render.js +261 -0
  176. package/dist/contracts/dist/forms.js +78 -0
  177. package/dist/hooks/useListUrlState.js +7 -7
  178. package/dist/index.js +2 -1
  179. package/dist/platform/useColorScheme.js +3 -3
  180. package/dist/platform/useReducedMotion.js +3 -3
  181. package/dist/platform/useResponsive.js +4 -4
  182. package/dist/renderers/form-contract.d.ts +1 -1
  183. package/dist/renderers/form-contract.js +13 -13
  184. package/dist/types/navigation.d.ts +10 -10
  185. package/dist/ui-kit-web/dist/ui/accordion.js +48 -0
  186. package/dist/ui-kit-web/dist/ui/atoms/FilterSelect/FilterSelect.js +52 -0
  187. package/dist/ui-kit-web/dist/ui/atoms/Pagination/Pagination.js +156 -0
  188. package/dist/ui-kit-web/dist/ui/atoms/SearchInput/SearchInput.js +49 -0
  189. package/dist/ui-kit-web/dist/ui/avatar.js +32 -0
  190. package/dist/ui-kit-web/dist/ui/badge.js +27 -0
  191. package/dist/ui-kit-web/dist/ui/breadcrumb.js +59 -0
  192. package/dist/ui-kit-web/dist/ui/button.js +55 -0
  193. package/dist/ui-kit-web/dist/ui/card.js +44 -0
  194. package/dist/ui-kit-web/dist/ui/carousel.js +135 -0
  195. package/dist/ui-kit-web/dist/ui/checkbox.js +25 -0
  196. package/dist/ui-kit-web/dist/ui/collapsible.js +27 -0
  197. package/dist/ui-kit-web/dist/ui/command.js +90 -0
  198. package/dist/ui-kit-web/dist/ui/dialog.js +84 -0
  199. package/dist/ui-kit-web/dist/ui/dropdown-menu.js +57 -0
  200. package/dist/ui-kit-web/dist/ui/empty-state.js +43 -0
  201. package/dist/ui-kit-web/dist/ui/empty.js +62 -0
  202. package/dist/ui-kit-web/dist/ui/field.js +78 -0
  203. package/dist/ui-kit-web/dist/ui/form.js +16 -0
  204. package/dist/ui-kit-web/dist/ui/hover-card.js +40 -0
  205. package/dist/ui-kit-web/dist/ui/input.js +17 -0
  206. package/dist/ui-kit-web/dist/ui/label.js +19 -0
  207. package/dist/ui-kit-web/dist/ui/marketing/Hero.js +52 -0
  208. package/dist/ui-kit-web/dist/ui/marketing/PricingTable.js +59 -0
  209. package/dist/ui-kit-web/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +102 -0
  210. package/dist/ui-kit-web/dist/ui/molecules/SkeletonList.js +14 -0
  211. package/dist/ui-kit-web/dist/ui/navigation-menu.js +75 -0
  212. package/dist/ui-kit-web/dist/ui/organisms/ListPage/ListPage.js +197 -0
  213. package/dist/ui-kit-web/dist/ui/page-header.js +40 -0
  214. package/dist/ui-kit-web/dist/ui/pagination.js +65 -0
  215. package/dist/ui-kit-web/dist/ui/radio-group.js +32 -0
  216. package/dist/ui-kit-web/dist/ui/select.js +86 -0
  217. package/dist/ui-kit-web/dist/ui/separator.js +21 -0
  218. package/dist/ui-kit-web/dist/ui/sheet.js +80 -0
  219. package/dist/ui-kit-web/dist/ui/sidebar.js +281 -0
  220. package/dist/ui-kit-web/dist/ui/skeleton.js +14 -0
  221. package/dist/ui-kit-web/dist/ui/stack.js +158 -0
  222. package/dist/ui-kit-web/dist/ui/stepper.js +37 -0
  223. package/dist/ui-kit-web/dist/ui/switch.js +24 -0
  224. package/dist/ui-kit-web/dist/ui/table.js +57 -0
  225. package/dist/ui-kit-web/dist/ui/text.js +16 -0
  226. package/dist/ui-kit-web/dist/ui/textarea.js +16 -0
  227. package/dist/ui-kit-web/dist/ui/tooltip.js +40 -0
  228. package/dist/ui-kit-web/dist/ui/typography.js +23 -0
  229. package/dist/ui-kit-web/dist/ui/use-mobile.js +20 -0
  230. package/dist/ui-kit-web/dist/ui/utils.js +10 -0
  231. package/dist/ui-kit-web/dist/ui-kit-core/dist/utils.js +13 -0
  232. package/package.json +7 -7
@@ -0,0 +1,90 @@
1
+ 'use client';
2
+
3
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
4
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./dialog.js";
5
+ import "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { SearchIcon } from "lucide-react";
8
+ import { Command } from "cmdk";
9
+
10
+ //#region ../ui-kit-web/dist/ui/command.js
11
+ init_utils();
12
+ function Command$1({ className, ...props }) {
13
+ return /* @__PURE__ */ jsx(Command, {
14
+ "data-slot": "command",
15
+ className: cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className),
16
+ ...props
17
+ });
18
+ }
19
+ function CommandDialog({ title = "Command Palette", description = "Search for a command to run...", children, className, showCloseButton = true, ...props }) {
20
+ return /* @__PURE__ */ jsxs(Dialog, {
21
+ ...props,
22
+ children: [/* @__PURE__ */ jsxs(DialogHeader, {
23
+ className: "sr-only",
24
+ children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), /* @__PURE__ */ jsx(DialogDescription, { children: description })]
25
+ }), /* @__PURE__ */ jsx(DialogContent, {
26
+ className: cn("overflow-hidden p-0", className),
27
+ showCloseButton,
28
+ children: /* @__PURE__ */ jsx(Command$1, {
29
+ className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",
30
+ children
31
+ })
32
+ })]
33
+ });
34
+ }
35
+ function CommandInput({ className, ...props }) {
36
+ return /* @__PURE__ */ jsxs("div", {
37
+ "data-slot": "command-input-wrapper",
38
+ className: "flex h-9 items-center gap-2 border-b px-3",
39
+ children: [/* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }), /* @__PURE__ */ jsx(Command.Input, {
40
+ "data-slot": "command-input",
41
+ className: cn("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
42
+ ...props
43
+ })]
44
+ });
45
+ }
46
+ function CommandList({ className, ...props }) {
47
+ return /* @__PURE__ */ jsx(Command.List, {
48
+ "data-slot": "command-list",
49
+ className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
50
+ ...props
51
+ });
52
+ }
53
+ function CommandEmpty({ ...props }) {
54
+ return /* @__PURE__ */ jsx(Command.Empty, {
55
+ "data-slot": "command-empty",
56
+ className: "py-6 text-center text-sm",
57
+ ...props
58
+ });
59
+ }
60
+ function CommandGroup({ className, ...props }) {
61
+ return /* @__PURE__ */ jsx(Command.Group, {
62
+ "data-slot": "command-group",
63
+ className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className),
64
+ ...props
65
+ });
66
+ }
67
+ function CommandSeparator({ className, ...props }) {
68
+ return /* @__PURE__ */ jsx(Command.Separator, {
69
+ "data-slot": "command-separator",
70
+ className: cn("bg-border -mx-1 h-px", className),
71
+ ...props
72
+ });
73
+ }
74
+ function CommandItem({ className, ...props }) {
75
+ return /* @__PURE__ */ jsx(Command.Item, {
76
+ "data-slot": "command-item",
77
+ className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
78
+ ...props
79
+ });
80
+ }
81
+ function CommandShortcut({ className, ...props }) {
82
+ return /* @__PURE__ */ jsx("span", {
83
+ "data-slot": "command-shortcut",
84
+ className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
85
+ ...props
86
+ });
87
+ }
88
+
89
+ //#endregion
90
+ export { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+
3
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
4
+ import "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { XIcon } from "lucide-react";
7
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
8
+
9
+ //#region ../ui-kit-web/dist/ui/dialog.js
10
+ init_utils();
11
+ function Dialog({ ...props }) {
12
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, {
13
+ "data-slot": "dialog",
14
+ ...props
15
+ });
16
+ }
17
+ function DialogTrigger({ ...props }) {
18
+ return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, {
19
+ "data-slot": "dialog-trigger",
20
+ ...props
21
+ });
22
+ }
23
+ function DialogPortal({ ...props }) {
24
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
25
+ "data-slot": "dialog-portal",
26
+ ...props
27
+ });
28
+ }
29
+ function DialogOverlay({ className, ...props }) {
30
+ return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
31
+ "data-slot": "dialog-overlay",
32
+ className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className),
33
+ ...props
34
+ });
35
+ }
36
+ function DialogContent({ className, children, showCloseButton = true, ...props }) {
37
+ return /* @__PURE__ */ jsxs(DialogPortal, {
38
+ "data-slot": "dialog-portal",
39
+ children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
40
+ "data-slot": "dialog-content",
41
+ className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className),
42
+ ...props,
43
+ children: [children, showCloseButton && /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
44
+ "data-slot": "dialog-close",
45
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
46
+ children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
47
+ className: "sr-only",
48
+ children: "Close"
49
+ })]
50
+ })]
51
+ })]
52
+ });
53
+ }
54
+ function DialogHeader({ className, ...props }) {
55
+ return /* @__PURE__ */ jsx("div", {
56
+ "data-slot": "dialog-header",
57
+ className: cn("flex flex-col gap-2 text-center sm:text-left", className),
58
+ ...props
59
+ });
60
+ }
61
+ function DialogFooter({ className, ...props }) {
62
+ return /* @__PURE__ */ jsx("div", {
63
+ "data-slot": "dialog-footer",
64
+ className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
65
+ ...props
66
+ });
67
+ }
68
+ function DialogTitle({ className, ...props }) {
69
+ return /* @__PURE__ */ jsx(DialogPrimitive.Title, {
70
+ "data-slot": "dialog-title",
71
+ className: cn("text-lg leading-none font-semibold", className),
72
+ ...props
73
+ });
74
+ }
75
+ function DialogDescription({ className, ...props }) {
76
+ return /* @__PURE__ */ jsx(DialogPrimitive.Description, {
77
+ "data-slot": "dialog-description",
78
+ className: cn("text-muted-foreground text-sm", className),
79
+ ...props
80
+ });
81
+ }
82
+
83
+ //#endregion
84
+ export { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger };
@@ -0,0 +1,57 @@
1
+ 'use client';
2
+
3
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
4
+ import "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { CheckIcon, CircleIcon } from "lucide-react";
7
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
8
+
9
+ //#region ../ui-kit-web/dist/ui/dropdown-menu.js
10
+ init_utils();
11
+ function DropdownMenu({ ...props }) {
12
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, {
13
+ "data-slot": "dropdown-menu",
14
+ ...props
15
+ });
16
+ }
17
+ function DropdownMenuTrigger({ ...props }) {
18
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, {
19
+ "data-slot": "dropdown-menu-trigger",
20
+ ...props
21
+ });
22
+ }
23
+ function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
24
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
25
+ "data-slot": "dropdown-menu-content",
26
+ sideOffset,
27
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className),
28
+ ...props
29
+ }) });
30
+ }
31
+ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
32
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, {
33
+ "data-slot": "dropdown-menu-item",
34
+ "data-inset": inset,
35
+ "data-variant": variant,
36
+ className: cn("data-[variant=destructive]:*:[svg]:text-destructive! focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
37
+ ...props
38
+ });
39
+ }
40
+ function DropdownMenuLabel({ className, inset, ...props }) {
41
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, {
42
+ "data-slot": "dropdown-menu-label",
43
+ "data-inset": inset,
44
+ className: cn("px-2 py-1.5 text-sm font-medium data-inset:pl-8", className),
45
+ ...props
46
+ });
47
+ }
48
+ function DropdownMenuSeparator({ className, ...props }) {
49
+ return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
50
+ "data-slot": "dropdown-menu-separator",
51
+ className: cn("bg-border -mx-1 my-1 h-px", className),
52
+ ...props
53
+ });
54
+ }
55
+
56
+ //#endregion
57
+ export { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger };
@@ -0,0 +1,43 @@
1
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
2
+ import { VStack } from "./stack.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+
7
+ //#region ../ui-kit-web/dist/ui/empty-state.js
8
+ init_utils();
9
+ const containerVariants = cva("items-center text-center", {
10
+ variants: { density: {
11
+ compact: "gap-3 p-6",
12
+ default: "gap-4 p-8"
13
+ } },
14
+ defaultVariants: { density: "default" }
15
+ });
16
+ function EmptyState({ icon, title, description, primaryAction, secondaryAction, className, density }) {
17
+ return /* @__PURE__ */ jsxs(VStack, {
18
+ className: cn(containerVariants({ density }), className),
19
+ children: [
20
+ icon ? /* @__PURE__ */ jsx("div", {
21
+ className: "bg-muted flex h-12 w-12 items-center justify-center rounded-full",
22
+ children: /* @__PURE__ */ jsx("div", {
23
+ className: "text-muted-foreground flex items-center justify-center",
24
+ children: icon
25
+ })
26
+ }) : null,
27
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
28
+ className: "font-medium",
29
+ children: title
30
+ }), description ? /* @__PURE__ */ jsx("p", {
31
+ className: "text-muted-foreground text-base",
32
+ children: description
33
+ }) : null] }),
34
+ (primaryAction || secondaryAction) && /* @__PURE__ */ jsxs("div", {
35
+ className: "flex items-center justify-center gap-2",
36
+ children: [primaryAction, secondaryAction]
37
+ })
38
+ ]
39
+ });
40
+ }
41
+
42
+ //#endregion
43
+ export { EmptyState };
@@ -0,0 +1,62 @@
1
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+
5
+ //#region ../ui-kit-web/dist/ui/empty.js
6
+ init_utils();
7
+ function Empty({ className, ...props }) {
8
+ return /* @__PURE__ */ jsx("div", {
9
+ "data-slot": "empty",
10
+ className: cn("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12", className),
11
+ ...props
12
+ });
13
+ }
14
+ function EmptyHeader({ className, ...props }) {
15
+ return /* @__PURE__ */ jsx("div", {
16
+ "data-slot": "empty-header",
17
+ className: cn("flex max-w-sm flex-col items-center gap-2 text-center", className),
18
+ ...props
19
+ });
20
+ }
21
+ const emptyMediaVariants = cva("flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
22
+ variants: { variant: {
23
+ default: "bg-transparent",
24
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
25
+ } },
26
+ defaultVariants: { variant: "default" }
27
+ });
28
+ function EmptyMedia({ className, variant = "default", ...props }) {
29
+ return /* @__PURE__ */ jsx("div", {
30
+ "data-slot": "empty-icon",
31
+ "data-variant": variant,
32
+ className: cn(emptyMediaVariants({
33
+ variant,
34
+ className
35
+ })),
36
+ ...props
37
+ });
38
+ }
39
+ function EmptyTitle({ className, ...props }) {
40
+ return /* @__PURE__ */ jsx("div", {
41
+ "data-slot": "empty-title",
42
+ className: cn("text-lg font-medium tracking-tight", className),
43
+ ...props
44
+ });
45
+ }
46
+ function EmptyDescription({ className, ...props }) {
47
+ return /* @__PURE__ */ jsx("p", {
48
+ "data-slot": "empty-description",
49
+ className: cn("text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4", className),
50
+ ...props
51
+ });
52
+ }
53
+ function EmptyContent({ className, ...props }) {
54
+ return /* @__PURE__ */ jsx("div", {
55
+ "data-slot": "empty-content",
56
+ className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", className),
57
+ ...props
58
+ });
59
+ }
60
+
61
+ //#endregion
62
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
@@ -0,0 +1,78 @@
1
+ 'use client';
2
+
3
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
4
+ import { Label } from "./label.js";
5
+ import * as React$1 from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { cva } from "class-variance-authority";
8
+
9
+ //#region ../ui-kit-web/dist/ui/field.js
10
+ init_utils();
11
+ function FieldGroup({ className, ...props }) {
12
+ return /* @__PURE__ */ jsx("div", {
13
+ "data-slot": "field-group",
14
+ className: cn("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 data-[slot=field-group]:*:gap-4", className),
15
+ ...props
16
+ });
17
+ }
18
+ const fieldVariants = cva("group/field flex w-full gap-3 data-[invalid=true]:text-destructive", {
19
+ variants: { orientation: {
20
+ vertical: ["flex-col *:w-full [&>.sr-only]:w-auto"],
21
+ horizontal: [
22
+ "flex-row items-center",
23
+ "data-[slot=field-label]:*:flex-auto",
24
+ "has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
25
+ ],
26
+ responsive: [
27
+ "flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto",
28
+ "@md/field-group:data-[slot=field-label]:*:flex-auto",
29
+ "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
30
+ ]
31
+ } },
32
+ defaultVariants: { orientation: "vertical" }
33
+ });
34
+ function Field({ className, orientation = "vertical", ...props }) {
35
+ return /* @__PURE__ */ jsx("div", {
36
+ role: "group",
37
+ "data-slot": "field",
38
+ "data-orientation": orientation,
39
+ className: cn(fieldVariants({ orientation }), className),
40
+ ...props
41
+ });
42
+ }
43
+ function FieldLabel({ className, ...props }) {
44
+ return /* @__PURE__ */ jsx(Label, {
45
+ "data-slot": "field-label",
46
+ className: cn("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-4", "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10", className),
47
+ ...props
48
+ });
49
+ }
50
+ function FieldDescription({ className, ...props }) {
51
+ return /* @__PURE__ */ jsx("p", {
52
+ "data-slot": "field-description",
53
+ className: cn("text-muted-foreground text-sm leading-normal font-normal group-has-data-[orientation=horizontal]/field:text-balance", "last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
54
+ ...props
55
+ });
56
+ }
57
+ function FieldError({ className, children, errors, ...props }) {
58
+ const content = React$1.useMemo(() => {
59
+ if (children) return children;
60
+ if (!errors?.length) return null;
61
+ if (errors?.length == 1) return errors[0]?.message;
62
+ return /* @__PURE__ */ jsx("ul", {
63
+ className: "ml-4 flex list-disc flex-col gap-1",
64
+ children: errors.map((error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index))
65
+ });
66
+ }, [children, errors]);
67
+ if (!content) return null;
68
+ return /* @__PURE__ */ jsx("div", {
69
+ role: "alert",
70
+ "data-slot": "field-error",
71
+ className: cn("text-destructive text-sm font-normal", className),
72
+ ...props,
73
+ children: content
74
+ });
75
+ }
76
+
77
+ //#endregion
78
+ export { Field, FieldDescription, FieldError, FieldGroup, FieldLabel };
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+
3
+ import * as React$1 from "react";
4
+ import { Controller, FormProvider, useForm as useForm$1 } from "react-hook-form";
5
+ import { zodResolver as zodResolver$1 } from "@hookform/resolvers/zod";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import "@radix-ui/react-label";
8
+ import { Slot } from "@radix-ui/react-slot";
9
+
10
+ //#region ../ui-kit-web/dist/ui/form.js
11
+ const Form = FormProvider;
12
+ const FormFieldContext = React$1.createContext({});
13
+ const FormItemContext = React$1.createContext({});
14
+
15
+ //#endregion
16
+ export { Form, useForm$1 as useForm, zodResolver$1 as zodResolver };
@@ -0,0 +1,40 @@
1
+ 'use client';
2
+
3
+ import { __esmMin } from "../../../_virtual/rolldown_runtime.js";
4
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
5
+ import "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
8
+
9
+ //#region ../ui-kit-web/dist/ui/hover-card.js
10
+ function HoverCard({ ...props }) {
11
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, {
12
+ "data-slot": "hover-card",
13
+ ...props
14
+ });
15
+ }
16
+ function HoverCardTrigger({ ...props }) {
17
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, {
18
+ "data-slot": "hover-card-trigger",
19
+ ...props
20
+ });
21
+ }
22
+ function HoverCardContent({ className, align = "center", sideOffset = 4, ...props }) {
23
+ return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, {
24
+ "data-slot": "hover-card-portal",
25
+ children: /* @__PURE__ */ jsx(HoverCardPrimitive.Content, {
26
+ "data-slot": "hover-card-content",
27
+ align,
28
+ sideOffset,
29
+ className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className),
30
+ ...props
31
+ })
32
+ });
33
+ }
34
+ var init_hover_card = __esmMin((() => {
35
+ init_utils();
36
+ }));
37
+
38
+ //#endregion
39
+ init_hover_card();
40
+ export { HoverCard, HoverCardContent, HoverCardTrigger, init_hover_card };
@@ -0,0 +1,17 @@
1
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
2
+ import "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region ../ui-kit-web/dist/ui/input.js
6
+ init_utils();
7
+ function Input({ className, type, ...props }) {
8
+ return /* @__PURE__ */ jsx("input", {
9
+ type,
10
+ "data-slot": "input",
11
+ className: cn("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className),
12
+ ...props
13
+ });
14
+ }
15
+
16
+ //#endregion
17
+ export { Input };
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+
3
+ import { cn, init_utils } from "../ui-kit-core/dist/utils.js";
4
+ import "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import * as LabelPrimitive from "@radix-ui/react-label";
7
+
8
+ //#region ../ui-kit-web/dist/ui/label.js
9
+ init_utils();
10
+ function Label({ className, ...props }) {
11
+ return /* @__PURE__ */ jsx(LabelPrimitive.Root, {
12
+ "data-slot": "label",
13
+ className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
14
+ ...props
15
+ });
16
+ }
17
+
18
+ //#endregion
19
+ export { Label };
@@ -0,0 +1,52 @@
1
+ import { Button } from "../button.js";
2
+ import { cn } from "../utils.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region ../ui-kit-web/dist/ui/marketing/Hero.js
7
+ function Hero({ title, subtitle, primaryCta, secondaryCta, className }) {
8
+ return /* @__PURE__ */ jsxs("section", {
9
+ className: cn("mx-auto max-w-4xl py-16 text-center", className),
10
+ children: [
11
+ /* @__PURE__ */ jsx("h1", {
12
+ className: "text-4xl font-bold tracking-tight md:text-5xl",
13
+ children: title
14
+ }),
15
+ subtitle && /* @__PURE__ */ jsx("p", {
16
+ className: "text-muted-foreground mt-4 text-lg md:text-xl",
17
+ children: subtitle
18
+ }),
19
+ (primaryCta || secondaryCta) && /* @__PURE__ */ jsxs("div", {
20
+ className: "mt-8 flex items-center justify-center gap-3",
21
+ children: [primaryCta && (primaryCta.href ? /* @__PURE__ */ jsx(Button, {
22
+ asChild: true,
23
+ size: "lg",
24
+ children: /* @__PURE__ */ jsx("a", {
25
+ href: primaryCta.href,
26
+ children: primaryCta.label
27
+ })
28
+ }) : /* @__PURE__ */ jsx(Button, {
29
+ size: "lg",
30
+ onClick: primaryCta.onClick,
31
+ children: primaryCta.label
32
+ })), secondaryCta && (secondaryCta.href ? /* @__PURE__ */ jsx(Button, {
33
+ variant: "outline",
34
+ asChild: true,
35
+ size: "lg",
36
+ children: /* @__PURE__ */ jsx("a", {
37
+ href: secondaryCta.href,
38
+ children: secondaryCta.label
39
+ })
40
+ }) : /* @__PURE__ */ jsx(Button, {
41
+ variant: "outline",
42
+ size: "lg",
43
+ onClick: secondaryCta.onClick,
44
+ children: secondaryCta.label
45
+ }))]
46
+ })
47
+ ]
48
+ });
49
+ }
50
+
51
+ //#endregion
52
+ export { Hero };
@@ -0,0 +1,59 @@
1
+ import { Button } from "../button.js";
2
+ import { cn } from "../utils.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region ../ui-kit-web/dist/ui/marketing/PricingTable.js
7
+ function PricingTable({ tiers, className }) {
8
+ return /* @__PURE__ */ jsxs("section", {
9
+ className: cn("mx-auto max-w-6xl py-12", className),
10
+ children: [/* @__PURE__ */ jsx("div", {
11
+ className: "grid grid-cols-1 gap-6 md:grid-cols-3",
12
+ children: tiers.map((t, idx) => /* @__PURE__ */ jsxs("div", {
13
+ className: cn("flex flex-col rounded-lg border p-6", t.highlighted && "border-primary shadow-lg"),
14
+ children: [
15
+ /* @__PURE__ */ jsx("div", {
16
+ className: "text-muted-foreground mb-2 text-base font-medium",
17
+ children: t.name
18
+ }),
19
+ /* @__PURE__ */ jsx("div", {
20
+ className: "text-3xl font-semibold",
21
+ children: t.price
22
+ }),
23
+ t.tagline && /* @__PURE__ */ jsx("div", {
24
+ className: "text-muted-foreground mt-1 text-base",
25
+ children: t.tagline
26
+ }),
27
+ /* @__PURE__ */ jsx("ul", {
28
+ className: "mt-4 space-y-2 text-base",
29
+ children: t.features.map((f, i) => /* @__PURE__ */ jsxs("li", {
30
+ className: "flex items-start gap-2",
31
+ children: [/* @__PURE__ */ jsx("span", { className: "bg-primary mt-1 h-1.5 w-1.5 rounded-full" }), /* @__PURE__ */ jsx("span", { children: f })]
32
+ }, i))
33
+ }),
34
+ t.cta && /* @__PURE__ */ jsx("div", {
35
+ className: "mt-6",
36
+ children: t.cta.href ? /* @__PURE__ */ jsx(Button, {
37
+ asChild: true,
38
+ className: "w-full",
39
+ children: /* @__PURE__ */ jsx("a", {
40
+ href: t.cta.href,
41
+ children: t.cta.label
42
+ })
43
+ }) : /* @__PURE__ */ jsx(Button, {
44
+ className: "w-full",
45
+ onClick: t.cta.onClick,
46
+ children: t.cta.label
47
+ })
48
+ })
49
+ ]
50
+ }, idx))
51
+ }), /* @__PURE__ */ jsx("p", {
52
+ className: "text-muted-foreground mt-6 text-center text-base",
53
+ children: "Usage-based tiers inspired by generous free allowances and per-unit pricing."
54
+ })]
55
+ });
56
+ }
57
+
58
+ //#endregion
59
+ export { PricingTable };