@pebble-software/bonsai 0.0.8 → 0.1.1

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 (118) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +371 -88
  3. package/dist/ast.js +10 -0
  4. package/dist/ast.js.map +1 -0
  5. package/dist/chunks/builder.meta-WpXc5VBB.js +666 -0
  6. package/dist/chunks/builder.meta-WpXc5VBB.js.map +1 -0
  7. package/dist/chunks/button-jfJanilw.js +161 -0
  8. package/dist/chunks/button-jfJanilw.js.map +1 -0
  9. package/dist/chunks/create-renderer-DHneTPd-.js +280 -0
  10. package/dist/chunks/create-renderer-DHneTPd-.js.map +1 -0
  11. package/dist/chunks/index-DzpRdatr.js +359 -0
  12. package/dist/chunks/index-DzpRdatr.js.map +1 -0
  13. package/dist/chunks/render-shared-Ci28BpkI.js +1989 -0
  14. package/dist/chunks/render-shared-Ci28BpkI.js.map +1 -0
  15. package/dist/components/core/bonsai.d.ts +5 -0
  16. package/dist/components/core/render-shared.d.ts +123 -0
  17. package/dist/components/core/render-tree-client.d.ts +4 -0
  18. package/dist/components/core/render-tree-server.d.ts +2 -0
  19. package/dist/components/ui/a.d.ts +3 -0
  20. package/dist/components/ui/accordion.d.ts +17 -0
  21. package/dist/components/ui/alert-dialog.d.ts +23 -0
  22. package/dist/components/ui/alert.d.ts +12 -0
  23. package/dist/components/ui/avatar.d.ts +21 -0
  24. package/dist/components/ui/badge.d.ts +10 -0
  25. package/dist/components/ui/breadcrumb.d.ts +10 -0
  26. package/dist/components/ui/button.d.ts +14 -0
  27. package/dist/components/ui/calendar.d.ts +9 -0
  28. package/dist/components/ui/card.d.ts +15 -0
  29. package/dist/components/ui/checkbox.d.ts +7 -0
  30. package/dist/components/ui/collapsible.d.ts +5 -0
  31. package/dist/components/ui/combobox.d.ts +31 -0
  32. package/dist/components/ui/command.d.ts +23 -0
  33. package/dist/components/ui/dialog.d.ts +23 -0
  34. package/dist/components/ui/drawer.d.ts +22 -0
  35. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  36. package/dist/components/ui/form.d.ts +24 -0
  37. package/dist/components/ui/h.d.ts +10 -0
  38. package/dist/components/ui/input-group.d.ts +18 -0
  39. package/dist/components/ui/input-otp.d.ts +11 -0
  40. package/dist/components/ui/input.d.ts +3 -0
  41. package/dist/components/ui/label.d.ts +10 -0
  42. package/dist/components/ui/loader.d.ts +14 -0
  43. package/dist/components/ui/p.d.ts +11 -0
  44. package/dist/components/ui/popover.d.ts +9 -0
  45. package/dist/components/ui/progress.d.ts +31 -0
  46. package/dist/components/ui/scroll-area.d.ts +13 -0
  47. package/dist/components/ui/select.d.ts +17 -0
  48. package/dist/components/ui/separator.d.ts +8 -0
  49. package/dist/components/ui/sidebar.d.ts +70 -0
  50. package/dist/components/ui/signature-pad.d.ts +7 -0
  51. package/dist/components/ui/skeleton.d.ts +7 -0
  52. package/dist/components/ui/switch.d.ts +8 -0
  53. package/dist/components/ui/table.d.ts +14 -0
  54. package/dist/components/ui/tabs.d.ts +15 -0
  55. package/dist/components/ui/textarea.d.ts +5 -0
  56. package/dist/components/ui/toast.d.ts +46 -0
  57. package/dist/components/ui/tooltip.d.ts +15 -0
  58. package/dist/constants.d.ts +1 -0
  59. package/dist/constants.js +11 -0
  60. package/dist/constants.js.map +1 -0
  61. package/dist/core.d.ts +12 -0
  62. package/dist/core.js +17 -0
  63. package/dist/core.js.map +1 -0
  64. package/dist/hooks/haptics.d.ts +8 -0
  65. package/dist/hooks/use-mobile.d.ts +1 -0
  66. package/dist/index.css +7 -0
  67. package/dist/index.d.ts +27 -339
  68. package/dist/index.js +532 -4297
  69. package/dist/index.js.map +1 -0
  70. package/dist/lib/ast/cache.d.ts +8 -0
  71. package/dist/lib/ast/evaluator.d.ts +2 -0
  72. package/dist/lib/ast/helpers.d.ts +2 -0
  73. package/dist/lib/ast/index.d.ts +29 -0
  74. package/dist/lib/ast/setup.d.ts +2 -0
  75. package/dist/lib/ast/types.d.ts +1 -0
  76. package/dist/lib/ast/utils.d.ts +4 -0
  77. package/dist/lib/haptics.d.ts +8 -0
  78. package/dist/lib/registry/drift.d.ts +17 -0
  79. package/dist/lib/registry/identity.d.ts +24 -0
  80. package/dist/lib/registry/json-schema-to-zod.d.ts +32 -0
  81. package/dist/lib/registry/manifest-schema.d.ts +62 -0
  82. package/dist/lib/registry/manifest.d.ts +26 -0
  83. package/dist/lib/registry/merge-generated.d.ts +7 -0
  84. package/dist/lib/registry/pebble-registry.d.ts +1 -0
  85. package/dist/lib/registry/types.d.ts +29 -0
  86. package/dist/lib/registry/validate.d.ts +18 -0
  87. package/dist/lib/renderer/compile-template.d.ts +70 -0
  88. package/dist/lib/ui/registry.d.ts +19 -0
  89. package/dist/lib/utils.d.ts +3 -0
  90. package/dist/library/constants/src/components.d.ts +59 -0
  91. package/dist/library/constants/src/index.d.ts +2 -0
  92. package/dist/library/constants/src/webhook-events.d.ts +6 -0
  93. package/dist/library/schemas/src/bonsai.schema.d.ts +24 -0
  94. package/dist/library/schemas/src/builder.meta.d.ts +26 -0
  95. package/dist/presets/calendar.js +374 -0
  96. package/dist/presets/calendar.js.map +1 -0
  97. package/dist/presets/signature.js +405 -0
  98. package/dist/presets/signature.js.map +1 -0
  99. package/dist/renderer/core-registry.d.ts +52 -0
  100. package/dist/renderer/create-renderer.d.ts +38 -0
  101. package/dist/renderer/presets/calendar.d.ts +5 -0
  102. package/dist/renderer/presets/signature.d.ts +6 -0
  103. package/dist/schemas.d.ts +2 -0
  104. package/dist/schemas.js +13 -0
  105. package/dist/schemas.js.map +1 -0
  106. package/dist/styles/css/base.css +144 -0
  107. package/dist/styles/css/fonts.css +25 -0
  108. package/dist/styles/css/maplibre.css +29 -0
  109. package/dist/styles/css/overrides.css +7 -0
  110. package/dist/styles/css/tailwind.css +1 -0
  111. package/dist/styles/css/theme.css +197 -0
  112. package/dist/styles/css/tw-animate.css +1 -0
  113. package/dist/styles/css/utilities.css +44 -0
  114. package/dist/styles/presets.json +20 -0
  115. package/dist/styles/vendor/maplibre-gl.css +701 -0
  116. package/dist/styles/vendor/tw-animate.css +692 -0
  117. package/dist/types.d.ts +1 -0
  118. package/package.json +64 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.meta-WpXc5VBB.js","sources":["../../../../library/schemas/src/bonsai.schema.ts","../../../../library/schemas/src/builder.meta.ts"],"sourcesContent":["import { COMPONENT } from \"@bonsai/constants\";\nimport { z } from \"zod\";\n\nconst CoreArgs = z.object({\n id: z.string().optional().meta({ description: \"Unique identifier for the element\" }),\n className: z\n .string()\n .optional()\n .meta({ description: \"CSS classes to apply to the element\" }),\n});\n\nconst AArgs = CoreArgs.extend({\n href: z\n .string({ error: \"Link destination (href) is required\" })\n .min(1, { message: \"Link destination (href) cannot be empty\" }),\n});\n\nconst HArgs = CoreArgs.extend({\n variant: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading variant. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Heading level variant (h1-h6)\" }),\n as: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading element type. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Render as a different heading element\" }),\n}).optional();\n\nconst PArgs = CoreArgs.extend({\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"], {\n error: \"Invalid paragraph size. Must be one of: xs, sm, md, lg, or xl\",\n })\n .optional()\n .meta({ description: \"Paragraph text size\" }),\n variant: z\n .enum([\"default\", \"muted\"])\n .optional()\n .meta({ description: \"Paragraph style variant\" }),\n as: z\n .enum([\"p\", \"div\", \"span\"])\n .optional()\n .meta({ description: \"Render as a different element\" }),\n}).optional();\n\nconst OLArgs = CoreArgs.optional();\nconst ULArgs = CoreArgs.optional();\nconst LIArgs = CoreArgs.optional();\n\nconst DivArgs = CoreArgs.optional();\n\nconst SpanArgs = CoreArgs.optional();\n\nconst SeparatorArgs = CoreArgs.optional();\n\nconst AlertArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"success\", \"warning\", \"destructive\"], {\n error: \"Invalid alert variant. Must be one of: default, success, warning, or destructive\",\n })\n .optional()\n .meta({ description: \"Alert style variant\" }),\n size: z\n .enum([\"default\", \"sm\", \"lg\"])\n .optional()\n .meta({ description: \"Alert size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Alert shadow elevation\" }),\n}).optional();\n\nconst BadgeArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"destructive\", \"outline\", \"ghost\"], {\n error: \"Invalid badge variant. Must be one of: default, secondary, destructive, outline, or ghost\",\n })\n .optional()\n .meta({ description: \"Badge style variant\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge extrude elevation\" }),\n}).optional();\n\nconst ButtonArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"], {\n error:\n \"Invalid button variant. Must be one of: default, secondary, outline, destructive, warning, or ghost\",\n })\n .optional()\n .meta({ description: \"Button style variant\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"], {\n error: \"Invalid button size. Must be one of: xs, sm, md, or lg\",\n })\n .optional()\n .meta({ description: \"Button size\" }),\n icon: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Icon-only button size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button extrude elevation\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the button is disabled\" }),\n loading: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether to show a loading spinner\" }),\n type: z\n .enum([\"button\", \"submit\"], {\n error: \"Invalid button type. Must be either 'button' or 'submit'\",\n })\n .optional()\n .meta({ description: \"Button type attribute\" }),\n}).optional();\n\nconst CardArgs = CoreArgs.extend({\n size: z\n .enum([\"sm\", \"md\"])\n .optional()\n .meta({ description: \"Card size\" }),\n raised: z\n .enum([\"none\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Card shadow elevation\" }),\n}).optional();\n\nconst CardHeaderArgs = CoreArgs.optional();\nconst CardTitleArgs = CoreArgs.optional();\nconst CardDescriptionArgs = CoreArgs.optional();\nconst CardContentArgs = CoreArgs.optional();\nconst CardFooterArgs = CoreArgs.optional();\nconst CardActionArgs = CoreArgs.optional();\nconst CardIconArgs = CoreArgs.optional();\n\nconst CheckboxArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Checkbox checked state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox must be checked\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Checkbox size\" }),\n}).strict();\n\nconst ImageArgs = CoreArgs.extend({\n src: z.union(\n [\n z.url({ error: \"Image source (src) must be a valid URL\" }),\n z.string().min(1, { message: \"Image source (src) cannot be empty\" }),\n ],\n {\n error: \"Image source (src) is required\",\n },\n ),\n alt: z\n .string()\n .optional()\n .default(\"unknown image url\")\n .meta({ description: \"Alternative text for the image\" }),\n}).strict();\n\nconst OTPArgs = CoreArgs.extend({\n value: z\n .union([z.string(), z.number()], {\n error: \"OTP value is required\",\n })\n .meta({ description: \"Current OTP value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text for the OTP input\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the OTP input is disabled\" }),\n containerClassName: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the OTP input container\" }),\n}).strict();\n\nconst InputArgs = CoreArgs.extend({\n type: z\n .enum([\"text\", \"email\", \"password\", \"number\"], {\n error: \"Invalid input type. Must be one of: text, email, password, or number\",\n })\n .optional()\n .meta({ description: \"Input type; a number input stores a number\" }),\n value: z\n .union([z.string(), z.number()], {\n error: \"Input value is required\",\n })\n .meta({ description: \"Current input value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst LabelArgs = CoreArgs.extend({\n htmlFor: z\n .string()\n .min(1, {\n message:\n \"Label 'for' attribute is required and must reference an input ID\",\n })\n .meta({ description: \"ID of the associated input element\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Label text size\" }),\n variant: z\n .enum([\"default\", \"underline\", \"destructive\"])\n .optional()\n .meta({ description: \"Label style variant\" }),\n}).strict();\n\nconst SwitchArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()], {\n error: \"Switch checked state is required\",\n })\n .meta({ description: \"Current switch state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch must be turned on\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Switch size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Switch border radius\" }),\n}).strict();\n\nconst TextareaArgs = CoreArgs.extend({\n value: z\n .string({ error: \"Textarea value is required\" })\n .meta({ description: \"Current textarea content\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the textarea is disabled\" }),\n autosize: z\n .boolean()\n .optional()\n .meta({ description: \"Whether the textarea auto-resizes to fit content\" }),\n rows: z\n .number()\n .min(1, { message: \"Minimum number of rows is 1\" })\n .max(100, { message: \"Maximum number of rows is 100\" })\n .optional()\n .meta({ description: \"Number of visible text lines\" }),\n minLength: z\n .number()\n .min(0, { message: \"Minimum character length cannot be negative\" })\n .optional()\n .meta({ description: \"Minimum number of characters allowed\" }),\n maxLength: z\n .number()\n .max(10000, { message: \"Maximum character length cannot exceed 10,000\" })\n .optional()\n .meta({ description: \"Maximum number of characters allowed\" }),\n}).strict();\n\nconst InputGroupArgs = CoreArgs.optional();\n\nconst InputGroupTextArgs = CoreArgs.optional();\n\nconst InputGroupAddonArgs = CoreArgs.extend({\n align: z.enum([\"inline-start\", \"inline-end\", \"block-start\", \"block-end\"])\n .optional()\n .meta({ description: \"Alignment of the addon within the input group\" }),\n}).optional();\n\nconst InputGroupInputArgs = CoreArgs.extend({\n value: z.union([z.string(), z.number()], {\n error: \"Input value is required\",\n }).meta({ description: \"Current input value\" }),\n placeholder: z.string().optional().meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z.union([z.string(), z.boolean()]).optional().meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst InputGroupButtonArgs = CoreArgs.extend({\n variant: z.enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"]).optional(),\n size: z.enum([\"xs\", \"sm\", \"md\", \"lg\"]).optional(),\n}).optional();\n\nconst InputGroupTextareaArgs = CoreArgs.extend({\n value: z.string({ error: \"Textarea value is required\" }).meta({ description: \"Current textarea content\" }),\n placeholder: z.string().optional(),\n disabled: z.union([z.string(), z.boolean()]).optional(),\n}).strict();\n\nconst SignatureArgs = CoreArgs.extend({\n value: z\n .string()\n .nullable()\n .meta({ description: \"Current signature value (base64 or null if empty)\" }),\n canvasClassname: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the signature canvas\" }),\n imageType: z\n .enum([\"image/png\", \"image/jpeg\", \"image/webp\"])\n .optional()\n .meta({ description: \"Image format for the exported signature\" }),\n}).strict();\n\nconst CalendarArgs = CoreArgs.extend({\n selected: z\n .union([z.string(), z.date(), z.array(z.date())], {\n error:\n \"Invalid calendar selection. Must be a date string, Date object, or array of dates\",\n })\n .optional()\n .meta({ description: \"Currently selected date(s)\" }),\n buttonVariant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"])\n .optional()\n .meta({ description: \"Variant for calendar navigation buttons\" }),\n hideWeekends: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to hide Saturday and Sunday columns\" }),\n}).optional();\n\nconst TableArgs = CoreArgs.optional();\nconst TableHeaderArgs = CoreArgs.optional();\nconst TableBodyArgs = CoreArgs.optional();\nconst TableFooterArgs = CoreArgs.optional();\nconst TableHeadArgs = CoreArgs.optional();\nconst TableRowArgs = CoreArgs.optional();\nconst TableCellArgs = CoreArgs.optional();\nconst TableCaptionArgs = CoreArgs.optional();\n\nconst AccordionArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"contained\", \"separated\"])\n .optional()\n .meta({ description: \"Accordion style variant\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion extrude elevation\" }),\n}).optional();\n\nconst AccordionItemArgs = CoreArgs.optional();\n\nconst AccordionTriggerArgs = CoreArgs.extend({\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the accordion trigger is disabled\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom icon component for the trigger\" }),\n}).optional();\n\nconst AccordionContentArgs = CoreArgs.optional();\n\nconst AvatarArgs = CoreArgs.extend({\n src: z\n .string()\n .optional()\n .meta({ description: \"Image source URL\" }),\n alt: z\n .string()\n .optional()\n .meta({ description: \"Alternative text for the avatar image\" }),\n size: z\n .enum([\"full\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Avatar size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Avatar border radius\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Avatar shadow elevation\" }),\n fallback: z\n .string()\n .optional()\n .meta({ description: \"Fallback text or element when image fails to load\" }),\n badge: z\n .any()\n .optional()\n .meta({ description: \"Badge element to overlay on the avatar\" }),\n}).optional();\n\nconst CollapsibleArgs = CoreArgs.optional();\nconst CollapsibleTriggerArgs = CoreArgs.optional();\nconst CollapsibleContentArgs = CoreArgs.optional();\n\nconst LoaderArgs = CoreArgs.extend({\n variant: z\n .enum([\"spinner\", \"ping\"])\n .optional()\n .meta({ description: \"Loader animation variant\" }),\n fill: z\n .enum([\"default\", \"destructive\", \"warning\", \"pending\"])\n .optional()\n .meta({ description: \"Loader fill color\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Loader size\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom spinner icon component\" }),\n pingIcon: z\n .any()\n .optional()\n .meta({ description: \"Custom ping icon component\" }),\n iconProps: z\n .any()\n .optional()\n .meta({ description: \"Props to pass to the icon components\" }),\n}).optional();\n\nconst ProgressArgs = CoreArgs.extend({\n mode: z\n .enum([\"single\", \"multiple\"])\n .optional()\n .meta({ description: \"Progress display mode\" }),\n value: z\n .union([\n z.number().nullable(),\n z.array(\n z.object({\n name: z.string().optional(),\n value: z.number(),\n }),\n ),\n ])\n .optional()\n .meta({ description: \"Current progress value(s)\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress size\" }),\n raised: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress shadow elevation\" }),\n stacked: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress stacked spacing\" }),\n}).optional();\n\nconst SkeletonArgs = CoreArgs.extend({\n variant: z\n .enum([\"circle\", \"square\", \"default\", \"text\"])\n .optional()\n .meta({ description: \"Skeleton shape variant\" }),\n animate: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to animate the skeleton\" }),\n}).optional();\n\nconst Node: z.ZodType<any> = z.lazy(() => z.union([z.string(), ComponentNode]));\n\nconst CoreNode = z.object({\n children: z\n .array(Node)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n});\n\nconst DivNode = CoreNode.extend({\n type: z.literal(COMPONENT.DIV),\n args: DivArgs,\n}).meta({ description: \"Container div element for grouping content\" });\n\nconst ANode = CoreNode.extend({\n type: z.literal(COMPONENT.A),\n args: AArgs,\n}).meta({ description: \"Anchor/link element\" });\n\nconst HNode = CoreNode.extend({\n type: z.literal(COMPONENT.H),\n args: HArgs,\n}).meta({ description: \"Heading element (h1-h6)\" });\n\nconst PNode = CoreNode.extend({\n type: z.literal(COMPONENT.P),\n args: PArgs,\n}).meta({ description: \"Paragraph text element\" });\n\nconst OLNode = CoreNode.extend({\n type: z.literal(COMPONENT.OL),\n args: OLArgs,\n}).meta({ description: \"Ordered list element\" });\n\nconst ULNode = CoreNode.extend({\n type: z.literal(COMPONENT.UL),\n args: ULArgs,\n}).meta({ description: \"Unordered list element\" });\n\nconst LINode = CoreNode.extend({\n type: z.literal(COMPONENT.LI),\n args: LIArgs,\n}).meta({ description: \"List item element\" });\n\nconst SpanNode = CoreNode.extend({\n type: z.literal(COMPONENT.SPAN),\n args: SpanArgs,\n}).meta({ description: \"Inline span element\" });\n\nconst SeparatorNode = CoreNode.extend({\n type: z.literal(COMPONENT.SEPARATOR),\n args: SeparatorArgs,\n}).meta({ description: \"Horizontal separator / divider element\" });\n\nconst AlertNode = CoreNode.extend({\n type: z.literal(COMPONENT.ALERT),\n args: AlertArgs,\n}).meta({ description: \"Alert message box\" });\n\nconst BadgeNode = CoreNode.extend({\n type: z.literal(COMPONENT.BADGE),\n args: BadgeArgs,\n}).meta({ description: \"Badge/status indicator\" });\n\nconst ButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.BUTTON),\n args: ButtonArgs,\n}).meta({ description: \"Clickable button element\" });\n\nconst CardNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD),\n args: CardArgs,\n}).meta({ description: \"Card container element\" });\n\nconst CheckboxNode = CoreNode.extend({\n type: z.literal(COMPONENT.CHECKBOX),\n args: CheckboxArgs,\n}).meta({ description: \"Checkbox input element\" });\n\nconst ImageNode = CoreNode.extend({\n type: z.literal(COMPONENT.IMAGE),\n args: ImageArgs,\n}).meta({ description: \"Image element\" });\n\nconst OTPNode = CoreNode.extend({\n type: z.literal(COMPONENT.OTP),\n args: OTPArgs,\n}).meta({ description: \"One-time password (OTP) input\" });\n\nconst InputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT),\n args: InputArgs,\n}).meta({ description: \"Text input element\" });\n\nconst LabelNode = CoreNode.extend({\n type: z.literal(COMPONENT.LABEL),\n args: LabelArgs,\n}).meta({ description: \"Form label element\" });\n\nconst SwitchNode = CoreNode.extend({\n type: z.literal(COMPONENT.SWITCH),\n args: SwitchArgs,\n}).meta({ description: \"Toggle switch element\" });\n\nconst TextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.TEXTAREA),\n args: TextareaArgs,\n}).meta({ description: \"Multi-line text input\" });\n\nconst SignatureNode = CoreNode.extend({\n type: z.literal(COMPONENT.SIGNATURE),\n args: SignatureArgs,\n}).meta({ description: \"Signature pad input\" });\n\nconst CalendarNode = CoreNode.extend({\n type: z.literal(COMPONENT.CALENDAR),\n args: CalendarArgs,\n}).meta({ description: \"Date picker calendar\" });\n\nconst CardHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_HEADER),\n args: CardHeaderArgs,\n}).meta({ description: \"Card header container\" });\n\nconst CardTitleNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_TITLE),\n args: CardTitleArgs,\n}).meta({ description: \"Card title element\" });\n\nconst CardDescriptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_DESCRIPTION),\n args: CardDescriptionArgs,\n}).meta({ description: \"Card description element\" });\n\nconst CardContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_CONTENT),\n args: CardContentArgs,\n}).meta({ description: \"Card content body\" });\n\nconst CardFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_FOOTER),\n args: CardFooterArgs,\n}).meta({ description: \"Card footer container\" });\n\nconst CardActionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ACTION),\n args: CardActionArgs,\n}).meta({ description: \"Card action slot\" });\n\nconst CardIconNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ICON),\n args: CardIconArgs,\n}).meta({ description: \"Card icon slot\" });\n\nconst TableNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE),\n args: TableArgs,\n}).meta({ description: \"Table container\" });\n\nconst TableHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEADER),\n args: TableHeaderArgs,\n}).meta({ description: \"Table header section\" });\n\nconst TableBodyNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_BODY),\n args: TableBodyArgs,\n}).meta({ description: \"Table body section\" });\n\nconst TableFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_FOOTER),\n args: TableFooterArgs,\n}).meta({ description: \"Table footer section\" });\n\nconst TableHeadNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEAD),\n args: TableHeadArgs,\n}).meta({ description: \"Table header cell\" });\n\nconst TableRowNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_ROW),\n args: TableRowArgs,\n}).meta({ description: \"Table row\" });\n\nconst TableCellNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CELL),\n args: TableCellArgs,\n}).meta({ description: \"Table data cell\" });\n\nconst TableCaptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CAPTION),\n args: TableCaptionArgs,\n}).meta({ description: \"Table caption\" });\n\nconst AccordionNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION),\n args: AccordionArgs,\n}).meta({ description: \"Accordion container\" });\n\nconst AccordionItemNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_ITEM),\n args: AccordionItemArgs,\n}).meta({ description: \"Accordion item\" });\n\nconst AccordionTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_TRIGGER),\n args: AccordionTriggerArgs,\n}).meta({ description: \"Accordion trigger\" });\n\nconst AccordionContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_CONTENT),\n args: AccordionContentArgs,\n}).meta({ description: \"Accordion content panel\" });\n\nconst AvatarNode = CoreNode.extend({\n type: z.literal(COMPONENT.AVATAR),\n args: AvatarArgs,\n}).meta({ description: \"Avatar image or fallback\" });\n\nconst CollapsibleNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE),\n args: CollapsibleArgs,\n}).meta({ description: \"Collapsible container\" });\n\nconst CollapsibleTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_TRIGGER),\n args: CollapsibleTriggerArgs,\n}).meta({ description: \"Collapsible trigger\" });\n\nconst CollapsibleContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_CONTENT),\n args: CollapsibleContentArgs,\n}).meta({ description: \"Collapsible content panel\" });\n\nconst LoaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.LOADER),\n args: LoaderArgs,\n}).meta({ description: \"Loading spinner indicator\" });\n\nconst ProgressNode = CoreNode.extend({\n type: z.literal(COMPONENT.PROGRESS),\n args: ProgressArgs,\n}).meta({ description: \"Progress bar indicator\" });\n\nconst SkeletonNode = CoreNode.extend({\n type: z.literal(COMPONENT.SKELETON),\n args: SkeletonArgs,\n}).meta({ description: \"Skeleton loading placeholder\" });\n\nconst InputGroupNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP),\n args: InputGroupArgs,\n}).meta({ description: \"Input group container\" });\n\nconst InputGroupTextNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXT),\n args: InputGroupTextArgs,\n}).meta({ description: \"Text element within input group\" });\n\nconst InputGroupAddonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_ADDON),\n args: InputGroupAddonArgs,\n}).meta({ description: \"Addon container within input group\" });\n\nconst InputGroupInputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_INPUT),\n args: InputGroupInputArgs,\n}).meta({ description: \"Input element within input group\" });\n\nconst InputGroupButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_BUTTON),\n args: InputGroupButtonArgs,\n}).meta({ description: \"Button element within input group\" });\n\nconst InputGroupTextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXTAREA),\n args: InputGroupTextareaArgs,\n}).meta({ description: \"Textarea element within input group\" });\n\nconst EachArgs = z\n .object({\n items: z\n .string({ error: \"each.items is required\" })\n .min(1, { message: \"each.items cannot be empty\" })\n .meta({\n description:\n 'Binding path to the array to iterate, e.g. \"{{applicants}}\". Must be a plain path (not a computed/filtered expression) so each row maps back to a real store index for two-way binding.',\n }),\n as: z\n .string({ error: \"each.as is required\" })\n .min(1, { message: \"each.as cannot be empty\" })\n .meta({ description: \"Alias name bound to the current item, e.g. \\\"applicant\\\"\" }),\n index: z\n .string()\n .optional()\n .meta({ description: \"Alias name bound to the current numeric index\" }),\n key: z\n .string()\n .optional()\n .meta({\n description:\n 'Binding expression used as the React key per row, e.g. \"{{applicant.id}}\". Falls back to the row index when omitted.',\n }),\n })\n .strict();\n\nconst EachNode = CoreNode.extend({\n type: z.literal(COMPONENT.EACH),\n args: EachArgs,\n}).meta({ description: \"Repeats its children once per item in a bound array\" });\n\nconst IfArgs = z\n .object({\n condition: z\n .string({ error: \"if.condition is required\" })\n .min(1, { message: \"if.condition cannot be empty\" })\n .meta({ description: \"Binding expression; children render only when it evaluates truthy\" }),\n })\n .strict();\n\nconst IfNode = CoreNode.extend({\n type: z.literal(COMPONENT.IF),\n args: IfArgs,\n}).meta({ description: \"Conditionally renders its children based on a bound expression\" });\n\n// Extracts the `args` sub-schema and description back out of an already-built `*Node`\n// schema, so the registry-driven builder below can reuse every hand-written node\n// definition above without retyping its args schema or description.\nfunction argsOf(node: z.ZodType<any>): z.ZodType<any> {\n return (node as unknown as { shape: { args: z.ZodType<any> } }).shape.args;\n}\n\nfunction descriptionOf(node: z.ZodType<any>): string | undefined {\n return (node.meta() as { description?: string } | undefined)?.description;\n}\n\nexport interface TemplateSchemaComponent {\n argsSchema: z.ZodType<any>;\n description?: string;\n}\n\nexport interface GeneratedTemplateSchema {\n Node: z.ZodType<any>;\n ComponentNode: z.ZodDiscriminatedUnion<any>;\n}\n\n/**\n * Builds the same `CoreNode.extend({ type, args }).meta({ description })` shape used\n * above, from a registry's component list rather than a hand-written literal — the\n * union stops being static; it does not stop existing. See REGISTRY_SPIKE.md,\n * \"Schema strategy\".\n */\nexport function createTemplateSchema(\n components: Record<string, TemplateSchemaComponent>,\n): GeneratedTemplateSchema {\n if (Object.keys(components).length === 0) {\n throw new Error(\"createTemplateSchema: registry must declare at least one component\");\n }\n\n // Self-contained recursion (its own Node/CoreNode), not the module-level ones above —\n // those exist only so PEBBLE_COMPONENT_SCHEMAS can source args/descriptions from the\n // hand-written *Node consts. Reusing the module Node here would make `Config` a second,\n // structurally-identical-but-distinct lazy wrapper, which breaks zod-openapi's schema\n // dedup/naming (it stops emitting a named `BonsaiConfig` $ref and inlines it instead).\n let componentNode: z.ZodDiscriminatedUnion<any>;\n const localNode: z.ZodType<any> = z.lazy(() => z.union([z.string(), componentNode]));\n const localCoreNode = z.object({\n children: z\n .array(localNode)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n });\n\n const nodeSchemas = Object.entries(components).map(([type, { argsSchema, description }]) => {\n const node = localCoreNode.extend({\n type: z.literal(type),\n args: argsSchema,\n });\n return description ? node.meta({ description }) : node;\n });\n componentNode = z.discriminatedUnion(\n \"type\",\n nodeSchemas as [(typeof nodeSchemas)[number], ...(typeof nodeSchemas)[number][]],\n );\n return { Node: localNode, ComponentNode: componentNode };\n}\n\nexport const PEBBLE_COMPONENT_SCHEMAS: Record<string, TemplateSchemaComponent> = {\n [COMPONENT.DIV]: { argsSchema: argsOf(DivNode), description: descriptionOf(DivNode) },\n [COMPONENT.A]: { argsSchema: argsOf(ANode), description: descriptionOf(ANode) },\n [COMPONENT.H]: { argsSchema: argsOf(HNode), description: descriptionOf(HNode) },\n [COMPONENT.P]: { argsSchema: argsOf(PNode), description: descriptionOf(PNode) },\n [COMPONENT.OL]: { argsSchema: argsOf(OLNode), description: descriptionOf(OLNode) },\n [COMPONENT.UL]: { argsSchema: argsOf(ULNode), description: descriptionOf(ULNode) },\n [COMPONENT.LI]: { argsSchema: argsOf(LINode), description: descriptionOf(LINode) },\n [COMPONENT.SPAN]: { argsSchema: argsOf(SpanNode), description: descriptionOf(SpanNode) },\n [COMPONENT.SEPARATOR]: {\n argsSchema: argsOf(SeparatorNode),\n description: descriptionOf(SeparatorNode),\n },\n [COMPONENT.ALERT]: { argsSchema: argsOf(AlertNode), description: descriptionOf(AlertNode) },\n [COMPONENT.BADGE]: { argsSchema: argsOf(BadgeNode), description: descriptionOf(BadgeNode) },\n [COMPONENT.BUTTON]: { argsSchema: argsOf(ButtonNode), description: descriptionOf(ButtonNode) },\n [COMPONENT.CARD]: { argsSchema: argsOf(CardNode), description: descriptionOf(CardNode) },\n [COMPONENT.CARD_HEADER]: {\n argsSchema: argsOf(CardHeaderNode),\n description: descriptionOf(CardHeaderNode),\n },\n [COMPONENT.CARD_TITLE]: {\n argsSchema: argsOf(CardTitleNode),\n description: descriptionOf(CardTitleNode),\n },\n [COMPONENT.CARD_DESCRIPTION]: {\n argsSchema: argsOf(CardDescriptionNode),\n description: descriptionOf(CardDescriptionNode),\n },\n [COMPONENT.CARD_CONTENT]: {\n argsSchema: argsOf(CardContentNode),\n description: descriptionOf(CardContentNode),\n },\n [COMPONENT.CARD_FOOTER]: {\n argsSchema: argsOf(CardFooterNode),\n description: descriptionOf(CardFooterNode),\n },\n [COMPONENT.CARD_ACTION]: {\n argsSchema: argsOf(CardActionNode),\n description: descriptionOf(CardActionNode),\n },\n [COMPONENT.CARD_ICON]: {\n argsSchema: argsOf(CardIconNode),\n description: descriptionOf(CardIconNode),\n },\n [COMPONENT.CHECKBOX]: {\n argsSchema: argsOf(CheckboxNode),\n description: descriptionOf(CheckboxNode),\n },\n [COMPONENT.IMAGE]: { argsSchema: argsOf(ImageNode), description: descriptionOf(ImageNode) },\n [COMPONENT.OTP]: { argsSchema: argsOf(OTPNode), description: descriptionOf(OTPNode) },\n [COMPONENT.INPUT]: { argsSchema: argsOf(InputNode), description: descriptionOf(InputNode) },\n [COMPONENT.LABEL]: { argsSchema: argsOf(LabelNode), description: descriptionOf(LabelNode) },\n [COMPONENT.SWITCH]: { argsSchema: argsOf(SwitchNode), description: descriptionOf(SwitchNode) },\n [COMPONENT.TEXTAREA]: {\n argsSchema: argsOf(TextareaNode),\n description: descriptionOf(TextareaNode),\n },\n [COMPONENT.SIGNATURE]: {\n argsSchema: argsOf(SignatureNode),\n description: descriptionOf(SignatureNode),\n },\n [COMPONENT.CALENDAR]: {\n argsSchema: argsOf(CalendarNode),\n description: descriptionOf(CalendarNode),\n },\n [COMPONENT.TABLE]: { argsSchema: argsOf(TableNode), description: descriptionOf(TableNode) },\n [COMPONENT.TABLE_HEADER]: {\n argsSchema: argsOf(TableHeaderNode),\n description: descriptionOf(TableHeaderNode),\n },\n [COMPONENT.TABLE_BODY]: {\n argsSchema: argsOf(TableBodyNode),\n description: descriptionOf(TableBodyNode),\n },\n [COMPONENT.TABLE_FOOTER]: {\n argsSchema: argsOf(TableFooterNode),\n description: descriptionOf(TableFooterNode),\n },\n [COMPONENT.TABLE_HEAD]: {\n argsSchema: argsOf(TableHeadNode),\n description: descriptionOf(TableHeadNode),\n },\n [COMPONENT.TABLE_ROW]: {\n argsSchema: argsOf(TableRowNode),\n description: descriptionOf(TableRowNode),\n },\n [COMPONENT.TABLE_CELL]: {\n argsSchema: argsOf(TableCellNode),\n description: descriptionOf(TableCellNode),\n },\n [COMPONENT.TABLE_CAPTION]: {\n argsSchema: argsOf(TableCaptionNode),\n description: descriptionOf(TableCaptionNode),\n },\n [COMPONENT.ACCORDION]: {\n argsSchema: argsOf(AccordionNode),\n description: descriptionOf(AccordionNode),\n },\n [COMPONENT.ACCORDION_ITEM]: {\n argsSchema: argsOf(AccordionItemNode),\n description: descriptionOf(AccordionItemNode),\n },\n [COMPONENT.ACCORDION_TRIGGER]: {\n argsSchema: argsOf(AccordionTriggerNode),\n description: descriptionOf(AccordionTriggerNode),\n },\n [COMPONENT.ACCORDION_CONTENT]: {\n argsSchema: argsOf(AccordionContentNode),\n description: descriptionOf(AccordionContentNode),\n },\n [COMPONENT.AVATAR]: { argsSchema: argsOf(AvatarNode), description: descriptionOf(AvatarNode) },\n [COMPONENT.COLLAPSIBLE]: {\n argsSchema: argsOf(CollapsibleNode),\n description: descriptionOf(CollapsibleNode),\n },\n [COMPONENT.COLLAPSIBLE_TRIGGER]: {\n argsSchema: argsOf(CollapsibleTriggerNode),\n description: descriptionOf(CollapsibleTriggerNode),\n },\n [COMPONENT.COLLAPSIBLE_CONTENT]: {\n argsSchema: argsOf(CollapsibleContentNode),\n description: descriptionOf(CollapsibleContentNode),\n },\n [COMPONENT.LOADER]: { argsSchema: argsOf(LoaderNode), description: descriptionOf(LoaderNode) },\n [COMPONENT.PROGRESS]: {\n argsSchema: argsOf(ProgressNode),\n description: descriptionOf(ProgressNode),\n },\n [COMPONENT.SKELETON]: {\n argsSchema: argsOf(SkeletonNode),\n description: descriptionOf(SkeletonNode),\n },\n [COMPONENT.INPUT_GROUP]: {\n argsSchema: argsOf(InputGroupNode),\n description: descriptionOf(InputGroupNode),\n },\n [COMPONENT.INPUT_GROUP_TEXT]: {\n argsSchema: argsOf(InputGroupTextNode),\n description: descriptionOf(InputGroupTextNode),\n },\n [COMPONENT.INPUT_GROUP_ADDON]: {\n argsSchema: argsOf(InputGroupAddonNode),\n description: descriptionOf(InputGroupAddonNode),\n },\n [COMPONENT.INPUT_GROUP_INPUT]: {\n argsSchema: argsOf(InputGroupInputNode),\n description: descriptionOf(InputGroupInputNode),\n },\n [COMPONENT.INPUT_GROUP_BUTTON]: {\n argsSchema: argsOf(InputGroupButtonNode),\n description: descriptionOf(InputGroupButtonNode),\n },\n [COMPONENT.INPUT_GROUP_TEXTAREA]: {\n argsSchema: argsOf(InputGroupTextareaNode),\n description: descriptionOf(InputGroupTextareaNode),\n },\n [COMPONENT.EACH]: { argsSchema: argsOf(EachNode), description: descriptionOf(EachNode) },\n [COMPONENT.IF]: { argsSchema: argsOf(IfNode), description: descriptionOf(IfNode) },\n};\n\nconst pebbleTemplateSchema = createTemplateSchema(PEBBLE_COMPONENT_SCHEMAS);\n\nexport const ComponentNode = pebbleTemplateSchema.ComponentNode;\nexport const Config = pebbleTemplateSchema.Node;\nexport type Config = z.infer<typeof pebbleTemplateSchema.Node>;\n\n/** Every element (non-string) node schema, keyed by its `type` literal. */\nexport const NodeSchemas: Record<string, z.ZodObject<any>> = Object.fromEntries(\n (ComponentNode.options as z.ZodObject<any>[]).map((schema) => [schema.shape.type.value, schema]),\n);\n","import { z } from \"zod\";\nimport { COMPONENT } from \"@bonsai/constants\";\n\nimport { NodeSchemas } from \"./bonsai.schema\";\n\n// Editor-facing metadata for the Bonsai node schemas: nesting rules and\n// inspector UI hints. Kept in dedicated registries rather than `.meta()` so it\n// never leaks into `z.toJSONSchema` output (the OpenAPI document and the code\n// editor's JSON schema stay as they are).\n\n/**\n * Which children a node type may hold, and where it may be placed.\n * `each` / `if` are transparent: they are allowed wherever their children are,\n * and a child's `parent` rule is checked against the nearest element above them.\n */\nexport interface NodeRules {\n /** \"any\" (default), \"none\" (void / self-contained), or an allow-list of child types. */\n accepts: \"any\" | \"none\" | string[];\n /** Allow-list of direct parent types; absent means any parent. */\n parent?: string[];\n}\n\nexport type FieldControl =\n | \"text\"\n | \"textarea\"\n | \"select\"\n | \"switch\"\n | \"number\"\n | \"color\"\n | \"binding\"\n | \"json\";\n\nexport type FieldGroup = \"Content\" | \"Data\" | \"Style\" | \"Advanced\";\n\nexport interface FieldHints {\n label?: string;\n control?: FieldControl;\n group?: FieldGroup;\n placeholder?: string;\n}\n\nexport const nodeRules = z.registry<NodeRules>();\nexport const fieldHints = z.registry<FieldHints>();\n\nconst C = COMPONENT;\n\n// Components that render no children of their own (void elements throw when given any).\nconst SELF_CONTAINED = [\n C.INPUT,\n C.INPUT_GROUP_INPUT,\n C.INPUT_GROUP_TEXTAREA,\n C.TEXTAREA,\n C.IMAGE,\n C.SEPARATOR,\n C.CHECKBOX,\n C.SWITCH,\n C.OTP,\n C.SIGNATURE,\n C.CALENDAR,\n C.LOADER,\n C.SKELETON,\n C.PROGRESS,\n C.AVATAR,\n];\n\nconst TABLE_SECTIONS = [C.TABLE_HEADER, C.TABLE_BODY, C.TABLE_FOOTER];\nconst CARD_SLOTS = [C.CARD, C.CARD_HEADER, C.CARD_FOOTER];\nconst INPUT_GROUP_SLOTS = [C.INPUT_GROUP, C.INPUT_GROUP_ADDON];\n\nconst RULES: Partial<Record<string, Partial<NodeRules>>> = {\n [C.ACCORDION]: { accepts: [C.ACCORDION_ITEM] },\n [C.ACCORDION_ITEM]: { accepts: [C.ACCORDION_TRIGGER, C.ACCORDION_CONTENT], parent: [C.ACCORDION] },\n [C.ACCORDION_TRIGGER]: { parent: [C.ACCORDION_ITEM] },\n [C.ACCORDION_CONTENT]: { parent: [C.ACCORDION_ITEM] },\n [C.COLLAPSIBLE_TRIGGER]: { parent: [C.COLLAPSIBLE] },\n [C.COLLAPSIBLE_CONTENT]: { parent: [C.COLLAPSIBLE] },\n [C.TABLE]: { accepts: [...TABLE_SECTIONS, C.TABLE_CAPTION] },\n [C.TABLE_HEADER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_BODY]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_FOOTER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_CAPTION]: { parent: [C.TABLE] },\n [C.TABLE_ROW]: { accepts: [C.TABLE_CELL, C.TABLE_HEAD], parent: TABLE_SECTIONS },\n [C.TABLE_CELL]: { parent: [C.TABLE_ROW] },\n [C.TABLE_HEAD]: { parent: [C.TABLE_ROW] },\n [C.CARD_HEADER]: { parent: [C.CARD] },\n [C.CARD_CONTENT]: { parent: [C.CARD] },\n [C.CARD_FOOTER]: { parent: [C.CARD] },\n [C.CARD_TITLE]: { parent: CARD_SLOTS },\n [C.CARD_DESCRIPTION]: { parent: CARD_SLOTS },\n [C.CARD_ACTION]: { parent: CARD_SLOTS },\n [C.CARD_ICON]: { parent: CARD_SLOTS },\n [C.INPUT_GROUP_ADDON]: { parent: [C.INPUT_GROUP] },\n [C.INPUT_GROUP_TEXT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_INPUT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_BUTTON]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_TEXTAREA]: { parent: INPUT_GROUP_SLOTS },\n [C.OL]: { accepts: [C.LI] },\n [C.UL]: { accepts: [C.LI] },\n [C.LI]: { parent: [C.OL, C.UL] },\n};\n\nfor (const type of SELF_CONTAINED) RULES[type] = { ...RULES[type], accepts: \"none\" };\n\n// Inspector hints by arg name; `TYPE_FIELD_HINTS` refines a name for one type.\nconst FIELD_HINTS: Record<string, FieldHints> = {\n id: { label: \"Element ID\", group: \"Advanced\" },\n className: { label: \"Classes\", group: \"Advanced\" },\n href: { label: \"Link URL\", group: \"Content\", placeholder: \"https://\" },\n src: { label: \"Image URL\", group: \"Content\", placeholder: \"https:// or {{binding}}\" },\n alt: { label: \"Alt text\", group: \"Content\" },\n placeholder: { label: \"Placeholder\", group: \"Content\" },\n fallback: { label: \"Fallback text\", group: \"Content\" },\n value: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n checked: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n selected: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n htmlFor: { label: \"For input (ID)\", group: \"Data\" },\n disabled: { label: \"Disabled\", group: \"Data\" },\n required: { label: \"Required\", group: \"Data\" },\n loading: { label: \"Loading\", group: \"Data\" },\n readonly: { label: \"Read only\", group: \"Data\" },\n items: { label: \"Repeat over\", control: \"binding\", group: \"Data\", placeholder: \"{{items}}\" },\n index: { label: \"Index alias\", group: \"Data\" },\n key: { label: \"Row key\", control: \"binding\", group: \"Advanced\" },\n condition: { label: \"Show when\", control: \"binding\", group: \"Data\", placeholder: \"{{flag}}\" },\n variant: { label: \"Variant\", group: \"Style\" },\n size: { label: \"Size\", group: \"Style\" },\n raised: { label: \"Shadow\", group: \"Style\" },\n extrude: { label: \"Extrude\", group: \"Style\" },\n rounded: { label: \"Corners\", group: \"Style\" },\n align: { label: \"Alignment\", group: \"Style\" },\n fill: { label: \"Colour\", group: \"Style\" },\n stacked: { label: \"Stacked spacing\", group: \"Style\" },\n animate: { label: \"Animate\", group: \"Style\" },\n buttonVariant: { label: \"Button variant\", group: \"Style\" },\n mode: { label: \"Mode\", group: \"Style\" },\n rows: { label: \"Rows\", group: \"Style\" },\n autosize: { label: \"Auto-size\", group: \"Style\" },\n type: { label: \"Button type\", group: \"Content\" },\n imageType: { label: \"Image format\", group: \"Advanced\" },\n containerClassName: { label: \"Container classes\", group: \"Advanced\" },\n canvasClassname: { label: \"Canvas classes\", group: \"Advanced\" },\n minLength: { label: \"Min length\", group: \"Advanced\" },\n maxLength: { label: \"Max length\", group: \"Advanced\" },\n hideWeekends: { label: \"Hide weekends\", group: \"Advanced\" },\n pins: { label: \"Pins\", control: \"json\", group: \"Advanced\" },\n zoom: { label: \"Zoom\", group: \"Advanced\" },\n pitch: { label: \"Pitch\", group: \"Advanced\" },\n fixed: { label: \"Fixed viewport\", group: \"Advanced\" },\n allowMultiple: { label: \"Allow multiple pins\", group: \"Advanced\" },\n icon: { label: \"Icon\", group: \"Advanced\" },\n pingIcon: { label: \"Ping icon\", control: \"json\", group: \"Advanced\" },\n iconProps: { label: \"Icon props\", control: \"json\", group: \"Advanced\" },\n badge: { label: \"Badge\", control: \"json\", group: \"Advanced\" },\n};\n\nconst TYPE_FIELD_HINTS: Record<string, Record<string, FieldHints>> = {\n [C.EACH]: { as: { label: \"Item alias\", group: \"Data\" } },\n [C.H]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.P]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.BUTTON]: { icon: { label: \"Icon-only size\", group: \"Style\" } },\n};\n\n/** The args object schema of a node type, unwrapped from `.optional()`. */\nexport function getArgsSchema(type: string): z.ZodObject | undefined {\n let args: z.ZodType | undefined = NodeSchemas[type]?.shape.args;\n while (args instanceof z.ZodOptional) args = args.unwrap() as z.ZodType;\n return args instanceof z.ZodObject ? args : undefined;\n}\n\nfor (const [type, schema] of Object.entries(NodeSchemas)) {\n nodeRules.add(schema, { accepts: \"any\", ...RULES[type] });\n const shape = getArgsSchema(type)?.shape ?? {};\n for (const [name, field] of Object.entries(shape)) {\n // Shared field instances (CoreArgs) receive identical hints from every type.\n fieldHints.add(field as z.ZodType, { ...FIELD_HINTS[name], ...TYPE_FIELD_HINTS[type]?.[name] });\n }\n}\n\n/** Nesting rules for a node type; unknown types accept anything. */\nexport function getNodeRules(type: string): NodeRules {\n const schema = NodeSchemas[type];\n return (schema && nodeRules.get(schema)) || { accepts: \"any\" };\n}\n"],"names":["CoreArgs","z","AArgs","HArgs","PArgs","OLArgs","ULArgs","LIArgs","DivArgs","SpanArgs","SeparatorArgs","AlertArgs","BadgeArgs","ButtonArgs","CardArgs","CardHeaderArgs","CardTitleArgs","CardDescriptionArgs","CardContentArgs","CardFooterArgs","CardActionArgs","CardIconArgs","CheckboxArgs","ImageArgs","OTPArgs","InputArgs","LabelArgs","SwitchArgs","TextareaArgs","InputGroupArgs","InputGroupTextArgs","InputGroupAddonArgs","InputGroupInputArgs","InputGroupButtonArgs","InputGroupTextareaArgs","SignatureArgs","CalendarArgs","TableArgs","TableHeaderArgs","TableBodyArgs","TableFooterArgs","TableHeadArgs","TableRowArgs","TableCellArgs","TableCaptionArgs","AccordionArgs","AccordionItemArgs","AccordionTriggerArgs","AccordionContentArgs","AvatarArgs","CollapsibleArgs","CollapsibleTriggerArgs","CollapsibleContentArgs","LoaderArgs","ProgressArgs","SkeletonArgs","Node","ComponentNode","CoreNode","DivNode","COMPONENT","ANode","HNode","PNode","OLNode","ULNode","LINode","SpanNode","SeparatorNode","AlertNode","BadgeNode","ButtonNode","CardNode","CheckboxNode","ImageNode","OTPNode","InputNode","LabelNode","SwitchNode","TextareaNode","SignatureNode","CalendarNode","CardHeaderNode","CardTitleNode","CardDescriptionNode","CardContentNode","CardFooterNode","CardActionNode","CardIconNode","TableNode","TableHeaderNode","TableBodyNode","TableFooterNode","TableHeadNode","TableRowNode","TableCellNode","TableCaptionNode","AccordionNode","AccordionItemNode","AccordionTriggerNode","AccordionContentNode","AvatarNode","CollapsibleNode","CollapsibleTriggerNode","CollapsibleContentNode","LoaderNode","ProgressNode","SkeletonNode","InputGroupNode","InputGroupTextNode","InputGroupAddonNode","InputGroupInputNode","InputGroupButtonNode","InputGroupTextareaNode","EachArgs","EachNode","IfArgs","IfNode","argsOf","node","descriptionOf","createTemplateSchema","components","componentNode","localNode","localCoreNode","nodeSchemas","type","argsSchema","description","PEBBLE_COMPONENT_SCHEMAS","pebbleTemplateSchema","Config","NodeSchemas","schema","nodeRules","fieldHints","C","SELF_CONTAINED","TABLE_SECTIONS","CARD_SLOTS","INPUT_GROUP_SLOTS","RULES","FIELD_HINTS","TYPE_FIELD_HINTS","getArgsSchema","args","shape","name","field","getNodeRules"],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { jsxs as v, jsx as e } from "react/jsx-runtime";
2
+ import { Button as w } from "@base-ui/react/button";
3
+ import { IconCircleFilled as f, IconLoader as m } from "@tabler/icons-react";
4
+ import { clsx as p } from "clsx";
5
+ import { twMerge as x } from "tailwind-merge";
6
+ import { cva as h } from "class-variance-authority";
7
+ import { useWebHaptics as _ } from "web-haptics/react";
8
+ function u(...a) {
9
+ return x(p(a));
10
+ }
11
+ const z = [
12
+ { duration: 10, intensity: 0.2 },
13
+ { duration: 5, delay: 120, intensity: 0.4 }
14
+ ], P = [{ duration: 10, intensity: 0.2 }], V = [
15
+ { duration: 10, intensity: 0.2 },
16
+ { duration: 5, delay: 190, intensity: 0.4 }
17
+ ], k = [{ duration: 20, intensity: 0.2 }], L = [{ duration: 10, intensity: 0.2 }], y = h(
18
+ "h-fit inline-grid [&_svg]:col-start-1 [&_svg]:col-end-1 [&_svg]:row-start-1 [&_svg]:row-end-1 duration-1000",
19
+ {
20
+ variants: {
21
+ variant: {
22
+ spinner: "*:data-[slot=loader-icon]:hidden *:data-[slot=loader-ping]:hidden *:data-[slot=loader-spinner]:animate-spin",
23
+ ping: "*:data-[slot=loader-spinner]:hidden *:data-[slot=loader-ping]:animate-ping"
24
+ },
25
+ fill: {
26
+ default: "[&_svg]:fill-main",
27
+ destructive: "[&_svg]:fill-accent-red",
28
+ warning: "[&_svg]:fill-accent-yellow",
29
+ pending: "[&_svg]:fill-accent-blue"
30
+ },
31
+ size: {
32
+ sm: "[&_svg]:size-3",
33
+ md: "[&_svg]:size-4",
34
+ lg: "[&_svg]:size-5"
35
+ }
36
+ },
37
+ defaultVariants: {
38
+ variant: "spinner",
39
+ fill: "default",
40
+ size: "md"
41
+ }
42
+ }
43
+ );
44
+ function C({
45
+ icon: a,
46
+ pingIcon: t,
47
+ variant: n = "spinner",
48
+ fill: r = "default",
49
+ size: d = "md",
50
+ iconProps: s,
51
+ className: l,
52
+ ...c
53
+ }) {
54
+ const o = a || f, i = t || o;
55
+ return /* @__PURE__ */ v(
56
+ "span",
57
+ {
58
+ role: "status",
59
+ "data-slot": "loader-container",
60
+ className: u(y({ variant: n, fill: r, size: d }), l),
61
+ "aria-label": n ?? "loading",
62
+ ...c,
63
+ children: [
64
+ /* @__PURE__ */ e(o, { "data-slot": "loader-icon", ...s }),
65
+ /* @__PURE__ */ e(i, { "data-slot": "loader-ping", ...s }),
66
+ /* @__PURE__ */ e(m, { "data-slot": "loader-spinner", ...s })
67
+ ]
68
+ }
69
+ );
70
+ }
71
+ const I = h(
72
+ "neo-base neo-button-focus relative group cursor-pointer rounded-base border-2 border-border text-sm font-medium [&_svg:not([class*='size-'])]:size-4.5 inline-flex items-center justify-center whitespace-nowrap transition-[translate,box-shadow,border,color] duration-200 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 select-none",
73
+ {
74
+ variants: {
75
+ variant: {
76
+ default: "bg-main text-main-foreground",
77
+ secondary: "bg-main-secondary text-secondary-foreground",
78
+ outline: "bg-surface text-primary-foreground",
79
+ destructive: "bg-accent-red text-main-foreground",
80
+ warning: "bg-accent-yellow text-main-foreground",
81
+ ghost: "bg-transparent border-transparent active:bg-foreground/20 focus-visible:border-border active:border-border hover:border-border shadow-none translate-0"
82
+ },
83
+ size: {
84
+ xs: "h-7 gap-1 px-2",
85
+ sm: "h-8 gap-1 px-2",
86
+ md: "h-9 gap-1.5 px-2.5",
87
+ lg: "h-10 gap-1.5 px-2.5"
88
+ },
89
+ icon: {
90
+ xs: "size-6 [&_svg:not([class*='size-'])]:size-3.5",
91
+ sm: "size-8 [&_svg:not([class*='size-'])]:size-4.5",
92
+ md: "size-9 [&_svg:not([class*='size-'])]:size-5.5",
93
+ lg: "size-10 [&_svg:not([class*='size-'])]:size-6.5"
94
+ },
95
+ raised: {
96
+ xs: "shadow-xs -translate-0.5 hover:shadow-min hover:-translate-px focus-visible:-translate-px focus-visible:shadow-min active:shadow-none active:translate-0",
97
+ sm: "shadow-sm -translate-0.75 hover:shadow-xs hover:-translate-0.5 focus-visible:-translate-0.5 focus-visible:shadow-xs active:shadow-none active:translate-0",
98
+ md: "shadow-md -translate-1 hover:shadow-sm hover:-translate-0.75 focus-visible:-translate-0.75 focus-visible:shadow-sm active:shadow-none active:translate-0",
99
+ lg: "shadow-lg -translate-[4.75px] hover:shadow-md hover:-translate-1 focus-visible:-translate-1 focus-visible:shadow-md active:shadow-none active:translate-0",
100
+ xl: "shadow-xl -translate-[5.5px] hover:shadow-lg hover:-translate-[4.75px] focus-visible:-translate-[4.75px] focus-visible:shadow-lg active:shadow-none active:translate-0"
101
+ },
102
+ extrude: {
103
+ xs: "shadow-none translate-0 hover:shadow-xs hover:-translate-0.5 focus-visible:shadow-xs focus-visible:-translate-0.5 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-xs aria-expanded:-translate-0.5",
104
+ sm: "shadow-none translate-0 hover:shadow-sm hover:-translate-0.75 focus-visible:shadow-sm focus-visible:-translate-0.75 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-sm aria-expanded:-translate-0.75",
105
+ md: "shadow-none translate-0 hover:shadow-md hover:-translate-1 focus-visible:shadow-md focus-visible:-translate-1 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-md aria-expanded:-translate-1",
106
+ lg: "shadow-none translate-0 hover:shadow-lg hover:-translate-1.25 focus-visible:shadow-lg focus-visible:-translate-1.25 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-lg aria-expanded:-translate-1.25",
107
+ xl: "shadow-none translate-0 hover:shadow-xl hover:-translate-1.5 focus-visible:shadow-lg focus-visible:-translate-1.5 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-lg aria-expanded:-translate-1.5"
108
+ }
109
+ },
110
+ defaultVariants: {
111
+ variant: "default",
112
+ size: "lg"
113
+ }
114
+ }
115
+ );
116
+ function W({
117
+ className: a,
118
+ variant: t,
119
+ size: n,
120
+ icon: r,
121
+ raised: d,
122
+ extrude: s,
123
+ loading: l,
124
+ onClick: c,
125
+ children: o,
126
+ ...i
127
+ }) {
128
+ const { trigger: g } = _();
129
+ return /* @__PURE__ */ v(
130
+ w,
131
+ {
132
+ "data-slot": "button",
133
+ "data-loading": l,
134
+ "aria-label": i["aria-label"] ?? "button",
135
+ className: u(
136
+ I({ variant: t, size: n, raised: d, extrude: s, icon: r }),
137
+ "group/button",
138
+ a
139
+ ),
140
+ onClick: (b) => {
141
+ g(z), c?.(b);
142
+ },
143
+ ...i,
144
+ children: [
145
+ /* @__PURE__ */ e("div", { className: "hidden group-data-[loading=true]:flex w-full absolute inset-0 items-center justify-center", children: /* @__PURE__ */ e(C, {}) }),
146
+ /* @__PURE__ */ e("div", { className: "visible group-data-[loading=true]:invisible w-full flex gap-1.5 justify-center items-center", children: o })
147
+ ]
148
+ }
149
+ );
150
+ }
151
+ export {
152
+ W as B,
153
+ P as H,
154
+ C as L,
155
+ L as a,
156
+ I as b,
157
+ u as c,
158
+ k as d,
159
+ V as e
160
+ };
161
+ //# sourceMappingURL=button-jfJanilw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-jfJanilw.js","sources":["../../src/lib/utils.ts","../../src/lib/haptics.ts","../../src/components/ui/loader.tsx","../../src/components/ui/button.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nconst colors = [\n \"bg-accent-red-secondary\",\n \"bg-accent-orange-secondary\",\n \"bg-accent-yellow-secondary\",\n \"bg-accent-green-secondary\",\n \"bg-accent-emerald-secondary\",\n \"bg-accent-teal-secondary\",\n \"bg-accent-cyan-secondary\",\n \"bg-accent-sky-secondary\",\n \"bg-accent-blue-secondary\",\n \"bg-accent-indigo-secondary\",\n \"bg-accent-purple-secondary\",\n \"bg-accent-rose-secondary\",\n];\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function colorHash(text: string) {\n if (!text) return \"bg-gray-500/75\";\n const sum = text.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\n return colors[sum % colors.length];\n}\n","import type { HapticInput } from \"web-haptics\";\n\nexport { useWebHaptics as useHaptics } from \"web-haptics/react\";\n\nexport const HAPTIC_BUTTON: HapticInput = [\n { duration: 10, intensity: 0.2 },\n { duration: 5, delay: 120, intensity: 0.4 },\n];\nexport const HAPTIC_TAB: HapticInput = [{ duration: 10, intensity: 0.2 }];\nexport const HAPTIC_SWITCH: HapticInput = [\n { duration: 10, intensity: 0.2 },\n { duration: 5, delay: 190, intensity: 0.4 },\n];\nexport const HAPTIC_CHECKBOX: HapticInput = [{ duration: 20, intensity: 0.2 }];\nexport const HAPTIC_ACCORDION: HapticInput = [{ duration: 10, intensity: 0.2 }];\nexport const HAPTIC_MENU_ITEM: HapticInput = [{ duration: 10, intensity: 0.2 }];\n","\"use client\";\n\nimport {\n IconCircleFilled,\n IconLoader,\n type IconProps,\n} from \"@tabler/icons-react\";\nimport { cn } from \"@/lib/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst loaderVariants = cva(\n \"h-fit inline-grid [&_svg]:col-start-1 [&_svg]:col-end-1 [&_svg]:row-start-1 [&_svg]:row-end-1 duration-1000\",\n {\n variants: {\n variant: {\n spinner:\n \"*:data-[slot=loader-icon]:hidden *:data-[slot=loader-ping]:hidden *:data-[slot=loader-spinner]:animate-spin\",\n ping: \"*:data-[slot=loader-spinner]:hidden *:data-[slot=loader-ping]:animate-ping\",\n },\n fill: {\n default: \"[&_svg]:fill-main\",\n destructive: \"[&_svg]:fill-accent-red\",\n warning: \"[&_svg]:fill-accent-yellow\",\n pending: \"[&_svg]:fill-accent-blue\",\n },\n size: {\n sm: \"[&_svg]:size-3\",\n md: \"[&_svg]:size-4\",\n lg: \"[&_svg]:size-5\",\n },\n },\n defaultVariants: {\n variant: \"spinner\",\n fill: \"default\",\n size: \"md\",\n },\n },\n);\n\ninterface LoaderProps\n extends React.ComponentProps<\"div\">, VariantProps<typeof loaderVariants> {\n icon?: React.ForwardRefExoticComponent<\n IconProps & React.RefAttributes<SVGSVGElement>\n >;\n pingIcon?: React.ForwardRefExoticComponent<\n IconProps & React.RefAttributes<SVGSVGElement>\n >;\n iconProps?: IconProps;\n}\n\nfunction Loader({\n icon,\n pingIcon,\n variant = \"spinner\",\n fill = \"default\",\n size = \"md\",\n iconProps,\n className,\n ...props\n}: LoaderProps) {\n const Icon = icon ? icon : IconCircleFilled;\n const PingIcon = pingIcon ? pingIcon : Icon;\n\n return (\n <span\n role=\"status\"\n data-slot=\"loader-container\"\n className={cn(loaderVariants({ variant, fill, size }), className)}\n aria-label={variant ?? \"loading\"}\n {...props}\n >\n <Icon data-slot=\"loader-icon\" {...iconProps} />\n <PingIcon data-slot=\"loader-ping\" {...iconProps} />\n <IconLoader data-slot=\"loader-spinner\" {...iconProps} />\n </span>\n );\n}\n\nexport { Loader };\n","\"use client\";\n\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { Loader } from \"./loader\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { useHaptics, HAPTIC_BUTTON } from \"@/lib/haptics\";\n\nconst buttonVariants = cva(\n \"neo-base neo-button-focus relative group cursor-pointer rounded-base border-2 border-border text-sm font-medium [&_svg:not([class*='size-'])]:size-4.5 inline-flex items-center justify-center whitespace-nowrap transition-[translate,box-shadow,border,color] duration-200 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 select-none\",\n {\n variants: {\n variant: {\n default: \"bg-main text-main-foreground\",\n secondary: \"bg-main-secondary text-secondary-foreground\",\n outline: \"bg-surface text-primary-foreground\",\n destructive: \"bg-accent-red text-main-foreground\",\n warning: \"bg-accent-yellow text-main-foreground\",\n ghost:\n \"bg-transparent border-transparent active:bg-foreground/20 focus-visible:border-border active:border-border hover:border-border shadow-none translate-0\",\n },\n size: {\n xs: \"h-7 gap-1 px-2\",\n sm: \"h-8 gap-1 px-2\",\n md: \"h-9 gap-1.5 px-2.5\",\n lg: \"h-10 gap-1.5 px-2.5\",\n },\n icon: {\n xs: \"size-6 [&_svg:not([class*='size-'])]:size-3.5\",\n sm: \"size-8 [&_svg:not([class*='size-'])]:size-4.5\",\n md: \"size-9 [&_svg:not([class*='size-'])]:size-5.5\",\n lg: \"size-10 [&_svg:not([class*='size-'])]:size-6.5\",\n },\n raised: {\n xs: \"shadow-xs -translate-0.5 hover:shadow-min hover:-translate-px focus-visible:-translate-px focus-visible:shadow-min active:shadow-none active:translate-0\",\n sm: \"shadow-sm -translate-0.75 hover:shadow-xs hover:-translate-0.5 focus-visible:-translate-0.5 focus-visible:shadow-xs active:shadow-none active:translate-0\",\n md: \"shadow-md -translate-1 hover:shadow-sm hover:-translate-0.75 focus-visible:-translate-0.75 focus-visible:shadow-sm active:shadow-none active:translate-0\",\n lg: \"shadow-lg -translate-[4.75px] hover:shadow-md hover:-translate-1 focus-visible:-translate-1 focus-visible:shadow-md active:shadow-none active:translate-0\",\n xl: \"shadow-xl -translate-[5.5px] hover:shadow-lg hover:-translate-[4.75px] focus-visible:-translate-[4.75px] focus-visible:shadow-lg active:shadow-none active:translate-0\",\n },\n extrude: {\n xs: \"shadow-none translate-0 hover:shadow-xs hover:-translate-0.5 focus-visible:shadow-xs focus-visible:-translate-0.5 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-xs aria-expanded:-translate-0.5\",\n sm: \"shadow-none translate-0 hover:shadow-sm hover:-translate-0.75 focus-visible:shadow-sm focus-visible:-translate-0.75 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-sm aria-expanded:-translate-0.75\",\n md: \"shadow-none translate-0 hover:shadow-md hover:-translate-1 focus-visible:shadow-md focus-visible:-translate-1 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-md aria-expanded:-translate-1\",\n lg: \"shadow-none translate-0 hover:shadow-lg hover:-translate-1.25 focus-visible:shadow-lg focus-visible:-translate-1.25 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-lg aria-expanded:-translate-1.25\",\n xl: \"shadow-none translate-0 hover:shadow-xl hover:-translate-1.5 focus-visible:shadow-lg focus-visible:-translate-1.5 active:shadow-none active:translate-0 disabled:shadow-none disabled:translate-0 aria-expanded:shadow-lg aria-expanded:-translate-1.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"lg\",\n },\n },\n);\n\ninterface ButtonProps\n extends ButtonPrimitive.Props, VariantProps<typeof buttonVariants> {\n loading?: boolean;\n}\n\nfunction Button({\n className,\n variant,\n size,\n icon,\n raised,\n extrude,\n loading,\n onClick,\n children,\n ...props\n}: ButtonProps) {\n const { trigger } = useHaptics();\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n data-loading={loading}\n aria-label={props[\"aria-label\"] ?? \"button\"}\n className={cn(\n buttonVariants({ variant, size, raised, extrude, icon }),\n \"group/button\",\n className,\n )}\n onClick={(event) => {\n trigger(HAPTIC_BUTTON);\n onClick?.(event);\n }}\n {...props}\n >\n <div className=\"hidden group-data-[loading=true]:flex w-full absolute inset-0 items-center justify-center\">\n <Loader />\n </div>\n <div className=\"visible group-data-[loading=true]:invisible w-full flex gap-1.5 justify-center items-center\">\n {children}\n </div>\n </ButtonPrimitive>\n );\n}\n\nexport { Button, buttonVariants };\n"],"names":["cn","inputs","twMerge","clsx","HAPTIC_BUTTON","HAPTIC_TAB","HAPTIC_SWITCH","HAPTIC_CHECKBOX","HAPTIC_ACCORDION","loaderVariants","cva","Loader","icon","pingIcon","variant","fill","size","iconProps","className","props","Icon","IconCircleFilled","PingIcon","jsxs","jsx","IconLoader","buttonVariants","Button","raised","extrude","loading","onClick","children","trigger","useHaptics","ButtonPrimitive","event"],"mappings":"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"}