@duongthiu/onex-core 0.1.0 → 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 (190) hide show
  1. package/README.md +44 -65
  2. package/THEME_API.md +36 -33
  3. package/dist/api.js +14 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/api.mjs +5 -0
  6. package/dist/api.mjs.map +1 -0
  7. package/dist/auth.js +23 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/auth.mjs +6 -0
  10. package/dist/auth.mjs.map +1 -0
  11. package/dist/blog.js +22 -0
  12. package/dist/blog.js.map +1 -0
  13. package/dist/blog.mjs +5 -0
  14. package/dist/blog.mjs.map +1 -0
  15. package/dist/cart.js +27 -0
  16. package/dist/cart.js.map +1 -0
  17. package/dist/cart.mjs +6 -0
  18. package/dist/cart.mjs.map +1 -0
  19. package/dist/chunk-2CSWHI3L.js +210 -0
  20. package/dist/chunk-2CSWHI3L.js.map +1 -0
  21. package/dist/chunk-2FGHIDUV.js +99 -0
  22. package/dist/chunk-2FGHIDUV.js.map +1 -0
  23. package/dist/chunk-2NMEKWO5.js +40 -0
  24. package/dist/chunk-2NMEKWO5.js.map +1 -0
  25. package/dist/chunk-43BVHGDT.mjs +131 -0
  26. package/dist/chunk-43BVHGDT.mjs.map +1 -0
  27. package/dist/chunk-4JVQJI3I.mjs +290 -0
  28. package/dist/chunk-4JVQJI3I.mjs.map +1 -0
  29. package/dist/chunk-5N2EKK5O.js +9550 -0
  30. package/dist/chunk-5N2EKK5O.js.map +1 -0
  31. package/dist/chunk-5T6NDVSN.js +76 -0
  32. package/dist/chunk-5T6NDVSN.js.map +1 -0
  33. package/dist/chunk-73AINNCI.mjs +201 -0
  34. package/dist/chunk-73AINNCI.mjs.map +1 -0
  35. package/dist/chunk-AIXBDAVP.mjs +61 -0
  36. package/dist/chunk-AIXBDAVP.mjs.map +1 -0
  37. package/dist/chunk-ALYN5HAC.js +210 -0
  38. package/dist/chunk-ALYN5HAC.js.map +1 -0
  39. package/dist/chunk-AREMJR3Q.js +36 -0
  40. package/dist/chunk-AREMJR3Q.js.map +1 -0
  41. package/dist/chunk-DXAI6XOI.mjs +33 -0
  42. package/dist/chunk-DXAI6XOI.mjs.map +1 -0
  43. package/dist/chunk-F5TFNWFJ.mjs +257 -0
  44. package/dist/chunk-F5TFNWFJ.mjs.map +1 -0
  45. package/dist/chunk-FQ7FWUZN.js +265 -0
  46. package/dist/chunk-FQ7FWUZN.js.map +1 -0
  47. package/dist/{chunk-3SZX6LHT.js → chunk-J27VGXJH.js} +2 -24
  48. package/dist/chunk-J27VGXJH.js.map +1 -0
  49. package/dist/chunk-JZ46LLTZ.js +121 -0
  50. package/dist/chunk-JZ46LLTZ.js.map +1 -0
  51. package/dist/chunk-K24UHN6G.mjs +76 -0
  52. package/dist/chunk-K24UHN6G.mjs.map +1 -0
  53. package/dist/chunk-KCQGGU5R.mjs +344 -0
  54. package/dist/chunk-KCQGGU5R.mjs.map +1 -0
  55. package/dist/chunk-MT22NYKT.mjs +117 -0
  56. package/dist/chunk-MT22NYKT.mjs.map +1 -0
  57. package/dist/chunk-NDD472IZ.js +85 -0
  58. package/dist/chunk-NDD472IZ.js.map +1 -0
  59. package/dist/chunk-NHOIGGYU.mjs +833 -0
  60. package/dist/chunk-NHOIGGYU.mjs.map +1 -0
  61. package/dist/chunk-O3XR7TW3.mjs +12 -0
  62. package/dist/chunk-O3XR7TW3.mjs.map +1 -0
  63. package/dist/chunk-OAPYSC2X.mjs +206 -0
  64. package/dist/chunk-OAPYSC2X.mjs.map +1 -0
  65. package/dist/{chunk-XE4EOKS4.mjs → chunk-ONJREDYY.mjs} +3 -23
  66. package/dist/chunk-ONJREDYY.mjs.map +1 -0
  67. package/dist/chunk-OVT2LUAM.js +197 -0
  68. package/dist/chunk-OVT2LUAM.js.map +1 -0
  69. package/dist/chunk-OWNGNGKL.js +331 -0
  70. package/dist/chunk-OWNGNGKL.js.map +1 -0
  71. package/dist/chunk-P7SXNZSV.js +298 -0
  72. package/dist/chunk-P7SXNZSV.js.map +1 -0
  73. package/dist/chunk-PFJOL3HI.mjs +71 -0
  74. package/dist/chunk-PFJOL3HI.mjs.map +1 -0
  75. package/dist/chunk-PPULMWJ6.js +295 -0
  76. package/dist/chunk-PPULMWJ6.js.map +1 -0
  77. package/dist/chunk-RGIVKACG.js +359 -0
  78. package/dist/chunk-RGIVKACG.js.map +1 -0
  79. package/dist/chunk-RPP5K2LP.js +870 -0
  80. package/dist/chunk-RPP5K2LP.js.map +1 -0
  81. package/dist/{chunk-7EON6Q4L.mjs → chunk-RUCHWUD7.mjs} +7651 -6370
  82. package/dist/chunk-RUCHWUD7.mjs.map +1 -0
  83. package/dist/chunk-SEVUIX4H.js +137 -0
  84. package/dist/chunk-SEVUIX4H.js.map +1 -0
  85. package/dist/chunk-SK2FSHFM.mjs +208 -0
  86. package/dist/chunk-SK2FSHFM.mjs.map +1 -0
  87. package/dist/chunk-T6EJ2GAV.mjs +294 -0
  88. package/dist/chunk-T6EJ2GAV.mjs.map +1 -0
  89. package/dist/chunk-ULBDOFZI.mjs +302 -0
  90. package/dist/chunk-ULBDOFZI.mjs.map +1 -0
  91. package/dist/chunk-V3JIELNV.js +241 -0
  92. package/dist/chunk-V3JIELNV.js.map +1 -0
  93. package/dist/chunk-V5E2KWMA.mjs +238 -0
  94. package/dist/chunk-V5E2KWMA.mjs.map +1 -0
  95. package/dist/chunk-VJA3ER6A.js +14 -0
  96. package/dist/chunk-VJA3ER6A.js.map +1 -0
  97. package/dist/chunk-VLI7ULX5.js +66 -0
  98. package/dist/chunk-VLI7ULX5.js.map +1 -0
  99. package/dist/chunk-WFGS5OFH.mjs +189 -0
  100. package/dist/chunk-WFGS5OFH.mjs.map +1 -0
  101. package/dist/chunk-WVC5GP24.mjs +96 -0
  102. package/dist/chunk-WVC5GP24.mjs.map +1 -0
  103. package/dist/chunk-YOSPWY5K.mjs +36 -0
  104. package/dist/chunk-YOSPWY5K.mjs.map +1 -0
  105. package/dist/chunk-ZFFXXLX7.js +205 -0
  106. package/dist/chunk-ZFFXXLX7.js.map +1 -0
  107. package/dist/client.js +512 -249
  108. package/dist/client.mjs +21 -2
  109. package/dist/components.js +393 -0
  110. package/dist/components.js.map +1 -0
  111. package/dist/components.mjs +8 -0
  112. package/dist/components.mjs.map +1 -0
  113. package/dist/config.js +17 -0
  114. package/dist/config.js.map +1 -0
  115. package/dist/config.mjs +4 -0
  116. package/dist/config.mjs.map +1 -0
  117. package/dist/contact.js +22 -0
  118. package/dist/contact.js.map +1 -0
  119. package/dist/contact.mjs +5 -0
  120. package/dist/contact.mjs.map +1 -0
  121. package/dist/contexts.js +51 -0
  122. package/dist/contexts.js.map +1 -0
  123. package/dist/contexts.mjs +6 -0
  124. package/dist/contexts.mjs.map +1 -0
  125. package/dist/finance.js +26 -0
  126. package/dist/finance.js.map +1 -0
  127. package/dist/finance.mjs +5 -0
  128. package/dist/finance.mjs.map +1 -0
  129. package/dist/icons.js +15 -0
  130. package/dist/icons.js.map +1 -0
  131. package/dist/icons.mjs +4 -0
  132. package/dist/icons.mjs.map +1 -0
  133. package/dist/index.js +512 -249
  134. package/dist/index.js.map +1 -1
  135. package/dist/index.mjs +21 -2
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/internal.js +1437 -0
  138. package/dist/internal.js.map +1 -0
  139. package/dist/internal.mjs +1404 -0
  140. package/dist/internal.mjs.map +1 -0
  141. package/dist/motion.js +51 -0
  142. package/dist/motion.js.map +1 -0
  143. package/dist/motion.mjs +38 -0
  144. package/dist/motion.mjs.map +1 -0
  145. package/dist/orders.js +22 -0
  146. package/dist/orders.js.map +1 -0
  147. package/dist/orders.mjs +5 -0
  148. package/dist/orders.mjs.map +1 -0
  149. package/dist/products.js +27 -0
  150. package/dist/products.js.map +1 -0
  151. package/dist/products.mjs +6 -0
  152. package/dist/products.mjs.map +1 -0
  153. package/dist/registry.js +44 -0
  154. package/dist/registry.js.map +1 -0
  155. package/dist/registry.mjs +7 -0
  156. package/dist/registry.mjs.map +1 -0
  157. package/dist/renderers.js +51 -0
  158. package/dist/renderers.js.map +1 -0
  159. package/dist/renderers.mjs +6 -0
  160. package/dist/renderers.mjs.map +1 -0
  161. package/dist/server.js +11 -189
  162. package/dist/server.js.map +1 -1
  163. package/dist/server.mjs +3 -186
  164. package/dist/server.mjs.map +1 -1
  165. package/dist/types.js +37 -0
  166. package/dist/types.js.map +1 -0
  167. package/dist/types.mjs +4 -0
  168. package/dist/types.mjs.map +1 -0
  169. package/dist/utils.js +160 -0
  170. package/dist/utils.js.map +1 -0
  171. package/dist/utils.mjs +7 -0
  172. package/dist/utils.mjs.map +1 -0
  173. package/dist/wrappers.js +104 -0
  174. package/dist/wrappers.js.map +1 -0
  175. package/dist/wrappers.mjs +96 -0
  176. package/dist/wrappers.mjs.map +1 -0
  177. package/package.json +112 -9
  178. package/dist/api-vuL1Eg5L.d.mts +0 -2961
  179. package/dist/api-vuL1Eg5L.d.ts +0 -2961
  180. package/dist/chunk-3SZX6LHT.js.map +0 -1
  181. package/dist/chunk-7EON6Q4L.mjs.map +0 -1
  182. package/dist/chunk-WDY773GJ.js +0 -8308
  183. package/dist/chunk-WDY773GJ.js.map +0 -1
  184. package/dist/chunk-XE4EOKS4.mjs.map +0 -1
  185. package/dist/client.d.mts +0 -1461
  186. package/dist/client.d.ts +0 -1461
  187. package/dist/index.d.mts +0 -125
  188. package/dist/index.d.ts +0 -125
  189. package/dist/server.d.mts +0 -70
  190. package/dist/server.d.ts +0 -70
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/grid-container.tsx","../src/components/heading/heading.tsx","../src/components/heading/heading.schema.ts","../src/components/paragraph/paragraph.tsx","../src/components/paragraph/paragraph.schema.ts","../src/components/button/button.tsx","../src/components/button/button.schema.ts","../src/components/link/link.tsx","../src/components/link/link.schema.ts","../src/components/divider/divider.tsx","../src/components/divider/divider.schema.ts","../src/components/spacer/spacer.tsx","../src/components/spacer/spacer.schema.ts","../src/components/quote/quote.tsx","../src/components/quote/quote.schema.ts","../src/components/badge/badge.tsx","../src/components/badge/badge.schema.ts","../src/components/image/image.tsx","../src/components/image/image.schema.ts","../src/components/icon/icon.tsx","../src/components/icon/icon.schema.ts","../src/components/video/video.tsx","../src/components/video/video.schema.ts","../src/components/list/list.tsx","../src/components/list/list.schema.ts","../src/components/container/container.tsx","../src/components/container/container.schema.ts","../src/components/grid/grid.tsx","../src/components/grid/grid.schema.ts","../src/components/columns/columns.tsx","../src/components/columns/columns.schema.ts","../src/components/card/card.tsx","../src/components/card/card.schema.ts","../src/components/gallery/gallery.tsx","../src/components/gallery/gallery.schema.ts","../src/components/input/input.tsx","../src/components/input/input.schema.ts","../src/components/textarea/textarea.tsx","../src/components/textarea/textarea.schema.ts","../src/components/checkbox/checkbox.tsx","../src/components/checkbox/checkbox.schema.ts","../src/components/select/select.tsx","../src/components/select/select.schema.ts","../src/components/rating/rating.tsx","../src/components/rating/rating.schema.ts","../src/components/progress/progress.tsx","../src/components/progress/progress.schema.ts","../src/components/alert/alert.tsx","../src/components/alert/alert.schema.ts","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion.schema.ts","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs.schema.ts","../src/components/timer/timer.tsx","../src/components/timer/timer.schema.ts","../src/components/table/table.tsx","../src/components/table/table.schema.ts","../src/components/map/map.tsx","../src/components/map/map.schema.ts","../src/components/code/code.tsx","../src/components/code/code.schema.ts","../src/components/ui/button.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../../../node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/src/primitive.tsx","../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../../../node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-context/src/create-context.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-layout-effect/src/use-layout-effect.tsx","../../../node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-id/src/id.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-controllable-state/src/use-controllable-state.tsx","../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.2.3_@types+react@19.2.7__@types+rea_a3e640c09100c2f131c6304f3af699b7/node_modules/@radix-ui/react-primitive/src/primitive.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-callback-ref/src/use-callback-ref.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-escape-keydown/src/use-escape-keydown.tsx","../../../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.7__@_3691668b2838b9f8aca5eaa9c1019f3a/node_modules/@radix-ui/react-dismissable-layer/src/dismissable-layer.tsx","../../../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.7__@types+r_97c0f187ec076edb7ba986866ae46f50/node_modules/@radix-ui/react-focus-scope/src/focus-scope.tsx","../../../node_modules/.pnpm/@radix-ui+react-portal@1.1.9_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react@_b18597ccc2d2784244d2aa14165c4243/node_modules/@radix-ui/react-portal/src/portal.tsx","../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.7__@types+reac_a854ca95c1338f0b689e2e1899ae0fb5/node_modules/@radix-ui/react-presence/src/use-state-machine.tsx","../../../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.2.3_@types+react@19.2.7__@types+reac_a854ca95c1338f0b689e2e1899ae0fb5/node_modules/@radix-ui/react-presence/src/presence.tsx","../../../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.3_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-focus-guards/src/focus-guards.tsx","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.7_react@19.2.1/node_modules/use-callback-ref/dist/es2015/assignRef.js","../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.7_react@19.2.1/node_modules/use-callback-ref/dist/es2015/useRef.js","../../../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@19.2.7_react@19.2.1/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.2.7_react@19.2.1/node_modules/use-sidecar/dist/es2015/medium.js","../../../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@19.2.7_react@19.2.1/node_modules/use-sidecar/dist/es2015/exports.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll/dist/es2015/medium.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll/dist/es2015/UI.js","../../../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.7_react@19.2.1/node_modules/react-style-singleton/dist/es2015/singleton.js","../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.7_react@19.2.1/node_modules/react-style-singleton/dist/es2015/hook.js","../../../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@19.2.7_react@19.2.1/node_modules/react-style-singleton/dist/es2015/component.js","../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../../../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll-bar/dist/es2015/component.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../../../node_modules/.pnpm/react-remove-scroll@2.7.2_@types+react@19.2.7_react@19.2.1/node_modules/react-remove-scroll/dist/es2015/Combination.js","../../../node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.js","../../../node_modules/.pnpm/@radix-ui+react-dialog@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.7__@types+react_6dfccd9624a29e24d4bcca3b96ba3a18/node_modules/@radix-ui/react-dialog/src/dialog.tsx","../src/components/ui/dialog.tsx","../src/components/ui/form.tsx","../../../node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.7__@types+re_8697ba31e9568cc40ba2b32564616706/node_modules/@radix-ui/react-collection/src/collection-legacy.tsx","../../../node_modules/.pnpm/@radix-ui+react-direction@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-direction/src/direction.tsx","../../../node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.7__@types_d9886401d1b853addf16931114c94215/node_modules/@radix-ui/react-roving-focus/src/roving-focus-group.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-size/src/use-size.tsx","../../../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.1_@types+react@19.2.7_react@19.2.1/node_modules/@radix-ui/react-use-previous/src/use-previous.tsx","../../../node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@19.2.3_@types+react@19.2.7__@types+r_ae5ff9e9277faa1b77b120975a70fecf/node_modules/@radix-ui/react-radio-group/src/radio.tsx","../../../node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@19.2.3_@types+react@19.2.7__@types+r_ae5ff9e9277faa1b77b120975a70fecf/node_modules/@radix-ui/react-radio-group/src/radio-group.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/textarea.tsx","../src/components/torn-separator/index.tsx","../src/components/user-menu/user-menu.tsx"],"names":["jsx","fontSizeMap","fontWeightMap","textAlignMap","jsxs","cva","sizeMap","IconComponent","React","alignItemsMap","gapMap","paddingMap","columnsMap","borderRadiusMap","objectFitMap","widthMap","LabelPrimitive2","LabelPrimitive3","Check","spacingMap","heightMap","useState","content","ChevronDown","buttonVariants","LabelPrimitive4","React7","createContext","React8","useContext","createScope","nextScopes","useLayoutEffect","React9","React10","React11","value","Slot","Node","React12","React13","React14","React15","node","handleAndDispatchPointerDownOutsideEvent","React16","handleFocusIn","handleFocusOut","handleMutations","container","Portal","React17","ReactDOM","React18","React23","count","React19","__assign","useCallbackRef","React20","cbs","React21","React24","SideCar","React25","React26","React27","Style","React28","PORTAL_NAME","createSlot","Fragment","Root","Trigger","Content","Dialog","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","DialogTitle","DialogDescription","React30","_a","createCollectionScope","useCollection","React32","EVENT_OPTIONS","React33","focusFirst","Item","React34","React35","React36","getState","createContextScope","React211","Primitive","ITEM_NAME","useComposedRefs","composeEventHandlers","INDICATOR_NAME","Indicator","RadioGroup","Root2","RadioGroupItem","Item2"],"mappings":"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","file":"chunk-RUCHWUD7.mjs","sourcesContent":["/**\n * Grid Container Components\n * Layout primitives for responsive grid-based layouts\n */\n\nimport { ReactNode } from \"react\";\n\nexport interface GridContainerProps {\n /** Content to render inside the container */\n children: ReactNode;\n\n /** Additional CSS classes */\n className?: string;\n\n /** HTML element to render as */\n as?: \"div\" | \"section\" | \"header\" | \"footer\" | \"main\";\n}\n\n/**\n * Grid Container Component\n * Implements a 12-column grid system with proper gutters and max-width\n * All content should be wrapped in this container for consistent layout\n *\n * Breakpoints and padding:\n * - Mobile (< 768px): 20px padding (16px + 4px gutter)\n * - Tablet (768px - 1023px): 32px padding\n * - Desktop (1024px - 1279px): 40px padding\n * - Large (1280px - 1919px): 140px padding\n * - XL (>= 1920px): max 1640px content width (1920px - 280px padding)\n *\n * @example\n * ```tsx\n * <GridContainer>\n * <h1>My Content</h1>\n * </GridContainer>\n * ```\n */\nexport function GridContainer({\n children,\n className = \"\",\n as: Component = \"div\",\n}: GridContainerProps) {\n return (\n <Component\n className={`\n w-full\n mx-auto\n px-5\n sm:px-6\n md:px-8\n lg:px-10\n xl:px-[140px]\n ${className}\n `\n .trim()\n .replace(/\\s+/g, \" \")}\n style={{\n maxWidth: \"1920px\", // Max container width\n }}\n >\n {children}\n </Component>\n );\n}\n\nexport interface FullWidthSectionProps {\n /** Content to render inside the section */\n children: ReactNode;\n\n /** Additional CSS classes */\n className?: string;\n\n /** Background color (can be any valid CSS color) */\n backgroundColor?: string;\n}\n\n/**\n * Full Width Container (for backgrounds that extend full width)\n * Content inside should still use GridContainer for proper content width\n *\n * @example\n * ```tsx\n * <FullWidthSection backgroundColor=\"#f5f5f5\">\n * <GridContainer>\n * <h1>Full-width background, constrained content</h1>\n * </GridContainer>\n * </FullWidthSection>\n * ```\n */\nexport function FullWidthSection({\n children,\n className = \"\",\n backgroundColor = \"transparent\",\n}: FullWidthSectionProps) {\n return (\n <section className={`w-full ${className}`} style={{ backgroundColor }}>\n {children}\n </section>\n );\n}\n","/**\n * Heading Component\n * Renders text headings (H1-H6) with customizable typography\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n \"4xl\": \"text-4xl\",\n \"5xl\": \"text-5xl\",\n \"6xl\": \"text-6xl\",\n};\n\n// Font weight mapping\nconst fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n black: \"font-black\",\n};\n\n// Text align mapping\nconst textAlignMap: Record<string, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\nexport function HeadingComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { text, tag } = content;\n const {\n fontSize,\n fontWeight,\n color,\n textAlign,\n marginBottom,\n lineHeight,\n letterSpacing,\n textTransform,\n maxWidth,\n customClasses,\n } = style;\n\n // Build Tailwind classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const fontWeightClass = fontWeightMap[String(fontWeight)];\n const textAlignClass = textAlignMap[String(textAlign)];\n\n // Build inline style for advanced properties (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(marginBottom && { marginBottom: String(marginBottom) }),\n ...(lineHeight && { lineHeight: String(lineHeight) }),\n ...(letterSpacing && { letterSpacing: String(letterSpacing) }),\n ...(textTransform && {\n textTransform: String(\n textTransform\n ) as React.CSSProperties[\"textTransform\"],\n }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n };\n\n // Build classes\n const classes = cn(\n \"component-heading\",\n fontSizeClass,\n fontWeightClass,\n textAlignClass,\n customClasses,\n className\n );\n\n // Render as appropriate tag\n const Tag = (tag as keyof React.JSX.IntrinsicElements) || \"h2\";\n\n return (\n <Tag\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Heading Text\"\n >\n {String(text)}\n </Tag>\n );\n}\n","/**\n * Heading Component Schema\n * Text heading (H1-H6) with typography controls\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const headingComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.HEADING,\n name: \"Heading\",\n description: \"Text heading (H1-H6)\",\n icon: \"heading\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n // Content settings (what the component displays)\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Heading Text\",\n info: \"The text content of the heading\",\n default: \"Welcome\",\n required: true,\n maxLength: 200,\n },\n {\n id: \"tag\",\n type: FIELD_TYPES.SELECT,\n label: \"Heading Level\",\n info: \"HTML heading tag\",\n default: \"h2\",\n options: [\n { label: \"H1 (Largest)\", value: \"h1\" },\n { label: \"H2\", value: \"h2\" },\n { label: \"H3\", value: \"h3\" },\n { label: \"H4\", value: \"h4\" },\n { label: \"H5\", value: \"h5\" },\n { label: \"H6 (Smallest)\", value: \"h6\" },\n ],\n },\n ],\n\n // Basic style settings (always visible)\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"2xl\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"2XL\", value: \"2xl\" },\n { label: \"3XL\", value: \"3xl\" },\n { label: \"4XL\", value: \"4xl\" },\n { label: \"5XL\", value: \"5xl\" },\n { label: \"6XL\", value: \"6xl\" },\n ],\n },\n {\n id: \"fontWeight\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Weight\",\n default: \"bold\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Medium\", value: \"medium\" },\n { label: \"Semibold\", value: \"semibold\" },\n { label: \"Bold\", value: \"bold\" },\n { label: \"Black\", value: \"black\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.TEXT_ALIGNMENT,\n label: \"Text Alignment\",\n default: \"left\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Bottom Spacing\",\n info: \"e.g., 1rem, 20px\",\n default: \"1rem\",\n },\n ],\n\n // Advanced style settings (shown when user enables advanced mode)\n advancedStyleSettings: [\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Line Height\",\n default: \"1.2\",\n },\n {\n id: \"letterSpacing\",\n type: FIELD_TYPES.TEXT,\n label: \"Letter Spacing\",\n default: \"normal\",\n },\n {\n id: \"textTransform\",\n type: FIELD_TYPES.SELECT,\n label: \"Text Transform\",\n default: \"none\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Uppercase\", value: \"uppercase\" },\n { label: \"Lowercase\", value: \"lowercase\" },\n { label: \"Capitalize\", value: \"capitalize\" },\n ],\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n info: \"Space-separated classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"Welcome\",\n tag: \"h2\",\n },\n\n styleDefaults: {\n fontSize: \"2xl\",\n fontWeight: \"bold\",\n textAlign: \"left\",\n marginBottom: \"1rem\",\n // Color default removed - use theme default\n },\n\n supportsResponsive: true,\n\n tags: [\"heading\", \"text\", \"title\", \"h1\", \"h2\", \"h3\"],\n};\n","/**\n * Paragraph Component\n * Renders text paragraph with typography controls\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n};\n\n// Font weight mapping\nconst fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\n// Line height mapping\nconst lineHeightMap: Record<string, string> = {\n \"1.25\": \"leading-tight\",\n \"1.5\": \"leading-normal\",\n \"1.75\": \"leading-relaxed\",\n \"2\": \"leading-loose\",\n};\n\n// Text align mapping\nconst textAlignMap: Record<string, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n justify: \"text-justify\",\n};\n\nexport function ParagraphComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { text } = content;\n const {\n fontSize,\n fontWeight,\n color,\n lineHeight,\n textAlign,\n marginBottom,\n maxWidth,\n letterSpacing,\n customClasses,\n } = style;\n\n // Build Tailwind classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const fontWeightClass = fontWeight ? fontWeightMap[String(fontWeight)] : \"\";\n const lineHeightClass = lineHeightMap[String(lineHeight)];\n const textAlignClass = textAlignMap[String(textAlign)];\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(marginBottom && { marginBottom: String(marginBottom) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n ...(letterSpacing && { letterSpacing: String(letterSpacing) }),\n };\n\n // Build classes\n const classes = cn(\n \"component-paragraph\",\n fontSizeClass,\n fontWeightClass,\n lineHeightClass,\n textAlignClass,\n customClasses,\n className\n );\n\n return (\n <p\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Paragraph Text\"\n >\n {String(text)}\n </p>\n );\n}\n","/**\n * Paragraph Component Schema\n * Text paragraph with typography controls\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const paragraphComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.PARAGRAPH,\n name: \"Paragraph\",\n description: \"Text paragraph content\",\n icon: \"text\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Paragraph Text\",\n info: \"The text content\",\n default: \"This is a paragraph of text.\",\n required: true,\n maxLength: 2000,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"base\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.SELECT,\n label: \"Line Height\",\n default: \"1.5\",\n options: [\n { label: \"Tight\", value: \"1.25\" },\n { label: \"Normal\", value: \"1.5\" },\n { label: \"Relaxed\", value: \"1.75\" },\n { label: \"Loose\", value: \"2\" },\n ],\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.TEXT_ALIGNMENT,\n label: \"Text Alignment\",\n default: \"left\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Bottom Spacing\",\n default: \"1rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"letterSpacing\",\n type: FIELD_TYPES.TEXT,\n label: \"Letter Spacing\",\n default: \"normal\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"This is a paragraph of text.\",\n },\n\n styleDefaults: {\n fontSize: \"base\",\n lineHeight: \"1.5\",\n textAlign: \"left\",\n marginBottom: \"0\",\n // Color default removed - use theme default\n },\n\n supportsResponsive: true,\n tags: [\"paragraph\", \"text\", \"content\", \"body\"],\n};\n","/**\n * Button Component\n * Renders clickable button with link\n *\n * ✅ Framework-agnostic version using native <a> tag\n * Note: Apps using Next.js should wrap with Link component in their theme override\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n \"icon-sm\": \"h-8 w-8\",\n \"icon-lg\": \"h-12 w-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\ntype ButtonVariant = VariantProps<typeof buttonVariants>[\"variant\"];\ntype ButtonSize = VariantProps<typeof buttonVariants>[\"size\"];\n\nexport function ButtonComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, url, target } = content;\n const {\n variant,\n size,\n backgroundColor,\n color,\n borderRadius,\n padding,\n width,\n display,\n boxShadow,\n transition,\n customClasses,\n } = style;\n\n // Handle backward compatibility: md → default\n const normalizedSize = size === \"md\" ? \"default\" : size;\n\n // Build inline style for custom properties\n const inlineStyle: React.CSSProperties = {\n backgroundColor:\n variant === \"default\" && backgroundColor\n ? String(backgroundColor)\n : undefined,\n color: color ? String(color) : undefined,\n borderRadius: borderRadius ? String(borderRadius) : undefined,\n padding: padding ? String(padding) : undefined,\n width: width ? String(width) : undefined,\n display: display as React.CSSProperties[\"display\"],\n boxShadow: boxShadow ? String(boxShadow) : undefined,\n transition: transition ? String(transition) : undefined,\n };\n\n return (\n <a\n href={String(url)}\n target={String(target)}\n className={cn(\n buttonVariants({\n variant: variant as ButtonVariant,\n size: normalizedSize as ButtonSize,\n }),\n \"component-button no-underline\",\n customClasses,\n className\n )}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"button\"\n data-field-label=\"Button Text\"\n >\n {String(text)}\n </a>\n );\n}\n","/**\n * Button Component Schema\n * Clickable button with link and styling options\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const buttonComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.BUTTON,\n name: \"Button\",\n description: \"Clickable button with link\",\n icon: \"mouse-pointer-click\",\n category: COMPONENT_CATEGORIES.INTERACTIVE,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Button Text\",\n default: \"Click me\",\n required: true,\n maxLength: 50,\n },\n {\n id: \"url\",\n type: FIELD_TYPES.URL,\n label: \"Link URL\",\n default: \"#\",\n required: true,\n },\n {\n id: \"target\",\n type: FIELD_TYPES.SELECT,\n label: \"Open In\",\n default: \"_self\",\n options: [\n { label: \"Same Tab\", value: \"_self\" },\n { label: \"New Tab\", value: \"_blank\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Style Variant\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Destructive\", value: \"destructive\" },\n { label: \"Outline\", value: \"outline\" },\n { label: \"Secondary\", value: \"secondary\" },\n { label: \"Ghost\", value: \"ghost\" },\n { label: \"Link\", value: \"link\" },\n ],\n },\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Icon\", value: \"icon\" },\n { label: \"Icon Small\", value: \"icon-sm\" },\n { label: \"Icon Large\", value: \"icon-lg\" },\n ],\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"#ffffff\",\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0.375rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"padding\",\n type: FIELD_TYPES.TEXT,\n label: \"Padding\",\n default: \"0.5rem 1rem\",\n },\n {\n id: \"width\",\n type: FIELD_TYPES.TEXT,\n label: \"Width\",\n default: \"auto\",\n },\n {\n id: \"display\",\n type: FIELD_TYPES.SELECT,\n label: \"Display\",\n default: \"inline-flex\",\n options: [\n { label: \"Inline Flex\", value: \"inline-flex\" },\n { label: \"Block\", value: \"block\" },\n { label: \"Flex\", value: \"flex\" },\n ],\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"none\",\n },\n {\n id: \"transition\",\n type: FIELD_TYPES.TEXT,\n label: \"Transition\",\n default: \"all 0.2s\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n info: \"Space-separated classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"Click me\",\n url: \"#\",\n target: \"_self\",\n },\n\n styleDefaults: {\n variant: \"default\",\n size: \"default\",\n // Color defaults removed - use shadcn variant colors\n borderRadius: \"0.375rem\",\n },\n\n supportsResponsive: true,\n tags: [\"button\", \"cta\", \"link\", \"action\"],\n};\n","/**\n * Link Component\n * Renders text hyperlink\n *\n * ✅ Framework-agnostic version using native <a> tag\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n};\n\n// Font weight mapping\nconst fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\nexport function LinkComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, url, target, underline } = content;\n const {\n color,\n hoverColor,\n fontSize,\n fontWeight,\n textDecoration,\n customClasses,\n } = style;\n\n // Build Tailwind classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const fontWeightClass = fontWeightMap[String(fontWeight)];\n const underlineClass = underline ? \"underline\" : \"no-underline\";\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(textDecoration && { textDecoration: String(textDecoration) }),\n };\n\n // Build classes\n const classes = cn(\n \"component-link text-primary transition-colors hover:opacity-80\",\n fontSizeClass,\n fontWeightClass,\n underlineClass,\n customClasses,\n className\n );\n\n return (\n <a\n href={String(url)}\n target={String(target)}\n rel={target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"link\"\n data-field-label=\"Link Text\"\n >\n {String(text)}\n </a>\n );\n}\n","/**\n * Link Component Schema\n * Text link with styling options\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const linkComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.LINK,\n name: \"Link\",\n description: \"Text hyperlink\",\n icon: \"link\",\n category: COMPONENT_CATEGORIES.INTERACTIVE,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Link Text\",\n default: \"Click here\",\n required: true,\n maxLength: 200,\n },\n {\n id: \"url\",\n type: FIELD_TYPES.URL,\n label: \"Link URL\",\n default: \"#\",\n required: true,\n },\n {\n id: \"target\",\n type: FIELD_TYPES.SELECT,\n label: \"Open In\",\n default: \"_self\",\n options: [\n { label: \"Same Tab\", value: \"_self\" },\n { label: \"New Tab\", value: \"_blank\" },\n ],\n },\n {\n id: \"underline\",\n type: FIELD_TYPES.CHECKBOX,\n label: \"Show Underline\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default (primary color)\",\n },\n {\n id: \"hoverColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Hover Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"base\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"fontWeight\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Weight\",\n default: \"normal\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Medium\", value: \"medium\" },\n { label: \"Semibold\", value: \"semibold\" },\n { label: \"Bold\", value: \"bold\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"textDecoration\",\n type: FIELD_TYPES.SELECT,\n label: \"Text Decoration\",\n default: \"underline\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Underline\", value: \"underline\" },\n { label: \"Overline\", value: \"overline\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"Click here\",\n url: \"#\",\n target: \"_self\",\n underline: true,\n },\n\n styleDefaults: {\n fontSize: \"base\",\n fontWeight: \"normal\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"link\", \"hyperlink\", \"anchor\", \"url\"],\n};\n","/**\n * Divider Component\n * Horizontal line separator with optional center text\n *\n * ✅ Uses Radix UI Separator primitive\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\nexport function DividerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, lineStyle } = content;\n const {\n color,\n thickness,\n width,\n marginTop,\n marginBottom,\n opacity,\n customClasses,\n } = style;\n\n // Map thickness to height classes\n const thicknessMap: Record<string, string> = {\n \"1px\": \"h-px\",\n \"2px\": \"h-0.5\",\n \"3px\": \"h-[3px]\",\n \"4px\": \"h-1\",\n };\n\n const heightClass = thicknessMap[String(thickness)] || thicknessMap[\"1px\"];\n\n // Build container style for spacing and sizing\n const containerStyle: React.CSSProperties = {\n width: String(width),\n marginTop: marginTop ? String(marginTop) : undefined,\n marginBottom: marginBottom ? String(marginBottom) : undefined,\n opacity: opacity ? Number(opacity) / 100 : 1,\n };\n\n // Build separator style for color and line style\n const separatorStyle: React.CSSProperties = {\n backgroundColor: String(color),\n ...(String(lineStyle) !== \"solid\" && {\n backgroundImage:\n String(lineStyle) === \"dashed\"\n ? `repeating-linear-gradient(to right, ${String(color)} 0, ${String(color)} 8px, transparent 8px, transparent 14px)`\n : `repeating-linear-gradient(to right, ${String(color)} 0, ${String(color)} 2px, transparent 2px, transparent 6px)`,\n backgroundColor: \"transparent\",\n }),\n };\n\n // Build classes\n const containerClasses = cn(\"component-divider\", customClasses, className);\n\n // If no text, render simple Separator\n if (!text) {\n return (\n <div\n className={containerClasses}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <SeparatorPrimitive.Root\n orientation=\"horizontal\"\n className={cn(\"shrink-0 bg-border\", heightClass)}\n style={separatorStyle}\n />\n </div>\n );\n }\n\n // If text exists, render with center text\n return (\n <div\n className={cn(containerClasses, \"flex items-center gap-4\")}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <SeparatorPrimitive.Root\n orientation=\"horizontal\"\n className={cn(\"shrink-0 bg-border flex-1\", heightClass)}\n style={separatorStyle}\n />\n <span\n className=\"text-sm text-muted-foreground px-2 whitespace-nowrap\"\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Divider Text\"\n >\n {String(text)}\n </span>\n <SeparatorPrimitive.Root\n orientation=\"horizontal\"\n className={cn(\"shrink-0 bg-border flex-1\", heightClass)}\n style={separatorStyle}\n />\n </div>\n );\n}\n","/**\n * Divider Component Schema\n * Horizontal line separator\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const dividerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.DIVIDER,\n name: \"Divider\",\n description: \"Horizontal line separator\",\n icon: \"minus\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Center Text (Optional)\",\n info: \"Text to display in center of divider\",\n default: \"\",\n maxLength: 50,\n },\n {\n id: \"lineStyle\",\n type: FIELD_TYPES.SELECT,\n label: \"Line Style\",\n default: \"solid\",\n options: [\n { label: \"Solid\", value: \"solid\" },\n { label: \"Dashed\", value: \"dashed\" },\n { label: \"Dotted\", value: \"dotted\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Line Color\",\n default: \"#e5e7eb\",\n },\n {\n id: \"thickness\",\n type: FIELD_TYPES.SELECT,\n label: \"Thickness\",\n default: \"1px\",\n options: [\n { label: \"Thin (1px)\", value: \"1px\" },\n { label: \"Medium (2px)\", value: \"2px\" },\n { label: \"Thick (3px)\", value: \"3px\" },\n { label: \"Extra Thick (4px)\", value: \"4px\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"100%\",\n options: [\n { label: \"Full Width\", value: \"100%\" },\n { label: \"75%\", value: \"75%\" },\n { label: \"50%\", value: \"50%\" },\n { label: \"25%\", value: \"25%\" },\n ],\n },\n {\n id: \"marginTop\",\n type: FIELD_TYPES.TEXT,\n label: \"Top Spacing\",\n default: \"2rem\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Bottom Spacing\",\n default: \"2rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"opacity\",\n type: FIELD_TYPES.RANGE,\n label: \"Opacity\",\n default: 100,\n min: 0,\n max: 100,\n step: 10,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"\",\n lineStyle: \"solid\",\n },\n\n styleDefaults: {\n thickness: \"1px\",\n width: \"100%\",\n marginTop: \"2rem\",\n marginBottom: \"2rem\",\n // Color default removed - use shadcn theme default\n },\n\n supportsResponsive: false,\n tags: [\"divider\", \"separator\", \"line\", \"hr\"],\n};\n","/**\n * Spacer Component\n * Vertical spacing element\n *\n * ✅ Framework-agnostic spacing component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Height mapping\nconst heightMap: Record<string, string> = {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"2rem\",\n lg: \"3rem\",\n xl: \"4rem\",\n \"2xl\": \"6rem\",\n \"3xl\": \"8rem\",\n};\n\nexport function SpacerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n height,\n customHeight,\n showDivider,\n dividerColor,\n dividerWidth,\n dividerThickness,\n customClasses,\n } = style;\n\n // Get height value\n const heightValue = customHeight\n ? String(customHeight)\n : heightMap[String(height)] || heightMap.md;\n\n // Build container style\n const containerStyle: React.CSSProperties = {\n height: heightValue,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // Build divider style\n const dividerStyle: React.CSSProperties = {\n width: String(dividerWidth),\n height: String(dividerThickness),\n backgroundColor: String(dividerColor),\n };\n\n // Build classes\n const classes = cn(\"component-spacer\", customClasses, className);\n\n return (\n <div\n className={classes}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {showDivider && <div style={dividerStyle} />}\n </div>\n );\n}\n","/**\n * Spacer Component Schema\n * Empty vertical space for layout\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const spacerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.SPACER,\n name: \"Spacer\",\n description: \"Vertical spacing element\",\n icon: \"space\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"height\",\n type: FIELD_TYPES.SELECT,\n label: \"Height\",\n default: \"md\",\n required: true,\n options: [\n { label: \"XS (0.5rem)\", value: \"xs\" },\n { label: \"Small (1rem)\", value: \"sm\" },\n { label: \"Medium (2rem)\", value: \"md\" },\n { label: \"Large (3rem)\", value: \"lg\" },\n { label: \"XL (4rem)\", value: \"xl\" },\n { label: \"2XL (6rem)\", value: \"2xl\" },\n { label: \"3XL (8rem)\", value: \"3xl\" },\n ],\n },\n {\n id: \"showDivider\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Center Divider\",\n default: false,\n },\n {\n id: \"dividerColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Divider Color\",\n default: \"#e5e7eb\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"customHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Height\",\n default: \"\",\n info: \"Override preset height (e.g., 5rem, 100px)\",\n },\n {\n id: \"dividerWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Divider Width\",\n default: \"100%\",\n },\n {\n id: \"dividerThickness\",\n type: FIELD_TYPES.TEXT,\n label: \"Divider Thickness\",\n default: \"1px\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n height: \"md\",\n showDivider: false,\n customHeight: \"\",\n dividerWidth: \"100%\",\n dividerThickness: \"1px\",\n // Color default removed - use shadcn theme default\n },\n\n supportsResponsive: true,\n tags: [\"spacer\", \"spacing\", \"gap\", \"margin\", \"layout\"],\n};\n","/**\n * Quote Component\n * Blockquote with optional citation\n *\n * ✅ Framework-agnostic blockquote component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n};\n\nexport function QuoteComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, author, source, showQuoteMarks } = content;\n const {\n fontSize,\n fontStyle,\n textAlign,\n color,\n borderLeft,\n borderColor,\n backgroundColor,\n lineHeight,\n padding,\n borderWidth,\n borderRadius,\n maxWidth,\n customClasses,\n } = style;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(fontStyle && {\n fontStyle: fontStyle === \"italic\" ? \"italic\" : \"normal\",\n }),\n ...(textAlign && {\n textAlign: String(textAlign) as React.CSSProperties[\"textAlign\"],\n }),\n ...(lineHeight && { lineHeight: String(lineHeight) }),\n ...(padding && { padding: String(padding) }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(borderLeft && {\n borderLeft: `${String(borderWidth)} solid ${borderColor ? String(borderColor) : \"hsl(var(--primary))\"}`,\n }),\n };\n\n // Build classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n\n const classes = cn(\n \"component-quote\",\n fontSizeClass,\n customClasses,\n className\n );\n\n return (\n <blockquote\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {showQuoteMarks ? (\n <span className=\"text-4xl leading-none opacity-30 mr-2\">&ldquo;</span>\n ) : null}\n <span\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Quote Text\"\n >\n {String(text)}\n </span>\n {showQuoteMarks ? (\n <span className=\"text-4xl leading-none opacity-30 ml-2\">&rdquo;</span>\n ) : null}\n\n {author || source ? (\n <footer className=\"mt-4 text-sm opacity-70\">\n {author ? (\n <cite\n className=\"not-italic font-medium\"\n data-field-id=\"author\"\n data-element-type=\"text\"\n data-field-label=\"Author\"\n >\n {String(author)}\n </cite>\n ) : null}\n {author && source ? <span className=\"mx-1\">—</span> : null}\n {source ? (\n <span\n data-field-id=\"source\"\n data-element-type=\"text\"\n data-field-label=\"Source\"\n >\n {String(source)}\n </span>\n ) : null}\n </footer>\n ) : null}\n </blockquote>\n );\n}\n","/**\n * Quote Component Schema\n * Blockquote with optional citation and styling\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const quoteComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.QUOTE,\n name: \"Quote\",\n description: \"Blockquote with citation\",\n icon: \"quote\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Quote Text\",\n default:\n \"The future belongs to those who believe in the beauty of their dreams.\",\n required: true,\n },\n {\n id: \"author\",\n type: FIELD_TYPES.TEXT,\n label: \"Author\",\n default: \"\",\n },\n {\n id: \"source\",\n type: FIELD_TYPES.TEXT,\n label: \"Source\",\n default: \"\",\n info: \"e.g., Book title, article name\",\n },\n {\n id: \"showQuoteMarks\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Quote Marks\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"lg\",\n options: [\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"2XL\", value: \"2xl\" },\n { label: \"3XL\", value: \"3xl\" },\n ],\n },\n {\n id: \"fontStyle\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Style\",\n default: \"italic\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Italic\", value: \"italic\" },\n ],\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.TEXT_ALIGNMENT,\n label: \"Text Align\",\n default: \"left\",\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"borderLeft\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Left Border\",\n default: true,\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default (primary color)\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Line Height\",\n default: \"1.8\",\n },\n {\n id: \"padding\",\n type: FIELD_TYPES.TEXT,\n label: \"Padding\",\n default: \"1.5rem\",\n },\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"4px\",\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0\",\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"The future belongs to those who believe in the beauty of their dreams.\",\n author: \"\",\n source: \"\",\n showQuoteMarks: true,\n },\n\n styleDefaults: {\n fontSize: \"lg\",\n fontStyle: \"italic\",\n textAlign: \"left\",\n borderLeft: true,\n lineHeight: \"1.8\",\n padding: \"1.5rem\",\n borderWidth: \"4px\",\n borderRadius: \"0\",\n maxWidth: \"100%\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"quote\", \"blockquote\", \"citation\", \"testimonial\"],\n};\n","/**\n * Badge Component\n * Small colored label or tag\n *\n * ✅ Standalone badge component with shadcn-style variants\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\n// Size mapping (shadcn badge is fixed size, we add customization)\nconst sizeMap: Record<string, string> = {\n sm: \"text-xs px-2 py-0.5\",\n md: \"text-sm px-2.5 py-0.5\",\n lg: \"text-base px-3 py-1\",\n};\n\n// Rounded mapping\nconst roundedMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\ntype BadgeVariant = VariantProps<typeof badgeVariants>[\"variant\"];\n\nexport function BadgeComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, icon } = content;\n const {\n variant,\n size,\n rounded,\n backgroundColor,\n textColor,\n borderColor,\n borderWidth,\n customClasses,\n } = style;\n\n // Map legacy variants to shadcn variants\n const mapVariant = (v: string): string => {\n const variantMapping: Record<string, string> = {\n primary: \"default\",\n success: \"secondary\",\n warning: \"outline\",\n danger: \"destructive\",\n };\n return variantMapping[v] || v;\n };\n\n const mappedVariant = mapVariant(String(variant));\n\n // Build inline style for custom properties\n const inlineStyle: React.CSSProperties = {\n backgroundColor: backgroundColor ? String(backgroundColor) : undefined,\n color: textColor ? String(textColor) : undefined,\n ...(borderColor && {\n borderColor: String(borderColor),\n borderWidth: String(borderWidth || \"1px\"),\n borderStyle: \"solid\" as const,\n }),\n };\n\n // Build size and rounded classes (only when not using defaults)\n const sizeClass = String(size) !== \"default\" ? sizeMap[String(size)] : \"\";\n const roundedClass =\n String(rounded) !== \"full\" ? roundedMap[String(rounded)] : \"\";\n\n return (\n <div\n className={cn(\n badgeVariants({ variant: mappedVariant as BadgeVariant }),\n \"component-badge\",\n sizeClass,\n roundedClass,\n customClasses,\n className\n )}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <span\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Badge Text\"\n >\n {String(text)}\n </span>\n </div>\n );\n}\n","/**\n * Badge Component Schema\n * Small colored label or tag\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const badgeComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.BADGE,\n name: \"Badge\",\n description: \"Small colored label or tag\",\n icon: \"tag\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Badge Text\",\n default: \"New\",\n required: true,\n },\n {\n id: \"icon\",\n type: FIELD_TYPES.TEXT,\n label: \"Icon Name (Optional)\",\n info: \"Lucide icon name\",\n default: \"\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Secondary\", value: \"secondary\" },\n { label: \"Destructive\", value: \"destructive\" },\n { label: \"Outline\", value: \"outline\" },\n // Legacy variants for backward compatibility\n { label: \"Primary (Legacy)\", value: \"primary\" },\n { label: \"Success (Legacy)\", value: \"success\" },\n { label: \"Warning (Legacy)\", value: \"warning\" },\n { label: \"Danger (Legacy)\", value: \"danger\" },\n ],\n },\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (shadcn)\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"rounded\",\n type: FIELD_TYPES.SELECT,\n label: \"Rounded\",\n default: \"full\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Full (Default)\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n info: \"Override variant background\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Override variant text color\",\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n },\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"1px\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"New\",\n icon: \"\",\n },\n\n styleDefaults: {\n variant: \"default\",\n size: \"default\",\n rounded: \"full\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"badge\", \"tag\", \"label\", \"pill\", \"chip\"],\n};\n","/**\n * Image Component\n * Renders image with optional caption and link\n *\n * ✅ Framework-agnostic version using native <img> tag\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Object fit mapping\nconst objectFitMap: Record<string, string> = {\n cover: \"object-cover\",\n contain: \"object-contain\",\n fill: \"object-fill\",\n none: \"object-none\",\n};\n\nexport function ImageComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { src, alt, caption, link } = content;\n const {\n width,\n height,\n objectFit,\n borderRadius,\n aspectRatio,\n boxShadow,\n customClasses,\n } = style;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(width && { width: String(width) }),\n ...(height && { height: String(height) }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(aspectRatio &&\n String(aspectRatio) !== \"auto\" && { aspectRatio: String(aspectRatio) }),\n ...(boxShadow &&\n String(boxShadow) !== \"none\" && { boxShadow: String(boxShadow) }),\n };\n\n // Build classes\n const objectFitClass = objectFitMap[String(objectFit)];\n const classes = cn(\n \"component-image\",\n objectFitClass,\n customClasses,\n className\n );\n\n // Render image\n const imageElement = src ? (\n <img\n src={String(src)}\n alt={String(alt || \"\")}\n style={inlineStyle}\n className={classes}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"src\"\n data-element-type=\"image\"\n data-field-label=\"Image\"\n />\n ) : (\n <div\n style={inlineStyle}\n className={cn(\"flex items-center justify-center bg-gray-100\", classes)}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n >\n <span className=\"text-gray-400\">No image</span>\n </div>\n );\n\n return (\n <figure className=\"component-image-wrapper\">\n {link ? (\n <a href={String(link)} target=\"_blank\" rel=\"noopener noreferrer\">\n {imageElement}\n </a>\n ) : (\n imageElement\n )}\n {caption ? (\n <figcaption className=\"mt-2 text-sm text-gray-600 text-center\">\n {String(caption)}\n </figcaption>\n ) : null}\n </figure>\n );\n}\n","/**\n * Image Component Schema\n * Image with alt text, sizing, and styling options\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const imageComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.IMAGE,\n name: \"Image\",\n description: \"Image with caption\",\n icon: \"image\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"src\",\n type: FIELD_TYPES.IMAGE,\n label: \"Image URL\",\n info: \"Image source URL\",\n required: true,\n accept: [\"image/jpeg\", \"image/png\", \"image/webp\", \"image/gif\"],\n },\n {\n id: \"alt\",\n type: FIELD_TYPES.TEXT,\n label: \"Alt Text\",\n info: \"Alternative text for accessibility\",\n required: true,\n maxLength: 200,\n },\n {\n id: \"caption\",\n type: FIELD_TYPES.TEXT,\n label: \"Caption\",\n info: \"Optional caption below image\",\n maxLength: 200,\n },\n {\n id: \"link\",\n type: FIELD_TYPES.URL,\n label: \"Link URL\",\n info: \"Optional link when image is clicked\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"100%\",\n options: [\n { label: \"Full Width\", value: \"100%\" },\n { label: \"75%\", value: \"75%\" },\n { label: \"50%\", value: \"50%\" },\n { label: \"25%\", value: \"25%\" },\n { label: \"Custom\", value: \"custom\" },\n ],\n },\n {\n id: \"height\",\n type: FIELD_TYPES.TEXT,\n label: \"Height\",\n info: \"e.g., auto, 300px, 20rem\",\n default: \"auto\",\n },\n {\n id: \"objectFit\",\n type: FIELD_TYPES.SELECT,\n label: \"Object Fit\",\n default: \"cover\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n { label: \"Fill\", value: \"fill\" },\n { label: \"None\", value: \"none\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0.5rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"aspectRatio\",\n type: FIELD_TYPES.SELECT,\n label: \"Aspect Ratio\",\n default: \"auto\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"16:9\", value: \"16/9\" },\n { label: \"4:3\", value: \"4/3\" },\n { label: \"1:1 (Square)\", value: \"1/1\" },\n { label: \"21:9\", value: \"21/9\" },\n ],\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"none\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n src: \"\",\n alt: \"\",\n caption: \"\",\n link: \"\",\n },\n\n styleDefaults: {\n width: \"100%\",\n height: \"auto\",\n objectFit: \"cover\",\n borderRadius: \"0.5rem\",\n },\n\n supportsResponsive: true,\n tags: [\"image\", \"photo\", \"picture\", \"media\"],\n};\n","/**\n * Icon Component\n * Displays icon from Lucide icon library\n *\n * ✅ Uses lucide-react (peer dependency)\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport * as LucideIcons from \"lucide-react\";\n\n// Size mapping\nconst sizeMap: Record<string, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n \"2xl\": 64,\n};\n\nexport function IconComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { iconName, ariaLabel } = content;\n const { size, color, strokeWidth, rotation, opacity, customClasses } = style;\n\n // Get icon size\n const iconSize = sizeMap[String(size)];\n const iconStrokeWidth = Number(strokeWidth);\n const iconRotation = Number(rotation);\n const iconOpacity = opacity ? Number(opacity) / 100 : 1;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(iconOpacity !== 1 && { opacity: iconOpacity }),\n ...(iconRotation && { transform: `rotate(${iconRotation}deg)` }),\n };\n\n // Build classes\n const classes = cn(\"component-icon inline-block\", customClasses, className);\n\n // Get the icon component dynamically\n const IconComponent =\n (\n LucideIcons as unknown as Record<\n string,\n React.ComponentType<{ size?: number; strokeWidth?: number }>\n >\n )[\n String(iconName)\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\"\")\n ] || LucideIcons.HelpCircle;\n\n return (\n <span\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n role={ariaLabel ? \"img\" : undefined}\n aria-label={ariaLabel ? String(ariaLabel) : undefined}\n >\n <IconComponent size={iconSize} strokeWidth={iconStrokeWidth} />\n </span>\n );\n}\n","/**\n * Icon Component Schema\n * Displays icon from icon library\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const iconComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.ICON,\n name: \"Icon\",\n description: \"Display icon from library\",\n icon: \"sparkles\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"iconName\",\n type: FIELD_TYPES.TEXT,\n label: \"Icon Name\",\n info: 'Lucide icon name (e.g., \"heart\", \"star\", \"check\")',\n default: \"star\",\n required: true,\n },\n {\n id: \"ariaLabel\",\n type: FIELD_TYPES.TEXT,\n label: \"Accessibility Label\",\n info: \"Screen reader description\",\n default: \"\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"md\",\n options: [\n { label: \"XS (12px)\", value: \"xs\" },\n { label: \"Small (16px)\", value: \"sm\" },\n { label: \"Medium (24px)\", value: \"md\" },\n { label: \"Large (32px)\", value: \"lg\" },\n { label: \"XL (48px)\", value: \"xl\" },\n { label: \"2XL (64px)\", value: \"2xl\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Icon Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"strokeWidth\",\n type: FIELD_TYPES.SELECT,\n label: \"Stroke Width\",\n default: \"2\",\n options: [\n { label: \"Thin (1)\", value: \"1\" },\n { label: \"Regular (2)\", value: \"2\" },\n { label: \"Bold (3)\", value: \"3\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"rotation\",\n type: FIELD_TYPES.SELECT,\n label: \"Rotation\",\n default: \"0\",\n options: [\n { label: \"None\", value: \"0\" },\n { label: \"90°\", value: \"90\" },\n { label: \"180°\", value: \"180\" },\n { label: \"270°\", value: \"270\" },\n ],\n },\n {\n id: \"opacity\",\n type: FIELD_TYPES.RANGE,\n label: \"Opacity\",\n default: 100,\n min: 0,\n max: 100,\n step: 10,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n iconName: \"star\",\n ariaLabel: \"\",\n },\n\n styleDefaults: {\n size: \"md\",\n strokeWidth: \"2\",\n rotation: \"0\",\n opacity: \"100\",\n // Color default removed - use theme default\n },\n\n supportsResponsive: false,\n tags: [\"icon\", \"symbol\", \"graphic\", \"lucide\"],\n};\n","/**\n * Video Component\n * Embeds video from YouTube, Vimeo, or self-hosted\n *\n * ✅ Framework-agnostic video component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\nexport function VideoComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const {\n videoType,\n videoUrl,\n poster,\n title,\n autoplay,\n loop,\n muted,\n controls,\n } = content;\n const {\n aspectRatio,\n width,\n maxWidth,\n marginTop,\n marginBottom,\n borderRadius,\n boxShadow,\n customClasses,\n } = style;\n\n // Build container style (only when values are provided)\n const containerStyle: React.CSSProperties = {\n ...(width && { width: String(width) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n ...(marginTop && { marginTop: String(marginTop) }),\n ...(marginBottom && { marginBottom: String(marginBottom) }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(boxShadow && { boxShadow: String(boxShadow) }),\n overflow: \"hidden\",\n };\n\n // Build classes\n const classes = cn(\"component-video relative\", customClasses, className);\n\n // Get aspect ratio padding\n const aspectRatioPadding =\n {\n \"16/9\": \"56.25%\",\n \"4/3\": \"75%\",\n \"1/1\": \"100%\",\n \"21/9\": \"42.86%\",\n }[String(aspectRatio)] || \"56.25%\";\n\n // Build embed URL\n const getEmbedUrl = (): string => {\n const urlString = String(videoUrl);\n\n if (videoType === \"youtube\") {\n // Extract YouTube ID\n let videoId = urlString;\n if (urlString.includes(\"youtube.com\") || urlString.includes(\"youtu.be\")) {\n const match = urlString.match(\n /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\s]+)/\n );\n videoId = match ? match[1] : urlString;\n }\n const params = new URLSearchParams({\n ...(Boolean(autoplay) && { autoplay: \"1\" }),\n ...(Boolean(loop) && { loop: \"1\", playlist: videoId }),\n ...(Boolean(muted) && { mute: \"1\" }),\n ...(!Boolean(controls) && { controls: \"0\" }),\n });\n return `https://www.youtube.com/embed/${videoId}?${params.toString()}`;\n }\n\n if (videoType === \"vimeo\") {\n // Extract Vimeo ID\n let videoId = urlString;\n if (urlString.includes(\"vimeo.com\")) {\n const match = urlString.match(/vimeo\\.com\\/(\\d+)/);\n videoId = match ? match[1] : urlString;\n }\n const params = new URLSearchParams({\n ...(Boolean(autoplay) && { autoplay: \"1\" }),\n ...(Boolean(loop) && { loop: \"1\" }),\n ...(Boolean(muted) && { muted: \"1\" }),\n });\n return `https://player.vimeo.com/video/${videoId}?${params.toString()}`;\n }\n\n // Self-hosted\n return urlString;\n };\n\n // For self-hosted video\n if (videoType === \"hosted\") {\n return (\n <div\n className={classes}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <video\n src={String(videoUrl)}\n poster={poster ? String(poster) : undefined}\n autoPlay={!!autoplay}\n loop={!!loop}\n muted={!!muted}\n controls={!!controls}\n className=\"w-full h-auto\"\n title={title ? String(title) : undefined}\n >\n Your browser does not support the video tag.\n </video>\n </div>\n );\n }\n\n // For embedded video (YouTube/Vimeo)\n return (\n <div\n className={classes}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <div\n className=\"relative w-full\"\n style={{ paddingBottom: aspectRatioPadding }}\n >\n <iframe\n src={getEmbedUrl()}\n title={title ? String(title) : \"Video player\"}\n className=\"absolute top-0 left-0 w-full h-full\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n </div>\n </div>\n );\n}\n","/**\n * Video Component Schema\n * Embeds video from YouTube, Vimeo, or self-hosted\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const videoComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.VIDEO,\n name: \"Video\",\n description: \"Embed video player\",\n icon: \"video\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"videoType\",\n type: FIELD_TYPES.SELECT,\n label: \"Video Type\",\n default: \"youtube\",\n required: true,\n options: [\n { label: \"YouTube\", value: \"youtube\" },\n { label: \"Vimeo\", value: \"vimeo\" },\n { label: \"Self-Hosted\", value: \"hosted\" },\n ],\n },\n {\n id: \"videoUrl\",\n type: FIELD_TYPES.VIDEO_URL,\n label: \"Video URL\",\n info: \"YouTube or Vimeo URL - thumbnail will be shown automatically\",\n default: \"\",\n required: true,\n accept: [\"youtube\", \"vimeo\"],\n },\n {\n id: \"poster\",\n type: FIELD_TYPES.IMAGE_PICKER,\n label: \"Poster Image (Thumbnail)\",\n info: \"Preview image before video plays (optional if using YouTube/Vimeo)\",\n default: \"\",\n },\n {\n id: \"title\",\n type: FIELD_TYPES.TEXT,\n label: \"Video Title\",\n info: \"For accessibility\",\n default: \"\",\n },\n {\n id: \"autoplay\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Autoplay\",\n default: false,\n },\n {\n id: \"loop\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Loop\",\n default: false,\n },\n {\n id: \"muted\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Muted\",\n default: false,\n },\n {\n id: \"controls\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Controls\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"aspectRatio\",\n type: FIELD_TYPES.SELECT,\n label: \"Aspect Ratio\",\n default: \"16/9\",\n options: [\n { label: \"16:9 (Widescreen)\", value: \"16/9\" },\n { label: \"4:3 (Standard)\", value: \"4/3\" },\n { label: \"1:1 (Square)\", value: \"1/1\" },\n { label: \"21:9 (Cinematic)\", value: \"21/9\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.TEXT,\n label: \"Width\",\n default: \"100%\",\n info: \"e.g., 100%, 800px, 50vw\",\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"marginTop\",\n type: FIELD_TYPES.TEXT,\n label: \"Margin Top\",\n default: \"0\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Margin Bottom\",\n default: \"0\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0\",\n info: \"e.g., 8px, 1rem\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"\",\n info: \"CSS box-shadow value\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n videoType: \"youtube\",\n videoUrl: \"\",\n poster: \"\",\n title: \"\",\n autoplay: false,\n loop: false,\n muted: false,\n controls: true,\n },\n\n styleDefaults: {\n aspectRatio: \"16/9\",\n width: \"100%\",\n maxWidth: \"100%\",\n marginTop: \"0\",\n marginBottom: \"0\",\n borderRadius: \"0\",\n boxShadow: \"\",\n },\n\n supportsResponsive: true,\n tags: [\"video\", \"youtube\", \"vimeo\", \"embed\", \"media\"],\n};\n","/**\n * List Component\n * Renders ordered or unordered list\n *\n * ✅ Framework-agnostic list component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n};\n\n// Spacing mapping\nconst spacingMap: Record<string, string> = {\n tight: \"space-y-1\",\n normal: \"space-y-2\",\n loose: \"space-y-4\",\n};\n\nexport function ListComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { listType, items, markerStyle } = content;\n const {\n fontSize,\n color,\n spacing,\n markerColor,\n lineHeight,\n paddingLeft,\n maxWidth,\n customClasses,\n } = style;\n\n // Parse items array\n const itemsArray = Array.isArray(items)\n ? items\n : String(items || \"\")\n .split(\"\\n\")\n .filter(Boolean);\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(lineHeight && { lineHeight: String(lineHeight) }),\n ...(paddingLeft && { paddingLeft: String(paddingLeft) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n listStyleType:\n markerStyle === \"default\"\n ? listType === \"ul\"\n ? \"disc\"\n : \"decimal\"\n : String(markerStyle),\n };\n\n // Build classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const spacingClass = spacingMap[String(spacing)];\n\n const classes = cn(\n \"component-list\",\n fontSizeClass,\n spacingClass,\n customClasses,\n className\n );\n\n const ListTag = (\n listType === \"ol\" ? \"ol\" : \"ul\"\n ) as keyof React.JSX.IntrinsicElements;\n\n return (\n <ListTag\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {itemsArray.map((item, index) => (\n <li\n key={index}\n style={{\n ...(markerColor && { color: String(markerColor) }),\n }}\n data-field-id=\"items\"\n data-element-type=\"text\"\n data-field-label={`List Item ${index + 1}`}\n >\n <span style={{ ...(color && { color: String(color) }) }}>\n {String(item)}\n </span>\n </li>\n ))}\n </ListTag>\n );\n}\n","/**\n * List Component Schema\n * Ordered or unordered list with customizable items\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const listComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.LIST,\n name: \"List\",\n description: \"Ordered or unordered list\",\n icon: \"list\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"listType\",\n type: FIELD_TYPES.SELECT,\n label: \"List Type\",\n default: \"ul\",\n required: true,\n options: [\n { label: \"Unordered (Bullets)\", value: \"ul\" },\n { label: \"Ordered (Numbers)\", value: \"ol\" },\n ],\n },\n {\n id: \"items\",\n type: FIELD_TYPES.ARRAY,\n label: \"List Items\",\n default: [\"Item 1\", \"Item 2\", \"Item 3\"],\n required: true,\n info: \"One item per line\",\n },\n {\n id: \"markerStyle\",\n type: FIELD_TYPES.SELECT,\n label: \"Marker Style\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Circle\", value: \"circle\" },\n { label: \"Square\", value: \"square\" },\n { label: \"Decimal\", value: \"decimal\" },\n { label: \"Lower Alpha\", value: \"lower-alpha\" },\n { label: \"Upper Alpha\", value: \"upper-alpha\" },\n { label: \"Lower Roman\", value: \"lower-roman\" },\n { label: \"Upper Roman\", value: \"upper-roman\" },\n { label: \"None\", value: \"none\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"base\",\n options: [\n { label: \"XS\", value: \"xs\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"spacing\",\n type: FIELD_TYPES.SELECT,\n label: \"Item Spacing\",\n default: \"normal\",\n options: [\n { label: \"Tight\", value: \"tight\" },\n { label: \"Normal\", value: \"normal\" },\n { label: \"Loose\", value: \"loose\" },\n ],\n },\n {\n id: \"markerColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Marker Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Line Height\",\n default: \"1.6\",\n },\n {\n id: \"paddingLeft\",\n type: FIELD_TYPES.TEXT,\n label: \"Padding Left\",\n default: \"1.5rem\",\n info: \"Indentation from left edge\",\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n listType: \"ul\",\n items: [\"Item 1\", \"Item 2\", \"Item 3\"],\n markerStyle: \"default\",\n },\n\n styleDefaults: {\n fontSize: \"base\",\n spacing: \"normal\",\n lineHeight: \"1.6\",\n paddingLeft: \"1.5rem\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"list\", \"bullet\", \"numbered\", \"ul\", \"ol\", \"items\"],\n};\n","/**\n * Container Component\n * Wrapper element for grouping content\n *\n * ✅ Framework-agnostic container component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Max width mapping\nconst maxWidthMap: Record<string, string> = {\n none: \"\",\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-full\",\n};\n\n// Padding mapping\nconst paddingMap: Record<string, string> = {\n none: \"\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n// Text align mapping\nconst textAlignMap: Record<string, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\n// Display mapping\nconst displayMap: Record<string, string> = {\n block: \"block\",\n flex: \"flex\",\n grid: \"grid\",\n \"inline-block\": \"inline-block\",\n};\n\n// Flex direction mapping\nconst flexDirectionMap: Record<string, string> = {\n row: \"flex-row\",\n column: \"flex-col\",\n};\n\n// Justify content mapping\nconst justifyContentMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n \"space-between\": \"justify-between\",\n \"space-around\": \"justify-around\",\n};\n\n// Align items mapping\nconst alignItemsMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport function ContainerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { tag } = content;\n const {\n maxWidth,\n padding,\n backgroundColor,\n textAlign,\n display,\n flexDirection,\n justifyContent,\n alignItems,\n gap,\n borderWidth,\n borderColor,\n borderRadius,\n boxShadow,\n customClasses,\n } = style;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(gap && { gap: String(gap) }),\n ...(borderWidth &&\n String(borderWidth) !== \"0\" && {\n borderWidth: String(borderWidth),\n ...(borderColor && { borderColor: String(borderColor) }),\n borderStyle: \"solid\",\n }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(boxShadow && { boxShadow: String(boxShadow) }),\n };\n\n // Build classes\n const maxWidthClass = maxWidthMap[String(maxWidth)];\n const paddingClass = paddingMap[String(padding)];\n const textAlignClass = textAlignMap[String(textAlign)];\n const displayClass = displayMap[String(display)];\n const flexDirectionClass =\n display === \"flex\" ? flexDirectionMap[String(flexDirection)] : \"\";\n const justifyContentClass =\n display === \"flex\" ? justifyContentMap[String(justifyContent)] : \"\";\n const alignItemsClass =\n display === \"flex\" ? alignItemsMap[String(alignItems)] : \"\";\n\n const classes = cn(\n \"component-container\",\n maxWidthClass,\n paddingClass,\n textAlignClass,\n displayClass,\n flexDirectionClass,\n justifyContentClass,\n alignItemsClass,\n customClasses,\n className\n );\n\n const Tag = tag as keyof React.JSX.IntrinsicElements;\n\n return React.createElement(\n Tag || \"div\",\n {\n className: classes,\n style: inlineStyle,\n \"data-component-id\": component.id,\n \"data-component-type\": component.type,\n \"data-section-id\": sectionId,\n \"data-editable\": isEditing ? \"true\" : undefined,\n },\n children\n );\n}\n","/**\n * Container Component Schema\n * Wrapper element for grouping content with layout controls\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const containerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CONTAINER,\n name: \"Container\",\n description: \"Wrapper for grouping content\",\n icon: \"box\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [\n {\n id: \"tag\",\n type: FIELD_TYPES.SELECT,\n label: \"HTML Tag\",\n default: \"div\",\n options: [\n { label: \"Div\", value: \"div\" },\n { label: \"Section\", value: \"section\" },\n { label: \"Article\", value: \"article\" },\n { label: \"Aside\", value: \"aside\" },\n { label: \"Nav\", value: \"nav\" },\n { label: \"Header\", value: \"header\" },\n { label: \"Footer\", value: \"footer\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.SELECT,\n label: \"Max Width\",\n default: \"full\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small (640px)\", value: \"sm\" },\n { label: \"Medium (768px)\", value: \"md\" },\n { label: \"Large (1024px)\", value: \"lg\" },\n { label: \"XL (1280px)\", value: \"xl\" },\n { label: \"2XL (1536px)\", value: \"2xl\" },\n { label: \"Full Width\", value: \"full\" },\n ],\n },\n {\n id: \"padding\",\n type: FIELD_TYPES.SELECT,\n label: \"Padding\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.SELECT,\n label: \"Text Align\",\n default: \"left\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"display\",\n type: FIELD_TYPES.SELECT,\n label: \"Display\",\n default: \"block\",\n options: [\n { label: \"Block\", value: \"block\" },\n { label: \"Flex\", value: \"flex\" },\n { label: \"Grid\", value: \"grid\" },\n { label: \"Inline Block\", value: \"inline-block\" },\n ],\n },\n {\n id: \"flexDirection\",\n type: FIELD_TYPES.SELECT,\n label: \"Flex Direction\",\n default: \"row\",\n options: [\n { label: \"Row\", value: \"row\" },\n { label: \"Column\", value: \"column\" },\n ],\n },\n {\n id: \"justifyContent\",\n type: FIELD_TYPES.SELECT,\n label: \"Justify Content\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Space Between\", value: \"space-between\" },\n { label: \"Space Around\", value: \"space-around\" },\n ],\n },\n {\n id: \"alignItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Align Items\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.TEXT,\n label: \"Gap\",\n default: \"\",\n info: \"Space between flex/grid items\",\n },\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"0\",\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n tag: \"div\",\n },\n\n styleDefaults: {\n maxWidth: \"full\",\n padding: \"md\",\n backgroundColor: \"\",\n textAlign: \"left\",\n display: \"block\",\n flexDirection: \"row\",\n justifyContent: \"start\",\n alignItems: \"start\",\n gap: \"\",\n borderWidth: \"0\",\n borderRadius: \"0\",\n boxShadow: \"\",\n // borderColor default removed - use theme default\n },\n\n supportsResponsive: true,\n tags: [\"container\", \"wrapper\", \"box\", \"layout\", \"group\"],\n};\n","/**\n * Grid Component\n * CSS Grid layout container\n *\n * ✅ Framework-agnostic grid component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Gap mapping\nconst gapMap: Record<string, string> = {\n none: \"gap-0\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n};\n\n// Align items mapping\nconst alignItemsMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\n// Justify items mapping\nconst justifyItemsMap: Record<string, string> = {\n start: \"justify-items-start\",\n center: \"justify-items-center\",\n end: \"justify-items-end\",\n stretch: \"justify-items-stretch\",\n};\n\n// Columns mapping\nconst columnsMap: Record<string, string> = {\n \"1\": \"grid-cols-1\",\n \"2\": \"grid-cols-2\",\n \"3\": \"grid-cols-3\",\n \"4\": \"grid-cols-4\",\n \"5\": \"grid-cols-5\",\n \"6\": \"grid-cols-6\",\n};\n\nexport function GridComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n columns,\n gap,\n alignItems,\n justifyItems,\n gridTemplateColumns,\n gridTemplateRows,\n gridAutoFlow,\n minColumnWidth,\n customClasses,\n } = style;\n\n // Get values\n const columnsValue = String(columns);\n const gapClass = gapMap[String(gap)];\n const alignItemsClass = alignItemsMap[String(alignItems)];\n const justifyItemsClass = justifyItemsMap[String(justifyItems)];\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n display: \"grid\",\n ...(gridAutoFlow && {\n gridAutoFlow: gridAutoFlow as React.CSSProperties[\"gridAutoFlow\"],\n }),\n };\n\n // Handle custom grid template\n if (gridTemplateColumns) {\n inlineStyle.gridTemplateColumns = String(gridTemplateColumns);\n } else if (columnsValue === \"auto\") {\n // Auto-fit columns\n const minWidth = String(minColumnWidth);\n inlineStyle.gridTemplateColumns = `repeat(auto-fit, minmax(${minWidth}, 1fr))`;\n }\n\n if (gridTemplateRows) {\n inlineStyle.gridTemplateRows = String(gridTemplateRows);\n }\n\n // Build classes\n const columnsClass =\n !gridTemplateColumns && columnsValue !== \"auto\"\n ? columnsMap[columnsValue] || \"grid-cols-3\"\n : \"\";\n\n const classes = cn(\n \"component-grid grid\",\n columnsClass,\n gapClass,\n alignItemsClass,\n justifyItemsClass,\n customClasses,\n className\n );\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {children}\n </div>\n );\n}\n","/**\n * Grid Component Schema\n * CSS Grid layout container\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const gridComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.GRID,\n name: \"Grid\",\n description: \"CSS Grid layout container\",\n icon: \"grid-3x3\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.SELECT,\n label: \"Columns\",\n default: \"3\",\n options: [\n { label: \"1 Column\", value: \"1\" },\n { label: \"2 Columns\", value: \"2\" },\n { label: \"3 Columns\", value: \"3\" },\n { label: \"4 Columns\", value: \"4\" },\n { label: \"5 Columns\", value: \"5\" },\n { label: \"6 Columns\", value: \"6\" },\n { label: \"Auto Fit\", value: \"auto\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.SELECT,\n label: \"Gap\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small (0.5rem)\", value: \"sm\" },\n { label: \"Medium (1rem)\", value: \"md\" },\n { label: \"Large (1.5rem)\", value: \"lg\" },\n { label: \"XL (2rem)\", value: \"xl\" },\n ],\n },\n {\n id: \"alignItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Align Items\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n {\n id: \"justifyItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Justify Items\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"gridTemplateColumns\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Grid Template Columns\",\n default: \"\",\n info: \"CSS grid-template-columns value (overrides columns preset)\",\n },\n {\n id: \"gridTemplateRows\",\n type: FIELD_TYPES.TEXT,\n label: \"Grid Template Rows\",\n default: \"\",\n info: \"CSS grid-template-rows value\",\n },\n {\n id: \"gridAutoFlow\",\n type: FIELD_TYPES.SELECT,\n label: \"Grid Auto Flow\",\n default: \"row\",\n options: [\n { label: \"Row\", value: \"row\" },\n { label: \"Column\", value: \"column\" },\n { label: \"Dense\", value: \"dense\" },\n ],\n },\n {\n id: \"minColumnWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Min Column Width\",\n default: \"250px\",\n info: \"For auto-fit columns\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n columns: \"3\",\n gap: \"md\",\n alignItems: \"start\",\n justifyItems: \"start\",\n gridTemplateColumns: \"\",\n gridTemplateRows: \"\",\n gridAutoFlow: \"row\",\n minColumnWidth: \"250px\",\n },\n\n supportsResponsive: true,\n tags: [\"grid\", \"layout\", \"container\", \"css-grid\"],\n};\n","/**\n * Columns Component\n * Flexbox column layout container\n *\n * ✅ Framework-agnostic columns component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Gap mapping\nconst gapMap: Record<string, string> = {\n none: \"gap-0\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n};\n\n// Align items mapping\nconst alignItemsMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport function ColumnsComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n columns,\n gap,\n alignItems,\n reverse,\n wrap,\n columnWidths,\n customClasses,\n } = style;\n\n // Get values\n const columnsNumber = Number(columns);\n const gapClass = gapMap[String(gap)];\n const alignItemsClass = alignItemsMap[String(alignItems)];\n const isReverse = !!reverse;\n const shouldWrap = wrap !== false;\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n display: \"flex\",\n };\n\n // Handle custom column widths\n if (columnWidths) {\n const widths = String(columnWidths)\n .split(\",\")\n .map((w) => w.trim());\n inlineStyle.gridTemplateColumns = String(widths.join(\" \"));\n inlineStyle.display = \"grid\";\n }\n\n // Build classes\n const classes = cn(\n \"component-columns flex\",\n gapClass,\n alignItemsClass,\n {\n \"flex-row-reverse\": isReverse,\n \"flex-wrap\": shouldWrap,\n },\n customClasses,\n className\n );\n\n // Render children with flex-basis if using flexbox\n const renderChildren = () => {\n if (columnWidths || !children) {\n return children;\n }\n\n const childrenArray = React.Children.toArray(children);\n const columnWidth = `${100 / columnsNumber}%`;\n\n return childrenArray.map((child, index) => (\n <div\n key={index}\n style={{\n flexBasis: columnWidth,\n minWidth: shouldWrap ? \"200px\" : columnWidth,\n }}\n >\n {child}\n </div>\n ));\n };\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {renderChildren()}\n </div>\n );\n}\n","/**\n * Columns Component Schema\n * Flexbox column layout container\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const columnsComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.COLUMNS,\n name: \"Columns\",\n description: \"Flexbox column layout\",\n icon: \"columns\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.SELECT,\n label: \"Number of Columns\",\n default: \"2\",\n options: [\n { label: \"1 Column\", value: \"1\" },\n { label: \"2 Columns\", value: \"2\" },\n { label: \"3 Columns\", value: \"3\" },\n { label: \"4 Columns\", value: \"4\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.SELECT,\n label: \"Gap\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small (0.5rem)\", value: \"sm\" },\n { label: \"Medium (1rem)\", value: \"md\" },\n { label: \"Large (1.5rem)\", value: \"lg\" },\n { label: \"XL (2rem)\", value: \"xl\" },\n ],\n },\n {\n id: \"alignItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Align Items\",\n default: \"stretch\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n {\n id: \"reverse\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Reverse Order\",\n default: false,\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"columnWidths\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Column Widths\",\n default: \"\",\n info: 'Comma-separated widths (e.g., \"1fr,2fr,1fr\")',\n },\n {\n id: \"wrap\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Allow Wrap\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n columns: \"2\",\n gap: \"md\",\n alignItems: \"stretch\",\n reverse: false,\n columnWidths: \"\",\n wrap: true,\n },\n\n supportsResponsive: true,\n tags: [\"columns\", \"layout\", \"flex\", \"flexbox\", \"container\"],\n};\n","/**\n * Card Component\n * Container with border, shadow, and padding\n *\n * ✅ Framework-agnostic card component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Padding mapping\nconst paddingMap: Record<string, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n};\n\n// Box shadow mapping\nconst boxShadowMap: Record<string, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport function CardComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n variant,\n padding,\n borderRadius,\n backgroundColor,\n borderWidth,\n borderColor,\n boxShadow,\n hoverEffect,\n customClasses,\n } = style;\n\n // Get style classes\n const paddingClass = paddingMap[String(padding)] || paddingMap.md;\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius)] || borderRadiusMap.md;\n const boxShadowClass = boxShadowMap[String(boxShadow)] || boxShadowMap.md;\n const variantStr = String(variant);\n const hoverEffectStr = String(hoverEffect);\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n backgroundColor: String(backgroundColor),\n };\n\n // Apply variant-specific border styles\n if (variantStr === \"outlined\") {\n inlineStyle.borderWidth = String(borderWidth);\n inlineStyle.borderColor = String(borderColor);\n inlineStyle.borderStyle = \"solid\";\n }\n\n // Build card classes\n const cardClasses = cn(\n \"component-card transition-all duration-200\",\n paddingClass,\n borderRadiusClass,\n {\n [boxShadowClass]: variantStr === \"elevated\",\n \"hover:-translate-y-1 hover:shadow-lg\": hoverEffectStr === \"lift\",\n \"hover:shadow-xl\": hoverEffectStr === \"shadow\",\n \"bg-gray-50\": variantStr === \"filled\",\n },\n customClasses,\n className\n );\n\n return (\n <div\n className={cardClasses}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {children}\n </div>\n );\n}\n","/**\n * Card Component Schema\n * Container with border, shadow, and padding\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const cardComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CARD,\n name: \"Card\",\n description: \"Card container with styling\",\n icon: \"square\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"elevated\",\n options: [\n { label: \"Elevated\", value: \"elevated\" },\n { label: \"Outlined\", value: \"outlined\" },\n { label: \"Filled\", value: \"filled\" },\n ],\n },\n {\n id: \"padding\",\n type: FIELD_TYPES.SELECT,\n label: \"Padding\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#ffffff\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"1px\",\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"#e5e7eb\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.SELECT,\n label: \"Box Shadow\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"hoverEffect\",\n type: FIELD_TYPES.SELECT,\n label: \"Hover Effect\",\n default: \"none\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Lift\", value: \"lift\" },\n { label: \"Shadow\", value: \"shadow\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n variant: \"elevated\",\n padding: \"md\",\n borderRadius: \"xl\",\n boxShadow: \"sm\",\n hoverEffect: \"none\",\n // Color/border defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"card\", \"container\", \"box\", \"panel\"],\n};\n","/**\n * Gallery Component\n * Image gallery with grid layout\n *\n * ✅ Framework-agnostic gallery component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Columns mapping\nconst columnsMap: Record<string, string> = {\n \"2\": \"grid-cols-2\",\n \"3\": \"grid-cols-3\",\n \"4\": \"grid-cols-4\",\n \"5\": \"grid-cols-5\",\n};\n\n// Gap mapping\nconst gapMap: Record<string, string> = {\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n};\n\n// Aspect ratio mapping\nconst aspectRatioMap: Record<string, string> = {\n square: \"aspect-square\",\n landscape: \"aspect-[4/3]\",\n portrait: \"aspect-[3/4]\",\n wide: \"aspect-video\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\n// Object fit mapping\nconst objectFitMap: Record<string, string> = {\n cover: \"object-cover\",\n contain: \"object-contain\",\n fill: \"object-fill\",\n};\n\nexport function GalleryComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { images } = content;\n const {\n columns,\n gap,\n aspectRatio,\n borderRadius,\n objectFit,\n showCaptions,\n hoverEffect,\n customClasses,\n } = style;\n\n // Parse images array\n const imagesArray = Array.isArray(images) ? images : [];\n\n // Get style values\n const columnsClass =\n columnsMap[String(columns) as keyof typeof columnsMap] || columnsMap[\"3\"];\n const gapClass = gapMap[String(gap) as keyof typeof gapMap] || gapMap.md;\n const aspectRatioClass =\n aspectRatioMap[String(aspectRatio) as keyof typeof aspectRatioMap] ||\n aspectRatioMap.square;\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius) as keyof typeof borderRadiusMap] ||\n borderRadiusMap.md;\n const objectFitClass =\n objectFitMap[String(objectFit) as keyof typeof objectFitMap] ||\n objectFitMap.cover;\n const showCaptionsValue = !!showCaptions;\n const hoverEffectValue = String(hoverEffect);\n\n // Build container classes\n const containerClasses = cn(\n \"component-gallery grid\",\n columnsClass,\n gapClass,\n customClasses,\n className\n );\n\n if (imagesArray.length === 0) {\n return (\n <div\n className={cn(containerClasses, \"bg-gray-100 p-8 text-center\")}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <p className=\"text-gray-500\">No images in gallery</p>\n </div>\n );\n }\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {imagesArray.map((image, index: number) => {\n const imageObj = image as Record<string, unknown>;\n const src = String(imageObj.src || \"\");\n const alt = String(imageObj.alt || `Gallery image ${index + 1}`);\n const caption = String(imageObj.caption || \"\");\n\n return (\n <div\n key={index}\n className={cn(\"gallery-item overflow-hidden\", borderRadiusClass)}\n >\n <div\n className={cn(\n \"relative w-full transition-transform duration-300\",\n aspectRatioClass,\n {\n \"hover:scale-110\": hoverEffectValue === \"zoom\",\n \"hover:opacity-80\": hoverEffectValue === \"opacity\",\n }\n )}\n >\n <img\n src={src}\n alt={alt}\n className={cn(\"h-full w-full\", objectFitClass)}\n />\n </div>\n {showCaptionsValue && caption ? (\n <p className=\"mt-2 text-sm text-gray-600\">{caption}</p>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * Gallery Component Schema\n * Image gallery with grid layout\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const galleryComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.GALLERY,\n name: \"Gallery\",\n description: \"Image gallery grid\",\n icon: \"grid\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"images\",\n type: FIELD_TYPES.ARRAY,\n label: \"Images\",\n default: [],\n required: true,\n info: \"Array of {src, alt, caption} objects\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.SELECT,\n label: \"Columns\",\n default: \"3\",\n options: [\n { label: \"2 Columns\", value: \"2\" },\n { label: \"3 Columns\", value: \"3\" },\n { label: \"4 Columns\", value: \"4\" },\n { label: \"5 Columns\", value: \"5\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.SELECT,\n label: \"Gap\",\n default: \"md\",\n options: [\n { label: \"Small (0.5rem)\", value: \"sm\" },\n { label: \"Medium (1rem)\", value: \"md\" },\n { label: \"Large (1.5rem)\", value: \"lg\" },\n ],\n },\n {\n id: \"aspectRatio\",\n type: FIELD_TYPES.SELECT,\n label: \"Image Aspect Ratio\",\n default: \"square\",\n options: [\n { label: \"Square (1:1)\", value: \"square\" },\n { label: \"Landscape (4:3)\", value: \"landscape\" },\n { label: \"Portrait (3:4)\", value: \"portrait\" },\n { label: \"Wide (16:9)\", value: \"wide\" },\n ],\n },\n {\n id: \"objectFit\",\n type: FIELD_TYPES.SELECT,\n label: \"Image Fit\",\n default: \"cover\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n { label: \"Fill\", value: \"fill\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"showCaptions\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Captions\",\n default: false,\n },\n {\n id: \"hoverEffect\",\n type: FIELD_TYPES.SELECT,\n label: \"Hover Effect\",\n default: \"zoom\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Zoom\", value: \"zoom\" },\n { label: \"Opacity\", value: \"opacity\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n images: [],\n },\n\n styleDefaults: {\n columns: \"3\",\n gap: \"md\",\n aspectRatio: \"square\",\n objectFit: \"cover\",\n borderRadius: \"md\",\n showCaptions: false,\n hoverEffect: \"zoom\",\n },\n\n supportsResponsive: true,\n tags: [\"gallery\", \"images\", \"photos\", \"grid\"],\n};\n","/**\n * Input Component\n * Text input field for forms\n *\n * ✅ Framework-agnostic input component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap: Record<string, string> = {\n sm: \"h-8 px-3 py-1.5 text-sm\",\n md: \"h-9 px-4 py-2 text-base md:text-sm\",\n lg: \"h-10 px-5 py-3 text-base\",\n};\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n auto: \"w-auto\",\n \"50\": \"w-1/2\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport function InputComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { type, name, label, placeholder, defaultValue, required, disabled } =\n content;\n const {\n size,\n width,\n borderRadius,\n borderColor,\n focusBorderColor,\n backgroundColor,\n textColor,\n customClasses,\n } = style;\n\n // Get size classes (only when not using defaults)\n const sizeClass = String(size) !== \"default\" ? sizeMap[String(size)] : \"\";\n const widthClass = widthMap[String(width)] || widthMap.full;\n const borderRadiusClass =\n String(borderRadius) !== \"md\" ? borderRadiusMap[String(borderRadius)] : \"\";\n\n // Build container classes\n const containerClasses = cn(\"component-input\", widthClass, className);\n\n // Build input classes (matching shadcn/ui input styles)\n const inputClasses = cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n sizeClass,\n borderRadiusClass,\n customClasses\n );\n\n // Build inline styles for custom colors\n const inputStyle: React.CSSProperties = {\n ...(borderColor && { borderColor: String(borderColor) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(textColor && { color: String(textColor) }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `input-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {label ? (\n <label\n htmlFor={fieldId}\n className=\"mb-1.5 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Input Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </label>\n ) : null}\n <input\n type={String(type)}\n id={fieldId}\n name={String(name)}\n placeholder={placeholder ? String(placeholder) : undefined}\n defaultValue={defaultValue ? String(defaultValue) : undefined}\n required={!!required}\n disabled={!!disabled}\n className={inputClasses}\n style={inputStyle}\n onFocus={(e) => {\n if (focusBorderColor) {\n e.currentTarget.style.borderColor = String(focusBorderColor);\n }\n }}\n onBlur={(e) => {\n if (borderColor) {\n e.currentTarget.style.borderColor = String(borderColor);\n }\n }}\n />\n </div>\n );\n}\n","/**\n * Input Component Schema\n * Text input field for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const inputComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.INPUT,\n name: \"Input\",\n description: \"Text input field\",\n icon: \"type\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"type\",\n type: FIELD_TYPES.SELECT,\n label: \"Input Type\",\n default: \"text\",\n required: true,\n options: [\n { label: \"Text\", value: \"text\" },\n { label: \"Email\", value: \"email\" },\n { label: \"Password\", value: \"password\" },\n { label: \"Number\", value: \"number\" },\n { label: \"Tel\", value: \"tel\" },\n { label: \"URL\", value: \"url\" },\n { label: \"Search\", value: \"search\" },\n { label: \"Date\", value: \"date\" },\n { label: \"Time\", value: \"time\" },\n ],\n },\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"placeholder\",\n type: FIELD_TYPES.TEXT,\n label: \"Placeholder\",\n default: \"\",\n },\n {\n id: \"defaultValue\",\n type: FIELD_TYPES.TEXT,\n label: \"Default Value\",\n default: \"\",\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (h-9)\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Half (50%)\", value: \"50\" },\n { label: \"Full (100%)\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium (Default)\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Full\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"focusBorderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Focus Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n info: \"Leave empty to use theme default (transparent)\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n type: \"text\",\n name: \"\",\n label: \"\",\n placeholder: \"\",\n defaultValue: \"\",\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n size: \"default\",\n width: \"full\",\n borderRadius: \"md\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"input\", \"form\", \"field\", \"text\"],\n};\n","/**\n * Textarea Component\n * Multi-line text input for forms\n *\n * ✅ Framework-agnostic textarea using Radix UI Label\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n auto: \"w-auto\",\n \"50\": \"w-1/2\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function TextareaComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { name, label, placeholder, defaultValue, rows, required, disabled } =\n content;\n const {\n width,\n borderRadius,\n borderColor,\n focusBorderColor,\n backgroundColor,\n textColor,\n customClasses,\n } = style;\n\n // Get width and border radius classes (only when not using defaults)\n const widthClass = widthMap[String(width)] || widthMap.full;\n const borderRadiusClass =\n String(borderRadius) !== \"md\" ? borderRadiusMap[String(borderRadius)] : \"\";\n\n // Build container classes\n const containerClasses = cn(\"component-textarea\", widthClass, className);\n\n // Build textarea classes (shadcn textarea styles)\n const textareaClasses = cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n \"resize-y\",\n borderRadiusClass,\n customClasses\n );\n\n // Build inline styles for custom colors\n const textareaStyle: React.CSSProperties = {\n ...(borderColor && { borderColor: String(borderColor) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(textColor && { color: String(textColor) }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `textarea-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {label ? (\n <LabelPrimitive.Root\n htmlFor={fieldId}\n className=\"mb-1.5 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Textarea Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </LabelPrimitive.Root>\n ) : null}\n <textarea\n id={fieldId}\n name={String(name)}\n placeholder={placeholder ? String(placeholder) : undefined}\n defaultValue={defaultValue ? String(defaultValue) : undefined}\n rows={Number(rows)}\n required={!!required}\n disabled={!!disabled}\n className={textareaClasses}\n style={textareaStyle}\n onFocus={(e) => {\n if (focusBorderColor) {\n e.currentTarget.style.borderColor = String(focusBorderColor);\n }\n }}\n onBlur={(e) => {\n if (borderColor) {\n e.currentTarget.style.borderColor = String(borderColor);\n }\n }}\n />\n </div>\n );\n}\n","/**\n * Textarea Component Schema\n * Multi-line text input for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const textareaComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TEXTAREA,\n name: \"Textarea\",\n description: \"Multi-line text input\",\n icon: \"align-left\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"placeholder\",\n type: FIELD_TYPES.TEXT,\n label: \"Placeholder\",\n default: \"\",\n },\n {\n id: \"defaultValue\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Default Value\",\n default: \"\",\n },\n {\n id: \"rows\",\n type: FIELD_TYPES.NUMBER,\n label: \"Rows\",\n default: 4,\n min: 2,\n max: 20,\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Half (50%)\", value: \"50\" },\n { label: \"Full (100%)\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium (Default)\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"focusBorderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Focus Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n info: \"Leave empty to use theme default (transparent)\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n name: \"\",\n label: \"\",\n placeholder: \"\",\n defaultValue: \"\",\n rows: 4,\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n width: \"full\",\n borderRadius: \"md\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"textarea\", \"form\", \"field\", \"text\", \"multiline\"],\n};\n","/**\n * Checkbox Component\n * Checkbox input for forms\n *\n * ✅ Framework-agnostic checkbox using Radix UI primitives\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Check } from \"lucide-react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping for checkbox and label\nconst sizeMap: Record<string, { checkbox: string; label: string }> = {\n sm: { checkbox: \"size-4\", label: \"text-sm\" },\n md: { checkbox: \"size-5\", label: \"text-base\" },\n lg: { checkbox: \"size-6\", label: \"text-lg\" },\n};\n\nexport function CheckboxComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { name, label, value, defaultChecked, required, disabled } = content;\n const {\n size,\n checkColor,\n labelPosition,\n borderColor,\n textColor,\n customClasses,\n } = style;\n\n // Get size classes (only when not using default)\n const sizeClasses =\n String(size) !== \"default\" && sizeMap[String(size)]\n ? sizeMap[String(size)]\n : { checkbox: \"\", label: \"\" };\n\n // Build container classes\n const containerClasses = cn(\n \"component-checkbox inline-flex items-center gap-2\",\n {\n \"flex-row-reverse\": labelPosition === \"left\",\n },\n customClasses,\n className\n );\n\n // Build checkbox style for custom colors\n const checkboxStyle: React.CSSProperties & Record<string, string> = {\n ...(checkColor && {\n \"--checkbox-check-color\": String(checkColor),\n }),\n ...(borderColor && {\n borderColor: String(borderColor),\n }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `checkbox-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <CheckboxPrimitive.Root\n id={fieldId}\n name={String(name)}\n value={String(value)}\n defaultChecked={!!defaultChecked}\n required={!!required}\n disabled={!!disabled}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n sizeClasses.checkbox\n )}\n style={checkboxStyle}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label ? (\n <LabelPrimitive.Root\n htmlFor={fieldId}\n className={cn(\n \"cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n sizeClasses.label\n )}\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Checkbox Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </LabelPrimitive.Root>\n ) : null}\n </div>\n );\n}\n","/**\n * Checkbox Component Schema\n * Checkbox input for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const checkboxComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CHECKBOX,\n name: \"Checkbox\",\n description: \"Checkbox input field\",\n icon: \"check-square\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"Accept terms and conditions\",\n },\n {\n id: \"value\",\n type: FIELD_TYPES.TEXT,\n label: \"Value\",\n default: \"on\",\n },\n {\n id: \"defaultChecked\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Default Checked\",\n default: false,\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (shadcn)\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"checkColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Check Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"labelPosition\",\n type: FIELD_TYPES.SELECT,\n label: \"Label Position\",\n default: \"right\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"#d1d5db\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"#000000\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n name: \"\",\n label: \"Accept terms and conditions\",\n value: \"on\",\n defaultChecked: false,\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n size: \"default\",\n labelPosition: \"right\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"checkbox\", \"form\", \"field\", \"input\", \"toggle\"],\n};\n","/**\n * Select Component\n * Dropdown select input for forms\n *\n * ✅ Framework-agnostic select using Radix UI primitives\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { ChevronDown, Check } from \"lucide-react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap: Record<string, string> = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-4 py-2 text-base\",\n lg: \"px-5 py-3 text-lg\",\n};\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n auto: \"w-auto\",\n \"50\": \"w-1/2\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport function SelectComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const {\n name,\n label,\n options,\n placeholder,\n defaultValue,\n required,\n disabled,\n } = content;\n const {\n size,\n width,\n borderRadius,\n borderColor,\n focusBorderColor,\n backgroundColor,\n textColor,\n customClasses,\n } = style;\n\n // Parse options array\n const optionsArray = Array.isArray(options) ? options : [];\n\n // Map size to shadcn size (sm | default) - only pass when not default\n const selectSize =\n String(size) === \"sm\"\n ? \"sm\"\n : String(size) === \"default\"\n ? \"default\"\n : \"default\";\n\n // Get width class\n const widthClass = widthMap[String(width)] || widthMap.full;\n\n // Get border radius class (only when not using default)\n const borderRadiusClass =\n String(borderRadius) !== \"md\" ? borderRadiusMap[String(borderRadius)] : \"\";\n\n // Build container classes\n const containerClasses = cn(\"component-select\", widthClass, className);\n\n // Build trigger classes\n const triggerClasses = cn(borderRadiusClass, customClasses);\n\n // Build inline styles for custom colors\n const triggerStyle: React.CSSProperties = {\n ...(borderColor && { borderColor: String(borderColor) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(textColor && { color: String(textColor) }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `select-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {label ? (\n <LabelPrimitive.Root\n htmlFor={fieldId}\n className=\"mb-1.5 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Select Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </LabelPrimitive.Root>\n ) : null}\n <SelectPrimitive.Root\n name={String(name)}\n defaultValue={defaultValue ? String(defaultValue) : undefined}\n required={!!required}\n disabled={!!disabled}\n >\n <SelectPrimitive.Trigger\n id={fieldId}\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n triggerClasses\n )}\n style={triggerStyle}\n onFocus={(e) => {\n if (focusBorderColor) {\n e.currentTarget.style.borderColor = String(focusBorderColor);\n }\n }}\n onBlur={(e) => {\n if (borderColor) {\n e.currentTarget.style.borderColor = String(borderColor);\n }\n }}\n >\n <SelectPrimitive.Value\n placeholder={placeholder ? String(placeholder) : undefined}\n />\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\"\n position=\"popper\"\n >\n <SelectPrimitive.Viewport className=\"p-1\">\n {optionsArray.map((option, index: number) => {\n const optionObj = option as Record<string, unknown>;\n const value = String(optionObj.value || \"\");\n const optionLabel = String(optionObj.label || \"\");\n return (\n <SelectPrimitive.Item\n key={index}\n value={value}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <SelectPrimitive.ItemText>\n {optionLabel}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n })}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n );\n}\n","/**\n * Select Component Schema\n * Dropdown select input for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const selectComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.SELECT,\n name: \"Select\",\n description: \"Dropdown select input\",\n icon: \"chevron-down\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"options\",\n type: FIELD_TYPES.ARRAY,\n label: \"Options\",\n default: [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n { label: \"Option 3\", value: \"option3\" },\n ],\n required: true,\n info: \"Array of {label, value} objects\",\n },\n {\n id: \"placeholder\",\n type: FIELD_TYPES.TEXT,\n label: \"Placeholder\",\n default: \"Select an option...\",\n },\n {\n id: \"defaultValue\",\n type: FIELD_TYPES.TEXT,\n label: \"Default Value\",\n default: \"\",\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (h-9)\", value: \"default\" },\n { label: \"Small (h-8)\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Half (50%)\", value: \"50\" },\n { label: \"Full (100%)\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Full\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"#d1d5db\",\n },\n {\n id: \"focusBorderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Focus Border Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#ffffff\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"#000000\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n name: \"\",\n label: \"\",\n options: [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n { label: \"Option 3\", value: \"option3\" },\n ],\n placeholder: \"Select an option...\",\n defaultValue: \"\",\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n size: \"default\",\n width: \"full\",\n borderRadius: \"md\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"select\", \"dropdown\", \"form\", \"field\", \"input\"],\n};\n","/**\n * Rating Component\n * Star rating display\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { Star } from \"lucide-react\";\n\n// Size mapping\nconst sizeMap: Record<string, number> = {\n sm: 16,\n md: 24,\n lg: 32,\n xl: 40,\n};\n\n// Spacing mapping\nconst spacingMap: Record<string, string> = {\n tight: \"gap-0.5\",\n normal: \"gap-1\",\n loose: \"gap-2\",\n};\n\nexport function RatingComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { rating, maxRating, showValue, reviewCount } = content;\n const {\n size,\n starColor,\n emptyStarColor,\n textColor,\n spacing,\n variant,\n allowHalfStars,\n customClasses,\n } = style;\n\n // Get values\n const ratingValue = Number(rating);\n const maxValue = Number(maxRating);\n const reviewCountValue = Number(reviewCount);\n const sizeValue = sizeMap[String(size)];\n const starColorValue = starColor ? String(starColor) : \"#fbbf24\";\n const emptyStarColorValue = emptyStarColor\n ? String(emptyStarColor)\n : \"#d1d5db\";\n const textColorValue = textColor ? String(textColor) : undefined;\n const spacingClass = spacingMap[String(spacing)];\n const variantValue = String(variant);\n const allowHalfStarsValue = !!allowHalfStars;\n\n // Build container classes\n const containerClasses = cn(\n \"component-rating inline-flex items-center gap-2\",\n customClasses,\n className\n );\n\n // Render stars\n const renderStars = () => {\n const stars = [];\n for (let i = 1; i <= maxValue; i++) {\n const diff = ratingValue - (i - 1);\n let fillPercentage = 0;\n\n if (diff >= 1) {\n fillPercentage = 100;\n } else if (diff > 0 && diff < 1 && allowHalfStarsValue) {\n fillPercentage = Math.round(diff * 100);\n }\n\n stars.push(\n <div\n key={i}\n className=\"relative inline-block\"\n style={{ width: sizeValue, height: sizeValue }}\n >\n {/* Empty star */}\n <Star\n size={sizeValue}\n strokeWidth={variantValue === \"outline\" ? 2 : 0}\n fill={variantValue === \"outline\" ? \"none\" : emptyStarColorValue}\n stroke={variantValue === \"outline\" ? emptyStarColorValue : \"none\"}\n className=\"absolute top-0 left-0\"\n />\n {/* Filled star */}\n {fillPercentage > 0 ? (\n <div\n className=\"absolute top-0 left-0 overflow-hidden\"\n style={{ width: `${fillPercentage}%`, height: sizeValue }}\n >\n <Star\n size={sizeValue}\n strokeWidth={variantValue === \"outline\" ? 2 : 0}\n fill={variantValue === \"outline\" ? \"none\" : starColorValue}\n stroke={variantValue === \"outline\" ? starColorValue : \"none\"}\n />\n </div>\n ) : null}\n </div>\n );\n }\n return stars;\n };\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {/* Stars */}\n <div className={cn(\"flex items-center\", spacingClass)}>\n {renderStars()}\n </div>\n\n {/* Rating value */}\n {showValue ? (\n <span\n className=\"font-medium\"\n style={{\n ...(textColorValue && { color: textColorValue }),\n fontSize: Math.max(12, sizeValue * 0.6),\n }}\n >\n {ratingValue.toFixed(1)}\n </span>\n ) : null}\n\n {/* Review count */}\n {reviewCountValue > 0 ? (\n <span\n className=\"text-sm opacity-70\"\n style={{ ...(textColorValue && { color: textColorValue }) }}\n >\n ({reviewCountValue})\n </span>\n ) : null}\n </div>\n );\n}\n","/**\n * Rating Component Schema\n * Star rating display\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const ratingComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.RATING,\n name: \"Rating\",\n description: \"Star rating display\",\n icon: \"star\",\n category: COMPONENT_CATEGORIES.INTERACTIVE,\n\n contentSettings: [\n {\n id: \"rating\",\n type: FIELD_TYPES.NUMBER,\n label: \"Rating Value\",\n default: 4.5,\n min: 0,\n max: 5,\n step: 0.5,\n required: true,\n },\n {\n id: \"maxRating\",\n type: FIELD_TYPES.NUMBER,\n label: \"Max Rating\",\n default: 5,\n min: 1,\n max: 10,\n required: true,\n },\n {\n id: \"showValue\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Rating Value\",\n default: true,\n },\n {\n id: \"reviewCount\",\n type: FIELD_TYPES.NUMBER,\n label: \"Review Count\",\n default: 0,\n info: \"Number of reviews (0 to hide)\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Star Size\",\n default: \"md\",\n options: [\n { label: \"Small (16px)\", value: \"sm\" },\n { label: \"Medium (24px)\", value: \"md\" },\n { label: \"Large (32px)\", value: \"lg\" },\n { label: \"XL (40px)\", value: \"xl\" },\n ],\n },\n {\n id: \"starColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Star Color\",\n default: \"\",\n info: \"Leave empty to use theme default (yellow)\",\n },\n {\n id: \"emptyStarColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Empty Star Color\",\n default: \"\",\n info: \"Leave empty to use theme default (gray)\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"spacing\",\n type: FIELD_TYPES.SELECT,\n label: \"Star Spacing\",\n default: \"normal\",\n options: [\n { label: \"Tight\", value: \"tight\" },\n { label: \"Normal\", value: \"normal\" },\n { label: \"Loose\", value: \"loose\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"filled\",\n options: [\n { label: \"Filled\", value: \"filled\" },\n { label: \"Outline\", value: \"outline\" },\n ],\n },\n {\n id: \"allowHalfStars\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Allow Half Stars\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n rating: 4.5,\n maxRating: 5,\n showValue: true,\n reviewCount: 0,\n },\n\n styleDefaults: {\n size: \"md\",\n spacing: \"normal\",\n variant: \"filled\",\n allowHalfStars: true,\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"rating\", \"stars\", \"review\", \"score\"],\n};\n","/**\n * Progress Component\n * Progress bar indicator\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n * ✅ Extends shadcn Progress component (Radix-based)\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Height mapping\nconst heightMap: Record<string, string> = {\n xs: \"h-1\",\n sm: \"h-2\",\n md: \"h-3\",\n lg: \"h-4\",\n};\n\n// Color mapping\nconst colorMap: Record<string, string> = {\n primary: \"bg-blue-500\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n full: \"rounded-full\",\n};\n\nexport function ProgressComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { value, label, showPercentage } = content;\n const {\n height,\n color,\n borderRadius,\n customColor,\n backgroundColor,\n animated,\n customClasses,\n } = style;\n\n // Get progress value (0-100)\n const progressValue = Math.min(100, Math.max(0, Number(value)));\n\n // Get height class (only when not using default)\n const heightClass =\n String(height) !== \"default\" ? heightMap[String(height)] : \"\";\n\n // Get border radius class (only when not using default)\n const borderRadiusClass =\n String(borderRadius) !== \"full\"\n ? borderRadiusMap[String(borderRadius)]\n : \"\";\n\n // Build container classes\n const containerClasses = cn(\n \"component-progress w-full\",\n customClasses,\n className\n );\n\n // Build progress bar classes (override shadcn defaults)\n const progressClasses = cn(heightClass, borderRadiusClass, {\n \"animate-pulse\": animated,\n });\n\n // Get color class for indicator\n const indicatorColorClass =\n String(color) !== \"custom\"\n ? colorMap[String(color)] || colorMap.primary\n : \"\";\n\n // Build inline styles for custom colors\n const progressStyle: React.CSSProperties = {\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n };\n\n const indicatorStyle: React.CSSProperties = {\n ...(String(color) === \"custom\" && {\n backgroundColor: String(customColor),\n }),\n };\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {/* Label and percentage */}\n {label || showPercentage ? (\n <div className=\"flex justify-between items-center mb-2 text-sm\">\n {label ? (\n <span\n className=\"font-medium\"\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Progress Label\"\n >\n {String(label)}\n </span>\n ) : null}\n {showPercentage ? (\n <span className=\"text-muted-foreground\">{progressValue}%</span>\n ) : null}\n </div>\n ) : null}\n\n {/* Progress bar - using Radix UI Progress */}\n <ProgressPrimitive.Root\n value={progressValue}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n progressClasses\n )}\n style={progressStyle}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n \"h-full w-full flex-1 transition-all\",\n indicatorColorClass\n )}\n style={{\n transform: `translateX(-${100 - progressValue}%)`,\n ...indicatorStyle,\n }}\n />\n </ProgressPrimitive.Root>\n </div>\n );\n}\n","/**\n * Progress Component Schema\n * Progress bar indicator\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const progressComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.PROGRESS,\n name: \"Progress\",\n description: \"Progress bar indicator\",\n icon: \"trending-up\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"value\",\n type: FIELD_TYPES.NUMBER,\n label: \"Progress Value\",\n default: 50,\n min: 0,\n max: 100,\n required: true,\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"showPercentage\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Percentage\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"height\",\n type: FIELD_TYPES.SELECT,\n label: \"Height\",\n default: \"default\",\n options: [\n { label: \"Default (h-2)\", value: \"default\" },\n { label: \"Thin (4px)\", value: \"xs\" },\n { label: \"Small (8px)\", value: \"sm\" },\n { label: \"Medium (12px)\", value: \"md\" },\n { label: \"Large (16px)\", value: \"lg\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.SELECT,\n label: \"Color\",\n default: \"primary\",\n options: [\n { label: \"Primary (Blue)\", value: \"primary\" },\n { label: \"Success (Green)\", value: \"success\" },\n { label: \"Warning (Yellow)\", value: \"warning\" },\n { label: \"Danger (Red)\", value: \"danger\" },\n { label: \"Custom\", value: \"custom\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"full\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Full\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"customColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Custom Progress Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#e5e7eb\",\n },\n {\n id: \"animated\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Animated\",\n default: false,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n value: 50,\n label: \"\",\n showPercentage: true,\n },\n\n styleDefaults: {\n height: \"default\",\n color: \"primary\",\n borderRadius: \"full\",\n animated: false,\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"progress\", \"bar\", \"indicator\", \"loading\"],\n};\n","/**\n * Alert Component\n * Alert/notification message box\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n * ✅ Extends shadcn Alert component\n */\n\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { Info, CheckCircle, AlertTriangle, XCircle, X } from \"lucide-react\";\n\n// Type icon mapping\nconst iconMap = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: XCircle,\n};\n\n// Type color mapping for filled variant\nconst filledColorMap: Record<string, string> = {\n info: \"bg-blue-100 text-blue-800 border-blue-200\",\n success: \"bg-green-100 text-green-800 border-green-200\",\n warning: \"bg-yellow-100 text-yellow-800 border-yellow-200\",\n error: \"bg-red-100 text-red-800 border-red-200\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function AlertComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { title, message, type, dismissible } = content;\n const { borderRadius, showIcon, customClasses } = style;\n\n const [dismissed, setDismissed] = useState(false);\n\n if (dismissed) return <></>;\n\n // Get type for icon and colors\n const typeStr = String(type);\n const IconComponent = iconMap[typeStr as keyof typeof iconMap] || Info;\n\n // Get color class based on type (for custom styling beyond shadcn variants)\n const colorClass = filledColorMap[typeStr] || filledColorMap.info;\n\n // Get border radius class\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius)] || borderRadiusMap.md;\n\n // Build alert classes\n const alertClasses = cn(\n \"component-alert relative\",\n borderRadiusClass,\n // Apply type-specific colors if not using shadcn destructive\n typeStr !== \"error\" && colorClass,\n customClasses,\n className\n );\n\n return (\n <div\n className=\"relative\"\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <div\n className={cn(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n typeStr === \"error\" &&\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n alertClasses\n )}\n >\n {showIcon && <IconComponent className=\"h-4 w-4\" />}\n {title ? (\n <h5 className=\"mb-1 font-medium leading-none tracking-tight\">\n <span\n data-field-id=\"title\"\n data-element-type=\"text\"\n data-field-label=\"Alert Title\"\n >\n {String(title)}\n </span>\n </h5>\n ) : null}\n <div className=\"text-sm [&_p]:leading-relaxed\">\n <span\n data-field-id=\"message\"\n data-element-type=\"text\"\n data-field-label=\"Alert Message\"\n >\n {String(message)}\n </span>\n </div>\n {dismissible ? (\n <button\n onClick={() => setDismissed(true)}\n className=\"absolute top-3 right-3 opacity-70 hover:opacity-100 transition-opacity\"\n aria-label=\"Dismiss alert\"\n >\n <X size={18} />\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n","/**\n * Alert Component Schema\n * Alert/notification message box\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const alertComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.ALERT,\n name: \"Alert\",\n description: \"Alert message box\",\n icon: \"alert-circle\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"title\",\n type: FIELD_TYPES.TEXT,\n label: \"Title\",\n default: \"\",\n },\n {\n id: \"message\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Message\",\n default: \"This is an alert message\",\n required: true,\n },\n {\n id: \"type\",\n type: FIELD_TYPES.SELECT,\n label: \"Type\",\n default: \"info\",\n options: [\n { label: \"Info\", value: \"info\" },\n { label: \"Success\", value: \"success\" },\n { label: \"Warning\", value: \"warning\" },\n { label: \"Error\", value: \"error\" },\n ],\n },\n {\n id: \"dismissible\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Dismissible\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"filled\",\n options: [\n { label: \"Filled\", value: \"filled\" },\n { label: \"Outlined\", value: \"outlined\" },\n { label: \"Subtle\", value: \"subtle\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"showIcon\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Icon\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n title: \"\",\n message: \"This is an alert message\",\n type: \"info\",\n dismissible: false,\n },\n\n styleDefaults: {\n variant: \"filled\",\n borderRadius: \"md\",\n showIcon: true,\n },\n\n supportsResponsive: false,\n tags: [\"alert\", \"notification\", \"message\", \"banner\"],\n};\n","/**\n * Accordion Component\n * Collapsible content panels\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { ChevronDown } from \"lucide-react\";\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function AccordionComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { items, allowMultiple } = content;\n const { variant, borderRadius, iconPosition, customClasses } = style;\n\n // Parse items array\n const itemsArray = Array.isArray(items) ? items : [];\n\n // Type for accordion items\n type AccordionItem = {\n title?: string;\n content?: string;\n defaultOpen?: boolean;\n };\n\n // Initialize open items based on defaultOpen\n const [openItems, setOpenItems] = useState<Set<number>>(\n new Set(\n itemsArray\n .map((item, index: number) => {\n const itemObj = item as AccordionItem;\n return itemObj.defaultOpen ? index : -1;\n })\n .filter((i: number) => i >= 0)\n )\n );\n\n const toggleItem = (index: number) => {\n setOpenItems((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(index)) {\n newSet.delete(index);\n } else {\n if (!allowMultiple) {\n newSet.clear();\n }\n newSet.add(index);\n }\n return newSet;\n });\n };\n\n // Get values\n const variantValue = String(variant);\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius) as keyof typeof borderRadiusMap] ||\n borderRadiusMap.md;\n const iconPositionValue = String(iconPosition);\n\n // Build container classes\n const containerClasses = cn(\n \"component-accordion\",\n {\n border: variantValue === \"bordered\",\n \"space-y-2\": variantValue === \"separated\",\n },\n borderRadiusClass,\n customClasses,\n className\n );\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {itemsArray.map((item, index: number) => {\n const itemObj = item as AccordionItem;\n const isOpen = openItems.has(index);\n const title = String(itemObj.title || \"\");\n const content = String(itemObj.content || \"\");\n\n return (\n <div\n key={index}\n className={cn({\n \"border-b last:border-b-0\": variantValue === \"bordered\",\n \"border rounded-md\": variantValue === \"separated\",\n \"border-b last:border-b-0 border-gray-200\":\n variantValue === \"minimal\",\n })}\n >\n {/* Header */}\n <button\n onClick={() => toggleItem(index)}\n className={cn(\n \"w-full px-4 py-3 flex items-center justify-between text-left font-medium hover:bg-gray-50 transition-colors\",\n {\n \"flex-row-reverse\": iconPositionValue === \"left\",\n }\n )}\n >\n <span>{title}</span>\n <ChevronDown\n size={20}\n className={cn(\"transition-transform duration-200\", {\n \"rotate-180\": isOpen,\n })}\n />\n </button>\n\n {/* Content */}\n {isOpen ? (\n <div className=\"px-4 py-3 text-gray-700 border-t\">{content}</div>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * Accordion Component Schema\n * Collapsible content panels\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const accordionComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.ACCORDION,\n name: \"Accordion\",\n description: \"Collapsible panels\",\n icon: \"list\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"items\",\n type: FIELD_TYPES.ARRAY,\n label: \"Items\",\n default: [\n { title: \"Item 1\", content: \"Content for item 1\", defaultOpen: false },\n { title: \"Item 2\", content: \"Content for item 2\", defaultOpen: false },\n ],\n required: true,\n info: \"Array of {title, content, defaultOpen} objects\",\n },\n {\n id: \"allowMultiple\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Allow Multiple Open\",\n default: false,\n info: \"Allow multiple panels open simultaneously\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"bordered\",\n options: [\n { label: \"Bordered\", value: \"bordered\" },\n { label: \"Separated\", value: \"separated\" },\n { label: \"Minimal\", value: \"minimal\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"iconPosition\",\n type: FIELD_TYPES.SELECT,\n label: \"Icon Position\",\n default: \"right\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n items: [\n { title: \"Item 1\", content: \"Content for item 1\", defaultOpen: false },\n { title: \"Item 2\", content: \"Content for item 2\", defaultOpen: false },\n ],\n allowMultiple: false,\n },\n\n styleDefaults: {\n variant: \"bordered\",\n borderRadius: \"md\",\n iconPosition: \"right\",\n },\n\n supportsResponsive: false,\n tags: [\"accordion\", \"collapse\", \"panel\", \"faq\"],\n};\n","/**\n * Tabs Component\n * Tabbed interface for content\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\nexport function TabsComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { tabs, defaultTab } = content;\n const { variant, alignment, activeColor, customClasses } = style;\n\n // Parse tabs array\n const tabsArray = Array.isArray(tabs) ? tabs : [];\n\n // Type for tab items\n type TabItem = { label?: string; content?: string };\n\n const [activeTab, setActiveTab] = useState(Number(defaultTab) || 0);\n\n // Get values\n const variantValue = String(variant);\n const alignmentValue = String(alignment);\n const activeColorValue = activeColor ? String(activeColor) : \"#3b82f6\";\n\n // Build tab list classes\n const tabListClasses = cn(\"flex border-b\", {\n \"justify-start\": alignmentValue === \"left\",\n \"justify-center\": alignmentValue === \"center\",\n \"justify-end\": alignmentValue === \"right\",\n });\n\n // Build tab button classes\n const getTabButtonClasses = (isActive: boolean) =>\n cn(\"px-4 py-2 font-medium transition-colors\", {\n // Underline variant\n \"border-b-2\": variantValue === \"underline\",\n \"border-transparent\": variantValue === \"underline\" && !isActive,\n \"hover:border-gray-300\": variantValue === \"underline\" && !isActive,\n\n // Pills variant\n \"rounded-full\": variantValue === \"pills\",\n \"bg-gray-100\": variantValue === \"pills\" && !isActive,\n \"hover:bg-gray-200\": variantValue === \"pills\" && !isActive,\n\n // Enclosed variant\n \"border border-b-0 rounded-t-md\": variantValue === \"enclosed\",\n \"border-gray-300 bg-gray-50\": variantValue === \"enclosed\" && !isActive,\n \"border-gray-300 bg-white\": variantValue === \"enclosed\" && isActive,\n });\n\n // Build container classes\n const containerClasses = cn(\"component-tabs\", customClasses, className);\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {/* Tab list */}\n <div className={tabListClasses}>\n {tabsArray.map((tab, index: number) => {\n const tabObj = tab as TabItem;\n const isActive = activeTab === index;\n const label = String(tabObj.label || `Tab ${index + 1}`);\n\n return (\n <button\n key={index}\n onClick={() => setActiveTab(index)}\n className={getTabButtonClasses(isActive)}\n style={{\n ...(isActive &&\n variantValue === \"underline\" && {\n borderBottomColor: activeColorValue,\n color: activeColorValue,\n }),\n ...(isActive &&\n variantValue === \"pills\" && {\n backgroundColor: activeColorValue,\n color: \"#ffffff\",\n }),\n }}\n >\n {label}\n </button>\n );\n })}\n </div>\n\n {/* Tab content */}\n <div className=\"p-4\">\n {tabsArray[activeTab]\n ? String((tabsArray[activeTab] as TabItem).content || \"\")\n : \"\"}\n </div>\n </div>\n );\n}\n","/**\n * Tabs Component Schema\n * Tabbed interface for content\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const tabsComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TABS,\n name: \"Tabs\",\n description: \"Tabbed interface\",\n icon: \"tabs\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"tabs\",\n type: FIELD_TYPES.ARRAY,\n label: \"Tabs\",\n default: [\n { label: \"Tab 1\", content: \"Content for tab 1\" },\n { label: \"Tab 2\", content: \"Content for tab 2\" },\n ],\n required: true,\n info: \"Array of {label, content} objects\",\n },\n {\n id: \"defaultTab\",\n type: FIELD_TYPES.NUMBER,\n label: \"Default Tab Index\",\n default: 0,\n min: 0,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"underline\",\n options: [\n { label: \"Underline\", value: \"underline\" },\n { label: \"Pills\", value: \"pills\" },\n { label: \"Enclosed\", value: \"enclosed\" },\n ],\n },\n {\n id: \"alignment\",\n type: FIELD_TYPES.SELECT,\n label: \"Alignment\",\n default: \"left\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"activeColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Active Tab Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n tabs: [\n { label: \"Tab 1\", content: \"Content for tab 1\" },\n { label: \"Tab 2\", content: \"Content for tab 2\" },\n ],\n defaultTab: 0,\n },\n\n styleDefaults: {\n variant: \"underline\",\n alignment: \"left\",\n // activeColor default removed - use theme default\n },\n\n supportsResponsive: false,\n tags: [\"tabs\", \"tabbed\", \"interface\", \"navigation\"],\n};\n","/**\n * Timer Component\n * Countdown timer\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React, { useState, useEffect } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap = {\n sm: { number: \"text-2xl\", label: \"text-xs\" },\n md: { number: \"text-4xl\", label: \"text-sm\" },\n lg: { number: \"text-6xl\", label: \"text-base\" },\n};\n\nexport function TimerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { targetDate, showDays, showHours, showMinutes, showSeconds } = content;\n const { size, layout, numberColor, labelColor, customClasses } = style;\n\n const [timeLeft, setTimeLeft] = useState({\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n });\n\n useEffect(() => {\n if (!targetDate) return;\n\n const calculateTimeLeft = () => {\n const difference =\n new Date(String(targetDate)).getTime() - new Date().getTime();\n\n if (difference > 0) {\n setTimeLeft({\n days: Math.floor(difference / (1000 * 60 * 60 * 24)),\n hours: Math.floor((difference / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((difference / 1000 / 60) % 60),\n seconds: Math.floor((difference / 1000) % 60),\n });\n } else {\n setTimeLeft({ days: 0, hours: 0, minutes: 0, seconds: 0 });\n }\n };\n\n calculateTimeLeft();\n const interval = setInterval(calculateTimeLeft, 1000);\n\n return () => clearInterval(interval);\n }, [targetDate]);\n\n // Get values\n const sizeClasses =\n sizeMap[String(size) as keyof typeof sizeMap] || sizeMap.md;\n const layoutValue = String(layout);\n const numberColorValue = numberColor ? String(numberColor) : undefined;\n const labelColorValue = labelColor ? String(labelColor) : undefined;\n\n // Build container classes\n const containerClasses = cn(\n \"component-timer flex gap-4\",\n {\n \"flex-row\": layoutValue === \"horizontal\",\n \"flex-col\": layoutValue === \"vertical\",\n },\n customClasses,\n className\n );\n\n // Render time unit\n const renderUnit = (value: number, label: string) => (\n <div className=\"flex flex-col items-center\">\n <div\n className={cn(\"font-bold\", sizeClasses.number)}\n style={{ ...(numberColorValue && { color: numberColorValue }) }}\n >\n {String(value).padStart(2, \"0\")}\n </div>\n <div\n className={cn(\"font-medium\", sizeClasses.label)}\n style={{ ...(labelColorValue && { color: labelColorValue }) }}\n >\n {label}\n </div>\n </div>\n );\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {showDays ? renderUnit(timeLeft.days, \"Days\") : null}\n {showHours ? renderUnit(timeLeft.hours, \"Hours\") : null}\n {showMinutes ? renderUnit(timeLeft.minutes, \"Minutes\") : null}\n {showSeconds ? renderUnit(timeLeft.seconds, \"Seconds\") : null}\n </div>\n );\n}\n","/**\n * Timer Component Schema\n * Countdown timer\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const timerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TIMER,\n name: \"Timer\",\n description: \"Countdown timer\",\n icon: \"clock\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"targetDate\",\n type: FIELD_TYPES.TEXT,\n label: \"Target Date\",\n default: \"\",\n info: \"ISO date string (e.g., 2024-12-31T23:59:59)\",\n },\n {\n id: \"showDays\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Days\",\n default: true,\n },\n {\n id: \"showHours\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Hours\",\n default: true,\n },\n {\n id: \"showMinutes\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Minutes\",\n default: true,\n },\n {\n id: \"showSeconds\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Seconds\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"md\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"layout\",\n type: FIELD_TYPES.SELECT,\n label: \"Layout\",\n default: \"horizontal\",\n options: [\n { label: \"Horizontal\", value: \"horizontal\" },\n { label: \"Vertical\", value: \"vertical\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"numberColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Number Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"labelColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Label Color\",\n default: \"\",\n info: \"Leave empty to use theme default (muted)\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n targetDate: \"\",\n showDays: true,\n showHours: true,\n showMinutes: true,\n showSeconds: true,\n },\n\n styleDefaults: {\n size: \"md\",\n layout: \"horizontal\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"timer\", \"countdown\", \"clock\", \"time\"],\n};\n","/**\n * Table Component\n * Data table display\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap = {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n};\n\nconst paddingMap = {\n sm: \"px-2 py-1\",\n md: \"px-4 py-2\",\n lg: \"px-6 py-3\",\n};\n\nexport function TableComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { columns, rows, caption } = content;\n const { variant, size, headerBackground, hoverHighlight, customClasses } =\n style;\n\n // Parse arrays\n const columnsArray = Array.isArray(columns) ? columns : [];\n const rowsArray = Array.isArray(rows) ? rows : [];\n\n // Type for table columns and rows\n type TableColumn = { label?: string; key: string };\n type TableRow = Record<string, unknown>;\n\n // Get values\n const variantValue = String(variant);\n const sizeValue = String(size);\n const textClass = sizeMap[sizeValue as keyof typeof sizeMap] || sizeMap.md;\n const paddingClass =\n paddingMap[sizeValue as keyof typeof paddingMap] || paddingMap.md;\n const hoverHighlightValue = hoverHighlight !== false;\n const headerBgValue = headerBackground ? String(headerBackground) : \"#f3f4f6\";\n\n // Build classes\n const tableClasses = cn(\n \"component-table w-full border-collapse\",\n textClass,\n {\n \"border border-gray-300\": variantValue === \"bordered\",\n },\n customClasses,\n className\n );\n\n return (\n <div\n className=\"overflow-x-auto\"\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <table className={tableClasses}>\n {caption ? (\n <caption className=\"text-sm text-gray-600 mb-2\">\n {String(caption)}\n </caption>\n ) : null}\n\n {/* Header */}\n <thead>\n <tr\n style={{\n backgroundColor: headerBgValue,\n }}\n >\n {columnsArray.map((column, index: number) => {\n const columnObj = column as TableColumn;\n return (\n <th\n key={index}\n className={cn(\"font-semibold text-left\", paddingClass, {\n \"border border-gray-300\": variantValue === \"bordered\",\n })}\n >\n {String(columnObj.label || columnObj.key || \"\")}\n </th>\n );\n })}\n </tr>\n </thead>\n\n {/* Body */}\n <tbody>\n {rowsArray.map((row, rowIndex: number) => {\n const rowObj = row as TableRow;\n return (\n <tr\n key={rowIndex}\n className={cn({\n \"border-b border-gray-200\":\n variantValue === \"bordered\" || variantValue === \"simple\",\n \"bg-gray-50\":\n variantValue === \"striped\" && rowIndex % 2 === 1,\n \"hover:bg-gray-100 transition-colors\": hoverHighlightValue,\n })}\n >\n {columnsArray.map((column, colIndex: number) => {\n const columnObj = column as TableColumn;\n return (\n <td\n key={colIndex}\n className={cn(paddingClass, {\n \"border border-gray-300\": variantValue === \"bordered\",\n })}\n >\n {String(rowObj[columnObj.key] || \"\")}\n </td>\n );\n })}\n </tr>\n );\n })}\n\n {rowsArray.length === 0 ? (\n <tr>\n <td\n colSpan={columnsArray.length}\n className={cn(\"text-center text-gray-500\", paddingClass)}\n >\n No data\n </td>\n </tr>\n ) : null}\n </tbody>\n </table>\n </div>\n );\n}\n","/**\n * Table Component Schema\n * Data table display\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const tableComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TABLE,\n name: \"Table\",\n description: \"Data table\",\n icon: \"table\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.ARRAY,\n label: \"Columns\",\n default: [\n { key: \"name\", label: \"Name\" },\n { key: \"email\", label: \"Email\" },\n ],\n required: true,\n info: \"Array of {key, label} objects\",\n },\n {\n id: \"rows\",\n type: FIELD_TYPES.ARRAY,\n label: \"Rows\",\n default: [],\n required: true,\n info: \"Array of data objects\",\n },\n {\n id: \"caption\",\n type: FIELD_TYPES.TEXT,\n label: \"Table Caption\",\n default: \"\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"bordered\",\n options: [\n { label: \"Bordered\", value: \"bordered\" },\n { label: \"Striped\", value: \"striped\" },\n { label: \"Simple\", value: \"simple\" },\n ],\n },\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"md\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"headerBackground\",\n type: FIELD_TYPES.COLOR,\n label: \"Header Background\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"hoverHighlight\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Row Hover Highlight\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n columns: [\n { key: \"name\", label: \"Name\" },\n { key: \"email\", label: \"Email\" },\n ],\n rows: [],\n caption: \"\",\n },\n\n styleDefaults: {\n variant: \"bordered\",\n size: \"md\",\n hoverHighlight: true,\n // headerBackground default removed - use theme default\n },\n\n supportsResponsive: true,\n tags: [\"table\", \"data\", \"grid\", \"spreadsheet\"],\n};\n","/**\n * Map Component\n * Embedded Google Maps\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\n\n// Height mapping\nconst heightMap: Record<string, string> = {\n sm: \"300px\",\n md: \"450px\",\n lg: \"600px\",\n xl: \"800px\",\n};\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n \"50\": \"w-1/2\",\n \"75\": \"w-3/4\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function MapComponent({\n component,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const {\n address = \"\",\n embedUrl = \"\",\n zoom = 15,\n mapType = \"roadmap\",\n } = component.content;\n\n const style = component.style;\n\n // Get dimensions\n const height = style.customHeight\n ? String(style.customHeight)\n : heightMap[String(style.height || \"md\")] || \"450px\";\n const widthClass = widthMap[String(style.width || \"full\")] || \"w-full\";\n const borderRadiusClass =\n borderRadiusMap[String(style.borderRadius || \"md\")] || \"rounded-md\";\n\n // Build Google Maps embed URL\n const getMapUrl = (): string => {\n // If custom embed URL provided, use it\n if (embedUrl) {\n return String(embedUrl);\n }\n\n // Otherwise, build URL from address\n if (!address) {\n return \"\";\n }\n\n const encodedAddress = encodeURIComponent(String(address));\n return `https://www.google.com/maps/embed/v1/place?key=YOUR_API_KEY&q=${encodedAddress}&zoom=${zoom}&maptype=${mapType}`;\n };\n\n const mapUrl = getMapUrl();\n\n // Build classes\n const classes = cn(\n \"component-map overflow-hidden\",\n widthClass,\n borderRadiusClass,\n style.customClasses,\n className\n );\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n height: String(height),\n boxShadow: style.boxShadow ? String(style.boxShadow) : undefined,\n };\n\n if (!mapUrl) {\n return (\n <div\n className={cn(classes, \"bg-gray-100 flex items-center justify-center\")}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <p className=\"text-gray-500\">No map address provided</p>\n </div>\n );\n }\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <iframe\n src={mapUrl}\n width=\"100%\"\n height=\"100%\"\n style={{ border: 0 }}\n allowFullScreen\n loading=\"lazy\"\n referrerPolicy=\"no-referrer-when-downgrade\"\n title={`Map of ${address}`}\n />\n </div>\n );\n}\n","/**\n * Map Component Schema\n * Google Maps embed\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const mapComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.MAP,\n name: \"Map\",\n description: \"Embedded Google Maps\",\n icon: \"map-pin\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"address\",\n type: FIELD_TYPES.TEXT,\n label: \"Address or Location\",\n default: \"\",\n required: true,\n info: \"Address or coordinates to display\",\n },\n {\n id: \"embedUrl\",\n type: FIELD_TYPES.TEXT,\n label: \"Google Maps Embed URL\",\n default: \"\",\n info: \"Optional: Full iframe embed URL from Google Maps\",\n },\n {\n id: \"zoom\",\n type: FIELD_TYPES.NUMBER,\n label: \"Zoom Level\",\n default: 15,\n min: 1,\n max: 20,\n },\n {\n id: \"mapType\",\n type: FIELD_TYPES.SELECT,\n label: \"Map Type\",\n default: \"roadmap\",\n options: [\n { label: \"Roadmap\", value: \"roadmap\" },\n { label: \"Satellite\", value: \"satellite\" },\n { label: \"Hybrid\", value: \"hybrid\" },\n { label: \"Terrain\", value: \"terrain\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"height\",\n type: FIELD_TYPES.SELECT,\n label: \"Height\",\n default: \"md\",\n options: [\n { label: \"Small (300px)\", value: \"sm\" },\n { label: \"Medium (450px)\", value: \"md\" },\n { label: \"Large (600px)\", value: \"lg\" },\n { label: \"XL (800px)\", value: \"xl\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"50%\", value: \"50\" },\n { label: \"75%\", value: \"75\" },\n { label: \"Full Width\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"customHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Height\",\n default: \"\",\n info: \"Override preset height (e.g., 500px, 50vh)\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n address: \"\",\n embedUrl: \"\",\n zoom: 15,\n mapType: \"roadmap\",\n },\n\n styleDefaults: {\n height: \"md\",\n width: \"full\",\n borderRadius: \"md\",\n customHeight: \"\",\n boxShadow: \"\",\n },\n\n supportsResponsive: true,\n tags: [\"map\", \"google-maps\", \"location\", \"embed\"],\n};\n","/**\n * Code Component\n * Code block display\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n base: \"text-base\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function CodeComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { code, language, showLineNumbers } = content;\n const { theme, fontSize, borderRadius, maxHeight, customClasses } = style;\n\n // Get values\n const themeValue = String(theme);\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const borderRadiusClass = borderRadiusMap[String(borderRadius)];\n\n // Split code into lines if showing line numbers\n const codeLines = String(code).split(\"\\n\");\n\n // Build classes\n const classes = cn(\n \"component-code overflow-x-auto\",\n borderRadiusClass,\n {\n \"bg-gray-900 text-gray-100\": themeValue === \"dark\",\n \"bg-gray-50 text-gray-900 border border-gray-200\": themeValue === \"light\",\n },\n customClasses,\n className\n );\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(maxHeight && {\n maxHeight: String(maxHeight),\n overflowY: \"auto\" as const,\n }),\n };\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <pre className={cn(\"p-4\", fontSizeClass)}>\n <code className={`language-${String(language)}`}>\n {showLineNumbers ? (\n <table className=\"w-full\">\n <tbody>\n {codeLines.map((line, index) => (\n <tr key={index}>\n <td className=\"pr-4 text-right select-none opacity-50 w-10\">\n {index + 1}\n </td>\n <td>{line || \"\\n\"}</td>\n </tr>\n ))}\n </tbody>\n </table>\n ) : (\n String(code)\n )}\n </code>\n </pre>\n </div>\n );\n}\n","/**\n * Code Component Schema\n * Code block with syntax highlighting\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const codeComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CODE,\n name: \"Code\",\n description: \"Code block display\",\n icon: \"code\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"code\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Code\",\n default: 'console.log(\"Hello World\");',\n required: true,\n },\n {\n id: \"language\",\n type: FIELD_TYPES.SELECT,\n label: \"Language\",\n default: \"javascript\",\n options: [\n { label: \"JavaScript\", value: \"javascript\" },\n { label: \"TypeScript\", value: \"typescript\" },\n { label: \"Python\", value: \"python\" },\n { label: \"HTML\", value: \"html\" },\n { label: \"CSS\", value: \"css\" },\n { label: \"JSON\", value: \"json\" },\n { label: \"Bash\", value: \"bash\" },\n ],\n },\n {\n id: \"showLineNumbers\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Line Numbers\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"theme\",\n type: FIELD_TYPES.SELECT,\n label: \"Theme\",\n default: \"dark\",\n options: [\n { label: \"Dark\", value: \"dark\" },\n { label: \"Light\", value: \"light\" },\n ],\n },\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"sm\",\n options: [\n { label: \"XS\", value: \"xs\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"maxHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Height\",\n default: \"\",\n info: \"e.g., 400px - enables scrolling\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n code: 'console.log(\"Hello World\");',\n language: \"javascript\",\n showLineNumbers: false,\n },\n\n styleDefaults: {\n theme: \"dark\",\n fontSize: \"sm\",\n borderRadius: \"md\",\n maxHeight: \"\",\n },\n\n supportsResponsive: false,\n tags: [\"code\", \"syntax\", \"highlight\", \"pre\", \"programming\"],\n};\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"../../utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"../../utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","/* eslint-disable no-restricted-properties */\n\n/* eslint-disable no-restricted-globals */\nexport const canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n/* eslint-enable no-restricted-globals */\n\nexport function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n) {\n return function handleEvent(event: E) {\n originalEventHandler?.(event);\n\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\nexport function getOwnerWindow(element: Node | null | undefined) {\n if (!canUseDOM) {\n throw new Error('Cannot access window outside of the DOM');\n }\n // eslint-disable-next-line no-restricted-globals\n return element?.ownerDocument?.defaultView ?? window;\n}\n\nexport function getOwnerDocument(element: Node | null | undefined) {\n if (!canUseDOM) {\n throw new Error('Cannot access document outside of the DOM');\n }\n // eslint-disable-next-line no-restricted-globals\n return element?.ownerDocument ?? document;\n}\n\n/**\n * Lifted from https://github.com/ariakit/ariakit/blob/main/packages/ariakit-core/src/utils/dom.ts#L37\n * MIT License, Copyright (c) AriaKit.\n */\nexport function getActiveElement(\n node: Node | null | undefined,\n activeDescendant = false\n): HTMLElement | null {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n // `activeElement` might be an empty object if we're interacting with elements\n // inside of an iframe.\n return null;\n }\n\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n\n if (activeDescendant) {\n const id = activeElement.getAttribute('aria-activedescendant');\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n\n return activeElement as HTMLElement | null;\n}\n\nexport function isFrame(element: Element): element is HTMLIFrameElement {\n return element.tagName === 'IFRAME';\n}\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n) {\n const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n const Provider: React.FC<ContextValueType & { children: React.ReactNode }> = (props) => {\n const { children, ...context } = props;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n scopeName: string;\n (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n let defaultContexts: any[] = [];\n\n /* -----------------------------------------------------------------------------------------------\n * createContext\n * ---------------------------------------------------------------------------------------------*/\n\n function createContext<ContextValueType extends object | null>(\n rootComponentName: string,\n defaultContext?: ContextValueType\n ) {\n const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n\n const Provider: React.FC<\n ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n > = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n // Only re-memoize when prop values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n return <Context.Provider value={value}>{children}</Context.Provider>;\n };\n\n Provider.displayName = rootComponentName + 'Provider';\n\n function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== undefined) return defaultContext;\n // if a defaultContext wasn't specified, it's a required context.\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n\n return [Provider, useContext] as const;\n }\n\n /* -----------------------------------------------------------------------------------------------\n * createScope\n * ---------------------------------------------------------------------------------------------*/\n\n const createScope: CreateScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope: Scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n\n createScope.scopeName = scopeName;\n return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n\n const createScope: CreateScope = () => {\n const scopeHooks = scopes.map((createScope) => ({\n useScope: createScope(),\n scopeName: createScope.scopeName,\n }));\n\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n // We are calling a hook inside a callback which React warns against to avoid inconsistent\n // renders, however, scoping doesn't have render side effects so we ignore the rule.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes, ...currentScope };\n }, {});\n\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = globalThis?.document ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We spaces with `.trim().toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)[' useId '.trim().toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n const [id, setId] = React.useState<string | undefined>(useReactId());\n // React versions older than 18 will have client-side ids only.\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// Prevent bundlers from trying to optimize the import\nconst useInsertionEffect: typeof useLayoutEffect =\n (React as any)[' useInsertionEffect '.trim().toString()] || useLayoutEffect;\n\ntype ChangeHandler<T> = (state: T) => void;\ntype SetStateFn<T> = React.Dispatch<React.SetStateAction<T>>;\n\ninterface UseControllableStateParams<T> {\n prop?: T | undefined;\n defaultProp: T;\n onChange?: ChangeHandler<T>;\n caller?: string;\n}\n\nexport function useControllableState<T>({\n prop,\n defaultProp,\n onChange = () => {},\n caller,\n}: UseControllableStateParams<T>): [T, SetStateFn<T>] {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange,\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n\n // OK to disable conditionally calling hooks here because they will always run\n // consistently in the same environment. Bundlers should be able to remove the\n // code block entirely in production.\n /* eslint-disable react-hooks/rules-of-hooks */\n if (process.env.NODE_ENV !== 'production') {\n const isControlledRef = React.useRef(prop !== undefined);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? 'controlled' : 'uncontrolled';\n const to = isControlled ? 'controlled' : 'uncontrolled';\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n /* eslint-enable react-hooks/rules-of-hooks */\n\n const setValue = React.useCallback<SetStateFn<T>>(\n (nextValue) => {\n if (isControlled) {\n const value = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value !== prop) {\n onChangeRef.current?.(value);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n\n return [value, setValue];\n}\n\nfunction useUncontrolledState<T>({\n defaultProp,\n onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>): [\n Value: T,\n setValue: React.Dispatch<React.SetStateAction<T>>,\n OnChangeRef: React.RefObject<ChangeHandler<T> | undefined>,\n] {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n\n return [value, setValue, onChangeRef];\n}\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createSlot } from '@radix-ui/react-slot';\n\nconst NODES = [\n 'a',\n 'button',\n 'div',\n 'form',\n 'h2',\n 'h3',\n 'img',\n 'input',\n 'label',\n 'li',\n 'nav',\n 'ol',\n 'p',\n 'select',\n 'span',\n 'svg',\n 'ul',\n] as const;\n\ntype Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n const { asChild, ...primitiveProps } = props;\n const Comp: any = asChild ? Slot : node;\n\n if (typeof window !== 'undefined') {\n (window as any)[Symbol.for('radix-ui')] = true;\n }\n\n return <Comp {...primitiveProps} ref={forwardedRef} />;\n });\n\n Node.displayName = `Primitive.${node}`;\n\n return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n * - discrete\n * - continuous\n * - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not necessary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n Primitive,\n //\n Root,\n //\n dispatchDiscreteCustomEvent,\n};\nexport type { PrimitivePropsWithRef };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n const callbackRef = React.useRef(callback);\n\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n\n // https://github.com/facebook/react/issues/19240\n return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\n/**\n * Listens for when the escape key is down\n */\nfunction useEscapeKeydown(\n onEscapeKeyDownProp?: (event: KeyboardEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener('keydown', handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener('keydown', handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\n\nexport { useEscapeKeydown };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { Primitive, dispatchDiscreteCustomEvent } from '@radix-ui/react-primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useEscapeKeydown } from '@radix-ui/react-use-escape-keydown';\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayer\n * -----------------------------------------------------------------------------------------------*/\n\nconst DISMISSABLE_LAYER_NAME = 'DismissableLayer';\nconst CONTEXT_UPDATE = 'dismissableLayer.update';\nconst POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';\nconst FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';\n\nlet originalBodyPointerEvents: string;\n\nconst DismissableLayerContext = React.createContext({\n layers: new Set<DismissableLayerElement>(),\n layersWithOutsidePointerEventsDisabled: new Set<DismissableLayerElement>(),\n branches: new Set<DismissableLayerBranchElement>(),\n});\n\ntype DismissableLayerElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface DismissableLayerProps extends PrimitiveDivProps {\n /**\n * When `true`, hover/focus/click interactions will be disabled on elements outside\n * the `DismissableLayer`. Users will need to click twice on outside elements to\n * interact with them: once to close the `DismissableLayer`, and again to trigger the element.\n */\n disableOutsidePointerEvents?: boolean;\n /**\n * Event handler called when the escape key is down.\n * Can be prevented.\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void;\n /**\n * Event handler called when the focus moves outside of the `DismissableLayer`.\n * Can be prevented.\n */\n onFocusOutside?: (event: FocusOutsideEvent) => void;\n /**\n * Event handler called when an interaction happens outside the `DismissableLayer`.\n * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.\n * Can be prevented.\n */\n onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void;\n /**\n * Handler called when the `DismissableLayer` should be dismissed\n */\n onDismiss?: () => void;\n}\n\nconst DismissableLayer = React.forwardRef<DismissableLayerElement, DismissableLayerProps>(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState<DismissableLayerElement | null>(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node) => setNode(node));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1); // prettier-ignore\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled!); // prettier-ignore\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target as HTMLElement;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n const focusOutside = useFocusOutside((event) => {\n const target = event.target as HTMLElement;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = 'none';\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (\n disableOutsidePointerEvents &&\n context.layersWithOutsidePointerEventsDisabled.size === 1\n ) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n\n /**\n * We purposefully prevent combining this effect with the `disableOutsidePointerEvents` effect\n * because a change to `disableOutsidePointerEvents` would remove this layer from the stack\n * and add it to the end again so the layering order wouldn't be _creation order_.\n * We only want them to be removed from context stacks when unmounted.\n */\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n\n return (\n <Primitive.div\n {...layerProps}\n ref={composedRefs}\n style={{\n pointerEvents: isBodyPointerEventsDisabled\n ? isPointerEventsEnabled\n ? 'auto'\n : 'none'\n : undefined,\n ...props.style,\n }}\n onFocusCapture={composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture)}\n onBlurCapture={composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture)}\n onPointerDownCapture={composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )}\n />\n );\n }\n);\n\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DismissableLayerBranch\n * -----------------------------------------------------------------------------------------------*/\n\nconst BRANCH_NAME = 'DismissableLayerBranch';\n\ntype DismissableLayerBranchElement = React.ComponentRef<typeof Primitive.div>;\ninterface DismissableLayerBranchProps extends PrimitiveDivProps {}\n\nconst DismissableLayerBranch = React.forwardRef<\n DismissableLayerBranchElement,\n DismissableLayerBranchProps\n>((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef<DismissableLayerBranchElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n\n return <Primitive.div {...props} ref={composedRefs} />;\n});\n\nDismissableLayerBranch.displayName = BRANCH_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideEvent = CustomEvent<{ originalEvent: PointerEvent }>;\ntype FocusOutsideEvent = CustomEvent<{ originalEvent: FocusEvent }>;\n\n/**\n * Listens for `pointerdown` outside a react subtree. We use `pointerdown` rather than `pointerup`\n * to mimic layer dismissing behaviour present in OS.\n * Returns props to pass to the node we want to check for outside events.\n */\nfunction usePointerDownOutside(\n onPointerDownOutside?: (event: PointerDownOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside) as EventListener;\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {});\n\n React.useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n\n function handleAndDispatchPointerDownOutsideEvent() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n }\n\n /**\n * On touch devices, we need to wait for a click event because browsers implement\n * a ~350ms delay between the time the user stops touching the display and when the\n * browser executres events. We need to ensure we don't reactivate pointer-events within\n * this timeframe otherwise the browser may execute events that should have been prevented.\n *\n * Additionally, this also lets us deal automatically with cancellations when a click event\n * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.\n *\n * This is why we also continuously remove the previous listener, because we cannot be\n * certain that it was raised, and therefore cleaned-up.\n */\n if (event.pointerType === 'touch') {\n ownerDocument.removeEventListener('click', handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;\n ownerDocument.addEventListener('click', handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent();\n }\n } else {\n // We need to remove the event listener in case the outside click has been canceled.\n // See: https://github.com/radix-ui/primitives/issues/2171\n ownerDocument.removeEventListener('click', handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n /**\n * if this hook executes in a component that mounts via a `pointerdown` event, the event\n * would bubble up to the document and trigger a `pointerDownOutside` event. We avoid\n * this by delaying the event listener registration on the document.\n * This is not React specific, but rather how the DOM works, ie:\n * ```\n * button.addEventListener('pointerdown', () => {\n * console.log('I will log');\n * document.addEventListener('pointerdown', () => {\n * console.log('I will also log');\n * })\n * });\n */\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener('pointerdown', handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener('pointerdown', handlePointerDown);\n ownerDocument.removeEventListener('click', handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => (isPointerInsideReactTreeRef.current = true),\n };\n}\n\n/**\n * Listens for when focus happens outside a react subtree.\n * Returns props to pass to the root (node) of the subtree we want to check.\n */\nfunction useFocusOutside(\n onFocusOutside?: (event: FocusOutsideEvent) => void,\n ownerDocument: Document = globalThis?.document\n) {\n const handleFocusOutside = useCallbackRef(onFocusOutside) as EventListener;\n const isFocusInsideReactTreeRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleFocus = (event: FocusEvent) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false,\n });\n }\n };\n ownerDocument.addEventListener('focusin', handleFocus);\n return () => ownerDocument.removeEventListener('focusin', handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n\n return {\n onFocusCapture: () => (isFocusInsideReactTreeRef.current = true),\n onBlurCapture: () => (isFocusInsideReactTreeRef.current = false),\n };\n}\n\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\n\nfunction handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(\n name: string,\n handler: ((event: E) => void) | undefined,\n detail: { originalEvent: OriginalEvent } & (E extends CustomEvent<infer D> ? D : never),\n { discrete }: { discrete: boolean }\n) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler as EventListener, { once: true });\n\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\n\nconst Root = DismissableLayer;\nconst Branch = DismissableLayerBranch;\n\nexport {\n DismissableLayer,\n DismissableLayerBranch,\n //\n Root,\n Branch,\n};\nexport type { DismissableLayerProps };\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\nconst AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';\nconst AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\ntype FocusableTarget = HTMLElement | { focus(): void };\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope\n * -----------------------------------------------------------------------------------------------*/\n\nconst FOCUS_SCOPE_NAME = 'FocusScope';\n\ntype FocusScopeElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface FocusScopeProps extends PrimitiveDivProps {\n /**\n * When `true`, tabbing from last item will focus first tabbable\n * and shift+tab from first item will focus last tababble.\n * @defaultValue false\n */\n loop?: boolean;\n\n /**\n * When `true`, focus cannot escape the focus scope via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapped?: boolean;\n\n /**\n * Event handler called when auto-focusing on mount.\n * Can be prevented.\n */\n onMountAutoFocus?: (event: Event) => void;\n\n /**\n * Event handler called when auto-focusing on unmount.\n * Can be prevented.\n */\n onUnmountAutoFocus?: (event: Event) => void;\n}\n\nconst FocusScope = React.forwardRef<FocusScopeElement, FocusScopeProps>((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState<HTMLElement | null>(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef<HTMLElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n },\n }).current;\n\n // Takes care of trapping focus if focus is moved outside programmatically for example\n React.useEffect(() => {\n if (trapped) {\n function handleFocusIn(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const target = event.target as HTMLElement | null;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n // A `focusout` event with a `null` `relatedTarget` will happen in at least two cases:\n //\n // 1. When the user switches app/tabs/windows/the browser itself loses focus.\n // 2. In Google Chrome, when the focused element is removed from the DOM.\n //\n // We let the browser do its thing here because:\n //\n // 1. The browser already keeps a memory of what's focused for when the page gets refocused.\n // 2. In Google Chrome, if we try to focus the deleted focused element (as per below), it\n // throws the CPU to 100%, so we avoid doing anything for this reason here too.\n if (relatedTarget === null) return;\n\n // If the focus has moved to an actual legitimate element (`relatedTarget !== null`)\n // that is outside the container, we move focus to the last valid focused element inside.\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }\n\n // When the focused element gets removed from the DOM, browsers move focus\n // back to the document.body. In this case, we move focus to the container\n // to keep focus trapped correctly.\n function handleMutations(mutations: MutationRecord[]) {\n const focusedElement = document.activeElement as HTMLElement | null;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n }\n\n document.addEventListener('focusin', handleFocusIn);\n document.addEventListener('focusout', handleFocusOut);\n const mutationObserver = new MutationObserver(handleMutations);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n\n return () => {\n document.removeEventListener('focusin', handleFocusIn);\n document.removeEventListener('focusout', handleFocusOut);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement as HTMLElement | null;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n\n // We hit a react bug (fixed in v17) with focusing in unmount.\n // We need to delay the focus a little to get around it for now.\n // See: https://github.com/facebook/react/issues/17894\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n // we need to remove the listener after we `dispatchEvent`\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n\n // Takes care of looping focus (when tabbing whilst at the edges)\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n\n const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement as HTMLElement | null;\n\n if (isTabKey && focusedElement) {\n const container = event.currentTarget as HTMLElement;\n const [first, last] = getTabbableEdges(container);\n const hasTabbableElementsInside = first && last;\n\n // we can only wrap focus if we have tabbable edges\n if (!hasTabbableElementsInside) {\n if (focusedElement === container) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n\n return (\n <Primitive.div tabIndex={-1} {...scopeProps} ref={composedRefs} onKeyDown={handleKeyDown} />\n );\n});\n\nFocusScope.displayName = FOCUS_SCOPE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Attempts focusing the first element in a list of candidates.\n * Stops when focus has actually moved.\n */\nfunction focusFirst(candidates: HTMLElement[], { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\n\n/**\n * Returns the first and last tabbable elements inside a container.\n */\nfunction getTabbableEdges(container: HTMLElement) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last] as const;\n}\n\n/**\n * Returns a list of potential tabbable candidates.\n *\n * NOTE: This is only a close approximation. For example it doesn't take into account cases like when\n * elements are not visible. This cannot be worked out easily by just reading a property, but rather\n * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker\n * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1\n */\nfunction getTabbableCandidates(container: HTMLElement) {\n const nodes: HTMLElement[] = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node: any) => {\n const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n // `.tabIndex` is not the same as the `tabindex` attribute. It works on the\n // runtime's understanding of tabbability, so this automatically accounts\n // for any kind of element that could be tabbed to.\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement);\n // we do not take into account the order of nodes with positive `tabIndex` as it\n // hinders accessibility to have tab order different from visual order.\n return nodes;\n}\n\n/**\n * Returns the first visible element in a list.\n * NOTE: Only checks visibility up to the `container`.\n */\nfunction findVisible(elements: HTMLElement[], container: HTMLElement) {\n for (const element of elements) {\n // we stop checking if it's hidden at the `container` level (excluding)\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\n\nfunction isHidden(node: HTMLElement, { upTo }: { upTo?: HTMLElement }) {\n if (getComputedStyle(node).visibility === 'hidden') return true;\n while (node) {\n // we stop at `upTo` (excluding it)\n if (upTo !== undefined && node === upTo) return false;\n if (getComputedStyle(node).display === 'none') return true;\n node = node.parentElement as HTMLElement;\n }\n return false;\n}\n\nfunction isSelectableInput(element: any): element is FocusableTarget & { select: () => void } {\n return element instanceof HTMLInputElement && 'select' in element;\n}\n\nfunction focus(element?: FocusableTarget | null, { select = false } = {}) {\n // only focus if that element is focusable\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users\n element.focus({ preventScroll: true });\n // only select if its not the same element, it supports selection and we need to select\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FocusScope stack\n * -----------------------------------------------------------------------------------------------*/\n\ntype FocusScopeAPI = { paused: boolean; pause(): void; resume(): void };\nconst focusScopesStack = createFocusScopesStack();\n\nfunction createFocusScopesStack() {\n /** A stack of focus scopes, with the active one at the top */\n let stack: FocusScopeAPI[] = [];\n\n return {\n add(focusScope: FocusScopeAPI) {\n // pause the currently active focus scope (at the top of the stack)\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n // remove in case it already exists (because we'll re-add it at the top of the stack)\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n\n remove(focusScope: FocusScopeAPI) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n },\n };\n}\n\nfunction arrayRemove<T>(array: T[], item: T) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\n\nfunction removeLinks(items: HTMLElement[]) {\n return items.filter((item) => item.tagName !== 'A');\n}\n\nconst Root = FocusScope;\n\nexport {\n FocusScope,\n //\n Root,\n};\nexport type { FocusScopeProps };\n","import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n/* -------------------------------------------------------------------------------------------------\n * Portal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'Portal';\n\ntype PortalElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface PortalProps extends PrimitiveDivProps {\n /**\n * An optional container where the portaled content should be appended.\n */\n container?: Element | DocumentFragment | null;\n}\n\nconst Portal = React.forwardRef<PortalElement, PortalProps>((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || (mounted && globalThis?.document?.body);\n return container\n ? ReactDOM.createPortal(<Primitive.div {...portalProps} ref={forwardedRef} />, container)\n : null;\n});\n\nPortal.displayName = PORTAL_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Portal;\n\nexport {\n Portal,\n //\n Root,\n};\nexport type { PortalProps };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n ? R\n : never;\n\nexport function useStateMachine<M>(\n initialState: MachineState<M>,\n machine: M & Machine<MachineState<M>>\n) {\n return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n const nextState = (machine[state] as any)[event];\n return nextState ?? state;\n }, initialState);\n}\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './use-state-machine';\n\ninterface PresenceProps {\n children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n\n const child = (\n typeof children === 'function'\n ? children({ present: presence.isPresent })\n : React.Children.only(children)\n ) as React.ReactElement<{ ref?: React.Ref<HTMLElement> }>;\n\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === 'function';\n return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n const [node, setNode] = React.useState<HTMLElement>();\n const stylesRef = React.useRef<CSSStyleDeclaration | null>(null);\n const prevPresentRef = React.useRef(present);\n const prevAnimationNameRef = React.useRef<string>('none');\n const initialState = present ? 'mounted' : 'unmounted';\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: 'unmounted',\n ANIMATION_OUT: 'unmountSuspended',\n },\n unmountSuspended: {\n MOUNT: 'mounted',\n ANIMATION_END: 'unmounted',\n },\n unmounted: {\n MOUNT: 'mounted',\n },\n });\n\n React.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n }, [state]);\n\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n\n if (present) {\n send('MOUNT');\n } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n // If there is no exit animation or the element is hidden, animations won't run\n // so we unmount instantly\n send('UNMOUNT');\n } else {\n /**\n * When `present` changes to `false`, we check changes to animation-name to\n * determine whether an animation has started. We chose this approach (reading\n * computed styles) because there is no `animationrun` event and `animationstart`\n * fires after `animation-delay` has expired which would be too late.\n */\n const isAnimating = prevAnimationName !== currentAnimationName;\n\n if (wasPresent && isAnimating) {\n send('ANIMATION_OUT');\n } else {\n send('UNMOUNT');\n }\n }\n\n prevPresentRef.current = present;\n }\n }, [present, send]);\n\n useLayoutEffect(() => {\n if (node) {\n let timeoutId: number;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n /**\n * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n * make sure we only trigger ANIMATION_END for the currently active animation.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n // The event.animationName is unescaped for CSS syntax,\n // so we need to escape it to compare with the animationName computed from the style.\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n // With React 18 concurrency this update is applied a frame after the\n // animation ends, creating a flash of visible content. By setting the\n // animation fill mode to \"forwards\", we force the node to keep the\n // styles of the last keyframe, removing the flash.\n //\n // Previously we flushed the update via ReactDom.flushSync, but with\n // exit animations this resulted in the node being removed from the\n // DOM before the synthetic animationEnd event was dispatched, meaning\n // user-provided event handlers would not be called.\n // https://github.com/radix-ui/primitives/pull/1849\n send('ANIMATION_END');\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = 'forwards';\n // Reset the style after the node had time to unmount (for cases\n // where the component chooses not to unmount). Doing this any\n // sooner than `setTimeout` (e.g. with `requestAnimationFrame`)\n // still causes a flash.\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === 'forwards') {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event: AnimationEvent) => {\n if (event.target === node) {\n // if animation occurred, store its name as the previous animation.\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener('animationstart', handleAnimationStart);\n node.addEventListener('animationcancel', handleAnimationEnd);\n node.addEventListener('animationend', handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener('animationstart', handleAnimationStart);\n node.removeEventListener('animationcancel', handleAnimationEnd);\n node.removeEventListener('animationend', handleAnimationEnd);\n };\n } else {\n // Transition to the unmounted state if the node is removed prematurely.\n // We avoid doing so during cleanup as the node may change but still exist.\n send('ANIMATION_END');\n }\n }, [node, send]);\n\n return {\n isPresent: ['mounted', 'unmountSuspended'].includes(state),\n ref: React.useCallback((node: HTMLElement) => {\n stylesRef.current = node ? getComputedStyle(node) : null;\n setNode(node);\n }, []),\n };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles: CSSStyleDeclaration | null) {\n return styles?.animationName || 'none';\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement<{ ref?: React.Ref<unknown> }>) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n\n // Not DEV\n return element.props.ref || (element as any).ref;\n}\n\nconst Root = Presence;\n\nexport {\n Presence,\n //\n Root,\n};\nexport type { PresenceProps };\n","import * as React from 'react';\n\n/** Number of components which have requested interest to have focus guards */\nlet count = 0;\n\ninterface FocusGuardsProps {\n children?: React.ReactNode;\n}\n\nfunction FocusGuards(props: FocusGuardsProps) {\n useFocusGuards();\n return props.children;\n}\n\n/**\n * Injects a pair of focus guards at the edges of the whole DOM tree\n * to ensure `focusin` & `focusout` events can be caught consistently.\n */\nfunction useFocusGuards() {\n /* eslint-disable no-restricted-globals */\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');\n document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? createFocusGuard());\n count++;\n\n return () => {\n if (count === 1) {\n document.querySelectorAll('[data-radix-focus-guard]').forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n /* eslint-enable no-restricted-globals */\n}\n\nfunction createFocusGuard() {\n // eslint-disable-next-line no-restricted-globals\n const element = document.createElement('span');\n element.setAttribute('data-radix-focus-guard', '');\n element.tabIndex = 0;\n element.style.outline = 'none';\n element.style.opacity = '0';\n element.style.position = 'fixed';\n element.style.pointerEvents = 'none';\n return element;\n}\n\nexport {\n FocusGuards,\n //\n FocusGuards as Root,\n //\n useFocusGuards,\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContext, createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { DismissableLayer } from '@radix-ui/react-dismissable-layer';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { Portal as PortalPrimitive } from '@radix-ui/react-portal';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useFocusGuards } from '@radix-ui/react-focus-guards';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport { hideOthers } from 'aria-hidden';\nimport { createSlot } from '@radix-ui/react-slot';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Dialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst DIALOG_NAME = 'Dialog';\n\ntype ScopedProps<P> = P & { __scopeDialog?: Scope };\nconst [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\n\ntype DialogContextValue = {\n triggerRef: React.RefObject<HTMLButtonElement | null>;\n contentRef: React.RefObject<DialogContentElement | null>;\n contentId: string;\n titleId: string;\n descriptionId: string;\n open: boolean;\n onOpenChange(open: boolean): void;\n onOpenToggle(): void;\n modal: boolean;\n};\n\nconst [DialogProvider, useDialogContext] = createDialogContext<DialogContextValue>(DIALOG_NAME);\n\ninterface DialogProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n modal?: boolean;\n}\n\nconst Dialog: React.FC<DialogProps> = (props: ScopedProps<DialogProps>) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n } = props;\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const contentRef = React.useRef<DialogContentElement>(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME,\n });\n\n return (\n <DialogProvider\n scope={__scopeDialog}\n triggerRef={triggerRef}\n contentRef={contentRef}\n contentId={useId()}\n titleId={useId()}\n descriptionId={useId()}\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen])}\n modal={modal}\n >\n {children}\n </DialogProvider>\n );\n};\n\nDialog.displayName = DIALOG_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'DialogTrigger';\n\ntype DialogTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface DialogTriggerProps extends PrimitiveButtonProps {}\n\nconst DialogTrigger = React.forwardRef<DialogTriggerElement, DialogTriggerProps>(\n (props: ScopedProps<DialogTriggerProps>, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return (\n <Primitive.button\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={context.open}\n aria-controls={context.contentId}\n data-state={getState(context.open)}\n {...triggerProps}\n ref={composedTriggerRef}\n onClick={composeEventHandlers(props.onClick, context.onOpenToggle)}\n />\n );\n }\n);\n\nDialogTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'DialogPortal';\n\ntype PortalContextValue = { forceMount?: true };\nconst [PortalProvider, usePortalContext] = createDialogContext<PortalContextValue>(PORTAL_NAME, {\n forceMount: undefined,\n});\n\ntype PortalProps = React.ComponentPropsWithoutRef<typeof PortalPrimitive>;\ninterface DialogPortalProps {\n children?: React.ReactNode;\n /**\n * Specify a container element to portal the content into.\n */\n container?: PortalProps['container'];\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogPortal: React.FC<DialogPortalProps> = (props: ScopedProps<DialogPortalProps>) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return (\n <PortalProvider scope={__scopeDialog} forceMount={forceMount}>\n {React.Children.map(children, (child) => (\n <Presence present={forceMount || context.open}>\n <PortalPrimitive asChild container={container}>\n {child}\n </PortalPrimitive>\n </Presence>\n ))}\n </PortalProvider>\n );\n};\n\nDialogPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogOverlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst OVERLAY_NAME = 'DialogOverlay';\n\ntype DialogOverlayElement = DialogOverlayImplElement;\ninterface DialogOverlayProps extends DialogOverlayImplProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogOverlay = React.forwardRef<DialogOverlayElement, DialogOverlayProps>(\n (props: ScopedProps<DialogOverlayProps>, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? (\n <Presence present={forceMount || context.open}>\n <DialogOverlayImpl {...overlayProps} ref={forwardedRef} />\n </Presence>\n ) : null;\n }\n);\n\nDialogOverlay.displayName = OVERLAY_NAME;\n\ntype DialogOverlayImplElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface DialogOverlayImplProps extends PrimitiveDivProps {}\n\nconst Slot = createSlot('DialogOverlay.RemoveScroll');\n\nconst DialogOverlayImpl = React.forwardRef<DialogOverlayImplElement, DialogOverlayImplProps>(\n (props: ScopedProps<DialogOverlayImplProps>, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n <RemoveScroll as={Slot} allowPinchZoom shards={[context.contentRef]}>\n <Primitive.div\n data-state={getState(context.open)}\n {...overlayProps}\n ref={forwardedRef}\n // We re-enable pointer-events prevented by `Dialog.Content` to allow scrolling the overlay.\n style={{ pointerEvents: 'auto', ...overlayProps.style }}\n />\n </RemoveScroll>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'DialogContent';\n\ntype DialogContentElement = DialogContentTypeElement;\ninterface DialogContentProps extends DialogContentTypeProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>(\n (props: ScopedProps<DialogContentProps>, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return (\n <Presence present={forceMount || context.open}>\n {context.modal ? (\n <DialogContentModal {...contentProps} ref={forwardedRef} />\n ) : (\n <DialogContentNonModal {...contentProps} ref={forwardedRef} />\n )}\n </Presence>\n );\n }\n);\n\nDialogContent.displayName = CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentTypeElement = DialogContentImplElement;\ninterface DialogContentTypeProps\n extends Omit<DialogContentImplProps, 'trapFocus' | 'disableOutsidePointerEvents'> {}\n\nconst DialogContentModal = React.forwardRef<DialogContentTypeElement, DialogContentTypeProps>(\n (props: ScopedProps<DialogContentTypeProps>, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n\n // aria-hide everything except the content (better supported equivalent to setting aria-modal)\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n\n return (\n <DialogContentImpl\n {...props}\n ref={composedRefs}\n // we make sure focus isn't trapped once `DialogContent` has been closed\n // (closed !== unmounted when animating out)\n trapFocus={context.open}\n disableOutsidePointerEvents\n onCloseAutoFocus={composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n })}\n onPointerDownOutside={composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n\n // If the event is a right-click, we shouldn't close because\n // it is effectively as if we right-clicked the `Overlay`.\n if (isRightClick) event.preventDefault();\n })}\n // When focus is trapped, a `focusout` event may still happen.\n // We make sure we don't trigger our `onDismiss` in such case.\n onFocusOutside={composeEventHandlers(props.onFocusOutside, (event) =>\n event.preventDefault()\n )}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst DialogContentNonModal = React.forwardRef<DialogContentTypeElement, DialogContentTypeProps>(\n (props: ScopedProps<DialogContentTypeProps>, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n\n return (\n <DialogContentImpl\n {...props}\n ref={forwardedRef}\n trapFocus={false}\n disableOutsidePointerEvents={false}\n onCloseAutoFocus={(event) => {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n // Always prevent auto focus because we either focus manually or want user agent focus\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === 'pointerdown') {\n hasPointerDownOutsideRef.current = true;\n }\n }\n\n // Prevent dismissing when clicking the trigger.\n // As the trigger is already setup to close, without doing so would\n // cause it to close and immediately open.\n const target = event.target as HTMLElement;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n\n // On Safari if the trigger is inside a container with tabIndex={0}, when clicked\n // we will get the pointer down outside event on the trigger, but then a subsequent\n // focus outside event on the container, we ignore any focus outside event when we've\n // already had a pointer down outside event.\n if (event.detail.originalEvent.type === 'focusin' && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }}\n />\n );\n }\n);\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype DialogContentImplElement = React.ComponentRef<typeof DismissableLayer>;\ntype DismissableLayerProps = React.ComponentPropsWithoutRef<typeof DismissableLayer>;\ntype FocusScopeProps = React.ComponentPropsWithoutRef<typeof FocusScope>;\ninterface DialogContentImplProps extends Omit<DismissableLayerProps, 'onDismiss'> {\n /**\n * When `true`, focus cannot escape the `Content` via keyboard,\n * pointer, or a programmatic focus.\n * @defaultValue false\n */\n trapFocus?: FocusScopeProps['trapped'];\n\n /**\n * Event handler called when auto-focusing on open.\n * Can be prevented.\n */\n onOpenAutoFocus?: FocusScopeProps['onMountAutoFocus'];\n\n /**\n * Event handler called when auto-focusing on close.\n * Can be prevented.\n */\n onCloseAutoFocus?: FocusScopeProps['onUnmountAutoFocus'];\n}\n\nconst DialogContentImpl = React.forwardRef<DialogContentImplElement, DialogContentImplProps>(\n (props: ScopedProps<DialogContentImplProps>, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n\n // Make sure the whole tree has focus guards as our `Dialog` will be\n // the last element in the DOM (because of the `Portal`)\n useFocusGuards();\n\n return (\n <>\n <FocusScope\n asChild\n loop\n trapped={trapFocus}\n onMountAutoFocus={onOpenAutoFocus}\n onUnmountAutoFocus={onCloseAutoFocus}\n >\n <DismissableLayer\n role=\"dialog\"\n id={context.contentId}\n aria-describedby={context.descriptionId}\n aria-labelledby={context.titleId}\n data-state={getState(context.open)}\n {...contentProps}\n ref={composedRefs}\n onDismiss={() => context.onOpenChange(false)}\n />\n </FocusScope>\n {process.env.NODE_ENV !== 'production' && (\n <>\n <TitleWarning titleId={context.titleId} />\n <DescriptionWarning contentRef={contentRef} descriptionId={context.descriptionId} />\n </>\n )}\n </>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DialogTitle\n * -----------------------------------------------------------------------------------------------*/\n\nconst TITLE_NAME = 'DialogTitle';\n\ntype DialogTitleElement = React.ComponentRef<typeof Primitive.h2>;\ntype PrimitiveHeading2Props = React.ComponentPropsWithoutRef<typeof Primitive.h2>;\ninterface DialogTitleProps extends PrimitiveHeading2Props {}\n\nconst DialogTitle = React.forwardRef<DialogTitleElement, DialogTitleProps>(\n (props: ScopedProps<DialogTitleProps>, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return <Primitive.h2 id={context.titleId} {...titleProps} ref={forwardedRef} />;\n }\n);\n\nDialogTitle.displayName = TITLE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogDescription\n * -----------------------------------------------------------------------------------------------*/\n\nconst DESCRIPTION_NAME = 'DialogDescription';\n\ntype DialogDescriptionElement = React.ComponentRef<typeof Primitive.p>;\ntype PrimitiveParagraphProps = React.ComponentPropsWithoutRef<typeof Primitive.p>;\ninterface DialogDescriptionProps extends PrimitiveParagraphProps {}\n\nconst DialogDescription = React.forwardRef<DialogDescriptionElement, DialogDescriptionProps>(\n (props: ScopedProps<DialogDescriptionProps>, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return <Primitive.p id={context.descriptionId} {...descriptionProps} ref={forwardedRef} />;\n }\n);\n\nDialogDescription.displayName = DESCRIPTION_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * DialogClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'DialogClose';\n\ntype DialogCloseElement = React.ComponentRef<typeof Primitive.button>;\ninterface DialogCloseProps extends PrimitiveButtonProps {}\n\nconst DialogClose = React.forwardRef<DialogCloseElement, DialogCloseProps>(\n (props: ScopedProps<DialogCloseProps>, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return (\n <Primitive.button\n type=\"button\"\n {...closeProps}\n ref={forwardedRef}\n onClick={composeEventHandlers(props.onClick, () => context.onOpenChange(false))}\n />\n );\n }\n);\n\nDialogClose.displayName = CLOSE_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getState(open: boolean) {\n return open ? 'open' : 'closed';\n}\n\nconst TITLE_WARNING_NAME = 'DialogTitleWarning';\n\nconst [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: 'dialog',\n});\n\ntype TitleWarningProps = { titleId?: string };\n\nconst TitleWarning: React.FC<TitleWarningProps> = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n\n return null;\n};\n\nconst DESCRIPTION_WARNING_NAME = 'DialogDescriptionWarning';\n\ntype DescriptionWarningProps = {\n contentRef: React.RefObject<DialogContentElement | null>;\n descriptionId?: string;\n};\n\nconst DescriptionWarning: React.FC<DescriptionWarningProps> = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute('aria-describedby');\n // if we have an id and the user hasn't set aria-describedby={undefined}\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n\n return null;\n};\n\nconst Root = Dialog;\nconst Trigger = DialogTrigger;\nconst Portal = DialogPortal;\nconst Overlay = DialogOverlay;\nconst Content = DialogContent;\nconst Title = DialogTitle;\nconst Description = DialogDescription;\nconst Close = DialogClose;\n\nexport {\n createDialogScope,\n //\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogContent,\n DialogTitle,\n DialogDescription,\n DialogClose,\n //\n Root,\n Trigger,\n Portal,\n Overlay,\n Content,\n Title,\n Description,\n Close,\n //\n WarningProvider,\n};\nexport type {\n DialogProps,\n DialogTriggerProps,\n DialogPortalProps,\n DialogOverlayProps,\n DialogContentProps,\n DialogTitleProps,\n DialogDescriptionProps,\n DialogCloseProps,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../utils\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\";\n\nimport { cn } from \"../../utils\";\nimport { Label } from \"./label\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? \"\") : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>…</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject<CollectionElement | null>;\n itemMap: Map<\n React.RefObject<ItemElement | null>,\n { ref: React.RefObject<ItemElement | null> } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef<CollectionElement>(null);\n const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n return (\n <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n {children}\n </CollectionProviderImpl>\n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC<DirectionProviderProps> = (props) => {\n const { dir, children } = props;\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'RovingFocusGroup';\n\ntype ItemData = { id: string; focusable: boolean; active: boolean };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n HTMLSpanElement,\n ItemData\n>(GROUP_NAME);\n\ntype ScopedProps<P> = P & { __scopeRovingFocusGroup?: Scope };\nconst [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\n\ntype Orientation = React.AriaAttributes['aria-orientation'];\ntype Direction = 'ltr' | 'rtl';\n\ninterface RovingFocusGroupOptions {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation;\n /**\n * The direction of navigation between items.\n */\n dir?: Direction;\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean;\n}\n\ntype RovingContextValue = RovingFocusGroupOptions & {\n currentTabStopId: string | null;\n onItemFocus(tabStopId: string): void;\n onItemShiftTab(): void;\n onFocusableItemAdd(): void;\n onFocusableItemRemove(): void;\n};\n\nconst [RovingFocusProvider, useRovingFocusContext] =\n createRovingFocusGroupContext<RovingContextValue>(GROUP_NAME);\n\ntype RovingFocusGroupElement = RovingFocusGroupImplElement;\ninterface RovingFocusGroupProps extends RovingFocusGroupImplProps {}\n\nconst RovingFocusGroup = React.forwardRef<RovingFocusGroupElement, RovingFocusGroupProps>(\n (props: ScopedProps<RovingFocusGroupProps>, forwardedRef) => {\n return (\n <Collection.Provider scope={props.__scopeRovingFocusGroup}>\n <Collection.Slot scope={props.__scopeRovingFocusGroup}>\n <RovingFocusGroupImpl {...props} ref={forwardedRef} />\n </Collection.Slot>\n </Collection.Provider>\n );\n }\n);\n\nRovingFocusGroup.displayName = GROUP_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype RovingFocusGroupImplElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RovingFocusGroupImplProps\n extends Omit<PrimitiveDivProps, 'dir'>,\n RovingFocusGroupOptions {\n currentTabStopId?: string | null;\n defaultCurrentTabStopId?: string;\n onCurrentTabStopIdChange?: (tabStopId: string | null) => void;\n onEntryFocus?: (event: Event) => void;\n preventScrollOnEntryFocus?: boolean;\n}\n\nconst RovingFocusGroupImpl = React.forwardRef<\n RovingFocusGroupImplElement,\n RovingFocusGroupImplProps\n>((props: ScopedProps<RovingFocusGroupImplProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef<RovingFocusGroupImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME,\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n\n return (\n <RovingFocusProvider\n scope={__scopeRovingFocusGroup}\n orientation={orientation}\n dir={direction}\n loop={loop}\n currentTabStopId={currentTabStopId}\n onItemFocus={React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n )}\n onItemShiftTab={React.useCallback(() => setIsTabbingBackOut(true), [])}\n onFocusableItemAdd={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n )}\n onFocusableItemRemove={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n )}\n >\n <Primitive.div\n tabIndex={isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0}\n data-orientation={orientation}\n {...groupProps}\n ref={composedRefs}\n style={{ outline: 'none', ...props.style }}\n onMouseDown={composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n })}\n onFocus={composeEventHandlers(props.onFocus, (event) => {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocusRef.current;\n\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n ) as typeof items;\n const candidateNodes = candidateItems.map((item) => item.ref.current!);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n\n isClickFocusRef.current = false;\n })}\n onBlur={composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))}\n />\n </RovingFocusProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RovingFocusGroupItem';\n\ntype RovingFocusItemElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface RovingFocusItemProps extends Omit<PrimitiveSpanProps, 'children'> {\n tabStopId?: string;\n focusable?: boolean;\n active?: boolean;\n children?:\n | React.ReactNode\n | ((props: { hasTabStop: boolean; isCurrentTabStop: boolean }) => React.ReactNode);\n}\n\nconst RovingFocusGroupItem = React.forwardRef<RovingFocusItemElement, RovingFocusItemProps>(\n (props: ScopedProps<RovingFocusItemProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n\n return (\n <Collection.ItemSlot\n scope={__scopeRovingFocusGroup}\n id={id}\n focusable={focusable}\n active={active}\n >\n <Primitive.span\n tabIndex={isCurrentTabStop ? 0 : -1}\n data-orientation={context.orientation}\n {...itemProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => context.onItemFocus(id))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n\n if (event.target !== event.currentTarget) return;\n\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current!);\n\n if (focusIntent === 'last') candidateNodes.reverse();\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => focusFirst(candidateNodes));\n }\n })}\n >\n {typeof children === 'function'\n ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null })\n : children}\n </Primitive.span>\n </Collection.ItemSlot>\n );\n }\n);\n\nRovingFocusGroupItem.displayName = ITEM_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\n// prettier-ignore\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev', ArrowUp: 'prev',\n ArrowRight: 'next', ArrowDown: 'next',\n PageUp: 'first', Home: 'first',\n PageDown: 'last', End: 'last',\n};\n\nfunction getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nfunction getFocusIntent(event: React.KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nfunction focusFirst(candidates: HTMLElement[], preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map<T>((_, index) => array[(startIndex + index) % array.length]!);\n}\n\nconst Root = RovingFocusGroup;\nconst Item = RovingFocusGroupItem;\n\nexport {\n createRovingFocusGroupScope,\n //\n RovingFocusGroup,\n RovingFocusGroupItem,\n //\n Root,\n Item,\n};\nexport type { RovingFocusGroupProps, RovingFocusItemProps };\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\nfunction useSize(element: HTMLElement | null) {\n const [size, setSize] = React.useState<{ width: number; height: number } | undefined>(undefined);\n\n useLayoutEffect(() => {\n if (element) {\n // provide size as early as possible\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n\n // Since we only observe the one element, we don't need to loop over the\n // array\n if (!entries.length) {\n return;\n }\n\n const entry = entries[0];\n let width: number;\n let height: number;\n\n if ('borderBoxSize' in entry) {\n const borderSizeEntry = entry['borderBoxSize'];\n // iron out differences between browsers\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize['inlineSize'];\n height = borderSize['blockSize'];\n } else {\n // for browsers that don't support `borderBoxSize`\n // we calculate it ourselves to get the correct border box.\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n\n setSize({ width, height });\n });\n\n resizeObserver.observe(element, { box: 'border-box' });\n\n return () => resizeObserver.unobserve(element);\n } else {\n // We only want to reset to `undefined` when the element becomes `null`,\n // not if it changes to another element.\n setSize(undefined);\n }\n }, [element]);\n\n return size;\n}\n\nexport { useSize };\n","import * as React from 'react';\n\nfunction usePrevious<T>(value: T) {\n const ref = React.useRef({ value, previous: value });\n\n // We compare values before making an update to ensure that\n // a change has been made. This ensures the previous value is\n // persisted correctly between renders.\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\nexport { usePrevious };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_NAME = 'Radio';\n\ntype ScopedProps<P> = P & { __scopeRadio?: Scope };\nconst [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\n\ntype RadioContextValue = { checked: boolean; disabled?: boolean };\nconst [RadioProvider, useRadioContext] = createRadioContext<RadioContextValue>(RADIO_NAME);\n\ntype RadioElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface RadioProps extends PrimitiveButtonProps {\n checked?: boolean;\n required?: boolean;\n onCheck?(): void;\n}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>(\n (props: ScopedProps<RadioProps>, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = 'on',\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = button ? form || !!button.closest('form') : true;\n\n return (\n <RadioProvider scope={__scopeRadio} checked={checked} disabled={disabled}>\n <Primitive.button\n type=\"button\"\n role=\"radio\"\n aria-checked={checked}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...radioProps}\n ref={composedRefs}\n onClick={composeEventHandlers(props.onClick, (event) => {\n // radios cannot be unchecked so we only communicate a checked state\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if radio is in a form, stop propagation from the button so that we only propagate\n // one click event (from the input). We propagate changes from an input so that native\n // form validation works and form events reflect radio updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n {isFormControl && (\n <RadioBubbleInput\n control={button}\n bubbles={!hasConsumerStoppedPropagationRef.current}\n name={name}\n value={value}\n checked={checked}\n required={required}\n disabled={disabled}\n form={form}\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n style={{ transform: 'translateX(-100%)' }}\n />\n )}\n </RadioProvider>\n );\n }\n);\n\nRadio.displayName = RADIO_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioIndicator';\n\ntype RadioIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\nexport interface RadioIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst RadioIndicator = React.forwardRef<RadioIndicatorElement, RadioIndicatorProps>(\n (props: ScopedProps<RadioIndicatorProps>, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return (\n <Presence present={forceMount || context.checked}>\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n />\n </Presence>\n );\n }\n);\n\nRadioIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'RadioBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface RadioBubbleInputProps extends Omit<InputProps, 'checked'> {\n checked: boolean;\n control: HTMLElement | null;\n bubbles: boolean;\n}\n\nconst RadioBubbleInput = React.forwardRef<HTMLInputElement, RadioBubbleInputProps>(\n (\n {\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }: ScopedProps<RadioBubbleInputProps>,\n forwardedRef\n ) => {\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n\n return (\n <Primitive.input\n type=\"radio\"\n aria-hidden\n defaultChecked={checked}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n }}\n />\n );\n }\n);\n\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction getState(checked: boolean) {\n return checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createRadioScope,\n //\n Radio,\n RadioIndicator,\n};\nexport type { RadioProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Radio, RadioIndicator, createRadioScope } from './radio';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Scope };\nconst [createRadioGroupContext, createRadioGroupScope] = createContextScope(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\nconst useRadioScope = createRadioScope();\n\ntype RadioGroupContextValue = {\n name?: string;\n required: boolean;\n disabled: boolean;\n value: string | null;\n onValueChange(value: string): void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n createRadioGroupContext<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupElement = React.ComponentRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RadioGroupProps extends PrimitiveDivProps {\n name?: RadioGroupContextValue['name'];\n required?: React.ComponentPropsWithoutRef<typeof Radio>['required'];\n disabled?: React.ComponentPropsWithoutRef<typeof Radio>['disabled'];\n dir?: RovingFocusGroupProps['dir'];\n orientation?: RovingFocusGroupProps['orientation'];\n loop?: RovingFocusGroupProps['loop'];\n defaultValue?: string;\n value?: string | null;\n onValueChange?: RadioGroupContextValue['onValueChange'];\n}\n\nconst RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(\n (props: ScopedProps<RadioGroupProps>, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange as (value: string | null) => void,\n caller: RADIO_GROUP_NAME,\n });\n\n return (\n <RadioGroupProvider\n scope={__scopeRadioGroup}\n name={name}\n required={required}\n disabled={disabled}\n value={value}\n onValueChange={setValue}\n >\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={orientation}\n dir={direction}\n loop={loop}\n >\n <Primitive.div\n role=\"radiogroup\"\n aria-required={required}\n aria-orientation={orientation}\n data-disabled={disabled ? '' : undefined}\n dir={direction}\n {...groupProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n </RadioGroupProvider>\n );\n }\n);\n\nRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RadioGroupItem';\n\ntype RadioGroupItemElement = React.ComponentRef<typeof Radio>;\ntype RadioProps = React.ComponentPropsWithoutRef<typeof Radio>;\ninterface RadioGroupItemProps extends Omit<RadioProps, 'onCheck' | 'name'> {\n value: string;\n}\n\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n (props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React.useRef<React.ComponentRef<typeof Radio>>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React.useRef(false);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => (isArrowKeyPressedRef.current = false);\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!isDisabled}\n active={checked}\n >\n <Radio\n disabled={isDisabled}\n required={context.required}\n checked={checked}\n {...radioScope}\n {...itemProps}\n name={context.name}\n ref={composedRefs}\n onCheck={() => context.onValueChange(itemProps.value)}\n onKeyDown={composeEventHandlers((event) => {\n // According to WAI ARIA, radio groups don't activate items on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onFocus={composeEventHandlers(itemProps.onFocus, () => {\n /**\n * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n * of updating `context.value`) so that the radio change event fires.\n */\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nRadioGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioGroupIndicator';\n\ntype RadioGroupIndicatorElement = React.ComponentRef<typeof RadioIndicator>;\ntype RadioIndicatorProps = React.ComponentPropsWithoutRef<typeof RadioIndicator>;\ninterface RadioGroupIndicatorProps extends RadioIndicatorProps {}\n\nconst RadioGroupIndicator = React.forwardRef<RadioGroupIndicatorElement, RadioGroupIndicatorProps>(\n (props: ScopedProps<RadioGroupIndicatorProps>, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return <RadioIndicator {...radioScope} {...indicatorProps} ref={forwardedRef} />;\n }\n);\n\nRadioGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = RadioGroup;\nconst Item = RadioGroupItem;\nconst Indicator = RadioGroupIndicator;\n\nexport {\n createRadioGroupScope,\n //\n RadioGroup,\n RadioGroupItem,\n RadioGroupIndicator,\n //\n Root,\n Item,\n Indicator,\n};\nexport type { RadioGroupProps, RadioGroupItemProps, RadioGroupIndicatorProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"../../utils\";\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","import * as React from \"react\";\n\nimport { cn } from \"../../utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","/**\n * Torn Paper Separator Component\n * Creates a realistic torn/ripped paper effect between sections\n * Based on authentic torn paper SVG design\n */\n\n\"use client\";\n\nimport { cn } from \"../../utils\";\n\nexport interface TornSeparatorProps {\n /** Background color of the section above (the torn paper color) */\n topColor?: string;\n /** Background color of the section below */\n bottomColor?: string;\n /** Height of the torn effect */\n height?: \"sm\" | \"md\" | \"lg\";\n /** Flip the torn effect vertically */\n flip?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst heightMap = {\n sm: \"h-[36px] md:h-[48px]\",\n md: \"h-[48px] md:h-[72px]\",\n lg: \"h-[72px] md:h-[96px]\",\n};\n\nexport function TornSeparator({\n topColor = \"#FFFFFF\",\n bottomColor = \"#FDF8F3\",\n height = \"md\",\n flip = false,\n className,\n}: TornSeparatorProps) {\n return (\n <div\n className={cn(\n \"relative w-full overflow-hidden\",\n heightMap[height],\n flip && \"rotate-180\",\n className\n )}\n style={{ backgroundColor: bottomColor }}\n >\n {/* Original 4-path torn paper SVG from reference design */}\n <svg\n className=\"absolute top-0 left-0 w-full h-full\"\n viewBox=\"0 0 1440 72\"\n preserveAspectRatio=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {/* Path 1 */}\n <path\n d=\"M1176.43 -165.086C1178.36 -162.329 1176.49 -159.007 1179.02 -156.171C1181.55 -163.175 1187.15 -167.734 1190.11 -173.923C1192.29 -178.498 1194.75 -178.216 1198.12 -175.693C1200.01 -174.283 1201.5 -172.544 1202.46 -170.429C1203.88 -167.296 1205.89 -167.499 1208.1 -169.364C1213.18 -173.667 1218.54 -174.048 1224.17 -170.507C1225.1 -171.87 1226.05 -173.249 1227.1 -174.8C1229.84 -170.899 1232.01 -171.103 1233.48 -175.646C1235.97 -176.163 1236.97 -173.923 1238.71 -172.842C1239.9 -174.816 1241.06 -176.743 1242.38 -178.921C1247.56 -178.31 1250.38 -173.719 1254.8 -171.729C1255.21 -172.56 1255.58 -173.328 1256.04 -174.252C1260.32 -174.456 1262.89 -171.823 1265.02 -168.768C1267.29 -165.494 1269.44 -164.491 1272.66 -167.703C1275.8 -170.821 1279.16 -170.319 1282.22 -167.358C1285.43 -164.24 1289.57 -162 1291.34 -157.488C1295.62 -158.193 1299.52 -159.086 1300.03 -164.178C1301.93 -165.227 1303.84 -165.102 1305.46 -164.475C1309.11 -163.05 1311.1 -164.757 1312.44 -167.766C1314.59 -172.576 1317.44 -172.137 1321.2 -169.489C1326.09 -166.042 1329.93 -169.599 1333.75 -172.074C1334.89 -172.811 1335.71 -174.033 1336.71 -175.082C1340.32 -174.346 1343.78 -172.513 1347.52 -174.001C1348.13 -175.098 1348.73 -176.148 1349.61 -177.73C1358.71 -171.118 1357.94 -180.394 1360.4 -185C1362.8 -182.18 1364.3 -179.234 1367.55 -178.075C1369.74 -177.291 1371.35 -177.339 1372.84 -179.485C1375.99 -183.997 1379.86 -184.546 1385.09 -181.161C1383.87 -174.581 1388.46 -172.497 1393.77 -170.93C1398.63 -169.505 1403.27 -167.672 1408.49 -170.366C1413.03 -172.701 1417.48 -170.492 1421.57 -168.314C1423.68 -167.186 1425.03 -167.421 1427.26 -168.643C1432.52 -171.541 1437.16 -169.473 1441.15 -164.883C1445.37 -168.173 1450.49 -169.395 1455.35 -171.275C1457.54 -172.121 1459.12 -171.933 1460.44 -169.943C1463.28 -165.697 1466.13 -161.451 1469.48 -156.469C1476.01 -162.642 1482.69 -166.872 1490.38 -159.336C1504 -167.797 1518.71 -167.468 1533.98 -165.901V-162.282C1533.98 -90.4454 1533.98 -18.5933 1534 53.2431C1534 57.6301 1532.29 61.2806 1529.88 64.8059C1527.07 63.6621 1526.2 61.0299 1523.82 58.7111C1514.81 63.8815 1503.17 63.4114 1495.18 71.8093C1493.36 70.4462 1492.01 69.4435 1490.74 68.4878C1485.53 70.911 1479.74 69.877 1473.37 65.3856C1466.5 72.1697 1460.83 64.3045 1453.73 63.0041C1453.42 62.6124 1452.61 61.688 1451.87 60.7323C1445.37 52.303 1445.26 52.4127 1435.36 56.0476C1428.81 58.4448 1422.32 57.6927 1416.63 53.4938C1413.73 51.363 1411.26 51.833 1408.49 53.3841C1407.31 54.0422 1405.87 54.8412 1404.63 54.7002C1393.43 53.5251 1384.51 59.0715 1375.44 64.3045C1370.19 67.3284 1364.3 68.2371 1358.54 69.3182C1357.3 67.156 1356.12 65.4012 1353.71 65.0252C1352.66 66.2003 1353.19 68.2371 1350.89 69.1928C1347.1 67.7984 1342.82 66.2473 1338.44 64.6335C1336.95 66.3883 1335.54 68.0334 1334.11 69.6785C1328.52 68.2841 1326.01 62.7377 1320.73 60.9203C1308.24 67.2187 1295.21 72.3107 1280.57 70.5089C1279.54 68.3154 1279.81 65.3699 1276.41 65.1349C1275.98 65.8086 1275.58 66.451 1274.9 67.5164C1271.44 61.4216 1267.18 63.8815 1263.32 66.216C1257.62 65.7616 1254.16 53.7758 1247.38 63.9598C1244.62 62.017 1242.74 59.6355 1241.42 56.8937C1236.74 47.1484 1230.7 45.0489 1221.24 50.3916C1218.75 51.786 1216.84 52.0367 1214.24 50.6893C1210.6 48.7935 1202.94 49.2478 1199.7 51.3473C1194.31 47.6497 1185.38 49.1538 1182.97 40.0979C1182.4 37.9827 1180.47 38.2021 1178.92 39.2675C1177.04 40.5679 1175.27 42.0407 1173.03 43.7641C1170.01 40.3799 1166.94 36.9643 1163.66 33.2981C1157.25 39.0952 1152.23 45.7226 1145.75 50.9243C1143.53 52.256 1140.9 52.6634 1138 52.5224C1137.22 50.9243 1136.46 49.4045 1135.77 47.9787C1134.1 47.493 1132.56 47.0387 1130.9 46.553C1129.76 49.3888 1128.58 52.303 1127 56.22V-131.401C1130.98 -129.771 1132.95 -132.043 1134.16 -135.318C1135.35 -138.53 1135.73 -142.023 1137.61 -145.016C1138.14 -145.846 1138.5 -146.786 1138.91 -147.633C1142.64 -144.875 1141.73 -141.162 1143.94 -138.608C1152.27 -140.41 1152.48 -149.842 1158.19 -154.229C1164.88 -150.531 1165.24 -155.451 1165.59 -160.041C1168.32 -159.509 1168.52 -157.143 1169.88 -155.686C1176.31 -155.67 1174.46 -161.655 1176.4 -165.102L1176.43 -165.086Z\"\n fill={topColor}\n />\n {/* Path 2 */}\n <path\n d=\"M769.432 -165.086C771.359 -162.329 769.494 -159.007 772.017 -156.171C774.555 -163.175 780.148 -167.734 783.11 -173.923C785.287 -178.498 787.747 -178.216 791.116 -175.693C793.012 -174.283 794.5 -172.544 795.456 -170.429C796.881 -167.296 798.887 -167.499 801.096 -169.364C806.183 -173.667 811.541 -174.048 817.171 -170.507C818.096 -171.87 819.051 -173.249 820.101 -174.8C822.843 -170.899 825.005 -171.103 826.478 -175.646C828.969 -176.163 829.972 -173.923 831.711 -172.842C832.902 -174.816 834.061 -176.743 835.377 -178.921C840.563 -178.31 843.383 -173.719 847.802 -171.729C848.209 -172.56 848.585 -173.328 849.039 -174.252C853.317 -174.456 855.886 -171.823 858.017 -168.768C860.289 -165.494 862.435 -164.491 865.663 -167.703C868.796 -170.821 872.165 -170.319 875.22 -167.358C878.432 -164.24 882.568 -162 884.339 -157.488C888.616 -158.193 892.517 -159.086 893.034 -164.178C894.93 -165.227 896.841 -165.102 898.455 -164.475C902.106 -163.05 904.096 -164.757 905.443 -167.766C907.589 -172.576 910.441 -172.137 914.201 -169.489C919.09 -166.042 922.928 -169.599 926.751 -172.074C927.895 -172.811 928.71 -174.033 929.712 -175.082C933.316 -174.346 936.778 -172.513 940.523 -174.001C941.134 -175.098 941.729 -176.148 942.607 -177.73C951.71 -171.118 950.942 -180.394 953.402 -185C955.799 -182.18 957.303 -179.234 960.546 -178.075C962.74 -177.291 964.354 -177.339 965.842 -179.485C968.991 -183.997 972.861 -184.546 978.094 -181.161C976.872 -174.581 981.463 -172.497 986.774 -170.93C991.631 -169.505 996.269 -167.672 1001.49 -170.366C1006.03 -172.701 1010.48 -170.492 1014.57 -168.314C1016.68 -167.186 1018.03 -167.421 1020.26 -168.643C1025.52 -171.541 1030.16 -169.473 1034.15 -164.883C1038.37 -168.173 1043.49 -169.395 1048.35 -171.275C1050.54 -172.121 1052.12 -171.933 1053.44 -169.943C1056.28 -165.697 1059.13 -161.451 1062.48 -156.469C1069.01 -162.642 1075.69 -166.872 1083.38 -159.336C1097 -167.797 1111.71 -167.468 1126.98 -165.901V-162.282C1126.98 -90.4454 1126.98 -18.5933 1127 53.2431C1127 57.6301 1125.29 61.2806 1122.88 64.8059C1120.07 63.6621 1119.2 61.0299 1116.82 58.7111C1107.81 63.8815 1096.17 63.4114 1088.18 71.8093C1086.36 70.4462 1085.01 69.4435 1083.74 68.4878C1078.53 70.911 1072.74 69.877 1066.37 65.3856C1059.5 72.1697 1053.83 64.3045 1046.73 63.0041C1046.42 62.6124 1045.61 61.688 1044.87 60.7323C1038.37 52.303 1038.26 52.4127 1028.36 56.0476C1021.81 58.4448 1015.32 57.6927 1009.63 53.4938C1006.73 51.363 1004.26 51.833 1001.49 53.3841C1000.31 54.0422 998.87 54.8412 997.632 54.7002C986.429 53.5251 977.514 59.0715 968.443 64.3045C963.194 67.3284 957.303 68.2371 951.537 69.3182C950.3 67.156 949.125 65.4012 946.712 65.0252C945.662 66.2003 946.195 68.2371 943.892 69.1928C940.1 67.7984 935.823 66.2473 931.436 64.6335C929.947 66.3883 928.537 68.0334 927.111 69.6785C921.518 68.2841 919.011 62.7377 913.731 60.9203C901.244 67.2187 888.209 72.3107 873.575 70.5089C872.541 68.3154 872.807 65.3699 869.407 65.1349C868.984 65.8086 868.577 66.451 867.903 67.5164C864.441 61.4216 860.179 63.8815 856.325 66.216C850.622 65.7616 847.159 53.7758 840.375 63.9598C837.617 62.017 835.737 59.6355 834.421 56.8937C829.737 47.1484 823.705 45.0489 814.241 50.3916C811.75 51.786 809.839 52.0367 807.238 50.6893C803.603 48.7935 795.941 49.2478 792.698 51.3473C787.309 47.6497 778.378 49.1538 775.965 40.0979C775.401 37.9827 773.474 38.2021 771.923 39.2675C770.043 40.5679 768.272 42.0407 766.032 43.7641C763.008 40.3799 759.937 36.9643 756.662 33.2981C750.254 39.0952 745.225 45.7226 738.754 50.9243C736.529 52.256 733.897 52.6634 730.999 52.5224C730.215 50.9243 729.463 49.4045 728.774 47.9787C727.098 47.493 725.562 47.0387 723.901 46.553C722.758 49.3888 721.582 52.303 720 56.22V-131.401C723.98 -129.771 725.954 -132.043 727.16 -135.318C728.351 -138.53 728.727 -142.023 730.607 -145.016C731.14 -145.846 731.5 -146.786 731.908 -147.633C735.636 -144.875 734.728 -141.162 736.937 -138.608C745.272 -140.41 745.476 -149.842 751.194 -154.229C757.885 -150.531 758.245 -155.451 758.59 -160.041C761.316 -159.509 761.519 -157.143 762.883 -155.686C769.306 -155.67 767.458 -161.655 769.4 -165.102L769.432 -165.086Z\"\n fill={topColor}\n />\n {/* Path 3 */}\n <path\n d=\"M362.432 -165.086C364.359 -162.329 362.494 -159.007 365.017 -156.171C367.555 -163.175 373.148 -167.734 376.11 -173.923C378.287 -178.498 380.747 -178.216 384.116 -175.693C386.012 -174.283 387.5 -172.544 388.456 -170.429C389.881 -167.296 391.887 -167.499 394.096 -169.364C399.183 -173.667 404.541 -174.048 410.171 -170.507C411.096 -171.87 412.051 -173.249 413.101 -174.8C415.843 -170.899 418.005 -171.103 419.478 -175.646C421.969 -176.163 422.972 -173.923 424.711 -172.842C425.902 -174.816 427.061 -176.743 428.377 -178.921C433.563 -178.31 436.383 -173.719 440.802 -171.729C441.209 -172.56 441.585 -173.328 442.039 -174.252C446.317 -174.456 448.886 -171.823 451.017 -168.768C453.289 -165.494 455.435 -164.491 458.663 -167.703C461.796 -170.821 465.165 -170.319 468.22 -167.358C471.432 -164.24 475.568 -162 477.339 -157.488C481.616 -158.193 485.517 -159.086 486.034 -164.178C487.93 -165.227 489.841 -165.102 491.455 -164.475C495.106 -163.05 497.096 -164.757 498.443 -167.766C500.589 -172.576 503.441 -172.137 507.201 -169.489C512.09 -166.042 515.928 -169.599 519.751 -172.074C520.895 -172.811 521.71 -174.033 522.712 -175.082C526.316 -174.346 529.778 -172.513 533.523 -174.001C534.134 -175.098 534.729 -176.148 535.607 -177.73C544.71 -171.118 543.942 -180.394 546.402 -185C548.799 -182.18 550.303 -179.234 553.546 -178.075C555.74 -177.291 557.354 -177.339 558.842 -179.485C561.991 -183.997 565.861 -184.546 571.094 -181.161C569.872 -174.581 574.463 -172.497 579.774 -170.93C584.631 -169.505 589.269 -167.672 594.486 -170.366C599.03 -172.701 603.479 -170.492 607.569 -168.314C609.684 -167.186 611.031 -167.421 613.256 -168.643C618.52 -171.541 623.158 -169.473 627.153 -164.883C631.368 -168.173 636.491 -169.395 641.348 -171.275C643.542 -172.121 645.124 -171.933 646.44 -169.943C649.276 -165.697 652.128 -161.451 655.48 -156.469C662.014 -162.642 668.688 -166.872 676.381 -159.336C689.996 -167.797 704.708 -167.468 719.984 -165.901V-162.282C719.984 -90.4454 719.984 -18.5933 720 53.2431C720 57.6301 718.292 61.2806 715.879 64.8059C713.075 63.6621 712.197 61.0299 709.816 58.7111C700.807 63.8815 689.166 63.4114 681.175 71.8093C679.358 70.4462 678.011 69.4435 676.741 68.4878C671.529 70.911 665.738 69.877 659.366 65.3856C652.504 72.1697 646.832 64.3045 639.734 63.0041C639.421 62.6124 638.606 61.688 637.87 60.7323C631.368 52.303 631.258 52.4127 621.356 56.0476C614.807 58.4448 608.321 57.6927 602.633 53.4938C599.735 51.363 597.259 51.833 594.486 53.3841C593.311 54.0422 591.87 54.8412 590.632 54.7002C579.429 53.5251 570.514 59.0715 561.443 64.3045C556.194 67.3284 550.303 68.2371 544.537 69.3182C543.3 67.156 542.125 65.4012 539.712 65.0252C538.662 66.2003 539.195 68.2371 536.892 69.1928C533.1 67.7984 528.823 66.2473 524.436 64.6335C522.947 66.3883 521.537 68.0334 520.111 69.6785C514.518 68.2841 512.011 62.7377 506.731 60.9203C494.244 67.2187 481.209 72.3107 466.575 70.5089C465.541 68.3154 465.807 65.3699 462.407 65.1349C461.984 65.8086 461.577 66.451 460.903 67.5164C457.441 61.4216 453.179 63.8815 449.325 66.216C443.622 65.7616 440.159 53.7758 433.375 63.9598C430.617 62.017 428.737 59.6355 427.421 56.8937C422.737 47.1484 416.705 45.0489 407.241 50.3916C404.75 51.786 402.839 52.0367 400.238 50.6893C396.603 48.7935 388.941 49.2478 385.698 51.3473C380.309 47.6497 371.378 49.1538 368.965 40.0979C368.401 37.9827 366.474 38.2021 364.923 39.2675C363.043 40.5679 361.272 42.0407 359.032 43.7641C356.008 40.3799 352.937 36.9643 349.662 33.2981C343.254 39.0952 338.225 45.7226 331.754 50.9243C329.529 52.256 326.897 52.6634 323.999 52.5224C323.215 50.9243 322.463 49.4045 321.774 47.9787C320.098 47.493 318.562 47.0387 316.901 46.553C315.758 49.3888 314.582 52.303 313 56.22V-131.401C316.98 -129.771 318.954 -132.043 320.16 -135.318C321.351 -138.53 321.727 -142.023 323.607 -145.016C324.14 -145.846 324.5 -146.786 324.908 -147.633C328.636 -144.875 327.728 -141.162 329.937 -138.608C338.272 -140.41 338.476 -149.842 344.194 -154.229C350.885 -150.531 351.245 -155.451 351.59 -160.041C354.316 -159.509 354.519 -157.143 355.883 -155.686C362.306 -155.67 360.458 -161.655 362.4 -165.102L362.432 -165.086Z\"\n fill={topColor}\n />\n {/* Path 4 */}\n <path\n d=\"M-44.5684 -165.086C-42.6412 -162.329 -44.5057 -159.007 -41.9832 -156.171C-39.445 -163.175 -33.8516 -167.734 -30.8904 -173.923C-28.7126 -178.498 -26.2528 -178.216 -22.8842 -175.693C-20.9884 -174.283 -19.5 -172.544 -18.5443 -170.429C-17.1185 -167.296 -15.1131 -167.499 -12.9039 -169.364C-7.81714 -173.667 -2.45877 -174.048 3.17114 -170.507C4.09555 -171.87 5.0513 -173.249 6.10101 -174.8C8.84286 -170.899 11.005 -171.103 12.4778 -175.646C14.9689 -176.163 15.9716 -173.923 17.7108 -172.842C18.9015 -174.816 20.0609 -176.743 21.377 -178.921C26.563 -178.31 29.3832 -173.719 33.8015 -171.729C34.2089 -172.56 34.5849 -173.328 35.0392 -174.252C39.3165 -174.456 41.886 -171.823 44.0169 -168.768C46.2887 -165.494 48.4352 -164.491 51.6627 -167.703C54.7962 -170.821 58.1648 -170.319 61.22 -167.358C64.4319 -164.24 68.5682 -162 70.3386 -157.488C74.6159 -158.193 78.5171 -159.086 79.0342 -164.178C80.93 -165.227 82.8414 -165.102 84.4552 -164.475C88.1058 -163.05 90.0956 -164.757 91.443 -167.766C93.5895 -172.576 96.441 -172.137 100.201 -169.489C105.09 -166.042 108.928 -169.599 112.751 -172.074C113.895 -172.811 114.71 -174.033 115.712 -175.082C119.316 -174.346 122.778 -172.513 126.523 -174.001C127.134 -175.098 127.729 -176.148 128.607 -177.73C137.71 -171.118 136.942 -180.394 139.402 -185C141.799 -182.18 143.303 -179.234 146.546 -178.075C148.74 -177.291 150.354 -177.339 151.842 -179.485C154.991 -183.997 158.861 -184.546 164.094 -181.161C162.872 -174.581 167.463 -172.497 172.774 -170.93C177.631 -169.505 182.269 -167.672 187.486 -170.366C192.03 -172.701 196.479 -170.492 200.569 -168.314C202.684 -167.186 204.031 -167.421 206.256 -168.643C211.52 -171.541 216.158 -169.473 220.153 -164.883C224.368 -168.173 229.491 -169.395 234.348 -171.275C236.542 -172.121 238.124 -171.933 239.44 -169.943C242.276 -165.697 245.128 -161.451 248.48 -156.469C255.014 -162.642 261.688 -166.872 269.381 -159.336C282.996 -167.797 297.708 -167.468 312.984 -165.901V-162.282C312.984 -90.4454 312.984 -18.5933 313 53.2431C313 57.6301 311.292 61.2806 308.879 64.8059C306.075 63.6621 305.197 61.0299 302.816 58.7111C293.807 63.8815 282.166 63.4114 274.175 71.8093C272.358 70.4462 271.011 69.4435 269.741 68.4878C264.529 70.911 258.738 69.877 252.366 65.3856C245.504 72.1697 239.832 64.3045 232.734 63.0041C232.421 62.6124 231.606 61.688 230.87 60.7323C224.368 52.303 224.258 52.4127 214.356 56.0476C207.807 58.4448 201.321 57.6927 195.633 53.4938C192.735 51.363 190.259 51.833 187.486 53.3841C186.311 54.0422 184.87 54.8412 183.632 54.7002C172.429 53.5251 163.514 59.0715 154.443 64.3045C149.194 67.3284 143.303 68.2371 137.537 69.3182C136.3 67.156 135.125 65.4012 132.712 65.0252C131.662 66.2003 132.195 68.2371 129.892 69.1928C126.1 67.7984 121.823 66.2473 117.436 64.6335C115.947 66.3883 114.537 68.0334 113.111 69.6785C107.518 68.2841 105.011 62.7377 99.7312 60.9203C87.244 67.2187 74.2085 72.3107 59.5749 70.5089C58.5408 68.3154 58.8072 65.3699 55.4073 65.1349C54.9843 65.8086 54.5769 66.451 53.9032 67.5164C50.4406 61.4216 46.179 63.8815 42.3247 66.216C36.6217 65.7616 33.1591 53.7758 26.375 63.9598C23.6175 62.017 21.7374 59.6355 20.4213 56.8937C15.7367 47.1484 9.70459 45.0489 0.241302 50.3916C-2.24988 51.786 -4.16135 52.0367 -6.76218 50.6893C-10.3971 48.7935 -18.0586 49.2478 -21.3018 51.3473C-26.6915 47.6497 -35.6221 49.1538 -38.0349 40.0979C-38.599 37.9827 -40.5261 38.2021 -42.0772 39.2675C-43.9573 40.5679 -45.7278 42.0407 -47.9682 43.7641C-50.9921 40.3799 -54.063 36.9643 -57.3375 33.2981C-63.7456 39.0952 -68.775 45.7226 -75.2457 50.9243C-77.4705 52.256 -80.1027 52.6634 -83.0012 52.5224C-83.7846 50.9243 -84.5367 49.4045 -85.226 47.9787C-86.9025 47.493 -88.4379 47.0387 -90.0987 46.553C-91.2424 49.3888 -92.4175 52.303 -94 56.22V-131.401C-90.0204 -129.771 -88.0462 -132.043 -86.8398 -135.318C-85.6491 -138.53 -85.273 -142.023 -83.3929 -145.016C-82.8602 -145.846 -82.4998 -146.786 -82.0925 -147.633C-78.3636 -144.875 -79.2723 -141.162 -77.0631 -138.608C-68.7279 -140.41 -68.5243 -149.842 -62.8056 -154.229C-56.1154 -150.531 -55.7551 -155.451 -55.4104 -160.041C-52.6842 -159.509 -52.4805 -157.143 -51.1174 -155.686C-44.6937 -155.67 -46.5424 -161.655 -44.5997 -165.102L-44.5684 -165.086Z\"\n fill={topColor}\n />\n </svg>\n </div>\n );\n}\n\n/**\n * Preset torn separators for common use cases\n */\nexport function TornSeparatorWhiteToCream({\n flip,\n className,\n height,\n}: Omit<TornSeparatorProps, \"topColor\" | \"bottomColor\">) {\n return (\n <TornSeparator\n topColor=\"#FFFFFF\"\n bottomColor=\"#FDF8F3\"\n flip={flip}\n className={className}\n height={height}\n />\n );\n}\n\nexport function TornSeparatorCreamToWhite({\n flip,\n className,\n height,\n}: Omit<TornSeparatorProps, \"topColor\" | \"bottomColor\">) {\n return (\n <TornSeparator\n topColor=\"#FDF8F3\"\n bottomColor=\"#FFFFFF\"\n flip={flip}\n className={className}\n height={height}\n />\n );\n}\n\nexport function TornSeparatorCreamToDark({\n flip,\n className,\n height,\n}: Omit<TornSeparatorProps, \"topColor\" | \"bottomColor\">) {\n return (\n <TornSeparator\n topColor=\"#FDF8F3\"\n bottomColor=\"#1A1512\"\n flip={flip}\n className={className}\n height={height}\n />\n );\n}\n\nexport function TornSeparatorDarkToCream({\n flip,\n className,\n height,\n}: Omit<TornSeparatorProps, \"topColor\" | \"bottomColor\">) {\n return (\n <TornSeparator\n topColor=\"#1A1512\"\n bottomColor=\"#FDF8F3\"\n flip={flip}\n className={className}\n height={height}\n />\n );\n}\n\nexport function TornSeparatorWhiteToDark({\n flip,\n className,\n height,\n}: Omit<TornSeparatorProps, \"topColor\" | \"bottomColor\">) {\n return (\n <TornSeparator\n topColor=\"#FFFFFF\"\n bottomColor=\"#1A1512\"\n flip={flip}\n className={className}\n height={height}\n />\n );\n}\n\nexport function TornSeparatorDarkToWhite({\n flip,\n className,\n height,\n}: Omit<TornSeparatorProps, \"topColor\" | \"bottomColor\">) {\n return (\n <TornSeparator\n topColor=\"#1A1512\"\n bottomColor=\"#FFFFFF\"\n flip={flip}\n className={className}\n height={height}\n />\n );\n}\n\nexport default TornSeparator;\n","/**\n * UserMenu Component\n * Dropdown menu for authenticated users\n */\n\n\"use client\";\n\nimport React from \"react\";\n\nexport interface UserMenuProps {\n user: {\n name: string;\n email: string;\n avatar?: string;\n };\n onLogout?: () => void;\n triggerClassName?: string;\n}\n\n/**\n * UserMenu component for displaying user account dropdown\n * This is a basic implementation - themes can override with their own UserMenu\n */\nexport function UserMenu({ user, onLogout, triggerClassName }: UserMenuProps) {\n const [isOpen, setIsOpen] = React.useState(false);\n\n const handleLogout = () => {\n setIsOpen(false);\n onLogout?.();\n };\n\n return (\n <div className=\"relative\">\n <button\n onClick={() => setIsOpen(!isOpen)}\n className={triggerClassName || \"flex items-center gap-2\"}\n aria-label=\"User menu\"\n >\n {user.avatar ? (\n <img\n src={user.avatar}\n alt={user.name}\n className=\"w-8 h-8 rounded-full\"\n />\n ) : (\n <div className=\"w-8 h-8 rounded-full bg-gray-300 flex items-center justify-center\">\n <span className=\"text-sm font-medium\">\n {user.name[0]?.toUpperCase()}\n </span>\n </div>\n )}\n <span>{user.name}</span>\n </button>\n\n {isOpen && (\n <>\n <div\n className=\"fixed inset-0 z-10\"\n onClick={() => setIsOpen(false)}\n />\n <div className=\"absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg py-1 z-20\">\n <div className=\"px-4 py-2 border-b\">\n <p className=\"text-sm font-medium text-gray-900\">{user.name}</p>\n <p className=\"text-xs text-gray-500\">{user.email}</p>\n </div>\n <button\n onClick={handleLogout}\n className=\"block w-full text-left px-4 py-2 text-sm text-gray-700 hover:bg-gray-100\"\n >\n Đăng xuất\n </button>\n </div>\n </>\n )}\n </div>\n );\n}\n"]}