@vireo-ai/trellis-ui 0.1.61 → 0.1.62

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 (531) hide show
  1. package/THIRD_PARTY_NOTICES.md +9 -0
  2. package/package.json +14 -35
  3. package/packages/client/src/components/accordion/styles.css +21 -9
  4. package/packages/client/src/components/badge/styles.css +12 -0
  5. package/packages/client/src/components/button/styles.css +31 -5
  6. package/packages/client/src/components/card/styles.css +16 -0
  7. package/packages/client/src/components/checkbox/styles.css +29 -5
  8. package/packages/client/src/components/date-picker/styles.css +22 -17
  9. package/packages/client/src/components/field/styles.css +16 -16
  10. package/packages/client/src/components/input/styles.css +1 -0
  11. package/packages/client/src/components/keybinding/styles.css +9 -2
  12. package/packages/client/src/components/menu/styles.css +13 -0
  13. package/packages/client/src/components/panels/styles.css +12 -2
  14. package/packages/client/src/components/scroll-area/styles.css +169 -2
  15. package/packages/client/src/components/select/styles.css +28 -8
  16. package/packages/client/src/components/sidebar/styles.css +218 -0
  17. package/packages/client/src/components/slider/styles.css +57 -0
  18. package/packages/client/src/components/tabs/styles.css +26 -24
  19. package/packages/client/src/components/toast/styles.css +31 -0
  20. package/packages/client/src/directives/sortable.css +5 -0
  21. package/packages/client/src/runtime/drag-and-drop/resize-handle.css +2 -2
  22. package/packages/client/src/styles/components.css +8 -4
  23. package/packages/client/src/styles/fonts/fira-code/5.3.0/LICENSE +93 -0
  24. package/packages/client/src/styles/fonts/fira-code/5.3.0/download.json +47 -0
  25. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  26. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  27. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  28. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  29. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  30. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  31. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  32. package/packages/client/src/styles/fonts/fira-code/5.3.0/font.css +62 -0
  33. package/packages/client/src/styles/fonts/fira-code/5.3.0/resource.json +82 -0
  34. package/packages/client/src/styles/fonts/inter/5.3.0/LICENSE +93 -0
  35. package/packages/client/src/styles/fonts/inter/5.3.0/download.json +47 -0
  36. package/packages/client/src/styles/fonts/inter/5.3.0/font.css +62 -0
  37. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  38. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  39. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  40. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  41. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  42. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  43. package/packages/client/src/styles/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  44. package/packages/client/src/styles/fonts/inter/5.3.0/resource.json +82 -0
  45. package/packages/client/src/styles/generated/theme-fonts.css +3 -3
  46. package/packages/client/src/styles/generated/theme-palette.css +1001 -634
  47. package/packages/client/src/styles/generated/theme-runtime.css +905 -580
  48. package/packages/client/src/styles/generated-sources.css +1 -1
  49. package/packages/client/src/styles/layout.css +88 -0
  50. package/packages/client/src/styles/recipes/action.css +4 -16
  51. package/packages/client/src/styles/recipes/disabled.css +8 -0
  52. package/packages/client/src/styles/recipes/option.css +0 -44
  53. package/packages/client/src/styles/recipes/selection.css +28 -39
  54. package/packages/client/src/styles/theme-support.css +19 -42
  55. package/packages/client/src/styles/typography.css +26 -0
  56. package/packages/client/types/assets/bridge.d.ts +1 -2
  57. package/packages/client/types/capabilities/collection.d.ts +7 -0
  58. package/packages/client/types/capabilities/collection.entry.generated.d.ts +3 -0
  59. package/packages/client/types/capabilities/shortcut.d.ts +4 -3
  60. package/packages/client/types/components/accordion/machine.d.ts +4 -4
  61. package/packages/client/types/components/app/contract.d.ts +5 -5
  62. package/packages/client/types/components/badge/contract.d.ts +1 -0
  63. package/packages/client/types/components/box/contract.d.ts +17 -12
  64. package/packages/client/types/components/box/index.d.ts +1 -1
  65. package/packages/client/types/components/button/contract.d.ts +3 -2
  66. package/packages/client/types/components/card/contract.d.ts +27 -16
  67. package/packages/client/types/components/checkbox/contract.d.ts +13 -13
  68. package/packages/client/types/components/common.d.ts +13 -11
  69. package/packages/client/types/components/container/contract.d.ts +4 -3
  70. package/packages/client/types/components/data-grid/contract.d.ts +3 -2
  71. package/packages/client/types/components/date-picker/contract.d.ts +2 -2
  72. package/packages/client/types/components/date-picker/machine.d.ts +11 -11
  73. package/packages/client/types/components/dropdown/contract.d.ts +1 -1
  74. package/packages/client/types/components/dropdown/machine.d.ts +5 -3
  75. package/packages/client/types/components/field/contract.d.ts +4 -4
  76. package/packages/client/types/components/file-upload/contract.d.ts +3 -3
  77. package/packages/client/types/components/file-upload/machine.d.ts +4 -4
  78. package/packages/client/types/components/flex/contract.d.ts +10 -8
  79. package/packages/client/types/components/frame/contract.d.ts +14 -11
  80. package/packages/client/types/components/grid/contract.d.ts +8 -7
  81. package/packages/client/types/components/image/contract.d.ts +1 -0
  82. package/packages/client/types/components/input/contract.d.ts +1 -0
  83. package/packages/client/types/components/input/machine.d.ts +2 -2
  84. package/packages/client/types/components/layout.d.ts +91 -35
  85. package/packages/client/types/components/menu/contract.d.ts +27 -10
  86. package/packages/client/types/components/modal/contract.d.ts +22 -5
  87. package/packages/client/types/components/panels/contract.d.ts +2 -2
  88. package/packages/client/types/components/panels/index.d.ts +2 -1
  89. package/packages/client/types/components/panels/machine.d.ts +9 -8
  90. package/packages/client/types/components/radio/contract.d.ts +8 -8
  91. package/packages/client/types/components/scroll-area/contract.d.ts +1 -20
  92. package/packages/client/types/components/section/contract.d.ts +4 -3
  93. package/packages/client/types/components/select/contract.d.ts +3 -3
  94. package/packages/client/types/components/select/machine.d.ts +13 -13
  95. package/packages/client/types/components/select/presentation.d.ts +1 -0
  96. package/packages/client/types/components/sidebar/contract.d.ts +26 -8
  97. package/packages/client/types/components/sidebar/groups.d.ts +4 -0
  98. package/packages/client/types/components/sidebar/index.d.ts +5 -4
  99. package/packages/client/types/components/slider/contract.d.ts +1 -0
  100. package/packages/client/types/components/slider/machine.d.ts +10 -5
  101. package/packages/client/types/components/stack/contract.d.ts +10 -8
  102. package/packages/client/types/components/switch/contract.d.ts +8 -8
  103. package/packages/client/types/components/table/contract.d.ts +6 -5
  104. package/packages/client/types/components/tabs/index.d.ts +2 -1
  105. package/packages/client/types/components/tabs/machine.d.ts +2 -2
  106. package/packages/client/types/components/textarea/contract.d.ts +1 -1
  107. package/packages/client/types/components/toast/machine.d.ts +2 -2
  108. package/packages/client/types/components/tooltip/contract.d.ts +13 -13
  109. package/packages/client/types/components/tooltip/machine.d.ts +3 -7
  110. package/packages/client/types/core.d.ts +2 -0
  111. package/packages/client/types/directives/anchor.d.ts +1 -0
  112. package/packages/client/types/directives/animate.d.ts +3 -0
  113. package/packages/client/types/directives/collection.d.ts +9 -0
  114. package/packages/client/types/directives/index.d.ts +2 -2
  115. package/packages/client/types/docs/transition-docs.d.ts +0 -2
  116. package/packages/client/types/motion/animate.d.ts +7 -2
  117. package/packages/client/types/motion/config.d.ts +118 -0
  118. package/packages/client/types/motion/feedback.d.ts +3 -0
  119. package/packages/client/types/motion/index.d.ts +8 -107
  120. package/packages/client/types/motion/layout.d.ts +25 -0
  121. package/packages/client/types/motion/lifecycle.d.ts +10 -0
  122. package/packages/client/types/motion/owned.d.ts +15 -4
  123. package/packages/client/types/motion/properties.d.ts +17 -0
  124. package/packages/client/types/motion/recipe.d.ts +8 -75
  125. package/packages/client/types/motion/reduced-motion.d.ts +7 -8
  126. package/packages/client/types/motion/registry.d.ts +37 -0
  127. package/packages/client/types/motion/resize-preview.d.ts +26 -0
  128. package/packages/client/types/motion/resize.d.ts +3 -1
  129. package/packages/client/types/motion/size.d.ts +7 -4
  130. package/packages/client/types/runtime/anchored-popover.d.ts +11 -2
  131. package/packages/client/types/runtime/collection-navigation.d.ts +12 -4
  132. package/packages/client/types/runtime/control-size.d.ts +4 -0
  133. package/packages/client/types/runtime/drag-and-drop/index.d.ts +10 -3
  134. package/packages/client/types/runtime/drag-and-drop/sortable/ghost.d.ts +2 -1
  135. package/packages/client/types/runtime/engine/fragment.d.ts +2 -1
  136. package/packages/client/types/runtime/engine/stream.d.ts +5 -9
  137. package/packages/client/types/runtime/focus.d.ts +3 -1
  138. package/packages/client/types/runtime/index.d.ts +1 -1
  139. package/packages/client/types/runtime/layout-participant.d.ts +10 -9
  140. package/packages/client/types/runtime/layout-task.d.ts +9 -0
  141. package/packages/client/types/runtime/morph-engine.d.ts +1 -0
  142. package/packages/client/types/runtime/option-data.d.ts +2 -1
  143. package/packages/client/types/runtime/preferences.d.ts +14 -0
  144. package/packages/client/types/runtime/scroll-area-schema.d.ts +23 -0
  145. package/packages/client/types/runtime/ui.d.ts +3 -5
  146. package/packages/client/types/runtime/virtualizer-schema.d.ts +3 -1
  147. package/packages/client/types/runtime/virtualizer-size.d.ts +7 -0
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js +2 -0
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js.map +1 -0
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +984 -1132
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{anchor-B-CbpFFU.js → anchor-DXCLxWw-.js} +2 -2
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{anchor-B-CbpFFU.js.map → anchor-DXCLxWw-.js.map} +1 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor.js +2 -2
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js +2 -0
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js.map +1 -0
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection.js +2 -0
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-DlgeSL0c.js +2 -0
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{resizable-Ctqx_OoS.js.map → resizable-DlgeSL0c.js.map} +1 -1
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -2
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-Qa2EByIB.js +2 -0
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{shortcut-D2NgvMgw.js.map → shortcut-Qa2EByIB.js.map} +1 -1
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +2 -2
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{sortable-CbIOS4Lm.js → sortable-Do3a0LA9.js} +2 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{sortable-CbIOS4Lm.js.map → sortable-Do3a0LA9.js.map} +1 -1
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -2
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js +2 -0
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js.map +1 -0
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js +2 -0
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js.map +1 -0
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js +2 -0
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js.map +1 -0
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bm1phXnj.js +5 -0
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bm1phXnj.js.map +1 -0
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js +2 -0
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js.map +1 -0
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js +2 -0
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js.map +1 -0
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js +2 -0
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js.map +1 -0
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js +2 -0
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js.map +1 -0
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js +2 -0
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js.map +1 -0
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js +2 -0
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js.map +1 -0
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-zFOeeob-.js +6 -0
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{element-adapter-native-data-key-DrqJDAVH.js.map → element-adapter-native-data-key-zFOeeob-.js.map} +1 -1
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js +2 -0
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js.map +1 -0
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js +2 -0
  192. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js.map +1 -0
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js → focus-BvBkrIcj.js} +2 -2
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js.map → focus-BvBkrIcj.js.map} +1 -1
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DYfME-Rk.js +2 -0
  196. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-scope-BrYxsrhc.js.map → focus-scope-DYfME-Rk.js.map} +1 -1
  197. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js +2 -0
  198. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js.map +1 -0
  199. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js +2 -0
  200. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js.map +1 -0
  201. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js +2 -0
  202. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js.map +1 -0
  203. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js +2 -0
  204. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js.map +1 -0
  205. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js +2 -0
  206. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js.map +1 -0
  207. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js +2 -0
  208. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js.map +1 -0
  209. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js +2 -0
  210. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js.map +1 -0
  211. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js +2 -0
  212. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js.map +1 -0
  213. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js +2 -0
  214. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js.map +1 -0
  215. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js +2 -0
  216. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js.map +1 -0
  217. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preload-helper-BZ1Pz5am.js +1 -0
  218. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js +2 -0
  219. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js.map +1 -0
  220. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js +2 -0
  221. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js.map +1 -0
  222. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js +2 -0
  223. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js.map +1 -0
  224. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js +2 -0
  225. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js.map +1 -0
  226. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js +2 -0
  227. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js.map +1 -0
  228. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CQDZhwd_.js → styles-BvLCjUXV.js} +2 -2
  229. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-BvLCjUXV.js.map +1 -0
  230. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CZ7fEQL2.js +4 -0
  231. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CZ7fEQL2.js.map +1 -0
  232. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js +2 -0
  233. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js.map +1 -0
  234. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js +2 -0
  235. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js.map +1 -0
  236. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +2 -2
  237. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js +2 -0
  238. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js.map +1 -0
  239. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +2 -2
  240. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js +2 -0
  241. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js.map +1 -0
  242. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +2 -2
  243. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Dm3rQfQ_.js +2 -0
  244. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Dm3rQfQ_.js.map +1 -0
  245. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +2 -2
  246. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js +2 -0
  247. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js.map +1 -0
  248. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +2 -2
  249. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js +2 -0
  250. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js.map +1 -0
  251. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +2 -2
  252. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js +2 -0
  253. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js.map +1 -0
  254. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +2 -2
  255. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js +2 -0
  256. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js.map +1 -0
  257. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +2 -2
  258. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js +2 -0
  259. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js.map +1 -0
  260. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +2 -2
  261. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js +2 -0
  262. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js.map +1 -0
  263. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +2 -2
  264. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js +2 -0
  265. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js.map +1 -0
  266. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +2 -2
  267. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js +2 -0
  268. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js.map +1 -0
  269. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +2 -2
  270. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js +2 -0
  271. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js.map +1 -0
  272. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +2 -2
  273. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js +2 -0
  274. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js.map +1 -0
  275. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +2 -2
  276. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js +2 -0
  277. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js.map +1 -0
  278. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +2 -2
  279. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js +2 -0
  280. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js.map +1 -0
  281. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +2 -2
  282. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js +2 -0
  283. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js.map +1 -0
  284. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +2 -2
  285. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js +2 -0
  286. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js.map +1 -0
  287. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +2 -2
  288. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js +2 -0
  289. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js.map +1 -0
  290. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +2 -2
  291. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js +2 -0
  292. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js.map +1 -0
  293. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +2 -2
  294. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js +2 -0
  295. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js.map +1 -0
  296. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +2 -2
  297. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js +2 -0
  298. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js.map +1 -0
  299. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +2 -2
  300. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js +2 -0
  301. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js.map +1 -0
  302. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +2 -2
  303. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js +2 -0
  304. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js.map +1 -0
  305. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +2 -2
  306. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js +2 -0
  307. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js.map +1 -0
  308. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +2 -2
  309. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js +2 -0
  310. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js.map +1 -0
  311. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +2 -2
  312. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CX4J7tsN.js +2 -0
  313. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CX4J7tsN.js.map +1 -0
  314. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +2 -2
  315. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +297 -441
  316. package/packages/theme-engine/README.md +70 -18
  317. package/packages/theme-engine/THEME_AUTHORING.md +34 -0
  318. package/packages/theme-engine/dist/trellis.js +544 -279
  319. package/packages/theme-engine/fonts/fira-code/5.3.0/LICENSE +93 -0
  320. package/packages/theme-engine/fonts/fira-code/5.3.0/download.json +47 -0
  321. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  322. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  323. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  324. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  325. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  326. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  327. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  328. package/packages/theme-engine/fonts/fira-code/5.3.0/font.css +62 -0
  329. package/packages/theme-engine/fonts/fira-code/5.3.0/resource.json +82 -0
  330. package/packages/theme-engine/fonts/inter/5.3.0/LICENSE +93 -0
  331. package/packages/theme-engine/fonts/inter/5.3.0/download.json +47 -0
  332. package/packages/theme-engine/fonts/inter/5.3.0/font.css +62 -0
  333. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  334. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  335. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  336. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  337. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  338. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  339. package/packages/theme-engine/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  340. package/packages/theme-engine/fonts/inter/5.3.0/resource.json +82 -0
  341. package/packages/theme-engine/generated/knobs/v1/color-alpha.json +1 -1
  342. package/packages/theme-engine/generated/knobs/v1/color-foundations.json +1 -1
  343. package/packages/theme-engine/generated/knobs/v1/color-ink.json +1 -1
  344. package/packages/theme-engine/generated/knobs/v1/color-lighting.json +1 -1
  345. package/packages/theme-engine/generated/knobs/v1/color-normalization.json +1 -1
  346. package/packages/theme-engine/generated/knobs/v1/color-ramps.json +1 -1
  347. package/packages/theme-engine/generated/knobs/v1/composition.json +1 -1
  348. package/packages/theme-engine/generated/knobs/v1/depth.json +1 -1
  349. package/packages/theme-engine/generated/knobs/v1/edges.json +1 -1
  350. package/packages/theme-engine/generated/knobs/v1/index.json +398 -85
  351. package/packages/theme-engine/generated/knobs/v1/manifest.json +16 -52
  352. package/packages/theme-engine/generated/knobs/v1/radii.json +50 -1
  353. package/packages/theme-engine/generated/knobs/v1/semantic-actions.json +1 -1
  354. package/packages/theme-engine/generated/knobs/v1/semantic-disabled.json +1 -1
  355. package/packages/theme-engine/generated/knobs/v1/semantic-disclosure.json +1 -1
  356. package/packages/theme-engine/generated/knobs/v1/semantic-intents.json +856 -37
  357. package/packages/theme-engine/generated/knobs/v1/semantic-scrim.json +1 -1
  358. package/packages/theme-engine/generated/knobs/v1/semantic-selection.json +1 -1
  359. package/packages/theme-engine/generated/knobs/v1/semantic-structure.json +1 -1
  360. package/packages/theme-engine/generated/knobs/v1/sizing-anatomy.json +4 -4
  361. package/packages/theme-engine/generated/knobs/v1/sizing-controls.json +1 -1
  362. package/packages/theme-engine/generated/knobs/v1/sizing-measures.json +1 -1
  363. package/packages/theme-engine/generated/knobs/v1/spacing.json +2 -2
  364. package/packages/theme-engine/generated/knobs/v1/substrates.json +1 -1
  365. package/packages/theme-engine/generated/knobs/v1/surfaces.json +1 -1
  366. package/packages/theme-engine/generated/knobs/v1/typography-anatomy.json +1 -1
  367. package/packages/theme-engine/generated/knobs/v1/typography-fonts.json +158 -40
  368. package/packages/theme-engine/generated/knobs/v1/typography-scale.json +1 -1
  369. package/packages/theme-engine/generated/schemas/theme-config-v1.json +57 -36
  370. package/packages/theme-engine/generated/schemas/theme-manifest-v1.json +10 -37
  371. package/packages/theme-engine/skills/create-trellis-theme/SKILL.md +4 -5
  372. package/packages/client/src/components/app/styles.css +0 -1
  373. package/packages/client/src/components/brand/styles.css +0 -8
  374. package/packages/client/src/styles/motion.css +0 -26
  375. package/packages/client/src/styles/static.css +0 -3
  376. package/packages/client/types/assets/full-runtime.generated.d.ts +0 -2
  377. package/packages/client/types/capabilities/motion.d.ts +0 -6
  378. package/packages/client/types/capabilities/motion.entry.generated.d.ts +0 -3
  379. package/packages/client/types/cdn.d.ts +0 -2
  380. package/packages/client/types/components/entry.generated.d.ts +0 -37
  381. package/packages/client/types/directives/bounds.d.ts +0 -4
  382. package/packages/client/types/directives/layout.d.ts +0 -3
  383. package/packages/client/types/index.d.ts +0 -8
  384. package/packages/client/types/motion/bounds.d.ts +0 -20
  385. package/packages/client/types/motion/controller.d.ts +0 -33
  386. package/packages/client/types/motion/flip.d.ts +0 -14
  387. package/packages/client/types/motion/plan.d.ts +0 -52
  388. package/packages/client/types/motion/stream.d.ts +0 -18
  389. package/packages/client/types/motion/targets.d.ts +0 -23
  390. package/packages/client/types/motion/view.d.ts +0 -27
  391. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis-103fb43eb5e1.css +0 -14030
  392. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +0 -14030
  393. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min-584dec82495c.css +0 -2
  394. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +0 -2
  395. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-COxhbtRZ.js +0 -1
  396. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js +0 -2
  397. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js.map +0 -1
  398. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +0 -2
  399. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js +0 -2
  400. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js +0 -2
  401. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js +0 -2
  402. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js.map +0 -1
  403. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js +0 -2
  404. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js.map +0 -1
  405. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js +0 -2
  406. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js.map +0 -1
  407. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js +0 -2
  408. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js.map +0 -1
  409. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js +0 -2
  410. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js.map +0 -1
  411. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +0 -2
  412. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +0 -1
  413. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js +0 -5
  414. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js.map +0 -1
  415. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +0 -2
  416. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +0 -1
  417. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +0 -2
  418. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +0 -1
  419. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js +0 -2
  420. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +0 -1
  421. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js +0 -2
  422. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js.map +0 -1
  423. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +0 -2
  424. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +0 -1
  425. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +0 -2
  426. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +0 -1
  427. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-DrqJDAVH.js +0 -6
  428. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js +0 -2
  429. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js.map +0 -1
  430. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js +0 -2
  431. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js.map +0 -1
  432. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js +0 -2
  433. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js.map +0 -1
  434. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BRaKxvab.js +0 -2
  435. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BRaKxvab.js.map +0 -1
  436. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js +0 -2
  437. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +0 -1
  438. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js +0 -2
  439. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js.map +0 -1
  440. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js +0 -2
  441. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js.map +0 -1
  442. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js +0 -2
  443. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js.map +0 -1
  444. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js +0 -2
  445. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js.map +0 -1
  446. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js +0 -2
  447. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js.map +0 -1
  448. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +0 -2
  449. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +0 -1
  450. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js +0 -2
  451. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js.map +0 -1
  452. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js +0 -2
  453. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js.map +0 -1
  454. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js +0 -2
  455. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js.map +0 -1
  456. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +0 -2
  457. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +0 -1
  458. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js +0 -2
  459. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js.map +0 -1
  460. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js +0 -2
  461. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js.map +0 -1
  462. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js +0 -2
  463. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js.map +0 -1
  464. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js +0 -2
  465. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js.map +0 -1
  466. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js +0 -2
  467. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js.map +0 -1
  468. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js +0 -2
  469. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js.map +0 -1
  470. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js +0 -2
  471. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js.map +0 -1
  472. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js +0 -2
  473. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js.map +0 -1
  474. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js +0 -2
  475. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js.map +0 -1
  476. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js +0 -2
  477. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js.map +0 -1
  478. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +0 -2
  479. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +0 -1
  480. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BKThFI4L.js +0 -2
  481. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BKThFI4L.js.map +0 -1
  482. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +0 -2
  483. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js +0 -2
  484. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js.map +0 -1
  485. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js +0 -2
  486. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js.map +0 -1
  487. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-RwlK04Cy.js +0 -3
  488. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-RwlK04Cy.js.map +0 -1
  489. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js +0 -2
  490. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js.map +0 -1
  491. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CQDZhwd_.js.map +0 -1
  492. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js +0 -4
  493. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js.map +0 -1
  494. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DpoqsP_I.js +0 -1
  495. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-Dnf0aKac.js +0 -1
  496. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-BpFFtrfY.js +0 -1
  497. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-CCPYnOuT.js +0 -1
  498. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-BCkP5gtC.js +0 -1
  499. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-DaT6-YFL.js +0 -1
  500. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-Cc84envj.js +0 -1
  501. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-CtQbyblj.js +0 -1
  502. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DARtpJDT.js +0 -1
  503. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-CPO4XZkB.js +0 -1
  504. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-C-3lKsKm.js +0 -1
  505. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js +0 -2
  506. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js.map +0 -1
  507. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +0 -2
  508. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-BKEbDkKa.js +0 -1
  509. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-RIi2q1IT.js +0 -1
  510. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-MUHGUsup.js +0 -1
  511. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-DNAroAhk.js +0 -1
  512. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-DrGFMWGq.js +0 -1
  513. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-CyUCAbgG.js +0 -1
  514. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-BjLF548F.js +0 -1
  515. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-GpvEBW3K.js +0 -1
  516. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-OztnTlqr.js +0 -1
  517. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CZ7aiASg.js +0 -1
  518. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-G3G5d2Eo.js +0 -1
  519. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-bq7j1uwx.js +0 -1
  520. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-DkP0-rBO.js +0 -1
  521. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-OITEWczP.js +0 -1
  522. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-CkRX2qVO.js +0 -1
  523. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-Z4zMCScs.js +0 -1
  524. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js +0 -2
  525. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js.map +0 -1
  526. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +0 -2
  527. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis-ecb43dfd3b7b.js +0 -11
  528. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +0 -11
  529. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min-ecb43dfd3b7b.js +0 -11
  530. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +0 -11
  531. package/packages/theme-engine/generated/knobs/v1/motion.json +0 -128
@@ -1,2 +1,2 @@
1
- export * from "./data-grid-CCPYnOuT.js";
2
- export {default} from "./data-grid-CCPYnOuT.js";
1
+ export * from "./data-grid-Dm3rQfQ_.js";
2
+ export {default} from "./data-grid-Dm3rQfQ_.js";
@@ -0,0 +1,2 @@
1
+ import{n as e,r as t,s as n,t as r}from"../chunks/dom-DiTFTWeR.js";import{t as i}from"../chunks/preload-helper-BZ1Pz5am.js";import{o as a,s as o,t as s}from"../chunks/properties-D8pFWF8g.js";import{c,f as l,l as u,n as d,s as f,u as p}from"../chunks/codecs-CQ7olTJL.js";import{a as m,n as ee,t as h}from"../chunks/machine-Do4tL7nc.js";import{n as te}from"../chunks/focus-BvBkrIcj.js";import{n as g,t as ne}from"../chunks/alpine-data-Dvc_bXq6.js";import{i as re,t as _}from"../chunks/capability-anchor-BqejlBjS.js";import{n as ie,t as v}from"../chunks/styles-CX2j92ex.js";import{t as ae}from"../chunks/merge-bindings-BtqW3UgP.js";import{n as y,t as b}from"../chunks/props-change-2xfsIAEN.js";import{t as oe}from"../chunks/dismissable-layer-MzcgNRti.js";import{i as x,n as se,r as ce,t as le}from"../chunks/form-control-DL1Hkox3.js";import{B as S,F as C,I as w,M as T,a as E,d as D,f as O,i as k,m as A,p as j,r as M,s as ue,t as N,u as P}from"../chunks/common-DnEHZCqy.js";var F=null,I=e=>{typeof customElements>`u`||customElements.get(`calendar-date`)||(F??=i(()=>import(`../chunks/cally-B-msaaMx.js`),[]))},de=[`single`,`range`],L=[`enhanced`,`native`],R=ue,fe=[`auto`,`confirm`],pe=[`neutral`,`accent`],z=M,B=[`left`,`right`,`top`,`bottom`],V=S,H=P,me={name:l,value:l,startName:l,endName:l,mode:u(de,`single`),placeholder:l,min:l,max:l,today:l,openTo:l,forceOpenTo:d,months:c.clamp(0,12).default(0),firstDayOfWeek:c.clamp(-1,6).default(0),locale:l,format:l.default(`%Y-%m-%d`),rangeSeparator:l.default(`/`),showOutsideDays:d,showWeekNumbers:d,fixedWeeks:d.default(!0),selectableHeader:d,withToday:d,clearable:d,disabled:d,readonly:d,required:d,invalid:d,side:u(w,`bottom`),align:u(N,`start`),offset:c.clamp(-100,100).default(0),gap:c.clamp(0,50).default(4),implementation:u(L,`enhanced`),variant:u(R,`outline`),color:u(pe,`neutral`),radius:u(z,`md`),surface:u(V,`+2`),elevation:u(H,`3`),close:u(fe,`auto`),presets:f.array([]),presetsPosition:u(B,`left`),preset:l,presetName:l,triggerClass:l,inputClass:l,popoverClass:l,calendarClass:l,presetsClass:l,presetClass:l,class:l,form:l};u(R,`outline`),u(z,`md`),u(B,`left`);var U=e=>({}),he=[m({name:`opening`,state:`disclosure.opening`,project:U,onDone:`OPENING_DONE`,onError:`OPENING_ERROR`,sends:{close:()=>({type:`CLOSE`})}}),m({name:`closing`,state:`disclosure.closing`,project:U,onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`,sends:{open:()=>({type:`OPEN`})}}),m({name:`parsing`,state:`feature.parsing`,project:e=>({input:e.context.input.value}),onDone:`PARSING_DONE`,onError:`PARSING_ERROR`,sends:{select:e=>({type:`SELECT`,value:e,source:`input`}),clear:()=>({type:`CLEAR`})}}),m({name:`selecting`,state:`feature.selecting`,project:e=>({value:e.context.selection.value,previousValue:e.context.selection.previousValue,source:e.context.selection.source,preset:e.context.preset.value}),onDone:`SELECTING_DONE`,onError:`SELECTING_ERROR`,sends:{select:e=>({type:`SELECT`,value:e,source:`input`}),clear:()=>({type:`CLEAR`}),close:()=>({type:`CLOSE`})}})],W=e=>y(e)?.props??null,ge=e=>e.disabled||e.readonly,G=(e,t)=>typeof e[t]==`string`?e[t]:``,_e=e=>{let t=G(e,`source`);return t===`calendar`||t===`input`||t===`preset`||t===`today`||t===`props`?t:`clear`},ve=({event:e})=>{let t=W(e);return!!(t&&(b(e,`disabled`)&&t.disabled||b(e,`readonly`)&&t.readonly))},ye=({props:e})=>e.close===`auto`,K=(e,t,n)=>({...e,selection:{value:n,pendingValue:n,previousValue:e.selection.value,source:_e(t)},input:{value:G(t,`input`),valid:!0},preset:{value:G(t,`preset`)}}),be=({props:e,context:t,effects:n})=>h({type:`parallel`,states:{disclosure:{initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`}}},opening:{tags:[`visible`,`expanded`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},SELECT:{target:`closing`,guard:ye,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:ve,effects:`prepareClose`}}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,effects:`prepareClose`},TOGGLE:{target:`closing`,effects:`prepareClose`},SELECT:{target:`closing`,guard:ye,effects:`prepareClose`},APPLY:{target:`closing`,effects:`prepareClose`},PROPS_CHANGED:{target:`closing`,guard:ve,effects:`prepareClose`}}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,reduce:`beginOpen`,effects:`prepareOpen`}}}}},feature:{initial:`idle`,states:{idle:{on:{INPUT:{target:`editing`,reduce:`setInput`,effects:`syncInput`},PENDING:{target:`editing`,reduce:`setPending`,effects:`syncPending`},PARSE:{target:`parsing`,reduce:`setInvalidInput`,effects:`markInvalid`},SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{reduce:`replaceProps`,effects:`syncProps`}],PRESETS_CHANGED:{effects:`syncPresets`}}},editing:{tags:[`editing`],on:{INPUT:{target:`editing`,reduce:`setInput`,effects:`syncInput`},PENDING:{target:`editing`,reduce:`setPending`,effects:`syncPending`},PARSE:{target:`parsing`,reduce:`setInvalidInput`,effects:`markInvalid`},SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},CANCEL:{target:`idle`,reduce:`resetDraft`,effects:`syncPending`},CLOSE:{target:`idle`,reduce:`resetDraft`,effects:`syncPending`},PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{reduce:`replaceProps`,effects:`syncProps`}],PRESETS_CHANGED:{effects:`syncPresets`}}},parsing:{tags:[`editing`,`parsing`],on:{SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},INPUT:{target:`editing`,reduce:`setInput`,effects:`syncInput`},PARSING_DONE:`editing`,PARSING_ERROR:`editing`,CLOSE:{target:`idle`,reduce:`resetDraft`,effects:`syncPending`},PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{target:`editing`,reduce:`replaceProps`,effects:`syncProps`}]}},selecting:{tags:[`selecting`],on:{SELECT:{target:`selecting`,reduce:`select`,effects:`commitSelection`},CLEAR:{target:`selecting`,reduce:`clear`,effects:`commitSelection`},APPLY:{target:`selecting`,reduce:`apply`,effects:`commitSelection`},SELECTING_DONE:`idle`,SELECTING_ERROR:`idle`,PROPS_CHANGED:[{target:`selecting`,guard:`valueChanged`,reduce:`replaceProps`,effects:`commitSelection`},{reduce:`replaceProps`,effects:`syncProps`}],PRESETS_CHANGED:{effects:`syncPresets`}}}}}}},{context:t,props:e,reducers:{beginOpen:({context:e})=>({context:{...e,selection:{...e.selection,pendingValue:e.selection.value}}}),setInput:({context:e,event:t})=>({context:{...e,input:{value:G(t,`input`),valid:!0}}}),setInvalidInput:({context:e,event:t})=>({context:{...e,input:{value:G(t,`input`),valid:!1}}}),setPending:({context:e,event:t})=>({context:{...e,selection:{...e.selection,pendingValue:G(t,`value`),source:_e(t)},preset:{value:G(t,`preset`)}}}),select:({context:e,event:t})=>({context:K(e,t,G(t,`value`))}),clear:({context:e})=>({context:K(e,{type:`CLEAR`},``)}),apply:({context:e})=>({context:K(e,{type:`SELECT`,source:e.selection.source},e.selection.pendingValue)}),resetDraft:({context:e})=>({context:{...e,selection:{...e.selection,pendingValue:e.selection.value},input:{value:``,valid:!0}}}),replaceProps:({context:e,event:t})=>{let n=W(t);if(n)return b(t,`value`)?{props:n,context:K(e,{type:`PROPS_CHANGED`,source:`props`},n.value)}:{props:n}}},guards:{canOpen:({props:e})=>!ge(e),valueChanged:({event:e})=>b(e,`value`)},effects:{prepareOpen:n.prepareOpen,finishOpen:n.finishOpen,prepareClose:n.prepareClose,finishClose:n.finishClose,syncInput:n.syncInput,syncPending:n.syncPending,markInvalid:n.markInvalid,commitSelection:n.commitSelection,syncProps:n.syncProps,syncPresets:n.syncPresets}}),xe=v({definition:{component:`ui.date-picker`,parts:{root:{base:`relative inline-grid w-full min-w-0`},trigger:{base:[A,k.lg,`text-left`],variants:{radius:E},defaults:{radius:`md`}},customTrigger:{base:[`inline-flex min-h-control-lg min-w-control-lg shrink-0 items-center justify-center gap-control-gap px-2 text-sm outline-none`],variants:{radius:E},defaults:{radius:`md`}},input:{base:[`min-w-0 flex-1 text-sm`,O]},icon:{base:`size-icon shrink-0 text-surface-ink-muted`},action:{base:D},popover:{base:[C,`grid`,`max-h-lg overflow-hidden rounded-overlay-sm`]},panel:{base:`grid min-w-72 max-w-[calc(100vw-2rem)] gap-0 overflow-hidden`,variants:{hasPresets:{true:``,false:``},presetsPosition:{left:``,right:``,top:``,bottom:``}},compounds:[{when:{hasPresets:!0,presetsPosition:`left`},class:`sm:grid-cols-[minmax(9rem,11rem)_auto]`},{when:{hasPresets:!0,presetsPosition:`right`},class:`sm:grid-cols-[auto_minmax(9rem,11rem)]`}],defaults:{hasPresets:!1,presetsPosition:`left`}},calendarWrap:{base:`relative grid size-full place-items-center overflow-x-auto overflow-y-auto p-popover-padding`},calendar:{base:`grid max-w-full gap-2 text-sm`},presets:{base:[`grid content-start gap-1 p-popover-padding`]},preset:{base:T},footer:{base:`flex items-center justify-end gap-2 p-popover-padding`},nativeWrapper:{base:`relative w-full min-w-0`},native:{base:[j,k.lg],variants:{radius:E},defaults:{radius:`md`}}}}}),q=/^\d{4}-\d{2}-\d{2}$/,J=/^\d{4}-\d{2}-\d{2}\/\d{4}-\d{2}-\d{2}$/,Se=/%[Ymd]/g,Ce=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Y=e=>{let t=0,n=``;for(let r of e.matchAll(/[\s/-]+/g))n+=Ce(e.slice(t,r.index)),n+=`(?:\\s|[/-])+`,t=(r.index??0)+r[0].length;return n+Ce(e.slice(t))},we=e=>{let t=[],n=0,r=``;for(let i of e.matchAll(Se)){r+=Y(e.slice(n,i.index));let a=i[0];t.push(a),r+=a===`%Y`?`(\\d{4})`:`(\\d{2})`,n=(i.index??0)+a.length}return r+=Y(e.slice(n)),{source:r,tokens:t}},X=(e,t)=>{let n=Object.fromEntries(t.map((t,n)=>[t,e[n]??``])),r=Number(n[`%Y`]),i=Number(n[`%m`]),a=Number(n[`%d`]);if(!r||!i||!a||new Set(t).size!==3)return null;let o=new Date(Date.UTC(r,i-1,a));return o.getUTCFullYear()!==r||o.getUTCMonth()!==i-1||o.getUTCDate()!==a?null:`${String(r).padStart(4,`0`)}-${String(i).padStart(2,`0`)}-${String(a).padStart(2,`0`)}`},Te=({input:e,format:t,range:n,separator:r})=>{let i=we(t);if(!n){let t=e.trim().match(RegExp(`^${i.source}$`));return t?X(t.slice(1),i.tokens):null}let a=e.trim().match(RegExp(`^${i.source}${Y(r)}${i.source}$`));if(!a)return null;let o=i.tokens.length,s=X(a.slice(1,o+1),i.tokens),c=X(a.slice(o+1),i.tokens);return s&&c&&s<=c?`${s}/${c}`:null},Z=(e,t)=>{if(!q.test(e))return e;let[n=``,r=``,i=``]=e.split(`-`);return t.replaceAll(`%Y`,n).replaceAll(`%m`,r).replaceAll(`%d`,i)},Ee=e=>e.replaceAll(`%Y`,`YYYY`).replaceAll(`%m`,`MM`).replaceAll(`%d`,`DD`),De=({input:e,format:t,separator:n})=>{let r=new Set(`${t.replace(Se,``)}${n}`);return Array.from(e).filter(e=>/[0-9]/.test(e)||/[\s/-]/.test(e)||r.has(e)).join(``)},Oe=({input:e,format:t,range:n,separator:r})=>{let i=t.replaceAll(`%Y`,`9999`).replaceAll(`%m`,`99`).replaceAll(`%d`,`99`),a=n?`${i}${r}${i}`:i,o=e.match(/[0-9]/g)??[],s=0,c=``;for(let e=0;e<a.length;e+=1){let t=a[e]??``;if(t===`9`){let e=o[s];if(e===void 0)break;c+=e,s+=1;continue}s>0&&a.slice(e+1).includes(`9`)&&(c+=t)}return c},ke=({value:e,format:t,range:n,separator:r})=>{if(!e)return``;if(!n)return Z(e,t);if(!J.test(e))return e;let[i=``,a=``]=e.split(`/`);return`${Z(i,t)}${r}${Z(a,t)}`},Ae=(e,t,n)=>(J.test(e)?e.split(`/`):[e]).every(e=>q.test(e)&&(!t||e>=t)&&(!n||e<=n)),je=100,Me=10,Q=e=>{let[t=``,n=``]=e.split(`/`);return[t,n]},Ne=()=>new Date().getFullYear(),Pe=()=>`${Ne()-je}-01-01`,Fe=()=>`${Ne()+Me}-12-31`,$=()=>new Date().toISOString().slice(0,10),Ie=(e,t)=>q.test(e)?new Intl.DateTimeFormat(t||void 0,{month:`long`,timeZone:`UTC`,year:`numeric`}).format(new Date(`${e}T00:00:00.000Z`)):``,Le=t=>({value:t.dataset.value??``,label:t.dataset.label??t.textContent?.trim()??``,start:t.dataset.start??``,end:t.dataset.end??``,disabled:e({value:t.dataset.disabled})}),Re=()=>{let e=null,i=``,c=``,l=null,u,d=``,f=``,m=``,h=``,g=!1,_,v=()=>{_!==void 0&&(E().style.visibility=_,_=void 0)},y=()=>{if(!e)throw Error(`Date picker has not been initialized.`);return e},b=()=>U.getCommittedSnapshot().props,S=()=>U.getCommittedSnapshot().context,C=()=>{let e=y().querySelector(`[data-ui-date-picker-trigger]`);if(!e)throw Error(`Date picker requires a trigger.`);return e},w=()=>{let e=y().querySelector(`[data-ui-date-picker-input]`);if(!e)throw Error(`Date picker requires an input.`);return e},T=()=>y().querySelector(`[data-ui-date-picker-toggle]`),E=()=>{let e=y().querySelector(`[data-ui-date-picker-popover]`);if(!e)throw Error(`Date picker requires a popover.`);return e},D=()=>y().querySelector(`[data-ui-date-picker-calendar]`),O=()=>y().querySelector(`[data-ui-date-picker-hidden-inputs]`),k=()=>y().querySelector(`[data-ui-date-picker-preset-inputs]`),A=()=>b().mode===`range`,j=()=>b().months||(A()?2:1),M=()=>{let e=Array.from(y().querySelectorAll(`[data-ui-date-picker-preset]`)).map(Le).filter(e=>e.value&&e.start&&e.end);return e.length?e:b().presets},ue=e=>ke({value:e,format:b().format,range:A(),separator:b().rangeSeparator}),N=e=>{let t=M().find(t=>(A()?`${t.start}/${t.end}`:t.start)===e),n=M().find(e=>e.value===`custom`);return t?.value??(e&&n?`custom`:``)},P=e=>{let t=y().querySelector(`[data-ui-date-picker-calendar-heading]`);if(!t)return;let n=b();t.textContent=Ie(e||Q(S().selection.value||n.openTo||n.today||$())[0],n.locale)},F=()=>{let e=D();if(!e)return;let t=b(),r=S(),i=r.selection.pendingValue;customElements.get(`calendar-date`)&&(e.value=i),e.setAttribute(`value`,i),n({el:e,attr:`tentative`,present:A()&&!!i&&!J.test(i)}),e.setAttribute(`months`,String(j())),e.style.setProperty(`--ui-date-picker-month-columns`,String(j())),e.setAttribute(`min`,t.min||Pe()),e.setAttribute(`max`,t.max||Fe()),t.today?e.setAttribute(`today`,t.today):e.removeAttribute(`today`);let a=t.forceOpenTo?t.openTo:r.selection.value||t.openTo||t.today||$();e.setAttribute(`focused-date`,Q(a)[0]),t.locale?e.setAttribute(`locale`,t.locale):e.removeAttribute(`locale`),t.firstDayOfWeek>=0&&e.setAttribute(`first-day-of-week`,String(t.firstDayOfWeek));let o=!t.selectableHeader&&j()===1;n({el:e,attr:`data-inline-heading`,present:o,value:`true`}),n({el:e,attr:`data-hide-month-heading`,present:t.selectableHeader&&!A()||o,value:`true`}),n({el:e,attr:`data-fixed-weeks`,present:t.fixedWeeks,value:`true`}),n({el:e,attr:`show-outside-days`,present:t.showOutsideDays||t.fixedWeeks}),n({el:e,attr:`show-week-numbers`,present:t.showWeekNumbers})},I=()=>{let e=S().selection.pendingValue||S().selection.value;y().querySelectorAll(`[data-ui-date-picker-preset]`).forEach(t=>{let r=Le(t),i=A()?`${r.start}/${r.end}`:r.start;n({el:t,attr:`data-selected`,present:i===e,value:`true`}),n({el:t,attr:`data-disabled`,present:r.disabled??!1,value:`true`})})},de=()=>{let e=O();if(!e)return;let t=b(),n=S().selection.value;if(!A()){d=x({container:e,currentKey:d,state:{name:t.name,values:n?[n]:[],required:t.required,form:t.form,marker:`data-ui-date-picker-hidden-input`}});return}let[r,i]=Q(n);if(t.startName||t.endName){let n=JSON.stringify({startName:t.startName,endName:t.endName,start:r,end:i,form:t.form});if(n===d)return;e.replaceChildren(),[[t.startName,r],[t.endName,i]].forEach(([n,r])=>{if(!n)return;let i=document.createElement(`input`);i.type=`hidden`,i.name=n,i.value=r??``,i.setAttribute(`data-ui-date-picker-hidden-input`,``),t.form&&i.setAttribute(`form`,t.form),e.append(i)}),d=n;return}d=x({container:e,currentKey:d,state:{name:t.name,values:n?[n]:[],required:t.required,form:t.form,marker:`data-ui-date-picker-hidden-input`}})},L=()=>{let e=k();if(!e)return;let t=b(),n=N(S().selection.value);f=x({container:e,currentKey:f,state:{name:t.presetName,values:n?[n]:[],form:t.form,marker:`data-ui-date-picker-preset-input`}})},R=()=>{let e=b(),t=S(),n=U.hasTag(`visible`),r=U.hasTag(`expanded`),a=C(),o=w(),s=E();a.id=i,s.id=c,s.dataset.state=r?`open`:`closed`,s.hidden=!n,a.dataset.state=r?`open`:`closed`,se({el:a,state:e,value:`true`});let l=T()??a;l.setAttribute(`aria-haspopup`,`dialog`),l.setAttribute(`aria-expanded`,r?`true`:`false`),l.setAttribute(`aria-controls`,c),a instanceof HTMLButtonElement&&(a.disabled=e.disabled);let u=U.hasTag(`editing`)?t.input.value:ue(t.selection.value);ce({input:o,state:{name:``,value:u,disabled:e.disabled,readonly:e.readonly,required:e.required&&e.mode===`single`,invalid:e.invalid||!t.input.valid}}),o.placeholder=W.effectivePlaceholder(),y().querySelectorAll(`[data-ui-date-picker-clear], [data-ui-date-picker-toggle]`).forEach(t=>{t.disabled=e.disabled}),h=u;let d=y().querySelector(`[data-ui-date-picker-live]`);d&&(d.textContent=m)},fe=()=>{let e=y().querySelector(`[data-ui-date-picker-calendar-today]`),t=y().querySelector(`[data-ui-date-picker-today-day]`);if(!e||!t)return;let n=b().today||$(),r=q.test(n)?String(Number(n.slice(-2))):``;t.textContent=r,e.setAttribute(`aria-label`,r?`Go to today, ${n}`:`Go to today`)},pe=()=>{let e=b(),t=E();t.dataset.uiSurface=e.surface,t.dataset.uiElevation=e.elevation},z=()=>{p({el:y(),schema:me,key:`value`,value:S().selection.value}),R(),F(),P(),fe(),pe(),de(),L(),I(),U.hasTag(`visible`)&&l?.sync()},B=()=>{le({container:O(),fallback:y(),marker:`data-ui-date-picker-hidden-input`}),t({el:y(),name:`ui:change`})},V=(e,t,n=``)=>{b().disabled||b().readonly||U.send({type:`SELECT`,value:e,source:t,preset:n})},H=e=>{let t=b(),n=Te({input:e,format:t.format,range:A(),separator:t.rangeSeparator});return n&&Ae(n,t.min,t.max)?n:null},U=ee({schema:me,hooks:he,createMachine:({props:e})=>be({props:e,context:{selection:{value:e.value,pendingValue:e.value,previousValue:e.value,source:`props`},input:{value:``,valid:!0},preset:{value:e.preset}},effects:{prepareOpen:()=>{let e=E();!l?.opened()&&_===void 0&&(_=e.style.visibility,e.style.visibility=`hidden`),e.hidden=!1,l?.open(),z()},finishOpen:()=>{v(),g&&D()?.focus({target:`day`,preventScroll:!0}),g=!1,t({el:y(),name:`ui:open`})},prepareClose:({event:e})=>{g=!1,z(),e.restoreFocus===!0&&te(T()??C(),{showIndicator:!1})},finishClose:()=>{let e=E();l?.close(),v(),e.hidden=!0,z(),t({el:y(),name:`ui:close`})},syncInput:R,syncPending:()=>{R(),F(),I()},markInvalid:()=>{w().setCustomValidity(`Enter a date in ${b().format}`),R(),t({el:y(),name:`ui:invalid`})},commitSelection:()=>{w().setCustomValidity(``);let e=S();m=e.selection.value?A()?`Range selected`:`Date selected`:`Date cleared`,z(),B(),t({el:y(),name:e.selection.value?`ui:select`:`ui:clear`})},syncProps:z,syncPresets:()=>{I(),L()}}}),resolveTransitionElement:({name:e,root:t})=>e===`opening`||e===`closing`?t.querySelector(`[data-ui-date-picker-popover]`):e===`parsing`?t.querySelector(`[data-ui-date-picker-input]`):t}),W;return W={...U,get isOpen(){return U.hasTag(`expanded`)},get isEditing(){return U.hasTag(`editing`)},get value(){return U.getCommittedSnapshot().context.selection.value},get pendingValue(){return U.getCommittedSnapshot().context.selection.pendingValue},get preset(){return N(U.getCommittedSnapshot().context.selection.value)},get root(){return ae({inputs:[ie({part:xe.parts.root,props:U.getCommittedSnapshot().props,className:U.getCommittedSnapshot().props.class}),{"data-ui-date-picker":``,":data-state":()=>W.isOpen?`open`:`closed`}]})},effectivePlaceholder(){let e=U.getCommittedSnapshot().props;if(e.placeholder)return e.placeholder;let t=Ee(e.format);return e.mode===`range`?`${t}${e.rangeSeparator}${t}`:t},open(e){e?.preventDefault(),g=e instanceof KeyboardEvent,U.send(`OPEN`)},close(e){e?.preventDefault(),U.send({type:`CLOSE`,restoreFocus:e instanceof KeyboardEvent})},toggle(e){e?.preventDefault(),U.send(`TOGGLE`)},select(e,t){t?.preventDefault(),Ae(e,b().min,b().max)&&(A()?J.test(e):q.test(e))&&V(e,`input`)},selectPreset(e,t){if(t?.preventDefault(),b().disabled||b().readonly)return;let n=M().find(t=>t.value===e);if(!n||n.disabled)return;let r=A()?`${n.start}/${n.end}`:n.start;b().close===`confirm`?U.send({type:`PENDING`,value:r,source:`preset`,preset:e}):V(r,`preset`,e)},selectToday(e){if(e?.preventDefault(),b().disabled||b().readonly)return;let t=b().today||$(),n=A()?`${t}/${t}`:t;b().close===`confirm`?U.send({type:`PENDING`,value:n,source:`today`}):V(n,`today`)},clear(e){e?.preventDefault(),!(b().disabled||b().readonly)&&U.send(`CLEAR`)},cancel(e){e?.preventDefault(),U.send(`CANCEL`),U.send(`CLOSE`)},init(){u=ne(this),e=this.$el,i=this.$id(`date-picker-trigger`),c=this.$id(`date-picker-popover`),U.connect(this.$el,this.snapshot),l=re({reference:C,floating:E,position:()=>b().side,align:()=>b().align,gap:()=>b().gap,offset:()=>b().offset,matchReferenceWidth:!1}),u.add(U.onTransition(`opening`,e=>{let t=()=>{if(!e.signal.aborted&&(v(),!y().hasAttribute(`x-ui-transition:opening`)))return s(e,a(E()),{target:E(),role:`feedback`})},n=_===void 0?null:l?.positioned();return n?n.then(t):t()})),u.add(U.onTransition(`closing`,e=>{let t=()=>{if(!e.signal.aborted&&(v(),!y().hasAttribute(`x-ui-transition:closing`)))return s(e,o,{target:E(),role:`feedbackExit`})},n=_===void 0?null:l?.positioned();return n?n.then(t):t()}));let t=C(),n=w(),d=E();r({target:t,event:`click`,cleanup:u,handler:e=>{let t=e.target;t instanceof Element&&t.closest(`[data-ui-date-picker-clear]`)?W.clear(e):W.toggle(e)}}),r({target:t,event:`keydown`,cleanup:u,handler:e=>{let t=e;(t.key===`ArrowDown`||t.key===`Enter`||t.key===` `)&&!W.isOpen?W.open(t):t.key===`Escape`&&W.isOpen&&W.close(t)}}),r({target:y(),event:`keydown`,cleanup:u,handler:e=>{let t=e;t.key===`Escape`&&W.isOpen&&W.close(t)}}),r({target:n,event:`input`,cleanup:u,handler:()=>{let e=n.selectionStart??n.value.length,t=(n.value.slice(0,e).match(/[0-9]/g)??[]).length,r=De({input:n.value,format:b().format,separator:b().rangeSeparator});if(h.length-r.length!==1&&(r=Oe({input:r,format:b().format,range:A(),separator:b().rangeSeparator})),n.value!==r){n.value=r;let e=0,i=r.length;for(let n=0;n<r.length;n+=1)if(/[0-9]/.test(r[n]??``)&&(e+=1),e===t){for(i=n+1;i<r.length&&!/[0-9]/.test(r[i]??``);)i+=1;break}n.setSelectionRange(i,i)}h=r,U.send({type:`INPUT`,input:r});let i=H(r);i&&V(i,`input`)}}),r({target:n,event:`change`,cleanup:u,handler:()=>{let e=H(n.value);e?V(e,`input`):n.value.trim()?U.send({type:`PARSE`,input:n.value}):U.send(`CLEAR`)}}),r({target:d,event:`pointerdown`,cleanup:u,handler:e=>e.stopPropagation()}),r({target:d,event:`click`,cleanup:u,handler:e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-ui-date-picker-preset]`);n?W.selectPreset(n.dataset.value??``,e):t.closest(`[data-ui-date-picker-clear]`)?W.clear(e):t.closest(`[data-ui-date-picker-cancel]`)?W.cancel(e):t.closest(`[data-ui-date-picker-apply]`)?U.send(`APPLY`):t.closest(`[data-ui-date-picker-today]`)&&W.selectToday(e)}});let f=D();f&&(customElements.whenDefined(`calendar-date`).then(()=>{e&&F()}),r({target:f,event:`change`,cleanup:u,handler:()=>{let e=f.value;A()&&!J.test(e)?(m=`Start date selected`,U.send({type:`PENDING`,value:e,source:`calendar`})):b().close===`confirm`?U.send({type:`PENDING`,value:e,source:`calendar`}):V(e,`calendar`)}}),r({target:f,event:`focusday`,cleanup:u,handler:e=>{let t=e.detail;t instanceof Date&&P(t.toISOString().slice(0,10))}})),u.add(oe({isEnabled:()=>W.isOpen,roots:()=>[y(),d],onDismiss:()=>W.close()}));let p=new MutationObserver(()=>U.send(`PRESETS_CHANGED`));p.observe(y(),{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`data-value`,`data-start`,`data-end`,`data-disabled`]}),u.add(()=>p.disconnect()),z()},destroy(){l?.destroy(),l=null,U.disconnect(),v(),e=null}},W},ze=g(`UiDatePicker`,Re),Be=new WeakSet,Ve=e=>{Be.has(e)||(Be.add(e),_(e),I(e),ze(e))};export{Re as UiDatePicker,Ve as default,Ve as registerDatePicker};
2
+ //# sourceMappingURL=date-picker-CtTM4Gf6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../../../../../client/src/capabilities/calendar.ts","../../../../../../../../client/src/components/date-picker/contract.ts","../../../../../../../../client/src/components/date-picker/machine.ts","../../../../../../../../client/src/components/date-picker/styles.ts","../../../../../../../../client/src/components/date-picker/value.ts","../../../../../../../../client/src/components/date-picker/index.ts","../../../../../../../../client/src/components/date-picker/entry.generated.ts"],"sourcesContent":["import type {Alpine as AlpineType} from 'alpinejs';\n\nlet registration: Promise<unknown> | null = null;\n\nconst registerCalendarCapability = (_AlpineInstance: AlpineType): void => {\n if (typeof customElements === 'undefined' || customElements.get('calendar-date')) return;\n registration ??= import('cally');\n};\n\nexport {registerCalendarCapability};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n CONTROL_VARIANTS,\n ELEVATION_REFERENCES,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ControlVariant,\n type ElevationReference,\n type Position,\n type SurfaceReference,\n} from '../common';\n\nconst DATE_PICKER_MODES = ['single', 'range'] as const;\nconst DATE_PICKER_IMPLEMENTATIONS = ['enhanced', 'native'] as const;\nconst DATE_PICKER_VARIANTS = CONTROL_VARIANTS;\nconst DATE_PICKER_CLOSE = ['auto', 'confirm'] as const;\nconst DATE_PICKER_COLORS = ['neutral', 'accent'] as const;\nconst DATE_PICKER_RADII = COMPONENT_RADII;\nconst DATE_PICKER_PRESETS_POSITIONS = ['left', 'right', 'top', 'bottom'] as const;\nconst DATE_PICKER_SURFACES = SURFACE_REFERENCES;\nconst DATE_PICKER_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype DatePickerMode = typeof DATE_PICKER_MODES[number];\ntype DatePickerImplementation = typeof DATE_PICKER_IMPLEMENTATIONS[number];\ntype DatePickerVariant = ControlVariant;\ntype DatePickerClose = typeof DATE_PICKER_CLOSE[number];\ntype DatePickerColor = typeof DATE_PICKER_COLORS[number];\ntype DatePickerRadius = ComponentRadius;\ntype DatePickerPresetsPosition = typeof DATE_PICKER_PRESETS_POSITIONS[number];\ntype DatePickerSide = Position;\ntype DatePickerAlign = Alignment;\ntype DatePickerSurface = SurfaceReference;\ntype DatePickerElevation = ElevationReference;\n\ntype DatePickerPreset = {\n value: string;\n label: string;\n start: string;\n end: string;\n disabled?: boolean;\n};\n\nconst datePickerSchema = {\n name: string,\n value: string,\n startName: string,\n endName: string,\n mode: oneOf(DATE_PICKER_MODES, 'single' as DatePickerMode),\n placeholder: string,\n min: string,\n max: string,\n today: string,\n openTo: string,\n forceOpenTo: bool,\n months: number.clamp(0, 12).default(0),\n firstDayOfWeek: number.clamp(-1, 6).default(0),\n locale: string,\n format: string.default('%Y-%m-%d'),\n rangeSeparator: string.default('/'),\n showOutsideDays: bool,\n showWeekNumbers: bool,\n fixedWeeks: bool.default(true),\n selectableHeader: bool,\n withToday: bool,\n clearable: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n side: oneOf(POSITIONS, 'bottom' as DatePickerSide),\n align: oneOf(ALIGNMENTS, 'start' as DatePickerAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n implementation: oneOf(DATE_PICKER_IMPLEMENTATIONS, 'enhanced' as DatePickerImplementation),\n variant: oneOf(DATE_PICKER_VARIANTS, 'outline' as DatePickerVariant),\n color: oneOf(DATE_PICKER_COLORS, 'neutral' as DatePickerColor),\n radius: oneOf(DATE_PICKER_RADII, 'md' as DatePickerRadius),\n surface: oneOf(DATE_PICKER_SURFACES, '+2' as DatePickerSurface),\n elevation: oneOf(DATE_PICKER_ELEVATIONS, '3' as DatePickerElevation),\n close: oneOf(DATE_PICKER_CLOSE, 'auto' as DatePickerClose),\n presets: json.array<DatePickerPreset>([]),\n presetsPosition: oneOf(DATE_PICKER_PRESETS_POSITIONS, 'left' as DatePickerPresetsPosition),\n preset: string,\n presetName: string,\n triggerClass: string,\n inputClass: string,\n popoverClass: string,\n calendarClass: string,\n presetsClass: string,\n presetClass: string,\n class: string,\n form: string,\n};\n\nconst datePickerPresetSchema = {\n value: string,\n label: string,\n start: string,\n end: string,\n disabled: bool,\n class: string,\n};\n\nconst datePickerTriggerSchema = {\n variant: oneOf(DATE_PICKER_VARIANTS, 'outline' as DatePickerVariant),\n radius: oneOf(DATE_PICKER_RADII, 'md' as DatePickerRadius),\n class: string,\n};\n\nconst datePickerPresetsSchema = {\n position: oneOf(DATE_PICKER_PRESETS_POSITIONS, 'left' as DatePickerPresetsPosition),\n class: string,\n};\n\ntype DatePickerProps = SchemaToProps<typeof datePickerSchema>;\ntype DatePickerPresetProps = SchemaToProps<typeof datePickerPresetSchema>;\ntype DatePickerPresetsProps = SchemaToProps<typeof datePickerPresetsSchema>;\ntype DatePickerTriggerProps = SchemaToProps<typeof datePickerTriggerSchema>;\n\nexport {\n DATE_PICKER_CLOSE,\n DATE_PICKER_COLORS,\n DATE_PICKER_ELEVATIONS,\n DATE_PICKER_IMPLEMENTATIONS,\n DATE_PICKER_MODES,\n DATE_PICKER_PRESETS_POSITIONS,\n DATE_PICKER_RADII,\n DATE_PICKER_SURFACES,\n DATE_PICKER_VARIANTS,\n datePickerPresetSchema,\n datePickerPresetsSchema,\n datePickerSchema,\n datePickerTriggerSchema,\n};\nexport type {\n DatePickerAlign,\n DatePickerClose,\n DatePickerColor,\n DatePickerElevation,\n DatePickerImplementation,\n DatePickerMode,\n DatePickerPreset,\n DatePickerPresetProps,\n DatePickerPresetsPosition,\n DatePickerPresetsProps,\n DatePickerProps,\n DatePickerRadius,\n DatePickerSide,\n DatePickerSurface,\n DatePickerTriggerProps,\n DatePickerVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n type MachineSnapshot,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {DatePickerProps} from './contract';\n\ntype SelectionSource = 'calendar' | 'input' | 'preset' | 'today' | 'clear' | 'props';\n\ntype DatePickerContext = {\n selection: {\n value: string;\n pendingValue: string;\n previousValue: string;\n source: SelectionSource;\n };\n input: {value: string; valid: boolean};\n preset: {value: string};\n};\n\ntype DatePickerMachineEffects = {\n prepareOpen(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n finishOpen(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n prepareClose(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n finishClose(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncInput(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncPending(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n markInvalid(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n commitSelection(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncProps(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n syncPresets(scope: MachineScope<DatePickerContext, DatePickerProps>): void;\n};\n\ntype CreateDatePickerMachineOptions = {\n props: DatePickerProps;\n context: DatePickerContext;\n effects: DatePickerMachineEffects;\n};\n\nconst transitionData = (_snapshot: MachineSnapshot<DatePickerContext, DatePickerProps>): Record<string, never> => ({});\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'disclosure.opening',\n project: transitionData,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {close: () => ({type: 'CLOSE'})},\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'disclosure.closing',\n project: transitionData,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n sends: {open: () => ({type: 'OPEN'})},\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, Record<string, never>, 'closing'>);\n\nconst parsingHook = defineHook({\n name: 'parsing',\n state: 'feature.parsing',\n project: (snapshot) => ({input: snapshot.context.input.value}),\n onDone: 'PARSING_DONE',\n onError: 'PARSING_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value, source: 'input'}),\n clear: () => ({type: 'CLEAR'}),\n },\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, {input: string}, 'parsing'>);\n\nconst selectingHook = defineHook({\n name: 'selecting',\n state: 'feature.selecting',\n project: (snapshot) => ({\n value: snapshot.context.selection.value,\n previousValue: snapshot.context.selection.previousValue,\n source: snapshot.context.selection.source,\n preset: snapshot.context.preset.value,\n }),\n onDone: 'SELECTING_DONE',\n onError: 'SELECTING_ERROR',\n sends: {\n select: (value: string) => ({type: 'SELECT', value, source: 'input'}),\n clear: () => ({type: 'CLEAR'}),\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<DatePickerContext, DatePickerProps, {\n value: string;\n previousValue: string;\n source: SelectionSource;\n preset: string;\n}, 'selecting'>);\n\nconst datePickerHooks = [openingHook, closingHook, parsingHook, selectingHook] as const;\n\nconst nextProps = (event: MachineEventObject): DatePickerProps | null => propsChangedEvent<DatePickerProps>(event)?.props ?? null;\nconst blocked = (props: DatePickerProps): boolean => props.disabled || props.readonly;\nconst eventString = (event: MachineEventObject, key: string): string => (\n typeof event[key] === 'string' ? event[key] : ''\n);\nconst sourceFrom = (event: MachineEventObject): SelectionSource => {\n const source = eventString(event, 'source');\n return source === 'calendar' || source === 'input' || source === 'preset' || source === 'today' || source === 'props'\n ? source\n : 'clear';\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<DatePickerContext, DatePickerProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<DatePickerProps>(event, 'disabled') && props.disabled)\n || (propsChanged<DatePickerProps>(event, 'readonly') && props.readonly)\n ));\n};\n\nconst shouldAutoClose = ({props}: MachineScope<DatePickerContext, DatePickerProps>): boolean => props.close === 'auto';\n\nconst selectionUpdate = (\n context: DatePickerContext,\n event: MachineEventObject,\n value: string,\n): DatePickerContext => ({\n ...context,\n selection: {\n value,\n pendingValue: value,\n previousValue: context.selection.value,\n source: sourceFrom(event),\n },\n input: {value: eventString(event, 'input'), valid: true},\n preset: {value: eventString(event, 'preset')},\n});\n\nconst createDatePickerMachine = ({\n props,\n context,\n effects,\n}: CreateDatePickerMachineOptions): Machine<DatePickerContext, DatePickerProps> => createMachine({\n type: 'parallel',\n states: {\n disclosure: {\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: shouldAutoClose, effects: 'prepareClose'},\n APPLY: {target: 'closing', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: shouldAutoClose, effects: 'prepareClose'},\n APPLY: {target: 'closing', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', reduce: 'beginOpen', effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n states: {\n idle: {\n on: {\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PENDING: {target: 'editing', reduce: 'setPending', effects: 'syncPending'},\n PARSE: {target: 'parsing', reduce: 'setInvalidInput', effects: 'markInvalid'},\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n editing: {\n tags: ['editing'],\n on: {\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PENDING: {target: 'editing', reduce: 'setPending', effects: 'syncPending'},\n PARSE: {target: 'parsing', reduce: 'setInvalidInput', effects: 'markInvalid'},\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n CANCEL: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n CLOSE: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n parsing: {\n tags: ['editing', 'parsing'],\n on: {\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n INPUT: {target: 'editing', reduce: 'setInput', effects: 'syncInput'},\n PARSING_DONE: 'editing',\n PARSING_ERROR: 'editing',\n CLOSE: {target: 'idle', reduce: 'resetDraft', effects: 'syncPending'},\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {target: 'editing', reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n selecting: {\n tags: ['selecting'],\n on: {\n SELECT: {target: 'selecting', reduce: 'select', effects: 'commitSelection'},\n CLEAR: {target: 'selecting', reduce: 'clear', effects: 'commitSelection'},\n APPLY: {target: 'selecting', reduce: 'apply', effects: 'commitSelection'},\n SELECTING_DONE: 'idle',\n SELECTING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'selecting', guard: 'valueChanged', reduce: 'replaceProps', effects: 'commitSelection'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n PRESETS_CHANGED: {effects: 'syncPresets'},\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n beginOpen: ({context: current}) => ({context: {\n ...current,\n selection: {...current.selection, pendingValue: current.selection.value},\n }}),\n setInput: ({context: current, event}) => ({context: {\n ...current,\n input: {value: eventString(event, 'input'), valid: true},\n }}),\n setInvalidInput: ({context: current, event}) => ({context: {\n ...current,\n input: {value: eventString(event, 'input'), valid: false},\n }}),\n setPending: ({context: current, event}) => ({context: {\n ...current,\n selection: {\n ...current.selection,\n pendingValue: eventString(event, 'value'),\n source: sourceFrom(event),\n },\n preset: {value: eventString(event, 'preset')},\n }}),\n select: ({context: current, event}) => ({context: selectionUpdate(\n current,\n event,\n eventString(event, 'value'),\n )}),\n clear: ({context: current}) => ({context: selectionUpdate(current, {type: 'CLEAR'}, '')}),\n apply: ({context: current}) => ({context: selectionUpdate(\n current,\n {type: 'SELECT', source: current.selection.source},\n current.selection.pendingValue,\n )}),\n resetDraft: ({context: current}) => ({context: {\n ...current,\n selection: {...current.selection, pendingValue: current.selection.value},\n input: {value: '', valid: true},\n }}),\n replaceProps: ({context: current, event}) => {\n const next = nextProps(event);\n if (!next) return undefined;\n if (!propsChanged<DatePickerProps>(event, 'value')) return {props: next};\n return {\n props: next,\n context: selectionUpdate(current, {type: 'PROPS_CHANGED', source: 'props'}, next.value),\n };\n },\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n valueChanged: ({event}) => propsChanged<DatePickerProps>(event, 'value'),\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n syncInput: effects.syncInput,\n syncPending: effects.syncPending,\n markInvalid: effects.markInvalid,\n commitSelection: effects.commitSelection,\n syncProps: effects.syncProps,\n syncPresets: effects.syncPresets,\n },\n});\n\nexport {createDatePickerMachine, datePickerHooks};\nexport type {\n CreateDatePickerMachineOptions,\n DatePickerContext,\n DatePickerMachineEffects,\n SelectionSource,\n};\n","import {defineStyles} from '../../runtime';\nimport {\n CONTROL_MIN_SIZE_CLASSES,\n CONTROL_RADIUS_CLASSES,\n FIELD_CONTROL_ACTION_CLASSES,\n FIELD_CONTROL_INPUT_CLASSES,\n FIELD_CONTROL_NATIVE_CLASSES,\n FIELD_CONTROL_ROOT_CLASSES,\n OPTION_ITEM_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst datePickerStyles = defineStyles({definition: {\n component: 'ui.date-picker',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n trigger: {\n base: [\n FIELD_CONTROL_ROOT_CLASSES,\n CONTROL_MIN_SIZE_CLASSES.lg,\n 'text-left',\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n customTrigger: {\n base: [\n 'inline-flex min-h-control-lg min-w-control-lg shrink-0 items-center justify-center gap-control-gap px-2 text-sm outline-none',\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n input: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n icon: {\n base: 'size-icon shrink-0 text-surface-ink-muted',\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'grid',\n 'max-h-lg overflow-hidden rounded-overlay-sm',\n ],\n },\n panel: {\n base: 'grid min-w-72 max-w-[calc(100vw-2rem)] gap-0 overflow-hidden',\n variants: {\n hasPresets: {\n true: '',\n false: '',\n },\n presetsPosition: {\n left: '',\n right: '',\n top: '',\n bottom: '',\n },\n },\n compounds: [\n {when: {hasPresets: true, presetsPosition: 'left'}, class: 'sm:grid-cols-[minmax(9rem,11rem)_auto]'},\n {when: {hasPresets: true, presetsPosition: 'right'}, class: 'sm:grid-cols-[auto_minmax(9rem,11rem)]'},\n ],\n defaults: {\n hasPresets: false,\n presetsPosition: 'left',\n },\n },\n calendarWrap: {\n base: 'relative grid size-full place-items-center overflow-x-auto overflow-y-auto p-popover-padding',\n },\n calendar: {\n base: 'grid max-w-full gap-2 text-sm',\n },\n presets: {\n base: [\n 'grid content-start gap-1 p-popover-padding',\n ],\n },\n preset: {\n base: OPTION_ITEM_CLASSES,\n },\n footer: {\n base: 'flex items-center justify-end gap-2 p-popover-padding',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n CONTROL_MIN_SIZE_CLASSES.lg,\n ],\n variants: {\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n radius: 'md',\n },\n },\n },\n}});\n\nexport {datePickerStyles};\n\nexport const styles = [datePickerStyles] as const;\n","type DateFormatToken = '%Y' | '%m' | '%d';\n\ntype CompiledFormat = {\n source: string;\n tokens: DateFormatToken[];\n};\n\nconst ISO_DATE = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst ISO_RANGE = /^\\d{4}-\\d{2}-\\d{2}\\/\\d{4}-\\d{2}-\\d{2}$/;\nconst TOKEN_PATTERN = /%[Ymd]/g;\n\nconst escapeRegex = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst compileLiteral = (value: string): string => {\n let cursor = 0;\n let source = '';\n for (const match of value.matchAll(/[\\s/-]+/g)) {\n source += escapeRegex(value.slice(cursor, match.index));\n source += '(?:\\\\s|[/-])+';\n cursor = (match.index ?? 0) + match[0].length;\n }\n return source + escapeRegex(value.slice(cursor));\n};\n\nconst compileFormat = (format: string): CompiledFormat => {\n const tokens: DateFormatToken[] = [];\n let cursor = 0;\n let source = '';\n for (const match of format.matchAll(TOKEN_PATTERN)) {\n source += compileLiteral(format.slice(cursor, match.index));\n const token = match[0] as DateFormatToken;\n tokens.push(token);\n source += token === '%Y' ? '(\\\\d{4})' : '(\\\\d{2})';\n cursor = (match.index ?? 0) + token.length;\n }\n source += compileLiteral(format.slice(cursor));\n return {source, tokens};\n};\n\nconst isoFromGroups = (groups: string[], tokens: DateFormatToken[]): string | null => {\n const values = Object.fromEntries(tokens.map((token, index) => [token, groups[index] ?? '']));\n const year = Number(values['%Y']);\n const month = Number(values['%m']);\n const day = Number(values['%d']);\n if (!year || !month || !day || new Set(tokens).size !== 3) return null;\n const date = new Date(Date.UTC(year, month - 1, day));\n if (date.getUTCFullYear() !== year || date.getUTCMonth() !== month - 1 || date.getUTCDate() !== day) return null;\n return `${String(year).padStart(4, '0')}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n};\n\nconst parseDateValue = ({\n input,\n format,\n range,\n separator,\n}: {\n input: string;\n format: string;\n range: boolean;\n separator: string;\n}): string | null => {\n const compiled = compileFormat(format);\n if (!range) {\n const match = input.trim().match(new RegExp(`^${compiled.source}$`));\n return match ? isoFromGroups(match.slice(1), compiled.tokens) : null;\n }\n const match = input.trim().match(new RegExp(\n `^${compiled.source}${compileLiteral(separator)}${compiled.source}$`,\n ));\n if (!match) return null;\n const width = compiled.tokens.length;\n const start = isoFromGroups(match.slice(1, width + 1), compiled.tokens);\n const end = isoFromGroups(match.slice(width + 1), compiled.tokens);\n return start && end && start <= end ? `${start}/${end}` : null;\n};\n\nconst formatIsoDate = (value: string, format: string): string => {\n if (!ISO_DATE.test(value)) return value;\n const [year = '', month = '', day = ''] = value.split('-');\n return format.replaceAll('%Y', year).replaceAll('%m', month).replaceAll('%d', day);\n};\n\nconst formatDatePlaceholder = (format: string): string => format\n .replaceAll('%Y', 'YYYY')\n .replaceAll('%m', 'MM')\n .replaceAll('%d', 'DD');\n\nconst sanitizeDateInput = ({\n input,\n format,\n separator,\n}: {\n input: string;\n format: string;\n separator: string;\n}): string => {\n const configuredLiterals = new Set(`${format.replace(TOKEN_PATTERN, '')}${separator}`);\n return Array.from(input).filter((character) => (\n /[0-9]/.test(character)\n || /[\\s/-]/.test(character)\n || configuredLiterals.has(character)\n )).join('');\n};\n\nconst maskDateInput = ({\n input,\n format,\n range,\n separator,\n}: {\n input: string;\n format: string;\n range: boolean;\n separator: string;\n}): string => {\n const endpointMask = format\n .replaceAll('%Y', '9999')\n .replaceAll('%m', '99')\n .replaceAll('%d', '99');\n const mask = range ? `${endpointMask}${separator}${endpointMask}` : endpointMask;\n const digits = input.match(/[0-9]/g) ?? [];\n let digitIndex = 0;\n let output = '';\n\n for (let index = 0; index < mask.length; index += 1) {\n const character = mask[index] ?? '';\n if (character === '9') {\n const digit = digits[digitIndex];\n if (digit === undefined) break;\n output += digit;\n digitIndex += 1;\n continue;\n }\n if (digitIndex > 0 && mask.slice(index + 1).includes('9')) output += character;\n }\n return output;\n};\n\nconst formatDateValue = ({\n value,\n format,\n range,\n separator,\n}: {\n value: string;\n format: string;\n range: boolean;\n separator: string;\n}): string => {\n if (!value) return '';\n if (!range) return formatIsoDate(value, format);\n if (!ISO_RANGE.test(value)) return value;\n const [start = '', end = ''] = value.split('/');\n return `${formatIsoDate(start, format)}${separator}${formatIsoDate(end, format)}`;\n};\n\nconst withinDateBounds = (value: string, min: string, max: string): boolean => {\n const dates = ISO_RANGE.test(value) ? value.split('/') : [value];\n return dates.every((date) => ISO_DATE.test(date) && (!min || date >= min) && (!max || date <= max));\n};\n\nexport {\n formatDatePlaceholder,\n formatDateValue,\n ISO_DATE,\n ISO_RANGE,\n maskDateInput,\n parseDateValue,\n sanitizeDateInput,\n withinDateBounds,\n};\n","import type Alpine from 'alpinejs';\nimport {animateProperties} from '@client/motion/properties';\nimport {anchoredEntrance, anchoredExit} from '@client/motion/recipe';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n focusElement,\n type MachineSnapshot,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {createAnchoredPopoverSurface, type AnchoredPopoverSurface} from '@client/runtime/anchored-popover';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {\n dispatchNativeControlChange,\n syncControlPresence,\n syncNativeControl,\n syncRepeatedHiddenInputs,\n} from '@client/runtime/form-control';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, asBool, dispatch, setPresence} from '@client/utils';\nimport {datePickerSchema, type DatePickerPreset, type DatePickerProps} from './contract';\nimport {\n createDatePickerMachine,\n type DatePickerContext,\n datePickerHooks,\n type SelectionSource,\n} from './machine';\nimport {datePickerStyles} from './styles';\nimport {\n formatDatePlaceholder,\n formatDateValue,\n ISO_DATE,\n ISO_RANGE,\n maskDateInput,\n parseDateValue,\n sanitizeDateInput,\n withinDateBounds,\n} from './value';\n\ntype DatePickerTransitionName = (typeof datePickerHooks)[number]['name'];\ntype DatePickerTransition<TName extends DatePickerTransitionName = DatePickerTransitionName> = TransitionForHook<\n Extract<(typeof datePickerHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype CalendarElement = HTMLElement & {\n value: string;\n focus(options?: FocusOptions & {target?: 'day' | 'next' | 'previous'}): void;\n};\n\ntype PopoverElement = HTMLElement & {showPopover(): void; hidePopover(): void};\n\n/**\n * Public Alpine API for `ui.datePicker`.\n *\n * @public\n */\ninterface UiDatePickerApi {\n /** Whether the picker is opening or fully open. */\n readonly isOpen: boolean;\n /** Whether the user is editing an uncommitted value. */\n readonly isEditing: boolean;\n /** Canonical ISO date or ISO date range. */\n readonly value: string;\n /** Canonical value currently staged in confirm mode. */\n readonly pendingValue: string;\n /** Identifier of the selected preset, when one matches. */\n readonly preset: string;\n /** Opens the calendar unless the picker is disabled or readonly. */\n open(event?: Event): void;\n /** Closes the calendar and restores focus after keyboard dismissal. */\n close(event?: Event): void;\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n /** Selects a canonical ISO date or ISO range. */\n select(value: string, event?: Event): void;\n /** Selects the preset identified by its stable value. */\n selectPreset(value: string, event?: Event): void;\n /** Selects the configured today value. */\n selectToday(event?: Event): void;\n /** Clears the committed date, preset, and submitted controls. */\n clear(event?: Event): void;\n /** Discards a pending confirm-mode selection and closes the calendar. */\n cancel(event?: Event): void;\n}\n\ntype DatePickerData = AlpineMachine<DatePickerContext, DatePickerProps, typeof datePickerHooks>\n & UiDatePickerApi\n & {\n readonly root: BindingObject;\n effectivePlaceholder(): string;\n init(): void;\n destroy(): void;\n };\n\nconst YEAR_OPTION_PAST_OFFSET = 100;\nconst YEAR_OPTION_FUTURE_OFFSET = 10;\n\nconst splitRange = (value: string): [string, string] => {\n const [start = '', end = ''] = value.split('/');\n return [start, end];\n};\nconst currentYear = (): number => new Date().getFullYear();\nconst defaultMinDate = (): string => `${currentYear() - YEAR_OPTION_PAST_OFFSET}-01-01`;\nconst defaultMaxDate = (): string => `${currentYear() + YEAR_OPTION_FUTURE_OFFSET}-12-31`;\nconst todayIsoDate = (): string => new Date().toISOString().slice(0, 10);\n\nconst formatMonthHeading = (value: string, locale: string): string => {\n if (!ISO_DATE.test(value)) return '';\n return new Intl.DateTimeFormat(locale || undefined, {\n month: 'long',\n timeZone: 'UTC',\n year: 'numeric',\n }).format(new Date(`${value}T00:00:00.000Z`));\n};\n\nconst presetFromElement = (el: HTMLElement): DatePickerPreset => ({\n value: el.dataset.value ?? '',\n label: el.dataset.label ?? el.textContent?.trim() ?? '',\n start: el.dataset.start ?? '',\n end: el.dataset.end ?? '',\n disabled: asBool({value: el.dataset.disabled}),\n});\n\nconst UiDatePicker = (): TrellisAlpineComponent<DatePickerData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let triggerId = '';\n let popoverId = '';\n let popover: AnchoredPopoverSurface | null = null;\n let cleanup: CleanupManager;\n let hiddenInputsKey = '';\n let presetInputKey = '';\n let liveMessage = '';\n let lastInputValue = '';\n let focusCalendarOnOpen = false;\n let visibilityBaseline: string | undefined;\n\n const revealPositioned = (): void => {\n if (visibilityBaseline === undefined) return;\n popoverEl().style.visibility = visibilityBaseline;\n visibilityBaseline = undefined;\n };\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Date picker has not been initialized.');\n return rootEl;\n };\n const currentProps = (): Readonly<DatePickerProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<DatePickerContext> => bridge.getCommittedSnapshot().context;\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-date-picker-trigger]');\n if (!el) throw new Error('Date picker requires a trigger.');\n return el;\n };\n const input = (): HTMLInputElement => {\n const el = root().querySelector<HTMLInputElement>('[data-ui-date-picker-input]');\n if (!el) throw new Error('Date picker requires an input.');\n return el;\n };\n const toggleButton = (): HTMLButtonElement | null => root().querySelector('[data-ui-date-picker-toggle]');\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-date-picker-popover]');\n if (!el) throw new Error('Date picker requires a popover.');\n return el as PopoverElement;\n };\n const calendar = (): CalendarElement | null => root().querySelector('[data-ui-date-picker-calendar]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector('[data-ui-date-picker-hidden-inputs]');\n const presetInputsEl = (): HTMLElement | null => root().querySelector('[data-ui-date-picker-preset-inputs]');\n const isRange = (): boolean => currentProps().mode === 'range';\n const effectiveMonths = (): number => currentProps().months || (isRange() ? 2 : 1);\n const presetItems = (): DatePickerPreset[] => {\n const items = Array.from(root().querySelectorAll<HTMLElement>('[data-ui-date-picker-preset]'))\n .map(presetFromElement)\n .filter((preset) => preset.value && preset.start && preset.end);\n return items.length ? items : currentProps().presets;\n };\n const formatted = (value: string): string => formatDateValue({\n value,\n format: currentProps().format,\n range: isRange(),\n separator: currentProps().rangeSeparator,\n });\n const selectedPreset = (value: string): string => {\n const match = presetItems().find((preset) => (\n isRange() ? `${preset.start}/${preset.end}` : preset.start\n ) === value);\n const custom = presetItems().find((preset) => preset.value === 'custom');\n return match?.value ?? (value && custom ? 'custom' : '');\n };\n const syncCalendarHeading = (focusedDate?: string): void => {\n const heading = root().querySelector<HTMLElement>('[data-ui-date-picker-calendar-heading]');\n if (!heading) return;\n const props = currentProps();\n const value = focusedDate || splitRange(currentContext().selection.value || props.openTo || props.today || todayIsoDate())[0];\n heading.textContent = formatMonthHeading(value, props.locale);\n };\n const syncCalendar = (): void => {\n const el = calendar();\n if (!el) return;\n const props = currentProps();\n const context = currentContext();\n const value = context.selection.pendingValue;\n if (customElements.get('calendar-date')) el.value = value;\n el.setAttribute('value', value);\n setPresence({el, attr: 'tentative', present: isRange() && Boolean(value) && !ISO_RANGE.test(value)});\n el.setAttribute('months', String(effectiveMonths()));\n el.style.setProperty('--ui-date-picker-month-columns', String(effectiveMonths()));\n el.setAttribute('min', props.min || defaultMinDate());\n el.setAttribute('max', props.max || defaultMaxDate());\n if (props.today) el.setAttribute('today', props.today); else el.removeAttribute('today');\n const focused = props.forceOpenTo ? props.openTo : context.selection.value || props.openTo || props.today || todayIsoDate();\n el.setAttribute('focused-date', splitRange(focused)[0]);\n if (props.locale) el.setAttribute('locale', props.locale); else el.removeAttribute('locale');\n if (props.firstDayOfWeek >= 0) el.setAttribute('first-day-of-week', String(props.firstDayOfWeek));\n const inlineHeading = !props.selectableHeader && effectiveMonths() === 1;\n setPresence({el, attr: 'data-inline-heading', present: inlineHeading, value: 'true'});\n setPresence({el, attr: 'data-hide-month-heading', present: (props.selectableHeader && !isRange()) || inlineHeading, value: 'true'});\n setPresence({el, attr: 'data-fixed-weeks', present: props.fixedWeeks, value: 'true'});\n setPresence({el, attr: 'show-outside-days', present: props.showOutsideDays || props.fixedWeeks});\n setPresence({el, attr: 'show-week-numbers', present: props.showWeekNumbers});\n };\n const syncPresets = (): void => {\n const value = currentContext().selection.pendingValue || currentContext().selection.value;\n root().querySelectorAll<HTMLElement>('[data-ui-date-picker-preset]').forEach((el) => {\n const preset = presetFromElement(el);\n const presetValue = isRange() ? `${preset.start}/${preset.end}` : preset.start;\n setPresence({el, attr: 'data-selected', present: presetValue === value, value: 'true'});\n setPresence({el, attr: 'data-disabled', present: preset.disabled ?? false, value: 'true'});\n });\n };\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n const value = currentContext().selection.value;\n if (!isRange()) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container, currentKey: hiddenInputsKey, state: {\n name: props.name,\n values: value ? [value] : [],\n required: props.required,\n form: props.form,\n marker: 'data-ui-date-picker-hidden-input',\n }});\n return;\n }\n const [start, end] = splitRange(value);\n if (props.startName || props.endName) {\n const key = JSON.stringify({startName: props.startName, endName: props.endName, start, end, form: props.form});\n if (key === hiddenInputsKey) return;\n container.replaceChildren();\n [[props.startName, start], [props.endName, end]].forEach(([name, itemValue]) => {\n if (!name) return;\n const hidden = document.createElement('input');\n hidden.type = 'hidden'; hidden.name = name; hidden.value = itemValue ?? '';\n hidden.setAttribute('data-ui-date-picker-hidden-input', '');\n if (props.form) hidden.setAttribute('form', props.form);\n container.append(hidden);\n });\n hiddenInputsKey = key;\n return;\n }\n hiddenInputsKey = syncRepeatedHiddenInputs({container, currentKey: hiddenInputsKey, state: {\n name: props.name, values: value ? [value] : [], required: props.required, form: props.form,\n marker: 'data-ui-date-picker-hidden-input',\n }});\n };\n const syncPresetInput = (): void => {\n const container = presetInputsEl();\n if (!container) return;\n const props = currentProps();\n const value = selectedPreset(currentContext().selection.value);\n presetInputKey = syncRepeatedHiddenInputs({container, currentKey: presetInputKey, state: {\n name: props.presetName, values: value ? [value] : [], form: props.form,\n marker: 'data-ui-date-picker-preset-input',\n }});\n };\n const syncControl = (): void => {\n const props = currentProps();\n const context = currentContext();\n const visible = bridge.hasTag('visible');\n const expanded = bridge.hasTag('expanded');\n const triggerEl = trigger();\n const inputEl = input();\n const floating = popoverEl();\n triggerEl.id = triggerId;\n floating.id = popoverId;\n floating.dataset.state = expanded ? 'open' : 'closed';\n floating.hidden = !visible;\n triggerEl.dataset.state = expanded ? 'open' : 'closed';\n syncControlPresence({el: triggerEl, state: props, value: 'true'});\n const toggle = toggleButton();\n const ariaOwner = toggle ?? triggerEl;\n ariaOwner.setAttribute('aria-haspopup', 'dialog');\n ariaOwner.setAttribute('aria-expanded', expanded ? 'true' : 'false');\n ariaOwner.setAttribute('aria-controls', popoverId);\n if (triggerEl instanceof HTMLButtonElement) triggerEl.disabled = props.disabled;\n const displayValue = bridge.hasTag('editing')\n ? context.input.value\n : formatted(context.selection.value);\n syncNativeControl({input: inputEl, state: {\n name: '',\n value: displayValue,\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required && props.mode === 'single',\n invalid: props.invalid || !context.input.valid,\n }});\n inputEl.placeholder = component.effectivePlaceholder();\n root().querySelectorAll<HTMLButtonElement>('[data-ui-date-picker-clear], [data-ui-date-picker-toggle]')\n .forEach((button) => { button.disabled = props.disabled; });\n lastInputValue = displayValue;\n const live = root().querySelector<HTMLElement>('[data-ui-date-picker-live]');\n if (live) live.textContent = liveMessage;\n };\n const syncToday = (): void => {\n const button = root().querySelector<HTMLElement>('[data-ui-date-picker-calendar-today]');\n const dayEl = root().querySelector<HTMLElement>('[data-ui-date-picker-today-day]');\n if (!button || !dayEl) return;\n const today = currentProps().today || todayIsoDate();\n const day = ISO_DATE.test(today) ? String(Number(today.slice(-2))) : '';\n dayEl.textContent = day;\n button.setAttribute('aria-label', day ? `Go to today, ${today}` : 'Go to today');\n };\n const syncSurface = (): void => {\n const props = currentProps();\n const floating = popoverEl();\n floating.dataset.uiSurface = props.surface;\n floating.dataset.uiElevation = props.elevation;\n };\n const syncAll = (): void => {\n reflectSchemaProp({\n el: root(),\n schema: datePickerSchema,\n key: 'value',\n value: currentContext().selection.value,\n });\n syncControl(); syncCalendar(); syncCalendarHeading(); syncToday(); syncSurface();\n syncHiddenInputs(); syncPresetInput(); syncPresets();\n if (bridge.hasTag('visible')) popover?.sync();\n };\n const notifyChange = (): void => {\n dispatchNativeControlChange({\n container: hiddenInputsEl(), fallback: root(), marker: 'data-ui-date-picker-hidden-input',\n });\n dispatch({el: root(), name: 'ui:change'});\n };\n const commit = (value: string, source: SelectionSource, preset = ''): void => {\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'SELECT', value, source, preset});\n };\n const parseInput = (raw: string): string | null => {\n const props = currentProps();\n const value = parseDateValue({input: raw, format: props.format, range: isRange(), separator: props.rangeSeparator});\n return value && withinDateBounds(value, props.min, props.max) ? value : null;\n };\n\n const bridge = createAlpineMachine({\n schema: datePickerSchema,\n hooks: datePickerHooks,\n createMachine: ({props}) => createDatePickerMachine({\n props,\n context: {\n selection: {value: props.value, pendingValue: props.value, previousValue: props.value, source: 'props'},\n input: {value: '', valid: true},\n preset: {value: props.preset},\n },\n effects: {\n prepareOpen: () => {\n const floating = popoverEl();\n if (!popover?.opened() && visibilityBaseline === undefined) {\n visibilityBaseline = floating.style.visibility;\n floating.style.visibility = 'hidden';\n }\n floating.hidden = false;\n popover?.open();\n syncAll();\n },\n finishOpen: () => {\n revealPositioned();\n if (focusCalendarOnOpen) calendar()?.focus({target: 'day', preventScroll: true});\n focusCalendarOnOpen = false;\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: ({event}) => {\n focusCalendarOnOpen = false;\n syncAll();\n if (event.restoreFocus === true) focusElement(toggleButton() ?? trigger(), {showIndicator: false});\n },\n finishClose: () => {\n const floating = popoverEl();\n popover?.close();\n revealPositioned();\n floating.hidden = true;\n syncAll();\n dispatch({el: root(), name: 'ui:close'});\n },\n syncInput: syncControl,\n syncPending: () => { syncControl(); syncCalendar(); syncPresets(); },\n markInvalid: () => {\n input().setCustomValidity(`Enter a date in ${currentProps().format}`);\n syncControl();\n dispatch({el: root(), name: 'ui:invalid'});\n },\n commitSelection: () => {\n input().setCustomValidity('');\n const context = currentContext();\n liveMessage = context.selection.value ? (isRange() ? 'Range selected' : 'Date selected') : 'Date cleared';\n syncAll();\n notifyChange();\n dispatch({el: root(), name: context.selection.value ? 'ui:select' : 'ui:clear'});\n },\n syncProps: syncAll,\n syncPresets: () => { syncPresets(); syncPresetInput(); },\n },\n }),\n resolveTransitionElement: ({name, root: owner}) => {\n if (name === 'opening' || name === 'closing') return owner.querySelector('[data-ui-date-picker-popover]');\n if (name === 'parsing') return owner.querySelector('[data-ui-date-picker-input]');\n return owner;\n },\n });\n\n let component!: TrellisAlpineComponent<DatePickerData>;\n component = {\n ...bridge,\n get isOpen(): boolean { return bridge.hasTag('expanded'); },\n get isEditing(): boolean { return bridge.hasTag('editing'); },\n get value(): string { return bridge.getCommittedSnapshot().context.selection.value; },\n get pendingValue(): string { return bridge.getCommittedSnapshot().context.selection.pendingValue; },\n get preset(): string { return selectedPreset(bridge.getCommittedSnapshot().context.selection.value); },\n get root(): BindingObject {\n return mergeBindings({inputs: [resolveStyle({\n part: datePickerStyles.parts.root,\n props: bridge.getCommittedSnapshot().props,\n className: bridge.getCommittedSnapshot().props.class,\n }), {'data-ui-date-picker': '', ':data-state': () => (component.isOpen ? 'open' : 'closed')}]});\n },\n effectivePlaceholder(): string {\n const props = bridge.getCommittedSnapshot().props;\n if (props.placeholder) return props.placeholder;\n const placeholder = formatDatePlaceholder(props.format);\n return props.mode === 'range'\n ? `${placeholder}${props.rangeSeparator}${placeholder}`\n : placeholder;\n },\n open(event?: Event): void {\n event?.preventDefault();\n focusCalendarOnOpen = event instanceof KeyboardEvent;\n bridge.send('OPEN');\n },\n close(event?: Event): void {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus: event instanceof KeyboardEvent});\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n bridge.send('TOGGLE');\n },\n select(value: string, event?: Event): void {\n event?.preventDefault();\n if (!withinDateBounds(value, currentProps().min, currentProps().max)) return;\n const valid = isRange() ? ISO_RANGE.test(value) : ISO_DATE.test(value);\n if (valid) commit(value, 'input');\n },\n selectPreset(value: string, event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const preset = presetItems().find((item) => item.value === value);\n if (!preset || preset.disabled) return;\n const next = isRange() ? `${preset.start}/${preset.end}` : preset.start;\n if (currentProps().close === 'confirm') bridge.send({type: 'PENDING', value: next, source: 'preset', preset: value});\n else commit(next, 'preset', value);\n },\n selectToday(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const today = currentProps().today || todayIsoDate();\n const value = isRange() ? `${today}/${today}` : today;\n if (currentProps().close === 'confirm') bridge.send({type: 'PENDING', value, source: 'today'});\n else commit(value, 'today');\n },\n clear(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send('CLEAR');\n },\n cancel(event?: Event): void { event?.preventDefault(); bridge.send('CANCEL'); bridge.send('CLOSE'); },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n triggerId = this.$id('date-picker-trigger');\n popoverId = this.$id('date-picker-popover');\n bridge.connect(this.$el, this.snapshot);\n popover = createAnchoredPopoverSurface({\n reference: trigger,\n floating: popoverEl,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: false,\n });\n cleanup.add(bridge.onTransition('opening', (transition) => {\n const animate = (): unknown => {\n if (transition.signal.aborted) return;\n revealPositioned();\n if (root().hasAttribute('x-ui-transition:opening')) return;\n return animateProperties(transition, anchoredEntrance(popoverEl()), {target: popoverEl(), role: 'feedback'});\n };\n const positioned = visibilityBaseline === undefined ? null : popover?.positioned();\n return positioned ? positioned.then(animate) : animate();\n }));\n cleanup.add(bridge.onTransition('closing', (transition) => {\n const animate = (): unknown => {\n if (transition.signal.aborted) return;\n revealPositioned();\n if (root().hasAttribute('x-ui-transition:closing')) return;\n return animateProperties(transition, anchoredExit, {target: popoverEl(), role: 'feedbackExit'});\n };\n const positioned = visibilityBaseline === undefined ? null : popover?.positioned();\n return positioned ? positioned.then(animate) : animate();\n }));\n const triggerEl = trigger();\n const inputEl = input();\n const floating = popoverEl();\n addListener({target: triggerEl, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (target instanceof Element && target.closest('[data-ui-date-picker-clear]')) component.clear(event);\n else component.toggle(event);\n }});\n addListener({target: triggerEl, event: 'keydown', cleanup, handler: (raw) => {\n const event = raw as KeyboardEvent;\n if ((event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') && !component.isOpen) component.open(event);\n else if (event.key === 'Escape' && component.isOpen) component.close(event);\n }});\n addListener({target: root(), event: 'keydown', cleanup, handler: (raw) => {\n const event = raw as KeyboardEvent;\n if (event.key === 'Escape' && component.isOpen) component.close(event);\n }});\n addListener({target: inputEl, event: 'input', cleanup, handler: () => {\n const cursor = inputEl.selectionStart ?? inputEl.value.length;\n const digitsBeforeCursor = (inputEl.value.slice(0, cursor).match(/[0-9]/g) ?? []).length;\n let raw = sanitizeDateInput({\n input: inputEl.value,\n format: currentProps().format,\n separator: currentProps().rangeSeparator,\n });\n const deleting = lastInputValue.length - raw.length === 1;\n if (!deleting) raw = maskDateInput({\n input: raw,\n format: currentProps().format,\n range: isRange(),\n separator: currentProps().rangeSeparator,\n });\n if (inputEl.value !== raw) {\n inputEl.value = raw;\n let digitsSeen = 0;\n let nextCursor = raw.length;\n for (let index = 0; index < raw.length; index += 1) {\n if (/[0-9]/.test(raw[index] ?? '')) digitsSeen += 1;\n if (digitsSeen !== digitsBeforeCursor) continue;\n nextCursor = index + 1;\n while (nextCursor < raw.length && !/[0-9]/.test(raw[nextCursor] ?? '')) nextCursor += 1;\n break;\n }\n inputEl.setSelectionRange(nextCursor, nextCursor);\n }\n lastInputValue = raw;\n bridge.send({type: 'INPUT', input: raw});\n const parsed = parseInput(raw);\n if (parsed) commit(parsed, 'input');\n }});\n addListener({target: inputEl, event: 'change', cleanup, handler: () => {\n const parsed = parseInput(inputEl.value);\n if (parsed) commit(parsed, 'input');\n else if (inputEl.value.trim()) bridge.send({type: 'PARSE', input: inputEl.value});\n else bridge.send('CLEAR');\n }});\n addListener({target: floating, event: 'pointerdown', cleanup, handler: (event) => event.stopPropagation()});\n addListener({target: floating, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const preset = target.closest<HTMLElement>('[data-ui-date-picker-preset]');\n if (preset) component.selectPreset(preset.dataset.value ?? '', event);\n else if (target.closest('[data-ui-date-picker-clear]')) component.clear(event);\n else if (target.closest('[data-ui-date-picker-cancel]')) component.cancel(event);\n else if (target.closest('[data-ui-date-picker-apply]')) bridge.send('APPLY');\n else if (target.closest('[data-ui-date-picker-today]')) component.selectToday(event);\n }});\n const calendarEl = calendar();\n if (calendarEl) {\n void customElements.whenDefined('calendar-date').then(() => {\n if (rootEl) syncCalendar();\n });\n addListener({target: calendarEl, event: 'change', cleanup, handler: () => {\n const value = calendarEl.value;\n if (isRange() && !ISO_RANGE.test(value)) {\n liveMessage = 'Start date selected';\n bridge.send({type: 'PENDING', value, source: 'calendar'});\n } else if (currentProps().close === 'confirm') {\n bridge.send({type: 'PENDING', value, source: 'calendar'});\n } else commit(value, 'calendar');\n }});\n addListener({target: calendarEl, event: 'focusday', cleanup, handler: (event) => {\n const detail = (event as CustomEvent<Date>).detail;\n if (detail instanceof Date) syncCalendarHeading(detail.toISOString().slice(0, 10));\n }});\n }\n cleanup.add(addDismissableLayer({\n isEnabled: () => component.isOpen,\n roots: () => [root(), floating],\n onDismiss: () => component.close(),\n }));\n const presetObserver = new MutationObserver(() => bridge.send('PRESETS_CHANGED'));\n presetObserver.observe(root(), {childList: true, subtree: true, attributes: true, attributeFilter: ['data-value', 'data-start', 'data-end', 'data-disabled']});\n cleanup.add(() => presetObserver.disconnect());\n syncAll();\n },\n destroy(): void {\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n revealPositioned();\n rootEl = null;\n },\n };\n return component;\n};\n\nconst registerDatePicker = defineAlpineData('UiDatePicker', UiDatePicker);\n\nexport {registerDatePicker, UiDatePicker};\nexport type {DatePickerData, DatePickerTransition, UiDatePickerApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerAnchorCapability} from '../../capabilities/anchor';\nimport {registerCalendarCapability} from '../../capabilities/calendar';\nimport {registerDatePicker as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerDatePicker = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerAnchorCapability(AlpineInstance);\n registerCalendarCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerDatePicker};\nexport default registerDatePicker;\nexport * from './index';\n"],"file":"date-picker-CtTM4Gf6.js"}
@@ -1,2 +1,2 @@
1
- export * from "./date-picker-BCkP5gtC.js";
2
- export {default} from "./date-picker-BCkP5gtC.js";
1
+ export * from "./date-picker-CtTM4Gf6.js";
2
+ export {default} from "./date-picker-CtTM4Gf6.js";
@@ -0,0 +1,2 @@
1
+ import{r as e}from"../chunks/dom-DiTFTWeR.js";import{f as t}from"../chunks/codecs-CQ7olTJL.js";import{n,t as r}from"../chunks/machine-Do4tL7nc.js";import{n as i}from"../chunks/alpine-data-Dvc_bXq6.js";var a={startUrl:t,completeUrl:t,purpose:t},o=[],s=(e,t)=>({status:e,uploadId:typeof t.event.uploadId==`string`?t.event.uploadId:t.context.uploadId,error:typeof t.event.error==`string`?t.event.error:``}),c=e=>t=>({context:s(e,t)}),l=({props:e,effects:t})=>r({initial:`idle`,states:{idle:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`}}},starting:{on:{TRANSFER:{target:`transferring`,reduce:`transferring`,effects:`sync`},FAIL:{target:`failed`,reduce:`failed`,effects:`sync`},CANCEL:{target:`canceled`,reduce:`canceled`,effects:`sync`}}},transferring:{on:{COMPLETE:{target:`completing`,reduce:`completing`,effects:`sync`},FAIL:{target:`failed`,reduce:`failed`,effects:`sync`},CANCEL:{target:`canceled`,reduce:`canceled`,effects:`sync`}}},completing:{on:{SUCCEED:{target:`complete`,reduce:`complete`,effects:`sync`},FAIL:{target:`failed`,reduce:`failed`,effects:`sync`},CANCEL:{target:`canceled`,reduce:`canceled`,effects:`sync`}}},complete:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`},CLEAR:{target:`idle`,reduce:`idle`,effects:`sync`}}},failed:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`},CLEAR:{target:`idle`,reduce:`idle`,effects:`sync`}}},canceled:{on:{START:{target:`starting`,reduce:`starting`,effects:`sync`},CLEAR:{target:`idle`,reduce:`idle`,effects:`sync`}}}}},{context:{status:`idle`,uploadId:``,error:``},props:e,reducers:{idle:c(`idle`),starting:c(`starting`),transferring:c(`transferring`),completing:c(`completing`),complete:c(`complete`),failed:c(`failed`),canceled:c(`canceled`)},effects:t}),u=()=>document.querySelector(`meta[name="csrf-token"]`)?.content??``,d=(e,t)=>{if(!e||typeof e!=`object`)return t;let n=Reflect.get(e,`errors`);if(!n||typeof n!=`object`)return t;let r=Object.values(n)[0];if(typeof r==`string`)return r;if(Array.isArray(r)&&r.length>0){let e=r[0];if(typeof e==`string`)return e;if(e&&typeof e==`object`&&typeof Reflect.get(e,`message`)==`string`)return Reflect.get(e,`message`)}return t},f=async(e,t,n={})=>{let r=new FormData;Object.entries(t).forEach(([e,t])=>r.append(e,String(t)));let i=new Headers,a=u();a&&i.set(`X-CSRFToken`,a);let o=await fetch(e,{method:`POST`,body:r,headers:i,credentials:`same-origin`,...n.signal?{signal:n.signal}:{}}),s=await o.json().catch(()=>null);if(!o.ok)throw Error(d(s,`Upload request failed (${o.status}).`));if(s===null)throw Error(`Upload request returned no data.`);return s},p=(e,t,n={})=>new Promise((r,i)=>{let a=new XMLHttpRequest,o=new FormData;Object.entries(e.fields).forEach(([e,t])=>o.append(e,t));let s=new URL(e.url,document.baseURI);if(s.origin===window.location.origin){let e=u();if(e&&o.append(`csrfmiddlewaretoken`,e),!n.capability){i(Error(`A same-origin direct upload requires its upload capability.`));return}o.append(`capability`,n.capability)}o.append(e.file_field,t);let c=()=>n.signal?.removeEventListener(`abort`,l),l=()=>a.abort();if(a.upload.addEventListener(`progress`,e=>{e.lengthComputable&&n.onProgress?.(e.loaded,e.total)}),a.addEventListener(`load`,()=>{if(c(),a.status>=200&&a.status<300){r();return}let e=null;try{e=JSON.parse(a.responseText)}catch{}i(Error(d(e,`Object transfer failed (${a.status}).`)))}),a.addEventListener(`error`,()=>{c(),i(Error(`Object transfer failed.`))}),a.addEventListener(`abort`,()=>{c(),i(new DOMException(`Upload canceled.`,`AbortError`))}),n.signal?.addEventListener(`abort`,l,{once:!0}),n.signal?.aborted){l();return}a.open(e.method,s.toString()),a.send(o)}),m=()=>{let t=null,r=null,i=null,s=new Set,c=!1,u=new Map,d=()=>{if(!t)throw Error(`Direct upload has not been initialized.`);return t},m=()=>{let e=d().querySelector(`[data-ui-direct-upload-values]`);if(!e)throw Error(`Direct upload requires a hidden values container.`);return e},h=()=>{let e=m(),t=[...e.querySelectorAll(`[data-ui-direct-upload-value]`)].map(e=>e.value).filter(Boolean),n=[...u.values()];if(t.length===n.length&&t.every((e,t)=>e===n[t]))return!1;let r=[...u.entries()].map(([e,t])=>{let n=document.createElement(`input`);return n.type=`hidden`,n.name=d().dataset.name??``,n.value=t,n.dataset.uiDirectUploadValue=``,n.dataset.uploadKey=e,n});if(r.length===0){let e=document.createElement(`input`);e.type=`hidden`,e.name=d().dataset.name??``,e.dataset.uiDirectUploadValue=``,r.push(e)}e.replaceChildren(...r);let i=r[0];return i&&(i.dispatchEvent(new Event(`input`,{bubbles:!0})),i.dispatchEvent(new Event(`change`,{bubbles:!0}))),!0},g=()=>{let e=v.getCommittedSnapshot();d().dataset.uploadState=e.context.status,e.context.error?d().dataset.uploadError=e.context.error:delete d().dataset.uploadError},_=()=>{r?.abort(),r=null,u.clear(),s.clear(),c=!1;let t=h(),n=d().querySelector(`[data-ui-file-upload-root]`);n?.querySelector(`[data-ui-file-upload-item][data-existing-file]:not([hidden])`)&&n.dispatchEvent(new CustomEvent(`trellis:file-upload-clear-existing`)),v.send(`CLEAR`),t&&e({el:d(),name:`ui:direct-upload-clear`})},v=n({schema:a,hooks:o,createMachine:({props:e})=>l({props:e,effects:{sync:g}})});return{...v,init(){t=this.$el,v.connect(t,this.snapshot),t.querySelectorAll(`[data-ui-direct-upload-value]`).forEach((e,t)=>{e.value&&u.set(e.dataset.uploadKey??`existing-${t}`,e.value)});let e=e=>{if(!(e instanceof CustomEvent))return;let t=e.detail,n=new Set((t?.files??[]).flatMap(({id:e})=>typeof e==`string`?[e]:[])),r=Array.isArray(t?.removedExistingIds)?t.removedExistingIds.filter(e=>typeof e==`string`):[];if(r.length>0){r.forEach(e=>u.delete(e)),s=n,h(),u.size===0&&n.size===0&&v.send(`CLEAR`);return}if(t?.source===`picker`||t?.source===`drop`){if(n.size===0){s.clear(),c=!1;return}let e=[...u.keys()].some(e=>e.startsWith(`existing-`));c=t.source===`picker`||Number(d().dataset.maxItems??`1`)===1||e,s=n;return}[...s].filter(e=>!n.has(e)).forEach(e=>u.delete(e)),s=n,h(),u.size===0&&n.size===0&&v.send(`CLEAR`)};t.addEventListener(`ui:file-upload-change`,e),i=()=>t?.removeEventListener(`ui:file-upload-change`,e),g()},destroy(){r?.abort(),r=null,i?.(),i=null,u.clear(),s.clear(),c=!1,v.disconnect(),t=null},clear(){_()},async upload(t,n){let i=t.data.files;if(i.length===0)return;r?.abort();let a=new AbortController;r=a;let o=()=>a.abort();t.signal.addEventListener(`abort`,o,{once:!0});try{let r=v.getCommittedSnapshot().props,o=[];for(let e of i){let i=n(e.id);if(!i)throw Error(`The selected file is no longer available.`);v.send(`START`);let s=await f(r.startUrl,{purpose:r.purpose,original_name:i.name,content_type:i.type||`application/octet-stream`,size:i.size},{signal:a.signal});v.send({type:`TRANSFER`,uploadId:s.upload_id}),await p(s.instructions,i,{signal:a.signal,capability:s.capability,onProgress:(n,r)=>t.send.progress(e.id,n,r)}),v.send(`COMPLETE`);let c=await f(r.completeUrl,{capability:s.capability},{signal:a.signal});t.send.progress(e.id,e.bytes,e.bytes),v.send({type:`SUCCEED`,uploadId:c.upload_id}),o.push({recordId:e.id,capability:s.capability,completed:c})}c&&u.clear(),o.forEach(({recordId:e,capability:t})=>u.set(e,t)),c=!1,h(),e({el:d(),name:`ui:direct-upload-complete`,detail:{uploads:o.map(({completed:e})=>e)}})}catch(n){if(a.signal.aborted)v.send(`CANCEL`);else{let r=n instanceof Error?n.message:String(n);v.send({type:`FAIL`,error:r}),t.send.fail(n),e({el:d(),name:`ui:direct-upload-error`,detail:{error:r}})}throw n}finally{t.signal.removeEventListener(`abort`,o),r===a&&(r=null)}}}},h=i(`UiDirectUpload`,m),g=new WeakSet,_=e=>{g.has(e)||(g.add(e),h(e))};export{m as UiDirectUpload,_ as default,_ as registerDirectUpload};
2
+ //# sourceMappingURL=direct-upload-B4dcq4bn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-upload-B4dcq4bn.js","names":[],"sources":["../../../../../../../../client/src/components/direct-upload/contract.ts","../../../../../../../../client/src/components/direct-upload/machine.ts","../../../../../../../../client/src/components/direct-upload/transport.ts","../../../../../../../../client/src/components/direct-upload/index.ts","../../../../../../../../client/src/components/direct-upload/entry.generated.ts"],"sourcesContent":["import {string, type SchemaToProps} from '../../runtime';\n\nconst directUploadSchema = {\n startUrl: string,\n completeUrl: string,\n purpose: string,\n};\n\ntype DirectUploadProps = SchemaToProps<typeof directUploadSchema>;\n\nexport {directUploadSchema};\nexport type {DirectUploadProps};\n","import {createMachine, type Machine, type MachineScope} from '../../runtime/state-machine';\nimport type {DirectUploadProps} from './contract';\n\ntype DirectUploadStatus = 'idle' | 'starting' | 'transferring' | 'completing' | 'complete' | 'failed' | 'canceled';\ntype DirectUploadContext = {status: DirectUploadStatus; uploadId: string; error: string};\ntype DirectUploadEffects = {sync(scope: MachineScope<DirectUploadContext, DirectUploadProps>): void};\n\nconst directUploadHooks = [] as const;\nconst contextFor = (\n status: DirectUploadStatus,\n scope: MachineScope<DirectUploadContext, DirectUploadProps>,\n): DirectUploadContext => ({\n status,\n uploadId: typeof scope.event.uploadId === 'string' ? scope.event.uploadId : scope.context.uploadId,\n error: typeof scope.event.error === 'string' ? scope.event.error : '',\n});\nconst reducerFor = (status: DirectUploadStatus) => (\n scope: MachineScope<DirectUploadContext, DirectUploadProps>,\n) => ({context: contextFor(status, scope)});\n\nconst createDirectUploadMachine = ({\n props,\n effects,\n}: {\n props: DirectUploadProps;\n effects: DirectUploadEffects;\n}): Machine<DirectUploadContext, DirectUploadProps> => createMachine<DirectUploadContext, DirectUploadProps>({\n initial: 'idle',\n states: {\n idle: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}}},\n starting: {\n on: {\n TRANSFER: {target: 'transferring', reduce: 'transferring', effects: 'sync'},\n FAIL: {target: 'failed', reduce: 'failed', effects: 'sync'},\n CANCEL: {target: 'canceled', reduce: 'canceled', effects: 'sync'},\n },\n },\n transferring: {\n on: {\n COMPLETE: {target: 'completing', reduce: 'completing', effects: 'sync'},\n FAIL: {target: 'failed', reduce: 'failed', effects: 'sync'},\n CANCEL: {target: 'canceled', reduce: 'canceled', effects: 'sync'},\n },\n },\n completing: {\n on: {\n SUCCEED: {target: 'complete', reduce: 'complete', effects: 'sync'},\n FAIL: {target: 'failed', reduce: 'failed', effects: 'sync'},\n CANCEL: {target: 'canceled', reduce: 'canceled', effects: 'sync'},\n },\n },\n complete: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}, CLEAR: {target: 'idle', reduce: 'idle', effects: 'sync'}}},\n failed: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}, CLEAR: {target: 'idle', reduce: 'idle', effects: 'sync'}}},\n canceled: {on: {START: {target: 'starting', reduce: 'starting', effects: 'sync'}, CLEAR: {target: 'idle', reduce: 'idle', effects: 'sync'}}},\n },\n}, {\n context: {status: 'idle', uploadId: '', error: ''},\n props,\n reducers: {\n idle: reducerFor('idle'),\n starting: reducerFor('starting'),\n transferring: reducerFor('transferring'),\n completing: reducerFor('completing'),\n complete: reducerFor('complete'),\n failed: reducerFor('failed'),\n canceled: reducerFor('canceled'),\n },\n effects,\n});\n\nexport {createDirectUploadMachine, directUploadHooks};\nexport type {DirectUploadContext, DirectUploadEffects, DirectUploadStatus};\n","type DirectUploadInstructions = {\n transport: string;\n method: 'POST';\n url: string;\n fields: Record<string, string>;\n file_field: string;\n};\n\ntype TransferOptions = {\n signal?: AbortSignal;\n onProgress?: (loaded: number, total: number) => void;\n capability?: string;\n};\n\nconst csrfToken = (): string => document.querySelector<HTMLMetaElement>('meta[name=\"csrf-token\"]')?.content ?? '';\nconst errorMessage = (payload: unknown, fallback: string): string => {\n if (!payload || typeof payload !== 'object') return fallback;\n const errors = Reflect.get(payload, 'errors');\n if (!errors || typeof errors !== 'object') return fallback;\n const first = Object.values(errors)[0];\n if (typeof first === 'string') return first;\n if (Array.isArray(first) && first.length > 0) {\n const value = first[0];\n if (typeof value === 'string') return value;\n if (value && typeof value === 'object' && typeof Reflect.get(value, 'message') === 'string') {\n return Reflect.get(value, 'message') as string;\n }\n }\n return fallback;\n};\n\nconst postDirectUpload = async <T>(\n url: string,\n data: Record<string, string | number>,\n options: {signal?: AbortSignal} = {},\n): Promise<T> => {\n const body = new FormData();\n Object.entries(data).forEach(([key, value]) => body.append(key, String(value)));\n const headers = new Headers();\n const csrf = csrfToken();\n if (csrf) headers.set('X-CSRFToken', csrf);\n const response = await fetch(url, {\n method: 'POST',\n body,\n headers,\n credentials: 'same-origin',\n ...(options.signal ? {signal: options.signal} : {}),\n });\n const payload = await response.json().catch(() => null) as T | null;\n if (!response.ok) throw new Error(errorMessage(payload, `Upload request failed (${response.status}).`));\n if (payload === null) throw new Error('Upload request returned no data.');\n return payload;\n};\n\nconst transferDirectUpload = (\n instructions: DirectUploadInstructions,\n file: File,\n options: TransferOptions = {},\n): Promise<void> => new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n const body = new FormData();\n Object.entries(instructions.fields).forEach(([key, value]) => body.append(key, value));\n const target = new URL(instructions.url, document.baseURI);\n const sameOrigin = target.origin === window.location.origin;\n if (sameOrigin) {\n const csrf = csrfToken();\n if (csrf) body.append('csrfmiddlewaretoken', csrf);\n if (!options.capability) {\n reject(new Error('A same-origin direct upload requires its upload capability.'));\n return;\n }\n body.append('capability', options.capability);\n }\n body.append(instructions.file_field, file);\n\n const cleanup = (): void => options.signal?.removeEventListener('abort', abort);\n const abort = (): void => request.abort();\n request.upload.addEventListener('progress', (event) => {\n if (event.lengthComputable) options.onProgress?.(event.loaded, event.total);\n });\n request.addEventListener('load', () => {\n cleanup();\n if (request.status >= 200 && request.status < 300) {\n resolve();\n return;\n }\n let payload: unknown = null;\n try { payload = JSON.parse(request.responseText); } catch { /* response may be XML or empty */ }\n reject(new Error(errorMessage(payload, `Object transfer failed (${request.status}).`)));\n });\n request.addEventListener('error', () => { cleanup(); reject(new Error('Object transfer failed.')); });\n request.addEventListener('abort', () => { cleanup(); reject(new DOMException('Upload canceled.', 'AbortError')); });\n options.signal?.addEventListener('abort', abort, {once: true});\n if (options.signal?.aborted) {\n abort();\n return;\n }\n request.open(instructions.method, target.toString());\n request.send(body);\n});\n\nexport {postDirectUpload, transferDirectUpload};\nexport type {DirectUploadInstructions, TransferOptions};\n","import type Alpine from 'alpinejs';\n\nimport {\n createAlpineMachine,\n defineAlpineData,\n dispatch,\n type AlpineMachine,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport type {FileUploadTransition} from '../file-upload';\nimport {directUploadSchema, type DirectUploadProps} from './contract';\nimport {\n createDirectUploadMachine,\n directUploadHooks,\n type DirectUploadContext,\n} from './machine';\nimport {\n postDirectUpload,\n transferDirectUpload,\n type DirectUploadInstructions,\n} from './transport';\n\ntype ResolveFile = (id: string) => File | null;\ntype StartResponse = {upload_id: string; capability: string; instructions: DirectUploadInstructions};\ntype CompleteResponse = {upload_id: string; key: string};\n\ninterface UiDirectUploadApi {\n clear(): void;\n upload(transition: FileUploadTransition<'uploading'>, resolveFile: ResolveFile): Promise<void>;\n}\n\ntype DirectUploadData = AlpineMachine<DirectUploadContext, DirectUploadProps, typeof directUploadHooks>\n & UiDirectUploadApi\n & {init(): void; destroy(): void};\n\nconst UiDirectUpload = (): TrellisAlpineComponent<DirectUploadData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let activeController: AbortController | null = null;\n let disconnectFileUpload: (() => void) | null = null;\n let selectedFileIds = new Set<string>();\n let replaceOnCommit = false;\n const capabilities = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Direct upload has not been initialized.');\n return rootEl;\n };\n const valuesRoot = (): HTMLElement => {\n const container = root().querySelector<HTMLElement>('[data-ui-direct-upload-values]');\n if (!container) throw new Error('Direct upload requires a hidden values container.');\n return container;\n };\n const syncValues = (): boolean => {\n const container = valuesRoot();\n const current = [...container.querySelectorAll<HTMLInputElement>('[data-ui-direct-upload-value]')]\n .map((input) => input.value)\n .filter(Boolean);\n const next = [...capabilities.values()];\n if (current.length === next.length && current.every((value, index) => value === next[index])) return false;\n const inputs = [...capabilities.entries()].map(([key, capability]) => {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = root().dataset.name ?? '';\n input.value = capability;\n input.dataset.uiDirectUploadValue = '';\n input.dataset.uploadKey = key;\n return input;\n });\n if (inputs.length === 0) {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = root().dataset.name ?? '';\n input.dataset.uiDirectUploadValue = '';\n inputs.push(input);\n }\n container.replaceChildren(...inputs);\n const changed = inputs[0];\n if (changed) {\n changed.dispatchEvent(new Event('input', {bubbles: true}));\n changed.dispatchEvent(new Event('change', {bubbles: true}));\n }\n return true;\n };\n const syncDom = (): void => {\n const snapshot = bridge.getCommittedSnapshot();\n root().dataset.uploadState = snapshot.context.status;\n if (snapshot.context.error) root().dataset.uploadError = snapshot.context.error;\n else delete root().dataset.uploadError;\n };\n const clearUpload = (): void => {\n activeController?.abort();\n activeController = null;\n capabilities.clear();\n selectedFileIds.clear();\n replaceOnCommit = false;\n const changed = syncValues();\n const fileUpload = root().querySelector<HTMLElement>('[data-ui-file-upload-root]');\n if (fileUpload?.querySelector('[data-ui-file-upload-item][data-existing-file]:not([hidden])')) {\n fileUpload.dispatchEvent(new CustomEvent('trellis:file-upload-clear-existing'));\n }\n bridge.send('CLEAR');\n if (changed) dispatch({el: root(), name: 'ui:direct-upload-clear'});\n };\n const bridge = createAlpineMachine({\n schema: directUploadSchema,\n hooks: directUploadHooks,\n createMachine: ({props}) => createDirectUploadMachine({props, effects: {sync: syncDom}}),\n });\n\n return {\n ...bridge,\n init(): void {\n rootEl = this.$el;\n bridge.connect(rootEl, this.snapshot);\n rootEl.querySelectorAll<HTMLInputElement>('[data-ui-direct-upload-value]')\n .forEach((input, index) => {\n if (input.value) capabilities.set(input.dataset.uploadKey ?? `existing-${index}`, input.value);\n });\n const handleFileChange = (event: Event): void => {\n if (!(event instanceof CustomEvent)) return;\n const detail = event.detail as {\n files?: Array<{id?: unknown}>;\n removedExistingIds?: unknown;\n source?: unknown;\n } | undefined;\n const fileIds = new Set(\n (detail?.files ?? []).flatMap(({id}) => typeof id === 'string' ? [id] : []),\n );\n const removedExistingIds = Array.isArray(detail?.removedExistingIds)\n ? detail.removedExistingIds.filter((id): id is string => typeof id === 'string')\n : [];\n if (removedExistingIds.length > 0) {\n removedExistingIds.forEach((id) => capabilities.delete(id));\n selectedFileIds = fileIds;\n syncValues();\n if (capabilities.size === 0 && fileIds.size === 0) bridge.send('CLEAR');\n return;\n }\n if (detail?.source === 'picker' || detail?.source === 'drop') {\n if (fileIds.size === 0) {\n selectedFileIds.clear();\n replaceOnCommit = false;\n return;\n }\n const replacesExisting = [...capabilities.keys()].some((key) => key.startsWith('existing-'));\n replaceOnCommit = detail.source === 'picker'\n || Number(root().dataset.maxItems ?? '1') === 1\n || replacesExisting;\n selectedFileIds = fileIds;\n return;\n }\n const removedIds = [...selectedFileIds].filter((id) => !fileIds.has(id));\n removedIds.forEach((id) => capabilities.delete(id));\n selectedFileIds = fileIds;\n syncValues();\n if (capabilities.size === 0 && fileIds.size === 0) bridge.send('CLEAR');\n };\n rootEl.addEventListener('ui:file-upload-change', handleFileChange);\n disconnectFileUpload = () => rootEl?.removeEventListener('ui:file-upload-change', handleFileChange);\n syncDom();\n },\n destroy(): void {\n activeController?.abort();\n activeController = null;\n disconnectFileUpload?.();\n disconnectFileUpload = null;\n capabilities.clear();\n selectedFileIds.clear();\n replaceOnCommit = false;\n bridge.disconnect();\n rootEl = null;\n },\n clear(): void {\n clearUpload();\n },\n async upload(transition, resolveFile): Promise<void> {\n const records = transition.data.files;\n if (records.length === 0) return;\n\n activeController?.abort();\n const controller = new AbortController();\n activeController = controller;\n const cancel = (): void => controller.abort();\n transition.signal.addEventListener('abort', cancel, {once: true});\n try {\n const props = bridge.getCommittedSnapshot().props;\n const completedBatch: Array<{recordId: string; capability: string; completed: CompleteResponse}> = [];\n for (const record of records) {\n const file = resolveFile(record.id);\n if (!file) throw new Error('The selected file is no longer available.');\n bridge.send('START');\n const started = await postDirectUpload<StartResponse>(props.startUrl, {\n purpose: props.purpose,\n original_name: file.name,\n content_type: file.type || 'application/octet-stream',\n size: file.size,\n }, {signal: controller.signal});\n bridge.send({type: 'TRANSFER', uploadId: started.upload_id});\n await transferDirectUpload(started.instructions, file, {\n signal: controller.signal,\n capability: started.capability,\n onProgress: (loaded, total) => transition.send.progress(record.id, loaded, total),\n });\n bridge.send('COMPLETE');\n const completed = await postDirectUpload<CompleteResponse>(props.completeUrl, {\n capability: started.capability,\n }, {signal: controller.signal});\n transition.send.progress(record.id, record.bytes, record.bytes);\n bridge.send({type: 'SUCCEED', uploadId: completed.upload_id});\n completedBatch.push({recordId: record.id, capability: started.capability, completed});\n }\n if (replaceOnCommit) capabilities.clear();\n completedBatch.forEach(({recordId, capability}) => capabilities.set(recordId, capability));\n replaceOnCommit = false;\n syncValues();\n dispatch({\n el: root(),\n name: 'ui:direct-upload-complete',\n detail: {uploads: completedBatch.map(({completed}) => completed)},\n });\n } catch (error) {\n if (controller.signal.aborted) {\n bridge.send('CANCEL');\n } else {\n const reason = error instanceof Error ? error.message : String(error);\n bridge.send({type: 'FAIL', error: reason});\n transition.send.fail(error);\n dispatch({el: root(), name: 'ui:direct-upload-error', detail: {error: reason}});\n }\n throw error;\n } finally {\n transition.signal.removeEventListener('abort', cancel);\n if (activeController === controller) activeController = null;\n }\n },\n };\n};\n\nconst registerDirectUpload = defineAlpineData('UiDirectUpload', UiDirectUpload);\n\nexport {registerDirectUpload, UiDirectUpload};\nexport type {DirectUploadData, UiDirectUploadApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerDirectUpload as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerDirectUpload = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerDirectUpload};\nexport default registerDirectUpload;\nexport * from './index';\n"],"mappings":"yMAEA,IAAM,EAAqB,CACvB,SAAU,EACV,YAAa,EACb,QAAS,CACb,ECCM,EAAoB,CAAC,EACrB,GACF,EACA,KACuB,CACvB,SACA,SAAU,OAAO,EAAM,MAAM,UAAa,SAAW,EAAM,MAAM,SAAW,EAAM,QAAQ,SAC1F,MAAO,OAAO,EAAM,MAAM,OAAU,SAAW,EAAM,MAAM,MAAQ,EACvE,GACM,EAAc,GAChB,IACE,CAAC,QAAS,EAAW,EAAQ,CAAK,CAAC,GAEnC,GAA6B,CAC/B,QACA,aAImD,EAAsD,CACzG,QAAS,OACT,OAAQ,CACJ,KAAM,CAAC,GAAI,CAAC,MAAO,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,CAAC,CAAC,EAC7E,SAAU,CACN,GAAI,CACA,SAAU,CAAC,OAAQ,eAAgB,OAAQ,eAAgB,QAAS,MAAM,EAC1E,KAAM,CAAC,OAAQ,SAAU,OAAQ,SAAU,QAAS,MAAM,EAC1D,OAAQ,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,CACpE,CACJ,EACA,aAAc,CACV,GAAI,CACA,SAAU,CAAC,OAAQ,aAAc,OAAQ,aAAc,QAAS,MAAM,EACtE,KAAM,CAAC,OAAQ,SAAU,OAAQ,SAAU,QAAS,MAAM,EAC1D,OAAQ,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,CACpE,CACJ,EACA,WAAY,CACR,GAAI,CACA,QAAS,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,EACjE,KAAM,CAAC,OAAQ,SAAU,OAAQ,SAAU,QAAS,MAAM,EAC1D,OAAQ,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,CACpE,CACJ,EACA,SAAU,CAAC,GAAI,CAAC,MAAO,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,EAAG,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,MAAM,CAAC,CAAC,EAC3I,OAAQ,CAAC,GAAI,CAAC,MAAO,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,EAAG,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,MAAM,CAAC,CAAC,EACzI,SAAU,CAAC,GAAI,CAAC,MAAO,CAAC,OAAQ,WAAY,OAAQ,WAAY,QAAS,MAAM,EAAG,MAAO,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,MAAM,CAAC,CAAC,CAC/I,CACJ,EAAG,CACC,QAAS,CAAC,OAAQ,OAAQ,SAAU,GAAI,MAAO,EAAE,EACjD,QACA,SAAU,CACN,KAAM,EAAW,MAAM,EACvB,SAAU,EAAW,UAAU,EAC/B,aAAc,EAAW,cAAc,EACvC,WAAY,EAAW,YAAY,EACnC,SAAU,EAAW,UAAU,EAC/B,OAAQ,EAAW,QAAQ,EAC3B,SAAU,EAAW,UAAU,CACnC,EACA,SACJ,CAAC,ECtDK,MAA0B,SAAS,cAA+B,yBAAyB,CAAC,EAAE,SAAW,GACzG,GAAgB,EAAkB,IAA6B,CACjE,GAAI,CAAC,GAAW,OAAO,GAAY,SAAU,OAAO,EACpD,IAAM,EAAS,QAAQ,IAAI,EAAS,QAAQ,EAC5C,GAAI,CAAC,GAAU,OAAO,GAAW,SAAU,OAAO,EAClD,IAAM,EAAQ,OAAO,OAAO,CAAM,CAAC,CAAC,GACpC,GAAI,OAAO,GAAU,SAAU,OAAO,EACtC,GAAI,MAAM,QAAQ,CAAK,GAAK,EAAM,OAAS,EAAG,CAC1C,IAAM,EAAQ,EAAM,GACpB,GAAI,OAAO,GAAU,SAAU,OAAO,EACtC,GAAI,GAAS,OAAO,GAAU,UAAY,OAAO,QAAQ,IAAI,EAAO,SAAS,GAAM,SAC/E,OAAO,QAAQ,IAAI,EAAO,SAAS,CAE3C,CACA,OAAO,CACX,EAEM,EAAmB,MACrB,EACA,EACA,EAAkC,CAAC,IACtB,CACb,IAAM,EAAO,IAAI,SACjB,OAAO,QAAQ,CAAI,CAAC,CAAC,SAAS,CAAC,EAAK,KAAW,EAAK,OAAO,EAAK,OAAO,CAAK,CAAC,CAAC,EAC9E,IAAM,EAAU,IAAI,QACd,EAAO,EAAU,EACnB,GAAM,EAAQ,IAAI,cAAe,CAAI,EACzC,IAAM,EAAW,MAAM,MAAM,EAAK,CAC9B,OAAQ,OACR,OACA,UACA,YAAa,cACb,GAAI,EAAQ,OAAS,CAAC,OAAQ,EAAQ,MAAM,EAAI,CAAC,CACrD,CAAC,EACK,EAAU,MAAM,EAAS,KAAK,CAAC,CAAC,UAAY,IAAI,EACtD,GAAI,CAAC,EAAS,GAAI,MAAU,MAAM,EAAa,EAAS,0BAA0B,EAAS,OAAO,GAAG,CAAC,EACtG,GAAI,IAAY,KAAM,MAAU,MAAM,kCAAkC,EACxE,OAAO,CACX,EAEM,GACF,EACA,EACA,EAA2B,CAAC,IACZ,IAAI,SAAS,EAAS,IAAW,CACjD,IAAM,EAAU,IAAI,eACd,EAAO,IAAI,SACjB,OAAO,QAAQ,EAAa,MAAM,CAAC,CAAC,SAAS,CAAC,EAAK,KAAW,EAAK,OAAO,EAAK,CAAK,CAAC,EACrF,IAAM,EAAS,IAAI,IAAI,EAAa,IAAK,SAAS,OAAO,EAEzD,GADmB,EAAO,SAAW,OAAO,SAAS,OACrC,CACZ,IAAM,EAAO,EAAU,EAEvB,GADI,GAAM,EAAK,OAAO,sBAAuB,CAAI,EAC7C,CAAC,EAAQ,WAAY,CACrB,EAAW,MAAM,6DAA6D,CAAC,EAC/E,MACJ,CACA,EAAK,OAAO,aAAc,EAAQ,UAAU,CAChD,CACA,EAAK,OAAO,EAAa,WAAY,CAAI,EAEzC,IAAM,MAAsB,EAAQ,QAAQ,oBAAoB,QAAS,CAAK,EACxE,MAAoB,EAAQ,MAAM,EAiBxC,GAhBA,EAAQ,OAAO,iBAAiB,WAAa,GAAU,CAC/C,EAAM,kBAAkB,EAAQ,aAAa,EAAM,OAAQ,EAAM,KAAK,CAC9E,CAAC,EACD,EAAQ,iBAAiB,WAAc,CAEnC,GADA,EAAQ,EACJ,EAAQ,QAAU,KAAO,EAAQ,OAAS,IAAK,CAC/C,EAAQ,EACR,MACJ,CACA,IAAI,EAAmB,KACvB,GAAI,CAAE,EAAU,KAAK,MAAM,EAAQ,YAAY,CAAG,MAAQ,CAAqC,CAC/F,EAAW,MAAM,EAAa,EAAS,2BAA2B,EAAQ,OAAO,GAAG,CAAC,CAAC,CAC1F,CAAC,EACD,EAAQ,iBAAiB,YAAe,CAAE,EAAQ,EAAG,EAAW,MAAM,yBAAyB,CAAC,CAAG,CAAC,EACpG,EAAQ,iBAAiB,YAAe,CAAE,EAAQ,EAAG,EAAO,IAAI,aAAa,mBAAoB,YAAY,CAAC,CAAG,CAAC,EAClH,EAAQ,QAAQ,iBAAiB,QAAS,EAAO,CAAC,KAAM,EAAI,CAAC,EACzD,EAAQ,QAAQ,QAAS,CACzB,EAAM,EACN,MACJ,CACA,EAAQ,KAAK,EAAa,OAAQ,EAAO,SAAS,CAAC,EACnD,EAAQ,KAAK,CAAI,CACrB,CAAC,EChEK,MAAiE,CACnE,IAAI,EAA+D,KAC/D,EAA2C,KAC3C,EAA4C,KAC5C,EAAkB,IAAI,IACtB,EAAkB,GAChB,EAAe,IAAI,IAEnB,MAA0B,CAC5B,GAAI,CAAC,EAAQ,MAAU,MAAM,yCAAyC,EACtE,OAAO,CACX,EACM,MAAgC,CAClC,IAAM,EAAY,EAAK,CAAC,CAAC,cAA2B,gCAAgC,EACpF,GAAI,CAAC,EAAW,MAAU,MAAM,mDAAmD,EACnF,OAAO,CACX,EACM,MAA4B,CAC9B,IAAM,EAAY,EAAW,EACvB,EAAU,CAAC,GAAG,EAAU,iBAAmC,+BAA+B,CAAC,CAAC,CAC7F,IAAK,GAAU,EAAM,KAAK,CAAC,CAC3B,OAAO,OAAO,EACb,EAAO,CAAC,GAAG,EAAa,OAAO,CAAC,EACtC,GAAI,EAAQ,SAAW,EAAK,QAAU,EAAQ,OAAO,EAAO,IAAU,IAAU,EAAK,EAAM,EAAG,MAAO,GACrG,IAAM,EAAS,CAAC,GAAG,EAAa,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAK,KAAgB,CAClE,IAAM,EAAQ,SAAS,cAAc,OAAO,EAM5C,MALA,GAAM,KAAO,SACb,EAAM,KAAO,EAAK,CAAC,CAAC,QAAQ,MAAQ,GACpC,EAAM,MAAQ,EACd,EAAM,QAAQ,oBAAsB,GACpC,EAAM,QAAQ,UAAY,EACnB,CACX,CAAC,EACD,GAAI,EAAO,SAAW,EAAG,CACrB,IAAM,EAAQ,SAAS,cAAc,OAAO,EAC5C,EAAM,KAAO,SACb,EAAM,KAAO,EAAK,CAAC,CAAC,QAAQ,MAAQ,GACpC,EAAM,QAAQ,oBAAsB,GACpC,EAAO,KAAK,CAAK,CACrB,CACA,EAAU,gBAAgB,GAAG,CAAM,EACnC,IAAM,EAAU,EAAO,GAKvB,OAJI,IACA,EAAQ,cAAc,IAAI,MAAM,QAAS,CAAC,QAAS,EAAI,CAAC,CAAC,EACzD,EAAQ,cAAc,IAAI,MAAM,SAAU,CAAC,QAAS,EAAI,CAAC,CAAC,GAEvD,EACX,EACM,MAAsB,CACxB,IAAM,EAAW,EAAO,qBAAqB,EAC7C,EAAK,CAAC,CAAC,QAAQ,YAAc,EAAS,QAAQ,OAC1C,EAAS,QAAQ,MAAO,EAAK,CAAC,CAAC,QAAQ,YAAc,EAAS,QAAQ,MACrE,OAAO,EAAK,CAAC,CAAC,QAAQ,WAC/B,EACM,MAA0B,CAC5B,GAAkB,MAAM,EACxB,EAAmB,KACnB,EAAa,MAAM,EACnB,EAAgB,MAAM,EACtB,EAAkB,GAClB,IAAM,EAAU,EAAW,EACrB,EAAa,EAAK,CAAC,CAAC,cAA2B,4BAA4B,EAC7E,GAAY,cAAc,8DAA8D,GACxF,EAAW,cAAc,IAAI,YAAY,oCAAoC,CAAC,EAElF,EAAO,KAAK,OAAO,EACf,GAAS,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,wBAAwB,CAAC,CACtE,EACM,EAAS,EAAoB,CAC/B,OAAQ,EACR,MAAO,EACP,eAAgB,CAAC,WAAW,EAA0B,CAAC,QAAO,QAAS,CAAC,KAAM,CAAO,CAAC,CAAC,CAC3F,CAAC,EAED,MAAO,CACH,GAAG,EACH,MAAa,CACT,EAAS,KAAK,IACd,EAAO,QAAQ,EAAQ,KAAK,QAAQ,EACpC,EAAO,iBAAmC,+BAA+B,CAAC,CACrE,SAAS,EAAO,IAAU,CACnB,EAAM,OAAO,EAAa,IAAI,EAAM,QAAQ,WAAa,YAAY,IAAS,EAAM,KAAK,CACjG,CAAC,EACL,IAAM,EAAoB,GAAuB,CAC7C,GAAI,EAAE,aAAiB,aAAc,OACrC,IAAM,EAAS,EAAM,OAKf,EAAU,IAAI,KACf,GAAQ,OAAS,CAAC,EAAA,CAAG,SAAS,CAAC,QAAQ,OAAO,GAAO,SAAW,CAAC,CAAE,EAAI,CAAC,CAAC,CAC9E,EACM,EAAqB,MAAM,QAAQ,GAAQ,kBAAkB,EAC7D,EAAO,mBAAmB,OAAQ,GAAqB,OAAO,GAAO,QAAQ,EAC7E,CAAC,EACP,GAAI,EAAmB,OAAS,EAAG,CAC/B,EAAmB,QAAS,GAAO,EAAa,OAAO,CAAE,CAAC,EAC1D,EAAkB,EAClB,EAAW,EACP,EAAa,OAAS,GAAK,EAAQ,OAAS,GAAG,EAAO,KAAK,OAAO,EACtE,MACJ,CACA,GAAI,GAAQ,SAAW,UAAY,GAAQ,SAAW,OAAQ,CAC1D,GAAI,EAAQ,OAAS,EAAG,CACpB,EAAgB,MAAM,EACtB,EAAkB,GAClB,MACJ,CACA,IAAM,EAAmB,CAAC,GAAG,EAAa,KAAK,CAAC,CAAC,CAAC,KAAM,GAAQ,EAAI,WAAW,WAAW,CAAC,EAC3F,EAAkB,EAAO,SAAW,UAC7B,OAAO,EAAK,CAAC,CAAC,QAAQ,UAAY,GAAG,IAAM,GAC3C,EACP,EAAkB,EAClB,MACJ,CAEA,CADoB,GAAG,CAAe,CAAC,CAAC,OAAQ,GAAO,CAAC,EAAQ,IAAI,CAAE,CACtE,CAAA,CAAW,QAAS,GAAO,EAAa,OAAO,CAAE,CAAC,EAClD,EAAkB,EAClB,EAAW,EACP,EAAa,OAAS,GAAK,EAAQ,OAAS,GAAG,EAAO,KAAK,OAAO,CAC1E,EACA,EAAO,iBAAiB,wBAAyB,CAAgB,EACjE,MAA6B,GAAQ,oBAAoB,wBAAyB,CAAgB,EAClG,EAAQ,CACZ,EACA,SAAgB,CACZ,GAAkB,MAAM,EACxB,EAAmB,KACnB,IAAuB,EACvB,EAAuB,KACvB,EAAa,MAAM,EACnB,EAAgB,MAAM,EACtB,EAAkB,GAClB,EAAO,WAAW,EAClB,EAAS,IACb,EACA,OAAc,CACV,EAAY,CAChB,EACA,MAAM,OAAO,EAAY,EAA4B,CACjD,IAAM,EAAU,EAAW,KAAK,MAChC,GAAI,EAAQ,SAAW,EAAG,OAE1B,GAAkB,MAAM,EACxB,IAAM,EAAa,IAAI,gBACvB,EAAmB,EACnB,IAAM,MAAqB,EAAW,MAAM,EAC5C,EAAW,OAAO,iBAAiB,QAAS,EAAQ,CAAC,KAAM,EAAI,CAAC,EAChE,GAAI,CACA,IAAM,EAAQ,EAAO,qBAAqB,CAAC,CAAC,MACtC,EAA6F,CAAC,EACpG,IAAK,IAAM,KAAU,EAAS,CAC1B,IAAM,EAAO,EAAY,EAAO,EAAE,EAClC,GAAI,CAAC,EAAM,MAAU,MAAM,2CAA2C,EACtE,EAAO,KAAK,OAAO,EACnB,IAAM,EAAU,MAAM,EAAgC,EAAM,SAAU,CAClE,QAAS,EAAM,QACf,cAAe,EAAK,KACpB,aAAc,EAAK,MAAQ,2BAC3B,KAAM,EAAK,IACf,EAAG,CAAC,OAAQ,EAAW,MAAM,CAAC,EAC9B,EAAO,KAAK,CAAC,KAAM,WAAY,SAAU,EAAQ,SAAS,CAAC,EAC3D,MAAM,EAAqB,EAAQ,aAAc,EAAM,CACnD,OAAQ,EAAW,OACnB,WAAY,EAAQ,WACpB,YAAa,EAAQ,IAAU,EAAW,KAAK,SAAS,EAAO,GAAI,EAAQ,CAAK,CACpF,CAAC,EACD,EAAO,KAAK,UAAU,EACtB,IAAM,EAAY,MAAM,EAAmC,EAAM,YAAa,CAC1E,WAAY,EAAQ,UACxB,EAAG,CAAC,OAAQ,EAAW,MAAM,CAAC,EAC9B,EAAW,KAAK,SAAS,EAAO,GAAI,EAAO,MAAO,EAAO,KAAK,EAC9D,EAAO,KAAK,CAAC,KAAM,UAAW,SAAU,EAAU,SAAS,CAAC,EAC5D,EAAe,KAAK,CAAC,SAAU,EAAO,GAAI,WAAY,EAAQ,WAAY,WAAS,CAAC,CACxF,CACI,GAAiB,EAAa,MAAM,EACxC,EAAe,SAAS,CAAC,WAAU,gBAAgB,EAAa,IAAI,EAAU,CAAU,CAAC,EACzF,EAAkB,GAClB,EAAW,EACX,EAAS,CACL,GAAI,EAAK,EACT,KAAM,4BACN,OAAQ,CAAC,QAAS,EAAe,KAAK,CAAC,eAAe,CAAS,CAAC,CACpE,CAAC,CACL,OAAS,EAAO,CACZ,GAAI,EAAW,OAAO,QAClB,EAAO,KAAK,QAAQ,MACjB,CACH,IAAM,EAAS,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EACpE,EAAO,KAAK,CAAC,KAAM,OAAQ,MAAO,CAAM,CAAC,EACzC,EAAW,KAAK,KAAK,CAAK,EAC1B,EAAS,CAAC,GAAI,EAAK,EAAG,KAAM,yBAA0B,OAAQ,CAAC,MAAO,CAAM,CAAC,CAAC,CAClF,CACA,MAAM,CACV,QAAU,CACN,EAAW,OAAO,oBAAoB,QAAS,CAAM,EACjD,IAAqB,IAAY,EAAmB,KAC5D,CACJ,CACJ,CACJ,EAEM,EAAuB,EAAiB,iBAAkB,CAAc,ECxOxE,EAAa,IAAI,QAEjB,EAAwB,GAAqC,CAC3D,EAAW,IAAI,CAAc,IACjC,EAAW,IAAI,CAAc,EAE7B,EAAkB,CAAc,EACpC"}
@@ -1,2 +1,2 @@
1
- export * from "./direct-upload-DaT6-YFL.js";
2
- export {default} from "./direct-upload-DaT6-YFL.js";
1
+ export * from "./direct-upload-B4dcq4bn.js";
2
+ export {default} from "./direct-upload-B4dcq4bn.js";
@@ -0,0 +1,2 @@
1
+ import{n as e,r as t,t as n}from"../chunks/dom-DiTFTWeR.js";import{o as r,s as i,t as a}from"../chunks/properties-D8pFWF8g.js";import{c as o,f as s,l as c,n as l,u as ee}from"../chunks/codecs-CQ7olTJL.js";import{a as u,n as te,t as d}from"../chunks/machine-Do4tL7nc.js";import{n as f}from"../chunks/focus-BvBkrIcj.js";import{n as p,t as ne}from"../chunks/alpine-data-Dvc_bXq6.js";import{a as re,i as ie,t as m}from"../chunks/capability-anchor-BqejlBjS.js";import{n as h,t as ae}from"../chunks/collection-navigation-et2se66r.js";import{n as g,t as _}from"../chunks/styles-CX2j92ex.js";import{t as oe}from"../chunks/merge-bindings-BtqW3UgP.js";import{t as se}from"../chunks/dismissable-layer-MzcgNRti.js";import{n as ce}from"../chunks/option-data-Du9mqQPo.js";import{A as v,E as y,F as b,I as x,M as S,N as C,t as w}from"../chunks/common-DnEHZCqy.js";import{i as T,r as E}from"../chunks/layout-mHPk9rxi.js";import{t as D}from"../chunks/controlled-open-Hy4-OT-6.js";var O={auto:``,trigger:`w-[var(--ui-popover-anchor-width)]`,"3xs":`w-[var(--container-3xs)]`,"2xs":`w-[var(--container-2xs)]`,xs:`w-[var(--container-xs)]`},k=e=>`min-w-[min(var(${e}),var(--ui-popover-available-width,var(${e})))]`,A={auto:k(`--spacing-menu-min-width`),trigger:k(`--ui-popover-anchor-width`),"3xs":k(`--container-3xs`),"2xs":k(`--container-2xs`),xs:k(`--container-xs`)},j={auto:`p-popover-padding`,...y},le=_({definition:{component:`ui.menu`,parts:{menu:{base:[b,`grid grid-rows-[auto_minmax(0,1fr)] max-h-[var(--ui-popover-available-height,none)] max-w-[var(--ui-popover-available-width,none)] overflow-hidden rounded-overlay-sm bg-surface`],variants:{width:O,minWidth:A},defaults:{width:`auto`,minWidth:`auto`}},viewport:{base:`row-start-2 min-h-0 min-w-0 max-w-full`},content:{base:`grid min-w-0 auto-rows-min content-start`,variants:{...T.variants,padding:j},defaults:{...T.defaults,gap:`1`,padding:`auto`}},searchHeader:{base:`row-start-1`,variants:{padding:j},defaults:{padding:`auto`}},search:{base:`min-w-0`},searchEmpty:{base:`px-menu-item-padding-inline py-2 text-sm text-surface-ink-muted`},item:{base:[S],variants:{...E.variants,variant:{default:``,subtle:``,filled:``,ghost:``},color:{neutral:``,accent:``,success:``,warning:``,danger:``}},defaults:{variant:`default`,color:`neutral`}},itemLabel:{base:`min-w-0 flex-1 truncate`},itemMeta:{base:C},itemIcon:{base:v,variants:{position:{leading:``,trailing:`ml-auto`}},defaults:{position:`leading`}},submenu:{base:`contents`},submenuPanel:{base:``},group:{base:`grid auto-rows-min content-start`,variants:T.variants,defaults:{...T.defaults,gap:`1`}},label:{base:`px-menu-item-padding-inline py-1 font-label text-label text-surface-ink-muted [font-weight:var(--font-weight-label)]`},separatorRoot:{variants:{orientation:{vertical:`self-stretch self-center`,horizontal:`-mx-popover my-popover h-[var(--border-width-edge-separator)]`}},defaults:{orientation:`horizontal`}},separatorRule:{variants:{orientation:{vertical:`h-full w-[var(--border-width-edge-separator)] border-0 bg-separator`,horizontal:`h-[var(--border-width-edge-separator)] w-full border-0 bg-separator`}},defaults:{orientation:`horizontal`}}}}}),M=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),ue=({origin:e,panel:t})=>{let n=t.left>=e.x?t.left:t.right,r={x:n,y:t.top},i={x:n,y:t.bottom},a=Math.min(e.x,n),o=Math.max(e.x,n);return{contains(t){if(t.x<=a||t.x>=o)return!1;let n=M(t,e,r),s=M(t,r,i),c=M(t,i,e);return!((n<0||s<0||c<0)&&(n>0||s>0||c>0))}}},N=x,de=w,P={side:c(N,`bottom`),align:c(de,`start`),offset:o.clamp(-100,100).default(0),gap:o.clamp(0,50).default(4),open:l,disabled:l,class:s},F=e=>({}),fe=[u({name:`opening`,state:`opening`,project:F,onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),u({name:`closing`,state:`closing`,project:F,onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],I=D(),L=e=>e.focus===`first`?`first`:`menu`,R=e=>e.restoreFocus===!0,z=e=>Array.isArray(e.path)?e.path.filter(e=>typeof e==`string`):[],pe=({props:e,effects:t})=>d({initial:`closed`,states:{closed:{tags:[`closed`],on:{OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:I.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}},opening:{tags:[`visible`,`expanded`,`interactive`,`transitioning`],on:{OPENING_DONE:{target:`open`,effects:`finishOpen`},OPENING_ERROR:{target:`open`,effects:`finishOpen`},CLOSE:{target:`closing`,reduce:`resetMenu`,effects:[`syncSubmenus`,`prepareClose`]},TOGGLE:{target:`closing`,reduce:`resetMenu`,effects:[`syncSubmenus`,`prepareClose`]},SUBMENU_PATH_CHANGED:{reduce:`replaceSubmenuPath`,effects:`syncSubmenus`},QUERY_CHANGED:{reduce:`replaceQuery`,effects:[`syncSubmenus`,`syncSearch`]},PROPS_CHANGED:[{target:`closing`,guard:I.shouldClose,reduce:`replacePropsAndResetMenu`,effects:[`syncSubmenus`,`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},open:{tags:[`visible`,`expanded`,`interactive`,`open`],on:{CLOSE:{target:`closing`,reduce:`resetMenu`,effects:[`syncSubmenus`,`prepareClose`]},TOGGLE:{target:`closing`,reduce:`resetMenu`,effects:[`syncSubmenus`,`prepareClose`]},SUBMENU_PATH_CHANGED:{reduce:`replaceSubmenuPath`,effects:`syncSubmenus`},QUERY_CHANGED:{reduce:`replaceQuery`,effects:[`syncSubmenus`,`syncSearch`]},PROPS_CHANGED:[{target:`closing`,guard:I.shouldClose,reduce:`replacePropsAndResetMenu`,effects:[`syncSubmenus`,`prepareClose`,`syncProps`]},{reduce:`replaceProps`,effects:`syncProps`}]}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:{target:`closed`,effects:`finishClose`},CLOSING_ERROR:{target:`closed`,effects:`finishClose`},OPEN:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},TOGGLE:{target:`opening`,guard:`canOpen`,effects:`prepareOpen`},PROPS_CHANGED:[{target:`opening`,guard:I.shouldOpen,reduce:`replaceProps`,effects:[`syncProps`,`prepareOpen`]},{reduce:`replaceProps`,effects:`syncProps`}]}}}},{context:{openSubmenuIds:[],query:``},props:e,reducers:{replaceProps:I.replace,replaceSubmenuPath:e=>({context:{...e.context,openSubmenuIds:z(e.event)}}),replaceQuery:({context:e,event:t})=>({context:{...e,openSubmenuIds:[],query:String(t.query??``)}}),resetMenu:e=>({context:{...e.context,openSubmenuIds:[],query:``}}),replacePropsAndResetMenu:e=>{let t=I.replace(e);return t?{...t,context:{...e.context,openSubmenuIds:[],query:``}}:void 0}},guards:{canOpen:({props:e})=>!e.disabled},effects:{prepareOpen:({event:e})=>t.prepareOpen(L(e)),finishOpen:t.finishOpen,prepareClose:({event:e})=>t.prepareClose(R(e),e.type!==`PROPS_CHANGED`),finishClose:t.finishClose,syncProps:t.syncProps,syncSubmenus:({context:e})=>t.syncSubmenus(e.openSubmenuIds),syncSearch:t.syncSearch}}),me=_({definition:{component:`ui.dropdown`,parts:{root:{base:`contents`}}}}),B=new Set([`BUTTON`,`DETAILS`,`EMBED`,`IFRAME`,`INPUT`,`LABEL`,`OBJECT`,`SELECT`,`SUMMARY`,`TEXTAREA`]),V=new Set([`button`,`checkbox`,`combobox`,`gridcell`,`link`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`option`,`radio`,`scrollbar`,`searchbox`,`slider`,`spinbutton`,`switch`,`tab`,`textbox`,`treeitem`]),H=e=>{let t=e.tagName,n=e.getAttribute(`role`)?.trim().toLowerCase().split(/\s+/)??[];return B.has(t)||(t===`A`||t===`AREA`)&&e.hasAttribute(`href`)||(t===`AUDIO`||t===`VIDEO`)&&e.hasAttribute(`controls`)||t===`IMG`&&e.hasAttribute(`usemap`)||e.hasAttribute(`tabindex`)||e.isContentEditable||e.hasAttribute(`data-ui-interactive`)||n.some(e=>V.has(e))},he=e=>{let t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),n=[],r=t.nextNode();for(;r;){let i=r.parentElement,a=i?.closest(`[aria-hidden="true"], [hidden], script, style, template`);i&&(!a||!e.contains(a))&&n.push(r.textContent??``),r=t.nextNode()}return n.join(` `).replace(/\s+/g,` `).trim()},ge=e=>{let t=e.querySelector(`:scope > [data-ui-submenu-trigger]`),n=e.querySelector(`:scope > [data-ui-menu-submenu-panel]`);if(!t||!n)throw Error(`Menu submenu requires a trigger and nested menu panel.`);let r=Array.from(e.children);if(r.length!==2||r[0]!==t||r[1]!==n)throw Error(`Menu submenu trigger content produced invalid button structure; nested interactive content is not allowed.`);let i=e.dataset.uiSubmenuTriggerSource;if(!i||i===`missing`)throw Error(`Menu submenu requires heading or a trigger slot.`);if(i===`conflict`)throw Error(`Menu submenu accepts heading or a trigger slot, not both.`);let a=t.querySelector(`:scope > [data-ui-submenu-trigger-content]`);if(!a)throw Error(`Menu submenu requires an owned trigger-content wrapper.`);if(Array.from(a.querySelectorAll(`*`)).some(H))throw Error(`Menu submenu trigger content must not contain interactive or focusable descendants.`);if(!(t.dataset.textValue?.trim()??``)&&!he(a))throw Error(`Menu submenu trigger content requires accessible text or text_value.`);return{trigger:t,panel:n}},_e=0,U=()=>{let o=null,s=!1,c=!0,l=``,u=``,d=null,p=null,m=null,_=new Map,v=null,y=!1,b=null,x=null,S,C=re(()=>D()),w=`menu`,T=()=>{if(!o)throw Error(`Dropdown has not been initialized.`);return o},E=()=>{let e=Array.from(T().children).find(e=>e instanceof HTMLElement&&!e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a trigger element before the menu.`);return e},D=()=>{let e=Array.from(T().children).find(e=>e instanceof HTMLElement&&e.matches(`[data-ui-menu]`));if(!(e instanceof HTMLElement))throw Error(`Dropdown requires a menu element.`);return e},O=()=>Q.getSnapshot().props,k=()=>Q.hasTag(`expanded`),A=()=>Q.hasTag(`visible`),j=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-menu-item]`);return t&&T().contains(t)?t:null},M=t=>e({value:t.dataset.disabled})||t.getAttribute(`aria-disabled`)===`true`||t.hasAttribute(`disabled`),N=()=>{if(!p)throw Error(`Dropdown navigation has not been initialized.`);return p},de=e=>{let t=e.querySelector(`:scope > [data-ui-menu-scroll-area] > [data-ui-scroll-area-viewport] > [data-ui-scroll-area-content] > [data-ui-menu-content]`);if(!t)throw Error(`Menu requires its authored content grid.`);return t},F=()=>D().querySelector(`:scope > [data-ui-menu-search-header] > [data-ui-menu-search] [data-ui-input]`),I=()=>{let e=Array.from(T().querySelectorAll(`[data-ui-menu-search]`)).filter(e=>e.closest(`[data-ui-dropdown]`)===T());if(e.length>1||e.some(e=>e.parentElement!==D().querySelector(`:scope > [data-ui-menu-search-header]`)))throw Error(`Menu search must be composed once in the search slot of the root Menu.`)},L=e=>{N().clearActiveItem(),f(e)},R=()=>{let e=F(),t=e?Q.getCommittedSnapshot().context.query:``;e&&e.value!==t&&(e.value=t,e.dispatchEvent(new Event(`input`,{bubbles:!0})));let n=N().allItems();n.forEach(e=>{let n=e.dataset.textValue||e.querySelector(`[data-ui-menu-item-label], [data-ui-submenu-trigger-content]`)?.textContent||e.textContent||``;e.toggleAttribute(`data-ui-menu-filtered`,!ce(n,t))}),D().querySelectorAll(`[data-ui-menu-group]`).forEach(e=>{e.closest(`[data-ui-menu]`)===D()&&e.toggleAttribute(`data-ui-menu-filtered`,!!t&&!n.some(t=>e.contains(t)&&!t.hasAttribute(`data-ui-menu-filtered`)))}),N().refresh();let r=D().querySelector(`[data-ui-menu-search-empty]`);r&&(r.hidden=!t||n.some(e=>!e.hasAttribute(`data-ui-menu-filtered`)))},z=()=>{T().querySelectorAll(`[data-ui-menu-scroll-area] > [data-ui-scroll-area-viewport]`).forEach(e=>{e.closest(`[data-ui-dropdown]`)===T()&&(e.tabIndex=-1)}),N().reconcileItems(Array.from(D().querySelectorAll(`[data-ui-menu-item]`)).filter(e=>e.closest(`[data-ui-menu]`)===D())),_.forEach(({panel:e,collection:t})=>t.reconcileItems(Array.from(e.querySelectorAll(`[data-ui-menu-item]`)).filter(t=>t.closest(`[data-ui-menu]`)===e))),[N(),...Array.from(_.values(),({collection:e})=>e)].forEach(e=>e.allItems().forEach(e=>{e.hasAttribute(`role`)||e.setAttribute(`role`,`menuitem`),e.tabIndex=-1,M(e)&&e.setAttribute(`aria-disabled`,`true`)})),R()},B=e=>e?Array.from(_.values()).find(({trigger:t})=>t===e)??null:null,V=e=>Array.from(_.values()).find(t=>t.id===e)??null,H=e=>e?Array.from(_.values()).find(({panel:t})=>t===e)??null:null,he=e=>{let t=e.root.parentElement?.closest(`[data-ui-menu-submenu-panel]`)??null;return H(t)},U=e=>{let t=[],n=e;for(;n;)t.unshift(n.id),n=he(n);return t},W=()=>Q.getSnapshot().context.openSubmenuIds,G=e=>{b=null,e.length===0&&(x=null),_.forEach(t=>{let n=e.includes(t.id);t.root.dataset.state=n?`open`:`closed`,t.trigger.dataset.state=n?`open`:`closed`,t.trigger.setAttribute(`aria-expanded`,n?`true`:`false`),t.panel.dataset.state=n?`open`:`closed`,t.panel.hidden=!n,n?t.popover.open():(t.collection.clearActiveItem(),t.popover.close())})},K=e=>{let t=e.trigger.id||`${e.id}-trigger`,n=e.panel.id||`${e.id}-menu`;e.root.dataset.submenuId=e.id,e.trigger.id=t,e.trigger.setAttribute(`aria-controls`,n),e.panel.id=n,e.panel.setAttribute(`aria-labelledby`,t),e.panel.setAttribute(`popover`,`manual`),e.panel.setAttribute(`role`,`menu`),e.panel.tabIndex=-1},ve=t=>{let{trigger:n,panel:r}=ge(t),i=_.get(t);if(i?.trigger===n&&i.panel===r){K(i);return}let a=i?.id;i&&q(t);let o=a||t.dataset.submenuId||`ui-submenu-${++_e}`;t.dataset.state=`closed`,n.dataset.state=`closed`,n.setAttribute(`aria-expanded`,`false`),r.dataset.state=`closed`,r.hidden=!0;let s=h({root:()=>r,isDisabled:M,loop:()=>e({value:r.dataset.loop})}),c={id:o,root:t,trigger:n,panel:r,popover:ie({reference:()=>({contextElement:n,getBoundingClientRect:()=>{let e=n.getBoundingClientRect(),t=n.closest(`[data-ui-menu]`).getBoundingClientRect();return new DOMRect(t.left,e.top,t.width,e.height)}}),floating:()=>r,position:()=>`right`,align:()=>`start`,shiftAxes:`both`,gap:()=>O().gap,offset:()=>-Number.parseFloat(getComputedStyle(de(r)).paddingTop)}),collection:s};_.set(t,c),K(c)},q=e=>{let t=_.get(e);t&&(t.collection.destroy(),t.popover.destroy(),_.delete(e),b=null)},ye=()=>{let e=W(),t=[];for(let n=e.length-1;n>=0;--n){let r=V(e[n]);if(r){t=U(r);break}}t.length===e.length&&t.every((t,n)=>t===e[n])||Q.send({type:`SUBMENU_PATH_CHANGED`,path:t})},be=()=>{I();let e=Array.from(T().querySelectorAll(`[data-ui-menu-submenu]`)),t=new Set(e),n=!1;Array.from(_.keys()).forEach(e=>{t.has(e)||(q(e),n=!0)}),n&&ye(),e.forEach(ve),ye(),G(W()),z()},xe=()=>{y||(y=!0,queueMicrotask(()=>{y=!1,o&&be()}))},Se=e=>{e.some(e=>e.type===`childList`||e.target instanceof Element&&e.target.closest(`[data-ui-submenu-trigger-content]`)!==null)&&xe()},Ce=e=>{let t=e.items().find(e=>e.hasAttribute(`data-selected`)||[`true`,`mixed`].includes(e.getAttribute(`aria-checked`)??``));return t?(e.activateItem({el:t}),!0):!1},J=(e,t=!1)=>{M(e.trigger)||(Q.send({type:`SUBMENU_PATH_CHANGED`,path:U(e)}),queueMicrotask(()=>{t?e.collection.focusFirst():Ce(e.collection)}))},we=(e,t=!1)=>{let n=U(e);Q.send({type:`SUBMENU_PATH_CHANGED`,path:n.slice(0,-1)}),t&&f(e.trigger,{showIndicator:!1})},Te=()=>{let e=E(),t=e.getAttribute(`tabindex`);d={ariaDisabled:e.getAttribute(`aria-disabled`),dataDisabled:e.getAttribute(`data-disabled`),disabled:e instanceof HTMLButtonElement?e.disabled:null,tabIndex:t??(e.tabIndex<0?`0`:null)}},Y=(e,t,n)=>{n===null?e.removeAttribute(t):e.setAttribute(t,n)},X=()=>{s&&(k()||c)&&ee({el:T(),schema:P,key:`open`,value:k()});let e=E(),t=d;if(t){if(e.id||=l,e.setAttribute(`data-ui-dropdown-trigger`,``),e.setAttribute(`aria-expanded`,k()?`true`:`false`),e.setAttribute(`aria-controls`,u),e.setAttribute(`data-state`,k()?`open`:`closed`),O().disabled){e.setAttribute(`aria-disabled`,`true`),e.setAttribute(`data-disabled`,``),e.tabIndex=-1,e instanceof HTMLButtonElement&&(e.disabled=!0);return}Y(e,`aria-disabled`,t.ariaDisabled),Y(e,`data-disabled`,t.dataDisabled),Y(e,`tabindex`,t.tabIndex),e instanceof HTMLButtonElement&&t.disabled!==null&&(e.disabled=t.disabled)}},Z=()=>{let e=D();e.id=u,e.setAttribute(`popover`,`manual`),e.setAttribute(`role`,`menu`),e.tabIndex=-1,e.hidden=!A(),e.setAttribute(`data-state`,k()?`open`:`closed`),z()},Ee=e=>{w=e,m?.opened()||C.defer(),c=!0,X(),Z(),m?.open()},De=()=>{if(!Q.hasTag(`interactive`))return;let e=F();e?L(e):w===`first`?N().focusFirst():(Ce(N()),f(D()))},Oe=()=>{C.reveal()&&De(),X(),Z(),t({el:T(),name:`ui:open`})},ke=(e,t)=>{c=t,N().clearActiveItem(),X(),Z(),e&&f(E(),{showIndicator:!1})},Ae=()=>{m?.close(),C.reveal(),X(),Z(),c=!0,t({el:T(),name:`ui:close`})},je=()=>{X(),Z(),m?.sync()},Q=te({schema:P,hooks:fe,createMachine:({props:e})=>pe({props:e,effects:{prepareOpen:Ee,finishOpen:Oe,prepareClose:ke,finishClose:Ae,syncProps:je,syncSubmenus:G,syncSearch:R}})}),Me=(e=`menu`,t)=>{if(t?.preventDefault(),!O().disabled){if(Q.hasTag(`expanded`)){e===`first`&&N().focusFirst();return}Q.send({type:`OPEN`,focus:e})}},$=(e,t)=>{t?.preventDefault(),Q.send({type:`CLOSE`,restoreFocus:e})},Ne=(t,n)=>{if(M(t)){n.preventDefault();return}let r=e({value:D().dataset.keepOpen});(t.dataset.keepOpen===void 0||t.dataset.keepOpen===``?r:e({value:t.dataset.keepOpen}))||$(!1)},Pe=e=>{let t=j(e.target);if(t){let n=B(t);if(n){e.preventDefault(),J(n);return}Ne(t,e);return}let n=e.target;n instanceof Node&&E().contains(n)&&(e.preventDefault(),O().disabled||Q.send(`TOGGLE`))},Fe=e=>{let t=F();t&&e.target===t&&t.value!==Q.getCommittedSnapshot().context.query&&Q.send({type:`QUERY_CHANGED`,query:t.value})},Ie=e=>{if(!(e instanceof KeyboardEvent)||e.isComposing||e.keyCode===229||e.ctrlKey||e.metaKey||e.altKey)return;let t=F(),n=j(e.target);t&&n&&n.closest(`[data-ui-menu]`)===D()&&(e.key===`Backspace`||e.key.length===1&&e.key!==` `)&&(e.preventDefault(),e.stopPropagation(),L(t),t.value=e.key===`Backspace`?Array.from(t.value).slice(0,-1).join(``):t.value+e.key,t.dispatchEvent(new Event(`input`,{bubbles:!0})),t.setSelectionRange(t.value.length,t.value.length))},Le=t=>{if(!(t instanceof KeyboardEvent))return;let n=F();if(n&&(t.isComposing||t.keyCode===229))return;if(t.key===`Escape`&&A()){t.preventDefault(),t.stopPropagation();let e=V(W().at(-1)??``);if(e){we(e,!0);return}$(!0);return}let r=t.target;if(r instanceof Node&&E().contains(r)){if(t.key===`ArrowDown`){Me(`first`,t);return}let e=E();!(e instanceof HTMLButtonElement)&&!(e instanceof HTMLAnchorElement)&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),O().disabled||Q.send(`TOGGLE`));return}let i=j(t.target);if(n&&(t.target===n||i?.closest(`[data-ui-menu]`)===D())){if(t.ctrlKey||t.metaKey||t.altKey||t.shiftKey)return;if(t.key===`ArrowDown`||t.key===`ArrowUp`){t.preventDefault();let r=N().items(),a=t.target===n?0:r.indexOf(i)+1,o=ae(a,r.length+1,t.key===`ArrowDown`?1:-1,e({value:D().dataset.loop}));o===0?L(n):N().focusItem({el:r[o-1]});return}if(t.target===n){t.key===`Enter`&&t.preventDefault();return}}let a=B(i);if(a&&(t.key===`ArrowRight`||t.key===`Enter`||t.key===` `)){t.preventDefault(),J(a,!0);return}let o=t.target instanceof Element?t.target.closest(`[data-ui-menu-submenu-panel]`):null,s=H(o);if(s&&t.key===`ArrowLeft`){t.preventDefault(),we(s,!0);return}if(i&&(t.key===`Enter`||t.key===` `)&&i.matches(`[role="menuitemcheckbox"], [role="menuitemradio"]`)){t.preventDefault(),i.querySelector(`input[type="checkbox"], input[type="radio"]`)?.click();return}s?s.collection.handleKeydown({event:t}):D().contains(t.target)&&N().handleKeydown({event:t})},Re=e=>{if(e.target===F()){N().clearActiveItem();return}let t=j(e.target);t&&!M(t)&&N().activateItem({el:t})},ze=e=>{if(!(e instanceof PointerEvent)||(x={x:e.clientX,y:e.clientY},b?.contains({x:e.clientX,y:e.clientY})))return;let t=j(e.target);if(!t||M(t))return;b=null;let n=B(t),r=t.closest(`[data-ui-menu-submenu-panel]`),i=H(r);if((i?.collection??N()).activateItem({el:t}),n){J(n);return}Q.send({type:`SUBMENU_PATH_CHANGED`,path:i?U(i):[]})},Be=e=>{if(!(e instanceof PointerEvent)||!window.matchMedia(`(hover: hover) and (pointer: fine)`).matches)return;let t=j(e.target),n=B(t);if(!n||!W().includes(n.id)||e.relatedTarget instanceof Node&&n.panel.contains(e.relatedTarget))return;let r=n.panel.getBoundingClientRect();b=ue({origin:x??{x:e.clientX,y:e.clientY},panel:{left:r.left,right:r.right,top:r.top,bottom:r.bottom}})},Ve=e=>{if(`newState`in e){if(e.newState===`open`){A()||Q.send(`OPEN`);return}A()&&Q.send(`CLOSE`)}},He;return He={...Q,get isOpen(){return this.snapshot.current?.tags.includes(`expanded`)??!1},init(){S=ne(this),o=this.$el,Q.connect(this.$el,this.snapshot),l=E().id||this.$id(`dropdown-trigger`),u=D().id||this.$id(`dropdown-menu`),Te(),p=h({root:()=>D(),isDisabled:M,loop:()=>e({value:D().dataset.loop})}),m=ie({reference:()=>{let e=E();return e.hasAttribute(`data-ui-button`)?{contextElement:e,getBoundingClientRect:()=>{let t=e.getBoundingClientRect(),n=getComputedStyle(e),r=e.offsetWidth?t.width/e.offsetWidth:1,i=e.offsetHeight?t.height/e.offsetHeight:1,a=Math.min(0,Number.parseFloat(n.marginLeft)||0)*r,o=Math.min(0,Number.parseFloat(n.marginRight)||0)*r,s=Math.min(0,Number.parseFloat(n.marginTop)||0)*i,c=Math.min(0,Number.parseFloat(n.marginBottom)||0)*i;return new DOMRect(t.x-a,t.y-s,Math.max(0,t.width+a+o),Math.max(0,t.height+s+c))}}:e},floating:D,position:()=>O().side,align:()=>O().align,gap:()=>O().gap,offset:()=>O().offset}),S.add(Q.onTransition(`opening`,e=>{let t=()=>{if(e.signal.aborted||(C.reveal(),De(),T().hasAttribute(`x-ui-transition:opening`)))return;let t=D();return a(e,r(t),{target:t,role:`feedback`})},n=C.pending()?m?.positioned():null;return n?n.then(t):t()})),S.add(Q.onTransition(`closing`,e=>{let t=()=>{if(!e.signal.aborted&&(C.reveal(),!T().hasAttribute(`x-ui-transition:closing`)))return a(e,i,{target:D(),role:`feedbackExit`})},n=C.pending()?m?.positioned():null;return n?n.then(t):t()})),be(),v=new MutationObserver(Se),v.observe(T(),{attributeFilter:[`contenteditable`,`controls`,`data-ui-interactive`,`href`,`role`,`tabindex`,`usemap`],attributes:!0,childList:!0,subtree:!0}),S.add(se({isEnabled:()=>Q.hasTag(`interactive`),roots:()=>[T(),D()],onDismiss:()=>$(!1)}));let t=()=>{b=null,x=null};n({target:window,event:`blur`,handler:t,cleanup:S}),n({target:window,event:`resize`,handler:t,cleanup:S}),n({target:window,event:`scroll`,handler:t,cleanup:S,options:{capture:!0}}),X(),Z(),G([]),s=!0,O().open&&queueMicrotask(()=>Q.send(`OPEN`))},destroy(){v?.disconnect(),v=null,y=!1,Q.disconnect(),C.reveal(),m?.destroy(),Array.from(_.keys()).forEach(q),b=null,x=null,m=null,p?.destroy(),p=null,d=null,o=null},get root(){let e=this.snapshot.current?.props??O();return oe({inputs:[g({part:me.parts.root,props:e,className:e.class}),{"data-ui-dropdown":``,":data-state":()=>Q.hasTag(`expanded`)?`open`:`closed`,"@click":Pe,"@keydown.capture":Ie,"@keydown":Le,"@input":Fe,"@focusin":Re,"@pointermove":ze,"@pointerout":Be}]})},get menu(){let e=D();return oe({inputs:[g({part:le.parts.menu,props:{width:e.dataset.width,minWidth:e.dataset.minWidth},className:e.dataset.class}),{id:u,popover:`manual`,role:`menu`,tabindex:`-1`,"data-ui-menu":``,":hidden":()=>!Q.hasTag(`visible`),":data-state":()=>Q.hasTag(`expanded`)?`open`:`closed`,"@toggle":Ve}]})},open(e){Me(`menu`,e)},close(e){$(e instanceof KeyboardEvent,e)},toggle(e){e?.preventDefault(),!O().disabled&&Q.send({type:`TOGGLE`,restoreFocus:e instanceof KeyboardEvent})}},He},W=p(`UiDropdown`,U),G=new WeakSet,K=e=>{G.has(e)||(G.add(e),m(e),W(e))};export{U as UiDropdown,K as default,K as registerDropdown};
2
+ //# sourceMappingURL=dropdown-BEMZqp_I.js.map