@vireo-ai/trellis-ui 0.1.61 → 0.1.63

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 (537) hide show
  1. package/THIRD_PARTY_NOTICES.md +9 -0
  2. package/package.json +15 -35
  3. package/packages/client/skills/compose-trellis-ui/SKILL.md +84 -0
  4. package/packages/client/skills/compose-trellis-ui/references/project-ui.md +40 -0
  5. package/packages/client/src/components/accordion/styles.css +21 -9
  6. package/packages/client/src/components/badge/styles.css +12 -0
  7. package/packages/client/src/components/button/styles.css +31 -5
  8. package/packages/client/src/components/card/styles.css +16 -0
  9. package/packages/client/src/components/checkbox/styles.css +29 -5
  10. package/packages/client/src/components/date-picker/styles.css +22 -17
  11. package/packages/client/src/components/field/styles.css +16 -16
  12. package/packages/client/src/components/input/styles.css +1 -0
  13. package/packages/client/src/components/keybinding/styles.css +9 -2
  14. package/packages/client/src/components/menu/styles.css +13 -0
  15. package/packages/client/src/components/panels/styles.css +12 -2
  16. package/packages/client/src/components/scroll-area/styles.css +169 -2
  17. package/packages/client/src/components/select/styles.css +28 -8
  18. package/packages/client/src/components/sidebar/styles.css +218 -0
  19. package/packages/client/src/components/slider/styles.css +57 -0
  20. package/packages/client/src/components/tabs/styles.css +26 -24
  21. package/packages/client/src/components/toast/styles.css +31 -0
  22. package/packages/client/src/directives/sortable.css +5 -0
  23. package/packages/client/src/runtime/drag-and-drop/resize-handle.css +2 -2
  24. package/packages/client/src/styles/components.css +8 -4
  25. package/packages/client/src/styles/fonts/fira-code/5.3.0/LICENSE +93 -0
  26. package/packages/client/src/styles/fonts/fira-code/5.3.0/download.json +47 -0
  27. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  28. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  29. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  30. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  31. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  32. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  33. package/packages/client/src/styles/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  34. package/packages/client/src/styles/fonts/fira-code/5.3.0/font.css +62 -0
  35. package/packages/client/src/styles/fonts/fira-code/5.3.0/resource.json +82 -0
  36. package/packages/client/src/styles/fonts/inter/5.3.0/LICENSE +93 -0
  37. package/packages/client/src/styles/fonts/inter/5.3.0/download.json +47 -0
  38. package/packages/client/src/styles/fonts/inter/5.3.0/font.css +62 -0
  39. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  40. package/packages/client/src/styles/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  41. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  42. package/packages/client/src/styles/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  43. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  44. package/packages/client/src/styles/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  45. package/packages/client/src/styles/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  46. package/packages/client/src/styles/fonts/inter/5.3.0/resource.json +82 -0
  47. package/packages/client/src/styles/generated/theme-fonts.css +3 -3
  48. package/packages/client/src/styles/generated/theme-palette.css +1001 -634
  49. package/packages/client/src/styles/generated/theme-runtime.css +938 -607
  50. package/packages/client/src/styles/generated-sources.css +1 -1
  51. package/packages/client/src/styles/layout.css +88 -0
  52. package/packages/client/src/styles/recipes/action.css +4 -16
  53. package/packages/client/src/styles/recipes/disabled.css +8 -0
  54. package/packages/client/src/styles/recipes/option.css +0 -44
  55. package/packages/client/src/styles/recipes/selection.css +28 -39
  56. package/packages/client/src/styles/theme-support.css +26 -42
  57. package/packages/client/src/styles/typography.css +26 -0
  58. package/packages/client/types/assets/bridge.d.ts +1 -2
  59. package/packages/client/types/capabilities/collection.d.ts +7 -0
  60. package/packages/client/types/capabilities/collection.entry.generated.d.ts +3 -0
  61. package/packages/client/types/capabilities/shortcut.d.ts +4 -3
  62. package/packages/client/types/components/accordion/machine.d.ts +4 -4
  63. package/packages/client/types/components/app/contract.d.ts +5 -5
  64. package/packages/client/types/components/badge/contract.d.ts +1 -0
  65. package/packages/client/types/components/box/contract.d.ts +17 -12
  66. package/packages/client/types/components/box/index.d.ts +1 -1
  67. package/packages/client/types/components/button/contract.d.ts +3 -2
  68. package/packages/client/types/components/card/contract.d.ts +27 -16
  69. package/packages/client/types/components/checkbox/contract.d.ts +13 -13
  70. package/packages/client/types/components/common.d.ts +13 -11
  71. package/packages/client/types/components/container/contract.d.ts +4 -3
  72. package/packages/client/types/components/data-grid/contract.d.ts +3 -2
  73. package/packages/client/types/components/date-picker/contract.d.ts +2 -2
  74. package/packages/client/types/components/date-picker/machine.d.ts +11 -11
  75. package/packages/client/types/components/dropdown/contract.d.ts +1 -1
  76. package/packages/client/types/components/dropdown/machine.d.ts +5 -3
  77. package/packages/client/types/components/field/contract.d.ts +4 -4
  78. package/packages/client/types/components/file-upload/contract.d.ts +3 -3
  79. package/packages/client/types/components/file-upload/machine.d.ts +4 -4
  80. package/packages/client/types/components/flex/contract.d.ts +10 -8
  81. package/packages/client/types/components/frame/contract.d.ts +14 -11
  82. package/packages/client/types/components/grid/contract.d.ts +8 -7
  83. package/packages/client/types/components/image/contract.d.ts +1 -0
  84. package/packages/client/types/components/import-flow/contract.d.ts +1 -0
  85. package/packages/client/types/components/input/contract.d.ts +1 -0
  86. package/packages/client/types/components/input/machine.d.ts +2 -2
  87. package/packages/client/types/components/layout.d.ts +91 -35
  88. package/packages/client/types/components/menu/contract.d.ts +27 -10
  89. package/packages/client/types/components/modal/contract.d.ts +22 -5
  90. package/packages/client/types/components/panels/contract.d.ts +2 -2
  91. package/packages/client/types/components/panels/index.d.ts +2 -1
  92. package/packages/client/types/components/panels/machine.d.ts +9 -8
  93. package/packages/client/types/components/radio/contract.d.ts +8 -8
  94. package/packages/client/types/components/scroll-area/contract.d.ts +1 -20
  95. package/packages/client/types/components/section/contract.d.ts +4 -3
  96. package/packages/client/types/components/select/contract.d.ts +3 -3
  97. package/packages/client/types/components/select/machine.d.ts +13 -13
  98. package/packages/client/types/components/select/presentation.d.ts +1 -0
  99. package/packages/client/types/components/sidebar/contract.d.ts +26 -8
  100. package/packages/client/types/components/sidebar/groups.d.ts +4 -0
  101. package/packages/client/types/components/sidebar/index.d.ts +5 -4
  102. package/packages/client/types/components/slider/contract.d.ts +1 -0
  103. package/packages/client/types/components/slider/machine.d.ts +10 -5
  104. package/packages/client/types/components/stack/contract.d.ts +10 -8
  105. package/packages/client/types/components/switch/contract.d.ts +8 -8
  106. package/packages/client/types/components/table/contract.d.ts +6 -5
  107. package/packages/client/types/components/tabs/index.d.ts +2 -1
  108. package/packages/client/types/components/tabs/machine.d.ts +2 -2
  109. package/packages/client/types/components/textarea/contract.d.ts +1 -1
  110. package/packages/client/types/components/toast/machine.d.ts +2 -2
  111. package/packages/client/types/components/tooltip/contract.d.ts +13 -13
  112. package/packages/client/types/components/tooltip/machine.d.ts +3 -7
  113. package/packages/client/types/core.d.ts +3 -1
  114. package/packages/client/types/directives/anchor.d.ts +1 -0
  115. package/packages/client/types/directives/animate.d.ts +3 -0
  116. package/packages/client/types/directives/collection.d.ts +9 -0
  117. package/packages/client/types/directives/index.d.ts +2 -2
  118. package/packages/client/types/docs/transition-docs.d.ts +0 -2
  119. package/packages/client/types/motion/animate.d.ts +7 -2
  120. package/packages/client/types/motion/config.d.ts +118 -0
  121. package/packages/client/types/motion/feedback.d.ts +3 -0
  122. package/packages/client/types/motion/index.d.ts +8 -107
  123. package/packages/client/types/motion/layout.d.ts +25 -0
  124. package/packages/client/types/motion/lifecycle.d.ts +10 -0
  125. package/packages/client/types/motion/owned.d.ts +15 -4
  126. package/packages/client/types/motion/properties.d.ts +17 -0
  127. package/packages/client/types/motion/recipe.d.ts +8 -75
  128. package/packages/client/types/motion/reduced-motion.d.ts +7 -8
  129. package/packages/client/types/motion/registry.d.ts +37 -0
  130. package/packages/client/types/motion/resize-preview.d.ts +26 -0
  131. package/packages/client/types/motion/resize.d.ts +3 -1
  132. package/packages/client/types/motion/size.d.ts +7 -4
  133. package/packages/client/types/runtime/anchored-popover.d.ts +11 -2
  134. package/packages/client/types/runtime/collection-navigation.d.ts +12 -4
  135. package/packages/client/types/runtime/control-size.d.ts +4 -0
  136. package/packages/client/types/runtime/drag-and-drop/index.d.ts +10 -3
  137. package/packages/client/types/runtime/drag-and-drop/sortable/ghost.d.ts +2 -1
  138. package/packages/client/types/runtime/engine/fragment.d.ts +2 -1
  139. package/packages/client/types/runtime/engine/stream.d.ts +5 -9
  140. package/packages/client/types/runtime/focus.d.ts +3 -1
  141. package/packages/client/types/runtime/index.d.ts +2 -2
  142. package/packages/client/types/runtime/layout-participant.d.ts +10 -9
  143. package/packages/client/types/runtime/layout-task.d.ts +9 -0
  144. package/packages/client/types/runtime/morph-engine.d.ts +1 -0
  145. package/packages/client/types/runtime/option-data.d.ts +2 -1
  146. package/packages/client/types/runtime/preferences.d.ts +14 -0
  147. package/packages/client/types/runtime/scroll-area-schema.d.ts +23 -0
  148. package/packages/client/types/runtime/theme.d.ts +6 -4
  149. package/packages/client/types/runtime/ui.d.ts +5 -5
  150. package/packages/client/types/runtime/virtualizer-schema.d.ts +3 -1
  151. package/packages/client/types/runtime/virtualizer-size.d.ts +7 -0
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js +2 -0
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-B7apK0M-.js.map +1 -0
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge.js +1 -1
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +984 -1132
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{anchor-B-CbpFFU.js → anchor-DXCLxWw-.js} +2 -2
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{anchor-B-CbpFFU.js.map → anchor-DXCLxWw-.js.map} +1 -1
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/anchor.js +2 -2
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js +2 -0
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection-CSrnChwy.js.map +1 -0
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/collection.js +2 -0
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-DlgeSL0c.js +2 -0
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{resizable-Ctqx_OoS.js.map → resizable-DlgeSL0c.js.map} +1 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-Qa2EByIB.js +2 -0
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{shortcut-D2NgvMgw.js.map → shortcut-Qa2EByIB.js.map} +1 -1
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut.js +2 -2
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CgP1efhO.js +2 -0
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/{sortable-CbIOS4Lm.js.map → sortable-CgP1efhO.js.map} +1 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -2
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js +2 -0
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-BqejlBjS.js.map +1 -0
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js +2 -0
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-DPMSJ1AR.js.map +1 -0
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js +2 -0
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-BFvGIAs8.js.map +1 -0
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-CpUAUTdh.js +5 -0
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-CpUAUTdh.js.map +1 -0
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js +2 -0
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-et2se66r.js.map +1 -0
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js +2 -0
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-DnEHZCqy.js.map +1 -0
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js +2 -0
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/control-size-BcDu1m1N.js.map +1 -0
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js +2 -0
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-de7TruDm.js.map +1 -0
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js +2 -0
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-DdiMUeJM.js.map +1 -0
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js +2 -0
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-MzcgNRti.js.map +1 -0
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-zFOeeob-.js +6 -0
  192. 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
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js +2 -0
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/feedback-DP_ydw-J.js.map +1 -0
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js +2 -0
  196. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/floating-ui.dom-B05VsV_p.js.map +1 -0
  197. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js → focus-BvBkrIcj.js} +2 -2
  198. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{focus-pk_lz9sg.js.map → focus-BvBkrIcj.js.map} +1 -1
  199. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-DYfME-Rk.js +2 -0
  200. 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
  201. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js +2 -0
  202. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-DVphuQVV.js.map +1 -0
  203. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js +2 -0
  204. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/frame-DsKHMcuL.js.map +1 -0
  205. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js +2 -0
  206. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/hover-CqeHOHpJ.js.map +1 -0
  207. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js +2 -0
  208. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/identity-BMTQyLbq.js.map +1 -0
  209. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js +2 -0
  210. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-mHPk9rxi.js.map +1 -0
  211. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js +2 -0
  212. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-task-B6P8q7BH.js.map +1 -0
  213. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js +2 -0
  214. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/layout-wLgk8rAu.js.map +1 -0
  215. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js +2 -0
  216. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Do4tL7nc.js.map +1 -0
  217. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js +2 -0
  218. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/option-data-Du9mqQPo.js.map +1 -0
  219. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js +2 -0
  220. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preferences-BZyZ-kK6.js.map +1 -0
  221. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/preload-helper-BZ1Pz5am.js +1 -0
  222. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js +2 -0
  223. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/properties-D8pFWF8g.js.map +1 -0
  224. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js +2 -0
  225. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-DRGrWivx.js.map +1 -0
  226. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js +2 -0
  227. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resize-preview-hnUhGcMX.js.map +1 -0
  228. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js +2 -0
  229. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/scroll-area-schema-DZgYyysJ.js.map +1 -0
  230. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js +2 -0
  231. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/size-DAtboz8G.js.map +1 -0
  232. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{styles-CQDZhwd_.js → styles-BvLCjUXV.js} +2 -2
  233. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-BvLCjUXV.js.map +1 -0
  234. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CVVSxrtG.js +4 -0
  235. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-CVVSxrtG.js.map +1 -0
  236. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js +2 -0
  237. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/virtualizer-size-CTy2gO64.js.map +1 -0
  238. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js +2 -0
  239. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DGWRKBdw.js.map +1 -0
  240. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +2 -2
  241. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js +2 -0
  242. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-DA4Ii46-.js.map +1 -0
  243. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button.js +2 -2
  244. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js +2 -0
  245. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-omt0I9Rh.js.map +1 -0
  246. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +2 -2
  247. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Cr9kEoo9.js +2 -0
  248. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-Cr9kEoo9.js.map +1 -0
  249. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid.js +2 -2
  250. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js +2 -0
  251. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-CtTM4Gf6.js.map +1 -0
  252. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +2 -2
  253. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js +2 -0
  254. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-B4dcq4bn.js.map +1 -0
  255. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload.js +2 -2
  256. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js +2 -0
  257. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-BEMZqp_I.js.map +1 -0
  258. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +2 -2
  259. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js +2 -0
  260. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-BeqlTp38.js.map +1 -0
  261. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +2 -2
  262. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js +2 -0
  263. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DCluNmYW.js.map +1 -0
  264. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +2 -2
  265. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js +2 -0
  266. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-DkPKkwlt.js.map +1 -0
  267. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset.js +2 -2
  268. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js +2 -0
  269. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-aSuqkRen.js.map +1 -0
  270. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper.js +2 -2
  271. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js +2 -0
  272. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-2UqpKKXs.js.map +1 -0
  273. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +2 -2
  274. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js +2 -0
  275. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-DjUHW-EE.js.map +1 -0
  276. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding.js +2 -2
  277. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js +2 -0
  278. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-DYn805Mg.js.map +1 -0
  279. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +2 -2
  280. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js +2 -0
  281. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-C4TtKM8_.js.map +1 -0
  282. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +2 -2
  283. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js +2 -0
  284. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-gAYZVe11.js.map +1 -0
  285. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +2 -2
  286. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js +2 -0
  287. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-SBruA-pr.js.map +1 -0
  288. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +2 -2
  289. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js +2 -0
  290. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-C3hjgwMw.js.map +1 -0
  291. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +2 -2
  292. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js +2 -0
  293. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-b0T3yohM.js.map +1 -0
  294. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +2 -2
  295. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js +2 -0
  296. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-B08DRTzI.js.map +1 -0
  297. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +2 -2
  298. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js +2 -0
  299. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CO-1hVz6.js.map +1 -0
  300. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +2 -2
  301. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js +2 -0
  302. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-BlPgZVqW.js.map +1 -0
  303. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +2 -2
  304. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js +2 -0
  305. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-CDbYmlUb.js.map +1 -0
  306. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +2 -2
  307. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js +2 -0
  308. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-Dxht5Hhg.js.map +1 -0
  309. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +2 -2
  310. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js +2 -0
  311. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-Ck_ZV7RN.js.map +1 -0
  312. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip.js +2 -2
  313. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js +2 -0
  314. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-BfCjewp3.js.map +1 -0
  315. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer.js +2 -2
  316. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CbDVD_pk.js +2 -0
  317. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-CbDVD_pk.js.map +1 -0
  318. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +2 -2
  319. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +299 -441
  320. package/packages/theme-engine/README.md +98 -18
  321. package/packages/theme-engine/THEME_AUTHORING.md +34 -0
  322. package/packages/theme-engine/dist/trellis.js +613 -285
  323. package/packages/theme-engine/fonts/fira-code/5.3.0/LICENSE +93 -0
  324. package/packages/theme-engine/fonts/fira-code/5.3.0/download.json +47 -0
  325. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-ext-wght-normal.woff2 +0 -0
  326. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-cyrillic-wght-normal.woff2 +0 -0
  327. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-ext-wght-normal.woff2 +0 -0
  328. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-greek-wght-normal.woff2 +0 -0
  329. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-ext-wght-normal.woff2 +0 -0
  330. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-latin-wght-normal.woff2 +0 -0
  331. package/packages/theme-engine/fonts/fira-code/5.3.0/fira-code-symbols2-wght-normal.woff2 +0 -0
  332. package/packages/theme-engine/fonts/fira-code/5.3.0/font.css +62 -0
  333. package/packages/theme-engine/fonts/fira-code/5.3.0/resource.json +82 -0
  334. package/packages/theme-engine/fonts/inter/5.3.0/LICENSE +93 -0
  335. package/packages/theme-engine/fonts/inter/5.3.0/download.json +47 -0
  336. package/packages/theme-engine/fonts/inter/5.3.0/font.css +62 -0
  337. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-ext-standard-normal.woff2 +0 -0
  338. package/packages/theme-engine/fonts/inter/5.3.0/inter-cyrillic-standard-normal.woff2 +0 -0
  339. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-ext-standard-normal.woff2 +0 -0
  340. package/packages/theme-engine/fonts/inter/5.3.0/inter-greek-standard-normal.woff2 +0 -0
  341. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-ext-standard-normal.woff2 +0 -0
  342. package/packages/theme-engine/fonts/inter/5.3.0/inter-latin-standard-normal.woff2 +0 -0
  343. package/packages/theme-engine/fonts/inter/5.3.0/inter-vietnamese-standard-normal.woff2 +0 -0
  344. package/packages/theme-engine/fonts/inter/5.3.0/resource.json +82 -0
  345. package/packages/theme-engine/generated/knobs/v1/color-alpha.json +1 -1
  346. package/packages/theme-engine/generated/knobs/v1/color-foundations.json +1 -1
  347. package/packages/theme-engine/generated/knobs/v1/color-ink.json +1 -1
  348. package/packages/theme-engine/generated/knobs/v1/color-lighting.json +1 -1
  349. package/packages/theme-engine/generated/knobs/v1/color-normalization.json +1 -1
  350. package/packages/theme-engine/generated/knobs/v1/color-ramps.json +1 -1
  351. package/packages/theme-engine/generated/knobs/v1/composition.json +1 -1
  352. package/packages/theme-engine/generated/knobs/v1/depth.json +1 -1
  353. package/packages/theme-engine/generated/knobs/v1/edges.json +1 -1
  354. package/packages/theme-engine/generated/knobs/v1/index.json +572 -85
  355. package/packages/theme-engine/generated/knobs/v1/manifest.json +25 -46
  356. package/packages/theme-engine/generated/knobs/v1/radii.json +50 -1
  357. package/packages/theme-engine/generated/knobs/v1/semantic-actions.json +1 -1
  358. package/packages/theme-engine/generated/knobs/v1/semantic-disabled.json +1 -1
  359. package/packages/theme-engine/generated/knobs/v1/semantic-disclosure.json +1 -1
  360. package/packages/theme-engine/generated/knobs/v1/semantic-intents.json +856 -37
  361. package/packages/theme-engine/generated/knobs/v1/semantic-scrim.json +1 -1
  362. package/packages/theme-engine/generated/knobs/v1/semantic-selection.json +1 -1
  363. package/packages/theme-engine/generated/knobs/v1/semantic-structure.json +1 -1
  364. package/packages/theme-engine/generated/knobs/v1/semantic-text-selection.json +372 -0
  365. package/packages/theme-engine/generated/knobs/v1/sizing-anatomy.json +4 -4
  366. package/packages/theme-engine/generated/knobs/v1/sizing-controls.json +1 -1
  367. package/packages/theme-engine/generated/knobs/v1/sizing-measures.json +1 -1
  368. package/packages/theme-engine/generated/knobs/v1/spacing.json +2 -2
  369. package/packages/theme-engine/generated/knobs/v1/substrates.json +1 -1
  370. package/packages/theme-engine/generated/knobs/v1/surfaces.json +1 -1
  371. package/packages/theme-engine/generated/knobs/v1/typography-anatomy.json +1 -1
  372. package/packages/theme-engine/generated/knobs/v1/typography-fonts.json +158 -40
  373. package/packages/theme-engine/generated/knobs/v1/typography-scale.json +1 -1
  374. package/packages/theme-engine/generated/schemas/theme-config-v1.json +108 -36
  375. package/packages/theme-engine/generated/schemas/theme-manifest-v1.json +10 -37
  376. package/packages/theme-engine/skills/create-trellis-theme/SKILL.md +4 -5
  377. package/packages/client/src/components/app/styles.css +0 -1
  378. package/packages/client/src/components/brand/styles.css +0 -8
  379. package/packages/client/src/styles/motion.css +0 -26
  380. package/packages/client/src/styles/static.css +0 -3
  381. package/packages/client/types/assets/full-runtime.generated.d.ts +0 -2
  382. package/packages/client/types/capabilities/motion.d.ts +0 -6
  383. package/packages/client/types/capabilities/motion.entry.generated.d.ts +0 -3
  384. package/packages/client/types/cdn.d.ts +0 -2
  385. package/packages/client/types/components/entry.generated.d.ts +0 -37
  386. package/packages/client/types/directives/bounds.d.ts +0 -4
  387. package/packages/client/types/directives/layout.d.ts +0 -3
  388. package/packages/client/types/index.d.ts +0 -8
  389. package/packages/client/types/motion/bounds.d.ts +0 -20
  390. package/packages/client/types/motion/controller.d.ts +0 -33
  391. package/packages/client/types/motion/flip.d.ts +0 -14
  392. package/packages/client/types/motion/plan.d.ts +0 -52
  393. package/packages/client/types/motion/stream.d.ts +0 -18
  394. package/packages/client/types/motion/targets.d.ts +0 -23
  395. package/packages/client/types/motion/view.d.ts +0 -27
  396. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis-103fb43eb5e1.css +0 -14030
  397. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +0 -14030
  398. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min-584dec82495c.css +0 -2
  399. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +0 -2
  400. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/bridge-COxhbtRZ.js +0 -1
  401. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js +0 -2
  402. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion-CKiK3BQA.js.map +0 -1
  403. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +0 -2
  404. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable-Ctqx_OoS.js +0 -2
  405. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/shortcut-D2NgvMgw.js +0 -2
  406. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable-CbIOS4Lm.js +0 -2
  407. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js +0 -2
  408. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-CE2UN4Qu.js.map +0 -1
  409. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js +0 -2
  410. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/bridge-DMrvM3JE.js.map +0 -1
  411. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js +0 -2
  412. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-anchor-lhqk7hfo.js.map +0 -1
  413. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js +0 -2
  414. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-B32HePGn.js.map +0 -1
  415. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js +0 -2
  416. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-ByUbMIHF.js.map +0 -1
  417. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js +0 -2
  418. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-shortcut-DZUQHJ3A.js.map +0 -1
  419. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js +0 -5
  420. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-Bl6ng6Hd.js.map +0 -1
  421. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js +0 -2
  422. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/collection-navigation-hTbwy6oQ.js.map +0 -1
  423. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js +0 -2
  424. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/common-CBK89mIt.js.map +0 -1
  425. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js +0 -2
  426. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/controller-C8xqwkr0.js.map +0 -1
  427. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js +0 -2
  428. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BxNepYBE.js.map +0 -1
  429. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js +0 -2
  430. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/cursor-data-source-Do0FfF4Z.js.map +0 -1
  431. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js +0 -2
  432. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/dismissable-layer-BROE-Ln2.js.map +0 -1
  433. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/element-adapter-native-data-key-DrqJDAVH.js +0 -6
  434. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js +0 -2
  435. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-7hdXmBLE.js.map +0 -1
  436. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js +0 -2
  437. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BCTWp6Xu.js.map +0 -1
  438. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js +0 -2
  439. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BQNpmLZO.js.map +0 -1
  440. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BRaKxvab.js +0 -2
  441. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BRaKxvab.js.map +0 -1
  442. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js +0 -2
  443. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BZWdGtgg.js.map +0 -1
  444. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js +0 -2
  445. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BnqcHAaF.js.map +0 -1
  446. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js +0 -2
  447. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BzLNUDzF.js.map +0 -1
  448. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js +0 -2
  449. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CC6pQ0nu.js.map +0 -1
  450. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js +0 -2
  451. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CEfr2bmw.js.map +0 -1
  452. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js +0 -2
  453. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CL4bjCqf.js.map +0 -1
  454. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js +0 -2
  455. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CVWqQEed.js.map +0 -1
  456. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js +0 -2
  457. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C_SxTqg5.js.map +0 -1
  458. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js +0 -2
  459. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cbyseoex.js.map +0 -1
  460. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js +0 -2
  461. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cf2hKkwA.js.map +0 -1
  462. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js +0 -2
  463. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CfYgsDun.js.map +0 -1
  464. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js +0 -2
  465. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Cl8rInnJ.js.map +0 -1
  466. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js +0 -2
  467. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Ct9H8Hlf.js.map +0 -1
  468. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js +0 -2
  469. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D2es_Wi2.js.map +0 -1
  470. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js +0 -2
  471. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DQtFqG0K.js.map +0 -1
  472. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js +0 -2
  473. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EqHVGr1d.js.map +0 -1
  474. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js +0 -2
  475. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-FCDgmA0s.js.map +0 -1
  476. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js +0 -2
  477. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-HqE8R7N1.js.map +0 -1
  478. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js +0 -2
  479. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-J0oGNBzS.js.map +0 -1
  480. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js +0 -2
  481. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-O0hEhk-2.js.map +0 -1
  482. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js +0 -2
  483. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oJwO9fIY.js.map +0 -1
  484. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js +0 -2
  485. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xjydizn-.js.map +0 -1
  486. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BKThFI4L.js +0 -2
  487. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/flip-BKThFI4L.js.map +0 -1
  488. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/focus-scope-BrYxsrhc.js +0 -2
  489. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js +0 -2
  490. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/fragment-9OT0mn7F.js.map +0 -1
  491. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js +0 -2
  492. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CNnHDbyo.js.map +0 -1
  493. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-RwlK04Cy.js +0 -3
  494. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-RwlK04Cy.js.map +0 -1
  495. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js +0 -2
  496. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/pdd-BG5sXFGF.js.map +0 -1
  497. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/styles-CQDZhwd_.js.map +0 -1
  498. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js +0 -4
  499. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-Bg44ZmC3.js.map +0 -1
  500. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion-DpoqsP_I.js +0 -1
  501. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/button-Dnf0aKac.js +0 -1
  502. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox-BpFFtrfY.js +0 -1
  503. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/data-grid-CCPYnOuT.js +0 -1
  504. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker-BCkP5gtC.js +0 -1
  505. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/direct-upload-DaT6-YFL.js +0 -1
  506. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown-Cc84envj.js +0 -1
  507. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field-CtQbyblj.js +0 -1
  508. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload-DARtpJDT.js +0 -1
  509. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/formset-CPO4XZkB.js +0 -1
  510. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/import-mapper-C-3lKsKm.js +0 -1
  511. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js +0 -2
  512. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index-DRH3gncZ.js.map +0 -1
  513. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +0 -2
  514. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input-BKEbDkKa.js +0 -1
  515. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/keybinding-RIi2q1IT.js +0 -1
  516. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal-MUHGUsup.js +0 -1
  517. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels-DNAroAhk.js +0 -1
  518. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio-DrGFMWGq.js +0 -1
  519. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area-CyUCAbgG.js +0 -1
  520. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select-BjLF548F.js +0 -1
  521. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar-GpvEBW3K.js +0 -1
  522. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider-OztnTlqr.js +0 -1
  523. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch-CZ7aiASg.js +0 -1
  524. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table-G3G5d2Eo.js +0 -1
  525. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs-bq7j1uwx.js +0 -1
  526. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast-DkP0-rBO.js +0 -1
  527. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tooltip-OITEWczP.js +0 -1
  528. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/virtualizer-CkRX2qVO.js +0 -1
  529. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core-Z4zMCScs.js +0 -1
  530. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js +0 -2
  531. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index-DAz_hKiB.js.map +0 -1
  532. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +0 -2
  533. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis-ecb43dfd3b7b.js +0 -11
  534. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +0 -11
  535. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min-ecb43dfd3b7b.js +0 -11
  536. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +0 -11
  537. package/packages/theme-engine/generated/knobs/v1/motion.json +0 -128
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-b0T3yohM.js","names":[],"sources":["../../../../../../../../client/src/runtime/shell-breakpoint.ts","../../../../../../../../client/src/components/heading/contract.ts","../../../../../../../../client/src/components/sidebar/contract.ts","../../../../../../../../client/src/components/sidebar/machine.ts","../../../../../../../../client/src/components/sidebar/styles.ts","../../../../../../../../client/src/components/sidebar/groups.ts","../../../../../../../../client/src/components/sidebar/index.ts","../../../../../../../../client/src/components/sidebar/entry.generated.ts"],"sourcesContent":["const shellBreakpointPixels = (reference: HTMLElement): number => {\n const value = getComputedStyle(reference).getPropertyValue('--ui-shell-sidebar-breakpoint');\n const pixels = Number.parseFloat(value);\n return Number.isFinite(pixels) ? pixels : Number.POSITIVE_INFINITY;\n};\n\nexport {shellBreakpointPixels};\n","import {\n HEADING_LEVELS,\n TYPOGRAPHY_COLORS,\n TYPOGRAPHY_SIZES,\n type TypographyColor,\n type TypographySize,\n} from '../common';\n\nconst HEADING_AS_VALUES = ['div', ...HEADING_LEVELS] as const;\nconst HEADING_SIZE_VALUES = TYPOGRAPHY_SIZES;\nconst HEADING_FONT_VALUES = ['heading', 'mono'] as const;\nconst HEADING_COLOR_VALUES = TYPOGRAPHY_COLORS;\n\ntype HeadingAs = typeof HEADING_AS_VALUES[number];\ntype HeadingSize = TypographySize;\ntype HeadingFont = typeof HEADING_FONT_VALUES[number];\ntype HeadingColor = TypographyColor;\n\nexport {\n HEADING_AS_VALUES,\n HEADING_COLOR_VALUES,\n HEADING_FONT_VALUES,\n HEADING_SIZE_VALUES,\n};\nexport type {HeadingAs, HeadingColor, HeadingFont, HeadingSize};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n CONTROL_SIZES, LAYOUT_SPACES, TYPOGRAPHY_SIZES,\n ELEVATION_REFERENCES,\n SURFACE_REFERENCES,\n type ElevationReference,\n type SurfaceReference,\n} from '../common';\nimport {HEADING_AS_VALUES} from '../heading/contract';\n\nconst SIDEBAR_SIDES = ['left', 'right'] as const;\nconst SIDEBAR_PLACEMENTS = ['side', 'top'] as const;\nconst SIDEBAR_MOBILE_PRESENTATIONS = ['drawer', 'fullscreen'] as const;\nconst SIDEBAR_AS = ['div', 'aside', 'header'] as const;\nconst SIDEBAR_COLLAPSES = ['none', 'mobile', 'desktop', 'both'] as const;\nconst SIDEBAR_TOGGLE_ACTIONS = ['toggle', 'open', 'close', 'stash', 'expand'] as const;\nconst SIDEBAR_ITEM_AS = ['a', 'button'] as const;\nconst SIDEBAR_ITEM_VARIANTS = ['ghost', 'surface'] as const;\nconst SIDEBAR_ITEM_COLORS = ['neutral', 'accent'] as const;\nconst SIDEBAR_GROUP_VARIANTS = ['heading', 'item'] as const;\nconst SIDEBAR_ACTIONS_VISIBILITIES = ['always', 'hover'] as const;\nconst SIDEBAR_LIST_INDENTS = [...LAYOUT_SPACES, 'label'] as const;\nconst SIDEBAR_SURFACES = SURFACE_REFERENCES;\nconst SIDEBAR_ELEVATIONS = ELEVATION_REFERENCES;\n\nconst sidebarSchema = {\n as: oneOf(SIDEBAR_AS, 'div'),\n id: string.default('ui-sidebar'),\n placement: oneOf(SIDEBAR_PLACEMENTS, 'side'),\n mobilePresentation: oneOf(SIDEBAR_MOBILE_PRESENTATIONS, 'drawer'),\n side: oneOf(SIDEBAR_SIDES, 'left'),\n surface: oneOf(SIDEBAR_SURFACES, 'inherit'),\n elevation: oneOf(SIDEBAR_ELEVATIONS, 'none'),\n drawerElevation: oneOf(SIDEBAR_ELEVATIONS, '2'),\n divider: bool.default(true),\n sticky: bool.default(true),\n collapse: oneOf(SIDEBAR_COLLAPSES, 'mobile'),\n open: bool,\n stashed: bool,\n persist: bool.default(true),\n edgeReveal: bool.default(true),\n resizable: bool,\n class: string,\n};\n\nconst sidebarItemSchema = {\n as: oneOf(SIDEBAR_ITEM_AS, 'a'),\n variant: oneOf(SIDEBAR_ITEM_VARIANTS, 'ghost'),\n color: oneOf(SIDEBAR_ITEM_COLORS, 'neutral'),\n href: string,\n current: bool,\n disabled: bool,\n icon: string,\n actionsVisibility: oneOf(SIDEBAR_ACTIONS_VISIBILITIES, 'always'),\n class: string,\n};\n\nconst sidebarGroupSchema = {\n id: string,\n heading: string,\n variant: oneOf(SIDEBAR_GROUP_VARIANTS, 'heading'),\n headingSize: oneOf(['inherit', ...TYPOGRAPHY_SIZES] as const, 'inherit'),\n headingAs: oneOf(HEADING_AS_VALUES, 'div'),\n actionsVisibility: oneOf(SIDEBAR_ACTIONS_VISIBILITIES, 'always'),\n expandable: bool,\n expanded: bool.default(true),\n icon: string,\n class: string,\n};\n\nconst sidebarListSchema = {\n indent: oneOf(SIDEBAR_LIST_INDENTS, '0'),\n guide: oneOf(['none', 'line'] as const, 'none'),\n size: oneOf(['inherit', ...CONTROL_SIZES] as const, 'inherit'),\n leading: oneOf(['inherit', 'auto', 'reserve'] as const, 'inherit'),\n class: string,\n};\n\nconst sidebarToggleSchema = {\n target: string,\n icon: string.default('side_panel'),\n label: string.default('Toggle sidebar'),\n action: oneOf(SIDEBAR_TOGGLE_ACTIONS, 'toggle'),\n class: string,\n};\n\nconst sidebarPanelSchema = {\n class: string,\n};\n\nconst sidebarContentSchema = {\n ...sidebarPanelSchema,\n fade: bool.default(true),\n};\n\nconst sidebarNavSchema = {\n label: string,\n labelled: string,\n class: string,\n};\n\ntype SidebarGroupProps = SchemaToProps<typeof sidebarGroupSchema>;\ntype SidebarItemProps = SchemaToProps<typeof sidebarItemSchema>;\ntype SidebarListProps = SchemaToProps<typeof sidebarListSchema>;\ntype SidebarProps = SchemaToProps<typeof sidebarSchema>;\ntype SidebarAs = typeof SIDEBAR_AS[number];\ntype SidebarToggleAction = typeof SIDEBAR_TOGGLE_ACTIONS[number];\ntype SidebarCollapse = typeof SIDEBAR_COLLAPSES[number];\ntype SidebarItemColor = typeof SIDEBAR_ITEM_COLORS[number];\ntype SidebarItemVariant = typeof SIDEBAR_ITEM_VARIANTS[number];\ntype SidebarSide = typeof SIDEBAR_SIDES[number];\ntype SidebarPlacement = typeof SIDEBAR_PLACEMENTS[number];\ntype SidebarMobilePresentation = typeof SIDEBAR_MOBILE_PRESENTATIONS[number];\ntype SidebarSurface = SurfaceReference;\ntype SidebarElevation = ElevationReference;\n\nexport {\n SIDEBAR_AS,\n SIDEBAR_COLLAPSES,\n SIDEBAR_ITEM_AS,\n SIDEBAR_ITEM_COLORS,\n SIDEBAR_ITEM_VARIANTS,\n SIDEBAR_ELEVATIONS,\n SIDEBAR_SIDES,\n SIDEBAR_PLACEMENTS,\n SIDEBAR_MOBILE_PRESENTATIONS,\n SIDEBAR_TOGGLE_ACTIONS,\n SIDEBAR_SURFACES,\n sidebarContentSchema,\n sidebarGroupSchema,\n sidebarItemSchema,\n sidebarListSchema,\n sidebarNavSchema,\n sidebarPanelSchema,\n sidebarSchema,\n sidebarToggleSchema,\n};\nexport type {\n SidebarGroupProps, SidebarItemProps, SidebarListProps,\n SidebarAs,\n SidebarCollapse,\n SidebarElevation,\n SidebarItemColor,\n SidebarItemVariant,\n SidebarMobilePresentation,\n SidebarPlacement,\n SidebarProps,\n SidebarSide,\n SidebarSurface,\n SidebarToggleAction,\n};\n","import {createMachine, type Machine, type MachineEventObject, type MachineScope} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SidebarPlacement, SidebarProps} from './contract';\n\ntype SidebarMode = 'mobile' | 'desktop';\ntype SidebarPresentation = 'drawer' | 'layout';\ntype SidebarTarget = 'mobileClosed' | 'mobileOpen' | 'desktopExpanded' | 'desktopStashed' | 'desktopDrawer' | 'desktopTop';\n\ntype SidebarContext = {\n responsive: {mode: SidebarMode};\n layout: {desktopStashed: boolean; desktopDrawerOpen: boolean; width: string; height: string};\n transition: {target: SidebarTarget; presentation: SidebarPresentation};\n};\n\ntype SidebarMachineEffects = {\n prepareOpen(scope: MachineScope<SidebarContext, SidebarProps>): void;\n finishOpen(): void;\n prepareClose(scope: MachineScope<SidebarContext, SidebarProps>): void;\n finishClose(): void;\n sync(): void;\n syncProps(): void;\n};\n\ntype CreateSidebarMachineOptions = {\n props: SidebarProps;\n mode: SidebarMode;\n desktopStashed: boolean;\n effects: SidebarMachineEffects;\n};\n\nconst projectTransition = ({context}: {context: Readonly<SidebarContext>}) => ({\n mode: context.responsive.mode,\n presentation: context.transition.presentation,\n width: context.layout.width,\n height: context.layout.height,\n});\n\ntype SidebarTransitionData = ReturnType<typeof projectTransition>;\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: projectTransition,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: projectTransition,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n} satisfies TransitionHookDefinition<SidebarContext, SidebarProps, SidebarTransitionData, 'closing'>);\n\nconst sidebarHooks = [openingHook, closingHook] as const;\n\nconst targetFrom = (event: MachineEventObject, fallback: SidebarTarget): SidebarTarget => (\n typeof event.target === 'string' ? event.target as SidebarTarget : fallback\n);\nconst presentationFrom = (event: MachineEventObject): SidebarPresentation => event.presentation === 'layout' ? 'layout' : 'drawer';\n\nconst createSidebarMachine = ({props, mode, desktopStashed, effects}: CreateSidebarMachineOptions): Machine<SidebarContext, SidebarProps> => {\n const initial: SidebarTarget = mode === 'mobile'\n ? props.open ? 'mobileOpen' : 'mobileClosed'\n : props.placement === 'top' ? 'desktopTop' : desktopStashed ? 'desktopStashed' : 'desktopExpanded';\n\n const beginOpen = {target: 'opening', reduce: 'beginOpen', effects: 'prepareOpen'} as const;\n const beginClose = {target: 'closing', reduce: 'beginClose', effects: 'prepareClose'} as const;\n const syncProps = {reduce: 'replaceProps', effects: 'syncProps'} as const;\n\n return createMachine<SidebarContext, SidebarProps>({\n initial,\n on: {\n MODE: [\n {target: 'desktopTop', guard: 'toTop', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopDrawer', guard: 'toDesktopDrawer', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopStashed', guard: 'toDesktopStashed', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopExpanded', guard: 'toDesktop', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileOpen', guard: 'toMobileOpen', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileClosed', reduce: 'setMode', effects: 'sync'},\n ],\n RESIZE: {reduce: 'resize', effects: 'sync'},\n },\n states: {\n mobileClosed: {tags: ['mobile', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n mobileOpen: {tags: ['mobile', 'visible', 'expanded', 'open'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, PROPS_CHANGED: syncProps}},\n desktopExpanded: {tags: ['desktop', 'visible', 'expanded', 'open', 'layout'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, OPEN: {}, EXPAND: {}, PROPS_CHANGED: syncProps}},\n desktopStashed: {tags: ['desktop', 'stashed', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, TOGGLE: beginOpen, PROPS_CHANGED: syncProps}},\n desktopDrawer: {tags: ['desktop', 'stashed', 'visible', 'expanded', 'open', 'drawer'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n desktopTop: {tags: ['desktop', 'top', 'visible', 'expanded', 'open', 'layout'], on: {PROPS_CHANGED: syncProps}},\n opening: {\n tags: ['visible', 'expanded', 'transitioning'],\n on: {\n OPENING_DONE: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n OPENING_ERROR: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n CLOSE: beginClose,\n STASH: beginClose,\n TOGGLE: beginClose,\n PROPS_CHANGED: syncProps,\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n CLOSING_ERROR: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n OPEN: beginOpen,\n EXPAND: beginOpen,\n TOGGLE: beginOpen,\n PROPS_CHANGED: syncProps,\n },\n },\n },\n }, {\n props,\n context: {\n responsive: {mode},\n layout: {\n desktopStashed,\n desktopDrawerOpen: false,\n width: 'var(--spacing-sidebar-width)',\n height: '',\n },\n transition: {target: initial, presentation: initial === 'desktopExpanded' || initial === 'desktopTop' ? 'layout' : 'drawer'},\n },\n reducers: {\n beginOpen: ({context, event}) => {\n const target = targetFrom(event, 'mobileOpen');\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopDrawer'\n ? true\n : target === 'desktopExpanded' ? false : context.layout.desktopStashed,\n desktopDrawerOpen: target === 'desktopDrawer'\n || (target === 'mobileOpen' && context.layout.desktopStashed),\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n beginClose: ({context, event}) => {\n const target = targetFrom(event, 'mobileClosed');\n const closesDesktopDrawer = target === 'desktopStashed'\n || (target === 'mobileClosed' && context.layout.desktopStashed);\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopStashed' ? true : context.layout.desktopStashed,\n desktopDrawerOpen: closesDesktopDrawer ? false : context.layout.desktopDrawerOpen,\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n setMode: ({context, event}) => ({context: {...context, responsive: {mode: event.mode === 'desktop' ? 'desktop' : 'mobile'}}}),\n replaceProps: ({context, event}) => ({\n props: event.props as SidebarProps,\n context,\n }),\n resize: ({context, event}) => ({context: {\n ...context,\n layout: {\n ...context.layout,\n width: typeof event.width === 'string' ? event.width : context.layout.width,\n height: typeof event.height === 'string' ? event.height : context.layout.height,\n },\n }}),\n },\n guards: {\n toTop: ({event}) => event.mode === 'desktop' && event.placement === 'top',\n toDesktopDrawer: ({event}) => event.mode === 'desktop' && event.stashed === true && event.open === true,\n toDesktopStashed: ({event}) => event.mode === 'desktop' && event.stashed === true,\n toDesktop: ({event}) => event.mode === 'desktop',\n toMobileOpen: ({event}) => event.mode === 'mobile' && event.open === true,\n targetsMobileOpen: ({context}) => context.transition.target === 'mobileOpen',\n targetsMobileClosed: ({context}) => context.transition.target === 'mobileClosed',\n targetsDesktopDrawer: ({context}) => context.transition.target === 'desktopDrawer',\n targetsDesktopTop: ({context}) => context.transition.target === 'desktopTop',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n sync: effects.sync,\n syncProps: effects.syncProps,\n },\n });\n};\n\nexport {createSidebarMachine, sidebarHooks};\nexport type {CreateSidebarMachineOptions, SidebarContext, SidebarMachineEffects, SidebarMode, SidebarPresentation, SidebarTarget};\n","import {defineStyles} from '../../runtime';\nimport {elevationReferenceClasses, LAYOUT_SPACES} from '../common';\n\nconst SIDEBAR_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-resting-elevation');\nconst SIDEBAR_DRAWER_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-drawer-elevation');\n\nconst sidebarStyles = defineStyles({definition: {\n component: 'ui.sidebar',\n parts: {\n root: {\n base: [\n 'fixed inset-y-2 z-dialog flex min-h-0 w-[var(--spacing-sidebar-drawer-width)] flex-col overflow-hidden rounded-overlay-md',\n 'border-separator outline-none',\n 'data-[drawer-state=open]:bg-surface',\n 'data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-none',\n 'data-[responsive-mode=desktop]:z-auto data-[responsive-mode=desktop]:w-[var(--ui-sidebar-width,var(--spacing-sidebar-width))] data-[responsive-mode=desktop]:translate-none data-[responsive-mode=desktop]:data-[mobile-state=closed]:translate-none data-[responsive-mode=desktop]:data-[mobile-state=open]:translate-none',\n 'data-[responsive-mode=desktop]:data-[desktop-state=expanded]:inset-y-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:w-full data-[responsive-mode=desktop]:data-[desktop-state=expanded]:rounded-none',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:z-dialog data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:h-auto',\n '[grid-area:sidebar]',\n 'data-[placement=top]:data-[responsive-mode=desktop]:relative data-[placement=top]:data-[responsive-mode=desktop]:inset-auto data-[placement=top]:data-[responsive-mode=desktop]:z-auto data-[placement=top]:data-[responsive-mode=desktop]:h-[var(--ui-sidebar-height,auto)] data-[placement=top]:data-[responsive-mode=desktop]:w-full data-[placement=top]:data-[responsive-mode=desktop]:max-w-none data-[placement=top]:data-[responsive-mode=desktop]:translate-none data-[placement=top]:data-[responsive-mode=desktop]:flex-row data-[placement=top]:data-[responsive-mode=desktop]:overflow-visible',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:flex-1',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]>[data-ui-scroll-area]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-item]]:w-auto',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:items-center',\n ],\n variants: {\n elevation: SIDEBAR_ELEVATION_CLASSES,\n drawerElevation: SIDEBAR_DRAWER_ELEVATION_CLASSES,\n mobilePresentation: {\n drawer: '',\n fullscreen: [\n '[&:not([data-responsive-mode=desktop])]:inset-0',\n '[&:not([data-responsive-mode=desktop])]:h-dvh',\n '[&:not([data-responsive-mode=desktop])]:w-full',\n '[&:not([data-responsive-mode=desktop])]:max-w-none',\n '[&:not([data-responsive-mode=desktop])]:rounded-none',\n '[&:not([data-responsive-mode=desktop])]:border-0',\n ].join(' '),\n },\n divider: {\n true: 'data-[placement=side][data-side=left]:border-r-edge-divider data-[placement=side][data-side=right]:border-l-edge-divider data-[placement=top]:border-b-edge-divider',\n false: '',\n },\n side: {\n left: 'left-2 border-r-edge-divider data-[responsive-mode=desktop]:data-[desktop-state=expanded]:left-auto',\n right: 'right-2 border-l-edge-divider data-[mobile-state=closed]:translate-x-full data-[mobile-state=open]:translate-none data-[responsive-mode=desktop]:data-[desktop-state=expanded]:right-auto',\n },\n sticky: {\n true: 'data-[responsive-mode=desktop]:sticky data-[responsive-mode=desktop]:h-screen',\n false: 'data-[responsive-mode=desktop]:relative data-[responsive-mode=desktop]:h-auto data-[responsive-mode=desktop]:data-[sticky=false]:relative data-[responsive-mode=desktop]:data-[sticky=False]:relative data-[responsive-mode=desktop]:data-[sticky=false]:h-auto data-[responsive-mode=desktop]:data-[sticky=False]:h-auto',\n },\n },\n defaults: {\n elevation: 'none',\n drawerElevation: '2',\n mobilePresentation: 'drawer',\n divider: true,\n side: 'left',\n sticky: true,\n },\n },\n body: {\n base: 'flex h-full w-[var(--ui-sidebar-body-width,100%)] min-h-0 min-w-0 flex-auto [flex-direction:inherit]',\n },\n header: {\n base: 'flex min-h-control-xlg shrink-0 items-center gap-sidebar-header-gap px-sidebar-header-padding-inline py-sidebar-header-padding-block',\n },\n content: {\n base: [\n 'min-h-0 flex-1 overflow-hidden',\n ],\n },\n contentInner: {\n base: [\n 'grid min-w-0 content-start gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n '[&>[data-ui-separator]]:-mx-sidebar-content-padding-inline [&>[data-ui-separator]]:w-auto',\n ],\n },\n footer: {\n base: 'grid shrink-0 gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n },\n nav: {\n base: 'grid gap-sidebar-content-gap',\n },\n list: {\n base: 'ui-sidebar-list grid min-w-0 list-none gap-sidebar-content-gap p-0',\n variants: {\n indent: Object.fromEntries([\n ...LAYOUT_SPACES.map((value) => [value, `ui-sidebar-indent-${value}`]),\n ['label', ''],\n ]),\n },\n defaults: {indent: '0'},\n },\n row: {base: 'ui-sidebar-row grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center rounded-control-md'},\n itemRow: {base: 'min-w-0 list-none'},\n item: {\n base: 'ui-sidebar-control grid w-full min-w-0 select-none items-center rounded-control-md border border-transparent text-left outline-none cursor-default data-disabled:pointer-events-none',\n variants: {\n variant: {ghost: '', surface: 'data-current:border-transparent data-current:shadow-none'},\n color: {neutral: '', accent: ''},\n },\n defaults: {variant: 'ghost', color: 'neutral'},\n },\n main: {base: 'ui-sidebar-main flex min-w-0 items-center gap-2'},\n leading: {base: 'ui-sidebar-leading shrink-0 items-center justify-center'},\n itemIcon: {base: 'size-full text-current'},\n itemLabel: {base: 'min-w-0 flex-1 truncate'},\n trailing: {base: 'ui-sidebar-trailing flex shrink-0 items-center justify-center gap-1'},\n actions: {base: 'ui-sidebar-actions grid shrink-0 grid-flow-col items-center justify-items-center gap-1'},\n group: {base: 'min-w-0 list-none'},\n groupHeadingWrapper: {base: 'ui-sidebar-heading min-w-0', variants: {inherit: {true: 'ui-sidebar-type-inherit', false: ''}}, defaults: {inherit: true}},\n groupTrigger: {base: 'ui-sidebar-control grid w-full min-w-0 select-none items-center rounded-control-md text-left outline-none cursor-default hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring'},\n groupHeading: {base: 'ui-sidebar-control grid min-w-0 items-center'},\n groupLabel: {base: 'min-w-0 flex-1 truncate'},\n groupChevron: {base: 'ui-sidebar-chevron shrink-0 text-current'},\n groupContent: {base: 'min-w-0'},\n toggle: {\n base: [\n 'inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-control-md text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n ],\n },\n toggleIcon: {\n base: 'size-icon text-current',\n },\n edge: {\n base: [\n 'fixed inset-y-0 z-30 hidden w-4 bg-transparent outline-none data-[state=visible]:block',\n 'focus-visible:ui-focus-ring-inset',\n 'data-[state=hidden]:hidden',\n ],\n variants: {\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n resizeHandle: {\n base: [\n 'absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none outline-none group-data-[responsive-mode=desktop]/sidebar:block',\n 'data-disabled:hidden',\n 'group-data-[placement=top]/sidebar:inset-x-0 group-data-[placement=top]/sidebar:bottom-0 group-data-[placement=top]/sidebar:top-auto group-data-[placement=top]/sidebar:h-3 group-data-[placement=top]/sidebar:w-auto group-data-[placement=top]/sidebar:cursor-row-resize',\n ],\n variants: {\n side: {\n left: 'right-0',\n right: 'left-0',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n },\n}});\n\nexport {sidebarStyles};\n\nexport const styles = [sidebarStyles] as const;\n","import {resize} from '@client/motion/resize';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {createLayoutTask} from '@client/runtime/layout-task';\nimport {addListener, dispatch} from '@client/utils';\n\n/** Disclosure ownership remains lexical; actions are siblings of the trigger. */\nconst initializeGroups = (root: HTMLElement, cleanup: CleanupManager): void => {\n const active = new Map<HTMLElement, AbortController>();\n const ownGroup = (target: EventTarget | null): HTMLElement | null => {\n if (!(target instanceof Element)) return null;\n const group = target.closest<HTMLElement>('[data-ui-sidebar-group][data-expandable]');\n return group?.closest('[data-ui-sidebar]') === root ? group : null;\n };\n const change = (group: HTMLElement, open: boolean, animate: boolean): void => {\n if ((group.dataset.state === 'open') === open) return;\n active.get(group)?.abort();\n active.delete(group);\n const trigger = group.querySelector<HTMLElement>(':scope > [data-ui-sidebar-row] [data-ui-sidebar-group-trigger]');\n const content = group.querySelector<HTMLElement>(':scope > [data-ui-sidebar-group-content]');\n if (!trigger || !content) return;\n if (!open && content.contains(document.activeElement)) trigger.focus();\n group.dataset.state = open ? 'open' : 'closed';\n trigger.setAttribute('aria-expanded', String(open));\n content.inert = !open;\n content.setAttribute('aria-hidden', String(!open));\n content.hidden = false;\n if (animate) {\n const current = new AbortController();\n active.set(group, current);\n const motion = resize({el: content, root: group, signal: current.signal}, {\n measure: ':scope > [data-ui-sidebar-group-content-inner]',\n from: open ? 'collapsed' : 'content',\n to: open ? 'content' : 'collapsed',\n role: open ? 'resize' : 'presenceExit',\n });\n void motion.finished.then(() => {\n if (current.signal.aborted) return;\n if (group.isConnected && ownGroup(group) === group) content.hidden = group.dataset.state !== 'open';\n current.abort();\n active.delete(group);\n });\n } else content.hidden = !open;\n dispatch({el: group, name: 'ui:sidebar-group-change', detail: {open}});\n };\n type Geometry = {element: HTMLElement; property: string; value: string};\n const measure = (group: HTMLElement): Geometry[] => {\n const label = group.querySelector<HTMLElement>(':scope > [data-ui-sidebar-row] [data-ui-sidebar-group-label]');\n const content = group.querySelector<HTMLElement>(':scope > [data-ui-sidebar-group-content]');\n if (!label || !content || !label.getClientRects().length) return [];\n const labelBox = label.getBoundingClientRect();\n const groupBox = group.getBoundingClientRect();\n const rtl = getComputedStyle(group).direction === 'rtl';\n const scale = group.offsetWidth ? groupBox.width / group.offsetWidth : 1;\n const inset = (rtl ? groupBox.right - labelBox.right : labelBox.left - groupBox.left) / (scale || 1);\n const value = `${inset}px`;\n\n const leading = group.querySelector<HTMLElement>(':scope > [data-ui-sidebar-row] [data-ui-sidebar-leading]');\n const leadingBox = leading?.getBoundingClientRect();\n const guide = leading?.getClientRects().length && leadingBox\n ? (rtl ? groupBox.right - (leadingBox.left + leadingBox.right) / 2 : (leadingBox.left + leadingBox.right) / 2 - groupBox.left) / (scale || 1)\n : 0;\n const guideValue = `${guide}px`;\n return [{element: group, property: '--ui-sidebar-label-indent', value},\n {element: group, property: '--ui-sidebar-guide-offset', value: guideValue}];\n };\n const observed = new Map<HTMLElement, HTMLElement[]>();\n const accessories = new Map<HTMLElement, HTMLElement[]>();\n const terminalBaselines = new Map<HTMLElement, string>();\n const actionBaselines = new Map<HTMLElement, string>();\n const flowContents = (element: HTMLElement): HTMLElement[] => getComputedStyle(element).display === 'contents'\n ? [...element.children].filter((child): child is HTMLElement => child instanceof HTMLElement && !['absolute', 'fixed'].includes(getComputedStyle(child).position)).flatMap(flowContents)\n : [element];\n const measureAccessories = (list: HTMLElement, elements: HTMLElement[]): Geometry[] => {\n if (!list.getClientRects().length) return [];\n const geometry: Geometry[] = [];\n const contentsList = elements.flatMap(flowContents);\n list.querySelectorAll<HTMLElement>('[data-ui-sidebar-actions]').forEach((cluster) => {\n if (cluster.closest('[data-ui-sidebar]') !== root) return;\n const controls = [...cluster.children].filter((child): child is HTMLElement => child instanceof HTMLElement).flatMap(flowContents);\n const metadata = cluster.closest('[data-ui-sidebar-row]')?.querySelector('[data-ui-sidebar-trailing]');\n const columns = controls.map((_, index) => !metadata && index === controls.length - 1\n ? 'minmax(var(--ui-sidebar-terminal-size),max-content)'\n : 'minmax(var(--ui-sidebar-control-height),max-content)').join(' ');\n geometry.push({element: cluster, property: '--ui-sidebar-action-columns', value: columns});\n const terminal = controls.at(-1);\n if (terminal && !metadata) contentsList.push(terminal);\n });\n const scale = list.offsetWidth ? list.getBoundingClientRect().width / list.offsetWidth : 1;\n const contents = new Set(contentsList.map((element) => element.parentElement?.hasAttribute('data-ui-sidebar-trailing') ? element.parentElement : element));\n const minimums = [...list.querySelectorAll<HTMLElement>('[data-ui-sidebar-control]')].filter((element) => element.closest('[data-ui-sidebar]') === root).map((element) => Number.parseFloat(getComputedStyle(element).minHeight) || 0);\n const width = Math.max(0, ...minimums, ...[...contents].map((element) => {\n if (element.hasAttribute('data-ui-sidebar-control')) return 0;\n if (!element.hasAttribute('data-ui-sidebar-trailing')) return element.getBoundingClientRect().width / (scale || 1);\n const range = document.createRange();\n range.selectNodeContents(element);\n return range.getBoundingClientRect().width / (scale || 1);\n }));\n const value = `${width}px`;\n geometry.push({element: list, property: '--ui-sidebar-terminal-content', value});\n return geometry;\n };\n const layoutTask = createLayoutTask({\n measure: (): Geometry[] => [\n ...[...observed.keys()].flatMap(measure),\n ...[...accessories].flatMap(([list, elements]) => measureAccessories(list, elements)),\n ],\n apply: (geometry): void => {\n for (const {element, property, value} of geometry) {\n if (element.isConnected && element.style.getPropertyValue(property) !== value) {\n element.style.setProperty(property, value);\n }\n }\n },\n });\n const observedSizes = new WeakMap<Element, string>();\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver((entries) => {\n let changed = false;\n for (const {target, contentRect} of entries) {\n const size = target.hasAttribute('data-ui-sidebar-control')\n ? `${contentRect.width}/${contentRect.height}` : String(contentRect.width);\n if (observedSizes.get(target) === size) continue;\n observedSizes.set(target, size);\n changed = true;\n }\n if (changed) layoutTask.schedule();\n });\n const initialize = (): void => {\n actionBaselines.forEach((value, cluster) => {\n if (cluster.closest('[data-ui-sidebar]') === root) return;\n cluster.style.setProperty('--ui-sidebar-action-columns', value);\n actionBaselines.delete(cluster);\n });\n observed.forEach((elements, group) => {\n if (group.closest('[data-ui-sidebar]') === root) return;\n elements.forEach((element) => observer?.unobserve(element));\n observed.delete(group);\n active.get(group)?.abort();\n active.delete(group);\n });\n root.querySelectorAll<HTMLElement>('[data-ui-sidebar-group]').forEach((group) => {\n if (group.closest('[data-ui-sidebar]') !== root) return;\n if (observed.has(group)) return;\n const row = group.querySelector<HTMLElement>(':scope > [data-ui-sidebar-row]');\n const elements = row ? [row, ...row.querySelectorAll<HTMLElement>('[data-ui-sidebar-leading], [data-ui-sidebar-group-label]')] : [];\n elements.forEach((element) => observer?.observe(element));\n observed.set(group, elements);\n });\n accessories.forEach((elements, list) => {\n elements.forEach((element) => observer?.unobserve(element));\n observer?.unobserve(list);\n if (list.closest('[data-ui-sidebar]') === root && list.parentElement?.closest('[data-ui-sidebar-list]')?.closest('[data-ui-sidebar]') !== root) return;\n list.style.setProperty('--ui-sidebar-terminal-content', terminalBaselines.get(list) ?? '');\n terminalBaselines.delete(list);\n accessories.delete(list);\n });\n root.querySelectorAll<HTMLElement>('[data-ui-sidebar-list]').forEach((list) => {\n if (list.closest('[data-ui-sidebar]') !== root) return;\n if (list.parentElement?.closest('[data-ui-sidebar-list]')?.closest('[data-ui-sidebar]') === root) return;\n if (!terminalBaselines.has(list)) terminalBaselines.set(list, list.style.getPropertyValue('--ui-sidebar-terminal-content'));\n // Measure the actual contents, never the cell whose minimum width we own.\n const elements = [...list.querySelectorAll<HTMLElement>('[data-ui-sidebar-control], [data-ui-sidebar-trailing], [data-ui-sidebar-trailing] > *')]\n .filter((element) => element.closest('[data-ui-sidebar]') === root);\n list.querySelectorAll<HTMLElement>('[data-ui-sidebar-actions]').forEach((cluster) => {\n if (cluster.closest('[data-ui-sidebar]') === root && !actionBaselines.has(cluster)) {\n actionBaselines.set(cluster, cluster.style.getPropertyValue('--ui-sidebar-action-columns'));\n }\n });\n accessories.set(list, elements);\n elements.forEach((element) => observer?.observe(element));\n observer?.observe(list);\n });\n layoutTask.schedule();\n };\n initialize();\n const changes = new MutationObserver(initialize);\n changes.observe(root, {childList: true, characterData: true, subtree: true, attributes: true, attributeFilter: ['dir', 'data-size', 'data-leading']});\n const direction = new MutationObserver(initialize);\n direction.observe(document.documentElement, {attributes: true, attributeFilter: ['dir']});\n addListener({target: root, event: 'click', cleanup, handler: (event) => {\n const group = ownGroup(event.target);\n if (!group || !(event.target instanceof Element) || event.defaultPrevented) return;\n const trigger = event.target.closest('[data-ui-sidebar-group-trigger]');\n if (!trigger || trigger.closest('[data-ui-sidebar-group]') !== group) return;\n event.preventDefault();\n change(group, group.dataset.state !== 'open', event instanceof MouseEvent && event.detail > 0);\n }});\n cleanup.add(() => {\n layoutTask.cancel();\n changes.disconnect();\n direction.disconnect();\n observer?.disconnect();\n observed.clear();\n terminalBaselines.forEach((value, list) => list.style.setProperty('--ui-sidebar-terminal-content', value));\n terminalBaselines.clear();\n actionBaselines.forEach((value, cluster) => cluster.style.setProperty('--ui-sidebar-action-columns', value));\n actionBaselines.clear();\n accessories.clear();\n active.forEach((controller, group) => {\n controller.abort();\n const content = group.querySelector<HTMLElement>(':scope > [data-ui-sidebar-group-content]');\n if (content) content.hidden = group.dataset.state !== 'open';\n });\n active.clear();\n });\n};\n\nexport {initializeGroups};\n","import type Alpine from 'alpinejs';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n focusElement,\n type MachineScope,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport {createLayoutTask} from '@client/runtime/layout-task';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {decodeProps, type SchemaToProps} from '@client/runtime/codecs';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {isFocusIndicatorSuppressed} from '@client/runtime/focus';\nimport {createResizable, RESIZE_COLLAPSE_THRESHOLD, type ResizeEvent} from '@client/runtime/drag-and-drop';\nimport {focusFirst, trapFocus} from '@client/runtime/focus-scope';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {writePreference} from '@client/runtime/preferences';\nimport {acquireDocumentScrollLock} from '@client/runtime/scroll-lock';\nimport {shellBreakpointPixels} from '@client/runtime/shell-breakpoint';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {noopHandle, type MotionHandle} from '@client/motion/animate';\nimport type {MotionTransitionSubject} from '@client/motion/subject';\nimport {animateProperties} from '@client/motion/properties';\nimport {parallel} from '@client/motion/animate';\nimport {stopOwnedMotion} from '@client/motion/owned';\nimport {createResizePreview} from '@client/motion/resize-preview';\nimport {addListener, dispatch} from '@client/utils';\nimport {sidebarSchema, sidebarToggleSchema, type SidebarProps, type SidebarToggleAction} from './contract';\nimport {\n createSidebarMachine,\n sidebarHooks,\n type SidebarContext,\n type SidebarMode,\n type SidebarTarget,\n} from './machine';\nimport {sidebarStyles} from './styles';\nimport {initializeGroups} from './groups';\n\ntype SidebarTransitionName = (typeof sidebarHooks)[number]['name'];\ntype SidebarTransition<TName extends SidebarTransitionName = SidebarTransitionName> = TransitionForHook<\n Extract<(typeof sidebarHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype SidebarController = {\n readonly id: string;\n isExpanded(): boolean;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null, event?: Event): void;\n syncToggles(): void;\n};\n\ntype SidebarEventDetail = {id?: string; action?: SidebarToggleAction; trigger?: HTMLElement | null; event?: Event};\nconst togglePropsSchema = {target: sidebarToggleSchema.target, action: sidebarToggleSchema.action, class: sidebarToggleSchema.class};\ntype SidebarToggleProps = SchemaToProps<typeof togglePropsSchema>;\ntype SidebarEdgeProps = SidebarToggleProps;\n\n/** Public Alpine API for `ui.sidebar`. @public */\ninterface UiSidebarApi {\n /** Sidebar id used by external controls. */\n readonly id: string;\n /** Whether the sidebar is fully open or currently opening. */\n readonly isOpen: boolean;\n /** Whether the observed shell is at or above the theme-generated shell breakpoint. */\n readonly isDesktop: boolean;\n /** Whether side placement is persistently stashed on desktop. */\n readonly isStashed: boolean;\n /** Current side-placement track width. */\n readonly width: string;\n /** Current top-placement track height. */\n readonly height: string;\n /** Opens the responsive drawer or temporarily reveals a stashed desktop sidebar. */\n open(event?: Event): void;\n /** Closes the responsive drawer or stashes an expanded desktop sidebar. */\n close(event?: Event): void;\n /** Toggles desktop stashing or mobile drawer visibility, including an in-flight transition. */\n toggle(event?: Event): void;\n /** Permanently removes side placement from the desktop layout track. */\n stash(event?: Event): void;\n /** Permanently restores side placement to the desktop layout track. */\n expand(event?: Event): void;\n}\n\ntype SidebarData = AlpineMachine<SidebarContext, SidebarProps, typeof sidebarHooks> & UiSidebarApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null, event?: Event): void;\n syncToggles(): void;\n isExpanded(): boolean;\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle;\n};\n\ntype SidebarMotionTransition = MotionTransitionSubject & Readonly<{\n data: {mode: SidebarMode; presentation: 'drawer' | 'layout'};\n to: string;\n}>;\n\nconst controllers = new Set<SidebarController>();\n\nconst eventDetail = (event: Event): SidebarEventDetail => event instanceof CustomEvent && event.detail && typeof event.detail === 'object'\n ? event.detail as SidebarEventDetail\n : {};\n\nconst registerDocumentListeners = (() => {\n let registered = false;\n return (): void => {\n if (registered || typeof document === 'undefined') return;\n const route = (action: SidebarToggleAction) => (event: Event): void => {\n if (event.target instanceof Element && event.target.hasAttribute('data-ui-sidebar')) return;\n const detail = eventDetail(event);\n controllers.forEach((controller) => {\n if (!detail.id || detail.id === controller.id) controller.perform(detail.action ?? action, detail.trigger, detail.event);\n });\n };\n document.addEventListener('ui:sidebar-open', route('open'));\n document.addEventListener('ui:sidebar-close', route('close'));\n document.addEventListener('ui:sidebar-toggle', route('toggle'));\n registered = true;\n };\n})();\n\nconst UiSidebar = (): TrellisAlpineComponent<SidebarData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupManager;\n let resizeObserver: ResizeObserver | null = null;\n let observedWidth: number | null = null;\n const resizeProbes = new Map<string, HTMLElement>();\n let responsiveMode: SidebarMode = 'mobile';\n let activeTrigger: HTMLElement | null = null;\n let resize: ReturnType<typeof createResizable> | null = null;\n let resizeConfiguration = '';\n let resizePreview: ReturnType<typeof createResizePreview> | null = null;\n let resizeCommit: ReturnType<typeof createResizePreview> | null = null;\n let resizePreviewSize: string | null = null;\n let releaseScrollLock: (() => void) | null = null;\n let edgeIntentTimer: ReturnType<typeof setTimeout> | null = null;\n let edgeHoverDismissed = false;\n\n const cancelEdgeIntent = (): void => {\n if (edgeIntentTimer !== null) clearTimeout(edgeIntentTimer);\n edgeIntentTimer = null;\n };\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Sidebar has not been initialized.');\n return rootEl;\n };\n const appEl = (): HTMLElement | null => root().closest<HTMLElement>('[data-ui-app]');\n const backdropEl = (): HTMLElement | null => appEl()?.querySelector<HTMLElement>('[data-ui-app-backdrop]') ?? null;\n const currentProps = (): Readonly<SidebarProps> => bridge.getCommittedSnapshot().props;\n const context = (): Readonly<SidebarContext> => bridge.getCommittedSnapshot().context;\n const target = (): SidebarTarget => context().transition.target;\n const isDrawer = (): boolean => bridge.hasTag('visible') && (\n bridge.hasTag('drawer')\n || responsiveMode === 'mobile'\n || (bridge.hasTag('transitioning') && context().transition.presentation === 'drawer')\n );\n const isModalDrawer = (): boolean => isDrawer() && responsiveMode === 'mobile';\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isMobileDrawerClosing = (): boolean => responsiveMode === 'mobile' && bridge.matches('closing');\n\n let persistedStashed: boolean | undefined;\n const persist = (): void => {\n const props = currentProps();\n const stashed = context().layout.desktopStashed;\n if (persistedStashed === undefined) persistedStashed = stashed;\n if (!props.persist || props.placement === 'top' || bridge.hasTag('transitioning') || persistedStashed === stashed) return;\n persistedStashed = stashed;\n void writePreference('sidebars', root().id || props.id, stashed);\n };\n const setCanvasTransitioning = (active: boolean): void => {\n const app = appEl();\n if (active) app?.setAttribute('data-sidebar-transitioning', 'true');\n else app?.removeAttribute('data-sidebar-transitioning');\n };\n\n const restoreFocus = (): void => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !root().contains(active)) return;\n const fallback = activeTrigger && !root().contains(activeTrigger)\n ? activeTrigger\n : Array.from(document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle]'))\n .find((el) => !root().contains(el) && (!el.dataset.target || el.dataset.target === root().id));\n // Commit closing visibility before focusing an opener hidden while the sidebar is open.\n queueMicrotask(() => {\n if (isExpanded() || (document.activeElement !== active && document.activeElement !== document.body)) return;\n if (!focusElement(fallback ?? null, {showIndicator: false})) active.blur();\n });\n };\n\n const syncToggles = (): void => {\n const expanded = isExpanded();\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]').forEach((el) => {\n if (el.dataset.target && el.dataset.target !== root().id) return;\n if (!el.matches('[data-ui-sidebar-edge]')) el.dataset.state = expanded ? 'open' : 'closed';\n if (el.matches('[data-ui-sidebar-toggle], [data-ui-sidebar-edge]')) {\n el.setAttribute('aria-controls', root().id);\n el.setAttribute('aria-expanded', String(expanded));\n }\n });\n };\n\n const sync = ({reflectControlled = true}: {reflectControlled?: boolean} = {}): void => {\n const props = currentProps();\n const visible = bridge.hasTag('visible');\n const expanded = isExpanded();\n const stashed = context().layout.desktopStashed;\n const drawer = isDrawer();\n const movingLayout = bridge.hasTag('transitioning') && context().transition.presentation === 'layout';\n const el = root();\n const width = props.placement === 'side' && resizePreviewSize ? resizePreviewSize : context().layout.width;\n const height = props.placement === 'top' && resizePreviewSize ? resizePreviewSize : context().layout.height;\n if (reflectControlled) {\n if (responsiveMode === 'mobile') {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'open', value: expanded});\n } else {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'stashed', value: stashed});\n }\n }\n el.dataset.state = expanded ? 'open' : 'closed';\n el.dataset.mobileState = responsiveMode === 'mobile' && (expanded || isMobileDrawerClosing()) ? 'open' : 'closed';\n el.dataset.desktopState = stashed ? 'stashed' : 'expanded';\n el.dataset.drawerState = drawer ? 'open' : 'closed';\n el.dataset.responsiveMode = responsiveMode;\n el.dataset.placement = props.placement;\n el.dataset.mobilePresentation = props.mobilePresentation;\n el.dataset.side = props.side;\n el.hidden = !visible && !(responsiveMode === 'desktop' && props.placement === 'top');\n el.toggleAttribute('inert', !expanded);\n if (expanded) el.removeAttribute('aria-hidden'); else el.setAttribute('aria-hidden', 'true');\n const resizeDisabled = !props.resizable || responsiveMode !== 'desktop' || drawer;\n el.toggleAttribute('data-resize-disabled', resizeDisabled);\n const resizeHandle = el.querySelector<HTMLElement>('[data-ui-sidebar-resize-handle]');\n resizeHandle?.toggleAttribute('data-disabled', resizeDisabled);\n resizeHandle?.setAttribute('aria-disabled', String(resizeDisabled));\n el.querySelector<HTMLElement>('[data-ui-sidebar-body]')?.toggleAttribute('inert', !expanded || resizePreview?.collapsed === true);\n el.style.setProperty('--ui-sidebar-width', width);\n if (movingLayout) el.style.setProperty('--ui-sidebar-body-width', width);\n else el.style.removeProperty('--ui-sidebar-body-width');\n if (height) el.style.setProperty('--ui-sidebar-height', height);\n\n const app = appEl();\n if (app) {\n if (!movingLayout && !resizePreview?.moving && !resizePreview?.collapsed) {\n app.style.setProperty('--ui-app-sidebar-width', stashed ? '0px' : width);\n app.style.setProperty('--ui-app-sidebar-progress', stashed ? '0' : '1');\n }\n if (height) app.style.setProperty('--ui-app-sidebar-height', height);\n app.dataset.sidebarState = stashed && !movingLayout ? 'stashed' : 'expanded';\n app.dataset.sidebarSide = props.side;\n if (!bridge.hasTag('transitioning') && !resizePreview?.moving && !resizePreview?.collapsed) app.style.gridTemplateColumns = '';\n }\n const backdrop = backdropEl();\n if (backdrop) {\n const modalDrawer = isModalDrawer();\n backdrop.hidden = !modalDrawer;\n backdrop.dataset.state = modalDrawer ? 'open' : 'closed';\n }\n if (!drawer && !bridge.hasTag('transitioning')) {\n stopOwnedMotion(el);\n el.style.opacity = '';\n el.style.transform = '';\n if (backdrop) {\n stopOwnedMotion(backdrop);\n backdrop.style.opacity = '';\n }\n }\n const modalDrawer = isModalDrawer();\n if (modalDrawer) releaseScrollLock ??= acquireDocumentScrollLock(el.ownerDocument);\n else {\n releaseScrollLock?.();\n releaseScrollLock = null;\n }\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-edge]').forEach((edge) => {\n if (edge.dataset.target && edge.dataset.target !== root().id) return;\n const ownsEdgeReveal = drawer && activeTrigger === edge;\n const show = props.edgeReveal && responsiveMode === 'desktop' && props.placement === 'side' && stashed && (!drawer || ownsEdgeReveal);\n edge.dataset.state = show ? 'visible' : 'hidden';\n edge.hidden = !show;\n });\n syncToggles();\n if (expanded && !bridge.hasTag('transitioning')) resize?.refresh();\n persist();\n };\n\n const prepareOpen = ({context: next}: MachineScope<SidebarContext, SidebarProps>): void => {\n const {presentation} = next.transition;\n setCanvasTransitioning(presentation === 'layout');\n root().hidden = false;\n if (presentation !== 'layout') sync();\n if (isModalDrawer()) queueMicrotask(() => {\n if (isModalDrawer()) focusFirst(root(), {showIndicator: false});\n });\n };\n const finishOpen = (): void => {\n setCanvasTransitioning(false);\n root().dataset.sidebarExiting = 'false';\n sync();\n dispatch({el: root(), name: 'ui:sidebar-open', detail: {id: root().id}});\n };\n const prepareClose = ({context: next}: MachineScope<SidebarContext, SidebarProps>): void => {\n const {presentation} = next.transition;\n setCanvasTransitioning(presentation === 'layout');\n restoreFocus();\n if (presentation === 'layout') root().dataset.sidebarExiting = 'true';\n if (presentation !== 'layout') sync();\n };\n const finishClose = (): void => {\n setCanvasTransitioning(false);\n root().dataset.sidebarExiting = 'false';\n sync();\n dispatch({el: root(), name: 'ui:sidebar-close', detail: {id: root().id}});\n activeTrigger = null;\n };\n\n const syncProps = (): void => {\n cancelEdgeIntent();\n initializeResize();\n sync({reflectControlled: false});\n queueMicrotask(() => {\n const next = currentProps();\n if (responsiveMode === 'desktop') {\n if (next.placement === 'top') {\n if (!bridge.hasTag('top')) bridge.send({type: 'MODE', mode: 'desktop', placement: 'top', stashed: false, open: true});\n } else if (next.stashed !== context().layout.desktopStashed) {\n if (next.stashed) stash(); else expand();\n }\n } else if (next.open !== isExpanded()) {\n if (next.open) open(); else close();\n }\n });\n };\n\n const initialProps = (): SidebarProps => decodeProps({el: root(), schema: sidebarSchema});\n const bridge = createAlpineMachine({\n schema: sidebarSchema,\n hooks: sidebarHooks,\n createMachine: ({props}) => createSidebarMachine({\n props,\n mode: responsiveMode,\n desktopStashed: props.stashed,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, sync, syncProps},\n }),\n });\n\n const desiredOpenTarget = (): {target: SidebarTarget; presentation: 'drawer' | 'layout'} | null => {\n const props = currentProps();\n if (responsiveMode === 'mobile') return {target: 'mobileOpen', presentation: 'drawer'};\n if (props.placement === 'top') return null;\n return context().layout.desktopStashed\n ? {target: 'desktopDrawer', presentation: 'drawer'}\n : {target: 'desktopExpanded', presentation: 'layout'};\n };\n const open = (event?: Event): void => {\n cancelEdgeIntent();\n event?.preventDefault();\n if (event?.currentTarget instanceof HTMLElement) activeTrigger = event.currentTarget;\n const desired = desiredOpenTarget();\n if (desired) bridge.send({type: 'OPEN', ...desired});\n };\n const close = (event?: Event): void => {\n cancelEdgeIntent();\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n bridge.send({type: 'CLOSE', target: responsiveMode === 'mobile' ? 'mobileClosed' : 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const expand = (event?: Event): void => {\n cancelEdgeIntent();\n event?.preventDefault();\n if (responsiveMode === 'mobile') { open(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'EXPAND', target: 'desktopExpanded', presentation: 'layout'});\n };\n const stash = (event?: Event): void => {\n cancelEdgeIntent();\n event?.preventDefault();\n if (responsiveMode === 'mobile') { close(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'STASH', target: 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const toggle = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'desktop') {\n if (currentProps().placement === 'side') {\n if (context().layout.desktopStashed) expand(event); else stash(event);\n }\n return;\n }\n if (isExpanded()) close(event); else open(event);\n };\n\n const reconcileMode = (width: number, breakpoint: number): void => {\n const props = currentProps();\n const next: SidebarMode = width >= breakpoint ? 'desktop' : 'mobile';\n if (next === responsiveMode) return;\n cancelEdgeIntent();\n resize?.cancel();\n resizePreview?.cancel();\n resizePreview = null;\n resizeCommit = null;\n resizePreviewSize = null;\n responsiveMode = next;\n const desktopStashed = context().layout.desktopStashed;\n bridge.send({\n type: 'MODE',\n mode: next,\n placement: props.placement,\n stashed: desktopStashed,\n open: next === 'desktop' && desktopStashed && context().layout.desktopDrawerOpen,\n });\n };\n\n const responsiveLayout = createLayoutTask({\n measure: () => {\n if (!rootEl) return null;\n const observed = appEl() ?? root();\n return {width: observedWidth ?? observed.getBoundingClientRect().width, breakpoint: shellBreakpointPixels(observed)};\n },\n apply: (measurement): void => {\n if (measurement && rootEl) reconcileMode(measurement.width, measurement.breakpoint);\n },\n });\n const resizeLayout = createLayoutTask({\n measure: () => {\n if (!rootEl || !currentProps().resizable) return null;\n const dimension = currentProps().placement === 'top' ? 'height' : 'width';\n const style = getComputedStyle(root());\n const length = (kind: 'min' | 'max', fallback: number): number => {\n const token = `--ui-sidebar-resize-${kind}-${dimension}`;\n if (!style.getPropertyValue(token).trim()) return fallback;\n const value = resizeProbes.get(token)?.getBoundingClientRect().width ?? 0;\n return value > 0 ? value : fallback;\n };\n return {min: length('min', 60), max: length('max', Number.POSITIVE_INFINITY)};\n },\n apply: (bounds): void => { if (rootEl) configureResize(bounds); },\n });\n const initializeResize = (): void => {\n if (!currentProps().resizable) { configureResize(null); return; }\n const fragment = document.createDocumentFragment();\n for (const dimension of ['width', 'height']) {\n for (const kind of ['min', 'max']) {\n const token = `--ui-sidebar-resize-${kind}-${dimension}`;\n if (resizeProbes.has(token)) continue;\n const probe = document.createElement('div');\n probe.setAttribute('aria-hidden', 'true');\n probe.style.cssText = `position:absolute;visibility:hidden;pointer-events:none;width:var(${token});height:0;inset:0 auto auto 0;`;\n resizeProbes.set(token, probe);\n fragment.append(probe);\n resizeObserver?.observe(probe);\n }\n }\n root().append(fragment);\n resizeLayout.schedule();\n };\n const configureResize = (bounds: {min: number; max: number} | null): void => {\n const props = currentProps();\n const configuration = `${props.resizable}:${props.placement}:${props.side}:${bounds?.min}:${bounds?.max}`;\n if (configuration === resizeConfiguration) return;\n resizeConfiguration = configuration;\n resize?.();\n resizePreview?.cancel();\n resizePreview = null;\n resizeCommit = null;\n resizePreviewSize = null;\n resize = null;\n const handle = root().querySelector<HTMLElement>('[data-ui-sidebar-resize-handle]');\n if (!props.resizable || !handle || !bounds) return;\n const axis = props.placement === 'top' ? 'y' : 'x';\n const dimension = axis === 'x' ? 'width' : 'height';\n const notify = (event: ResizeEvent): void => {\n const name = event.phase === 'start' ? 'ui:resize-start'\n : event.phase === 'end' ? 'ui:resize-end'\n : event.phase === 'cancel' ? 'ui:resize-cancel' : 'ui:resize';\n dispatch({el: root(), name, detail: event});\n };\n resize = createResizable({\n element: root(), handle, axis,\n direction: props.placement === 'side' && props.side === 'right' ? 'negative' : 'positive',\n min: bounds.min,\n max: bounds.max,\n collapseThreshold: props.placement === 'side' ? RESIZE_COLLAPSE_THRESHOLD : undefined,\n disabled: () => !currentProps().resizable || responsiveMode !== 'desktop' || isDrawer() || !isExpanded(),\n onStart: (event) => {\n cancelEdgeIntent();\n resizePreviewSize = `${Math.round(event[dimension])}px`;\n if (resizePreview?.moving && !resizePreview.collapsed) resizePreview.begin(event[dimension]);\n else {\n resizePreview?.cancel();\n const app = appEl();\n const content = root().querySelector<HTMLElement>('[data-ui-sidebar-body]');\n resizePreview = props.placement === 'side' && app && content ? createResizePreview({\n region: root(), content, axis: 'x',\n direction: props.side === 'right' ? 'negative' : 'positive', collapsedSize: 0,\n track: {element: app, property: '--ui-app-sidebar-width', value: size => `${size}px`},\n render: () => { if (rootEl) sync({reflectControlled: false}); },\n }) : null;\n }\n notify(event);\n },\n onResize: (event) => {\n resizePreviewSize = `${Math.round(event[dimension])}px`;\n root().toggleAttribute('data-collapse-preview', event.collapsed);\n resizePreview?.update(event[dimension], event.collapsed);\n sync({reflectControlled: false});\n notify(event);\n },\n onEnd: (event) => {\n resizePreview?.update(event[dimension], event.collapsed);\n root().removeAttribute('data-collapse-preview');\n resizePreviewSize = null;\n if (event.collapsed) {\n resizeCommit = resizePreview;\n stash();\n } else {\n bridge.send({type: 'RESIZE', [dimension]: `${Math.round(event[dimension])}px`});\n resizePreview?.commit();\n }\n notify(event);\n },\n onCancel: (event) => {\n root().removeAttribute('data-collapse-preview');\n resizePreviewSize = null;\n resizePreview?.cancel();\n resizePreview = null;\n sync({reflectControlled: false});\n notify(event);\n },\n });\n };\n\n // Native top-layer surfaces retain DOM ownership, including nested menus.\n const edgeRevealContained = (): boolean => Boolean(\n root().querySelector(':popover-open') || root().matches(':hover') || activeTrigger?.matches(':hover'),\n );\n const closeEdgeReveal = (): void => {\n cancelEdgeIntent();\n if (responsiveMode !== 'desktop' || !isDrawer()) return;\n if (!activeTrigger?.matches('[data-ui-sidebar-edge]') || edgeRevealContained()) return;\n edgeIntentTimer = setTimeout(() => {\n edgeIntentTimer = null;\n if (!edgeRevealContained()) close();\n }, 250);\n };\n\n const closeAfterMobileNavigation = (event: Event): void => {\n if (!(event instanceof MouseEvent) || responsiveMode !== 'mobile' || !isExpanded()) return;\n if (event.defaultPrevented || event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const item = event.target instanceof Element ? event.target.closest<HTMLAnchorElement>('a[data-ui-sidebar-item]') : null;\n if (!item || !root().contains(item) || item.getAttribute('aria-disabled') === 'true') return;\n if (item.hasAttribute('download') || item.hasAttribute('target')) return;\n close();\n };\n\n let component!: TrellisAlpineComponent<SidebarData>;\n component = {\n ...bridge,\n get id() { return root().id || currentProps().id; },\n get isOpen() { return this.snapshot.current?.tags.includes('expanded') ?? isExpanded(); },\n get isDesktop() { return (this.snapshot.current?.context.responsive.mode ?? responsiveMode) === 'desktop'; },\n get isStashed() { return this.snapshot.current?.context.layout.desktopStashed ?? context().layout.desktopStashed; },\n get width() { return this.snapshot.current?.context.layout.width ?? context().layout.width; },\n get height() { return this.snapshot.current?.context.layout.height ?? context().layout.height; },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n const observed = appEl() ?? root();\n bridge.connect(this.$el, this.snapshot);\n root().id ||= currentProps().id;\n controllers.add(component);\n registerDocumentListeners();\n resizeObserver = new ResizeObserver((entries) => {\n const entry = entries.find(({target}) => target === observed);\n if (entry) {\n observedWidth = entry.contentRect.width;\n responsiveLayout.schedule();\n }\n if (currentProps().resizable) resizeLayout.schedule();\n });\n responsiveLayout.schedule();\n resizeObserver.observe(observed);\n cleanup.add(addDismissableLayer({isEnabled: isDrawer, roots: () => [root()], onDismiss: close}));\n addListener({target: document, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent)) return;\n if (event.key === 'Escape') {\n if (activeTrigger?.matches('[data-ui-sidebar-edge]') && (edgeIntentTimer !== null || isDrawer())) edgeHoverDismissed = true;\n cancelEdgeIntent();\n }\n if (!isDrawer()) return;\n if (event.key === 'Escape') close(event);\n else if (isModalDrawer()) trapFocus(event, root());\n }, cleanup});\n initializeResize();\n cleanup.add(() => {\n resize?.();\n resizePreview?.cancel();\n resizePreview = null;\n });\n cleanup.add(cancelEdgeIntent);\n addListener({target: root(), event: 'pointerenter', handler: cancelEdgeIntent, cleanup});\n addListener({target: root(), event: 'pointerleave', handler: closeEdgeReveal, cleanup});\n addListener({target: root(), event: 'toggle', options: {capture: true}, cleanup, handler: (event) => {\n if (event instanceof ToggleEvent && event.newState === 'closed'\n && event.target instanceof Element && event.target.hasAttribute('popover')) closeEdgeReveal();\n }});\n addListener({target: root(), event: 'click', handler: closeAfterMobileNavigation, cleanup});\n initializeGroups(root(), cleanup);\n sync();\n },\n destroy(): void {\n responsiveLayout.cancel();\n resizeLayout.cancel();\n resizeProbes.forEach((probe) => probe.remove());\n resizeProbes.clear();\n setCanvasTransitioning(false);\n controllers.delete(component);\n resizeObserver?.disconnect();\n resizeObserver = null;\n releaseScrollLock?.();\n releaseScrollLock = null;\n bridge.disconnect();\n rootEl = null;\n },\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle {\n if (transition.data.presentation === 'layout') {\n const app = appEl();\n if (!app) return noopHandle(sync);\n if (resizeCommit && transition.to === 'closing') {\n const preview = resizeCommit;\n resizeCommit = null;\n sync();\n return preview.commit();\n }\n resize?.cancel();\n resizePreview?.cancel();\n resizePreview = null;\n resizePreviewSize = null;\n app.style.gridTemplateColumns = '';\n sync();\n // CSS resolves authored lengths; Motion interpolates only a numeric\n // reveal fraction, including when reversing an in-flight transition.\n app.style.setProperty('--ui-app-sidebar-width', `calc(clamp(0, var(--ui-app-sidebar-progress), 1) * ${context().layout.width})`);\n app.dataset.sidebarState = 'expanded';\n const opening = transition.to === 'opening';\n return animateProperties(transition, {\n '--ui-app-sidebar-progress': opening ? [0, 1] : [1, 0],\n }, {target: app, role: 'layout'});\n }\n const side = root().dataset.side === 'right' ? 1 : -1;\n const opening = transition.to === 'opening';\n const outside = side === 1\n ? 'translateX(calc(100% + 0.5rem))'\n : 'translateX(calc(-100% - 0.5rem))';\n const panelMotion = animateProperties(transition, {\n opacity: opening ? [0, 1] : 1,\n transform: opening ? [outside, 'none'] : outside,\n }, {role: opening ? 'presence' : 'presenceExit'});\n const backdrop = backdropEl();\n return backdrop && transition.data.mode === 'mobile'\n ? parallel(panelMotion, animateProperties(transition, {opacity: opening ? [0, 1] : 0}, {target: backdrop, role: opening ? 'feedback' : 'feedbackExit'}))\n : panelMotion;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? initialProps();\n return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.root, props, className: props.class}), {'data-ui-sidebar': ''}]});\n },\n open, close, toggle, stash, expand,\n isExpanded,\n perform(action, trigger, event) {\n if (trigger?.matches('[data-ui-sidebar-edge]')) {\n if (event?.type === 'pointerleave') { edgeHoverDismissed = false; closeEdgeReveal(); return; }\n if (event?.type === 'pointerenter') {\n cancelEdgeIntent();\n activeTrigger = trigger;\n if (!isExpanded() && !edgeHoverDismissed) edgeIntentTimer = setTimeout(() => {\n edgeIntentTimer = null;\n open();\n }, 150);\n return;\n }\n }\n if (action === 'open' || (action === 'toggle' && !isExpanded())) activeTrigger = trigger ?? null;\n ({open, close, toggle, stash, expand})[action]?.();\n },\n syncToggles,\n };\n return component;\n};\n\nconst UiSidebarToggle = (): TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}> => {\n let props = {} as SidebarToggleProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.toggle, props: {}, className: props.class}), {'data-ui-sidebar-toggle': '', ':data-target': () => props.target, ':data-action': () => props.action, '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-toggle', {detail: {id: props.target || 'ui-sidebar', action: props.action, trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}>;\n};\n\nconst UiSidebarEdge = (): TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}> => {\n let props = {} as SidebarEdgeProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.edge, props: {side: this.$el.dataset.side || 'left'}, className: props.class}), {'data-ui-sidebar-edge': '', ':data-target': () => props.target, '@pointerenter': (event: Event) => this.trigger(event), '@pointerleave': (event: Event) => this.leave(event), '@focus': (event: Event) => this.trigger(event), '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n if (event?.type === 'focus' && isFocusIndicatorSuppressed(this.$el)) return;\n document.dispatchEvent(new CustomEvent('ui:sidebar-open', {detail: {id: props.target || 'ui-sidebar', action: 'open', trigger: this.$el, event}}));\n },\n leave(event?: Event) {\n document.dispatchEvent(new CustomEvent('ui:sidebar-close', {detail: {id: props.target || 'ui-sidebar', action: 'close', trigger: this.$el, event}}));\n },\n } as TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}>;\n};\n\nconst registerSidebar = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiSidebar', UiSidebar)(AlpineInstance);\n defineAlpineData('UiSidebarEdge', UiSidebarEdge)(AlpineInstance);\n defineAlpineData('UiSidebarToggle', UiSidebarToggle)(AlpineInstance);\n};\n\nexport {registerSidebar, UiSidebar, UiSidebarEdge, UiSidebarToggle};\nexport type {SidebarController, SidebarData, SidebarTransition, UiSidebarApi};\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 {registerResizableCapability} from '../../capabilities/resizable';\nimport {registerSidebar as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSidebar = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSidebar};\nexport default registerSidebar;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from "./sidebar-GpvEBW3K.js";
2
- export {default} from "./sidebar-GpvEBW3K.js";
1
+ export * from "./sidebar-b0T3yohM.js";
2
+ export {default} from "./sidebar-b0T3yohM.js";
@@ -0,0 +1,2 @@
1
+ import{s as e,t}from"../chunks/dom-DiTFTWeR.js";import{t as n}from"../chunks/number-BCZdoG0B.js";import{t as r,y as i}from"../chunks/properties-D8pFWF8g.js";import{c as a,f as o,l as s,n as c,s as l,u}from"../chunks/codecs-CQ7olTJL.js";import{n as d,t as f}from"../chunks/machine-Do4tL7nc.js";import{n as p}from"../chunks/focus-BvBkrIcj.js";import{n as m,t as h}from"../chunks/alpine-data-Dvc_bXq6.js";import{n as g,t as _}from"../chunks/props-change-2xfsIAEN.js";import{i as v,n as y,r as b}from"../chunks/form-control-DL1Hkox3.js";import{t as x}from"../chunks/control-size-BcDu1m1N.js";import{P as S,c as C}from"../chunks/common-DnEHZCqy.js";var w=x,T=C,E=S,D={name:o,value:o,defaultValue:o.default(`0`),min:a.default(0),max:a.default(100),step:a.default(1),steps:l(null),bigStep:a.default(10),minStepsBetween:a.default(0),range:c,orientation:s(E,`horizontal`),size:s(w,`md`),variant:s(T,`default`),disabled:c,required:c,invalid:c,label:o,description:o,descriptionTrailing:o,error:o,errors:o,badge:o,valueText:o,lowerLabel:o.default(`Minimum`),upperLabel:o.default(`Maximum`),lowerValueText:o,upperValueText:o,showValue:c,format:s([`number`,`percent`],`number`),fieldClass:o,rootClass:o,trackClass:o,rangeClass:o,thumbClass:o,tickClass:o,class:o};a.default(0);var O=[],k=e=>{let t=e.steps;if(t!==null&&(!Array.isArray(t)||t.length<2||t.some((e,n)=>typeof e!=`number`||!Number.isFinite(e)||n>0&&e<=t[n-1])))throw Error(`Slider steps must contain at least two finite numbers in strictly increasing order.`);let r=t?t[0]:Math.min(e.min,e.max),i=t?t[t.length-1]:Math.max(e.min,e.max),a=e.step>0?e.step:1,o=t?t.length-1:Math.floor(Number(((i-r)/a).toPrecision(15))),s=e=>t?t.reduce((n,r,i)=>Math.abs(r-e)<=Math.abs(t[n]-e)?i:n,0):n(Math.round((e-r)/a),0,o),c=e=>(e=n(e,0,o),t?t[e]:Number((r+e*a).toPrecision(15)));return{min:r,max:i,lastIndex:o,indexFor:s,valueAt:c,separation:Math.min(o,Math.ceil(Math.max(0,e.minStepsBetween))),step:t?`any`:String(a),bigStep:e.bigStep>0?e.bigStep:t?10:a*10,advance(e,n,r=0){if(!t)return e+n*(r||a);let i=s(e),o=s(e+n*r);return c(n>0?Math.max(i+1,o):Math.min(i-1,o))}}},A=(e,t)=>{let n=typeof e==`number`?e:Number(e);return Number.isFinite(n)?n:t},j=(e,t,n)=>{let r=k(e),i=r.indexFor(A(t.lower,r.min)),a=r.indexFor(A(t.upper,r.valueAt(r.lastIndex)));if(!e.range)return{lower:r.valueAt(i),upper:r.valueAt(i)};n===`lower`?i=Math.min(i,a):n===`upper`?a=Math.max(i,a):i>a&&([i,a]=[a,i]);let o=r.separation;return a-i<o&&(n===`lower`?(i=Math.max(0,a-o),a=Math.max(a,i+o)):(a=Math.min(r.lastIndex,i+o),i=Math.min(i,a-o))),{lower:r.valueAt(i),upper:r.valueAt(a)}},M=(e,t)=>{let{min:n,max:r}=k(e),i=t.split(`,`).map(e=>e.trim());return j(e,{lower:A(i[0],n),upper:e.range?A(i[1],r):A(i[0],n)})},N=e=>M(e,e.value||e.defaultValue||String(k(e).min)),P=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,F=e=>{if(Array.isArray(e.event.values))return j(e.props,{lower:A(e.event.values[0],e.context.value.lower),upper:A(e.event.values[1],e.context.value.upper)},P(e.event));let t=P(e.event)??e.context.interaction.activeThumb??`single`,n=A(e.event.value,t===`upper`?e.context.value.upper:e.context.value.lower);return j(e.props,{lower:t===`upper`?e.context.value.lower:n,upper:t===`upper`?n:e.context.value.upper},t)},I=e=>{let t=g(e.event)?.props;return t?{...t,range:e.props.range,defaultValue:e.props.defaultValue}:e.props},L=e=>{let t=I(e);return _(e.event,`value`)?M(t,t.value||t.defaultValue||String(k(t).min)):j(t,e.context.value)},R=e=>({event:t})=>t.thumb===e,z=e=>I(e).disabled,B=({props:e,context:t,effects:n})=>f({initial:`idle`,on:{INPUT_CHANGED:{reduce:`setEventValue`,effects:`sync`},INPUT_COMMITTED:{reduce:`setEventValue`,effects:`sync`},EXACT_COMMITTED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]},KEY_STEPPED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]},API_SET:{reduce:`setEventValue`,effects:[`sync`,`emitInput`,`emitChange`]}},states:{idle:{tags:[`idle`],on:{POINTER_STARTED:[{target:`dragging.single`,guard:R(`single`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.lower`,guard:R(`lower`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]},{target:`dragging.upper`,guard:R(`upper`),reduce:`startDrag`,effects:[`beginDrag`,`sync`,`emitInput`]}],PROPS_CHANGED:{reduce:`reconcileProps`,effects:`sync`}}},dragging:{initial:`single`,tags:[`dragging`],on:{POINTER_MOVED:{reduce:`setEventValue`,effects:[`sync`,`emitInput`]},POINTER_ENDED:{target:`idle`,reduce:`endDrag`,effects:[`endDrag`,`sync`,`emitChange`]},PROPS_CHANGED:[{target:`idle`,guard:z,reduce:`reconcileProps`,effects:[`endDrag`,`sync`]},{reduce:`reconcileProps`,effects:`sync`}]},states:{single:{tags:[`dragging-single`]},lower:{tags:[`dragging-lower`]},upper:{tags:[`dragging-upper`]}}}}},{context:t,props:e,reducers:{setEventValue:e=>({context:{...e.context,value:F(e)}}),startDrag:e=>({context:{value:F(e),interaction:{activeThumb:P(e.event)}}}),endDrag:e=>({context:{...e.context,interaction:{activeThumb:null}}}),reconcileProps:e=>({props:I(e),context:{...e.context,value:L(e)}})},effects:n}),V=(e,t)=>{let n=Number(e);return Number.isFinite(n)?n:t},H=(e,t,r)=>r<=t?0:n((e-t)/(r-t)*100,0,100),U=(e,t)=>e.format===`percent`?`${Math.round(t)}%`:String(t),W=(e,t,r)=>{let{min:i,max:a}=k(r),o=e.getBoundingClientRect(),s=r.orientation===`vertical`?1-(t.clientY-o.top)/Math.max(o.height,1):(t.clientX-o.left)/Math.max(o.width,1);return i+n(s,0,1)*(a-i)},G=(e,t)=>e-t.lower<=t.upper-e?`lower`:`upper`,K=(t,n,r,i)=>{t&&(e({el:t,attr:`data-focus`,present:n}),e({el:t,attr:`data-disabled`,present:r}),e({el:t,attr:`data-invalid`,present:i}))},q=({input:e,props:t,value:n,min:r,max:i,label:a,valueText:o,step:s,nativeRequired:c})=>{e&&(e.min=String(r),e.max=String(i),e.step=s,b({input:e,state:{name:t.range?``:t.name,value:String(n),disabled:t.disabled,required:t.required,nativeRequired:c,invalid:t.invalid}}),e.setAttribute(`aria-valuemin`,String(r)),e.setAttribute(`aria-valuemax`,String(i)),e.setAttribute(`aria-valuenow`,String(n)),o?e.setAttribute(`aria-valuetext`,o):e.removeAttribute(`aria-valuetext`),a&&e.setAttribute(`aria-label`,a),t.orientation===`vertical`?e.setAttribute(`aria-orientation`,`vertical`):e.removeAttribute(`aria-orientation`))},J=(e,t,n,a)=>{let{min:o,max:s}=k(e),c=H(n.lower,o,s),l=H(n.upper,o,s),u=e.range?c:0,d=e.range?l:c,f=e.orientation===`vertical`,p=f?`bottom`:`left`;t.range&&(t.range.style[f?`width`:`height`]&&i(t.range),t.range.style[f?`left`:`bottom`]=``,t.range.style[f?`width`:`height`]=``,r(t.range,{[p]:`${u}%`,[f?`height`:`width`]:`${Math.max(0,d-u)}%`},a)),[t.singleThumb,t.lowerThumb,t.upperThumb].forEach(e=>{e&&(e.style[f?`left`:`bottom`]&&i(e),e.style[f?`left`:`bottom`]=``,r(e,{[p]:`${e===t.upperThumb?l:c}%`},a))}),t.ticks.forEach(t=>{let n=H(V(t.dataset.value??``,o),o,s);e.orientation===`vertical`?(t.style.bottom=`${n}%`,t.style.left=``):(t.style.left=`${n}%`,t.style.bottom=``)})},Y=()=>{let e=null,n,r=``,a=``,o=null,s=!1,c=null,l=()=>{if(!e)throw Error(`Slider has not been initialized.`);return e},f=()=>M.getCommittedSnapshot(),m=()=>f().props,g=()=>f().context.value,_=()=>{let e=l(),t=e.querySelector(`[data-ui-slider-root]`);if(!t)throw Error(`Slider requires a root element.`);return{root:t,track:t.querySelector(`[data-ui-slider-track]`),range:t.querySelector(`[data-ui-slider-range]`),lowerInput:t.querySelector(`[data-ui-slider-input][data-thumb="lower"]`),upperInput:t.querySelector(`[data-ui-slider-input][data-thumb="upper"]`),singleInput:t.querySelector(`[data-ui-slider-input][data-thumb="single"]`),lowerThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="lower"]`),upperThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="upper"]`),singleThumb:t.querySelector(`[data-ui-slider-thumb][data-thumb="single"]`),value:e.querySelector(`[data-ui-slider-value]`),hiddenInputs:e.querySelector(`[data-ui-slider-hidden-inputs]`),ticks:Array.from(e.querySelectorAll(`[data-ui-slider-tick]`))}},b=(e,t=_())=>e===`upper`?t.upperInput:e===`lower`?t.lowerInput:t.singleInput,x=e=>e.dataset.thumb===`upper`?`upper`:e.dataset.thumb===`lower`?`lower`:`single`,S=e=>{let t=m(),n=g(),i=_(),o=k(t),{min:s,max:d,step:f}=o,p=t.range?o.valueAt(o.indexFor(n.upper)-o.separation):d,h=t.range?o.valueAt(o.indexFor(n.lower)+o.separation):s;u({el:l(),schema:D,key:`value`,value:t.range?`${n.lower},${n.upper}`:String(n.lower)}),q({input:i.singleInput,props:t,step:f,value:n.lower,min:s,max:d,label:t.label,valueText:t.valueText,nativeRequired:t.required}),q({input:i.lowerInput,props:t,step:f,value:n.lower,min:s,max:p,label:t.lowerLabel,valueText:t.lowerValueText,nativeRequired:!1}),q({input:i.upperInput,props:t,step:f,value:n.upper,min:h,max:d,label:t.upperLabel,valueText:t.upperValueText,nativeRequired:!1});let S=[t.orientation,t.disabled,s,d,n.lower,n.upper].join(`:`);(!e||![`focus`,`blur`,`POINTER_ENDED`].includes(e.type)&&(e.type!==`PROPS_CHANGED`||S!==a))&&(a=S,J(t,i,n,{role:`layout`,...e?.type===`POINTER_STARTED`&&e.origin===`track`?{}:{transition:{duration:0}}})),t.disabled&&c&&C(`cancel`),i.value?.querySelectorAll(`[data-ui-slider-value-button]`).forEach(e=>{let r=x(e),i=r===`upper`?n.upper:n.lower,a=r===`single`?t.label||b(r)?.getAttribute(`aria-label`)||`Value`:r===`lower`?t.lowerLabel:t.upperLabel;e.querySelector(`[data-ui-slider-value-label]`).textContent=U(t,i),e.disabled=t.disabled,e.setAttribute(`aria-label`,`Edit ${a}`);let o=e.parentElement.querySelector(`[data-ui-slider-value-input]`);o.setAttribute(`aria-label`,a),o.min=String(r===`upper`?h:s),o.max=String(r===`lower`?p:d),o.step=f,o.disabled=t.disabled||o!==c}),y({el:l(),state:t}),y({el:i.root,state:t}),i.track&&y({el:i.track,state:{disabled:t.disabled,invalid:t.invalid}}),i.range&&y({el:i.range,state:{disabled:t.disabled,invalid:t.invalid}}),K(i.singleThumb,i.singleInput===document.activeElement,t.disabled,t.invalid),K(i.lowerThumb,i.lowerInput===document.activeElement,t.disabled,t.invalid),K(i.upperThumb,i.upperInput===document.activeElement,t.disabled,t.invalid),t.range&&i.hiddenInputs?r=v({container:i.hiddenInputs,currentKey:r,state:{name:t.name,values:[String(n.lower),String(n.upper)],required:t.required,marker:`data-ui-slider-hidden-input`}}):i.hiddenInputs&&(r=v({container:i.hiddenInputs,currentKey:r,state:{name:``,values:[],marker:`data-ui-slider-hidden-input`}}))},C=(e,t=`leave`)=>{let n=c;if(!n)return;c=null;let r=n.parentElement.querySelector(`[data-ui-slider-value-button]`);n.hidden=!0,n.disabled=!0,r.hidden=!1,e===`commit`&&!m().disabled&&n.value.trim()&&Number.isFinite(n.valueAsNumber)&&M.send({type:`EXACT_COMMITTED`,thumb:x(n),value:n.valueAsNumber}),t===`restore`&&p(r)},w=e=>{if(m().disabled)return;C(`commit`);let t=e.parentElement.querySelector(`[data-ui-slider-value-input]`),n=g();t.value=String(x(e)===`upper`?n.upper:n.lower),c=t,e.hidden=!0,t.hidden=!1,t.disabled=!1,p(t),t.select()},T=e=>e.thumb===`single`||e.thumb===`lower`||e.thumb===`upper`?e.thumb:null,E=(e,t,n)=>{let r=_(),i=n.type===`API_SET`&&m().range?[r.lowerInput,r.upperInput]:[b(T(n)??t.context.interaction.activeThumb,r)];s=!0;try{i.forEach(t=>t?.dispatchEvent(new Event(e,{bubbles:!0})))}finally{s=!1}},A=(e,t)=>{let n=_(),r=e.context.interaction.activeThumb;if(p(b(r,n)),o=typeof t.pointerId==`number`?t.pointerId:null,o!==null)try{n.root.setPointerCapture(o)}catch{M.send({type:`POINTER_ENDED`,thumb:r})}},j=()=>{if(o!==null){try{_().root.releasePointerCapture(o)}catch{}o=null}},M=d({schema:D,hooks:O,createMachine:({props:e})=>B({props:e,context:{value:N(e),interaction:{activeThumb:null}},effects:{sync:({event:e})=>S(e),beginDrag:({snapshot:e,event:t})=>A(e,t),endDrag:j,emitInput:({snapshot:e,event:t})=>E(`input`,e,t),emitChange:({snapshot:e,event:t})=>E(`change`,e,t)}})}),P=(e,t)=>{!s&&e.target instanceof HTMLInputElement&&M.send({type:t?`INPUT_COMMITTED`:`INPUT_CHANGED`,thumb:x(e.target),value:e.target.value})},F=e=>{if(!(e.target instanceof HTMLInputElement))return;let t=m(),n=[`ArrowDown`,`ArrowLeft`,`ArrowUp`,`ArrowRight`].includes(e.key),r=[`PageUp`,`PageDown`].includes(e.key)||e.shiftKey&&n;if(!r&&!(t.steps&&n))return;e.preventDefault();let i=[`PageDown`,`ArrowDown`,`ArrowLeft`].includes(e.key)?-1:1,a=k(t);M.send({type:`KEY_STEPPED`,thumb:x(e.target),value:a.advance(V(e.target.value,a.min),i,r?a.bigStep:0)})},I=e=>{if(m().disabled||!e.isPrimary||e.button!==0||o!==null)return;let t=_(),n=W(t.root,e,m()),r=m().orientation===`vertical`,i=r?-e.clientY:e.clientX,a=null,s=1/0;for(let n of[t.singleThumb,t.lowerThumb,t.upperThumb]){if(!n)continue;let t=n.getBoundingClientRect();if(e.clientX<t.left||e.clientX>t.right||e.clientY<t.top||e.clientY>t.bottom)continue;let o=r?-(t.top+t.height/2):t.left+t.width/2,c=Math.abs(i-o);(c<s||c===s&&i>o)&&(a=n,s=c)}let c=a?x(a):m().range?G(n,g()):`single`;M.send({type:`POINTER_STARTED`,value:n,thumb:c,pointerId:e.pointerId,origin:a?`thumb`:`track`}),e.preventDefault()},L=e=>{o===e.pointerId&&M.hasTag(`dragging`)&&M.send({type:`POINTER_MOVED`,value:W(_().root,e,m()),thumb:f().context.interaction.activeThumb})},R=e=>{o===e.pointerId&&M.hasTag(`dragging`)&&M.send({type:`POINTER_ENDED`,thumb:f().context.interaction.activeThumb})},z;return z={...M,get values(){let e=this.snapshot.current;return e?e.props.range?[e.context.value.lower,e.context.value.upper]:[e.context.value.lower]:[]},setValue(e){M.send({type:`API_SET`,values:Array.isArray(e)?e:[e]})},init(){n=h(this),e=this.$el,M.connect(this.$el,this.snapshot);let r=_();[r.singleInput,r.lowerInput,r.upperInput].forEach(e=>{e&&(t({target:e,event:`input`,handler:e=>P(e,!1),cleanup:n}),t({target:e,event:`change`,handler:e=>P(e,!0),cleanup:n}),t({target:e,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&F(e)},cleanup:n}),t({target:e,event:`focus`,handler:S,cleanup:n}),t({target:e,event:`blur`,handler:S,cleanup:n}))}),t({target:r.root,event:`pointerdown`,handler:e=>{e instanceof PointerEvent&&I(e)},cleanup:n}),t({target:r.root,event:`pointermove`,handler:e=>{e instanceof PointerEvent&&L(e)},cleanup:n}),t({target:r.root,event:`pointerup`,handler:e=>{e instanceof PointerEvent&&R(e)},cleanup:n}),t({target:r.root,event:`pointercancel`,handler:e=>{e instanceof PointerEvent&&R(e)},cleanup:n}),r.value&&(t({target:r.value,event:`click`,handler:e=>{let t=e.target instanceof Element?e.target.closest(`[data-ui-slider-value-button]`):null;t&&w(t)},cleanup:n}),t({target:r.value,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&e.target===c&&(e.key===`Enter`||e.key===`Escape`)&&(e.preventDefault(),e.stopPropagation(),C(e.key===`Enter`?`commit`:`cancel`,`restore`))},cleanup:n}),t({target:r.value,event:`focusout`,handler:e=>{e.target===c&&C(`commit`)},cleanup:n}),[`input`,`change`].forEach(e=>t({target:r.value,event:e,handler:e=>e.stopPropagation(),cleanup:n}))),S()},destroy(){j();let t=_();[t.range,t.singleThumb,t.lowerThumb,t.upperThumb].forEach(e=>{e&&i(e)}),M.disconnect(),e=null}},z},X=m(`UiSlider`,Y),Z=new WeakSet,Q=e=>{Z.has(e)||(Z.add(e),X(e))};export{Y as UiSlider,Q as default,Q as registerSlider};
2
+ //# sourceMappingURL=slider-B08DRTzI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider-B08DRTzI.js","names":[],"sources":["../../../../../../../../client/src/components/slider/contract.ts","../../../../../../../../client/src/components/slider/machine.ts","../../../../../../../../client/src/components/slider/index.ts","../../../../../../../../client/src/components/slider/entry.generated.ts"],"sourcesContent":["import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {CONTROL_SIZES, DEFAULT_VARIANTS, ORIENTATIONS, type ControlSize, type DefaultVariant, type Orientation} from '../common';\n\nconst SLIDER_SIZES = CONTROL_SIZES;\nconst SLIDER_VARIANTS = DEFAULT_VARIANTS;\nconst SLIDER_ORIENTATIONS = ORIENTATIONS;\nconst SLIDER_FORMATS = ['number', 'percent'] as const;\n\ntype SliderSize = ControlSize;\ntype SliderVariant = DefaultVariant;\ntype SliderOrientation = Orientation;\ntype SliderFormat = typeof SLIDER_FORMATS[number];\n\nconst sliderSchema = {\n name: string,\n value: string,\n defaultValue: string.default('0'),\n min: number.default(0),\n max: number.default(100),\n step: number.default(1),\n steps: json<readonly number[] | null>(null),\n bigStep: number.default(10),\n minStepsBetween: number.default(0),\n range: bool,\n orientation: oneOf(SLIDER_ORIENTATIONS, 'horizontal' as SliderOrientation),\n size: oneOf(SLIDER_SIZES, 'md' as SliderSize),\n variant: oneOf(SLIDER_VARIANTS, 'default' as SliderVariant),\n disabled: bool,\n required: bool,\n invalid: bool,\n label: string,\n description: string,\n descriptionTrailing: string,\n error: string,\n errors: string,\n badge: string,\n valueText: string,\n lowerLabel: string.default('Minimum'),\n upperLabel: string.default('Maximum'),\n lowerValueText: string,\n upperValueText: string,\n showValue: bool,\n format: oneOf(SLIDER_FORMATS, 'number' as SliderFormat),\n fieldClass: string,\n rootClass: string,\n trackClass: string,\n rangeClass: string,\n thumbClass: string,\n tickClass: string,\n class: string,\n};\n\nconst sliderTickSchema = {\n value: number.default(0),\n label: string,\n class: string,\n};\n\ntype SliderProps = SchemaToProps<typeof sliderSchema>;\ntype SliderTickProps = SchemaToProps<typeof sliderTickSchema>;\n\nexport {\n SLIDER_FORMATS,\n SLIDER_ORIENTATIONS,\n SLIDER_SIZES,\n SLIDER_VARIANTS,\n sliderSchema,\n sliderTickSchema,\n};\nexport type {\n SliderFormat,\n SliderOrientation,\n SliderProps,\n SliderSize,\n SliderTickProps,\n SliderVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {clamp} from '../../utils';\nimport type {SliderProps} from './contract';\n\ntype SliderThumbName = 'single' | 'lower' | 'upper';\ntype SliderValues = {lower: number; upper: number};\ntype SliderContext = {\n value: SliderValues;\n interaction: {activeThumb: SliderThumbName | null};\n};\n\ntype SliderMachineEffects = {\n sync(scope: MachineScope<SliderContext, SliderProps>): void;\n beginDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n endDrag(scope: MachineScope<SliderContext, SliderProps>): void;\n emitInput(scope: MachineScope<SliderContext, SliderProps>): void;\n emitChange(scope: MachineScope<SliderContext, SliderProps>): void;\n};\n\ntype CreateSliderMachineOptions = {\n props: SliderProps;\n context: SliderContext;\n effects: SliderMachineEffects;\n};\n\nconst sliderHooks = [] as const;\n\nconst sliderScale = (props: SliderProps) => {\n const stops = props.steps;\n if (stops !== null && (!Array.isArray(stops) || stops.length < 2 || stops.some((value, index) => (\n typeof value !== 'number' || !Number.isFinite(value) || (index > 0 && value <= stops[index - 1]!)\n )))) throw new Error('Slider steps must contain at least two finite numbers in strictly increasing order.');\n const min = stops ? stops[0]! : Math.min(props.min, props.max);\n const max = stops ? stops[stops.length - 1]! : Math.max(props.min, props.max);\n const increment = props.step > 0 ? props.step : 1;\n const lastIndex = stops ? stops.length - 1 : Math.floor(Number(((max - min) / increment).toPrecision(15)));\n const indexFor = (value: number): number => stops\n ? stops.reduce((nearest, stop, index) => Math.abs(stop - value) <= Math.abs(stops[nearest]! - value) ? index : nearest, 0)\n : clamp(Math.round((value - min) / increment), 0, lastIndex);\n const valueAt = (index: number): number => {\n index = clamp(index, 0, lastIndex);\n return stops ? stops[index]! : Number((min + index * increment).toPrecision(15));\n };\n return {\n min, max, lastIndex, indexFor, valueAt,\n separation: Math.min(lastIndex, Math.ceil(Math.max(0, props.minStepsBetween))),\n step: stops ? 'any' : String(increment),\n bigStep: props.bigStep > 0 ? props.bigStep : stops ? 10 : increment * 10,\n advance(value: number, direction: number, distance = 0): number {\n if (!stops) return value + direction * (distance || increment);\n const current = indexFor(value);\n const next = indexFor(value + direction * distance);\n return valueAt(direction > 0 ? Math.max(current + 1, next) : Math.min(current - 1, next));\n },\n };\n};\n\nconst parseNumber = (value: unknown, fallback: number): number => {\n const parsed = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst normalizeSliderValues = (\n props: SliderProps,\n values: SliderValues,\n changedThumb?: SliderThumbName | null,\n): SliderValues => {\n const scale = sliderScale(props);\n let lower = scale.indexFor(parseNumber(values.lower, scale.min));\n let upper = scale.indexFor(parseNumber(values.upper, scale.valueAt(scale.lastIndex)));\n if (!props.range) return {lower: scale.valueAt(lower), upper: scale.valueAt(lower)};\n if (changedThumb === 'lower') lower = Math.min(lower, upper);\n else if (changedThumb === 'upper') upper = Math.max(lower, upper);\n else if (lower > upper) [lower, upper] = [upper, lower];\n\n const distance = scale.separation;\n if (upper - lower < distance) {\n if (changedThumb === 'lower') {\n lower = Math.max(0, upper - distance);\n upper = Math.max(upper, lower + distance);\n } else {\n upper = Math.min(scale.lastIndex, lower + distance);\n lower = Math.min(lower, upper - distance);\n }\n }\n return {lower: scale.valueAt(lower), upper: scale.valueAt(upper)};\n};\n\nconst sliderValuesFromString = (props: SliderProps, value: string): SliderValues => {\n const {min, max} = sliderScale(props);\n const parts = value.split(',').map((part) => part.trim());\n return normalizeSliderValues(props, {\n lower: parseNumber(parts[0], min),\n upper: props.range ? parseNumber(parts[1], max) : parseNumber(parts[0], min),\n });\n};\n\nconst initialSliderValues = (props: SliderProps): SliderValues => (\n sliderValuesFromString(props, props.value || props.defaultValue || String(sliderScale(props).min))\n);\n\nconst eventThumb = (event: MachineEventObject): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n);\nconst eventValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n if (Array.isArray(scope.event.values)) {\n return normalizeSliderValues(scope.props, {\n lower: parseNumber(scope.event.values[0], scope.context.value.lower),\n upper: parseNumber(scope.event.values[1], scope.context.value.upper),\n }, eventThumb(scope.event));\n }\n const thumb = eventThumb(scope.event) ?? scope.context.interaction.activeThumb ?? 'single';\n const value = parseNumber(scope.event.value, thumb === 'upper' ? scope.context.value.upper : scope.context.value.lower);\n return normalizeSliderValues(scope.props, {\n lower: thumb === 'upper' ? scope.context.value.lower : value,\n upper: thumb === 'upper' ? value : scope.context.value.upper,\n }, thumb);\n};\nconst nextProps = (scope: MachineScope<SliderContext, SliderProps>): SliderProps => {\n const next = propsChangedEvent<SliderProps>(scope.event)?.props;\n return next ? {...next, range: scope.props.range, defaultValue: scope.props.defaultValue} : scope.props;\n};\nconst propsValues = (scope: MachineScope<SliderContext, SliderProps>): SliderValues => {\n const props = nextProps(scope);\n return propsChanged<SliderProps>(scope.event, 'value')\n ? sliderValuesFromString(props, props.value || props.defaultValue || String(sliderScale(props).min))\n : normalizeSliderValues(props, scope.context.value);\n};\nconst thumbIs = (thumb: SliderThumbName) => ({event}: MachineScope<SliderContext, SliderProps>): boolean => event.thumb === thumb;\nconst becomesDisabled = (scope: MachineScope<SliderContext, SliderProps>): boolean => nextProps(scope).disabled;\n\nconst createSliderMachine = ({props, context, effects}: CreateSliderMachineOptions): Machine<SliderContext, SliderProps> => createMachine<SliderContext, SliderProps>({\n initial: 'idle',\n on: {\n INPUT_CHANGED: {reduce: 'setEventValue', effects: 'sync'},\n INPUT_COMMITTED: {reduce: 'setEventValue', effects: 'sync'},\n EXACT_COMMITTED: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n KEY_STEPPED: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n API_SET: {reduce: 'setEventValue', effects: ['sync', 'emitInput', 'emitChange']},\n },\n states: {\n idle: {\n tags: ['idle'],\n on: {\n POINTER_STARTED: [\n {target: 'dragging.single', guard: thumbIs('single'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.lower', guard: thumbIs('lower'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n {target: 'dragging.upper', guard: thumbIs('upper'), reduce: 'startDrag', effects: ['beginDrag', 'sync', 'emitInput']},\n ],\n PROPS_CHANGED: {reduce: 'reconcileProps', effects: 'sync'},\n },\n },\n dragging: {\n initial: 'single',\n tags: ['dragging'],\n on: {\n POINTER_MOVED: {reduce: 'setEventValue', effects: ['sync', 'emitInput']},\n POINTER_ENDED: {target: 'idle', reduce: 'endDrag', effects: ['endDrag', 'sync', 'emitChange']},\n PROPS_CHANGED: [\n {target: 'idle', guard: becomesDisabled, reduce: 'reconcileProps', effects: ['endDrag', 'sync']},\n {reduce: 'reconcileProps', effects: 'sync'},\n ],\n },\n states: {\n single: {tags: ['dragging-single']},\n lower: {tags: ['dragging-lower']},\n upper: {tags: ['dragging-upper']},\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n setEventValue: (scope) => ({context: {...scope.context, value: eventValues(scope)}}),\n startDrag: (scope) => ({\n context: {\n value: eventValues(scope),\n interaction: {activeThumb: eventThumb(scope.event)},\n },\n }),\n endDrag: (scope) => ({context: {...scope.context, interaction: {activeThumb: null}}}),\n reconcileProps: (scope) => ({\n props: nextProps(scope),\n context: {...scope.context, value: propsValues(scope)},\n }),\n },\n effects,\n});\n\nexport {\n createSliderMachine,\n initialSliderValues,\n normalizeSliderValues,\n sliderScale,\n sliderHooks,\n};\nexport type {\n CreateSliderMachineOptions,\n SliderContext,\n SliderMachineEffects,\n SliderThumbName,\n SliderValues,\n};\n","import type Alpine from 'alpinejs';\n\nimport {releaseOwnedMotion} from '@client/motion/owned';\nimport {animateProperties, type PropertyAnimationOptions} from '@client/motion/properties';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n focusElement,\n type MachineSnapshot,\n reflectSchemaProp,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {syncControlPresence, syncNativeControl, syncRepeatedHiddenInputs} from '@client/runtime/form-control';\nimport {addListener, clamp, setPresence} from '@client/utils';\nimport {sliderSchema, type SliderProps} from './contract';\nimport {\n createSliderMachine,\n initialSliderValues,\n sliderScale,\n type SliderContext,\n sliderHooks,\n type SliderThumbName,\n type SliderValues,\n} from './machine';\n\ntype SliderElements = {\n root: HTMLElement;\n track: HTMLElement | null;\n range: HTMLElement | null;\n lowerInput: HTMLInputElement | null;\n upperInput: HTMLInputElement | null;\n singleInput: HTMLInputElement | null;\n lowerThumb: HTMLElement | null;\n upperThumb: HTMLElement | null;\n singleThumb: HTMLElement | null;\n value: HTMLElement | null;\n hiddenInputs: HTMLElement | null;\n ticks: HTMLElement[];\n};\n\n/**\n * Public Alpine API for `ui.slider`.\n *\n * @public\n */\ninterface UiSliderApi {\n /** Current normalized values: one item for single mode, lower and upper for range mode. */\n readonly values: readonly number[];\n /** Set and commit a normalized single value or lower/upper range. */\n setValue(value: number | readonly [number, number]): void;\n}\n\ntype SliderData = AlpineMachine<SliderContext, SliderProps, typeof sliderHooks> & UiSliderApi & {\n init(): void;\n destroy(): void;\n};\n\nconst parseValue = (value: string, fallback: number): number => {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst percentFor = (value: number, min: number, max: number): number => {\n if (max <= min) return 0;\n return clamp(((value - min) / (max - min)) * 100, 0, 100);\n};\n\nconst formatValue = (props: SliderProps, value: number): string => (\n props.format === 'percent' ? `${Math.round(value)}%` : String(value)\n);\n\nconst valueFromPointer = (root: HTMLElement, event: PointerEvent, props: SliderProps): number => {\n const {min, max} = sliderScale(props);\n const rect = root.getBoundingClientRect();\n const ratio = props.orientation === 'vertical'\n ? 1 - ((event.clientY - rect.top) / Math.max(rect.height, 1))\n : (event.clientX - rect.left) / Math.max(rect.width, 1);\n return min + clamp(ratio, 0, 1) * (max - min);\n};\n\nconst nearestThumb = (value: number, values: SliderValues): SliderThumbName => (\n value - values.lower <= values.upper - value ? 'lower' : 'upper'\n);\n\nconst setThumbPresence = (thumb: HTMLElement | null, present: boolean, disabled: boolean, invalid: boolean): void => {\n if (!thumb) return;\n setPresence({el: thumb, attr: 'data-focus', present});\n setPresence({el: thumb, attr: 'data-disabled', present: disabled});\n setPresence({el: thumb, attr: 'data-invalid', present: invalid});\n};\n\nconst syncInput = ({\n input,\n props,\n value,\n min,\n max,\n label,\n valueText,\n step,\n nativeRequired,\n}: {\n input: HTMLInputElement | null;\n props: SliderProps;\n value: number;\n min: number;\n max: number;\n label: string;\n valueText: string;\n step: string;\n nativeRequired: boolean;\n}): void => {\n if (!input) return;\n input.min = String(min);\n input.max = String(max);\n input.step = step;\n syncNativeControl({input, state: {\n name: props.range ? '' : props.name,\n value: String(value),\n disabled: props.disabled,\n required: props.required,\n nativeRequired,\n invalid: props.invalid,\n }});\n input.setAttribute('aria-valuemin', String(min));\n input.setAttribute('aria-valuemax', String(max));\n input.setAttribute('aria-valuenow', String(value));\n if (valueText) input.setAttribute('aria-valuetext', valueText);\n else input.removeAttribute('aria-valuetext');\n if (label) input.setAttribute('aria-label', label);\n if (props.orientation === 'vertical') input.setAttribute('aria-orientation', 'vertical');\n else input.removeAttribute('aria-orientation');\n};\n\nconst writeGeometry = (props: SliderProps, elements: SliderElements, values: SliderValues, motion: PropertyAnimationOptions): void => {\n const {min, max} = sliderScale(props);\n const lowerPercent = percentFor(values.lower, min, max);\n const upperPercent = percentFor(values.upper, min, max);\n const start = props.range ? lowerPercent : 0;\n const end = props.range ? upperPercent : lowerPercent;\n\n const vertical = props.orientation === 'vertical';\n const position = vertical ? 'bottom' : 'left';\n if (elements.range) {\n if (elements.range.style[vertical ? 'width' : 'height']) releaseOwnedMotion(elements.range);\n elements.range.style[vertical ? 'left' : 'bottom'] = '';\n elements.range.style[vertical ? 'width' : 'height'] = '';\n animateProperties(elements.range, {\n [position]: `${start}%`,\n [vertical ? 'height' : 'width']: `${Math.max(0, end - start)}%`,\n }, motion);\n }\n [elements.singleThumb, elements.lowerThumb, elements.upperThumb].forEach((thumb) => {\n if (!thumb) return;\n if (thumb.style[vertical ? 'left' : 'bottom']) releaseOwnedMotion(thumb);\n thumb.style[vertical ? 'left' : 'bottom'] = '';\n animateProperties(thumb, {[position]: `${thumb === elements.upperThumb ? upperPercent : lowerPercent}%`}, motion);\n });\n\n elements.ticks.forEach((tick) => {\n const tickPercent = percentFor(parseValue(tick.dataset.value ?? '', min), min, max);\n if (props.orientation === 'vertical') {\n tick.style.bottom = `${tickPercent}%`;\n tick.style.left = '';\n } else {\n tick.style.left = `${tickPercent}%`;\n tick.style.bottom = '';\n }\n });\n};\n\nconst UiSlider = (): TrellisAlpineComponent<SliderData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupManager;\n let hiddenInputsKey = '';\n let geometryKey = '';\n let pointerId: number | null = null;\n let dispatchingNative = false;\n let activeEditor: HTMLInputElement | null = null;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Slider has not been initialized.');\n return rootEl;\n };\n const currentSnapshot = (): MachineSnapshot<SliderContext, SliderProps> => bridge.getCommittedSnapshot();\n const currentProps = (): Readonly<SliderProps> => currentSnapshot().props;\n const currentValues = (): Readonly<SliderValues> => currentSnapshot().context.value;\n const elements = (): SliderElements => {\n const slider = root();\n const interactiveRoot = slider.querySelector<HTMLElement>('[data-ui-slider-root]');\n if (!interactiveRoot) throw new Error('Slider requires a root element.');\n return {\n root: interactiveRoot,\n track: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-track]'),\n range: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-range]'),\n lowerInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"lower\"]'),\n upperInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"upper\"]'),\n singleInput: interactiveRoot.querySelector<HTMLInputElement>('[data-ui-slider-input][data-thumb=\"single\"]'),\n lowerThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"lower\"]'),\n upperThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"upper\"]'),\n singleThumb: interactiveRoot.querySelector<HTMLElement>('[data-ui-slider-thumb][data-thumb=\"single\"]'),\n value: slider.querySelector<HTMLElement>('[data-ui-slider-value]'),\n hiddenInputs: slider.querySelector<HTMLElement>('[data-ui-slider-hidden-inputs]'),\n ticks: Array.from(slider.querySelectorAll<HTMLElement>('[data-ui-slider-tick]')),\n };\n };\n const inputFor = (thumb: SliderThumbName | null, parts = elements()): HTMLInputElement | null => {\n if (thumb === 'upper') return parts.upperInput;\n if (thumb === 'lower') return parts.lowerInput;\n return parts.singleInput;\n };\n const thumbFromElement = (input: HTMLElement): SliderThumbName => {\n if (input.dataset.thumb === 'upper') return 'upper';\n if (input.dataset.thumb === 'lower') return 'lower';\n return 'single';\n };\n\n const syncDom = (event?: {type: string; origin?: unknown}): void => {\n const props = currentProps();\n const values = currentValues();\n const parts = elements();\n const scale = sliderScale(props);\n const {min, max, step} = scale;\n const lowerMax = props.range ? scale.valueAt(scale.indexFor(values.upper) - scale.separation) : max;\n const upperMin = props.range ? scale.valueAt(scale.indexFor(values.lower) + scale.separation) : min;\n reflectSchemaProp({\n el: root(),\n schema: sliderSchema,\n key: 'value',\n value: props.range ? `${values.lower},${values.upper}` : String(values.lower),\n });\n syncInput({\n input: parts.singleInput,\n props,\n step,\n value: values.lower,\n min,\n max,\n label: props.label,\n valueText: props.valueText,\n nativeRequired: props.required,\n });\n syncInput({\n input: parts.lowerInput,\n props,\n step,\n value: values.lower,\n min,\n max: lowerMax,\n label: props.lowerLabel,\n valueText: props.lowerValueText,\n nativeRequired: false,\n });\n syncInput({\n input: parts.upperInput,\n props,\n step,\n value: values.upper,\n min: upperMin,\n max,\n label: props.upperLabel,\n valueText: props.upperValueText,\n nativeRequired: false,\n });\n const nextGeometryKey = [props.orientation, props.disabled, min, max, values.lower, values.upper].join(':');\n // Focus, release and reflected-value echoes do not interrupt track-click motion.\n if (!event || (!['focus', 'blur', 'POINTER_ENDED'].includes(event.type)\n && (event.type !== 'PROPS_CHANGED' || nextGeometryKey !== geometryKey))) {\n geometryKey = nextGeometryKey;\n writeGeometry(props, parts, values as SliderValues, {\n role: 'layout',\n ...(event?.type === 'POINTER_STARTED' && event.origin === 'track' ? {} : {transition: {duration: 0}}),\n });\n }\n if (props.disabled && activeEditor) finishEditing('cancel');\n parts.value?.querySelectorAll<HTMLButtonElement>('[data-ui-slider-value-button]').forEach((button) => {\n const thumb = thumbFromElement(button);\n const value = thumb === 'upper' ? values.upper : values.lower;\n const label = thumb === 'single' ? props.label || inputFor(thumb)?.getAttribute('aria-label') || 'Value'\n : thumb === 'lower' ? props.lowerLabel : props.upperLabel;\n button.querySelector<HTMLElement>('[data-ui-slider-value-label]')!.textContent = formatValue(props, value);\n button.disabled = props.disabled;\n button.setAttribute('aria-label', `Edit ${label}`);\n const editor = button.parentElement!.querySelector<HTMLInputElement>('[data-ui-slider-value-input]')!;\n editor.setAttribute('aria-label', label);\n editor.min = String(thumb === 'upper' ? upperMin : min);\n editor.max = String(thumb === 'lower' ? lowerMax : max);\n editor.step = step;\n editor.disabled = props.disabled || editor !== activeEditor;\n });\n syncControlPresence({el: root(), state: props});\n syncControlPresence({el: parts.root, state: props});\n if (parts.track) syncControlPresence({el: parts.track, state: {disabled: props.disabled, invalid: props.invalid}});\n if (parts.range) syncControlPresence({el: parts.range, state: {disabled: props.disabled, invalid: props.invalid}});\n setThumbPresence(parts.singleThumb, parts.singleInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.lowerThumb, parts.lowerInput === document.activeElement, props.disabled, props.invalid);\n setThumbPresence(parts.upperThumb, parts.upperInput === document.activeElement, props.disabled, props.invalid);\n if (props.range && parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: props.name,\n values: [String(values.lower), String(values.upper)],\n required: props.required,\n marker: 'data-ui-slider-hidden-input',\n }});\n } else if (parts.hiddenInputs) {\n hiddenInputsKey = syncRepeatedHiddenInputs({container: parts.hiddenInputs, currentKey: hiddenInputsKey, state: {\n name: '',\n values: [],\n marker: 'data-ui-slider-hidden-input',\n }});\n }\n };\n\n const finishEditing = (action: 'commit' | 'cancel', focus: 'restore' | 'leave' = 'leave'): void => {\n const editor = activeEditor;\n if (!editor) return;\n activeEditor = null;\n const button = editor.parentElement!.querySelector<HTMLButtonElement>('[data-ui-slider-value-button]')!;\n editor.hidden = true;\n editor.disabled = true;\n button.hidden = false;\n if (action === 'commit' && !currentProps().disabled && editor.value.trim() && Number.isFinite(editor.valueAsNumber)) {\n bridge.send({type: 'EXACT_COMMITTED', thumb: thumbFromElement(editor), value: editor.valueAsNumber});\n }\n if (focus === 'restore') focusElement(button);\n };\n const beginEditing = (button: HTMLButtonElement): void => {\n if (currentProps().disabled) return;\n finishEditing('commit');\n const editor = button.parentElement!.querySelector<HTMLInputElement>('[data-ui-slider-value-input]')!;\n const values = currentValues();\n editor.value = String(thumbFromElement(button) === 'upper' ? values.upper : values.lower);\n activeEditor = editor;\n button.hidden = true;\n editor.hidden = false;\n editor.disabled = false;\n focusElement(editor);\n editor.select();\n };\n\n const eventThumb = (event: {thumb?: unknown}): SliderThumbName | null => (\n event.thumb === 'single' || event.thumb === 'lower' || event.thumb === 'upper' ? event.thumb : null\n );\n const emitNative = (name: 'input' | 'change', snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {thumb?: unknown; type: string}): void => {\n const parts = elements();\n const inputs = event.type === 'API_SET' && currentProps().range\n ? [parts.lowerInput, parts.upperInput]\n : [inputFor(eventThumb(event) ?? snapshot.context.interaction.activeThumb, parts)];\n dispatchingNative = true;\n try {\n inputs.forEach((input) => input?.dispatchEvent(new Event(name, {bubbles: true})));\n } finally {\n dispatchingNative = false;\n }\n };\n const beginDrag = (snapshot: MachineSnapshot<SliderContext, SliderProps>, event: {type: string; [key: string]: unknown}): void => {\n const parts = elements();\n const thumb = snapshot.context.interaction.activeThumb;\n focusElement(inputFor(thumb, parts));\n pointerId = typeof event.pointerId === 'number' ? event.pointerId : null;\n if (pointerId === null) return;\n try {\n parts.root.setPointerCapture(pointerId);\n } catch {\n bridge.send({type: 'POINTER_ENDED', thumb});\n }\n };\n const endDrag = (): void => {\n if (pointerId === null) return;\n try {\n elements().root.releasePointerCapture(pointerId);\n } catch {\n // Capture cleanup is best-effort after interruption.\n }\n pointerId = null;\n };\n\n const bridge = createAlpineMachine({\n schema: sliderSchema,\n hooks: sliderHooks,\n createMachine: ({props}) => createSliderMachine({\n props,\n context: {value: initialSliderValues(props), interaction: {activeThumb: null}},\n effects: {\n sync: ({event}) => syncDom(event),\n beginDrag: ({snapshot, event}) => beginDrag(snapshot, event),\n endDrag,\n emitInput: ({snapshot, event}) => emitNative('input', snapshot, event),\n emitChange: ({snapshot, event}) => emitNative('change', snapshot, event),\n },\n }),\n });\n\n const handleInput = (event: Event, committed: boolean): void => {\n if (dispatchingNative || !(event.target instanceof HTMLInputElement)) return;\n bridge.send({\n type: committed ? 'INPUT_COMMITTED' : 'INPUT_CHANGED',\n thumb: thumbFromElement(event.target),\n value: event.target.value,\n });\n };\n const handleKeydown = (event: KeyboardEvent): void => {\n if (!(event.target instanceof HTMLInputElement)) return;\n const props = currentProps();\n const arrow = ['ArrowDown', 'ArrowLeft', 'ArrowUp', 'ArrowRight'].includes(event.key);\n const large = ['PageUp', 'PageDown'].includes(event.key) || (event.shiftKey && arrow);\n if (!large && !(props.steps && arrow)) return;\n event.preventDefault();\n const direction = ['PageDown', 'ArrowDown', 'ArrowLeft'].includes(event.key) ? -1 : 1;\n const scale = sliderScale(props);\n bridge.send({\n type: 'KEY_STEPPED',\n thumb: thumbFromElement(event.target),\n value: scale.advance(parseValue(event.target.value, scale.min), direction, large ? scale.bigStep : 0),\n });\n };\n const handlePointerDown = (event: PointerEvent): void => {\n if (currentProps().disabled || !event.isPrimary || event.button !== 0 || pointerId !== null) return;\n const parts = elements();\n const value = valueFromPointer(parts.root, event, currentProps());\n const vertical = currentProps().orientation === 'vertical';\n const pointer = vertical ? -event.clientY : event.clientX;\n let hitThumb: HTMLElement | null = null;\n let nearestDistance = Infinity;\n for (const thumb of [parts.singleThumb, parts.lowerThumb, parts.upperThumb]) {\n if (!thumb) continue;\n const rect = thumb.getBoundingClientRect();\n if (event.clientX < rect.left || event.clientX > rect.right\n || event.clientY < rect.top || event.clientY > rect.bottom) continue;\n const center = vertical ? -(rect.top + rect.height / 2) : rect.left + rect.width / 2;\n const distance = Math.abs(pointer - center);\n if (distance < nearestDistance || (distance === nearestDistance && pointer > center)) {\n hitThumb = thumb;\n nearestDistance = distance;\n }\n }\n const thumb = hitThumb ? thumbFromElement(hitThumb)\n : currentProps().range ? nearestThumb(value, currentValues() as SliderValues) : 'single';\n bridge.send({type: 'POINTER_STARTED', value, thumb, pointerId: event.pointerId, origin: hitThumb ? 'thumb' : 'track'});\n event.preventDefault();\n };\n const handlePointerMove = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({\n type: 'POINTER_MOVED',\n value: valueFromPointer(elements().root, event, currentProps()),\n thumb: currentSnapshot().context.interaction.activeThumb,\n });\n };\n const handlePointerUp = (event: PointerEvent): void => {\n if (pointerId !== event.pointerId || !bridge.hasTag('dragging')) return;\n bridge.send({type: 'POINTER_ENDED', thumb: currentSnapshot().context.interaction.activeThumb});\n };\n\n let component!: TrellisAlpineComponent<SliderData>;\n component = {\n ...bridge,\n get values(): readonly number[] {\n const snapshot = this.snapshot.current;\n if (!snapshot) return [];\n return snapshot.props.range\n ? [snapshot.context.value.lower, snapshot.context.value.upper]\n : [snapshot.context.value.lower];\n },\n setValue(value: number | readonly [number, number]): void {\n bridge.send({type: 'API_SET', values: Array.isArray(value) ? value : [value]});\n },\n init(): void {\n cleanup = cleanupManagerFor(this);\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const parts = elements();\n [parts.singleInput, parts.lowerInput, parts.upperInput].forEach((input) => {\n if (!input) return;\n addListener({target: input, event: 'input', handler: (event) => handleInput(event, false), cleanup});\n addListener({target: input, event: 'change', handler: (event) => handleInput(event, true), cleanup});\n addListener({target: input, event: 'keydown', handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }, cleanup});\n addListener({target: input, event: 'focus', handler: syncDom, cleanup});\n addListener({target: input, event: 'blur', handler: syncDom, cleanup});\n });\n addListener({target: parts.root, event: 'pointerdown', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerDown(event);\n }, cleanup});\n addListener({target: parts.root, event: 'pointermove', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerMove(event);\n }, cleanup});\n addListener({target: parts.root, event: 'pointerup', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup});\n addListener({target: parts.root, event: 'pointercancel', handler: (event) => {\n if (event instanceof PointerEvent) handlePointerUp(event);\n }, cleanup});\n if (parts.value) {\n addListener({target: parts.value, event: 'click', handler: (event) => {\n const button = event.target instanceof Element ? event.target.closest<HTMLButtonElement>('[data-ui-slider-value-button]') : null;\n if (button) beginEditing(button);\n }, cleanup});\n addListener({target: parts.value, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || event.target !== activeEditor) return;\n if (event.key !== 'Enter' && event.key !== 'Escape') return;\n event.preventDefault();\n event.stopPropagation();\n finishEditing(event.key === 'Enter' ? 'commit' : 'cancel', 'restore');\n }, cleanup});\n addListener({target: parts.value, event: 'focusout', handler: (event) => {\n if (event.target === activeEditor) finishEditing('commit');\n }, cleanup});\n // Draft changes are not native slider changes; only committed values bubble to consumers.\n ['input', 'change'].forEach((event) => addListener({target: parts.value!, event, handler: (event) => event.stopPropagation(), cleanup}));\n }\n syncDom();\n },\n destroy(): void {\n endDrag();\n const parts = elements();\n [parts.range, parts.singleThumb, parts.lowerThumb, parts.upperThumb].forEach((element) => {\n if (element) releaseOwnedMotion(element);\n });\n bridge.disconnect();\n rootEl = null;\n },\n };\n return component;\n};\n\nconst registerSlider = defineAlpineData('UiSlider', UiSlider);\n\nexport {registerSlider, UiSlider};\nexport type {SliderData, SliderElements, SliderThumbName, SliderValues, UiSliderApi};\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 {registerSlider as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSlider = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerSlider};\nexport default registerSlider;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from "./slider-OztnTlqr.js";
2
- export {default} from "./slider-OztnTlqr.js";
1
+ export * from "./slider-B08DRTzI.js";
2
+ export {default} from "./slider-B08DRTzI.js";
@@ -0,0 +1,2 @@
1
+ import{o as e,s as t,t as n}from"../chunks/dom-DiTFTWeR.js";import{t as r}from"../chunks/number-BCZdoG0B.js";import{B as i,C as a,L as o,m as s,t as c,v as l,w as u,x as d}from"../chunks/properties-D8pFWF8g.js";import{n as f,r as p,t as m}from"../chunks/hover-CqeHOHpJ.js";import{t as h}from"../chunks/layout-task-B6P8q7BH.js";import{f as g,l as _,n as v,t as y}from"../chunks/codecs-CQ7olTJL.js";import{n as b,t as x}from"../chunks/machine-Do4tL7nc.js";import{n as S,r as C}from"../chunks/focus-BvBkrIcj.js";import{n as w,t as T}from"../chunks/alpine-data-Dvc_bXq6.js";import{n as E,t as D}from"../chunks/props-change-2xfsIAEN.js";import{n as O,r as k}from"../chunks/form-control-DL1Hkox3.js";import{t as A}from"../chunks/control-size-BcDu1m1N.js";import{c as j}from"../chunks/common-DnEHZCqy.js";var M=(e,t)=>t?e===t||M(e,t.parentElement):!1,N=e=>e.pointerType===`mouse`?typeof e.button!=`number`||e.button<=0:e.isPrimary!==!1,P=new Set([`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`A`]);function F(e){return P.has(e.tagName)||e.isContentEditable===!0}var I=new WeakSet;function L(e){return t=>{t.key===`Enter`&&e(t)}}function R(e,t){e.dispatchEvent(new PointerEvent(`pointer`+t,{isPrimary:!0,bubbles:!0}))}var z=(e,t)=>{let n=e.currentTarget;if(!n)return;let r=L(()=>{if(I.has(n))return;R(n,`down`);let e=L(()=>{R(n,`up`)});n.addEventListener(`keyup`,e,t),n.addEventListener(`blur`,()=>R(n,`cancel`),t)});n.addEventListener(`keydown`,r,t),n.addEventListener(`blur`,()=>n.removeEventListener(`keydown`,r),t)};function B(e){return N(e)&&!p()}var V=new WeakSet;function H(e,t,n={}){let[r,a,o]=f(e,n),s=e=>{let r=e.currentTarget;if(!B(e)||V.has(e))return;I.add(r),n.stopPropagation&&V.add(e);let i=t(r,e),o={...a,capture:!0},s=(e,t)=>{window.removeEventListener(`pointerup`,c,o),window.removeEventListener(`pointercancel`,l,o),I.has(r)&&I.delete(r),B(e)&&typeof i==`function`&&i(e,{success:t})},c=e=>{s(e,r===window||r===document||n.useGlobalTarget||M(r,e.target))},l=e=>{s(e,!1)};window.addEventListener(`pointerup`,c,o),window.addEventListener(`pointercancel`,l,o)};return r.forEach(e=>{(n.useGlobalTarget?window:e).addEventListener(`pointerdown`,s,a),i(e)&&(e.addEventListener(`focus`,e=>z(e,a)),!F(e)&&!e.hasAttribute(`tabindex`)&&(e.tabIndex=0))}),o}var U=[`trailing`,`leading`],W=A,G=j,K={value:g.default(`on`),name:g,label:g,description:g,checked:y(v,`prop-checked`),disabled:y(v,`prop-disabled`),required:y(v,`prop-required`),invalid:y(v,`prop-invalid`),placement:_(U,`trailing`),variant:_(G,`default`),size:_(W,`md`),inputClass:g,trackClass:g,thumbClass:g,contentClass:g,labelClass:g,descriptionClass:g,class:g};({...K});var q=[],J=e=>e.checked===!0,Y=e=>({event:t})=>J(t)===e,ee=({event:e})=>D(e,`checked`),X=e=>t=>{let n=E(t.event)?.props;return ee(t)&&n?.checked===e},te=e=>{let t=E(e.event)?.props;return t?{props:t}:void 0},ne=({props:e,effects:t})=>x({initial:e.checked?`checked`:`unchecked`,on:{NATIVE_CHANGED:[{target:`checked`,guard:Y(!0),effects:`sync`},{target:`unchecked`,guard:Y(!1),effects:`sync`}],SET_CHECKED:[{target:`checked`,guard:Y(!0),effects:[`sync`,`emitInput`,`emitChange`]},{target:`unchecked`,guard:Y(!1),effects:[`sync`,`emitInput`,`emitChange`]}],PROPS_CHANGED:[{target:`checked`,guard:X(!0),reduce:`reconcileProps`,effects:`sync`},{target:`unchecked`,guard:X(!1),reduce:`reconcileProps`,effects:`sync`},{reduce:`reconcileProps`,effects:`sync`}]},states:{unchecked:{tags:[`unchecked`],on:{TOGGLE:{target:`checked`,effects:[`sync`,`emitInput`,`emitChange`]}}},checked:{tags:[`checked`],on:{TOGGLE:{target:`unchecked`,effects:[`sync`,`emitInput`,`emitChange`]}}}}},{context:{},props:e,reducers:{reconcileProps:te},effects:t}),Z=()=>{let i=null,f=null,p,g=!1,_=!1,v=!1,y=!1,x=null,w=!1,E=0,D=new WeakMap,A=null,j=()=>{if(!i)throw Error(`Switch has not been initialized.`);return i},M=()=>{if(!f)throw Error(`Switch requires a native checkbox input.`);return f},N=()=>R.getCommittedSnapshot(),P=()=>{++E;let n=N(),r=n.props,i=n.value===`checked`,a=i?`checked`:`unchecked`,s=M();x&&(r.disabled||i!==x.checked)&&I(!1,!1);let c=Array.from(j().querySelectorAll(`[data-ui-switch-track], [data-ui-switch-thumb]`));if(_){A??=new Map;for(let e of c){if(A.has(e))continue;let t=D.get(e);if(!t)continue;let n=o.state(e);A.set(e,{backgroundColor:String(n?.get(`backgroundColor`)?.get()??t.backgroundColor),translate:String(n?.get(`translate`)?.get()??t.translate)})}}c.forEach(e=>{d(e),l(e,new Set([`backgroundColor`,...x?[]:[`translate`]])),e.style.removeProperty(`background-color`),x||e.style.removeProperty(`translate`)}),s.checked=i,r.name||s.removeAttribute(`name`),k({input:s,state:{name:r.name,value:r.value,disabled:r.disabled,required:r.required,invalid:r.invalid}}),s.setAttribute(`role`,`switch`),e({el:s,attr:`aria-checked`,value:i?`true`:`false`}),e({el:j(),attr:`data-state`,value:a}),t({el:j(),attr:`data-checked`,present:i}),O({el:j(),state:r}),e({el:s,attr:`data-state`,value:a}),t({el:s,attr:`data-checked`,present:i});let u=j().querySelector(`[data-ui-switch-track]`);u&&(e({el:u,attr:`data-state`,value:a}),t({el:u,attr:`data-checked`,present:i}),O({el:u,state:{disabled:r.disabled,invalid:r.invalid}}));let f=j().querySelector(`[data-ui-switch-thumb]`);f&&(e({el:f,attr:`data-state`,value:a}),t({el:f,attr:`data-checked`,present:i}),t({el:f,attr:`data-disabled`,present:r.disabled}),t({el:f,attr:`data-invalid`,present:r.invalid})),F.schedule()},F=h({measure:()=>Array.from(j().querySelectorAll(`[data-ui-switch-track], [data-ui-switch-thumb]`),e=>{let t=getComputedStyle(e);return{el:e,destination:{backgroundColor:t.backgroundColor,translate:t.translate}}}),apply:e=>{let t=E,n=A;A=null;for(let{el:r,destination:i}of e){D.set(r,i);let e=n?.get(r);if(!e)continue;let a=e.backgroundColor!==i.backgroundColor;if(!a&&!r.hasAttribute(`data-ui-switch-thumb`))continue;c(r,{...a?{backgroundColor:[e.backgroundColor,i.backgroundColor]}:{},...r.hasAttribute(`data-ui-switch-thumb`)?{scaleX:u()?1:y?1.04:v?1.06:1,scaleY:u()||y?1:v?1.06:1}:{}},{role:`layout`,transition:{backgroundColor:s(`feedback`,`opacity`),scaleX:s(v||y?`feedback`:`feedbackExit`),scaleY:s(v||y?`feedback`:`feedbackExit`)}}).finished.then(()=>{E===t&&a&&(l(r,new Set([`backgroundColor`])),r.style.removeProperty(`background-color`))});let o=e.translate===`none`?`0px`:e.translate,d=i.translate===`none`?`0px`:i.translate;!x&&r.hasAttribute(`data-ui-switch-thumb`)&&o!==d&&c(r,{translate:[o,d]},{role:`layout`,...M().matches(`:focus-visible`)&&!C(M())?{transition:{duration:0}}:{}}).finished.then(()=>{E===t&&(l(r,new Set([`translate`])),r.style.removeProperty(`translate`))})}}}),I=(e,t=!0)=>{let n=x;if(!n)return;let r=j().querySelector(`[data-ui-switch-thumb]`);if(r){let e=D.get(r);if(e){let t={...e,translate:`${n.position}px`};D.set(r,t),A?.set(r,t)}}x=null,y=!1,w=n.moved||!e,M().hasPointerCapture(n.pointerId)&&M().releasePointerCapture(n.pointerId);let i=n.position*n.direction>n.travel/2;e&&n.moved&&i!==(N().value===`checked`)?R.send({type:`SET_CHECKED`,checked:i}):t&&P()},L=e=>{g=!0;try{M().dispatchEvent(new Event(e,{bubbles:!0}))}finally{g=!1}},R=b({schema:K,hooks:q,createMachine:({props:e})=>ne({props:e,effects:{sync:P,emitInput:()=>L(`input`),emitChange:()=>L(`change`)}})});return{...R,init(){if(p=T(this),i=this.$el,f=j().querySelector(`[data-ui-switch-input]`),!f)throw Error(`Switch requires a native checkbox input.`);R.connect(i,this.snapshot),n({target:f,event:`change`,handler:()=>{g||R.send({type:`NATIVE_CHANGED`,checked:M().checked})},cleanup:p}),n({target:f,event:`keydown`,handler:e=>{w=!1,e instanceof KeyboardEvent&&e.key===`Enter`&&!M().disabled&&(e.preventDefault(),R.send(`TOGGLE`))},cleanup:p}),P(),_=!0;let e=j().querySelector(`[data-ui-switch-thumb]`);if(e){p.add(m(j(),()=>{if(!M().disabled&&matchMedia(`(hover: hover) and (pointer: fine)`).matches)return v=!0,P(),()=>{v=!1,P()}})),p.add(H(M(),()=>{if(!(u()||M().disabled||!matchMedia(`(hover: hover) and (pointer: fine)`).matches))return y=!0,P(),()=>{y=!1,P()}})),n({target:j(),event:`pointerdown`,options:{capture:!0},handler:()=>{w=!1},cleanup:p}),n({target:M(),event:`pointerdown`,options:{capture:!0},handler:t=>{if(!(t instanceof PointerEvent)||!t.isPrimary||t.button!==0||M().disabled||x)return;let n=e.parentElement,r=getComputedStyle(n),i=parseFloat(getComputedStyle(e).translate)||0,a=n.getBoundingClientRect().width/n.offsetWidth,o=r.direction===`rtl`?-1:1,s=n.clientWidth-parseFloat(r.paddingLeft)-parseFloat(r.paddingRight)-e.offsetWidth;F.cancel(),A=null,++E,d(e,new Set([`translate`])),l(e,new Set([`translate`])),e.style.translate=`${i}px`,x={pointerId:t.pointerId,startX:t.clientX,startPosition:i,scale:a,direction:o,travel:s,position:i,checked:M().checked,moved:!1},M().setPointerCapture(t.pointerId)},cleanup:p}),n({target:M(),event:`pointermove`,handler:t=>{if(!(t instanceof PointerEvent)||t.pointerId!==x?.pointerId)return;let n=(t.clientX-x.startX)/x.scale;!x.moved&&Math.abs(n)<3||(t.preventDefault(),x.moved||S(M(),{showIndicator:!1}),x.moved=!0,x.position=x.direction*r((x.startPosition+n)*x.direction,0,Math.max(0,x.travel)),e.style.translate=`${x.position}px`)},cleanup:p}),n({target:M(),event:`pointerup`,handler:e=>{e instanceof PointerEvent&&e.pointerId===x?.pointerId&&I(!0)},cleanup:p});for(let e of[`pointercancel`,`lostpointercapture`])n({target:M(),event:e,handler:e=>{e instanceof PointerEvent&&e.pointerId===x?.pointerId&&I(!1)},cleanup:p});n({target:M(),event:`click`,options:{capture:!0},handler:e=>{w&&(w=!1,e.preventDefault(),e.stopImmediatePropagation())},cleanup:p}),n({target:window,event:`keydown`,handler:e=>{x&&e instanceof KeyboardEvent&&e.key===`Escape`&&(e.preventDefault(),I(!1))},cleanup:p}),n({target:window,event:`blur`,handler:()=>I(!1),cleanup:p})}n({target:matchMedia(a),event:`change`,handler:()=>{P()},cleanup:p})},destroy(){F.cancel(),A=null,++E,I(!1,!1),j().querySelectorAll(`[data-ui-switch-track], [data-ui-switch-thumb]`).forEach(e=>{d(e)}),R.disconnect(),i=null,f=null},get checked(){return R.getCommittedSnapshot().value===`checked`},setChecked(e){e!==(R.getCommittedSnapshot().value===`checked`)&&R.send({type:`SET_CHECKED`,checked:e})}}},re=w(`UiSwitch`,Z),Q=new WeakSet,$=e=>{Q.has(e)||(Q.add(e),re(e))};export{Z as UiSwitch,$ as default,$ as registerSwitch};
2
+ //# sourceMappingURL=switch-CO-1hVz6.js.map