@thorprovider/blocks 3.0.1 → 4.0.0

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 (192) hide show
  1. package/README.md +61 -21
  2. package/dist/blocks/designs/marketplace-product-card/block.d.ts +12 -0
  3. package/dist/blocks/designs/marketplace-product-card/block.d.ts.map +1 -0
  4. package/dist/blocks/designs/marketplace-product-card/block.js +243 -0
  5. package/dist/blocks/designs/marketplace-product-card/block.js.map +1 -0
  6. package/dist/blocks/designs/marketplace-product-card/block.mjs +233 -0
  7. package/dist/blocks/designs/marketplace-product-card/block.mjs.map +1 -0
  8. package/dist/blocks/designs/marketplace-product-card/index.d.ts +3 -0
  9. package/dist/blocks/designs/marketplace-product-card/index.d.ts.map +1 -0
  10. package/dist/blocks/designs/marketplace-product-card/index.js +36 -0
  11. package/dist/blocks/designs/marketplace-product-card/index.js.map +1 -0
  12. package/dist/blocks/designs/marketplace-product-card/index.mjs +6 -0
  13. package/dist/blocks/designs/marketplace-product-card/index.mjs.map +1 -0
  14. package/dist/blocks/designs/marketplace-product-card/normalize.d.ts +13 -0
  15. package/dist/blocks/designs/marketplace-product-card/normalize.d.ts.map +1 -0
  16. package/dist/blocks/designs/marketplace-product-card/normalize.js +36 -0
  17. package/dist/blocks/designs/marketplace-product-card/normalize.js.map +1 -0
  18. package/dist/blocks/designs/marketplace-product-card/normalize.mjs +12 -0
  19. package/dist/blocks/designs/marketplace-product-card/normalize.mjs.map +1 -0
  20. package/dist/blocks/designs/marketplace-product-card/variants.d.ts +72 -0
  21. package/dist/blocks/designs/marketplace-product-card/variants.d.ts.map +1 -0
  22. package/dist/blocks/designs/marketplace-product-card/variants.js +123 -0
  23. package/dist/blocks/designs/marketplace-product-card/variants.js.map +1 -0
  24. package/dist/blocks/designs/marketplace-product-card/variants.mjs +89 -0
  25. package/dist/blocks/designs/marketplace-product-card/variants.mjs.map +1 -0
  26. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +1 -1
  27. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -1
  28. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +1 -1
  29. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -1
  30. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.d.ts +11 -0
  31. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.d.ts.map +1 -0
  32. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.js +46 -0
  33. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.js.map +1 -0
  34. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.mjs +22 -0
  35. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.mjs.map +1 -0
  36. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.d.ts +28 -0
  37. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.d.ts.map +1 -0
  38. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.js +278 -0
  39. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.js.map +1 -0
  40. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.mjs +260 -0
  41. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.mjs.map +1 -0
  42. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +12 -9
  43. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -1
  44. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +49 -71
  45. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -1
  46. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +50 -72
  47. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -1
  48. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -1
  49. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +6 -3
  50. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -1
  51. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +6 -3
  52. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -1
  53. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.d.ts +7 -0
  54. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.d.ts.map +1 -0
  55. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.js +41 -0
  56. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.js.map +1 -0
  57. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.mjs +16 -0
  58. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.mjs.map +1 -0
  59. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.d.ts +24 -0
  60. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.d.ts.map +1 -0
  61. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.js +75 -0
  62. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.js.map +1 -0
  63. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.mjs +58 -0
  64. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.mjs.map +1 -0
  65. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +3 -2
  66. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -1
  67. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +9 -2
  68. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -1
  69. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +9 -2
  70. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -1
  71. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +23 -8
  72. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -1
  73. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +136 -31
  74. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -1
  75. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +143 -32
  76. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -1
  77. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +13 -7
  78. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -1
  79. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +179 -28
  80. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -1
  81. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +180 -29
  82. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -1
  83. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.d.ts +20 -0
  84. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.d.ts.map +1 -0
  85. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.js +199 -0
  86. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.js.map +1 -0
  87. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.mjs +175 -0
  88. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.mjs.map +1 -0
  89. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.d.ts +14 -0
  90. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.d.ts.map +1 -0
  91. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.js +136 -0
  92. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.js.map +1 -0
  93. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.mjs +109 -0
  94. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.mjs.map +1 -0
  95. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +32 -10
  96. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -1
  97. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +265 -147
  98. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -1
  99. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +272 -148
  100. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -1
  101. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.d.ts +13 -0
  102. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.d.ts.map +1 -0
  103. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.js +74 -0
  104. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.js.map +1 -0
  105. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.mjs +50 -0
  106. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.mjs.map +1 -0
  107. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.d.ts +7 -0
  108. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.d.ts.map +1 -0
  109. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.js +91 -0
  110. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.js.map +1 -0
  111. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.mjs +65 -0
  112. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.mjs.map +1 -0
  113. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +174 -44
  114. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -1
  115. package/dist/blocks/e-commerce/checkout-forms/checkout.js +532 -108
  116. package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -1
  117. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +542 -109
  118. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -1
  119. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -1
  120. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +44 -20
  121. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -1
  122. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +44 -20
  123. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -1
  124. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -1
  125. package/dist/blocks/e-commerce/navigation/storefront-navbar.js +21 -10
  126. package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -1
  127. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +21 -10
  128. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -1
  129. package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -1
  130. package/dist/blocks/e-commerce/product-list/product-card.js +36 -9
  131. package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -1
  132. package/dist/blocks/e-commerce/product-list/product-card.mjs +36 -9
  133. package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -1
  134. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -1
  135. package/dist/blocks/e-commerce/product-list/product-showcase-1.js +7 -2
  136. package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -1
  137. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +7 -2
  138. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -1
  139. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -1
  140. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +5 -1
  141. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -1
  142. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +5 -1
  143. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -1
  144. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -1
  145. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +71 -51
  146. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -1
  147. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +71 -51
  148. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -1
  149. package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -1
  150. package/dist/blocks/marketing/banners/banner-1.js +15 -27
  151. package/dist/blocks/marketing/banners/banner-1.js.map +1 -1
  152. package/dist/blocks/marketing/banners/banner-1.mjs +16 -28
  153. package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -1
  154. package/dist/index.d.ts +6 -3
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +5 -0
  157. package/dist/index.js.map +1 -1
  158. package/dist/index.mjs +4 -0
  159. package/dist/index.mjs.map +1 -1
  160. package/dist/lib/contracts/marketplace-product-card.d.ts +324 -0
  161. package/dist/lib/contracts/marketplace-product-card.d.ts.map +1 -0
  162. package/dist/lib/contracts/marketplace-product-card.js +85 -0
  163. package/dist/lib/contracts/marketplace-product-card.js.map +1 -0
  164. package/dist/lib/contracts/marketplace-product-card.mjs +61 -0
  165. package/dist/lib/contracts/marketplace-product-card.mjs.map +1 -0
  166. package/dist/lib/contracts.d.ts +1861 -88
  167. package/dist/lib/contracts.d.ts.map +1 -1
  168. package/dist/lib/contracts.js +252 -25
  169. package/dist/lib/contracts.js.map +1 -1
  170. package/dist/lib/contracts.mjs +208 -5
  171. package/dist/lib/contracts.mjs.map +1 -1
  172. package/dist/lib/money-schema.d.ts +19 -0
  173. package/dist/lib/money-schema.d.ts.map +1 -0
  174. package/dist/lib/money-schema.js +33 -0
  175. package/dist/lib/money-schema.js.map +1 -0
  176. package/dist/lib/money-schema.mjs +9 -0
  177. package/dist/lib/money-schema.mjs.map +1 -0
  178. package/dist/lib/motion.d.ts +29 -0
  179. package/dist/lib/motion.d.ts.map +1 -0
  180. package/dist/lib/motion.js +65 -0
  181. package/dist/lib/motion.js.map +1 -0
  182. package/dist/lib/motion.mjs +41 -0
  183. package/dist/lib/motion.mjs.map +1 -0
  184. package/dist/ui/accordion.d.ts +3 -1
  185. package/dist/ui/accordion.d.ts.map +1 -1
  186. package/dist/ui/accordion.js +21 -5
  187. package/dist/ui/accordion.js.map +1 -1
  188. package/dist/ui/accordion.mjs +21 -5
  189. package/dist/ui/accordion.mjs.map +1 -1
  190. package/dist/ui/input-group.d.ts +1 -1
  191. package/package.json +19 -5
  192. package/dist/.tsbuildinfo +0 -1
@@ -29,6 +29,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
29
29
  var import_cn = require("cn");
30
30
  var import_lucide_react = require("lucide-react");
31
31
  var import_radix_ui = require("radix-ui");
32
+ var import_motion = require("../lib/motion.js");
32
33
  function Accordion({
33
34
  ...props
34
35
  }) {
@@ -50,23 +51,38 @@ function AccordionItem({
50
51
  function AccordionTrigger({
51
52
  className,
52
53
  children,
54
+ headingLevel = 3,
53
55
  ...props
54
56
  }) {
55
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
57
+ const Heading = headingLevel === 2 ? "h2" : "h3";
58
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Accordion.Header, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Heading, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
56
59
  import_radix_ui.Accordion.Trigger,
57
60
  {
58
61
  "data-slot": "accordion-trigger",
59
62
  className: (0, import_cn.cn)(
60
- "flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
63
+ "flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-colors outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
61
64
  className
62
65
  ),
66
+ style: {
67
+ transitionDuration: `${import_motion.MOTION.durationMilliseconds.feedback}ms`,
68
+ transitionTimingFunction: import_motion.MOTION.cssEasing.standard
69
+ },
63
70
  ...props,
64
71
  children: [
65
72
  children,
66
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" })
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
74
+ import_lucide_react.ChevronDownIcon,
75
+ {
76
+ className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform",
77
+ style: {
78
+ transitionDuration: `${import_motion.MOTION.durationMilliseconds.feedback}ms`,
79
+ transitionTimingFunction: import_motion.MOTION.cssEasing.standard
80
+ }
81
+ }
82
+ )
67
83
  ]
68
84
  }
69
- ) });
85
+ ) }) });
70
86
  }
71
87
  function AccordionContent({
72
88
  className,
@@ -77,7 +93,7 @@ function AccordionContent({
77
93
  import_radix_ui.Accordion.Content,
78
94
  {
79
95
  "data-slot": "accordion-content",
80
- className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
96
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down motion-reduce:animate-none motion-reduce:duration-0",
81
97
  ...props,
82
98
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: (0, import_cn.cn)("pt-0 pb-4", className), children })
83
99
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/accordion.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"cn\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUS;AAPT,gBAAmB;AACnB,0BAAgC;AAChC,sBAAgD;AAEhD,SAAS,UAAU;AAAA,EACjB,GAAG;AACL,GAAyD;AACvD,SAAO,4CAAC,gBAAAA,UAAmB,MAAnB,EAAwB,aAAU,aAAa,GAAG,OAAO;AACnE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE;AAAA,IAAC,gBAAAA,UAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,cAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,4CAAC,gBAAAA,UAAmB,QAAnB,EAA0B,WAAU,QACnC;AAAA,IAAC,gBAAAA,UAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,4CAAC,uCAAgB,WAAU,+GAA8G;AAAA;AAAA;AAAA,EAC3I,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE;AAAA,IAAC,gBAAAA,UAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,sDAAC,SAAI,eAAW,cAAG,aAAa,SAAS,GAAI,UAAS;AAAA;AAAA,EACxD;AAEJ;","names":["AccordionPrimitive"]}
1
+ {"version":3,"sources":["../../src/ui/accordion.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"cn\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport { MOTION } from \"../lib/motion\"\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n headingLevel = 3,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & { headingLevel?: 2 | 3 }) {\n const Heading = headingLevel === 2 ? 'h2' : 'h3'\n\n return (\n <AccordionPrimitive.Header asChild>\n <Heading className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-colors outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n style={{\n transitionDuration: `${MOTION.durationMilliseconds.feedback}ms`,\n transitionTimingFunction: MOTION.cssEasing.standard,\n }}\n {...props}\n >\n {children}\n <ChevronDownIcon\n className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform\"\n style={{\n transitionDuration: `${MOTION.durationMilliseconds.feedback}ms`,\n transitionTimingFunction: MOTION.cssEasing.standard,\n }}\n />\n </AccordionPrimitive.Trigger>\n </Heading>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down motion-reduce:animate-none motion-reduce:duration-0\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWS;AART,gBAAmB;AACnB,0BAAgC;AAChC,sBAAgD;AAChD,oBAAuB;AAEvB,SAAS,UAAU;AAAA,EACjB,GAAG;AACL,GAAyD;AACvD,SAAO,4CAAC,gBAAAA,UAAmB,MAAnB,EAAwB,aAAU,aAAa,GAAG,OAAO;AACnE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE;AAAA,IAAC,gBAAAA,UAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,eAAW,cAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,GAAuF;AACrF,QAAM,UAAU,iBAAiB,IAAI,OAAO;AAE5C,SACE,4CAAC,gBAAAA,UAAmB,QAAnB,EAA0B,SAAO,MAChC,sDAAC,WAAQ,WAAU,QACjB;AAAA,IAAC,gBAAAA,UAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,oBAAoB,GAAG,qBAAO,qBAAqB,QAAQ;AAAA,QAC3D,0BAA0B,qBAAO,UAAU;AAAA,MAC7C;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,oBAAoB,GAAG,qBAAO,qBAAqB,QAAQ;AAAA,cAC3D,0BAA0B,qBAAO,UAAU;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF,GACF,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE;AAAA,IAAC,gBAAAA,UAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,sDAAC,SAAI,eAAW,cAAG,aAAa,SAAS,GAAI,UAAS;AAAA;AAAA,EACxD;AAEJ;","names":["AccordionPrimitive"]}
@@ -3,6 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { cn } from "cn";
4
4
  import { ChevronDownIcon } from "lucide-react";
5
5
  import { Accordion as AccordionPrimitive } from "radix-ui";
6
+ import { MOTION } from "../lib/motion.mjs";
6
7
  function Accordion({
7
8
  ...props
8
9
  }) {
@@ -24,23 +25,38 @@ function AccordionItem({
24
25
  function AccordionTrigger({
25
26
  className,
26
27
  children,
28
+ headingLevel = 3,
27
29
  ...props
28
30
  }) {
29
- return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
31
+ const Heading = headingLevel === 2 ? "h2" : "h3";
32
+ return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { asChild: true, children: /* @__PURE__ */ jsx(Heading, { className: "flex", children: /* @__PURE__ */ jsxs(
30
33
  AccordionPrimitive.Trigger,
31
34
  {
32
35
  "data-slot": "accordion-trigger",
33
36
  className: cn(
34
- "flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
37
+ "flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-colors outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
35
38
  className
36
39
  ),
40
+ style: {
41
+ transitionDuration: `${MOTION.durationMilliseconds.feedback}ms`,
42
+ transitionTimingFunction: MOTION.cssEasing.standard
43
+ },
37
44
  ...props,
38
45
  children: [
39
46
  children,
40
- /* @__PURE__ */ jsx(ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" })
47
+ /* @__PURE__ */ jsx(
48
+ ChevronDownIcon,
49
+ {
50
+ className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform",
51
+ style: {
52
+ transitionDuration: `${MOTION.durationMilliseconds.feedback}ms`,
53
+ transitionTimingFunction: MOTION.cssEasing.standard
54
+ }
55
+ }
56
+ )
41
57
  ]
42
58
  }
43
- ) });
59
+ ) }) });
44
60
  }
45
61
  function AccordionContent({
46
62
  className,
@@ -51,7 +67,7 @@ function AccordionContent({
51
67
  AccordionPrimitive.Content,
52
68
  {
53
69
  "data-slot": "accordion-content",
54
- className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
70
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down motion-reduce:animate-none motion-reduce:duration-0",
55
71
  ...props,
56
72
  children: /* @__PURE__ */ jsx("div", { className: cn("pt-0 pb-4", className), children })
57
73
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/accordion.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"cn\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"mappings":";AAUS,cAuBH,YAvBG;AAPT,SAAS,UAAU;AACnB,SAAS,uBAAuB;AAChC,SAAS,aAAa,0BAA0B;AAEhD,SAAS,UAAU;AAAA,EACjB,GAAG;AACL,GAAyD;AACvD,SAAO,oBAAC,mBAAmB,MAAnB,EAAwB,aAAU,aAAa,GAAG,OAAO;AACnE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE,oBAAC,mBAAmB,QAAnB,EAA0B,WAAU,QACnC;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,oBAAC,mBAAgB,WAAU,+GAA8G;AAAA;AAAA;AAAA,EAC3I,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,8BAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GAAI,UAAS;AAAA;AAAA,EACxD;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/ui/accordion.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"cn\"\nimport { ChevronDownIcon } from \"lucide-react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport { MOTION } from \"../lib/motion\"\n\nfunction Accordion({\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return <AccordionPrimitive.Root data-slot=\"accordion\" {...props} />\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n headingLevel = 3,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & { headingLevel?: 2 | 3 }) {\n const Heading = headingLevel === 2 ? 'h2' : 'h3'\n\n return (\n <AccordionPrimitive.Header asChild>\n <Heading className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-colors outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n style={{\n transitionDuration: `${MOTION.durationMilliseconds.feedback}ms`,\n transitionTimingFunction: MOTION.cssEasing.standard,\n }}\n {...props}\n >\n {children}\n <ChevronDownIcon\n className=\"pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform\"\n style={{\n transitionDuration: `${MOTION.durationMilliseconds.feedback}ms`,\n transitionTimingFunction: MOTION.cssEasing.standard,\n }}\n />\n </AccordionPrimitive.Trigger>\n </Heading>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down motion-reduce:animate-none motion-reduce:duration-0\"\n {...props}\n >\n <div className={cn(\"pt-0 pb-4\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"mappings":";AAWS,cA2BD,YA3BC;AART,SAAS,UAAU;AACnB,SAAS,uBAAuB;AAChC,SAAS,aAAa,0BAA0B;AAChD,SAAS,cAAc;AAEvB,SAAS,UAAU;AAAA,EACjB,GAAG;AACL,GAAyD;AACvD,SAAO,oBAAC,mBAAmB,MAAnB,EAAwB,aAAU,aAAa,GAAG,OAAO;AACnE;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA,GAAG;AACL,GAAyD;AACvD,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,4BAA4B,SAAS;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,GAAuF;AACrF,QAAM,UAAU,iBAAiB,IAAI,OAAO;AAE5C,SACE,oBAAC,mBAAmB,QAAnB,EAA0B,SAAO,MAChC,8BAAC,WAAQ,WAAU,QACjB;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,oBAAoB,GAAG,OAAO,qBAAqB,QAAQ;AAAA,QAC3D,0BAA0B,OAAO,UAAU;AAAA,MAC7C;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,oBAAoB,GAAG,OAAO,qBAAqB,QAAQ;AAAA,cAC3D,0BAA0B,OAAO,UAAU;AAAA,YAC7C;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF,GACF,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4D;AAC1D,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ,8BAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GAAI,UAAS;AAAA;AAAA,EACxD;AAEJ;","names":[]}
@@ -3,7 +3,7 @@ import { type VariantProps } from "class-variance-authority";
3
3
  import { Button } from "./button";
4
4
  declare function InputGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
5
5
  declare const inputGroupAddonVariants: (props?: ({
6
- align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
6
+ align?: "inline-end" | "inline-start" | "block-end" | "block-start" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  declare function InputGroupAddon({ className, align, ...props }: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): React.JSX.Element;
9
9
  declare const inputGroupButtonVariants: (props?: ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thorprovider/blocks",
3
- "version": "3.0.1",
3
+ "version": "4.0.0",
4
4
  "description": "Reusable, framework-agnostic React component blocks for Thor Commerce storefronts.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,12 +39,17 @@
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsup && tsc -p tsconfig.build.json && node scripts/fix-esm-extensions.mjs",
42
- "prepack": "yarn build && node ../../scripts/release/workspace-protocol.mjs prepare",
43
- "postpack": "node ../../scripts/release/workspace-protocol.mjs restore",
42
+ "prepack": "yarn build",
44
43
  "dev": "tsup --watch",
45
44
  "type-check": "tsc --noEmit",
46
45
  "test": "vitest run --config vitest.config.ts",
47
46
  "pretest": "yarn build",
47
+ "audit": "node audit/run.mjs",
48
+ "preaudit": "yarn build",
49
+ "workflow": "node audit/workflow.mjs",
50
+ "subagent": "node audit/subagent.mjs",
51
+ "audit:test": "node --test audit/resolve-block.test.mjs audit/workflow.test.mjs",
52
+ "audit:type-check": "yarn build && tsc -p audit/tsconfig.json --noEmit",
48
53
  "generate:agent-index": "node ../../scripts/generate-package-agents-index.cjs packages/blocks @thorprovider/blocks"
49
54
  },
50
55
  "peerDependencies": {
@@ -59,7 +64,7 @@
59
64
  "license": "MIT",
60
65
  "dependencies": {
61
66
  "@base-ui/react": "^1.8.0",
62
- "@thorprovider/types": "^7.0.0",
67
+ "@thorprovider/types": "^7.3.0",
63
68
  "class-variance-authority": "^0.7.1",
64
69
  "clsx": "^2.1.1",
65
70
  "cn": "^0.4.0",
@@ -73,15 +78,24 @@
73
78
  "zod": "^3.25.0"
74
79
  },
75
80
  "devDependencies": {
81
+ "@tailwindcss/vite": "4.2.2",
76
82
  "@testing-library/dom": "^10",
77
83
  "@testing-library/react": "^16",
78
84
  "@testing-library/user-event": "^14",
79
85
  "@types/jsdom": "^30",
86
+ "@types/node": "^22",
80
87
  "@types/react": "^19",
81
88
  "@types/react-dom": "^19",
89
+ "@vitejs/plugin-react": "5.1.0",
90
+ "@vitest/browser": "3.2.4",
91
+ "axe-core": "4.11.2",
82
92
  "jsdom": "^30.1.3",
93
+ "playwright": "1.60.0",
83
94
  "tsup": "^8.0.0",
95
+ "tw-animate-css": "1.3.3",
84
96
  "typescript": "^5.0.0",
85
- "vitest": "^3.2.4"
97
+ "vite": "7.3.2",
98
+ "vitest": "^3.2.4",
99
+ "vitest-browser-react": "1.0.1"
86
100
  }
87
101
  }