@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":"select-C3hjgwMw.js","names":[],"sources":["../../../../../../../../client/src/components/badge/contract.ts","../../../../../../../../client/src/components/select/contract.ts","../../../../../../../../client/src/components/select/machine.ts","../../../../../../../../client/src/components/select/presentation.ts","../../../../../../../../client/src/components/select/styles.ts","../../../../../../../../client/src/components/select/index.ts","../../../../../../../../client/src/components/select/entry.generated.ts"],"sourcesContent":["import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n BUTTON_TYPES,\n COMPONENT_RADII,\n CONTROL_SIZES,\n ICON_VARIANTS,\n type CommonButtonType,\n type ComponentRadius,\n type ControlSize,\n type IconVariant,\n} from '../common';\n\nconst BADGE_VARIANTS = ['soft', 'surface', 'outline', 'solid'] as const;\nconst BADGE_COLORS = ['neutral', 'accent', 'success', 'warning', 'danger'] as const;\nconst BADGE_SIZES = CONTROL_SIZES;\nconst BADGE_AS_VALUES = ['span', 'button'] as const;\nconst BADGE_TYPES = BUTTON_TYPES;\nconst BADGE_ICON_VARIANTS = ICON_VARIANTS;\nconst BADGE_RADII = COMPONENT_RADII;\n\nconst badgeSchema = {\n variant: oneOf(BADGE_VARIANTS, 'soft'),\n color: oneOf(BADGE_COLORS, 'neutral'),\n size: oneOf(BADGE_SIZES, 'sm'),\n radius: oneOf(BADGE_RADII, 'sm'),\n href: string,\n as: oneOf(BADGE_AS_VALUES, 'span'),\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n dot: oneOf(['', ...BADGE_COLORS], ''),\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n inset: string,\n class: string,\n};\n\nconst badgeCloseSchema = {\n type: oneOf(BADGE_TYPES, 'button'),\n disabled: bool,\n icon: string.default('close'),\n iconVariant: oneOf(BADGE_ICON_VARIANTS, 'mini'),\n size: oneOf(BADGE_SIZES, 'sm'),\n label: string.default('Remove'),\n class: string,\n};\n\ntype BadgeVariant = typeof BADGE_VARIANTS[number];\ntype BadgeColor = typeof BADGE_COLORS[number];\ntype BadgeSize = ControlSize;\ntype BadgeRadius = ComponentRadius;\ntype BadgeAs = typeof BADGE_AS_VALUES[number];\ntype BadgeType = CommonButtonType;\ntype BadgeIconVariant = IconVariant;\ntype BadgeProps = SchemaToProps<typeof badgeSchema>;\ntype BadgeCloseProps = SchemaToProps<typeof badgeCloseSchema>;\n\nexport {\n BADGE_AS_VALUES,\n BADGE_COLORS,\n BADGE_ICON_VARIANTS,\n BADGE_RADII,\n BADGE_SIZES,\n BADGE_TYPES,\n BADGE_VARIANTS,\n badgeCloseSchema,\n badgeSchema,\n};\nexport type {\n BadgeAs,\n BadgeCloseProps,\n BadgeColor,\n BadgeIconVariant,\n BadgeProps,\n BadgeRadius,\n BadgeSize,\n BadgeType,\n BadgeVariant,\n};\n","import {bool, json, number, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {virtualizerItemSize} from '../../runtime/virtualizer-size';\nimport {\n ALIGNMENTS,\n COMPONENT_RADII,\n CONTROL_SIZES,\n CONTROL_VARIANTS,\n ELEVATION_REFERENCES,\n ICON_VARIANTS,\n POSITIONS,\n SURFACE_REFERENCES,\n type Alignment,\n type ComponentRadius,\n type ControlSize,\n type ControlVariant,\n type ElevationReference,\n type IconVariant,\n type Position,\n type SurfaceReference,\n} from '../common';\nimport {\n BADGE_COLORS,\n BADGE_VARIANTS,\n type BadgeColor,\n type BadgeVariant,\n} from '../badge/contract';\n\nconst SELECT_MODES = ['listbox', 'combobox', 'pillbox', 'native'] as const;\nconst SELECT_VARIANTS = CONTROL_VARIANTS;\nconst SELECT_SIZES = CONTROL_SIZES;\nconst SELECT_RADII = COMPONENT_RADII;\nconst SELECT_SIDES = POSITIONS;\nconst SELECT_ALIGNS = ALIGNMENTS;\nconst SELECT_ICON_VARIANTS = ICON_VARIANTS;\nconst SELECT_CLEARS = ['stay', 'close'] as const;\nconst SELECT_MARKS = ['check', 'checkbox', 'none'] as const;\nconst SELECT_SURFACES = SURFACE_REFERENCES;\nconst SELECT_ELEVATIONS = ELEVATION_REFERENCES;\n\ntype SelectMode = typeof SELECT_MODES[number];\ntype SelectVariant = ControlVariant;\ntype SelectSize = ControlSize;\ntype SelectRadius = ComponentRadius;\ntype SelectSide = Position;\ntype SelectAlign = Alignment;\ntype SelectIconVariant = IconVariant;\ntype SelectClear = typeof SELECT_CLEARS[number];\ntype SelectMark = typeof SELECT_MARKS[number];\ntype SelectSurface = SurfaceReference;\ntype SelectElevation = ElevationReference;\ntype SelectChipVariant = BadgeVariant;\ntype SelectChipColor = BadgeColor;\n\nconst selectSchema = {\n name: string,\n optionsId: string,\n value: string,\n values: json.array<string>([]),\n placeholder: string,\n mode: oneOf(SELECT_MODES, 'listbox' as SelectMode),\n multiple: bool,\n searchable: bool,\n searchMinItems: number.min(0).default(5),\n virtualized: bool,\n optionsFetchUrl: string,\n optionsTotalItems: number.min(0).default(0),\n optionItemSize: virtualizerItemSize('calc(var(--spacing-menu-item) + var(--spacing-1))'),\n optionBufferSize: number.min(1).default(50),\n optionOverscan: number.min(0).default(0),\n optionSearchParam: string.default('q'),\n optionSearchDebounce: number.min(0).default(150),\n selectedLabelMap: json.object<Record<string, string>>({}),\n creatable: bool,\n filter: bool.default(true),\n clearable: bool,\n clear: oneOf(SELECT_CLEARS, 'stay' as SelectClear),\n suffix: string.default('selected'),\n mark: oneOf(SELECT_MARKS, 'check' as SelectMark),\n open: bool,\n disabled: bool,\n readonly: bool,\n required: bool,\n invalid: bool,\n autoHighlight: bool.default(true),\n loop: bool.default(true),\n path: string,\n size: oneOf(SELECT_SIZES, 'lg' as SelectSize),\n variant: oneOf(SELECT_VARIANTS, 'outline' as SelectVariant),\n radius: oneOf(SELECT_RADII, 'md' as SelectRadius),\n surface: oneOf(SELECT_SURFACES, '+2' as SelectSurface),\n elevation: oneOf(SELECT_ELEVATIONS, '3' as SelectElevation),\n side: oneOf(SELECT_SIDES, 'bottom' as SelectSide),\n align: oneOf(SELECT_ALIGNS, 'start' as SelectAlign),\n offset: number.clamp(-100, 100).default(0),\n gap: number.clamp(0, 50).default(4),\n empty: string.default('No results found.'),\n icon: string,\n iconTrailing: string.default('chevron__down'),\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n buttonClass: string,\n inputClass: string,\n listboxClass: string,\n optionClass: string,\n chipVariant: oneOf(BADGE_VARIANTS, 'soft' as SelectChipVariant),\n chipColor: oneOf(BADGE_COLORS, 'neutral' as SelectChipColor),\n chipClass: string,\n class: string,\n};\n\nconst selectOptionSchema = {\n value: string,\n label: string,\n selectedLabel: string,\n textValue: string,\n disabled: bool,\n selected: bool,\n item: string,\n icon: string,\n iconTrailing: string,\n iconVariant: oneOf(SELECT_ICON_VARIANTS, 'outline' as SelectIconVariant),\n suffix: string,\n class: string,\n};\n\nconst selectCreateOptionSchema = {\n minLength: number.clamp(0, 100).default(0),\n modal: string,\n disabled: bool,\n value: string,\n class: string,\n};\n\ntype SelectProps = SchemaToProps<typeof selectSchema>;\ntype SelectOptionProps = SchemaToProps<typeof selectOptionSchema>;\ntype SelectCreateOptionProps = SchemaToProps<typeof selectCreateOptionSchema>;\n\nexport {\n SELECT_ALIGNS,\n SELECT_CLEARS,\n SELECT_ELEVATIONS,\n BADGE_COLORS as SELECT_CHIP_COLORS,\n BADGE_VARIANTS as SELECT_CHIP_VARIANTS,\n SELECT_ICON_VARIANTS,\n SELECT_MARKS,\n SELECT_MODES,\n SELECT_RADII,\n SELECT_SIDES,\n SELECT_SIZES,\n SELECT_SURFACES,\n SELECT_VARIANTS,\n selectCreateOptionSchema,\n selectOptionSchema,\n selectSchema,\n};\nexport type {\n SelectAlign,\n SelectClear,\n SelectChipColor,\n SelectChipVariant,\n SelectCreateOptionProps,\n SelectElevation,\n SelectIconVariant,\n SelectMark,\n SelectOptionProps,\n SelectSide,\n SelectProps,\n SelectRadius,\n SelectSize,\n SelectSurface,\n SelectMode,\n SelectVariant,\n};\n","import {\n createMachine,\n propsChanged,\n propsChangedEvent,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n type MachineSnapshot,\n} from '../../runtime/state-machine';\nimport {defineHook, type TransitionHookDefinition} from '../../runtime/transition-coordinator';\nimport type {SelectProps} from './contract';\n\ntype SelectedOption = {\n value: string;\n label: string;\n};\n\ntype SelectContext = {\n selection: SelectedOption[];\n search: {query: string; optionsId: string};\n navigation: {activeValue: string};\n creation: {value: string};\n};\n\ntype SelectMachineEffects = {\n prepareOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n finishOpen(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareClose(scope: MachineScope<SelectContext, SelectProps>): void;\n finishClose(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSelection(scope: MachineScope<SelectContext, SelectProps>): void;\n commitSearch(scope: MachineScope<SelectContext, SelectProps>): void;\n prepareCreate(scope: MachineScope<SelectContext, SelectProps>): void;\n syncProps(scope: MachineScope<SelectContext, SelectProps>): void;\n syncOptions(scope: MachineScope<SelectContext, SelectProps>): void;\n syncActive(scope: MachineScope<SelectContext, SelectProps>): void;\n syncDom(scope: MachineScope<SelectContext, SelectProps>): void;\n};\n\ntype CreateSelectMachineOptions = {\n props: SelectProps;\n context: SelectContext;\n effects: SelectMachineEffects;\n};\n\nconst transitionData = (_snapshot: MachineSnapshot<SelectContext, SelectProps>): Record<string, never> => ({});\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'disclosure.opening',\n project: transitionData,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'opening'>);\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'disclosure.closing',\n project: transitionData,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n sends: {\n open: () => ({type: 'OPEN'}),\n },\n} satisfies TransitionHookDefinition<SelectContext, SelectProps, Record<string, never>, 'closing'>);\n\nconst searchingHook = defineHook({\n name: 'searching',\n state: 'feature.searching',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n optionsId: snapshot.context.search.optionsId,\n }),\n onDone: 'SEARCHING_DONE',\n onError: 'SEARCHING_ERROR',\n sends: {\n search: (query: string) => ({type: 'SEARCH', query}),\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; optionsId: string},\n 'searching'\n>);\n\nconst creatingHook = defineHook({\n name: 'creating',\n state: 'feature.creating',\n project: (snapshot) => ({\n query: snapshot.context.search.query,\n value: snapshot.context.creation.value,\n }),\n onDone: 'CREATING_DONE',\n onError: 'CREATING_ERROR',\n sends: {\n close: () => ({type: 'CLOSE'}),\n },\n} satisfies TransitionHookDefinition<\n SelectContext,\n SelectProps,\n {query: string; value: string},\n 'creating'\n>);\n\nconst selectHooks = [openingHook, closingHook, searchingHook, creatingHook] as const;\n\nconst nextProps = (event: MachineEventObject): SelectProps | null => propsChangedEvent<SelectProps>(event)?.props ?? null;\nconst blocked = (props: SelectProps): boolean => props.disabled || props.readonly;\n\nconst shouldOpenFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props || blocked(props) || !props.open) return false;\n return propsChanged<SelectProps>(event, 'open', 'disabled', 'readonly');\n};\n\nconst shouldCloseFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n if (!props) return false;\n return (propsChanged<SelectProps>(event, 'open') && !props.open)\n || (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly);\n};\n\nconst shouldStopFeatureFromProps = ({event}: MachineScope<SelectContext, SelectProps>): boolean => {\n const props = nextProps(event);\n return Boolean(props && (\n (propsChanged<SelectProps>(event, 'disabled') && props.disabled)\n || (propsChanged<SelectProps>(event, 'readonly') && props.readonly)\n || (propsChanged<SelectProps>(event, 'searchable') && !props.searchable)\n ));\n};\n\nconst nextSelection = (event: MachineEventObject): SelectContext['selection'] | null => {\n if (!Array.isArray(event.selection)) return null;\n if (!event.selection.every((option): option is SelectedOption => (\n typeof option === 'object'\n && option !== null\n && typeof option.value === 'string'\n && typeof option.label === 'string'\n ))) return null;\n return event.selection.map(({value, label}) => ({value, label}));\n};\n\nconst createSelectMachine = ({\n props,\n context,\n effects,\n}: CreateSelectMachineOptions): Machine<SelectContext, SelectProps> => createMachine<SelectContext, SelectProps>({\n type: 'parallel',\n on: {\n DOM_INVALIDATED: {effects: 'syncDom'},\n },\n states: {\n disclosure: {\n initial: 'closed',\n states: {\n closed: {\n tags: ['closed'],\n on: {\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n opening: {\n tags: ['visible', 'expanded', 'interactive', 'transitioning'],\n on: {\n OPENING_DONE: {target: 'open', effects: 'finishOpen'},\n OPENING_ERROR: {target: 'open', effects: 'finishOpen'},\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'selectionCloses', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n open: {\n tags: ['visible', 'expanded', 'interactive', 'open'],\n on: {\n CLOSE: {target: 'closing', effects: 'prepareClose'},\n TOGGLE: {target: 'closing', effects: 'prepareClose'},\n CREATE: {target: 'closing', effects: 'prepareClose'},\n SELECT: {target: 'closing', guard: 'selectionCloses', effects: 'prepareClose'},\n CLEAR: {target: 'closing', guard: 'clearCloses', effects: 'prepareClose'},\n PROPS_CHANGED: {target: 'closing', guard: shouldCloseFromProps, effects: 'prepareClose'},\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: {target: 'closed', effects: 'finishClose'},\n CLOSING_ERROR: {target: 'closed', effects: 'finishClose'},\n OPEN: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n TOGGLE: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n SEARCH: {target: 'opening', guard: 'canOpen', effects: 'prepareOpen'},\n PROPS_CHANGED: {target: 'opening', guard: shouldOpenFromProps, effects: 'prepareOpen'},\n },\n },\n },\n },\n feature: {\n initial: 'idle',\n on: {\n SELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n DESELECT: {reduce: 'replaceSelection', effects: 'commitSelection'},\n SELECT_ALL: {reduce: 'replaceSelection', effects: 'commitSelection'},\n RECONCILE_SELECTION: {reduce: 'replaceSelection', effects: 'syncActive'},\n CLEAR: {reduce: 'clear', effects: 'commitSelection'},\n ACTIVE: {reduce: 'setActive', effects: 'syncActive'},\n OPTIONS_CHANGED: {effects: 'syncOptions'},\n CLOSING_DONE: {reduce: 'resetTransient', effects: 'syncActive'},\n CLOSING_ERROR: {reduce: 'resetTransient', effects: 'syncActive'},\n },\n states: {\n idle: {\n on: {\n CLOSE: {},\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'},\n },\n },\n searching: {\n tags: ['searching'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n SEARCHING_DONE: 'idle',\n SEARCHING_ERROR: 'idle',\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n creating: {\n tags: ['creating'],\n on: {\n SEARCH: {target: 'searching', reduce: 'setSearch', effects: 'commitSearch'},\n CREATE: {target: 'creating', reduce: 'setCreation', effects: 'prepareCreate'},\n CLOSE: {target: 'idle'},\n CREATING_DONE: {target: 'idle'},\n CREATING_ERROR: {target: 'idle'},\n PROPS_CHANGED: [\n {target: 'idle', guard: shouldStopFeatureFromProps, reduce: 'replaceProps', effects: 'syncProps'},\n {reduce: 'replaceProps', effects: 'syncProps'},\n ],\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event}) => {\n const next = nextProps(event);\n return next ? {props: next} : undefined;\n },\n replaceSelection: ({context: current, event}) => {\n const selection = nextSelection(event);\n if (!selection) return undefined;\n return {context: {\n ...current,\n selection,\n }};\n },\n clear: ({context: current}) => ({context: {\n ...current,\n selection: [],\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n }}),\n setSearch: ({context: current, event}) => ({context: {\n ...current,\n search: {\n query: typeof event.query === 'string' ? event.query : '',\n optionsId: typeof event.optionsId === 'string' ? event.optionsId : current.search.optionsId,\n },\n navigation: {\n activeValue: typeof event.activeValue === 'string'\n ? event.activeValue\n : current.navigation.activeValue,\n },\n }}),\n setActive: ({context: current, event}) => ({context: {\n ...current,\n navigation: {activeValue: typeof event.value === 'string' ? event.value : ''},\n }}),\n setCreation: ({context: current, event}) => ({context: {\n ...current,\n creation: {value: typeof event.value === 'string' ? event.value : current.search.query},\n }}),\n resetTransient: ({context: current}) => ({context: {\n ...current,\n search: {...current.search, query: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n }}),\n },\n guards: {\n canOpen: ({props: current}) => !blocked(current),\n selectionCloses: ({props: current, context: currentContext}) => !current.multiple\n || ((current.mode === 'combobox' || current.mode === 'pillbox') && currentContext.search.query.trim() !== ''),\n clearCloses: ({props: current}) => current.clear === 'close',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n commitSelection: effects.commitSelection,\n commitSearch: effects.commitSearch,\n prepareCreate: effects.prepareCreate,\n syncProps: effects.syncProps,\n syncOptions: effects.syncOptions,\n syncActive: effects.syncActive,\n syncDom: effects.syncDom,\n },\n});\n\nexport {createSelectMachine, selectHooks};\nexport type {\n CreateSelectMachineOptions,\n SelectedOption,\n SelectContext,\n SelectMachineEffects,\n};\n","import {createLayoutTask} from '@client/runtime/layout-task';\nimport {\n createAnchoredPopover,\n type AnchoredPopoverOptions,\n} from '@client/runtime/anchored-popover';\nimport {acquireDocumentScrollLock} from '@client/runtime/scroll-lock';\n\ntype SelectPresentation = 'anchored' | 'dialog' | 'fullscreen';\n\ntype SelectPresentationMetrics = {\n viewportWidth: number;\n viewportHeight: number;\n layoutViewportHeight: number;\n referenceTop: number;\n referenceBottom: number;\n touch: boolean;\n};\n\ntype SelectSurfaceOptions = AnchoredPopoverOptions & {\n labelId: () => string;\n};\n\ntype SelectSurface = {\n opened(): boolean;\n open(): void;\n close(): void;\n sync(): void;\n destroy(): void;\n presentation(): SelectPresentation;\n positioned(): Promise<void> | null;\n};\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\nconst PHONE_MAX_WIDTH = 640;\nconst MIN_ANCHORED_RESULTS_HEIGHT = 256;\nconst TABLET_KEYBOARD_HEIGHT = 520;\nconst KEYBOARD_VIEWPORT_RATIO = 0.72;\nconst FULLSCREEN_DIALOG_MARGIN = 12;\nconst DIALOG_MARGIN = 16;\nconst DIALOG_MAX_WIDTH = 720;\nconst DIALOG_MAX_HEIGHT = 720;\n\nconst resolveSelectPresentation = ({\n viewportWidth,\n viewportHeight,\n layoutViewportHeight,\n referenceTop,\n referenceBottom,\n touch,\n}: SelectPresentationMetrics): SelectPresentation => {\n if (viewportWidth <= PHONE_MAX_WIDTH) return 'fullscreen';\n\n const keyboardConstrained = viewportHeight < TABLET_KEYBOARD_HEIGHT\n || viewportHeight < layoutViewportHeight * KEYBOARD_VIEWPORT_RATIO;\n if (touch && keyboardConstrained) return 'fullscreen';\n if (touch) return 'dialog';\n\n const spaceAbove = Math.max(0, referenceTop);\n const spaceBelow = Math.max(0, viewportHeight - referenceBottom);\n return Math.max(spaceAbove, spaceBelow) < MIN_ANCHORED_RESULTS_HEIGHT ? 'dialog' : 'anchored';\n};\n\nconst viewportMetrics = (): {\n width: number;\n height: number;\n offsetTop: number;\n offsetLeft: number;\n} => {\n const viewport = window.visualViewport;\n return viewport\n ? {\n width: viewport.width,\n height: viewport.height,\n offsetTop: viewport.offsetTop,\n offsetLeft: viewport.offsetLeft,\n }\n : {width: window.innerWidth, height: window.innerHeight, offsetTop: 0, offsetLeft: 0};\n};\n\nconst hasTouchPointer = (): boolean => (\n window.matchMedia?.('(any-pointer: coarse)').matches === true\n || navigator.maxTouchPoints > 0\n);\n\nconst createSelectSurface = (options: SelectSurfaceOptions): SelectSurface => {\n const anchored = createAnchoredPopover(options);\n let open = false;\n let currentPresentation: SelectPresentation = 'anchored';\n let releaseScrollLock: (() => void) | null = null;\n let stopViewportListeners: (() => void) | null = null;\n let presentationPending: Promise<void> | null = null;\n let finishPresentation: (() => void) | null = null;\n\n const positioned = (): Promise<void> | null => {\n const pending = presentationPending ?? anchored.positioned();\n return pending ? pending.then(async () => { await positioned(); }) : null;\n };\n\n const surface = (): PopoverElement => options.floating() as PopoverElement;\n\n const setScrollLock = (locked: boolean): void => {\n if (locked) releaseScrollLock ??= acquireDocumentScrollLock(surface().ownerDocument);\n else {\n releaseScrollLock?.();\n releaseScrollLock = null;\n }\n };\n\n const clearModalGeometry = (element: HTMLElement): void => {\n element.style.removeProperty('border-radius');\n element.style.removeProperty('height');\n element.style.removeProperty('inset');\n element.style.removeProperty('max-height');\n element.style.removeProperty('max-width');\n element.style.removeProperty('position');\n element.style.removeProperty('transform-origin');\n element.style.removeProperty('width');\n };\n\n const applyDialogGeometry = (\n element: HTMLElement,\n presentation: Exclude<SelectPresentation, 'anchored'>,\n viewport: ReturnType<typeof viewportMetrics>,\n ): void => {\n const margin = presentation === 'dialog'\n ? DIALOG_MARGIN\n : FULLSCREEN_DIALOG_MARGIN;\n const maxWidth = presentation === 'dialog' ? DIALOG_MAX_WIDTH : Number.POSITIVE_INFINITY;\n const maxHeight = presentation === 'dialog' ? DIALOG_MAX_HEIGHT : Number.POSITIVE_INFINITY;\n const width = Math.min(maxWidth, Math.max(0, viewport.width - margin * 2));\n const height = Math.min(maxHeight, Math.max(0, viewport.height - margin * 2));\n const left = viewport.offsetLeft + (viewport.width - width) / 2;\n const top = viewport.offsetTop + (viewport.height - height) / 2;\n\n Object.assign(element.style, {\n borderRadius: 'var(--radius-overlay-md)',\n position: 'fixed',\n inset: `${top}px auto auto ${left}px`,\n width: `${width}px`,\n height: `${height}px`,\n maxWidth: 'none',\n maxHeight: 'none',\n transformOrigin: 'center',\n });\n };\n\n const presentationTask = createLayoutTask({\n measure: () => {\n const viewport = viewportMetrics();\n const touch = hasTouchPointer();\n // Phone and touch-dialog decisions do not depend on anchor geometry.\n const reference = touch || viewport.width <= PHONE_MAX_WIDTH\n ? {top: 0, bottom: 0} : options.reference().getBoundingClientRect();\n const next = resolveSelectPresentation({\n viewportWidth: viewport.width,\n viewportHeight: viewport.height,\n layoutViewportHeight: window.innerHeight,\n referenceTop: reference.top - viewport.offsetTop,\n referenceBottom: reference.bottom - viewport.offsetTop,\n touch,\n });\n return {viewport, next};\n },\n apply: ({viewport, next}) => {\n if (!open) return;\n const element = surface();\n currentPresentation = next;\n element.dataset.presentation = next;\n const heading = element.querySelector<HTMLElement>('[data-ui-select-sheet-heading]');\n if (heading) heading.style.display = next === 'anchored' ? 'none' : 'flex';\n if (next === 'anchored') {\n element.removeAttribute('aria-modal');\n element.removeAttribute('aria-labelledby');\n element.removeAttribute('role');\n setScrollLock(false);\n clearModalGeometry(element);\n anchored.mount();\n } else {\n anchored.unmount();\n element.setAttribute('role', 'dialog');\n element.setAttribute('aria-modal', 'true');\n element.setAttribute('aria-labelledby', options.labelId());\n setScrollLock(true);\n applyDialogGeometry(element, next, viewport);\n }\n const finish = finishPresentation;\n presentationPending = null;\n finishPresentation = null;\n finish?.();\n },\n });\n const applyPresentation = (): void => {\n if (!open) return;\n presentationPending ??= new Promise<void>((resolve) => { finishPresentation = resolve; });\n presentationTask.schedule();\n };\n\n const listenToViewport = (): (() => void) => {\n const update = (): void => applyPresentation();\n const viewport = window.visualViewport;\n const pointer = window.matchMedia?.('(any-pointer: coarse)');\n window.addEventListener('resize', update);\n window.addEventListener('orientationchange', update);\n viewport?.addEventListener('resize', update);\n viewport?.addEventListener('scroll', update);\n pointer?.addEventListener('change', update);\n return () => {\n window.removeEventListener('resize', update);\n window.removeEventListener('orientationchange', update);\n viewport?.removeEventListener('resize', update);\n viewport?.removeEventListener('scroll', update);\n pointer?.removeEventListener('change', update);\n };\n };\n\n const show = (): void => {\n if (open) return;\n open = true;\n try {\n surface().showPopover();\n } catch {\n // Reversal may find the native surface already in the top layer.\n }\n applyPresentation();\n stopViewportListeners = listenToViewport();\n };\n\n const hide = (): void => {\n if (!open) return;\n open = false;\n presentationTask.cancel();\n const finish = finishPresentation;\n presentationPending = null;\n finishPresentation = null;\n finish?.();\n stopViewportListeners?.();\n stopViewportListeners = null;\n anchored.unmount();\n setScrollLock(false);\n try {\n surface().hidePopover();\n } catch {\n // Native teardown may already have removed the surface from the top layer.\n }\n };\n\n return {\n opened: () => open,\n open: show,\n close: hide,\n sync: applyPresentation,\n destroy: hide,\n presentation: () => currentPresentation,\n positioned,\n };\n};\n\nexport {createSelectSurface, resolveSelectPresentation};\nexport type {SelectPresentation, SelectPresentationMetrics, SelectSurface};\n","import {defineStyles} from '../../runtime';\nimport {\n CONTROL_MIN_SIZE_CLASSES,\n CONTROL_RADIUS_CLASSES,\n FIELD_CONTROL_ACTION_CLASSES,\n FIELD_CONTROL_INPUT_CLASSES,\n FIELD_CONTROL_NATIVE_CLASSES,\n FIELD_CONTROL_ROOT_CLASSES,\n OPTION_ICON_CLASSES,\n OPTION_INDICATOR_CLASSES,\n OPTION_ITEM_CLASSES,\n OPTION_META_CLASSES,\n POPOVER_GEOMETRY_CLASSES,\n} from '../common';\n\nconst selectStyles = defineStyles({definition: {\n component: 'ui.select',\n parts: {\n root: {\n base: 'relative inline-grid w-full min-w-0',\n },\n control: {\n base: FIELD_CONTROL_ROOT_CLASSES,\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n variant: {\n outline: '',\n filled: '',\n plain: '',\n },\n mode: {\n listbox: '',\n combobox: '',\n pillbox: 'gap-1 py-0.5',\n native: '',\n },\n empty: {\n true: '',\n false: '',\n },\n },\n compounds: [\n {when: {mode: 'pillbox', empty: false}, class: '!ps-1.5'},\n ],\n defaults: {\n size: 'lg',\n variant: 'outline',\n radius: 'md',\n mode: 'listbox',\n empty: false,\n },\n },\n button: {\n base: [\n 'flex min-w-0 flex-1 items-center gap-2 border-0 bg-transparent p-0 text-left text-inherit outline-none',\n ],\n },\n pillboxContent: {\n base: 'flex min-w-0 flex-1 self-stretch items-center gap-1',\n },\n pillboxTrigger: {\n base: 'min-w-control-xs self-stretch',\n },\n pillboxActions: {\n base: 'flex min-h-control-sm shrink-0 self-start items-center gap-control-gap',\n variants: {\n size: {\n xs: 'min-h-control-xs',\n sm: 'min-h-control-xs',\n md: '',\n lg: '',\n xlg: '',\n },\n },\n defaults: {size: 'lg'},\n },\n value: {\n base: 'min-w-0 flex-1 truncate',\n },\n placeholder: {\n base: 'min-w-0 flex-1 truncate text-surface-ink-muted',\n },\n input: {\n base: [\n 'w-full min-w-16 flex-1',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n search: {\n base: [\n 'flex min-h-control-xlg shrink-0 items-center gap-2 px-3',\n 'text-sm',\n ],\n },\n searchInput: {\n base: [\n 'min-w-0 flex-1 text-sm',\n FIELD_CONTROL_INPUT_CLASSES,\n ],\n },\n sheetHeader: {\n base: '',\n },\n sheetHeading: {\n base: 'min-w-0 items-center gap-3 px-4 pt-4',\n },\n sheetTitle: {\n base: 'min-w-0 flex-1 truncate text-base font-medium',\n },\n sheetClose: {\n base: [\n 'inline-flex size-control-md shrink-0 items-center justify-center rounded-control-sm border-0 bg-transparent',\n 'text-surface-ink-muted outline-none focus-visible:ui-focus-ring',\n ],\n },\n chips: {\n base: 'flex min-w-0 flex-wrap items-center gap-1',\n },\n chip: {\n base: [\n 'max-w-[min(100%,--spacing(64))]',\n ],\n },\n chipLabel: {\n base: 'flex min-w-0 flex-1 items-center',\n },\n chipPlainLabel: {\n base: 'block min-w-0 flex-1 truncate',\n },\n chipRemove: {\n base: '',\n },\n icon: {\n base: 'size-icon shrink-0 text-surface-ink-muted',\n variants: {\n position: {\n leading: '',\n trailing: '',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n action: {\n base: FIELD_CONTROL_ACTION_CLASSES,\n },\n popover: {\n base: [\n POPOVER_GEOMETRY_CLASSES,\n 'grid',\n 'overflow-hidden rounded-overlay-sm',\n ],\n },\n listbox: {\n base: 'min-h-0 min-w-0 max-w-full overflow-hidden outline-none',\n },\n viewport: {\n base: 'min-h-0 min-w-0 max-w-full',\n },\n options: {\n base: 'grid w-full min-w-0 max-w-full auto-rows-min content-start gap-1 p-popover-padding',\n },\n virtualOptions: {\n base: 'grid w-full min-w-0 max-w-full content-start px-popover-padding',\n },\n create: {\n base: 'shrink-0 p-popover-padding',\n },\n option: {\n base: [\n OPTION_ITEM_CLASSES,\n 'min-w-0 max-w-full overflow-hidden focus-visible:ui-focus-ring',\n '[&:has([data-ui-select-option-label]>*+*)]:h-auto',\n '[&:has([data-ui-select-option-label]>*+*)]:items-start',\n '[&:has([data-ui-select-option-label]>*+*)]:py-2',\n ],\n },\n optionLabel: {\n base: 'min-w-0 flex-1 truncate',\n },\n optionMeta: {\n base: OPTION_META_CLASSES,\n },\n optionIcon: {\n base: OPTION_ICON_CLASSES,\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n optionIndicator: {\n base: OPTION_INDICATOR_CLASSES,\n },\n group: {\n base: 'grid auto-rows-min content-start gap-1',\n },\n label: {\n base: 'px-menu-item-padding-inline py-1 text-surface-ink-muted',\n },\n empty: {\n base: 'px-menu-item-padding-inline py-2 text-sm text-surface-ink-muted',\n },\n separatorRoot: {\n base: '-mx-popover my-popover h-[var(--border-width-edge-separator)]',\n },\n separatorRule: {\n base: 'h-[var(--border-width-edge-separator)] w-full border-0 bg-separator',\n },\n nativeWrapper: {\n base: 'relative w-full min-w-0',\n },\n native: {\n base: [\n FIELD_CONTROL_NATIVE_CLASSES,\n 'appearance-none pe-10',\n ],\n variants: {\n size: CONTROL_MIN_SIZE_CLASSES,\n radius: CONTROL_RADIUS_CLASSES,\n },\n defaults: {\n size: 'lg',\n radius: 'md',\n },\n },\n nativeIcon: {\n base: 'pointer-events-none absolute right-3 top-1/2 size-icon -translate-y-1/2 text-icon',\n },\n },\n}});\n\nexport {selectStyles};\n\nexport const styles = [selectStyles] as const;\n","import {createOpacityFeedback} from '../../motion/feedback';\nimport {collectionIndex} from '../../runtime/collection-navigation';\nimport type Alpine from 'alpinejs';\nimport {createPopoverVisibility} from '@client/runtime/anchored-popover';\nimport {animateProperties} from '@client/motion/properties';\nimport {layout} from '@client/motion/layout';\nimport type {MotionHandle} from '@client/motion/animate';\nimport {anchoredEntrance, anchoredExit, presets} from '@client/motion/recipe';\n\nimport {badgeStyles} from '@client/components/badge/styles';\nimport {\n type AlpineMachine,\n createAlpineMachine,\n defineAlpineData,\n type MachineSnapshot,\n reflectSchemaProp,\n type TransitionForHook,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {cleanupManagerFor} from '@client/runtime/alpine-data';\nimport type {CleanupManager} from '@client/runtime/cleanup-manager';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {trapFocus} from '@client/runtime/focus-scope';\nimport {focusElement, isFocusIndicatorSuppressed} from '@client/runtime/focus';\nimport {\n dispatchNativeControlChange,\n syncControlPresence,\n syncNativeControl,\n syncRepeatedHiddenInputs,\n} from '@client/runtime/form-control';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {declareMorphAttributes} from '@client/runtime/morph';\nimport {markLayoutParticipant} from '@client/runtime/layout-participant';\nimport {getPathValue, matchesOptionText, normalizeOptionText, parseItemData} from '@client/runtime/option-data';\nimport {observeSemanticChanges} from '@client/runtime/semantic-observer';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {createTemplateInstance, findItemTemplate, type TemplateInstance} from '@client/runtime/item-template';\nimport {addListener, asBool, dispatch, setPresence} from '@client/utils';\nimport {selectSchema, type SelectProps} from './contract';\nimport {\n createSelectMachine,\n type SelectContext,\n type SelectedOption,\n selectHooks,\n} from './machine';\nimport {createSelectSurface, type SelectSurface} from './presentation';\nimport {selectStyles} from './styles';\n\ntype SelectTransitionName = (typeof selectHooks)[number]['name'];\ntype SelectTransition<TName extends SelectTransitionName = SelectTransitionName> = TransitionForHook<\n Extract<(typeof selectHooks)[number], {name: TName}>,\n HTMLElement\n>;\n\ntype PopoverElement = HTMLElement & {\n showPopover(): void;\n hidePopover(): void;\n};\n\ntype SelectOption = {\n el: HTMLElement;\n id: string;\n value: string;\n label: string;\n selectedLabel: string;\n disabled: boolean;\n selected: boolean;\n visible: boolean;\n create: boolean;\n};\n\ntype CatalogOption = Omit<SelectOption, 'selected' | 'visible'> & {\n minLength: number;\n suffix: string;\n};\n\ntype OptionProjection = {\n options: SelectOption[];\n enabled: SelectOption[];\n firstByValue: ReadonlyMap<string, SelectOption>;\n byElement: ReadonlyMap<HTMLElement, SelectOption>;\n};\n\nclass OptionCatalog {\n readonly ordinaryCount: number;\n\n private readonly filter: boolean;\n private readonly records: CatalogOption[];\n private readonly projections = new Map<string, OptionProjection>();\n\n constructor({\n root,\n listboxId,\n props,\n resolveLabel,\n rememberLabel,\n }: {\n root: HTMLElement;\n listboxId: string;\n props: Readonly<SelectProps>;\n resolveLabel(el: HTMLElement, props: Readonly<SelectProps>): string;\n rememberLabel(value: string, label: string): void;\n }) {\n this.filter = props.filter;\n this.records = Array.from(root.querySelectorAll<HTMLElement>(optionSelector)).map((el, index) => {\n const label = resolveLabel(el, props);\n const value = el.dataset.value || label;\n const create = el.hasAttribute('data-ui-select-option-create');\n const record = {\n el,\n id: el.id || `${listboxId}-option-${index}`,\n value,\n label,\n selectedLabel: el.dataset.selectedLabel || label,\n disabled: asBool({value: el.dataset.disabled}),\n create,\n minLength: Number(el.dataset.minLength ?? '0'),\n suffix: el.dataset.suffix ?? '',\n };\n return record;\n });\n const remembered = new Set<string>();\n this.records.forEach((option) => {\n if (option.create || remembered.has(option.value)) return;\n remembered.add(option.value);\n rememberLabel(option.value, option.selectedLabel);\n });\n this.ordinaryCount = this.records.filter((option) => !option.create).length;\n }\n\n project(query: string, selection: readonly SelectedOption[]): OptionProjection {\n const selectedValues = selection.map(({value}) => value);\n const key = JSON.stringify([query, selectedValues]);\n const cached = this.projections.get(key);\n if (cached) return cached;\n\n const normalizedQuery = normalizeOptionText(query);\n const exact = normalizedQuery !== '' && this.records.some((option) => (\n !option.create && normalizeOptionText(option.label) === normalizedQuery\n ));\n const options = this.records.map((option) => {\n const matches = matchesOptionText(`${option.label} ${option.suffix}`, normalizedQuery);\n return {\n ...option,\n value: option.create ? option.el.dataset.value || query : option.value,\n selected: selectedValues.includes(option.value),\n visible: option.create\n ? !exact && query.length >= option.minLength\n : !this.filter || normalizedQuery === '' || matches,\n };\n });\n const firstByValue = new Map<string, SelectOption>();\n const byElement = new Map<HTMLElement, SelectOption>();\n options.forEach((option) => {\n if (!option.create && !firstByValue.has(option.value)) firstByValue.set(option.value, option);\n byElement.set(option.el, option);\n });\n const projection = {\n options,\n enabled: options.filter((option) => option.visible && !option.disabled && !option.create),\n firstByValue,\n byElement,\n };\n this.projections.set(key, projection);\n return projection;\n }\n}\n\ntype NestedVirtualizerApi = {\n setUrl(url: string, options?: {reset?: boolean}): void;\n setTotalItems(count: number): void;\n};\n\ntype NestedVirtualizerElement = HTMLElement & {\n _x_dataStack?: Array<Partial<NestedVirtualizerApi>>;\n};\n\n/**\n * Public Alpine API for `ui.select`.\n *\n * @public\n */\ninterface UiSelectApi {\n /** Whether the select is opening or fully open. */\n readonly isOpen: boolean;\n\n /** Whether a searching transition hook is pending. */\n readonly isSearching: boolean;\n\n /** First selected value, or an empty string. */\n readonly value: string;\n\n /** Selected values in committed order. */\n readonly values: readonly string[];\n\n /** Display labels corresponding to the selected values. */\n readonly selectedLabels: readonly string[];\n\n /** Current search query. */\n readonly search: string;\n\n /** Value of the currently highlighted option. */\n readonly activeValue: string;\n\n /** Opens the listbox unless the select is disabled or readonly. */\n open(event?: Event): void;\n\n /** Closes the listbox. Keyboard dismissal restores focus to the trigger. */\n close(event?: Event): void;\n\n /** Reverses the current disclosure lifecycle. */\n toggle(event?: Event): void;\n\n /** Selects the rendered option with this value. */\n select(value: string, event?: Event): void;\n\n /** Removes a selected value. */\n deselect(value: string, event?: Event): void;\n\n /** Selects every rendered, visible, enabled option in multiple mode. */\n selectAll(event?: Event): void;\n\n /** Clears search, selection, highlight, and submitted values. */\n clear(event?: Event): void;\n\n /** Sets the query and enters the searching feature state. */\n setSearch(query: string): void;\n}\n\ntype SelectData = AlpineMachine<SelectContext, SelectProps, typeof selectHooks> & UiSelectApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n};\n\nconst optionSelector = '[data-ui-select-option], [data-ui-select-option-create]';\nconst selectedTemplateSelector = 'template[data-ui-select-option-selected-template]';\n\nconst projectedInteractiveElements = new Set([\n 'A', 'AREA', 'BUTTON', 'DETAILS', 'EMBED', 'IFRAME', 'INPUT', 'OBJECT', 'OPTION', 'SELECT', 'SUMMARY', 'TEXTAREA',\n]);\nconst projectedExecutableElements = new Set(['SCRIPT', 'STYLE']);\nconst projectedInteractionAttributes = new Set([\n 'autofocus',\n 'contenteditable',\n 'controls',\n 'download',\n 'draggable',\n 'form',\n 'formaction',\n 'formenctype',\n 'formmethod',\n 'formnovalidate',\n 'formtarget',\n 'href',\n 'id',\n 'name',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'role',\n 'tabindex',\n 'target',\n]);\n\nconst isProjectedInteractionAttribute = (name: string): boolean => (\n projectedInteractionAttributes.has(name)\n || (name.startsWith('aria-') && name !== 'aria-hidden')\n || name.startsWith('data-ui-select')\n || name === 'data-ui-interactive'\n || name.startsWith('data-ui-action')\n || name.startsWith('data-selected')\n || name.startsWith('data-highlighted')\n || name.startsWith('data-disabled')\n || name.startsWith('x-')\n || name.startsWith('hx-')\n || name.startsWith('v-')\n || name.startsWith('wire:')\n || name.startsWith('@')\n || name.startsWith(':')\n || name.startsWith('on')\n);\n\nconst sanitizeSelectedContent = (node: Node): Node | null => {\n if (!(node instanceof Element)) return node;\n const elementName = node.localName.toUpperCase();\n if (projectedExecutableElements.has(elementName)) return null;\n\n let projected = node;\n if (projectedInteractiveElements.has(elementName) || node.hasAttribute('contenteditable')) {\n projected = document.createElement('span');\n Array.from(node.attributes).forEach((attribute) => {\n if (!isProjectedInteractionAttribute(attribute.name)) {\n projected.setAttribute(attribute.name, attribute.value);\n }\n });\n projected.append(...Array.from(node.childNodes));\n }\n\n Array.from(projected.attributes).forEach((attribute) => {\n if (isProjectedInteractionAttribute(attribute.name)) projected.removeAttribute(attribute.name);\n });\n\n Array.from(projected.childNodes).forEach((child) => {\n const sanitized = sanitizeSelectedContent(child);\n if (!sanitized) child.remove();\n else if (sanitized !== child) child.replaceWith(sanitized);\n });\n projected.setAttribute('x-ignore', 'true');\n return projected;\n};\n\nconst cloneSelectedNodes = (nodes: Iterable<Node>): DocumentFragment => {\n const fragment = document.createDocumentFragment();\n Array.from(nodes).forEach((node) => {\n if (node instanceof HTMLTemplateElement && node.matches(selectedTemplateSelector)) return;\n const clone = node.cloneNode(true);\n const sanitized = sanitizeSelectedContent(clone);\n if (sanitized) fragment.append(sanitized);\n });\n return fragment;\n};\n\nconst sameStrings = (left: readonly string[], right: readonly string[]): boolean => (\n left.length === right.length && left.every((value, index) => value === right[index])\n);\n\nconst UiSelect = (AlpineInstance: Alpine.Alpine): TrellisAlpineComponent<SelectData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let reflectControlledState = false;\n let buttonId = '';\n let inputId = '';\n let listboxId = '';\n let optionsId = '';\n let popover: SelectSurface | null = null;\n const visibility = createPopoverVisibility(() => popoverEl());\n let disconnectObserver: (() => void) | null = null;\n let selectedTemplateObserver: MutationObserver | null = null;\n let cleanup: CleanupManager;\n const presentationController = new AbortController();\n const syncMark = createOpacityFeedback(presentationController.signal);\n let hiddenInputsKey = '';\n const chipInstances = new Map<string, {instance: TemplateInstance<Record<string, unknown>>; content: string}>();\n let chipSelection = '';\n let chipRevision = 0;\n let chipProjectionPending = false;\n let chipLayout: MotionHandle | null = null;\n let inputSearching = false;\n let highlightOrigin: 'keyboard' | 'pointer' = 'keyboard';\n let lastOptionEl: HTMLElement | null = null;\n let typeahead = '';\n let typeaheadTimer = 0;\n let virtualSearchTimer = 0;\n let virtualTotal = 0;\n let virtualSearchPopulation = 0;\n let synchronizedVirtualizerUrl: string | null = null;\n let activeOptionCatalog: OptionCatalog | null = null;\n const selectedLabelCache = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Select has not been initialized.');\n return rootEl;\n };\n\n const control = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-control]');\n if (!el) throw new Error('Select requires a control element.');\n return el;\n };\n\n const trigger = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-trigger], [data-ui-select-button], [data-ui-select-input]');\n if (!el) throw new Error('Select requires a trigger element.');\n return el;\n };\n\n const input = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-input]');\n const searchInput = (): HTMLInputElement | null => root().querySelector<HTMLInputElement>('[data-ui-select-search-input]');\n const sheetTitle = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-sheet-title]');\n if (!el) throw new Error('Select requires an adaptive picker title.');\n return el;\n };\n\n const popoverEl = (): PopoverElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-popover]');\n if (!el) throw new Error('Select requires a popover element.');\n return el as PopoverElement;\n };\n\n const listbox = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-listbox]');\n if (!el) throw new Error('Select requires a listbox element.');\n return el;\n };\n\n const optionsEl = (): HTMLElement => {\n const el = root().querySelector<HTMLElement>('[data-ui-select-options]');\n if (!el) throw new Error('Select requires an options element.');\n return el;\n };\n\n const virtualizerEl = (): NestedVirtualizerElement | null => (\n root().querySelector<NestedVirtualizerElement>('[data-ui-select-virtualizer]')\n );\n\n const virtualizerApi = (): NestedVirtualizerApi | null => {\n const scope = virtualizerEl()?._x_dataStack?.find((candidate) => (\n typeof candidate.setUrl === 'function' && typeof candidate.setTotalItems === 'function'\n ));\n return scope as NestedVirtualizerApi | undefined ?? null;\n };\n\n const chipsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-chips]');\n const hiddenInputsEl = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-select-hidden-inputs]');\n const currentProps = (): Readonly<SelectProps> => bridge.getCommittedSnapshot().props;\n const currentContext = (): Readonly<SelectContext> => bridge.getCommittedSnapshot().context;\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isVisible = (): boolean => bridge.hasTag('visible');\n\n const resolveOptionLabel = (el: HTMLElement, props: Readonly<SelectProps>): string => {\n const explicit = el.dataset.label || el.getAttribute('aria-label') || '';\n if (explicit) return explicit;\n if (el.dataset.textValue) return el.dataset.textValue;\n const itemValue = getPathValue(parseItemData(el.dataset.item), props.path);\n if (itemValue !== undefined && itemValue !== null) return String(itemValue);\n const label = el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n return (label?.textContent ?? el.textContent ?? '').trim();\n };\n\n const createOptionCatalog = (props: Readonly<SelectProps> = currentProps()): OptionCatalog => new OptionCatalog({\n root: root(),\n listboxId,\n props,\n resolveLabel: resolveOptionLabel,\n rememberLabel: (value, label) => selectedLabelCache.set(value, label),\n });\n\n const withOptionCatalog = <T>(operation: (catalog: OptionCatalog) => T, props?: Readonly<SelectProps>): T => {\n if (activeOptionCatalog) return operation(activeOptionCatalog);\n activeOptionCatalog = createOptionCatalog(props);\n try {\n return operation(activeOptionCatalog);\n } finally {\n activeOptionCatalog = null;\n }\n };\n\n const selectionValues = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({value}) => value)\n );\n const selectionLabels = (selection: readonly SelectedOption[] = currentContext().selection): string[] => (\n selection.map(({label}) => label)\n );\n const optionProjection = (\n catalog: OptionCatalog,\n query = currentContext().search.query,\n selection: readonly SelectedOption[] = currentContext().selection,\n ): OptionProjection => catalog.project(query, selection);\n\n const fixedSearchAvailable = (catalog: OptionCatalog): boolean => {\n const props = currentProps();\n if (!searchInput()) return false;\n if (props.mode === 'combobox') return true;\n const mountedOptions = catalog.ordinaryCount;\n const optionCount = props.virtualized\n ? Math.max(mountedOptions, props.optionsTotalItems, virtualSearchPopulation)\n : mountedOptions;\n return optionCount >= props.searchMinItems;\n };\n\n const selectionForValues = (\n values: readonly string[],\n catalog: OptionCatalog,\n props: Readonly<SelectProps> = currentProps(),\n ): SelectContext['selection'] => {\n const unique = Array.from(new Set(values.filter(Boolean)));\n const normalized = props.multiple ? unique : unique.slice(0, 1);\n const projection = catalog.project('', []);\n return normalized.map((value) => ({\n value,\n label: projection.firstByValue.get(value)?.selectedLabel\n ?? selectedLabelCache.get(value)\n ?? (typeof props.selectedLabelMap[value] === 'string' ? props.selectedLabelMap[value] : undefined)\n ?? value,\n }));\n };\n\n const valuesFromProps = (props: Readonly<SelectProps>): string[] => (\n props.multiple\n ? Array.from(new Set([...props.values, ...(props.value ? [props.value] : [])]))\n : props.value ? [props.value] : props.values.slice(0, 1)\n );\n\n const initialContext = (props: SelectProps): SelectContext => {\n return withOptionCatalog((catalog) => {\n const explicit = valuesFromProps(props);\n const selectedFromOptions = catalog.project('', [])\n .options.filter((option) => asBool({value: option.el.dataset.selected}))\n .map((option) => option.value);\n return {\n selection: selectionForValues(explicit.length > 0 ? explicit : selectedFromOptions, catalog, props),\n search: {query: '', optionsId: ''},\n navigation: {activeValue: ''},\n creation: {value: ''},\n };\n }, props);\n };\n\n const selectedSummary = (): string => {\n const {selection} = currentContext();\n const props = currentProps();\n if (selection.length === 0 || (props.mode === 'pillbox' && props.multiple)) return '';\n if (props.multiple && selection.length > 1) return `${selection.length} ${props.suffix}`;\n return selection[0]?.label ?? selection[0]?.value ?? '';\n };\n\n const explicitSelectedContent = (option: SelectOption): DocumentFragment | null => {\n const template = option.el.querySelector<HTMLTemplateElement>(selectedTemplateSelector);\n return template ? cloneSelectedNodes(template.content.childNodes) : null;\n };\n\n const selectedContent = (option: SelectOption): DocumentFragment => {\n const explicit = explicitSelectedContent(option);\n if (explicit) return explicit;\n const source = option.el.querySelector<HTMLElement>('[data-ui-select-option-selected-content]')\n ?? option.el.querySelector<HTMLElement>('[data-ui-select-option-label]');\n if (source) return cloneSelectedNodes(source.childNodes);\n const fragment = document.createDocumentFragment();\n fragment.append(document.createTextNode(option.selectedLabel));\n return fragment;\n };\n\n const syncRoot = (): void => {\n const props = currentProps();\n if (reflectControlledState) {\n const values = selectionValues();\n if (isExpanded() || !props.open || (!props.disabled && !props.readonly)) {\n reflectSchemaProp({el: root(), schema: selectSchema, key: 'open', value: isExpanded()});\n }\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'value',\n value: props.multiple ? '' : values[0] ?? '',\n });\n reflectSchemaProp({\n el: root(),\n schema: selectSchema,\n key: 'values',\n value: props.multiple ? [...values] : [],\n });\n }\n root().dataset.state = isExpanded() ? 'open' : 'closed';\n root().dataset.mark = props.mark;\n syncControlPresence({el: root(), state: {\n disabled: props.disabled,\n required: props.required,\n invalid: props.invalid,\n }, value: 'true'});\n };\n\n const isPillbox = (): boolean => currentProps().mode === 'pillbox' && currentProps().multiple;\n\n const syncControl = (): void => {\n const props = currentProps();\n const empty = isPillbox() && currentContext().selection.length === 0;\n const el = control();\n el.className = resolveStyle({\n part: selectStyles.parts.control,\n props: {...props, mode: isPillbox() ? 'pillbox' : props.mode === 'combobox' ? 'combobox' : 'listbox', empty},\n });\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.dataset.mode = isPillbox() ? 'pillbox' : props.mode;\n setPresence({el, attr: 'data-ui-select-pillbox-control', present: isPillbox(), value: ''});\n setPresence({el, attr: 'data-empty', present: empty, value: 'true'});\n syncControlPresence({el, state: {disabled: props.disabled, invalid: props.invalid}, value: 'true'});\n };\n\n const syncTrigger = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const el = trigger();\n el.id ||= buttonId;\n el.dataset.state = isExpanded() ? 'open' : 'closed';\n el.setAttribute('aria-haspopup', 'listbox');\n el.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n el.setAttribute('aria-controls', listboxId);\n setPresence({el, attr: 'aria-invalid', present: props.invalid, value: 'true'});\n if (el instanceof HTMLButtonElement) el.disabled = props.disabled;\n\n const summary = selectedSummary();\n const valueEl = root().querySelector<HTMLElement>('[data-ui-select-button-value]');\n const placeholder = root().querySelector<HTMLElement>('[data-ui-select-button-placeholder]');\n if (valueEl) {\n valueEl.replaceChildren();\n const selected = currentContext().selection.length === 1 && summary\n ? catalog.project('', currentContext().selection).firstByValue.get(currentContext().selection[0]?.value ?? '')\n : undefined;\n if (selected) valueEl.append(selectedContent(selected));\n else valueEl.textContent = summary;\n valueEl.hidden = summary === '';\n }\n if (placeholder) {\n placeholder.hidden = isPillbox()\n ? currentContext().selection.length > 0\n : summary !== '';\n }\n\n root().querySelectorAll<HTMLElement>('[data-ui-select-clear], [data-ui-select-button-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !props.clearable || currentContext().selection.length === 0;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n root().querySelectorAll<HTMLElement>('[data-ui-select-search-clear]').forEach((clear) => {\n clear.hidden = props.disabled || !currentContext().search.query;\n if (clear instanceof HTMLButtonElement) clear.disabled = props.disabled;\n });\n };\n\n const syncInputs = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n const inputEl = input();\n if (inputEl) {\n inputEl.id ||= inputId;\n inputEl.className = resolveStyle({part: selectStyles.parts.input, className: props.inputClass});\n inputEl.value = isPillbox()\n ? context.search.query\n : isExpanded() && inputSearching ? context.search.query : selectedSummary();\n inputEl.placeholder = isPillbox() && context.selection.length > 0 ? '' : props.placeholder;\n inputEl.setAttribute('role', 'combobox');\n inputEl.setAttribute('autocomplete', 'off');\n inputEl.setAttribute('aria-autocomplete', 'list');\n inputEl.setAttribute('aria-expanded', isExpanded() ? 'true' : 'false');\n inputEl.setAttribute('aria-controls', listboxId);\n syncNativeControl({input: inputEl, state: {\n disabled: props.disabled,\n readonly: props.readonly,\n required: props.required,\n nativeRequired: false,\n invalid: props.invalid,\n ariaRequired: props.required,\n }});\n }\n\n const search = searchInput();\n if (search) {\n const searchRow = search.closest<HTMLElement>('[data-ui-select-search]');\n if (searchRow) searchRow.hidden = !fixedSearchAvailable(catalog);\n search.value = context.search.query;\n search.disabled = props.disabled;\n search.readOnly = props.readonly;\n }\n\n const active = optionProjection(catalog).enabled.find((option) => option.value === context.navigation.activeValue);\n [trigger(), inputEl, search, listbox()].forEach((element) => {\n if (active?.id) element?.setAttribute('aria-activedescendant', active.id);\n else element?.removeAttribute('aria-activedescendant');\n });\n };\n\n const syncListbox = (): void => {\n const props = currentProps();\n const surface = popoverEl();\n const box = listbox();\n surface.id = `${listboxId}-popover`;\n surface.className = resolveStyle({part: selectStyles.parts.popover, props, className: props.listboxClass});\n surface.dataset.uiSurface = props.surface;\n surface.dataset.uiElevation = props.elevation;\n surface.setAttribute('popover', 'manual');\n surface.dataset.state = isExpanded() ? 'open' : 'closed';\n surface.hidden = !isVisible();\n box.id = listboxId;\n box.setAttribute('role', 'listbox');\n box.tabIndex = -1;\n box.setAttribute('aria-labelledby', trigger().id);\n setPresence({el: box, attr: 'aria-multiselectable', present: props.multiple, value: 'true'});\n };\n\n const syncOptions = (catalog: OptionCatalog): void => {\n const props = currentProps();\n const context = currentContext();\n root().querySelectorAll<HTMLElement>('[data-ui-select-create-query]').forEach((query) => {\n query.textContent = context.search.query;\n });\n const records = optionProjection(catalog).options;\n records.forEach((option) => {\n option.el.id = option.id;\n option.el.hidden = !option.visible;\n if (option.create) {\n (option.el as HTMLButtonElement).disabled = option.disabled || props.disabled || props.readonly;\n } else {\n option.el.setAttribute('role', 'option');\n option.el.setAttribute('aria-selected', option.selected ? 'true' : 'false');\n }\n if (!option.create) option.el.dataset.value = option.value;\n if (!option.create) option.el.dataset.label = option.label;\n setPresence({el: option.el, attr: 'data-selected', present: !option.create && option.selected, value: 'true'});\n setPresence({el: option.el, attr: 'data-highlighted', present: !option.create && option.value === context.navigation.activeValue, value: 'true'});\n setPresence({el: option.el, attr: 'data-disabled', present: option.disabled, value: 'true'});\n setPresence({el: option.el, attr: 'aria-disabled', present: option.disabled, value: 'true'});\n option.el.querySelectorAll<HTMLElement>('[data-ui-select-option-indicator]').forEach((indicator) => {\n setPresence({el: indicator, attr: 'data-selected', present: option.selected, value: 'true'});\n syncMark(indicator, option.selected);\n });\n });\n const empty = root().querySelector<HTMLElement>('[data-ui-select-option-empty]');\n if (empty) {\n empty.hidden = records.some((option) => option.visible && option.create && !option.disabled)\n || (props.virtualized && props.optionsFetchUrl\n ? virtualTotal !== 0\n : records.some((option) => option.visible && !option.create));\n }\n };\n\n const optionDomSignature = (): string => JSON.stringify(\n Array.from(root().querySelectorAll<HTMLElement>(optionSelector)).map((option) => ({\n create: option.hasAttribute('data-ui-select-option-create'),\n value: option.dataset.value ?? '',\n label: option.hasAttribute('data-ui-select-option-create')\n ? option.textContent?.trim() ?? ''\n : option.dataset.label ?? option.textContent?.trim() ?? '',\n disabled: option.dataset.disabled ?? '',\n selected: option.dataset.selected ?? '',\n selectedContent: option.querySelector<HTMLTemplateElement>(selectedTemplateSelector)?.innerHTML ?? null,\n })),\n );\n\n const syncChips = (catalog: OptionCatalog): void => {\n const container = chipsEl();\n if (!container) return;\n const props = currentProps();\n const context = currentContext();\n const records = catalog.project('', context.selection);\n const chips = context.selection.map(({value, label}) => ({\n value,\n label,\n disabled: records.firstByValue.get(value)?.disabled ?? false,\n option: records.firstByValue.get(value),\n }));\n const chipSize = props.size === 'xs' || props.size === 'sm' ? 'xs' : 'sm';\n const template = findItemTemplate(root(), 'data-ui-select-chip-template');\n container.hidden = !isPillbox() || chips.length === 0;\n const selectedValues = new Set(container.hidden ? [] : chips.map(({value}) => value));\n chipInstances.forEach(({instance}, value) => {\n if (!selectedValues.has(value) || instance.template !== template || instance.element.parentElement !== container) {\n instance.destroy();\n chipInstances.delete(value);\n }\n });\n if (container.hidden) return;\n if (!template) throw new Error('A pillbox select requires a chip template.');\n const styles = {\n chip: resolveStyle({part: badgeStyles.parts.root,\n props: {variant: props.chipVariant, color: props.chipColor, size: chipSize, radius: 'sm'},\n className: resolveStyle({part: selectStyles.parts.chip, className: props.chipClass})}),\n label: resolveStyle({part: selectStyles.parts.chipLabel}),\n plainLabel: resolveStyle({part: selectStyles.parts.chipPlainLabel}),\n remove: resolveStyle({part: badgeStyles.parts.close, props: {size: chipSize},\n className: resolveStyle({part: selectStyles.parts.chipRemove})}),\n };\n chips.forEach((chip, index) => {\n const selectedTemplate = chip.option?.el.querySelector<HTMLTemplateElement>(selectedTemplateSelector);\n const content = selectedTemplate?.innerHTML ?? '';\n const scope = {\n $chip: {value: chip.value, label: chip.label || chip.value,\n disabled: props.disabled || props.readonly || chip.disabled,\n hasSelectedContent: Boolean(selectedTemplate)},\n $styles: styles,\n $chipAppearance: {variant: props.chipVariant, color: props.chipColor, size: chipSize},\n };\n let mounted = chipInstances.get(chip.value);\n if (!mounted) {\n const instance = createTemplateInstance(AlpineInstance, template, scope);\n instance.element.dataset.uiSelectChip = '';\n instance.element.dataset.value = chip.value;\n mounted = {instance, content: ''};\n chipInstances.set(chip.value, mounted);\n } else mounted.instance.update(scope);\n if (mounted.content !== content) {\n const host = mounted.instance.element.querySelector<HTMLElement>('[data-ui-select-chip-selected-content]');\n if (host) host.replaceChildren(...(chip.option ? [explicitSelectedContent(chip.option) ?? ''] : []));\n mounted.content = content;\n }\n const element = mounted.instance.element;\n const before = container.children[index] ?? null;\n if (element !== before) mounted.instance.mount(container, before);\n });\n };\n\n const syncHiddenInputs = (): void => {\n const container = hiddenInputsEl();\n if (!container) return;\n const props = currentProps();\n hiddenInputsKey = syncRepeatedHiddenInputs({container, state: {\n name: props.name,\n required: props.required,\n values: props.disabled ? [] : selectionValues(),\n form: root().dataset.form ?? '',\n marker: 'data-ui-select-hidden-input',\n }, currentKey: hiddenInputsKey});\n };\n\n const syncSelectedPresentation = (catalog: OptionCatalog): void => {\n syncControl();\n syncTrigger(catalog);\n syncChips(catalog);\n };\n\n const syncChipLayout = (catalog: OptionCatalog): void => {\n const selection = JSON.stringify([isPillbox(), selectionValues()]);\n const changed = selection !== chipSelection;\n chipSelection = selection;\n if (!changed) {\n if (!chipProjectionPending) syncSelectedPresentation(catalog);\n return;\n }\n const revision = ++chipRevision;\n const active = root().ownerDocument.activeElement;\n if (!reflectControlledState || !isPillbox() || active?.matches(':focus-visible')) {\n chipProjectionPending = false;\n chipLayout?.complete();\n syncSelectedPresentation(catalog);\n return;\n }\n const targets = [...chipInstances.values()].map(({instance}) => instance.element);\n targets.push(trigger());\n targets.forEach((element) => markLayoutParticipant(element, {animationType: 'position'}));\n chipProjectionPending = true;\n chipLayout = layout(root(), {target: targets, signal: presentationController.signal, update: () => {\n if (!rootEl || revision !== chipRevision) return;\n chipProjectionPending = false;\n withOptionCatalog(syncSelectedPresentation);\n }});\n };\n\n const syncAll = (): void => withOptionCatalog((catalog) => {\n syncRoot();\n syncInputs(catalog);\n syncListbox();\n syncOptions(catalog);\n syncChipLayout(catalog);\n syncHiddenInputs();\n });\n\n const focusForOpen = (): void => {\n if (!rootEl) return;\n withOptionCatalog((catalog) => {\n if (!bridge.hasTag('interactive')) return;\n const props = currentProps();\n const focusTarget = (target: HTMLElement | null): void => {\n const active = root().ownerDocument.activeElement;\n const showIndicator = active instanceof HTMLElement\n && active.matches(':focus-visible') && !isFocusIndicatorSuppressed(active);\n focusElement(target, {showIndicator});\n };\n if (popover?.presentation() !== 'anchored') {\n const target = (fixedSearchAvailable(catalog) ? searchInput() : null)\n ?? root().querySelector<HTMLElement>('[data-ui-select-sheet-close]')\n ?? listbox();\n focusTarget(target);\n } else if (props.mode === 'combobox') focusTarget(input());\n else if (fixedSearchAvailable(catalog)) focusTarget(searchInput());\n else focusTarget(trigger());\n });\n };\n\n const activateInitialOption = (requestedValue?: string): void => withOptionCatalog((catalog) => {\n const enabled = optionProjection(catalog).enabled;\n const props = currentProps();\n if (props.mode === 'combobox') {\n setActive(requestedValue ?? (props.autoHighlight ? enabled[0]?.value ?? '' : ''));\n return;\n }\n if (currentContext().navigation.activeValue) return;\n const selected = selectionValues()\n .map((value) => enabled.find((option) => option.value === value))\n .find((option): option is SelectOption => option !== undefined);\n if (selected) setActive(selected.value);\n });\n\n const reconcileOptions = (): void => withOptionCatalog((catalog) => {\n const context = currentContext();\n const selection = selectionForValues(selectionValues(context.selection), catalog);\n if (!sameStrings(selectionLabels(selection), selectionLabels(context.selection))) {\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n const enabled = optionProjection(catalog).enabled;\n if (context.navigation.activeValue && !enabled.some((option) => option.value === context.navigation.activeValue)) {\n highlightOrigin = 'keyboard';\n bridge.send({type: 'ACTIVE', value: currentProps().autoHighlight ? enabled[0]?.value ?? '' : ''});\n scrollActiveIntoView();\n }\n syncAll();\n });\n\n const propsChanged = (event: Record<string, unknown>): void => withOptionCatalog((catalog) => {\n const changes = Array.isArray(event.changes) ? event.changes : [];\n const keys = changes.flatMap((change) => (\n change && typeof change === 'object' && 'key' in change ? [String(change.key)] : []\n ));\n if (keys.some((key) => key === 'value' || key === 'values' || key === 'multiple' || key === 'selectedLabelMap')) {\n const selection = selectionForValues(valuesFromProps(currentProps()), catalog);\n bridge.send({type: 'RECONCILE_SELECTION', selection});\n }\n if (keys.includes('optionsTotalItems')) {\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n virtualizerApi()?.setTotalItems(virtualTotal);\n }\n if (keys.includes('optionsFetchUrl')) {\n syncVirtualizerUrl();\n queueMicrotask(syncVirtualizerUrl);\n }\n syncAll();\n });\n\n const virtualizedOptionsUrl = (query: string): string => {\n const props = currentProps();\n const url = new URL(props.optionsFetchUrl, document.baseURI);\n if (query) url.searchParams.set(props.optionSearchParam, query);\n else url.searchParams.delete(props.optionSearchParam);\n return /^[a-z][a-z\\d+.-]*:/i.test(props.optionsFetchUrl) || props.optionsFetchUrl.startsWith('//')\n ? url.href\n : `${url.pathname}${url.search}${url.hash}`;\n };\n\n const syncVirtualizerUrl = (): void => {\n if (!rootEl) return;\n const props = currentProps();\n if (!props.virtualized) return;\n const desired = props.optionsFetchUrl\n ? virtualizedOptionsUrl(currentContext().search.query)\n : '';\n const virtualizer = virtualizerEl();\n if (!virtualizer) return;\n if (virtualizer.dataset.fetchUrl === desired) {\n synchronizedVirtualizerUrl = desired;\n return;\n }\n if (synchronizedVirtualizerUrl === desired) return;\n const api = virtualizerApi();\n if (!api) return;\n synchronizedVirtualizerUrl = desired;\n api.setUrl(desired, {reset: true});\n };\n\n const scheduleVirtualSearch = (): void => {\n window.clearTimeout(virtualSearchTimer);\n const props = currentProps();\n if (\n !props.virtualized\n || !props.optionsFetchUrl\n || (!props.searchable && props.mode !== 'combobox')\n ) return;\n virtualSearchTimer = window.setTimeout(() => {\n syncVirtualizerUrl();\n const api = virtualizerApi();\n if (!api) return;\n if (virtualTotal === 0 && props.optionsTotalItems > 0) {\n virtualTotal = props.optionsTotalItems;\n api.setTotalItems(virtualTotal);\n }\n }, props.optionSearchDebounce);\n };\n\n const bridge = createAlpineMachine({\n schema: selectSchema,\n hooks: selectHooks,\n createMachine: ({props}) => createSelectMachine({\n props,\n context: initialContext(props),\n effects: {\n prepareOpen: ({event}) => withOptionCatalog(() => {\n highlightOrigin = 'keyboard';\n if (!popover?.opened()) visibility.defer();\n popover?.open();\n activateInitialOption(typeof event.activeValue === 'string' ? event.activeValue : undefined);\n syncAll();\n }),\n finishOpen: () => {\n if (visibility.reveal()) focusForOpen();\n syncAll();\n dispatch({el: root(), name: 'ui:open'});\n },\n prepareClose: ({event}) => {\n inputSearching = false;\n const restoreFocus = event.restoreFocus === true\n || event.type === 'SELECT'\n || event.type === 'CREATE';\n if (restoreFocus) focusElement(trigger(), {showIndicator: event.restoreFocus === true || event.showIndicator === true});\n syncAll();\n },\n finishClose: () => {\n popover?.close();\n visibility.reveal();\n syncAll();\n dispatch({el: root(), name: 'ui:close'});\n },\n commitSelection: ({event}) => {\n syncAll();\n declareMorphAttributes(root(), 'data-value', 'data-values');\n dispatchNativeControlChange({\n container: hiddenInputsEl(),\n fallback: root(),\n marker: 'data-ui-select-hidden-input',\n });\n const {selection} = currentContext();\n if (event.type === 'CLEAR') dispatch({el: root(), name: 'ui:clear'});\n dispatch({el: root(), name: 'ui:change', detail: {\n value: selection[0]?.value ?? '',\n values: selectionValues(selection),\n label: selection[0]?.label ?? '',\n labels: selectionLabels(selection),\n option: lastOptionEl,\n }});\n lastOptionEl = null;\n },\n commitSearch: () => {\n syncAll();\n scrollActiveIntoView();\n dispatch({el: root(), name: 'ui:search', detail: {search: currentContext().search.query}});\n scheduleVirtualSearch();\n },\n prepareCreate: ({event}) => {\n syncAll();\n dispatch({el: root(), name: 'ui:create', detail: {\n search: currentContext().search.query,\n value: currentContext().creation.value,\n modal: typeof event.modal === 'string' ? event.modal : '',\n }});\n },\n syncProps: ({event}) => propsChanged(event),\n syncOptions: reconcileOptions,\n syncActive: syncAll,\n syncDom: syncAll,\n },\n }),\n });\n\n const sendSelection = (\n type: 'SELECT' | 'DESELECT' | 'SELECT_ALL',\n selection: SelectContext['selection'],\n ): void => bridge.send({type, selection});\n\n const selectOption = (option: SelectOption, catalog: OptionCatalog, event?: Event): void => {\n event?.preventDefault();\n const props = currentProps();\n if (props.disabled || props.readonly || option.disabled) return;\n const showIndicator = event instanceof KeyboardEvent || (event instanceof MouseEvent && event.detail === 0);\n if (option.create) {\n bridge.send({\n type: 'CREATE',\n showIndicator,\n value: option.value || currentContext().search.query,\n modal: option.el.dataset.modal ?? '',\n });\n return;\n }\n\n lastOptionEl = option.el;\n inputSearching = false;\n const currentValues = selectionValues();\n const values = props.multiple\n ? currentValues.includes(option.value)\n ? currentValues.filter((value) => value !== option.value)\n : [...currentValues, option.value]\n : [option.value];\n bridge.send({type: 'SELECT', selection: selectionForValues(values, catalog), showIndicator});\n };\n\n const scrollActiveIntoView = (): void => withOptionCatalog((catalog) => {\n if (currentProps().mode !== 'combobox' || highlightOrigin !== 'keyboard' || !isExpanded()\n || visibility.pending()) return;\n optionProjection(catalog).firstByValue.get(currentContext().navigation.activeValue)?.el.scrollIntoView({\n block: 'nearest', inline: 'nearest', behavior: 'instant',\n });\n });\n\n const setActive = (value: string, origin: 'keyboard' | 'pointer' = 'keyboard'): void => withOptionCatalog((catalog) => {\n highlightOrigin = origin;\n if (value !== currentContext().navigation.activeValue) {\n bridge.send({type: 'ACTIVE', value});\n const option = optionProjection(catalog).firstByValue.get(value);\n dispatch({el: root(), name: 'ui:highlight', detail: {value, option: option?.el ?? null}});\n }\n scrollActiveIntoView();\n });\n\n const moveActive = (delta: 1 | -1): void => withOptionCatalog((catalog) => {\n const records = optionProjection(catalog).enabled;\n if (records.length === 0) return;\n const current = records.findIndex((option) => option.value === currentContext().navigation.activeValue);\n const props = currentProps();\n const inputStop = props.mode === 'combobox' && props.loop ? 1 : 0;\n const index = collectionIndex(current + inputStop, records.length + inputStop, delta, props.loop) - inputStop;\n setActive(records[index]?.value ?? '');\n });\n\n const setSearch = (query: string): void => withOptionCatalog((catalog) => {\n const props = currentProps();\n if (props.disabled || props.readonly) return;\n inputSearching = true;\n highlightOrigin = 'keyboard';\n const first = props.autoHighlight ? optionProjection(catalog, query).enabled[0]?.value ?? '' : '';\n bridge.send({type: 'SEARCH', query, optionsId, activeValue: first});\n });\n\n const handleKeydown = (event: KeyboardEvent): void => withOptionCatalog((catalog) => {\n if (event.key === 'Tab' && popover?.presentation() !== 'anchored') {\n trapFocus(event, popoverEl());\n return;\n }\n const createAction = event.target instanceof Element\n && event.target.closest('[data-ui-select-option-create]');\n if (createAction && event.key !== 'Escape') return;\n const textInput = event.target instanceof HTMLInputElement;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!isExpanded()) {\n if (currentProps().mode === 'combobox') {\n const records = optionProjection(catalog).enabled;\n bridge.send({type: 'OPEN', activeValue: (\n event.key === 'ArrowDown' ? records[0]?.value ?? '' : records.at(-1)?.value ?? ''\n )});\n return;\n }\n bridge.send({type: 'OPEN'});\n }\n moveActive(event.key === 'ArrowDown' ? 1 : -1);\n return;\n }\n if (!textInput && isExpanded() && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const records = optionProjection(catalog).enabled;\n setActive(event.key === 'Home' ? records[0]?.value ?? '' : records.at(-1)?.value ?? '');\n return;\n }\n if (isExpanded() && (event.key === 'Enter' || (!textInput && event.key === ' '))) {\n event.preventDefault();\n const option = optionProjection(catalog).firstByValue.get(currentContext().navigation.activeValue);\n if (option) selectOption(option, catalog, event);\n return;\n }\n if ((event.key === 'Backspace' || event.key === 'Delete') && isPillbox() && !currentContext().search.query) {\n const inputEl = input();\n if (inputEl && (inputEl.selectionStart !== 0 || inputEl.selectionEnd !== 0)) return;\n const unfiltered = catalog.project('', currentContext().selection);\n const value = [...selectionValues()].reverse().find((candidate) => (\n !unfiltered.firstByValue.get(candidate)?.disabled\n ));\n if (value) {\n event.preventDefault();\n component.deselect(value, event);\n }\n return;\n }\n if (event.key === 'Escape' && isVisible()) {\n event.preventDefault();\n event.stopPropagation();\n bridge.send({type: 'CLOSE', restoreFocus: true});\n return;\n }\n if (!textInput && !fixedSearchAvailable(catalog) && event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n typeahead += event.key.toLowerCase();\n window.clearTimeout(typeaheadTimer);\n typeaheadTimer = window.setTimeout(() => { typeahead = ''; }, 500);\n const match = optionProjection(catalog).enabled.find((option) => normalizeOptionText(option.label).startsWith(typeahead));\n if (match) setActive(match.value);\n }\n });\n\n const setup = (): void => {\n const el = root();\n const activateControl = (event: Event, target: Element): boolean => {\n if (!target.closest('[data-ui-select-trigger], [data-ui-select-icon=\"trailing\"], [data-ui-select-control]')) {\n return false;\n }\n if (event instanceof PointerEvent || (event instanceof MouseEvent && event.detail > 0)) {\n focusElement(trigger(), {showIndicator: false});\n } else focusElement(trigger());\n if (trigger() instanceof HTMLInputElement) {\n if (!isExpanded()) bridge.send({type: 'OPEN'});\n } else component.toggle(event);\n if (target !== input() || popover?.presentation() !== 'anchored') event.preventDefault();\n return true;\n };\n\n addListener({target: el, event: 'click', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (target.closest('[data-ui-select-sheet-close]')) {\n component.close(event);\n return;\n }\n const searchClear = target.closest('[data-ui-select-search-clear]');\n if (searchClear) {\n event.preventDefault();\n setSearch('');\n return;\n }\n const clear = target.closest('[data-ui-select-clear], [data-ui-select-button-clear]');\n if (clear) {\n component.clear(event);\n return;\n }\n const chipRemove = target.closest<HTMLElement>('[data-ui-select-chip-remove]');\n if (chipRemove) {\n component.deselect(chipRemove.dataset.value ?? '', event);\n return;\n }\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (optionEl) {\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option) selectOption(option, catalog, event);\n });\n return;\n }\n if (!(event instanceof MouseEvent) || event.detail === 0) activateControl(event, target);\n }});\n addListener({target: el, event: 'input', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) return;\n if (target.matches('[data-ui-select-input], [data-ui-select-search-input]')) setSearch(target.value);\n }});\n addListener({target: el, event: 'keydown', cleanup, handler: (event) => {\n if (event instanceof KeyboardEvent) handleKeydown(event);\n }});\n addListener({target: el, event: 'pointerdown', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n if (\n target.closest(optionSelector)\n || target.closest('[data-ui-select-search-clear]')\n || target.closest('[data-ui-select-clear], [data-ui-select-button-clear], [data-ui-select-chip-remove]')\n ) {\n event.preventDefault();\n return;\n }\n activateControl(event, target);\n }});\n addListener({target: el, event: 'pointerover', cleanup, handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const optionEl = target.closest<HTMLElement>(optionSelector);\n if (!optionEl) return;\n withOptionCatalog((catalog) => {\n const option = optionProjection(catalog).byElement.get(optionEl);\n if (option && !option.create && option.visible && !option.disabled) setActive(option.value, 'pointer');\n });\n }});\n addListener({target: listbox(), event: 'pointerleave', cleanup, handler: () => {\n if (currentProps().mode === 'combobox' && highlightOrigin === 'pointer') setActive('', 'pointer');\n }});\n addListener({target: el, event: 'focusout', cleanup, handler: (event) => {\n if (!(event instanceof FocusEvent)) return;\n const next = event.relatedTarget;\n if (next instanceof Node && el.contains(next)) return;\n if (isVisible()) bridge.send({type: 'CLOSE'});\n }});\n addListener({target: el, event: 'ui:virtualizer-total-change', cleanup, handler: (event) => {\n if (!(event instanceof CustomEvent) || !virtualizerEl()?.contains(event.target as Node)) return;\n const total = Number(event.detail?.totalItems);\n if (Number.isFinite(total) && total >= 0) {\n virtualTotal = Math.floor(total);\n virtualSearchPopulation = Math.max(virtualSearchPopulation, virtualTotal);\n }\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: el, event: 'ui:virtualizer-load', cleanup, handler: (event) => {\n if (!virtualizerEl()?.contains(event.target as Node)) return;\n bridge.send({type: 'OPTIONS_CHANGED'});\n }});\n addListener({target: popoverEl(), event: 'toggle', cleanup, handler: (event) => {\n if (!('newState' in event) || event.newState !== 'closed' || !isVisible()) return;\n bridge.send({type: 'CLOSE'});\n }});\n cleanup.add(addDismissableLayer({\n isEnabled: () => bridge.hasTag('interactive'),\n roots: () => [root(), popoverEl()],\n onDismiss: () => bridge.send({type: 'CLOSE'}),\n }));\n\n const observeSelectedTemplates = (): void => {\n selectedTemplateObserver?.disconnect();\n const templates = root().querySelectorAll<HTMLTemplateElement>(selectedTemplateSelector);\n if (!templates.length) return;\n selectedTemplateObserver ??= new MutationObserver(() => bridge.send({type: 'OPTIONS_CHANGED'}));\n templates.forEach(template => {\n selectedTemplateObserver!.observe(template.content, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n });\n });\n };\n\n disconnectObserver = observeSemanticChanges({\n targets: popoverEl(),\n read: optionDomSignature,\n onChange: () => {\n observeSelectedTemplates();\n bridge.send({type: 'OPTIONS_CHANGED'});\n },\n observer: {\n attributes: true,\n attributeFilter: [\n 'data-disabled',\n 'data-item',\n 'data-label',\n 'data-selected',\n 'data-selected-label',\n 'data-text-value',\n 'data-ui-select-option-selected-template',\n 'data-value',\n ],\n characterData: true,\n childList: true,\n subtree: true,\n },\n });\n observeSelectedTemplates();\n };\n\n let component!: TrellisAlpineComponent<SelectData>;\n component = {\n ...bridge,\n get isOpen(): boolean {\n return this.snapshot.current?.tags.includes('expanded') ?? false;\n },\n get isSearching(): boolean {\n return this.snapshot.current?.tags.includes('searching') ?? false;\n },\n get value(): string {\n return this.snapshot.current?.context.selection[0]?.value ?? '';\n },\n get values(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({value}) => value) ?? [];\n },\n get selectedLabels(): readonly string[] {\n return this.snapshot.current?.context.selection.map(({label}) => label) ?? [];\n },\n get search(): string {\n return this.snapshot.current?.context.search.query ?? '';\n },\n get activeValue(): string {\n return this.snapshot.current?.context.navigation.activeValue ?? '';\n },\n init(): void {\n cleanup = cleanupManagerFor(this);\n cleanup.add(() => presentationController.abort());\n rootEl = this.$el;\n buttonId = this.$id('select-button');\n inputId = this.$id('select-input');\n listboxId = this.$id('select-listbox');\n optionsId = optionsEl().id || root().dataset.optionsId || this.$id('select-options');\n optionsEl().id = optionsId;\n bridge.connect(this.$el, this.snapshot);\n virtualTotal = currentProps().optionsTotalItems;\n virtualSearchPopulation = virtualTotal;\n sheetTitle().id ||= `${listboxId}-title`;\n popover = createSelectSurface({\n reference: control,\n floating: popoverEl,\n labelId: () => sheetTitle().id,\n position: () => currentProps().side,\n align: () => currentProps().align,\n gap: () => currentProps().gap,\n offset: () => currentProps().offset,\n matchReferenceWidth: true,\n });\n cleanup.add(bridge.onTransition('opening', (transition) => {\n const animate = (): unknown => {\n if (transition.signal.aborted) return;\n visibility.reveal();\n focusForOpen();\n scrollActiveIntoView();\n if (root().hasAttribute('x-ui-transition:opening')) return;\n const anchored = popover?.presentation() === 'anchored';\n return animateProperties(transition, anchored ? anchoredEntrance(popoverEl()) : presets.popover.in, {target: popoverEl(), role: 'feedback'});\n };\n const positioned = popover?.positioned();\n return positioned ? positioned.then(animate) : animate();\n }));\n cleanup.add(bridge.onTransition('closing', (transition) => {\n const animate = (): unknown => {\n if (transition.signal.aborted) return;\n visibility.reveal();\n if (root().hasAttribute('x-ui-transition:closing')) return;\n return animateProperties(transition, popover?.presentation() === 'anchored'\n ? anchoredExit : presets.popover.out, {target: popoverEl(), role: 'feedbackExit'});\n };\n const positioned = popover?.positioned();\n return positioned ? positioned.then(animate) : animate();\n }));\n setup();\n syncAll();\n queueMicrotask(syncVirtualizerUrl);\n reflectControlledState = true;\n if (currentProps().open && !currentProps().disabled && !currentProps().readonly) {\n queueMicrotask(() => bridge.send({type: 'OPEN'}));\n }\n },\n destroy(): void {\n chipInstances.forEach(({instance}) => instance.destroy());\n chipInstances.clear();\n window.clearTimeout(typeaheadTimer);\n window.clearTimeout(virtualSearchTimer);\n disconnectObserver?.();\n disconnectObserver = null;\n selectedTemplateObserver?.disconnect();\n selectedTemplateObserver = null;\n popover?.destroy();\n popover = null;\n bridge.disconnect();\n visibility.reveal();\n rootEl = null;\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? currentProps();\n return mergeBindings({inputs: [\n resolveStyle({part: selectStyles.parts.root, props, className: props.class}),\n {\n 'data-ui-select': '',\n ':data-state': () => (bridge.hasTag('expanded') ? 'open' : 'closed'),\n },\n ]});\n },\n open(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'OPEN'});\n },\n close(event?: Event): void {\n event?.preventDefault();\n bridge.send({type: 'CLOSE', restoreFocus: event instanceof KeyboardEvent});\n },\n toggle(event?: Event): void {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n bridge.send({type: 'TOGGLE'});\n },\n select(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option) selectOption(option, catalog, event);\n });\n },\n deselect(value: string, event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (currentProps().disabled || currentProps().readonly) return;\n const option = catalog.project('', currentContext().selection).firstByValue.get(value);\n if (option?.disabled) return;\n sendSelection('DESELECT', selectionForValues(\n selectionValues().filter((candidate) => candidate !== value),\n catalog,\n ));\n });\n },\n selectAll(event?: Event): void {\n withOptionCatalog((catalog) => {\n event?.preventDefault();\n if (!currentProps().multiple || currentProps().disabled || currentProps().readonly) return;\n const records = optionProjection(catalog).enabled;\n sendSelection('SELECT_ALL', records.map((option) => ({\n value: option.value,\n label: option.selectedLabel,\n })));\n });\n },\n clear(event?: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (currentProps().disabled || currentProps().readonly) return;\n inputSearching = false;\n const resetRemoteSearch = currentContext().search.query !== '';\n bridge.send({type: 'CLEAR'});\n if (resetRemoteSearch) scheduleVirtualSearch();\n },\n setSearch,\n };\n\n return component;\n};\n\nconst registerSelect = (AlpineInstance: Alpine.Alpine): void => {\n defineAlpineData('UiSelect', () => UiSelect(AlpineInstance))(AlpineInstance);\n};\n\nexport {registerSelect, UiSelect};\nexport type {SelectData, SelectTransition, UiSelectApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerAnchorCapability} from '../../capabilities/anchor';\nimport {registerSelect as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSelect = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerAnchorCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSelect};\nexport default registerSelect;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from "./select-BjLF548F.js";
2
- export {default} from "./select-BjLF548F.js";
1
+ export * from "./select-C3hjgwMw.js";
2
+ export {default} from "./select-C3hjgwMw.js";
@@ -0,0 +1,2 @@
1
+ import{r as e,t}from"../chunks/dom-DiTFTWeR.js";import{O as n,k as r,t as i,x as a}from"../chunks/properties-D8pFWF8g.js";import{t as o}from"../chunks/layout-task-B6P8q7BH.js";import{a as s,f as c,l,n as u,u as d}from"../chunks/codecs-CQ7olTJL.js";import{a as f,n as p,t as m}from"../chunks/machine-Do4tL7nc.js";import{n as h,r as g}from"../chunks/focus-BvBkrIcj.js";import{t as _}from"../chunks/preferences-BZyZ-kK6.js";import{n as v,t as y}from"../chunks/alpine-data-Dvc_bXq6.js";import{n as b,t as x}from"../chunks/styles-CX2j92ex.js";import{t as S}from"../chunks/merge-bindings-BtqW3UgP.js";import{t as ee}from"../chunks/dismissable-layer-MzcgNRti.js";import{i as te,n as ne}from"../chunks/focus-scope-DYfME-Rk.js";import{n as re,t as ie}from"../chunks/capability-resizable-DPMSJ1AR.js";import{t as ae}from"../chunks/scroll-lock-C5dQtr4Y.js";import{t as C}from"../chunks/control-size-BcDu1m1N.js";import{B as w,H as T,V as E,h as D,k as O,u as k}from"../chunks/common-DnEHZCqy.js";import{t as A}from"../chunks/resize-DRGrWivx.js";import{t as oe}from"../chunks/resize-preview-hnUhGcMX.js";var se=e=>{let t=getComputedStyle(e).getPropertyValue(`--ui-shell-sidebar-breakpoint`),n=Number.parseFloat(t);return Number.isFinite(n)?n:1/0},j=[`div`,...D],ce=[`left`,`right`],M=[`side`,`top`],N=[`drawer`,`fullscreen`],P=[`div`,`aside`,`header`],F=[`none`,`mobile`,`desktop`,`both`],I=[`toggle`,`open`,`close`,`stash`,`expand`],le=[`a`,`button`],L=[`ghost`,`surface`],ue=[`neutral`,`accent`],R=[`heading`,`item`],z=[`always`,`hover`],B=[...O,`label`],V=w,H=k,U={as:l(P,`div`),id:c.default(`ui-sidebar`),placement:l(M,`side`),mobilePresentation:l(N,`drawer`),side:l(ce,`left`),surface:l(V,`inherit`),elevation:l(H,`none`),drawerElevation:l(H,`2`),divider:u.default(!0),sticky:u.default(!0),collapse:l(F,`mobile`),open:u,stashed:u,persist:u.default(!0),edgeReveal:u.default(!0),resizable:u,class:c};l(le,`a`),l(L,`ghost`),l(ue,`neutral`),l(z,`always`),l(R,`heading`),l([`inherit`,...E],`inherit`),l(j,`div`),l(z,`always`),u.default(!0),l(B,`0`),l([`none`,`line`],`none`),l([`inherit`,...C],`inherit`),l([`inherit`,`auto`,`reserve`],`inherit`);var W={target:c,icon:c.default(`side_panel`),label:c.default(`Toggle sidebar`),action:l(I,`toggle`),class:c};u.default(!0);var G=({context:e})=>({mode:e.responsive.mode,presentation:e.transition.presentation,width:e.layout.width,height:e.layout.height}),de=[f({name:`opening`,state:`opening`,project:G,onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),f({name:`closing`,state:`closing`,project:G,onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],K=(e,t)=>typeof e.target==`string`?e.target:t,fe=e=>e.presentation===`layout`?`layout`:`drawer`,pe=({props:e,mode:t,desktopStashed:n,effects:r})=>{let i=t===`mobile`?e.open?`mobileOpen`:`mobileClosed`:e.placement===`top`?`desktopTop`:n?`desktopStashed`:`desktopExpanded`,a={target:`opening`,reduce:`beginOpen`,effects:`prepareOpen`},o={target:`closing`,reduce:`beginClose`,effects:`prepareClose`},s={reduce:`replaceProps`,effects:`syncProps`};return m({initial:i,on:{MODE:[{target:`desktopTop`,guard:`toTop`,reduce:`setMode`,effects:`sync`},{target:`desktopDrawer`,guard:`toDesktopDrawer`,reduce:`setMode`,effects:`sync`},{target:`desktopStashed`,guard:`toDesktopStashed`,reduce:`setMode`,effects:`sync`},{target:`desktopExpanded`,guard:`toDesktop`,reduce:`setMode`,effects:`sync`},{target:`mobileOpen`,guard:`toMobileOpen`,reduce:`setMode`,effects:`sync`},{target:`mobileClosed`,reduce:`setMode`,effects:`sync`}],RESIZE:{reduce:`resize`,effects:`sync`}},states:{mobileClosed:{tags:[`mobile`,`closed`],on:{OPEN:a,EXPAND:a,PROPS_CHANGED:s}},mobileOpen:{tags:[`mobile`,`visible`,`expanded`,`open`],on:{CLOSE:o,STASH:o,TOGGLE:o,PROPS_CHANGED:s}},desktopExpanded:{tags:[`desktop`,`visible`,`expanded`,`open`,`layout`],on:{CLOSE:o,STASH:o,TOGGLE:o,OPEN:{},EXPAND:{},PROPS_CHANGED:s}},desktopStashed:{tags:[`desktop`,`stashed`,`closed`],on:{OPEN:a,EXPAND:a,TOGGLE:a,PROPS_CHANGED:s}},desktopDrawer:{tags:[`desktop`,`stashed`,`visible`,`expanded`,`open`,`drawer`],on:{CLOSE:o,STASH:o,TOGGLE:o,EXPAND:a,PROPS_CHANGED:s}},desktopTop:{tags:[`desktop`,`top`,`visible`,`expanded`,`open`,`layout`],on:{PROPS_CHANGED:s}},opening:{tags:[`visible`,`expanded`,`transitioning`],on:{OPENING_DONE:[{target:`mobileOpen`,guard:`targetsMobileOpen`,effects:`finishOpen`},{target:`desktopDrawer`,guard:`targetsDesktopDrawer`,effects:`finishOpen`},{target:`desktopTop`,guard:`targetsDesktopTop`,effects:`finishOpen`},{target:`desktopExpanded`,effects:`finishOpen`}],OPENING_ERROR:[{target:`mobileOpen`,guard:`targetsMobileOpen`,effects:`finishOpen`},{target:`desktopDrawer`,guard:`targetsDesktopDrawer`,effects:`finishOpen`},{target:`desktopTop`,guard:`targetsDesktopTop`,effects:`finishOpen`},{target:`desktopExpanded`,effects:`finishOpen`}],CLOSE:o,STASH:o,TOGGLE:o,PROPS_CHANGED:s}},closing:{tags:[`visible`,`transitioning`],on:{CLOSING_DONE:[{target:`mobileClosed`,guard:`targetsMobileClosed`,effects:`finishClose`},{target:`desktopStashed`,effects:`finishClose`}],CLOSING_ERROR:[{target:`mobileClosed`,guard:`targetsMobileClosed`,effects:`finishClose`},{target:`desktopStashed`,effects:`finishClose`}],OPEN:a,EXPAND:a,TOGGLE:a,PROPS_CHANGED:s}}}},{props:e,context:{responsive:{mode:t},layout:{desktopStashed:n,desktopDrawerOpen:!1,width:`var(--spacing-sidebar-width)`,height:``},transition:{target:i,presentation:i===`desktopExpanded`||i===`desktopTop`?`layout`:`drawer`}},reducers:{beginOpen:({context:e,event:t})=>{let n=K(t,`mobileOpen`);return{context:{...e,layout:{...e.layout,desktopStashed:n===`desktopDrawer`||n!==`desktopExpanded`&&e.layout.desktopStashed,desktopDrawerOpen:n===`desktopDrawer`||n===`mobileOpen`&&e.layout.desktopStashed},transition:{target:n,presentation:fe(t)}}}},beginClose:({context:e,event:t})=>{let n=K(t,`mobileClosed`),r=n===`desktopStashed`||n===`mobileClosed`&&e.layout.desktopStashed;return{context:{...e,layout:{...e.layout,desktopStashed:n===`desktopStashed`||e.layout.desktopStashed,desktopDrawerOpen:!r&&e.layout.desktopDrawerOpen},transition:{target:n,presentation:fe(t)}}}},setMode:({context:e,event:t})=>({context:{...e,responsive:{mode:t.mode===`desktop`?`desktop`:`mobile`}}}),replaceProps:({context:e,event:t})=>({props:t.props,context:e}),resize:({context:e,event:t})=>({context:{...e,layout:{...e.layout,width:typeof t.width==`string`?t.width:e.layout.width,height:typeof t.height==`string`?t.height:e.layout.height}}})},guards:{toTop:({event:e})=>e.mode===`desktop`&&e.placement===`top`,toDesktopDrawer:({event:e})=>e.mode===`desktop`&&e.stashed===!0&&e.open===!0,toDesktopStashed:({event:e})=>e.mode===`desktop`&&e.stashed===!0,toDesktop:({event:e})=>e.mode===`desktop`,toMobileOpen:({event:e})=>e.mode===`mobile`&&e.open===!0,targetsMobileOpen:({context:e})=>e.transition.target===`mobileOpen`,targetsMobileClosed:({context:e})=>e.transition.target===`mobileClosed`,targetsDesktopDrawer:({context:e})=>e.transition.target===`desktopDrawer`,targetsDesktopTop:({context:e})=>e.transition.target===`desktopTop`},effects:{prepareOpen:r.prepareOpen,finishOpen:r.finishOpen,prepareClose:r.prepareClose,finishClose:r.finishClose,sync:r.sync,syncProps:r.syncProps}})},me=T(`--ui-sidebar-resting-elevation`),q=T(`--ui-sidebar-drawer-elevation`),he=x({definition:{component:`ui.sidebar`,parts:{root:{base:[`fixed inset-y-2 z-dialog flex min-h-0 w-[var(--spacing-sidebar-drawer-width)] flex-col overflow-hidden rounded-overlay-md`,`border-separator outline-none`,`data-[drawer-state=open]:bg-surface`,`data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-none`,`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`,`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`,`data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden`,`data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed`,`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`,`[grid-area:sidebar]`,`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`,`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`,`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`,`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`,`data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-item]]:w-auto`,`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`],variants:{elevation:me,drawerElevation:q,mobilePresentation:{drawer:``,fullscreen:[`[&:not([data-responsive-mode=desktop])]:inset-0`,`[&:not([data-responsive-mode=desktop])]:h-dvh`,`[&:not([data-responsive-mode=desktop])]:w-full`,`[&:not([data-responsive-mode=desktop])]:max-w-none`,`[&:not([data-responsive-mode=desktop])]:rounded-none`,`[&:not([data-responsive-mode=desktop])]:border-0`].join(` `)},divider:{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`,false:``},side:{left:`left-2 border-r-edge-divider data-[responsive-mode=desktop]:data-[desktop-state=expanded]:left-auto`,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`},sticky:{true:`data-[responsive-mode=desktop]:sticky data-[responsive-mode=desktop]:h-screen`,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`}},defaults:{elevation:`none`,drawerElevation:`2`,mobilePresentation:`drawer`,divider:!0,side:`left`,sticky:!0}},body:{base:`flex h-full w-[var(--ui-sidebar-body-width,100%)] min-h-0 min-w-0 flex-auto [flex-direction:inherit]`},header:{base:`flex min-h-control-xlg shrink-0 items-center gap-sidebar-header-gap px-sidebar-header-padding-inline py-sidebar-header-padding-block`},content:{base:[`min-h-0 flex-1 overflow-hidden`]},contentInner:{base:[`grid min-w-0 content-start gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block`,`[&>[data-ui-separator]]:-mx-sidebar-content-padding-inline [&>[data-ui-separator]]:w-auto`]},footer:{base:`grid shrink-0 gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block`},nav:{base:`grid gap-sidebar-content-gap`},list:{base:`ui-sidebar-list grid min-w-0 list-none gap-sidebar-content-gap p-0`,variants:{indent:Object.fromEntries([...O.map(e=>[e,`ui-sidebar-indent-${e}`]),[`label`,``]])},defaults:{indent:`0`}},row:{base:`ui-sidebar-row grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center rounded-control-md`},itemRow:{base:`min-w-0 list-none`},item:{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`,variants:{variant:{ghost:``,surface:`data-current:border-transparent data-current:shadow-none`},color:{neutral:``,accent:``}},defaults:{variant:`ghost`,color:`neutral`}},main:{base:`ui-sidebar-main flex min-w-0 items-center gap-2`},leading:{base:`ui-sidebar-leading shrink-0 items-center justify-center`},itemIcon:{base:`size-full text-current`},itemLabel:{base:`min-w-0 flex-1 truncate`},trailing:{base:`ui-sidebar-trailing flex shrink-0 items-center justify-center gap-1`},actions:{base:`ui-sidebar-actions grid shrink-0 grid-flow-col items-center justify-items-center gap-1`},group:{base:`min-w-0 list-none`},groupHeadingWrapper:{base:`ui-sidebar-heading min-w-0`,variants:{inherit:{true:`ui-sidebar-type-inherit`,false:``}},defaults:{inherit:!0}},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`},groupHeading:{base:`ui-sidebar-control grid min-w-0 items-center`},groupLabel:{base:`min-w-0 flex-1 truncate`},groupChevron:{base:`ui-sidebar-chevron shrink-0 text-current`},groupContent:{base:`min-w-0`},toggle:{base:[`inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-control-md text-surface-ink-muted outline-none`,`hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring`]},toggleIcon:{base:`size-icon text-current`},edge:{base:[`fixed inset-y-0 z-30 hidden w-4 bg-transparent outline-none data-[state=visible]:block`,`focus-visible:ui-focus-ring-inset`,`data-[state=hidden]:hidden`],variants:{side:{left:`left-0`,right:`right-0`}},defaults:{side:`left`}},resizeHandle:{base:[`absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none outline-none group-data-[responsive-mode=desktop]/sidebar:block`,`data-disabled:hidden`,`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`],variants:{side:{left:`right-0`,right:`left-0`}},defaults:{side:`left`}}}}}),ge=(n,r)=>{let i=new Map,a=e=>{if(!(e instanceof Element))return null;let t=e.closest(`[data-ui-sidebar-group][data-expandable]`);return t?.closest(`[data-ui-sidebar]`)===n?t:null},s=(t,n,r)=>{if(t.dataset.state===`open`===n)return;i.get(t)?.abort(),i.delete(t);let o=t.querySelector(`:scope > [data-ui-sidebar-row] [data-ui-sidebar-group-trigger]`),s=t.querySelector(`:scope > [data-ui-sidebar-group-content]`);if(o&&s){if(!n&&s.contains(document.activeElement)&&o.focus(),t.dataset.state=n?`open`:`closed`,o.setAttribute(`aria-expanded`,String(n)),s.inert=!n,s.setAttribute(`aria-hidden`,String(!n)),s.hidden=!1,r){let e=new AbortController;i.set(t,e),A({el:s,root:t,signal:e.signal},{measure:`:scope > [data-ui-sidebar-group-content-inner]`,from:n?`collapsed`:`content`,to:n?`content`:`collapsed`,role:n?`resize`:`presenceExit`}).finished.then(()=>{e.signal.aborted||(t.isConnected&&a(t)===t&&(s.hidden=t.dataset.state!==`open`),e.abort(),i.delete(t))})}else s.hidden=!n;e({el:t,name:`ui:sidebar-group-change`,detail:{open:n}})}},c=e=>{let t=e.querySelector(`:scope > [data-ui-sidebar-row] [data-ui-sidebar-group-label]`),n=e.querySelector(`:scope > [data-ui-sidebar-group-content]`);if(!t||!n||!t.getClientRects().length)return[];let r=t.getBoundingClientRect(),i=e.getBoundingClientRect(),a=getComputedStyle(e).direction===`rtl`,o=e.offsetWidth?i.width/e.offsetWidth:1,s=`${(a?i.right-r.right:r.left-i.left)/(o||1)}px`,c=e.querySelector(`:scope > [data-ui-sidebar-row] [data-ui-sidebar-leading]`),l=c?.getBoundingClientRect(),u=`${c?.getClientRects().length&&l?(a?i.right-(l.left+l.right)/2:(l.left+l.right)/2-i.left)/(o||1):0}px`;return[{element:e,property:`--ui-sidebar-label-indent`,value:s},{element:e,property:`--ui-sidebar-guide-offset`,value:u}]},l=new Map,u=new Map,d=new Map,f=new Map,p=e=>getComputedStyle(e).display===`contents`?[...e.children].filter(e=>e instanceof HTMLElement&&![`absolute`,`fixed`].includes(getComputedStyle(e).position)).flatMap(p):[e],m=(e,t)=>{if(!e.getClientRects().length)return[];let r=[],i=t.flatMap(p);e.querySelectorAll(`[data-ui-sidebar-actions]`).forEach(e=>{if(e.closest(`[data-ui-sidebar]`)!==n)return;let t=[...e.children].filter(e=>e instanceof HTMLElement).flatMap(p),a=e.closest(`[data-ui-sidebar-row]`)?.querySelector(`[data-ui-sidebar-trailing]`),o=t.map((e,n)=>!a&&n===t.length-1?`minmax(var(--ui-sidebar-terminal-size),max-content)`:`minmax(var(--ui-sidebar-control-height),max-content)`).join(` `);r.push({element:e,property:`--ui-sidebar-action-columns`,value:o});let s=t.at(-1);s&&!a&&i.push(s)});let a=e.offsetWidth?e.getBoundingClientRect().width/e.offsetWidth:1,o=new Set(i.map(e=>e.parentElement?.hasAttribute(`data-ui-sidebar-trailing`)?e.parentElement:e)),s=[...e.querySelectorAll(`[data-ui-sidebar-control]`)].filter(e=>e.closest(`[data-ui-sidebar]`)===n).map(e=>Number.parseFloat(getComputedStyle(e).minHeight)||0),c=`${Math.max(0,...s,...[...o].map(e=>{if(e.hasAttribute(`data-ui-sidebar-control`))return 0;if(!e.hasAttribute(`data-ui-sidebar-trailing`))return e.getBoundingClientRect().width/(a||1);let t=document.createRange();return t.selectNodeContents(e),t.getBoundingClientRect().width/(a||1)}))}px`;return r.push({element:e,property:`--ui-sidebar-terminal-content`,value:c}),r},h=o({measure:()=>[...[...l.keys()].flatMap(c),...[...u].flatMap(([e,t])=>m(e,t))],apply:e=>{for(let{element:t,property:n,value:r}of e)t.isConnected&&t.style.getPropertyValue(n)!==r&&t.style.setProperty(n,r)}}),g=new WeakMap,_=typeof ResizeObserver>`u`?null:new ResizeObserver(e=>{let t=!1;for(let{target:n,contentRect:r}of e){let e=n.hasAttribute(`data-ui-sidebar-control`)?`${r.width}/${r.height}`:String(r.width);g.get(n)!==e&&(g.set(n,e),t=!0)}t&&h.schedule()}),v=()=>{f.forEach((e,t)=>{t.closest(`[data-ui-sidebar]`)!==n&&(t.style.setProperty(`--ui-sidebar-action-columns`,e),f.delete(t))}),l.forEach((e,t)=>{t.closest(`[data-ui-sidebar]`)!==n&&(e.forEach(e=>_?.unobserve(e)),l.delete(t),i.get(t)?.abort(),i.delete(t))}),n.querySelectorAll(`[data-ui-sidebar-group]`).forEach(e=>{if(e.closest(`[data-ui-sidebar]`)!==n||l.has(e))return;let t=e.querySelector(`:scope > [data-ui-sidebar-row]`),r=t?[t,...t.querySelectorAll(`[data-ui-sidebar-leading], [data-ui-sidebar-group-label]`)]:[];r.forEach(e=>_?.observe(e)),l.set(e,r)}),u.forEach((e,t)=>{e.forEach(e=>_?.unobserve(e)),_?.unobserve(t),(t.closest(`[data-ui-sidebar]`)!==n||t.parentElement?.closest(`[data-ui-sidebar-list]`)?.closest(`[data-ui-sidebar]`)===n)&&(t.style.setProperty(`--ui-sidebar-terminal-content`,d.get(t)??``),d.delete(t),u.delete(t))}),n.querySelectorAll(`[data-ui-sidebar-list]`).forEach(e=>{if(e.closest(`[data-ui-sidebar]`)!==n||e.parentElement?.closest(`[data-ui-sidebar-list]`)?.closest(`[data-ui-sidebar]`)===n)return;d.has(e)||d.set(e,e.style.getPropertyValue(`--ui-sidebar-terminal-content`));let t=[...e.querySelectorAll(`[data-ui-sidebar-control], [data-ui-sidebar-trailing], [data-ui-sidebar-trailing] > *`)].filter(e=>e.closest(`[data-ui-sidebar]`)===n);e.querySelectorAll(`[data-ui-sidebar-actions]`).forEach(e=>{e.closest(`[data-ui-sidebar]`)===n&&!f.has(e)&&f.set(e,e.style.getPropertyValue(`--ui-sidebar-action-columns`))}),u.set(e,t),t.forEach(e=>_?.observe(e)),_?.observe(e)}),h.schedule()};v();let y=new MutationObserver(v);y.observe(n,{childList:!0,characterData:!0,subtree:!0,attributes:!0,attributeFilter:[`dir`,`data-size`,`data-leading`]});let b=new MutationObserver(v);b.observe(document.documentElement,{attributes:!0,attributeFilter:[`dir`]}),t({target:n,event:`click`,cleanup:r,handler:e=>{let t=a(e.target);if(!t||!(e.target instanceof Element)||e.defaultPrevented)return;let n=e.target.closest(`[data-ui-sidebar-group-trigger]`);n&&n.closest(`[data-ui-sidebar-group]`)===t&&(e.preventDefault(),s(t,t.dataset.state!==`open`,e instanceof MouseEvent&&e.detail>0))}}),r.add(()=>{h.cancel(),y.disconnect(),b.disconnect(),_?.disconnect(),l.clear(),d.forEach((e,t)=>t.style.setProperty(`--ui-sidebar-terminal-content`,e)),d.clear(),f.forEach((e,t)=>t.style.setProperty(`--ui-sidebar-action-columns`,e)),f.clear(),u.clear(),i.forEach((e,t)=>{e.abort();let n=t.querySelector(`:scope > [data-ui-sidebar-group-content]`);n&&(n.hidden=t.dataset.state!==`open`)}),i.clear()})},_e={target:W.target,action:W.action,class:W.class},ve=new Set,J=e=>e instanceof CustomEvent&&e.detail&&typeof e.detail==`object`?e.detail:{},ye=(()=>{let e=!1;return()=>{if(e||typeof document>`u`)return;let t=e=>t=>{if(t.target instanceof Element&&t.target.hasAttribute(`data-ui-sidebar`))return;let n=J(t);ve.forEach(t=>{(!n.id||n.id===t.id)&&t.perform(n.action??e,n.trigger,n.event)})};document.addEventListener(`ui:sidebar-open`,t(`open`)),document.addEventListener(`ui:sidebar-close`,t(`close`)),document.addEventListener(`ui:sidebar-toggle`,t(`toggle`)),e=!0}})(),Y=()=>{let c=null,l,u=null,f=null,m=new Map,g=`mobile`,v=null,x=null,ie=``,C=null,w=null,T=null,E=null,D=null,O=!1,k=()=>{D!==null&&clearTimeout(D),D=null},A=()=>{if(!c)throw Error(`Sidebar has not been initialized.`);return c},j=()=>A().closest(`[data-ui-app]`),ce=()=>j()?.querySelector(`[data-ui-app-backdrop]`)??null,M=()=>q.getCommittedSnapshot().props,N=()=>q.getCommittedSnapshot().context,P=()=>q.hasTag(`visible`)&&(q.hasTag(`drawer`)||g===`mobile`||q.hasTag(`transitioning`)&&N().transition.presentation===`drawer`),F=()=>P()&&g===`mobile`,I=()=>q.hasTag(`expanded`),le=()=>g===`mobile`&&q.matches(`closing`),L,ue=()=>{let e=M(),t=N().layout.desktopStashed;L===void 0&&(L=t),e.persist&&e.placement!==`top`&&!q.hasTag(`transitioning`)&&L!==t&&(L=t,_(`sidebars`,A().id||e.id,t))},R=e=>{let t=j();e?t?.setAttribute(`data-sidebar-transitioning`,`true`):t?.removeAttribute(`data-sidebar-transitioning`)},z=()=>{let e=document.activeElement;if(!(e instanceof HTMLElement)||!A().contains(e))return;let t=v&&!A().contains(v)?v:Array.from(document.querySelectorAll(`[data-ui-sidebar-toggle]`)).find(e=>!A().contains(e)&&(!e.dataset.target||e.dataset.target===A().id));queueMicrotask(()=>{I()||document.activeElement!==e&&document.activeElement!==document.body||h(t??null,{showIndicator:!1})||e.blur()})},B=()=>{let e=I();document.querySelectorAll(`[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]`).forEach(t=>{t.dataset.target&&t.dataset.target!==A().id||(t.matches(`[data-ui-sidebar-edge]`)||(t.dataset.state=e?`open`:`closed`),t.matches(`[data-ui-sidebar-toggle], [data-ui-sidebar-edge]`)&&(t.setAttribute(`aria-controls`,A().id),t.setAttribute(`aria-expanded`,String(e))))})},V=({reflectControlled:e=!0}={})=>{let t=M(),n=q.hasTag(`visible`),r=I(),i=N().layout.desktopStashed,o=P(),s=q.hasTag(`transitioning`)&&N().transition.presentation===`layout`,c=A(),l=t.placement===`side`&&T?T:N().layout.width,u=t.placement===`top`&&T?T:N().layout.height;e&&d(g===`mobile`?{el:c,schema:U,key:`open`,value:r}:{el:c,schema:U,key:`stashed`,value:i}),c.dataset.state=r?`open`:`closed`,c.dataset.mobileState=g===`mobile`&&(r||le())?`open`:`closed`,c.dataset.desktopState=i?`stashed`:`expanded`,c.dataset.drawerState=o?`open`:`closed`,c.dataset.responsiveMode=g,c.dataset.placement=t.placement,c.dataset.mobilePresentation=t.mobilePresentation,c.dataset.side=t.side,c.hidden=!n&&(g!==`desktop`||t.placement!==`top`),c.toggleAttribute(`inert`,!r),r?c.removeAttribute(`aria-hidden`):c.setAttribute(`aria-hidden`,`true`);let f=!t.resizable||g!==`desktop`||o;c.toggleAttribute(`data-resize-disabled`,f);let p=c.querySelector(`[data-ui-sidebar-resize-handle]`);p?.toggleAttribute(`data-disabled`,f),p?.setAttribute(`aria-disabled`,String(f)),c.querySelector(`[data-ui-sidebar-body]`)?.toggleAttribute(`inert`,!r||C?.collapsed===!0),c.style.setProperty(`--ui-sidebar-width`,l),s?c.style.setProperty(`--ui-sidebar-body-width`,l):c.style.removeProperty(`--ui-sidebar-body-width`),u&&c.style.setProperty(`--ui-sidebar-height`,u);let m=j();m&&(!s&&!C?.moving&&!C?.collapsed&&(m.style.setProperty(`--ui-app-sidebar-width`,i?`0px`:l),m.style.setProperty(`--ui-app-sidebar-progress`,i?`0`:`1`)),u&&m.style.setProperty(`--ui-app-sidebar-height`,u),m.dataset.sidebarState=i&&!s?`stashed`:`expanded`,m.dataset.sidebarSide=t.side,!q.hasTag(`transitioning`)&&!C?.moving&&!C?.collapsed&&(m.style.gridTemplateColumns=``));let h=ce();if(h){let e=F();h.hidden=!e,h.dataset.state=e?`open`:`closed`}!o&&!q.hasTag(`transitioning`)&&(a(c),c.style.opacity=``,c.style.transform=``,h&&(a(h),h.style.opacity=``)),F()?E??=ae(c.ownerDocument):(E?.(),E=null),document.querySelectorAll(`[data-ui-sidebar-edge]`).forEach(e=>{if(e.dataset.target&&e.dataset.target!==A().id)return;let n=o&&v===e,r=t.edgeReveal&&g===`desktop`&&t.placement===`side`&&i&&(!o||n);e.dataset.state=r?`visible`:`hidden`,e.hidden=!r}),B(),r&&!q.hasTag(`transitioning`)&&x?.refresh(),ue()},H=({context:e})=>{let{presentation:t}=e.transition;R(t===`layout`),A().hidden=!1,t!==`layout`&&V(),F()&&queueMicrotask(()=>{F()&&ne(A(),{showIndicator:!1})})},W=()=>{R(!1),A().dataset.sidebarExiting=`false`,V(),e({el:A(),name:`ui:sidebar-open`,detail:{id:A().id}})},G=({context:e})=>{let{presentation:t}=e.transition;R(t===`layout`),z(),t===`layout`&&(A().dataset.sidebarExiting=`true`),t!==`layout`&&V()},K=()=>{R(!1),A().dataset.sidebarExiting=`false`,V(),e({el:A(),name:`ui:sidebar-close`,detail:{id:A().id}}),v=null},fe=()=>{k(),Ce(),V({reflectControlled:!1}),queueMicrotask(()=>{let e=M();g===`desktop`?e.placement===`top`?q.hasTag(`top`)||q.send({type:`MODE`,mode:`desktop`,placement:`top`,stashed:!1,open:!0}):e.stashed!==N().layout.desktopStashed&&(e.stashed?Z():X()):e.open!==I()&&(e.open?J():Y())})},me=()=>s({el:A(),schema:U}),q=p({schema:U,hooks:de,createMachine:({props:e})=>pe({props:e,mode:g,desktopStashed:e.stashed,effects:{prepareOpen:H,finishOpen:W,prepareClose:G,finishClose:K,sync:V,syncProps:fe}})}),_e=()=>{let e=M();return g===`mobile`?{target:`mobileOpen`,presentation:`drawer`}:e.placement===`top`?null:N().layout.desktopStashed?{target:`desktopDrawer`,presentation:`drawer`}:{target:`desktopExpanded`,presentation:`layout`}},J=e=>{k(),e?.preventDefault(),e?.currentTarget instanceof HTMLElement&&(v=e.currentTarget);let t=_e();t&&q.send({type:`OPEN`,...t})},Y=e=>{k(),e?.preventDefault(),(M().placement!==`top`||g!==`desktop`)&&q.send({type:`CLOSE`,target:g===`mobile`?`mobileClosed`:`desktopStashed`,presentation:P()?`drawer`:`layout`})},X=e=>{if(k(),e?.preventDefault(),g===`mobile`){J(e);return}M().placement===`side`&&q.send({type:`EXPAND`,target:`desktopExpanded`,presentation:`layout`})},Z=e=>{if(k(),e?.preventDefault(),g===`mobile`){Y(e);return}M().placement===`side`&&q.send({type:`STASH`,target:`desktopStashed`,presentation:P()?`drawer`:`layout`})},be=e=>{if(e?.preventDefault(),g===`desktop`){M().placement===`side`&&(N().layout.desktopStashed?X(e):Z(e));return}I()?Y(e):J(e)},xe=(e,t)=>{let n=M(),r=e>=t?`desktop`:`mobile`;if(r===g)return;k(),x?.cancel(),C?.cancel(),C=null,w=null,T=null,g=r;let i=N().layout.desktopStashed;q.send({type:`MODE`,mode:r,placement:n.placement,stashed:i,open:r===`desktop`&&i&&N().layout.desktopDrawerOpen})},Q=o({measure:()=>{if(!c)return null;let e=j()??A();return{width:f??e.getBoundingClientRect().width,breakpoint:se(e)}},apply:e=>{e&&c&&xe(e.width,e.breakpoint)}}),Se=o({measure:()=>{if(!c||!M().resizable)return null;let e=M().placement===`top`?`height`:`width`,t=getComputedStyle(A()),n=(n,r)=>{let i=`--ui-sidebar-resize-${n}-${e}`;if(!t.getPropertyValue(i).trim())return r;let a=m.get(i)?.getBoundingClientRect().width??0;return a>0?a:r};return{min:n(`min`,60),max:n(`max`,1/0)}},apply:e=>{c&&we(e)}}),Ce=()=>{if(!M().resizable){we(null);return}let e=document.createDocumentFragment();for(let t of[`width`,`height`])for(let n of[`min`,`max`]){let r=`--ui-sidebar-resize-${n}-${t}`;if(m.has(r))continue;let i=document.createElement(`div`);i.setAttribute(`aria-hidden`,`true`),i.style.cssText=`position:absolute;visibility:hidden;pointer-events:none;width:var(${r});height:0;inset:0 auto auto 0;`,m.set(r,i),e.append(i),u?.observe(i)}A().append(e),Se.schedule()},we=t=>{let n=M(),r=`${n.resizable}:${n.placement}:${n.side}:${t?.min}:${t?.max}`;if(r===ie)return;ie=r,x?.(),C?.cancel(),C=null,w=null,T=null,x=null;let i=A().querySelector(`[data-ui-sidebar-resize-handle]`);if(!n.resizable||!i||!t)return;let a=n.placement===`top`?`y`:`x`,o=a===`x`?`width`:`height`,s=t=>{let n=t.phase===`start`?`ui:resize-start`:t.phase===`end`?`ui:resize-end`:t.phase===`cancel`?`ui:resize-cancel`:`ui:resize`;e({el:A(),name:n,detail:t})};x=re({element:A(),handle:i,axis:a,direction:n.placement===`side`&&n.side===`right`?`negative`:`positive`,min:t.min,max:t.max,collapseThreshold:n.placement===`side`?56:void 0,disabled:()=>!M().resizable||g!==`desktop`||P()||!I(),onStart:e=>{if(k(),T=`${Math.round(e[o])}px`,C?.moving&&!C.collapsed)C.begin(e[o]);else{C?.cancel();let e=j(),t=A().querySelector(`[data-ui-sidebar-body]`);C=n.placement===`side`&&e&&t?oe({region:A(),content:t,axis:`x`,direction:n.side===`right`?`negative`:`positive`,collapsedSize:0,track:{element:e,property:`--ui-app-sidebar-width`,value:e=>`${e}px`},render:()=>{c&&V({reflectControlled:!1})}}):null}s(e)},onResize:e=>{T=`${Math.round(e[o])}px`,A().toggleAttribute(`data-collapse-preview`,e.collapsed),C?.update(e[o],e.collapsed),V({reflectControlled:!1}),s(e)},onEnd:e=>{C?.update(e[o],e.collapsed),A().removeAttribute(`data-collapse-preview`),T=null,e.collapsed?(w=C,Z()):(q.send({type:`RESIZE`,[o]:`${Math.round(e[o])}px`}),C?.commit()),s(e)},onCancel:e=>{A().removeAttribute(`data-collapse-preview`),T=null,C?.cancel(),C=null,V({reflectControlled:!1}),s(e)}})},Te=()=>!!(A().querySelector(`:popover-open`)||A().matches(`:hover`)||v?.matches(`:hover`)),Ee=()=>{k(),g===`desktop`&&P()&&v?.matches(`[data-ui-sidebar-edge]`)&&!Te()&&(D=setTimeout(()=>{D=null,Te()||Y()},250))},De=e=>{if(!(e instanceof MouseEvent)||g!==`mobile`||!I()||e.defaultPrevented||e.button!==0||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)return;let t=e.target instanceof Element?e.target.closest(`a[data-ui-sidebar-item]`):null;t&&A().contains(t)&&t.getAttribute(`aria-disabled`)!==`true`&&(t.hasAttribute(`download`)||t.hasAttribute(`target`)||Y())},$;return $={...q,get id(){return A().id||M().id},get isOpen(){return this.snapshot.current?.tags.includes(`expanded`)??I()},get isDesktop(){return(this.snapshot.current?.context.responsive.mode??g)===`desktop`},get isStashed(){return this.snapshot.current?.context.layout.desktopStashed??N().layout.desktopStashed},get width(){return this.snapshot.current?.context.layout.width??N().layout.width},get height(){return this.snapshot.current?.context.layout.height??N().layout.height},init(){l=y(this),c=this.$el;let e=j()??A();q.connect(this.$el,this.snapshot),A().id||=M().id,ve.add($),ye(),u=new ResizeObserver(t=>{let n=t.find(({target:t})=>t===e);n&&(f=n.contentRect.width,Q.schedule()),M().resizable&&Se.schedule()}),Q.schedule(),u.observe(e),l.add(ee({isEnabled:P,roots:()=>[A()],onDismiss:Y})),t({target:document,event:`keydown`,handler:e=>{e instanceof KeyboardEvent&&(e.key===`Escape`&&(v?.matches(`[data-ui-sidebar-edge]`)&&(D!==null||P())&&(O=!0),k()),P()&&(e.key===`Escape`?Y(e):F()&&te(e,A())))},cleanup:l}),Ce(),l.add(()=>{x?.(),C?.cancel(),C=null}),l.add(k),t({target:A(),event:`pointerenter`,handler:k,cleanup:l}),t({target:A(),event:`pointerleave`,handler:Ee,cleanup:l}),t({target:A(),event:`toggle`,options:{capture:!0},cleanup:l,handler:e=>{e instanceof ToggleEvent&&e.newState===`closed`&&e.target instanceof Element&&e.target.hasAttribute(`popover`)&&Ee()}}),t({target:A(),event:`click`,handler:De,cleanup:l}),ge(A(),l),V()},destroy(){Q.cancel(),Se.cancel(),m.forEach(e=>e.remove()),m.clear(),R(!1),ve.delete($),u?.disconnect(),u=null,E?.(),E=null,q.disconnect(),c=null},transitionSidebar(e){if(e.data.presentation===`layout`){let t=j();if(!t)return n(V);if(w&&e.to===`closing`){let e=w;return w=null,V(),e.commit()}x?.cancel(),C?.cancel(),C=null,T=null,t.style.gridTemplateColumns=``,V(),t.style.setProperty(`--ui-app-sidebar-width`,`calc(clamp(0, var(--ui-app-sidebar-progress), 1) * ${N().layout.width})`),t.dataset.sidebarState=`expanded`;let r=e.to===`opening`;return i(e,{"--ui-app-sidebar-progress":r?[0,1]:[1,0]},{target:t,role:`layout`})}let t=A().dataset.side===`right`?1:-1,a=e.to===`opening`,o=t===1?`translateX(calc(100% + 0.5rem))`:`translateX(calc(-100% - 0.5rem))`,s=i(e,{opacity:a?[0,1]:1,transform:a?[o,`none`]:o},{role:a?`presence`:`presenceExit`}),c=ce();return c&&e.data.mode===`mobile`?r(s,i(e,{opacity:a?[0,1]:0},{target:c,role:a?`feedback`:`feedbackExit`})):s},get root(){let e=this.snapshot.current?.props??me();return S({inputs:[b({part:he.parts.root,props:e,className:e.class}),{"data-ui-sidebar":``}]})},open:J,close:Y,toggle:be,stash:Z,expand:X,isExpanded:I,perform(e,t,n){if(t?.matches(`[data-ui-sidebar-edge]`)){if(n?.type===`pointerleave`){O=!1,Ee();return}if(n?.type===`pointerenter`){k(),v=t,!I()&&!O&&(D=setTimeout(()=>{D=null,J()},150));return}}(e===`open`||e===`toggle`&&!I())&&(v=t??null),{open:J,close:Y,toggle:be,stash:Z,expand:X}[e]?.()},syncToggles:B},$},X=()=>{let e={};return{get props(){return e},init(){e=s({el:this.$el,schema:_e})},destroy(){},get root(){return S({inputs:[b({part:he.parts.toggle,props:{},className:e.class}),{"data-ui-sidebar-toggle":``,":data-target":()=>e.target,":data-action":()=>e.action,"@click":e=>this.trigger(e)}]})},trigger(t){t?.preventDefault(),document.dispatchEvent(new CustomEvent(`ui:sidebar-toggle`,{detail:{id:e.target||`ui-sidebar`,action:e.action,trigger:this.$el}}))}}},Z=()=>{let e={};return{get props(){return e},init(){e=s({el:this.$el,schema:_e})},destroy(){},get root(){return S({inputs:[b({part:he.parts.edge,props:{side:this.$el.dataset.side||`left`},className:e.class}),{"data-ui-sidebar-edge":``,":data-target":()=>e.target,"@pointerenter":e=>this.trigger(e),"@pointerleave":e=>this.leave(e),"@focus":e=>this.trigger(e),"@click":e=>this.trigger(e)}]})},trigger(t){t?.preventDefault(),!(t?.type===`focus`&&g(this.$el))&&document.dispatchEvent(new CustomEvent(`ui:sidebar-open`,{detail:{id:e.target||`ui-sidebar`,action:`open`,trigger:this.$el,event:t}}))},leave(t){document.dispatchEvent(new CustomEvent(`ui:sidebar-close`,{detail:{id:e.target||`ui-sidebar`,action:`close`,trigger:this.$el,event:t}}))}}},be=e=>{v(`UiSidebar`,Y)(e),v(`UiSidebarEdge`,Z)(e),v(`UiSidebarToggle`,X)(e)},xe=new WeakSet,Q=e=>{xe.has(e)||(xe.add(e),ie(e),be(e))};export{Y as UiSidebar,Z as UiSidebarEdge,X as UiSidebarToggle,Q as default,Q as registerSidebar};
2
+ //# sourceMappingURL=sidebar-b0T3yohM.js.map