@vireo-ai/trellis-ui 0.1.27 → 0.1.30

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 (203) hide show
  1. package/package.json +7 -2
  2. package/packages/client/src/components/checkbox/styles.css +7 -0
  3. package/packages/client/src/components/field/styles.css +71 -0
  4. package/packages/client/src/components/file-upload/styles.css +68 -0
  5. package/packages/client/src/components/radio/styles.css +2 -8
  6. package/packages/client/src/components/tabs/styles.css +73 -0
  7. package/packages/client/src/components/toast/styles.css +123 -0
  8. package/packages/client/src/styles/components.css +15 -4
  9. package/packages/client/src/styles/generated/theme-fonts.css +1 -1
  10. package/packages/client/src/styles/generated/theme-palette.css +77 -1462
  11. package/packages/client/src/styles/generated/theme-runtime.css +1 -1390
  12. package/packages/client/src/styles/generated-sources.css +1 -1
  13. package/packages/client/src/styles/recipes/action.css +175 -0
  14. package/packages/client/src/styles/recipes/disabled.css +16 -0
  15. package/packages/client/src/styles/recipes/option.css +123 -0
  16. package/packages/client/src/styles/recipes/selection.css +78 -0
  17. package/packages/client/src/styles/theme.css +45 -719
  18. package/packages/client/types/assets/full-runtime.generated.d.ts +1 -1
  19. package/packages/client/types/capabilities/motion.entry.generated.d.ts +3 -0
  20. package/packages/client/types/capabilities/resizable.entry.generated.d.ts +3 -0
  21. package/packages/client/types/capabilities/sortable.entry.generated.d.ts +3 -0
  22. package/packages/client/types/component-api.d.ts +10 -10
  23. package/packages/client/types/components/accordion/index.d.ts +7 -4
  24. package/packages/client/types/components/accordion/machine.d.ts +51 -57
  25. package/packages/client/types/components/card/contract.d.ts +5 -2
  26. package/packages/client/types/components/checkbox/contract.d.ts +17 -7
  27. package/packages/client/types/components/common.d.ts +6 -1
  28. package/packages/client/types/components/date-picker/index.d.ts +7 -4
  29. package/packages/client/types/components/date-picker/machine.d.ts +46 -362
  30. package/packages/client/types/components/dropdown/index.d.ts +7 -4
  31. package/packages/client/types/components/dropdown/machine.d.ts +5 -67
  32. package/packages/client/types/components/field/index.d.ts +1 -2
  33. package/packages/client/types/components/file-upload/index.d.ts +7 -4
  34. package/packages/client/types/components/file-upload/machine.d.ts +17 -39
  35. package/packages/client/types/components/input/index.d.ts +1 -2
  36. package/packages/client/types/components/modal/index.d.ts +6 -2
  37. package/packages/client/types/components/modal/machine.d.ts +5 -103
  38. package/packages/client/types/components/panels/index.d.ts +6 -2
  39. package/packages/client/types/components/panels/machine.d.ts +59 -81
  40. package/packages/client/types/components/radio/contract.d.ts +12 -4
  41. package/packages/client/types/components/runtime.d.ts +10 -10
  42. package/packages/client/types/components/scroll-area/index.d.ts +1 -2
  43. package/packages/client/types/components/select/index.d.ts +7 -4
  44. package/packages/client/types/components/select/machine.d.ts +37 -331
  45. package/packages/client/types/components/sidebar/index.d.ts +6 -2
  46. package/packages/client/types/components/sidebar/machine.d.ts +11 -47
  47. package/packages/client/types/components/slider/index.d.ts +1 -2
  48. package/packages/client/types/components/switch/index.d.ts +1 -2
  49. package/packages/client/types/components/tabs/contract.d.ts +6 -2
  50. package/packages/client/types/components/tabs/index.d.ts +7 -4
  51. package/packages/client/types/components/tabs/machine.d.ts +11 -29
  52. package/packages/client/types/components/toast/index.d.ts +6 -2
  53. package/packages/client/types/components/toast/machine.d.ts +7 -66
  54. package/packages/client/types/core.d.ts +2 -2
  55. package/packages/client/types/runtime/alpine-data.d.ts +6 -0
  56. package/packages/client/types/runtime/alpine-machine.d.ts +3 -8
  57. package/packages/client/types/runtime/engine/request.d.ts +1 -0
  58. package/packages/client/types/runtime/index.d.ts +7 -3
  59. package/packages/client/types/runtime/transition-coordinator.d.ts +41 -7
  60. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.css +638 -3428
  61. package/packages/server/trellis_ui/static/trellis_ui/assets/css/trellis.min.css +1 -1
  62. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/build-metadata.json +492 -376
  63. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js +2 -0
  64. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/motion.js.map +1 -0
  65. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js +2 -0
  66. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/resizable.js.map +1 -0
  67. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js +2 -0
  68. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/capabilities/sortable.js.map +1 -0
  69. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js +2 -0
  70. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-data-DZ17j0jc.js.map +1 -0
  71. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BS13dbK4.js +2 -0
  72. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/alpine-machine-BS13dbK4.js.map +1 -0
  73. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-wMoceguq.js +2 -0
  74. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-motion-wMoceguq.js.map +1 -0
  75. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js +2 -0
  76. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-resizable-C6LKIbpv.js.map +1 -0
  77. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BurX5yRd.js +3 -0
  78. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/capability-sortable-BurX5yRd.js.map +1 -0
  79. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js → common-BOd_thC-.js} +2 -2
  80. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{common-DAxHCzB-.js.map → common-BOd_thC-.js.map} +1 -1
  81. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-BuKz1uWk.js +2 -0
  82. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{core-DjoX4J-6.js.map → core-BuKz1uWk.js.map} +1 -1
  83. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js +2 -0
  84. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/drag-and-drop-BV6kB47L.js.map +1 -0
  85. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-9sxiaVVI.js +2 -0
  86. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-9sxiaVVI.js.map +1 -0
  87. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BehM6Hle.js +2 -0
  88. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BehM6Hle.js.map +1 -0
  89. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BhPEF6oz.js +2 -0
  90. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{entry.generated-xcXw-cEl.js.map → entry.generated-BhPEF6oz.js.map} +1 -1
  91. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BqOi_tIN.js +2 -0
  92. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BqOi_tIN.js.map +1 -0
  93. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BuXeU4zt.js +2 -0
  94. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BuXeU4zt.js.map +1 -0
  95. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-MH09sf.js +2 -0
  96. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C-MH09sf.js.map +1 -0
  97. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3h9Czzn.js +2 -0
  98. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C3h9Czzn.js.map +1 -0
  99. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C5Bueyfb.js +2 -0
  100. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C5Bueyfb.js.map +1 -0
  101. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CCka3fIO.js +2 -0
  102. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CCka3fIO.js.map +1 -0
  103. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSxEK8G9.js +2 -0
  104. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CSxEK8G9.js.map +1 -0
  105. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CoJxfxlc.js +2 -0
  106. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CoJxfxlc.js.map +1 -0
  107. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6cdmqiV.js +2 -0
  108. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-D6cdmqiV.js.map +1 -0
  109. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DBSwLHmm.js +2 -0
  110. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DBSwLHmm.js.map +1 -0
  111. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DEiL4FhC.js +2 -0
  112. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DEiL4FhC.js.map +1 -0
  113. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DRqap77P.js +2 -0
  114. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DRqap77P.js.map +1 -0
  115. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dzw2Rg5F.js +2 -0
  116. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Dzw2Rg5F.js.map +1 -0
  117. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EtCfrZfr.js +2 -0
  118. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-EtCfrZfr.js.map +1 -0
  119. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-cMueWbY7.js +2 -0
  120. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-cMueWbY7.js.map +1 -0
  121. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js +2 -0
  122. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-Dqut4h89.js.map +1 -0
  123. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js +3 -0
  124. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-BRaHJwNf.js.map +1 -0
  125. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-BUswpsNx.js +2 -0
  126. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/{semantic-observer-9VxzbQBi.js.map → semantic-observer-BUswpsNx.js.map} +1 -1
  127. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-pMBGbBZH.js +4 -0
  128. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/stream-pMBGbBZH.js.map +1 -0
  129. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.js +2 -0
  130. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-H3t7UHMs.js.map +1 -0
  131. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/accordion.js +1 -1
  132. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/checkbox.js +1 -1
  133. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/date-picker.js +1 -1
  134. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/dropdown.js +1 -1
  135. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/field.js +1 -1
  136. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/file-upload.js +1 -1
  137. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js +2 -1
  138. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/index.js.map +1 -0
  139. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/input.js +1 -1
  140. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/modal.js +1 -1
  141. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/panels.js +1 -1
  142. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/radio.js +1 -1
  143. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/scroll-area.js +1 -1
  144. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/select.js +1 -1
  145. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/sidebar.js +1 -1
  146. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/slider.js +1 -1
  147. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/switch.js +1 -1
  148. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/table.js +1 -1
  149. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/tabs.js +1 -1
  150. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/components/toast.js +1 -1
  151. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/core.js +1 -1
  152. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js +1 -1
  153. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/index.js.map +1 -1
  154. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/logical-entry-manifest.json +232 -127
  155. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.js +9 -9
  156. package/packages/server/trellis_ui/static/trellis_ui/assets/js/trellis.min.js +9 -9
  157. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/core-DjoX4J-6.js +0 -2
  158. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js +0 -2
  159. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-5kNpQFGr.js.map +0 -1
  160. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js +0 -2
  161. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-B85L90Qp.js.map +0 -1
  162. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js +0 -2
  163. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-BGCM6LAW.js.map +0 -1
  164. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js +0 -2
  165. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Bc-uE56r.js.map +0 -1
  166. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js +0 -2
  167. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-C6ldtrmy.js.map +0 -1
  168. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js +0 -2
  169. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CPWoMIwn.js.map +0 -1
  170. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js +0 -2
  171. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-Co0bLLZE.js.map +0 -1
  172. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js +0 -2
  173. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-CtyXH8zf.js.map +0 -1
  174. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js +0 -2
  175. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DGrOItIx.js.map +0 -1
  176. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js +0 -2
  177. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DHMRhcYF.js.map +0 -1
  178. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js +0 -2
  179. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DgmqZx_W.js.map +0 -1
  180. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js +0 -2
  181. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DoOgk6l4.js.map +0 -1
  182. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js +0 -2
  183. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DxUOcPkU.js.map +0 -1
  184. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js +0 -2
  185. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DyIjCOhT.js.map +0 -1
  186. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DzG9Lai4.js +0 -3
  187. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-DzG9Lai4.js.map +0 -1
  188. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js +0 -2
  189. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-K6qKowpw.js.map +0 -1
  190. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js +0 -2
  191. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-oAIExc1V.js.map +0 -1
  192. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wHjTggCn.js +0 -2
  193. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-wHjTggCn.js.map +0 -1
  194. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/entry.generated-xcXw-cEl.js +0 -2
  195. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js +0 -2
  196. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/machine-CX3wFSoV.js.map +0 -1
  197. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js +0 -3
  198. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/motion-Bpttk6iZ.js.map +0 -1
  199. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js +0 -2
  200. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/resizable-BixtYF9M.js.map +0 -1
  201. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/semantic-observer-9VxzbQBi.js +0 -2
  202. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js +0 -4
  203. package/packages/server/trellis_ui/static/trellis_ui/assets/js/esm/chunks/ui-xTjuF3uC.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{a as e,c as t,d as n,l as r,o as i,p as a,r as o,s,t as c}from"./motion-Bpttk6iZ.js";import{a as l,f as u,l as d,n as f,u as ee}from"./codecs-Cb1ns_47.js";import{r as p,t as m}from"./dom-qAeVl7dc.js";import{a as h,n as te,t as g}from"./machine-CX3wFSoV.js";import{n as _,t as v}from"./styles-TfvwVPGw.js";import{t as y}from"./merge-bindings-C8ewA_FD.js";import{t as ne}from"./dismissable-layer-BROE-Ln2.js";import{o as re,r as ie}from"./focus-scope-DtaPVNl5.js";import{t as b}from"./resizable-BixtYF9M.js";import{n as ae,t as oe}from"./scroll-lock-DOw7dmi1.js";import{E as x,T as S,u as C}from"./common-DAxHCzB-.js";var w=e=>{let t=getComputedStyle(e).getPropertyValue(`--ui-shell-sidebar-breakpoint`),n=Number.parseFloat(t);return Number.isFinite(n)?n:1/0},T=[`left`,`right`],E=[`side`,`top`],D=[`none`,`mobile`,`desktop`,`both`],O=[`toggle`,`open`,`close`,`stash`,`expand`],k=[`a`,`button`],A=[`ghost`,`surface`],j=[`neutral`,`accent`],M=S,N=C,P={id:u.default(`ui-sidebar`),placement:d(E,`side`),side:d(T,`left`),surface:d(M,`inherit`),elevation:d(N,`none`),drawerElevation:d(N,`2`),divider:f.default(!0),sticky:f.default(!0),collapse:d(D,`mobile`),open:f,stashed:f,persist:f.default(!0),edgeReveal:f.default(!0),resizable:f,class:u};d(k,`a`),d(A,`ghost`),d(j,`neutral`),f.default(!0);var F={target:u,icon:u.default(`side_panel`),label:u.default(`Toggle sidebar`),action:d(O,`toggle`),class:u},I=({context:e})=>({mode:e.responsive.mode,presentation:e.transition.presentation,width:e.layout.width,height:e.layout.height}),se=[h({name:`opening`,state:`opening`,project:I,onDone:`OPENING_DONE`,onError:`OPENING_ERROR`}),h({name:`closing`,state:`closing`,project:I,onDone:`CLOSING_DONE`,onError:`CLOSING_ERROR`})],L=(e,t)=>typeof e.target==`string`?e.target:t,R=e=>e.presentation===`layout`?`layout`:`drawer`,ce=({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 g({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=L(t,`mobileOpen`);return{context:{...e,layout:{...e.layout,desktopStashed:n===`desktopDrawer`?!0:n===`desktopExpanded`?!1:e.layout.desktopStashed,desktopDrawerOpen:n===`desktopDrawer`||n===`mobileOpen`&&e.layout.desktopStashed},transition:{target:n,presentation:R(t)}}}},beginClose:({context:e,event:t})=>{let n=L(t,`mobileClosed`),r=n===`desktopStashed`||n===`mobileClosed`&&e.layout.desktopStashed;return{context:{...e,layout:{...e.layout,desktopStashed:n===`desktopStashed`?!0:e.layout.desktopStashed,desktopDrawerOpen:r?!1:e.layout.desktopDrawerOpen},transition:{target:n,presentation:R(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}})},z=v({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-x-0`,`data-[responsive-mode=desktop]:z-auto data-[responsive-mode=desktop]:w-[var(--ui-sidebar-width,var(--spacing-sidebar-width))] data-[responsive-mode=desktop]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=closed]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=open]:translate-x-0`,`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-x-0 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:x(`--ui-sidebar-resting-elevation`),drawerElevation:x(`--ui-sidebar-drawer-elevation`),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-x-0 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`,divider:!0,side:`left`,sticky:!0}},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`},item:{base:[`group/sidebar-item flex h-control-md w-full min-w-0 select-none items-center gap-2 rounded-control-md px-2`,`border border-transparent text-left text-sm font-medium outline-none`,`cursor-default`,`data-disabled:pointer-events-none`],variants:{variant:{ghost:``,surface:`data-current:border-transparent data-current:shadow-none`},color:{neutral:``,accent:``},withActions:{true:`pr-9`,false:``}},defaults:{variant:`ghost`,color:`neutral`,withActions:!1}},itemRow:{base:`group/sidebar-item-row relative min-w-0`},itemIcon:{base:`size-icon-xs shrink-0 fill-current text-icon`,variants:{position:{leading:``,trailing:`ml-auto`}},defaults:{position:`leading`}},itemLabel:{base:`min-w-0 flex-1`},itemBadge:{base:`ml-auto shrink-0 rounded-control-sm bg-interaction-hover px-1.5 py-0.5 text-xs text-surface-ink-muted`},itemActions:{base:`absolute right-1 top-1/2 z-10 flex -translate-y-1/2 items-center gap-1`},group:{base:`relative grid gap-sidebar-content-gap`},groupSummary:{base:[`block h-control-md cursor-default select-none list-none rounded-control-md text-xs font-medium text-surface-ink-muted outline-none`,`hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring`,`[&::-webkit-details-marker]:hidden`],variants:{hasActions:{true:``,false:``}},defaults:{hasActions:!1}},groupSummaryInner:{base:`flex h-full min-w-0 items-center gap-2 px-2`},groupHeading:{base:`flex min-h-control-md min-w-0 select-none items-center gap-2 px-2 py-1 cursor-default`},groupIcon:{base:`size-icon-xs shrink-0 fill-current text-icon group-open/sidebar-group:rotate-90`},groupLabel:{base:`min-w-0 flex-1`},groupHeadingLabel:{base:`min-w-0 flex-1`},groupActions:{base:`ml-auto flex shrink-0 items-center gap-1`},groupContent:{base:`grid gap-sidebar-content-gap`},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 fill-current 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 border-transparent outline-none group-data-[responsive-mode=desktop]/sidebar:block`,`hover:border-intent-neutral-edge-hover`,`focus-visible:ui-focus-ring-inset`,`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 group-data-[placement=top]/sidebar:border-b-edge-divider group-data-[placement=top]/sidebar:border-r-0 group-data-[placement=top]/sidebar:border-l-0`],variants:{side:{left:`right-0 border-r-edge-divider`,right:`left-0 border-l-edge-divider`}},defaults:{side:`left`}}}}}),B={target:F.target,action:F.action,class:F.class},V=new Set,H=e=>e instanceof CustomEvent&&e.detail&&typeof e.detail==`object`?e.detail:{},le=(()=>{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=H(t);V.forEach(t=>{(!n.id||n.id===t.id)&&t.perform(n.action??e,n.trigger)})};document.addEventListener(`ui:sidebar-open`,t(`open`)),document.addEventListener(`ui:sidebar-close`,t(`close`)),document.addEventListener(`ui:sidebar-toggle`,t(`toggle`)),e=!0}})(),U=()=>{let c=null,u=[],d=null,f=`mobile`,h=null,g=!1,v=null,b=null,x=!1,S=()=>{if(!c)throw Error(`Sidebar has not been initialized.`);return c},C=()=>S().closest(`[data-ui-app]`),T=()=>C()?.querySelector(`[data-ui-app-backdrop]`)??null,E=()=>J.getSnapshot().props,D=()=>J.getSnapshot().context,O=()=>J.hasTag(`visible`)&&(J.hasTag(`drawer`)||f===`mobile`||J.hasTag(`transitioning`)&&D().transition.presentation===`drawer`),k=()=>O()&&f===`mobile`,A=()=>J.hasTag(`expanded`),j=()=>f===`mobile`&&J.matches(`closing`),M=()=>`trellis-ui-sidebar:${S().id||E().id}:stashed`,N=e=>{if(!e.persist)return null;try{let t=localStorage.getItem(`trellis-ui-sidebar:${S().id||e.id}:stashed`);return t===null?null:t===`true`}catch{return null}},F=()=>{let e=E();if(!(!e.persist||e.placement===`top`))try{localStorage.setItem(M(),D().layout.desktopStashed?`true`:`false`)}catch{}},I=()=>{let e=document.activeElement;if(!(e instanceof HTMLElement)||!S().contains(e))return;let t=h??Array.from(document.querySelectorAll(`[data-ui-sidebar-toggle]`)).find(e=>!S().contains(e)&&(!e.dataset.target||e.dataset.target===S().id));t&&document.contains(t)?t.focus({preventScroll:!0}):e.blur()},L=()=>{let e=A();document.querySelectorAll(`[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]`).forEach(t=>{t.dataset.target&&t.dataset.target!==S().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`,S().id),t.setAttribute(`aria-expanded`,String(e))))})},R=({reflectControlled:e=!0}={})=>{let t=E(),n=J.hasTag(`visible`),r=A(),i=D().layout.desktopStashed,a=O(),o=S();e&&ee(f===`mobile`?{el:o,schema:P,key:`open`,value:r}:{el:o,schema:P,key:`stashed`,value:i}),o.dataset.state=r?`open`:`closed`,o.dataset.mobileState=f===`mobile`&&(r||j())?`open`:`closed`,o.dataset.desktopState=i?`stashed`:`expanded`,o.dataset.drawerState=a?`open`:`closed`,o.dataset.responsiveMode=f,o.dataset.placement=t.placement,o.dataset.side=t.side,o.hidden=!n&&!(f===`desktop`&&t.placement===`top`),o.toggleAttribute(`inert`,!r),r?o.removeAttribute(`aria-hidden`):o.setAttribute(`aria-hidden`,`true`);let c=!t.resizable||f!==`desktop`||a;o.toggleAttribute(`data-resize-disabled`,c);let l=o.querySelector(`[data-ui-sidebar-resize-handle]`);l?.toggleAttribute(`data-disabled`,c),l?.setAttribute(`aria-disabled`,String(c)),o.style.setProperty(`--ui-sidebar-width`,D().layout.width),D().layout.height&&o.style.setProperty(`--ui-sidebar-height`,D().layout.height);let u=C();u&&(u.style.setProperty(`--ui-app-sidebar-width`,D().layout.width),D().layout.height&&u.style.setProperty(`--ui-app-sidebar-height`,D().layout.height),u.dataset.sidebarState=i?`stashed`:`expanded`,u.dataset.sidebarSide=t.side,!x&&!J.hasTag(`transitioning`)&&(u.style.gridTemplateColumns=``));let d=T();if(d){let e=k();d.hidden=!e,d.dataset.state=e?`open`:`closed`}!a&&!J.hasTag(`transitioning`)&&(s(o),o.style.opacity=``,o.style.transform=``,d&&(s(d),d.style.opacity=``));let p=k();p&&!g&&(oe(),g=!0),!p&&g&&(ae(),g=!1),document.querySelectorAll(`[data-ui-sidebar-edge]`).forEach(e=>{if(e.dataset.target&&e.dataset.target!==S().id)return;let n=a&&h===e,r=t.edgeReveal&&f===`desktop`&&t.placement===`side`&&i&&(!a||n);e.dataset.state=r?`visible`:`hidden`,e.hidden=!r}),L(),F()},B=(e,t)=>{let n=C();if(t!==`layout`||!n){x=!1,v=null,b=null;return}let r=getComputedStyle(n).gridTemplateColumns;x=!0;let i=r.split(` `).map(Number.parseFloat);if(i.length!==3||i.some(e=>!Number.isFinite(e))){v=null,b=null;return}let[a=0,o=0]=i,s=Number.parseFloat(getComputedStyle(S()).width);v=E().side===`right`?o:a,b=e?0:Number.isFinite(s)?s:S().getBoundingClientRect().width;let c=`${v}px`;n.style.gridTemplateColumns=E().side===`right`?`minmax(0, 1fr) ${c} min-content`:`${c} minmax(0, 1fr) min-content`,n.offsetWidth},H=e=>{B(!1,e?.event?.presentation??(O()?`drawer`:`layout`)),S().hidden=!1,R(),k()&&queueMicrotask(()=>{k()&&ie(S())})},U=()=>{x=!1,R(),p({el:S(),name:`ui:sidebar-open`,detail:{id:S().id}})},W=e=>{B(!0,e?.event?.presentation??(O()?`drawer`:`layout`)),I(),R()},G=()=>{x=!1,R(),p({el:S(),name:`ui:sidebar-close`,detail:{id:S().id}}),h=null},K=()=>{R({reflectControlled:!1}),queueMicrotask(()=>{let e=E();f===`desktop`?e.placement===`top`?J.hasTag(`top`)||J.send({type:`MODE`,mode:`desktop`,placement:`top`,stashed:!1,open:!0}):e.stashed!==D().layout.desktopStashed&&(e.stashed?Q():Z()):e.open!==A()&&(e.open?Y():X())})},q=()=>l({el:S(),schema:P}),J=te({schema:P,hooks:se,createMachine:({props:e})=>ce({props:e,mode:f,desktopStashed:N(e)??e.stashed,effects:{prepareOpen:H,finishOpen:U,prepareClose:W,finishClose:G,sync:R,syncProps:K}})}),ue=()=>{let e=E();return f===`mobile`?{target:`mobileOpen`,presentation:`drawer`}:e.placement===`top`?null:D().layout.desktopStashed?{target:`desktopDrawer`,presentation:`drawer`}:{target:`desktopExpanded`,presentation:`layout`}},Y=e=>{e?.preventDefault(),e?.currentTarget instanceof HTMLElement&&(h=e.currentTarget);let t=ue();t&&J.send({type:`OPEN`,...t})},X=e=>{e?.preventDefault(),!(E().placement===`top`&&f===`desktop`)&&J.send({type:`CLOSE`,target:f===`mobile`?`mobileClosed`:`desktopStashed`,presentation:O()?`drawer`:`layout`})},Z=e=>{if(e?.preventDefault(),f===`mobile`){Y(e);return}E().placement===`side`&&J.send({type:`EXPAND`,target:`desktopExpanded`,presentation:`layout`})},Q=e=>{if(e?.preventDefault(),f===`mobile`){X(e);return}E().placement===`side`&&J.send({type:`STASH`,target:`desktopStashed`,presentation:O()?`drawer`:`layout`})},de=e=>{if(e?.preventDefault(),!(E().placement===`top`&&f===`desktop`)){if(f===`desktop`&&E().placement===`side`&&D().layout.desktopStashed&&!O()){Z(e);return}A()?X(e):Y(e)}},fe=e=>{let t=E(),n=e>=w(C()??S())?`desktop`:`mobile`;if(n===f)return;f=n;let r=D().layout.desktopStashed;J.send({type:`MODE`,mode:n,placement:t.placement,stashed:r,open:n===`desktop`&&r&&D().layout.desktopDrawerOpen})},pe=e=>{let t=e instanceof CustomEvent?e.detail:null;!t||f!==`desktop`||O()||(E().placement===`top`&&Number.isFinite(t.height)?(J.send({type:`RESIZE`,height:`${Math.round(t.height)}px`}),S().style.setProperty(`--ui-sidebar-height`,`${Math.round(t.height)}px`),C()?.style.setProperty(`--ui-app-sidebar-height`,`${Math.round(t.height)}px`)):Number.isFinite(t.width)&&(J.send({type:`RESIZE`,width:`${Math.round(t.width)}px`}),S().style.setProperty(`--ui-sidebar-width`,`${Math.round(t.width)}px`),C()?.style.setProperty(`--ui-app-sidebar-width`,`${Math.round(t.width)}px`)))},me=e=>{if(!(e instanceof PointerEvent)||f!==`desktop`||!O()||!h?.matches(`[data-ui-sidebar-edge]`))return;let t=e.relatedTarget;t instanceof Node&&(S().contains(t)||h.contains(t))||X(e)},$;return $={...J,get id(){return S().id||E().id},get isOpen(){return A()},get isDesktop(){return f===`desktop`},get isStashed(){return D().layout.desktopStashed},get width(){return D().layout.width},get height(){return D().layout.height},init(){c=this.$el;let e=C()??S();f=e.getBoundingClientRect().width>=w(e)?`desktop`:`mobile`,J.connect(this.$el,this.snapshot),S().id||=E().id,V.add($),le(),d=new ResizeObserver(t=>fe(t[0]?.contentRect.width??e.clientWidth)),d.observe(e),u.push(ne({isEnabled:O,roots:()=>[S()],onDismiss:X})),m({target:document,event:`keydown`,handler:e=>{!(e instanceof KeyboardEvent)||!O()||(e.key===`Escape`?X(e):k()&&re(e,S()))},cleanup:u}),m({target:S(),event:`ui:resize`,handler:pe,cleanup:u}),m({target:S(),event:`ui:resize-end`,handler:pe,cleanup:u}),m({target:S(),event:`pointerleave`,handler:me,cleanup:u}),S().querySelectorAll(`details[data-ui-sidebar-group]`).forEach(e=>m({target:e,event:`toggle`,handler:()=>{e.dataset.state=e.open?`open`:`closed`,p({el:e,name:`ui:sidebar-group-change`,detail:{open:e.open}})},cleanup:u})),R()},destroy(){V.delete($),d?.disconnect(),d=null,u.forEach(e=>e()),u=[],g&&ae(),g=!1,J.disconnect(),c=null},transitionSidebar(s){if(s.data.presentation===`layout`){let o=C(),c=v,l=b;if(v=null,b=null,!o||c===null||l===null)return r();if(t())return o.style.gridTemplateColumns=``,r();if(c===l)return r();let u=()=>{};return i(o,()=>{let t=a(c),r=e=>{let t=`${e}px`;o.style.gridTemplateColumns=E().side===`right`?`minmax(0, 1fr) ${t} min-content`:`${t} minmax(0, 1fr) min-content`};return u=t.on(`change`,r),r(c),n(t,l,{duration:e.moderate.duration,ease:[.77,0,.175,1]})},new Set([`layout`]),s.signal,()=>{u(),o.style.gridTemplateColumns=``})}let c=S().dataset.side===`right`?1:-1,l=s.to===`opening`,u=c===1?`translateX(calc(100% + 0.5rem))`:`translateX(calc(-100% - 0.5rem))`,d=o(s).animate({opacity:l?[0,1]:1,transform:l?[u,`none`]:u}).speed(`moderate`),f=T();return f&&s.data.mode===`mobile`&&(d=d.with(f,{opacity:l?[0,1]:0}).speed(`fast`)),d.play()},get root(){let e=this.snapshot.current?.props??q();return y({inputs:[_({part:z.parts.root,props:e,className:e.class}),{"data-ui-sidebar":``}]})},open:Y,close:X,toggle:de,stash:Q,expand:Z,isExpanded:A,perform(e,t){h=t??null,{open:Y,close:X,toggle:de,stash:Q,expand:Z}[e]?.()},syncToggles:L},$},W=()=>{let e={};return{get props(){return e},init(){e=l({el:this.$el,schema:B})},destroy(){},get root(){return y({inputs:[_({part:z.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}}))}}},G=()=>{let e={};return{get props(){return e},init(){e=l({el:this.$el,schema:B})},destroy(){},get root(){return y({inputs:[_({part:z.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(),document.dispatchEvent(new CustomEvent(`ui:sidebar-open`,{detail:{id:e.target||`ui-sidebar`,action:`open`,trigger:this.$el}}))},leave(t){let n=t instanceof PointerEvent?t.relatedTarget:null,r=document.getElementById(e.target||`ui-sidebar`);n instanceof Node&&r?.contains(n)||document.dispatchEvent(new CustomEvent(`ui:sidebar-close`,{detail:{id:e.target||`ui-sidebar`,action:`close`,trigger:this.$el}}))}}},K=e=>{e.data(`UiSidebar`,()=>U()),e.data(`UiSidebarEdge`,()=>G()),e.data(`UiSidebarToggle`,()=>W())},q=new WeakSet,J=e=>{q.has(e)||(q.add(e),c(e),b(e),K(e))};export{W as i,U as n,G as r,J as t};
2
- //# sourceMappingURL=entry.generated-DxUOcPkU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-DxUOcPkU.js","names":[],"sources":["../../../../../../../../client/src/runtime/shell-breakpoint.ts","../../../../../../../../client/src/components/sidebar/contract.ts","../../../../../../../../client/src/components/sidebar/machine.ts","../../../../../../../../client/src/components/sidebar/styles.ts","../../../../../../../../client/src/components/sidebar/index.ts","../../../../../../../../client/src/components/sidebar/entry.generated.ts"],"sourcesContent":["const shellBreakpointPixels = (reference: HTMLElement): number => {\n const value = getComputedStyle(reference).getPropertyValue('--ui-shell-sidebar-breakpoint');\n const pixels = Number.parseFloat(value);\n return Number.isFinite(pixels) ? pixels : Number.POSITIVE_INFINITY;\n};\n\nexport {shellBreakpointPixels};\n","import {bool, oneOf, string, type SchemaToProps} from '../../runtime';\nimport {\n ELEVATION_REFERENCES,\n SURFACE_REFERENCES,\n type ElevationReference,\n type SurfaceReference,\n} from '../common';\n\nconst SIDEBAR_SIDES = ['left', 'right'] as const;\nconst SIDEBAR_PLACEMENTS = ['side', 'top'] as const;\nconst SIDEBAR_COLLAPSES = ['none', 'mobile', 'desktop', 'both'] as const;\nconst SIDEBAR_TOGGLE_ACTIONS = ['toggle', 'open', 'close', 'stash', 'expand'] as const;\nconst SIDEBAR_ITEM_AS = ['a', 'button'] as const;\nconst SIDEBAR_ITEM_VARIANTS = ['ghost', 'surface'] as const;\nconst SIDEBAR_ITEM_COLORS = ['neutral', 'accent'] as const;\nconst SIDEBAR_SURFACES = SURFACE_REFERENCES;\nconst SIDEBAR_ELEVATIONS = ELEVATION_REFERENCES;\n\nconst sidebarSchema = {\n id: string.default('ui-sidebar'),\n placement: oneOf(SIDEBAR_PLACEMENTS, 'side'),\n side: oneOf(SIDEBAR_SIDES, 'left'),\n surface: oneOf(SIDEBAR_SURFACES, 'inherit'),\n elevation: oneOf(SIDEBAR_ELEVATIONS, 'none'),\n drawerElevation: oneOf(SIDEBAR_ELEVATIONS, '2'),\n divider: bool.default(true),\n sticky: bool.default(true),\n collapse: oneOf(SIDEBAR_COLLAPSES, 'mobile'),\n open: bool,\n stashed: bool,\n persist: bool.default(true),\n edgeReveal: bool.default(true),\n resizable: bool,\n class: string,\n};\n\nconst sidebarItemSchema = {\n as: oneOf(SIDEBAR_ITEM_AS, 'a'),\n variant: oneOf(SIDEBAR_ITEM_VARIANTS, 'ghost'),\n color: oneOf(SIDEBAR_ITEM_COLORS, 'neutral'),\n href: string,\n current: bool,\n disabled: bool,\n icon: string,\n iconTrailing: string,\n badge: string,\n class: string,\n};\n\nconst sidebarGroupSchema = {\n heading: string,\n expandable: bool,\n expanded: bool.default(true),\n icon: string,\n class: string,\n};\n\nconst sidebarToggleSchema = {\n target: string,\n icon: string.default('side_panel'),\n label: string.default('Toggle sidebar'),\n action: oneOf(SIDEBAR_TOGGLE_ACTIONS, 'toggle'),\n class: string,\n};\n\nconst sidebarPanelSchema = {\n class: string,\n};\n\nconst sidebarNavSchema = {\n label: string,\n labelled: string,\n class: string,\n};\n\ntype SidebarProps = SchemaToProps<typeof sidebarSchema>;\ntype SidebarToggleAction = typeof SIDEBAR_TOGGLE_ACTIONS[number];\ntype SidebarCollapse = typeof SIDEBAR_COLLAPSES[number];\ntype SidebarItemColor = typeof SIDEBAR_ITEM_COLORS[number];\ntype SidebarItemVariant = typeof SIDEBAR_ITEM_VARIANTS[number];\ntype SidebarSide = typeof SIDEBAR_SIDES[number];\ntype SidebarPlacement = typeof SIDEBAR_PLACEMENTS[number];\ntype SidebarSurface = SurfaceReference;\ntype SidebarElevation = ElevationReference;\n\nexport {\n SIDEBAR_COLLAPSES,\n SIDEBAR_ITEM_AS,\n SIDEBAR_ITEM_COLORS,\n SIDEBAR_ITEM_VARIANTS,\n SIDEBAR_ELEVATIONS,\n SIDEBAR_SIDES,\n SIDEBAR_PLACEMENTS,\n SIDEBAR_TOGGLE_ACTIONS,\n SIDEBAR_SURFACES,\n sidebarGroupSchema,\n sidebarItemSchema,\n sidebarNavSchema,\n sidebarPanelSchema,\n sidebarSchema,\n sidebarToggleSchema,\n};\nexport type {\n SidebarCollapse,\n SidebarElevation,\n SidebarItemColor,\n SidebarItemVariant,\n SidebarPlacement,\n SidebarProps,\n SidebarSide,\n SidebarSurface,\n SidebarToggleAction,\n};\n","import {createMachine, type Machine, type MachineEventObject} from '../../runtime/state-machine';\nimport {defineHook} from '../../runtime/transition-coordinator';\nimport type {SidebarPlacement, SidebarProps} from './contract';\n\ntype SidebarMode = 'mobile' | 'desktop';\ntype SidebarPresentation = 'drawer' | 'layout';\ntype SidebarTarget = 'mobileClosed' | 'mobileOpen' | 'desktopExpanded' | 'desktopStashed' | 'desktopDrawer' | 'desktopTop';\n\ntype SidebarContext = {\n responsive: {mode: SidebarMode};\n layout: {desktopStashed: boolean; desktopDrawerOpen: boolean; width: string; height: string};\n transition: {target: SidebarTarget; presentation: SidebarPresentation};\n};\n\ntype SidebarMachineEffects = {\n prepareOpen(): void;\n finishOpen(): void;\n prepareClose(): void;\n finishClose(): void;\n sync(): void;\n syncProps(): void;\n};\n\ntype CreateSidebarMachineOptions = {\n props: SidebarProps;\n mode: SidebarMode;\n desktopStashed: boolean;\n effects: SidebarMachineEffects;\n};\n\nconst projectTransition = ({context}: {context: Readonly<SidebarContext>}) => ({\n mode: context.responsive.mode,\n presentation: context.transition.presentation,\n width: context.layout.width,\n height: context.layout.height,\n});\n\nconst openingHook = defineHook({\n name: 'opening',\n state: 'opening',\n project: projectTransition,\n onDone: 'OPENING_DONE',\n onError: 'OPENING_ERROR',\n});\n\nconst closingHook = defineHook({\n name: 'closing',\n state: 'closing',\n project: projectTransition,\n onDone: 'CLOSING_DONE',\n onError: 'CLOSING_ERROR',\n});\n\nconst sidebarHooks = [openingHook, closingHook] as const;\n\nconst targetFrom = (event: MachineEventObject, fallback: SidebarTarget): SidebarTarget => (\n typeof event.target === 'string' ? event.target as SidebarTarget : fallback\n);\nconst presentationFrom = (event: MachineEventObject): SidebarPresentation => event.presentation === 'layout' ? 'layout' : 'drawer';\n\nconst createSidebarMachine = ({props, mode, desktopStashed, effects}: CreateSidebarMachineOptions): Machine<SidebarContext, SidebarProps> => {\n const initial: SidebarTarget = mode === 'mobile'\n ? props.open ? 'mobileOpen' : 'mobileClosed'\n : props.placement === 'top' ? 'desktopTop' : desktopStashed ? 'desktopStashed' : 'desktopExpanded';\n\n const beginOpen = {target: 'opening', reduce: 'beginOpen', effects: 'prepareOpen'} as const;\n const beginClose = {target: 'closing', reduce: 'beginClose', effects: 'prepareClose'} as const;\n const syncProps = {reduce: 'replaceProps', effects: 'syncProps'} as const;\n\n return createMachine<SidebarContext, SidebarProps>({\n initial,\n on: {\n MODE: [\n {target: 'desktopTop', guard: 'toTop', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopDrawer', guard: 'toDesktopDrawer', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopStashed', guard: 'toDesktopStashed', reduce: 'setMode', effects: 'sync'},\n {target: 'desktopExpanded', guard: 'toDesktop', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileOpen', guard: 'toMobileOpen', reduce: 'setMode', effects: 'sync'},\n {target: 'mobileClosed', reduce: 'setMode', effects: 'sync'},\n ],\n RESIZE: {reduce: 'resize', effects: 'sync'},\n },\n states: {\n mobileClosed: {tags: ['mobile', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n mobileOpen: {tags: ['mobile', 'visible', 'expanded', 'open'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, PROPS_CHANGED: syncProps}},\n desktopExpanded: {tags: ['desktop', 'visible', 'expanded', 'open', 'layout'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, OPEN: {}, EXPAND: {}, PROPS_CHANGED: syncProps}},\n desktopStashed: {tags: ['desktop', 'stashed', 'closed'], on: {OPEN: beginOpen, EXPAND: beginOpen, TOGGLE: beginOpen, PROPS_CHANGED: syncProps}},\n desktopDrawer: {tags: ['desktop', 'stashed', 'visible', 'expanded', 'open', 'drawer'], on: {CLOSE: beginClose, STASH: beginClose, TOGGLE: beginClose, EXPAND: beginOpen, PROPS_CHANGED: syncProps}},\n desktopTop: {tags: ['desktop', 'top', 'visible', 'expanded', 'open', 'layout'], on: {PROPS_CHANGED: syncProps}},\n opening: {\n tags: ['visible', 'expanded', 'transitioning'],\n on: {\n OPENING_DONE: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n OPENING_ERROR: [\n {target: 'mobileOpen', guard: 'targetsMobileOpen', effects: 'finishOpen'},\n {target: 'desktopDrawer', guard: 'targetsDesktopDrawer', effects: 'finishOpen'},\n {target: 'desktopTop', guard: 'targetsDesktopTop', effects: 'finishOpen'},\n {target: 'desktopExpanded', effects: 'finishOpen'},\n ],\n CLOSE: beginClose,\n STASH: beginClose,\n TOGGLE: beginClose,\n PROPS_CHANGED: syncProps,\n },\n },\n closing: {\n tags: ['visible', 'transitioning'],\n on: {\n CLOSING_DONE: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n CLOSING_ERROR: [\n {target: 'mobileClosed', guard: 'targetsMobileClosed', effects: 'finishClose'},\n {target: 'desktopStashed', effects: 'finishClose'},\n ],\n OPEN: beginOpen,\n EXPAND: beginOpen,\n TOGGLE: beginOpen,\n PROPS_CHANGED: syncProps,\n },\n },\n },\n }, {\n props,\n context: {\n responsive: {mode},\n layout: {\n desktopStashed,\n desktopDrawerOpen: false,\n width: 'var(--spacing-sidebar-width)',\n height: '',\n },\n transition: {target: initial, presentation: initial === 'desktopExpanded' || initial === 'desktopTop' ? 'layout' : 'drawer'},\n },\n reducers: {\n beginOpen: ({context, event}) => {\n const target = targetFrom(event, 'mobileOpen');\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopDrawer'\n ? true\n : target === 'desktopExpanded' ? false : context.layout.desktopStashed,\n desktopDrawerOpen: target === 'desktopDrawer'\n || (target === 'mobileOpen' && context.layout.desktopStashed),\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n beginClose: ({context, event}) => {\n const target = targetFrom(event, 'mobileClosed');\n const closesDesktopDrawer = target === 'desktopStashed'\n || (target === 'mobileClosed' && context.layout.desktopStashed);\n return {context: {\n ...context,\n layout: {\n ...context.layout,\n desktopStashed: target === 'desktopStashed' ? true : context.layout.desktopStashed,\n desktopDrawerOpen: closesDesktopDrawer ? false : context.layout.desktopDrawerOpen,\n },\n transition: {target, presentation: presentationFrom(event)},\n }};\n },\n setMode: ({context, event}) => ({context: {...context, responsive: {mode: event.mode === 'desktop' ? 'desktop' : 'mobile'}}}),\n replaceProps: ({context, event}) => ({\n props: event.props as SidebarProps,\n context,\n }),\n resize: ({context, event}) => ({context: {\n ...context,\n layout: {\n ...context.layout,\n width: typeof event.width === 'string' ? event.width : context.layout.width,\n height: typeof event.height === 'string' ? event.height : context.layout.height,\n },\n }}),\n },\n guards: {\n toTop: ({event}) => event.mode === 'desktop' && event.placement === 'top',\n toDesktopDrawer: ({event}) => event.mode === 'desktop' && event.stashed === true && event.open === true,\n toDesktopStashed: ({event}) => event.mode === 'desktop' && event.stashed === true,\n toDesktop: ({event}) => event.mode === 'desktop',\n toMobileOpen: ({event}) => event.mode === 'mobile' && event.open === true,\n targetsMobileOpen: ({context}) => context.transition.target === 'mobileOpen',\n targetsMobileClosed: ({context}) => context.transition.target === 'mobileClosed',\n targetsDesktopDrawer: ({context}) => context.transition.target === 'desktopDrawer',\n targetsDesktopTop: ({context}) => context.transition.target === 'desktopTop',\n },\n effects: {\n prepareOpen: effects.prepareOpen,\n finishOpen: effects.finishOpen,\n prepareClose: effects.prepareClose,\n finishClose: effects.finishClose,\n sync: effects.sync,\n syncProps: effects.syncProps,\n },\n });\n};\n\nexport {createSidebarMachine, sidebarHooks};\nexport type {CreateSidebarMachineOptions, SidebarContext, SidebarMachineEffects, SidebarMode, SidebarPresentation, SidebarTarget};\n","import {defineStyles} from '../../runtime';\nimport {elevationReferenceClasses} from '../common';\n\nconst SIDEBAR_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-resting-elevation');\nconst SIDEBAR_DRAWER_ELEVATION_CLASSES = elevationReferenceClasses('--ui-sidebar-drawer-elevation');\n\nconst sidebarStyles = defineStyles({definition: {\n component: 'ui.sidebar',\n parts: {\n root: {\n base: [\n 'fixed inset-y-2 z-dialog flex min-h-0 w-[var(--spacing-sidebar-drawer-width)] flex-col overflow-hidden rounded-overlay-md',\n 'border-separator outline-none',\n 'data-[drawer-state=open]:bg-surface',\n 'data-[mobile-state=closed]:-translate-x-full data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:z-auto data-[responsive-mode=desktop]:w-[var(--ui-sidebar-width,var(--spacing-sidebar-width))] data-[responsive-mode=desktop]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=closed]:translate-x-0 data-[responsive-mode=desktop]:data-[mobile-state=open]:translate-x-0',\n 'data-[responsive-mode=desktop]:data-[desktop-state=expanded]:inset-y-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:w-full data-[responsive-mode=desktop]:data-[desktop-state=expanded]:rounded-none',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=closed]:data-[sidebar-exiting=false]:hidden',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:fixed',\n 'data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:z-dialog data-[responsive-mode=desktop]:data-[desktop-state=stashed]:data-[drawer-state=open]:h-auto',\n '[grid-area:sidebar]',\n 'data-[placement=top]:data-[responsive-mode=desktop]:relative data-[placement=top]:data-[responsive-mode=desktop]:inset-auto data-[placement=top]:data-[responsive-mode=desktop]:z-auto data-[placement=top]:data-[responsive-mode=desktop]:h-[var(--ui-sidebar-height,auto)] data-[placement=top]:data-[responsive-mode=desktop]:w-full data-[placement=top]:data-[responsive-mode=desktop]:max-w-none data-[placement=top]:data-[responsive-mode=desktop]:translate-x-0 data-[placement=top]:data-[responsive-mode=desktop]:flex-row data-[placement=top]:data-[responsive-mode=desktop]:overflow-visible',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]]:flex-1',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content]>[data-ui-scroll-area]]:overflow-visible data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-content-inner]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-nav]]:items-center',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-item]]:w-auto',\n 'data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:flex data-[placement=top]:data-[responsive-mode=desktop]:[&_[data-ui-sidebar-footer]]:items-center',\n ],\n variants: {\n elevation: SIDEBAR_ELEVATION_CLASSES,\n drawerElevation: SIDEBAR_DRAWER_ELEVATION_CLASSES,\n divider: {\n true: 'data-[placement=side][data-side=left]:border-r-edge-divider data-[placement=side][data-side=right]:border-l-edge-divider data-[placement=top]:border-b-edge-divider',\n false: '',\n },\n side: {\n left: 'left-2 border-r-edge-divider data-[responsive-mode=desktop]:data-[desktop-state=expanded]:left-auto',\n right: 'right-2 border-l-edge-divider data-[mobile-state=closed]:translate-x-full data-[mobile-state=open]:translate-x-0 data-[responsive-mode=desktop]:data-[desktop-state=expanded]:right-auto',\n },\n sticky: {\n true: 'data-[responsive-mode=desktop]:sticky data-[responsive-mode=desktop]:h-screen',\n false: 'data-[responsive-mode=desktop]:relative data-[responsive-mode=desktop]:h-auto data-[responsive-mode=desktop]:data-[sticky=false]:relative data-[responsive-mode=desktop]:data-[sticky=False]:relative data-[responsive-mode=desktop]:data-[sticky=false]:h-auto data-[responsive-mode=desktop]:data-[sticky=False]:h-auto',\n },\n },\n defaults: {\n elevation: 'none',\n drawerElevation: '2',\n divider: true,\n side: 'left',\n sticky: true,\n },\n },\n header: {\n base: 'flex min-h-control-xlg shrink-0 items-center gap-sidebar-header-gap px-sidebar-header-padding-inline py-sidebar-header-padding-block',\n },\n content: {\n base: [\n 'min-h-0 flex-1 overflow-hidden',\n ],\n },\n contentInner: {\n base: [\n 'grid min-w-0 content-start gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n '[&>[data-ui-separator]]:-mx-sidebar-content-padding-inline [&>[data-ui-separator]]:w-auto',\n ],\n },\n footer: {\n base: 'grid shrink-0 gap-sidebar-content-gap px-sidebar-content-padding-inline py-sidebar-content-padding-block',\n },\n nav: {\n base: 'grid gap-sidebar-content-gap',\n },\n item: {\n base: [\n 'group/sidebar-item flex h-control-md w-full min-w-0 select-none items-center gap-2 rounded-control-md px-2',\n 'border border-transparent text-left text-sm font-medium outline-none',\n 'cursor-default',\n 'data-disabled:pointer-events-none',\n ],\n variants: {\n variant: {\n ghost: '',\n surface: 'data-current:border-transparent data-current:shadow-none',\n },\n color: {\n neutral: '',\n accent: '',\n },\n withActions: {\n true: 'pr-9',\n false: '',\n },\n },\n defaults: {\n variant: 'ghost',\n color: 'neutral',\n withActions: false,\n },\n },\n itemRow: {\n base: 'group/sidebar-item-row relative min-w-0',\n },\n itemIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon',\n variants: {\n position: {\n leading: '',\n trailing: 'ml-auto',\n },\n },\n defaults: {\n position: 'leading',\n },\n },\n itemLabel: {\n base: 'min-w-0 flex-1',\n },\n itemBadge: {\n base: 'ml-auto shrink-0 rounded-control-sm bg-interaction-hover px-1.5 py-0.5 text-xs text-surface-ink-muted',\n },\n itemActions: {\n base: 'absolute right-1 top-1/2 z-10 flex -translate-y-1/2 items-center gap-1',\n },\n group: {\n base: 'relative grid gap-sidebar-content-gap',\n },\n groupSummary: {\n base: [\n 'block h-control-md cursor-default select-none list-none rounded-control-md text-xs font-medium text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n '[&::-webkit-details-marker]:hidden',\n ],\n variants: {\n hasActions: {\n true: '',\n false: '',\n },\n },\n defaults: {\n hasActions: false,\n },\n },\n groupSummaryInner: {\n base: 'flex h-full min-w-0 items-center gap-2 px-2',\n },\n groupHeading: {\n base: 'flex min-h-control-md min-w-0 select-none items-center gap-2 px-2 py-1 cursor-default',\n },\n groupIcon: {\n base: 'size-icon-xs shrink-0 fill-current text-icon group-open/sidebar-group:rotate-90',\n },\n groupLabel: {\n base: 'min-w-0 flex-1',\n },\n groupHeadingLabel: {\n base: 'min-w-0 flex-1',\n },\n groupActions: {\n base: 'ml-auto flex shrink-0 items-center gap-1',\n },\n groupContent: {\n base: 'grid gap-sidebar-content-gap',\n },\n toggle: {\n base: [\n 'inline-flex h-control-md w-control-md shrink-0 items-center justify-center rounded-control-md text-surface-ink-muted outline-none',\n 'hover:bg-interaction-hover hover:text-surface-ink focus-visible:ui-focus-ring',\n ],\n },\n toggleIcon: {\n base: 'size-icon fill-current text-current',\n },\n edge: {\n base: [\n 'fixed inset-y-0 z-30 hidden w-4 bg-transparent outline-none data-[state=visible]:block',\n 'focus-visible:ui-focus-ring-inset',\n 'data-[state=hidden]:hidden',\n ],\n variants: {\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n resizeHandle: {\n base: [\n 'absolute inset-y-0 z-10 hidden w-3 cursor-col-resize touch-none border-transparent outline-none group-data-[responsive-mode=desktop]/sidebar:block',\n 'hover:border-intent-neutral-edge-hover',\n 'focus-visible:ui-focus-ring-inset',\n 'data-disabled:hidden',\n 'group-data-[placement=top]/sidebar:inset-x-0 group-data-[placement=top]/sidebar:bottom-0 group-data-[placement=top]/sidebar:top-auto group-data-[placement=top]/sidebar:h-3 group-data-[placement=top]/sidebar:w-auto group-data-[placement=top]/sidebar:cursor-row-resize group-data-[placement=top]/sidebar:border-b-edge-divider group-data-[placement=top]/sidebar:border-r-0 group-data-[placement=top]/sidebar:border-l-0',\n ],\n variants: {\n side: {\n left: 'right-0 border-r-edge-divider',\n right: 'left-0 border-l-edge-divider',\n },\n },\n defaults: {\n side: 'left',\n },\n },\n },\n}});\n\nexport {sidebarStyles};\n","import type Alpine from 'alpinejs';\nimport {animate, motionValue} from 'motion';\n\nimport {\n type AlpineMachine,\n createAlpineMachine,\n reflectSchemaProp,\n type TrellisAlpineComponent,\n} from '@client/runtime';\nimport {decodeProps, type SchemaToProps} from '@client/runtime/codecs';\nimport {addDismissableLayer} from '@client/runtime/dismissable-layer';\nimport {type ResizeEvent} from '@client/runtime/drag-and-drop';\nimport {focusFirst, trapFocus} from '@client/runtime/focus-scope';\nimport {mergeBindings, type BindingObject} from '@client/runtime/merge-bindings';\nimport {lockDocumentScroll, unlockDocumentScroll} from '@client/runtime/scroll-lock';\nimport {shellBreakpointPixels} from '@client/runtime/shell-breakpoint';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {\n createMotionPlan,\n shouldReduceMotion,\n speeds,\n type MotionHandle,\n type MotionTransitionSubject,\n} from '@client/motion';\nimport {noopHandle} from '@client/motion/animate';\nimport {ownMotion} from '@client/motion/owned';\nimport {replaceMotion} from '@client/motion/registry';\nimport {addListener, dispatch, type CleanupStack} from '@client/utils';\nimport {sidebarSchema, sidebarToggleSchema, type SidebarProps, type SidebarToggleAction} from './contract';\nimport {createSidebarMachine, sidebarHooks, type SidebarContext, type SidebarMode, type SidebarTarget} from './machine';\nimport {sidebarStyles} from './styles';\n\ntype SidebarController = {\n readonly id: string;\n isExpanded(): boolean;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n};\n\ntype SidebarEventDetail = {id?: string; action?: SidebarToggleAction; trigger?: HTMLElement | null};\nconst togglePropsSchema = {target: sidebarToggleSchema.target, action: sidebarToggleSchema.action, class: sidebarToggleSchema.class};\ntype SidebarToggleProps = SchemaToProps<typeof togglePropsSchema>;\ntype SidebarEdgeProps = SidebarToggleProps;\n\n/** Public Alpine API for `ui.sidebar`. @public */\ninterface UiSidebarApi {\n /** Sidebar id used by external controls. */\n readonly id: string;\n /** Whether the sidebar is fully open or currently opening. */\n readonly isOpen: boolean;\n /** Whether the observed shell is at or above the theme-generated shell breakpoint. */\n readonly isDesktop: boolean;\n /** Whether side placement is persistently stashed on desktop. */\n readonly isStashed: boolean;\n /** Current side-placement track width. */\n readonly width: string;\n /** Current top-placement track height. */\n readonly height: string;\n /** Opens the responsive drawer or temporarily reveals a stashed desktop sidebar. */\n open(event?: Event): void;\n /** Closes the responsive drawer or stashes an expanded desktop sidebar. */\n close(event?: Event): void;\n /** Reverses the current visibility intent, including an in-flight transition. */\n toggle(event?: Event): void;\n /** Permanently removes side placement from the desktop layout track. */\n stash(event?: Event): void;\n /** Permanently restores side placement to the desktop layout track. */\n expand(event?: Event): void;\n}\n\ntype SidebarData = AlpineMachine<SidebarContext, SidebarProps, typeof sidebarHooks> & UiSidebarApi & {\n readonly root: BindingObject;\n init(): void;\n destroy(): void;\n perform(action: SidebarToggleAction, trigger?: HTMLElement | null): void;\n syncToggles(): void;\n isExpanded(): boolean;\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle;\n};\n\ntype SidebarMotionTransition = MotionTransitionSubject & Readonly<{\n data: {mode: SidebarMode; presentation: 'drawer' | 'layout'};\n to: string;\n}>;\n\nconst controllers = new Set<SidebarController>();\n\nconst eventDetail = (event: Event): SidebarEventDetail => event instanceof CustomEvent && event.detail && typeof event.detail === 'object'\n ? event.detail as SidebarEventDetail\n : {};\n\nconst registerDocumentListeners = (() => {\n let registered = false;\n return (): void => {\n if (registered || typeof document === 'undefined') return;\n const route = (action: SidebarToggleAction) => (event: Event): void => {\n if (event.target instanceof Element && event.target.hasAttribute('data-ui-sidebar')) return;\n const detail = eventDetail(event);\n controllers.forEach((controller) => {\n if (!detail.id || detail.id === controller.id) controller.perform(detail.action ?? action, detail.trigger);\n });\n };\n document.addEventListener('ui:sidebar-open', route('open'));\n document.addEventListener('ui:sidebar-close', route('close'));\n document.addEventListener('ui:sidebar-toggle', route('toggle'));\n registered = true;\n };\n})();\n\nconst UiSidebar = (): TrellisAlpineComponent<SidebarData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupStack = [];\n let resizeObserver: ResizeObserver | null = null;\n let responsiveMode: SidebarMode = 'mobile';\n let activeTrigger: HTMLElement | null = null;\n let hasScrollLock = false;\n let layoutTrackFrom: number | null = null;\n let layoutTrackTo: number | null = null;\n let holdingLayout = false;\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('Sidebar has not been initialized.');\n return rootEl;\n };\n const appEl = (): HTMLElement | null => root().closest<HTMLElement>('[data-ui-app]');\n const backdropEl = (): HTMLElement | null => appEl()?.querySelector<HTMLElement>('[data-ui-app-backdrop]') ?? null;\n const currentProps = (): Readonly<SidebarProps> => bridge.getSnapshot().props;\n const context = (): Readonly<SidebarContext> => bridge.getSnapshot().context;\n const target = (): SidebarTarget => context().transition.target;\n const isDrawer = (): boolean => bridge.hasTag('visible') && (\n bridge.hasTag('drawer')\n || responsiveMode === 'mobile'\n || (bridge.hasTag('transitioning') && context().transition.presentation === 'drawer')\n );\n const isModalDrawer = (): boolean => isDrawer() && responsiveMode === 'mobile';\n const isExpanded = (): boolean => bridge.hasTag('expanded');\n const isMobileDrawerClosing = (): boolean => responsiveMode === 'mobile' && bridge.matches('closing');\n\n const storageKey = (): string => `trellis-ui-sidebar:${root().id || currentProps().id}:stashed`;\n const storedStashed = (props: SidebarProps): boolean | null => {\n if (!props.persist) return null;\n try {\n const value = localStorage.getItem(`trellis-ui-sidebar:${root().id || props.id}:stashed`);\n return value === null ? null : value === 'true';\n } catch { return null; }\n };\n const persist = (): void => {\n const props = currentProps();\n if (!props.persist || props.placement === 'top') return;\n try { localStorage.setItem(storageKey(), context().layout.desktopStashed ? 'true' : 'false'); } catch { /* storage is optional */ }\n };\n\n const restoreFocus = (): void => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !root().contains(active)) return;\n const fallback = activeTrigger ?? Array.from(document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle]'))\n .find((el) => !root().contains(el) && (!el.dataset.target || el.dataset.target === root().id));\n if (fallback && document.contains(fallback)) fallback.focus({preventScroll: true});\n else active.blur();\n };\n\n const syncToggles = (): void => {\n const expanded = isExpanded();\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-toggle], [data-ui-sidebar-state-icon], [data-ui-sidebar-edge]').forEach((el) => {\n if (el.dataset.target && el.dataset.target !== root().id) return;\n if (!el.matches('[data-ui-sidebar-edge]')) el.dataset.state = expanded ? 'open' : 'closed';\n if (el.matches('[data-ui-sidebar-toggle], [data-ui-sidebar-edge]')) {\n el.setAttribute('aria-controls', root().id);\n el.setAttribute('aria-expanded', String(expanded));\n }\n });\n };\n\n const sync = ({reflectControlled = true}: {reflectControlled?: boolean} = {}): void => {\n const props = currentProps();\n const visible = bridge.hasTag('visible');\n const expanded = isExpanded();\n const stashed = context().layout.desktopStashed;\n const drawer = isDrawer();\n const el = root();\n if (reflectControlled) {\n if (responsiveMode === 'mobile') {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'open', value: expanded});\n } else {\n reflectSchemaProp({el, schema: sidebarSchema, key: 'stashed', value: stashed});\n }\n }\n el.dataset.state = expanded ? 'open' : 'closed';\n el.dataset.mobileState = responsiveMode === 'mobile' && (expanded || isMobileDrawerClosing()) ? 'open' : 'closed';\n el.dataset.desktopState = stashed ? 'stashed' : 'expanded';\n el.dataset.drawerState = drawer ? 'open' : 'closed';\n el.dataset.responsiveMode = responsiveMode;\n el.dataset.placement = props.placement;\n el.dataset.side = props.side;\n el.hidden = !visible && !(responsiveMode === 'desktop' && props.placement === 'top');\n el.toggleAttribute('inert', !expanded);\n if (expanded) el.removeAttribute('aria-hidden'); else el.setAttribute('aria-hidden', 'true');\n const resizeDisabled = !props.resizable || responsiveMode !== 'desktop' || drawer;\n el.toggleAttribute('data-resize-disabled', resizeDisabled);\n const resizeHandle = el.querySelector<HTMLElement>('[data-ui-sidebar-resize-handle]');\n resizeHandle?.toggleAttribute('data-disabled', resizeDisabled);\n resizeHandle?.setAttribute('aria-disabled', String(resizeDisabled));\n el.style.setProperty('--ui-sidebar-width', context().layout.width);\n if (context().layout.height) el.style.setProperty('--ui-sidebar-height', context().layout.height);\n\n const app = appEl();\n if (app) {\n app.style.setProperty('--ui-app-sidebar-width', context().layout.width);\n if (context().layout.height) app.style.setProperty('--ui-app-sidebar-height', context().layout.height);\n app.dataset.sidebarState = stashed ? 'stashed' : 'expanded';\n app.dataset.sidebarSide = props.side;\n if (!holdingLayout && !bridge.hasTag('transitioning')) app.style.gridTemplateColumns = '';\n }\n const backdrop = backdropEl();\n if (backdrop) {\n const modalDrawer = isModalDrawer();\n backdrop.hidden = !modalDrawer;\n backdrop.dataset.state = modalDrawer ? 'open' : 'closed';\n }\n if (!drawer && !bridge.hasTag('transitioning')) {\n replaceMotion(el);\n el.style.opacity = '';\n el.style.transform = '';\n if (backdrop) {\n replaceMotion(backdrop);\n backdrop.style.opacity = '';\n }\n }\n const modalDrawer = isModalDrawer();\n if (modalDrawer && !hasScrollLock) { lockDocumentScroll(); hasScrollLock = true; }\n if (!modalDrawer && hasScrollLock) { unlockDocumentScroll(); hasScrollLock = false; }\n document.querySelectorAll<HTMLElement>('[data-ui-sidebar-edge]').forEach((edge) => {\n if (edge.dataset.target && edge.dataset.target !== root().id) return;\n const ownsEdgeReveal = drawer && activeTrigger === edge;\n const show = props.edgeReveal && responsiveMode === 'desktop' && props.placement === 'side' && stashed && (!drawer || ownsEdgeReveal);\n edge.dataset.state = show ? 'visible' : 'hidden';\n edge.hidden = !show;\n });\n syncToggles();\n persist();\n };\n\n const captureLayout = (stashed: boolean, presentation?: unknown): void => {\n const app = appEl();\n if (presentation !== 'layout' || !app) {\n holdingLayout = false;\n layoutTrackFrom = null;\n layoutTrackTo = null;\n return;\n }\n const columns = getComputedStyle(app).gridTemplateColumns;\n holdingLayout = true;\n const tracks = columns.split(' ').map(Number.parseFloat);\n if (tracks.length !== 3 || tracks.some((track) => !Number.isFinite(track))) {\n layoutTrackFrom = null;\n layoutTrackTo = null;\n return;\n }\n const [first = 0, second = 0] = tracks;\n const width = Number.parseFloat(getComputedStyle(root()).width);\n layoutTrackFrom = currentProps().side === 'right' ? second : first;\n layoutTrackTo = stashed ? 0 : Number.isFinite(width) ? width : root().getBoundingClientRect().width;\n const track = `${layoutTrackFrom}px`;\n app.style.gridTemplateColumns = currentProps().side === 'right'\n ? `minmax(0, 1fr) ${track} min-content`\n : `${track} minmax(0, 1fr) min-content`;\n void app.offsetWidth;\n };\n const prepareOpen = (scope?: {event?: {presentation?: unknown}}): void => {\n captureLayout(false, scope?.event?.presentation ?? (isDrawer() ? 'drawer' : 'layout'));\n root().hidden = false;\n sync();\n if (isModalDrawer()) queueMicrotask(() => { if (isModalDrawer()) focusFirst(root()); });\n };\n const finishOpen = (): void => {\n holdingLayout = false;\n sync();\n dispatch({el: root(), name: 'ui:sidebar-open', detail: {id: root().id}});\n };\n const prepareClose = (scope?: {event?: {presentation?: unknown}}): void => {\n captureLayout(true, scope?.event?.presentation ?? (isDrawer() ? 'drawer' : 'layout'));\n restoreFocus();\n sync();\n };\n const finishClose = (): void => {\n holdingLayout = false;\n sync();\n dispatch({el: root(), name: 'ui:sidebar-close', detail: {id: root().id}});\n activeTrigger = null;\n };\n\n const syncProps = (): void => {\n sync({reflectControlled: false});\n queueMicrotask(() => {\n const next = currentProps();\n if (responsiveMode === 'desktop') {\n if (next.placement === 'top') {\n if (!bridge.hasTag('top')) bridge.send({type: 'MODE', mode: 'desktop', placement: 'top', stashed: false, open: true});\n } else if (next.stashed !== context().layout.desktopStashed) {\n if (next.stashed) stash(); else expand();\n }\n } else if (next.open !== isExpanded()) {\n if (next.open) open(); else close();\n }\n });\n };\n\n const initialProps = (): SidebarProps => decodeProps({el: root(), schema: sidebarSchema});\n const bridge = createAlpineMachine({\n schema: sidebarSchema,\n hooks: sidebarHooks,\n createMachine: ({props}) => createSidebarMachine({\n props,\n mode: responsiveMode,\n desktopStashed: storedStashed(props) ?? props.stashed,\n effects: {prepareOpen, finishOpen, prepareClose, finishClose, sync, syncProps},\n }),\n });\n\n const desiredOpenTarget = (): {target: SidebarTarget; presentation: 'drawer' | 'layout'} | null => {\n const props = currentProps();\n if (responsiveMode === 'mobile') return {target: 'mobileOpen', presentation: 'drawer'};\n if (props.placement === 'top') return null;\n return context().layout.desktopStashed\n ? {target: 'desktopDrawer', presentation: 'drawer'}\n : {target: 'desktopExpanded', presentation: 'layout'};\n };\n const open = (event?: Event): void => {\n event?.preventDefault();\n if (event?.currentTarget instanceof HTMLElement) activeTrigger = event.currentTarget;\n const desired = desiredOpenTarget();\n if (desired) bridge.send({type: 'OPEN', ...desired});\n };\n const close = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n bridge.send({type: 'CLOSE', target: responsiveMode === 'mobile' ? 'mobileClosed' : 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const expand = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { open(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'EXPAND', target: 'desktopExpanded', presentation: 'layout'});\n };\n const stash = (event?: Event): void => {\n event?.preventDefault();\n if (responsiveMode === 'mobile') { close(event); return; }\n if (currentProps().placement === 'side') bridge.send({type: 'STASH', target: 'desktopStashed', presentation: isDrawer() ? 'drawer' : 'layout'});\n };\n const toggle = (event?: Event): void => {\n event?.preventDefault();\n if (currentProps().placement === 'top' && responsiveMode === 'desktop') return;\n if (responsiveMode === 'desktop' && currentProps().placement === 'side' && context().layout.desktopStashed && !isDrawer()) { expand(event); return; }\n if (isExpanded()) close(event); else open(event);\n };\n\n const reconcileMode = (width: number): void => {\n const props = currentProps();\n const observed = appEl() ?? root();\n const next: SidebarMode = width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n if (next === responsiveMode) return;\n responsiveMode = next;\n const desktopStashed = context().layout.desktopStashed;\n bridge.send({\n type: 'MODE',\n mode: next,\n placement: props.placement,\n stashed: desktopStashed,\n open: next === 'desktop' && desktopStashed && context().layout.desktopDrawerOpen,\n });\n };\n\n const handleResize = (event: Event): void => {\n const detail = event instanceof CustomEvent ? event.detail as ResizeEvent : null;\n if (!detail || responsiveMode !== 'desktop' || isDrawer()) return;\n const props = currentProps();\n if (props.placement === 'top' && Number.isFinite(detail.height)) {\n bridge.send({type: 'RESIZE', height: `${Math.round(detail.height)}px`});\n root().style.setProperty('--ui-sidebar-height', `${Math.round(detail.height)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-height', `${Math.round(detail.height)}px`);\n } else if (Number.isFinite(detail.width)) {\n bridge.send({type: 'RESIZE', width: `${Math.round(detail.width)}px`});\n root().style.setProperty('--ui-sidebar-width', `${Math.round(detail.width)}px`);\n appEl()?.style.setProperty('--ui-app-sidebar-width', `${Math.round(detail.width)}px`);\n }\n };\n\n const closeEdgeReveal = (event: Event): void => {\n if (!(event instanceof PointerEvent)) return;\n if (responsiveMode !== 'desktop' || !isDrawer()) return;\n if (!activeTrigger?.matches('[data-ui-sidebar-edge]')) return;\n const next = event.relatedTarget;\n if (next instanceof Node && (root().contains(next) || activeTrigger.contains(next))) return;\n close(event);\n };\n\n let component!: TrellisAlpineComponent<SidebarData>;\n component = {\n ...bridge,\n get id() { return root().id || currentProps().id; },\n get isOpen() { return isExpanded(); },\n get isDesktop() { return responsiveMode === 'desktop'; },\n get isStashed() { return context().layout.desktopStashed; },\n get width() { return context().layout.width; },\n get height() { return context().layout.height; },\n init(): void {\n rootEl = this.$el;\n const observed = appEl() ?? root();\n responsiveMode = observed.getBoundingClientRect().width >= shellBreakpointPixels(observed) ? 'desktop' : 'mobile';\n bridge.connect(this.$el, this.snapshot);\n root().id ||= currentProps().id;\n controllers.add(component);\n registerDocumentListeners();\n resizeObserver = new ResizeObserver((entries) => reconcileMode(entries[0]?.contentRect.width ?? observed.clientWidth));\n resizeObserver.observe(observed);\n cleanup.push(addDismissableLayer({isEnabled: isDrawer, roots: () => [root()], onDismiss: close}));\n addListener({target: document, event: 'keydown', handler: (event) => {\n if (!(event instanceof KeyboardEvent) || !isDrawer()) return;\n if (event.key === 'Escape') close(event);\n else if (isModalDrawer()) trapFocus(event, root());\n }, cleanup});\n addListener({target: root(), event: 'ui:resize', handler: handleResize, cleanup});\n addListener({target: root(), event: 'ui:resize-end', handler: handleResize, cleanup});\n addListener({target: root(), event: 'pointerleave', handler: closeEdgeReveal, cleanup});\n root().querySelectorAll<HTMLDetailsElement>('details[data-ui-sidebar-group]').forEach((group) => addListener({target: group, event: 'toggle', handler: () => {\n group.dataset.state = group.open ? 'open' : 'closed';\n dispatch({el: group, name: 'ui:sidebar-group-change', detail: {open: group.open}});\n }, cleanup}));\n sync();\n },\n destroy(): void {\n controllers.delete(component);\n resizeObserver?.disconnect();\n resizeObserver = null;\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n if (hasScrollLock) unlockDocumentScroll();\n hasScrollLock = false;\n bridge.disconnect();\n rootEl = null;\n },\n transitionSidebar(transition: SidebarMotionTransition): MotionHandle {\n if (transition.data.presentation === 'layout') {\n const app = appEl();\n const from = layoutTrackFrom;\n const to = layoutTrackTo;\n layoutTrackFrom = null;\n layoutTrackTo = null;\n if (!app || from === null || to === null) return noopHandle();\n if (shouldReduceMotion()) {\n app.style.gridTemplateColumns = '';\n return noopHandle();\n }\n if (from === to) return noopHandle();\n let unbind = (): void => {};\n return ownMotion(app, () => {\n const value = motionValue(from);\n const apply = (track: number): void => {\n const width = `${track}px`;\n app.style.gridTemplateColumns = currentProps().side === 'right'\n ? `minmax(0, 1fr) ${width} min-content`\n : `${width} minmax(0, 1fr) min-content`;\n };\n unbind = value.on('change', apply);\n apply(from);\n return animate(value, to, {\n duration: speeds.moderate.duration,\n ease: [0.77, 0, 0.175, 1],\n });\n }, new Set(['layout']), transition.signal, () => {\n unbind();\n app.style.gridTemplateColumns = '';\n });\n }\n\n const side = root().dataset.side === 'right' ? 1 : -1;\n const opening = transition.to === 'opening';\n const outside = side === 1\n ? 'translateX(calc(100% + 0.5rem))'\n : 'translateX(calc(-100% - 0.5rem))';\n let plan = createMotionPlan(transition).animate({\n opacity: opening ? [0, 1] : 1,\n transform: opening ? [outside, 'none'] : outside,\n }).speed('moderate');\n const backdrop = backdropEl();\n if (backdrop && transition.data.mode === 'mobile') plan = plan.with(backdrop, {\n opacity: opening ? [0, 1] : 0,\n }).speed('fast');\n return plan.play();\n },\n get root(): BindingObject {\n const props = this.snapshot.current?.props ?? initialProps();\n return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.root, props, className: props.class}), {'data-ui-sidebar': ''}]});\n },\n open, close, toggle, stash, expand,\n isExpanded,\n perform(action, trigger) {\n activeTrigger = trigger ?? null;\n ({open, close, toggle, stash, expand})[action]?.();\n },\n syncToggles,\n };\n return component;\n};\n\nconst UiSidebarToggle = (): TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}> => {\n let props = {} as SidebarToggleProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.toggle, props: {}, className: props.class}), {'data-ui-sidebar-toggle': '', ':data-target': () => props.target, ':data-action': () => props.action, '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-toggle', {detail: {id: props.target || 'ui-sidebar', action: props.action, trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarToggleProps; readonly root: BindingObject; trigger(event?: Event): void}>;\n};\n\nconst UiSidebarEdge = (): TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}> => {\n let props = {} as SidebarEdgeProps;\n return {\n get props() { return props; },\n init() { props = decodeProps({el: this.$el, schema: togglePropsSchema}); },\n destroy() {},\n get root() { return mergeBindings({inputs: [resolveStyle({part: sidebarStyles.parts.edge, props: {side: this.$el.dataset.side || 'left'}, className: props.class}), {'data-ui-sidebar-edge': '', ':data-target': () => props.target, '@pointerenter': (event: Event) => this.trigger(event), '@pointerleave': (event: Event) => this.leave(event), '@focus': (event: Event) => this.trigger(event), '@click': (event: Event) => this.trigger(event)}]}); },\n trigger(event?: Event) {\n event?.preventDefault();\n document.dispatchEvent(new CustomEvent('ui:sidebar-open', {detail: {id: props.target || 'ui-sidebar', action: 'open', trigger: this.$el}}));\n },\n leave(event?: Event) {\n const next = event instanceof PointerEvent ? event.relatedTarget : null;\n const sidebar = document.getElementById(props.target || 'ui-sidebar');\n if (next instanceof Node && sidebar?.contains(next)) return;\n document.dispatchEvent(new CustomEvent('ui:sidebar-close', {detail: {id: props.target || 'ui-sidebar', action: 'close', trigger: this.$el}}));\n },\n } as TrellisAlpineComponent<{props: SidebarEdgeProps; readonly root: BindingObject; trigger(event?: Event): void; leave(event?: Event): void}>;\n};\n\nconst registerSidebar = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiSidebar', () => UiSidebar());\n AlpineInstance.data('UiSidebarEdge', () => UiSidebarEdge());\n AlpineInstance.data('UiSidebarToggle', () => UiSidebarToggle());\n};\n\nexport {registerSidebar, UiSidebar, UiSidebarEdge, UiSidebarToggle};\nexport type {SidebarController, SidebarData, UiSidebarApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\nimport {registerMotionCapability} from '../../capabilities/motion';\nimport {registerResizableCapability} from '../../capabilities/resizable';\nimport {registerSidebar as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerSidebar = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n registerMotionCapability(AlpineInstance);\n registerResizableCapability(AlpineInstance);\n registerComponent(AlpineInstance);\n};\n\nexport {registerSidebar};\nexport default registerSidebar;\nexport * from './index';\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{a as e,d as t,f as n,l as r,m as i,p as a,u as o,y as s}from"./element-adapter-native-data-key-CW8suC9A.js";import{c,f as l,l as u,n as d}from"./codecs-Cb1ns_47.js";import{r as f,s as p,t as m}from"./dom-qAeVl7dc.js";import{a as h,n as g,t as _}from"./machine-CX3wFSoV.js";import{n as v,t as y}from"./styles-TfvwVPGw.js";import{n as b,r as x}from"./form-control-BkVb2Qed.js";function S(e){return e.source.types.includes(`Files`)}function ee(e){return e.source.items.filter(function(e){return e.kind===`file`}).map(function(e){return e.getAsFile()}).filter(function(e){return e!=null})}var C=s();function w(e){var r=e.dragEnter,i=r.type,s=r.relatedTarget;return i===`dragenter`?n()?t({dragEnter:r}):s==null?!0:a()?o(s):s instanceof HTMLIFrameElement:!1}function T(e){var t=e.type,n=e.value;return!(t===`application/vnd.pdnd`||t===`text/plain`&&n===`pdnd:android-fallback`)}function E(e){return Array.from(e.types).filter(function(t){return T({type:t,value:e.getData(t)})})}function D(e){return Array.from(e.items).filter(function(t){return t.kind===`file`||T({type:t.type,value:e.getData(t.type)})})}var O=!1,k=e({typeKey:`external`,defaultDropEffect:`copy`,mount:function(e){return(0,C.bind)(window,{type:`dragenter`,listener:function(t){if(!O&&t.dataTransfer&&e.canStart(t)&&w({dragEnter:t})){var n=E(t.dataTransfer);if(n.length){var r={types:n,items:[],getStringData:function(){return null}};e.start({event:t,dragType:{type:`external`,startedFrom:`external`,payload:r,getDropPayload:function(e){if(!e.dataTransfer)return r;var t=D(e.dataTransfer),i=e.dataTransfer.getData.bind(e.dataTransfer);return{types:n,items:t,getStringData:function(e){if(!n.includes(e))return null;var t=i(e);return T({type:e,value:t})?t:null}}}}})}}}})}});function A(e){return k.dropTarget(e)}function te(e){return k.monitor(e)}(function(){if(typeof window>`u`)return;k.registerUsage();var e={type:`idle`},t=e;function n(){t.type===`dragging`&&(O=!1,t.cleanup(),t=e)}function a(){return(0,C.bindAll)(window,[{type:`dragend`,listener:n}].concat(i(r({onDragEnd:n}))),{capture:!0})}(0,C.bind)(window,{type:`dragstart`,listener:function(){t.type===`idle`&&(O=!0,t={type:`dragging`,cleanup:a()})},options:{capture:!0}})})();var j=[`stack`,`inline`],ne=[`auto`,`image`,`none`],M=[`sm`,`md`,`lg`],N={name:l,accept:l,capture:l,multiple:d,required:d,disabled:d,invalid:d,preview:u(ne,`auto`),layout:u(j,`stack`),size:u(M,`md`),heading:l.default(`Drop files here or browse`),text:l,browseLabel:l,empty:l,maxItems:c.min(0).default(0),clearable:d.default(!0),transport:u([`native`,`direct`],`native`),rootClass:l,dropzoneClass:l,listClass:l,itemClass:l,class:l};l.default(`Drop files here or browse`),l.default(`cloud__upload`),u(j,`stack`),u(M,`md`),l.default(`document__blank`),l.default(`Remove file`);var P=[h({name:`uploading`,state:`transfer.direct.uploading`,project:e=>({files:e.context.selection.files.filter(({id:t})=>e.context.transfer.activeIds.includes(t))}),onDone:`UPLOADING_DONE`,onError:`UPLOADING_ERROR`,required:!0,sends:{progress:(e,t,n)=>({type:`UPLOAD_PROGRESS`,id:e,loaded:t,total:n}),cancel:()=>({type:`CANCEL_UPLOAD`})}})],F=e=>e,I=e=>{let t=e.source;return t===`picker`||t===`drop`||t===`remove`||t===`props`?t:`clear`},re=(e,t)=>{let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);if(n.length===0)return!0;let r=e.name.toLowerCase(),i=e.type.toLowerCase();return n.some(e=>e.startsWith(`.`)?r.endsWith(e):e.endsWith(`/*`)?i.startsWith(e.slice(0,-1)):e.includes(`/`)&&i===e)},L=(e,t,n)=>{let r=F(n).records??[],i=r.filter(e=>re(e,t.accept)),a=F(n).append&&t.multiple?[...e.selection.files]:[],o=t.multiple?[...a,...i]:i.slice(0,1),s=t.maxItems>0?o.slice(0,t.maxItems):o;return{files:s,limitReached:t.maxItems>0&&s.length>=t.maxItems,rejectedCount:r.length-i.length+o.length-s.length,limitRejectedCount:o.length-s.length,source:I(n)}},R=({context:e,props:t,event:n})=>L(e,t,n).files,ie=e=>R(e).length===0,ae=({context:e,props:t,event:n})=>L(e,t,n).limitReached,z=({context:e,props:t})=>!t.disabled&&e.transfer.status!==`uploading`,B=({props:e})=>e.transport===`direct`,V=({props:e})=>e.transport===`native`,H=e=>B(e)&&(I(e.event)===`picker`||I(e.event)===`drop`)&&R(e).length>0,U=({context:e,props:t,event:n})=>({context:{selection:L(e,t,n)}}),W=({context:e})=>({context:{selection:{...e.selection,files:[],limitReached:!1,rejectedCount:0,limitRejectedCount:0,source:`clear`}}}),G=({context:e,props:t,event:n})=>{let r=L(e,t,n).files,i=new Set(e.selection.files.map(({id:e})=>e)),a=F(n).append?r.filter(({id:e})=>!i.has(e)).map(({id:e})=>e):r.map(({id:e})=>e);return{context:{transfer:{...e.transfer,status:`uploading`,activeIds:a,progress:{...e.transfer.progress,...Object.fromEntries(a.map(e=>[e,0]))},error:``}}}},K=(e,t,n=``)=>({...e.transfer,status:t,error:n}),q=({context:e})=>({context:{transfer:{...K(e,`complete`),progress:{...e.transfer.progress,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,1]))},results:{...e.transfer.results,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,`complete`]))}}}}),oe=({context:e,event:t})=>({context:{transfer:{...K(e,`failed`,t.error instanceof Error?t.error.message:String(t.error??`Upload failed.`)),results:{...e.transfer.results,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,`failed`]))}}}}),se=({context:e})=>({context:{transfer:{...K(e,`canceled`),results:{...e.transfer.results,...Object.fromEntries(e.transfer.activeIds.map(e=>[e,`canceled`]))}}}}),ce=({context:e,event:t})=>{let n=typeof t.id==`string`?t.id:``;if(!e.transfer.activeIds.includes(n))return;let r=Number(t.loaded),i=Number(t.total),a=Number.isFinite(r)&&Number.isFinite(i)&&i>0?Math.min(1,Math.max(0,r/i)):0;return{context:{transfer:{...e.transfer,progress:{...e.transfer.progress,[n]:a}}}}},J=[{target:`#inventory-empty`,guard:e=>z(e)&&ie(e),reduce:`planSelection`,effects:`commitSelection`},{target:`#inventory-capped`,guard:e=>z(e)&&ae(e),reduce:`planSelection`,effects:`commitSelection`},{target:`#inventory-populated`,guard:z,reduce:`planSelection`,effects:`commitSelection`}],le=({props:e,context:t,effects:n})=>_({type:`parallel`,on:{PROPS_CHANGED:{reduce:`replaceProps`,effects:`syncProps`}},states:{interaction:{initial:`idle`,states:{idle:{on:{DRAG_ENTER:{target:`dragging`,guard:z,effects:`syncDragging`}}},dragging:{tags:[`dragging`],on:{DRAG_LEAVE:{target:`idle`,effects:`syncDragging`},DROP:{target:`idle`,effects:`syncDragging`},RECONCILE:{target:`idle`,guard:({props:e})=>e.disabled,effects:`syncDragging`}}}}},inventory:{initial:`empty`,on:{FILES_CHANGED:J,RECONCILE:J,FILES_RESET:{target:`#inventory-empty`,guard:z,reduce:`clearSelection`,effects:`resetSelection`},CLEAR_EXISTING:{guard:z,reduce:`clearExisting`,effects:`clearExisting`}},states:{empty:{id:`inventory-empty`,tags:[`empty`]},populated:{id:`inventory-populated`,tags:[`has-files`]},capped:{id:`inventory-capped`,tags:[`has-files`,`limit-reached`]}}},transfer:{initial:`inactive`,states:{inactive:{on:{RECONCILE:[{target:`#transfer-direct-idle`,guard:B,reduce:`setDirectIdle`,effects:`syncTransfer`},{target:`#transfer-native`,reduce:`setNative`,effects:`syncTransfer`}]}},native:{id:`transfer-native`,on:{RECONCILE:{target:`#transfer-direct-idle`,guard:B,reduce:`setDirectIdle`,effects:`syncTransfer`}}},direct:{initial:`idle`,on:{RECONCILE:{target:`#transfer-native`,guard:V,reduce:`setNative`,effects:`syncTransfer`}},states:{idle:{id:`transfer-direct-idle`,on:{FILES_CHANGED:{target:`uploading`,guard:H,reduce:`beginUpload`,effects:`syncTransfer`}}},uploading:{id:`transfer-uploading`,tags:[`uploading`],on:{UPLOAD_PROGRESS:{reduce:`updateProgress`,effects:`syncTransfer`},UPLOADING_DONE:{target:`complete`,reduce:`finishUpload`,effects:[`syncTransfer`,`emitComplete`]},UPLOADING_ERROR:{target:`failed`,reduce:`failUpload`,effects:[`syncTransfer`,`emitError`]},CANCEL_UPLOAD:{target:`canceled`,reduce:`cancelUpload`,effects:[`syncTransfer`,`emitCancel`]},RECONCILE:{target:`canceled`,guard:({props:e})=>e.disabled||e.transport!==`direct`,reduce:`cancelUpload`,effects:[`syncTransfer`,`emitCancel`]}}},complete:{on:{FILES_CHANGED:{target:`uploading`,guard:H,reduce:`beginUpload`,effects:`syncTransfer`}}},failed:{tags:[`upload-failed`],on:{RETRY_UPLOAD:{target:`uploading`,reduce:`retryUpload`,effects:`syncTransfer`},FILES_CHANGED:{target:`uploading`,guard:H,reduce:`beginUpload`,effects:`syncTransfer`}}},canceled:{on:{RETRY_UPLOAD:{target:`uploading`,reduce:`retryUpload`,effects:`syncTransfer`},FILES_CHANGED:{target:`uploading`,guard:H,reduce:`beginUpload`,effects:`syncTransfer`}}}}}}}}},{context:t,props:e,reducers:{replaceProps:({event:e,props:t})=>({props:e.props??t}),planSelection:U,clearSelection:W,clearExisting:({context:e})=>({context:{existing:{...e.existing,cleared:!0}}}),beginUpload:G,retryUpload:({context:e})=>({context:{transfer:{...e.transfer,status:`uploading`,error:``,activeIds:e.selection.files.filter(({id:t})=>e.transfer.results[t]!==`complete`).map(({id:e})=>e)}}}),finishUpload:q,failUpload:oe,cancelUpload:se,updateProgress:ce,setNative:({context:e})=>({context:{transfer:K(e,`native`)}}),setDirectIdle:({context:e})=>({context:{transfer:K(e,`idle`)}})},effects:{commitSelection:n.commitSelection,resetSelection:n.resetSelection,syncProps:n.syncProps,syncDragging:n.syncDragging,clearExisting:n.clearExisting,syncTransfer:n.syncTransfer,emitComplete:n.emitComplete,emitError:n.emitError,emitCancel:n.emitCancel}}),Y=e=>e.selection.files.map(t=>({...t,status:e.transfer.activeIds.includes(t.id)&&e.transfer.status===`uploading`?`uploading`:e.transfer.results[t.id]??`selected`,progress:e.transfer.progress[t.id]??0})),X=y({definition:{component:`ui.file-upload`,parts:{root:{base:[`grid w-full min-w-0 gap-3`]},control:{base:`relative grid min-w-0 gap-3`},input:{base:`sr-only`},dropzone:{base:[`relative grid min-w-0 overflow-hidden rounded-surface-md text-inherit outline-none`],variants:{layout:{stack:`justify-items-center text-center`,inline:`grid-cols-[auto_minmax(0,1fr)_auto] items-center text-left`},size:{sm:`gap-2 p-3`,md:`gap-3 p-4`,lg:`gap-3 p-5`}},defaults:{layout:`stack`,size:`md`}},icon:{base:`size-icon-lg shrink-0 fill-current text-surface-ink-muted`},body:{base:`grid min-w-0 gap-1`},heading:{base:`text-sm font-medium text-inherit`},text:{base:`text-xs font-normal text-surface-ink-muted`},browse:{base:[`inline-flex min-w-0 items-center justify-center rounded-control-md px-2 py-1 text-xs font-medium`]},list:{base:`grid min-w-0 gap-2`},empty:{base:`text-xs text-surface-ink-muted`},item:{base:[`grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 rounded-surface-sm px-3 py-2`]},preview:{base:`flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-surface-xs bg-interaction-hover text-surface-ink-muted`},previewImage:{base:`size-full`},itemIcon:{base:`size-icon fill-current`},itemBody:{base:`grid min-w-0 gap-0.5`},itemName:{base:`truncate text-sm font-medium text-inherit`},itemMeta:{base:`truncate text-xs font-normal text-surface-ink-muted`},itemError:{base:`truncate text-xs font-normal text-intent-danger-text`},remove:{base:[`relative z-20 inline-flex size-control-sm shrink-0 items-center justify-center rounded-control-md border-0 bg-transparent`,`text-surface-ink-muted outline-none`]},removeIcon:{base:`size-icon-xs fill-current leading-none`},clear:{base:`sr-only`}}}}),ue=e=>{if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=Math.min(Math.floor(Math.log(e)/Math.log(1024)),t.length-1),r=e/1024**n;return`${r>=10||n===0?Math.round(r):Number(r.toFixed(1))} ${t[n]}`},de=e=>e?Array.from(e):[],fe=e=>e.type.startsWith(`image/`),pe=(e,t)=>t!==`none`&&(t===`image`||fe(e)),me=e=>{if(typeof DataTransfer>`u`)return null;let t=new DataTransfer;return e.forEach(e=>t.items.add(e)),t.files},he=(e,t)=>{let n=me(t);if(!n)return!1;try{return e.files=n,!0}catch{return!1}},Z=(e,t)=>{let n=`http://www.w3.org/2000/svg`,r=document.createElementNS(n,`svg`),i=document.createElementNS(n,`path`);return r.setAttribute(`viewBox`,`0 0 32 32`),r.setAttribute(`aria-hidden`,`true`),r.setAttribute(`class`,t),i.setAttribute(`d`,e),r.append(i),r},ge=e=>{let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`),r=document.createElementNS(t,`polygon`);return n.setAttribute(`viewBox`,`0 0 32 32`),n.setAttribute(`aria-hidden`,`true`),n.setAttribute(`class`,e),r.setAttribute(`points`,`17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16`),n.append(r),n},Q=()=>{let e=null,t=[],n=!1,r=0,i=new Map,a=new Map,o=()=>{if(!e)throw Error(`File upload has not been initialized.`);return e},s=()=>{let e=o().querySelector(`[data-ui-file-upload-input]`);if(!e)throw Error(`File upload requires a native file input.`);return e},c=()=>o().querySelector(`[data-ui-file-upload-dropzone]`),l=()=>o().querySelector(`[data-ui-file-upload-list]`),u=()=>O.getSnapshot().props,d=()=>O.getSnapshot().context,h=e=>({id:`file-${++r}`,name:e.name,bytes:e.size,size:ue(e.size),type:e.type||`File`}),_=e=>e.map(e=>{let t=h(e);return i.set(t.id,e),t}),y=e=>{let t=a.get(e);t&&URL.revokeObjectURL(t),a.delete(e)},C=()=>{n=!0,s().dispatchEvent(new Event(`input`,{bubbles:!0})),s().dispatchEvent(new Event(`change`,{bubbles:!0}))},w=(e,t,n=!1)=>{u().disabled||O.hasTag(`uploading`)||O.send({type:`FILES_CHANGED`,records:e,source:t,append:n})},T=(e,t)=>{let n=l();if(!n)return;n.querySelectorAll(`[data-ui-file-upload-pending]`).forEach(e=>e.remove());let r=Y(e),o=new Set(r.map(({id:e})=>e));[...a.keys()].filter(e=>!o.has(e)).forEach(y),[...i.keys()].filter(e=>!o.has(e)).forEach(e=>i.delete(e));let s=n.querySelector(`[data-existing-file]:not([hidden])`),c=n.querySelector(`[data-ui-file-upload-empty]`);c&&(c.hidden=r.length>0||!!s);let u=v({part:X.parts.item,className:t.itemClass}),d=v({part:X.parts.preview}),f=v({part:X.parts.previewImage}),p=v({part:X.parts.itemBody}),m=v({part:X.parts.itemName}),h=v({part:X.parts.itemMeta}),g=v({part:X.parts.remove}),_=v({part:X.parts.removeIcon}),b=v({part:X.parts.itemIcon});r.forEach(e=>{let r=document.createElement(`li`);r.dataset.uiFileUploadItem=``,r.dataset.uiFileUploadPending=``,r.dataset.fileId=e.id,r.dataset.status=e.status,r.dataset.progress=String(e.progress),r.className=u;let o=document.createElement(`span`);o.dataset.uiFileUploadPreview=``,o.className=d,o.setAttribute(`aria-hidden`,`true`);let s=i.get(e.id);if(s&&pe(s,t.preview)){let t=a.get(e.id);t||(t=URL.createObjectURL(s),a.set(e.id,t));let n=document.createElement(`img`);n.src=t,n.alt=``,n.loading=`lazy`,n.decoding=`async`,n.className=`outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10 block size-full object-cover ${f}`,o.append(n)}else o.append(Z(`M25.7,9.3l-7-7A.9078.9078,0,0,0,18,2H8A2.0059,2.0059,0,0,0,6,4V28a2.0059,2.0059,0,0,0,2,2H24a2.0059,2.0059,0,0,0,2-2V10A.9078.9078,0,0,0,25.7,9.3ZM18,4.4,23.6,10H18ZM24,28H8V4h8v6a2.0059,2.0059,0,0,0,2,2h6Z`,b));let c=document.createElement(`span`);c.className=p;let l=document.createElement(`span`);l.dataset.uiFileUploadItemName=``,l.className=m,l.textContent=e.name;let v=document.createElement(`span`);v.dataset.uiFileUploadItemMeta=``,v.className=h,v.textContent=[e.size,e.type].filter(Boolean).join(` · `),c.append(l,v);let y=document.createElement(`button`);y.type=`button`,y.dataset.uiFileUploadRemove=``,y.dataset.fileId=e.id,y.className=g,y.disabled=O.hasTag(`uploading`),y.setAttribute(`aria-label`,`Remove ${e.name}`),y.append(ge(_)),r.append(o,c,y),n.append(r)})},E=(e=d(),t=u())=>{let n=Y(e),r=e.existing.present&&!e.existing.cleared,i=n.length>0||r,a=t.disabled||e.selection.limitReached||e.transfer.status===`uploading`,l=s();x({input:l,state:{disabled:t.disabled,required:t.required,invalid:t.invalid}}),t.transport===`native`&&t.name?l.name=t.name:l.removeAttribute(`name`),l.multiple=t.multiple,t.accept?l.setAttribute(`accept`,t.accept):l.removeAttribute(`accept`),t.capture?l.setAttribute(`capture`,t.capture):l.removeAttribute(`capture`),a&&!t.disabled?(l.setAttribute(`aria-disabled`,`true`),l.tabIndex=-1):t.disabled||(l.removeAttribute(`aria-disabled`),l.removeAttribute(`tabindex`)),l.form&&(l.form.enctype=`multipart/form-data`),b({el:o(),state:t,value:`true`}),p({el:o(),attr:`data-empty`,present:!i,value:`true`}),p({el:o(),attr:`data-has-files`,present:i,value:`true`}),p({el:o(),attr:`data-multiple`,present:t.multiple,value:`true`}),p({el:o(),attr:`data-max-items-reached`,present:e.selection.limitReached,value:`true`}),p({el:o(),attr:`data-has-existing-file`,present:r,value:`true`}),o().dataset.transport=t.transport,o().dataset.transferState=e.transfer.status;let f=c();f&&(b({el:f,state:{disabled:a,invalid:t.invalid},value:`true`}),p({el:f,attr:`data-multiple`,present:t.multiple,value:`true`}),p({el:f,attr:`data-has-files`,present:i,value:`true`}),p({el:f,attr:`data-max-items-reached`,present:e.selection.limitReached,value:`true`})),T(e,t)},D=e=>({selection:{files:[],limitReached:!1,rejectedCount:0,limitRejectedCount:0,source:`clear`},existing:{present:!!o().querySelector(`[data-ui-file-upload-item][data-existing-file]`),cleared:!1},transfer:{status:e.transport===`native`?`native`:`idle`,activeIds:[],progress:{},results:{},error:``}}),O=g({schema:N,hooks:P,createMachine:({props:e})=>le({props:e,context:D(e),effects:{commitSelection:e=>{let t=e.context.selection.files.flatMap(({id:e})=>i.get(e)??[]);if(!he(s(),t)){s().value=``,O.send(`FILES_RESET`);return}E(e.context,e.props),e.context.selection.limitRejectedCount>0&&f({el:o(),name:`ui:file-upload-limit`,detail:{rejectedCount:e.context.selection.limitRejectedCount}}),e.context.selection.source!==`picker`&&C(),f({el:o(),name:`ui:file-upload-change`,detail:{files:Y(e.context)}})},resetSelection:e=>{s().value=``,E(e.context,e.props)},syncProps:e=>{E(e.context,e.props),O.send({type:`RECONCILE`,records:e.context.selection.files,source:`props`})},syncDragging:e=>{let t=e.snapshot.tags.includes(`dragging`);p({el:o(),attr:`data-dragging`,present:t,value:`true`});let n=c();n&&p({el:n,attr:`data-dragging`,present:t,value:`true`})},clearExisting:e=>{let t=o().querySelector(`[data-ui-file-upload-clear]`);t&&(t.checked=!0,t.dispatchEvent(new Event(`change`,{bubbles:!0})));let n=o().querySelector(`[data-ui-file-upload-item][data-existing-file]`);n&&(n.hidden=!0),E(e.context,e.props),f({el:o(),name:`ui:file-upload-change`,detail:{files:Y(e.context)}})},syncTransfer:e=>E(e.context,e.props),emitComplete:e=>f({el:o(),name:`ui:file-upload-complete`,detail:{files:Y(e.context)}}),emitError:e=>f({el:o(),name:`ui:file-upload-error`,detail:{files:Y(e.context),error:e.context.transfer.error}}),emitCancel:e=>f({el:o(),name:`ui:file-upload-cancel`,detail:{files:Y(e.context)}})}})}),k={...O,get files(){return this.snapshot.current?Y(this.snapshot.current.context):[]},get hasFiles(){return(this.snapshot.current?.context.selection.files.length??0)>0||!!(this.snapshot.current?.context.existing.present&&!this.snapshot.current.context.existing.cleared)},get isDragging(){return this.snapshot.current?.tags.includes(`dragging`)??!1},get isUploading(){return this.snapshot.current?.tags.includes(`uploading`)??!1},get isLimitReached(){return this.snapshot.current?.context.selection.limitReached??!1},init(){e=this.$el,O.connect(this.$el,this.snapshot);let r=s();m({target:r,event:`change`,handler:()=>{if(n){n=!1;return}w(_(de(r.files)),`picker`)},cleanup:t}),m({target:o(),event:`click`,handler:e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-ui-file-upload-remove][data-file-id]`);if(n?.dataset.fileId){e.preventDefault(),k.remove(n.dataset.fileId);return}t.closest(`[data-ui-file-upload-remove][data-existing-file]`)&&(e.preventDefault(),O.send(`CLEAR_EXISTING`))},cleanup:t});let i=c();i&&(t.push(A({element:i,canDrop:({source:e})=>!u().disabled&&!O.hasTag(`uploading`)&&S({source:e}),getDropEffect:()=>`copy`,onDragEnter:()=>O.send(`DRAG_ENTER`),onDragLeave:()=>O.send(`DRAG_LEAVE`),onDrop:({source:e})=>{O.send(`DROP`),S({source:e})&&w(_(ee({source:e})),`drop`,u().multiple)}})),t.push(te({canMonitor:({source:e})=>S({source:e}),onDrop:()=>O.send(`DRAG_LEAVE`)}))),E(),O.send({type:`RECONCILE`,records:[],source:`props`})},destroy(){t.forEach(e=>e()),t=[],a.forEach(e=>URL.revokeObjectURL(e)),a.clear(),i.clear(),O.disconnect(),e=null},browse(){!u().disabled&&!O.hasTag(`uploading`)&&s().click()},remove(e){u().disabled||O.hasTag(`uploading`)||!i.has(e)||w(d().selection.files.filter(t=>t.id!==e),`remove`)},retry(){O.send(`RETRY_UPLOAD`)},cancel(){O.send(`CANCEL_UPLOAD`)},file(e){return i.get(e)??null}};return k},_e=e=>{e.data(`UiFileUpload`,()=>Q())},$=new WeakSet,ve=e=>{$.has(e)||($.add(e),_e(e))};export{Q as n,ve as t};
2
- //# sourceMappingURL=entry.generated-DyIjCOhT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entry.generated-DyIjCOhT.js","names":[],"sources":["../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/external/file.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-entering-window.js","../../../../../../../../../node_modules/.pnpm/@atlaskit+pragmatic-drag-and-drop@2.0.1/node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/external-adapter.js","../../../../../../../../client/src/components/file-upload/contract.ts","../../../../../../../../client/src/components/file-upload/machine.ts","../../../../../../../../client/src/components/file-upload/styles.ts","../../../../../../../../client/src/components/file-upload/index.ts","../../../../../../../../client/src/components/file-upload/entry.generated.ts"],"sourcesContent":["export function containsFiles(_ref) {\n var source = _ref.source;\n return source.types.includes('Files');\n}\n\n/** Obtain an array of the dragged `File`s */\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function getFiles(_ref2) {\n var source = _ref2.source;\n return source.items\n // unlike other media types, for files:\n // item.kind is 'file'\n // item.type is the type of file eg 'image/jpg'\n // for other media types, item.type is the mime format\n .filter(function (item) {\n return item.kind === 'file';\n }).map(function (item) {\n return item.getAsFile();\n }).filter(function (file) {\n return file != null;\n });\n}","import { isFirefox } from '../is-firefox';\nimport { isSafari } from '../is-safari';\nimport { isEnteringWindowInSafari } from './count-events-for-safari';\nimport { isFromAnotherWindow } from './is-from-another-window';\nexport function isEnteringWindow(_ref) {\n var dragEnter = _ref.dragEnter;\n var type = dragEnter.type,\n relatedTarget = dragEnter.relatedTarget;\n if (type !== 'dragenter') {\n return false;\n }\n if (isSafari()) {\n return isEnteringWindowInSafari({\n dragEnter: dragEnter\n });\n }\n\n // standard check\n if (relatedTarget == null) {\n return true;\n }\n\n /**\n * 🦊 Exception: `iframe` in Firefox (`125.0`)\n *\n * Case 1: parent `window` → child `iframe`\n * `relatedTarget` is the `iframe` element in the parent `window`\n * (foreign element)\n *\n * Case 2: child `iframe` → parent `window`\n * `relatedTarget` is an element inside the child `iframe`\n * (foreign element)\n */\n\n if (isFirefox()) {\n return isFromAnotherWindow(relatedTarget);\n }\n\n /**\n * 🌏 Exception: `iframe` in Chrome (`124.0`)\n *\n * Case 1: parent `window` → child `iframe`\n * `relatedTarget` is `null` *(standard check)*\n *\n * Case 2: child `iframe` → parent `window`\n * `relatedTarget` is the `iframe` element in the parent `window`\n */\n\n // Case 2\n // Using `instanceof` check as the element will be in the same `window`\n return relatedTarget instanceof HTMLIFrameElement;\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { bind, bindAll } from 'bind-event-listener';\nimport { makeAdapter } from '../make-adapter/make-adapter';\nimport { androidFallbackText } from '../util/android';\nimport { isEnteringWindow } from '../util/changing-window/is-entering-window';\nimport { getBindingsForBrokenDrags } from '../util/detect-broken-drag';\nimport { textMediaType } from '../util/media-types/text-media-type';\nimport { elementAdapterNativeDataKey } from './element-adapter-native-data-key';\nexport function isAnAvailableType(_ref) {\n var type = _ref.type,\n value = _ref.value;\n // We don't want to expose our private elementAdapter key / value\n if (type === elementAdapterNativeDataKey) {\n return false;\n }\n // Not exposing \"text/plain\" if it contains the android fallback text\n // We _could_ add an `isAndroid()` check, but it's probably safest\n // to trim this data out, regardless of what OS we see it on.\n if (type === textMediaType && value === androidFallbackText) {\n return false;\n }\n return true;\n}\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function getAvailableTypes(transfer) {\n return Array.from(transfer.types).filter(function (type) {\n return isAnAvailableType({\n type: type,\n value: transfer.getData(type)\n });\n });\n}\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function getAvailableItems(dataTransfer) {\n // item.kind is 'string' | 'file'\n // For 'string' item.type is the mimeType (eg 'text/plain')\n // For 'file' item.type is the file type (eg 'image/jpg')\n\n return Array.from(dataTransfer.items).filter(function (item) {\n return item.kind === 'file' || isAnAvailableType({\n type: item.type,\n value: dataTransfer.getData(item.type)\n });\n });\n}\nvar didDragStartLocally = false;\nvar adapter = makeAdapter({\n typeKey: 'external',\n // for external drags, we are generally making a copy of something that is being dragged\n defaultDropEffect: 'copy',\n mount: function mount(api) {\n // Binding to the `window` so that the element adapter\n // has a chance to get in first on the`document`.\n // We are giving preference to the element adapter.\n return bind(window, {\n type: 'dragenter',\n listener: function listener(event) {\n // drag operation was started within the document, it won't be an \"external\" drag\n if (didDragStartLocally) {\n return;\n }\n\n // Note: not checking if event was cancelled (`event.defaultPrevented`) as\n // cancelling a \"dragenter\" accepts the drag operation (not prevent it)\n\n // Something has gone wrong with our drag event\n if (!event.dataTransfer) {\n // Including this code on \"test\" and \"development\" environments:\n // - Browser tests commonly run against \"development\" builds\n // - Unit tests commonly run in \"test\"\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"\\n It appears as though you have are not testing DragEvents correctly.\\n\\n - If you are unit testing, ensure you have polyfilled DragEvent.\\n - If you are browser testing, ensure you are dispatching drag events correctly.\\n\\n Please see our testing guides for more information:\\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\\n \".replace(/ {2}/g, ''));\n }\n return;\n }\n if (!api.canStart(event)) {\n return;\n }\n if (!isEnteringWindow({\n dragEnter: event\n })) {\n return;\n }\n\n // Note: not checking types for `elementAdapterNativeDataKey` as we expect to see that\n // key when pdnd started the drag in another document\n var types = getAvailableTypes(event.dataTransfer);\n if (!types.length) {\n return;\n }\n var locked = {\n types: types,\n items: [],\n getStringData: function getStringData() {\n return null;\n }\n };\n api.start({\n event: event,\n dragType: {\n type: 'external',\n startedFrom: 'external',\n payload: locked,\n getDropPayload: function getDropPayload(event) {\n // this would be a platform error\n // trying to handle it gracefully rather than throwing (for now)\n if (!event.dataTransfer) {\n return locked;\n }\n var items = getAvailableItems(event.dataTransfer);\n // need to use `.bind` as `getData` is required\n // to be run with `event.dataTransfer` as the \"this\" context\n var nativeGetData = event.dataTransfer.getData.bind(event.dataTransfer);\n return {\n types: types,\n items: items,\n // return `null` if there is no result, otherwise string\n getStringData: function getStringData(mediaType) {\n // not dragging the requested type\n // return `null` (no result)\n if (!types.includes(mediaType)) {\n return null;\n }\n\n // nativeGetData will return `\"\"` when there is no value,\n // but at this point we know we will only get explicitly set\n // values back as we have checked the `types`.\n // `\"\"` can be an explicitly set value.\n var value = nativeGetData(mediaType);\n\n // not exposing data for unavailable types\n if (!isAnAvailableType({\n type: mediaType,\n value: value\n })) {\n return null;\n }\n return value;\n }\n };\n }\n }\n });\n }\n });\n }\n});\n\n/**\n * Some events don't make sense for the external adapter\n *\n * `onGenerateDragPreview`\n * The browser creates the drag preview for external drags, so we don't\n * need an event to generate the preview for _monitors_ or the _dropTarget_\n *\n * `onDragStart`\n * An external drag can never start from in the `window`, so _dropTarget_'s\n * don't need `onDragStart`\n */\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function dropTargetForExternal(args) {\n // not removing unused events, just leaning on the type system\n return adapter.dropTarget(args);\n}\n\n// eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports\nexport function monitorForExternal(args) {\n // not removing unused events, just leaning on the type system\n return adapter.monitor(args);\n}\n(function startup() {\n // server side rendering check\n if (typeof window === 'undefined') {\n return;\n }\n\n // A shared single usage registration as we want to capture\n // all external drag operations, even if there are no drop targets\n // on the page yet\n adapter.registerUsage();\n // independent of pdnd, we need to keep track of\n // all drag operations so that we can know if a drag operation\n // has started locally\n\n var idle = {\n type: 'idle'\n };\n var state = idle;\n function clear() {\n if (state.type !== 'dragging') {\n return;\n }\n didDragStartLocally = false;\n state.cleanup();\n state = idle;\n }\n function bindEndEvents() {\n return bindAll(window, [{\n type: 'dragend',\n listener: clear\n }].concat(_toConsumableArray(getBindingsForBrokenDrags({\n onDragEnd: clear\n }))),\n // we want to make sure we get all the events,\n // and this helps avoid not seeing events when folks stop\n // them later on the event path\n {\n capture: true\n });\n }\n\n // we always keep this event listener active\n bind(window, {\n type: 'dragstart',\n listener: function listener() {\n // something bad has happened if this is true!\n if (state.type !== 'idle') {\n return;\n }\n // set our global flag\n didDragStartLocally = true;\n state = {\n type: 'dragging',\n cleanup: bindEndEvents()\n };\n },\n // binding in the capture phase so these listeners are called\n // before our listeners in the adapters `mount` function\n options: {\n capture: true\n }\n });\n})();\n\n/** Common event payload for all events */\n\n/** A map containing payloads for all events */\n\n/** Common event payload for all drop target events */\n\n/** A map containing payloads for all events on drop targets */\n\n/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForExternal` */\n\n/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForExternal` */","import {bool, number, oneOf, string, type SchemaToProps} from '../../runtime';\n\nconst FILE_UPLOAD_LAYOUTS = ['stack', 'inline'] as const;\nconst FILE_UPLOAD_PREVIEWS = ['auto', 'image', 'none'] as const;\nconst FILE_UPLOAD_SIZES = ['sm', 'md', 'lg'] as const;\nconst FILE_UPLOAD_TRANSPORTS = ['native', 'direct'] as const;\n\ntype FileUploadLayout = (typeof FILE_UPLOAD_LAYOUTS)[number];\ntype FileUploadPreview = (typeof FILE_UPLOAD_PREVIEWS)[number];\ntype FileUploadSize = (typeof FILE_UPLOAD_SIZES)[number];\ntype FileUploadTransport = (typeof FILE_UPLOAD_TRANSPORTS)[number];\n\nconst fileUploadSchema = {\n name: string,\n accept: string,\n capture: string,\n multiple: bool,\n required: bool,\n disabled: bool,\n invalid: bool,\n preview: oneOf(FILE_UPLOAD_PREVIEWS, 'auto' as FileUploadPreview),\n layout: oneOf(FILE_UPLOAD_LAYOUTS, 'stack' as FileUploadLayout),\n size: oneOf(FILE_UPLOAD_SIZES, 'md' as FileUploadSize),\n heading: string.default('Drop files here or browse'),\n text: string,\n browseLabel: string,\n empty: string,\n maxItems: number.min(0).default(0),\n clearable: bool.default(true),\n transport: oneOf(FILE_UPLOAD_TRANSPORTS, 'native' as FileUploadTransport),\n rootClass: string,\n dropzoneClass: string,\n listClass: string,\n itemClass: string,\n class: string,\n};\n\nconst fileUploadDropzoneSchema = {\n heading: string.default('Drop files here or browse'),\n text: string,\n icon: string.default('cloud__upload'),\n layout: oneOf(FILE_UPLOAD_LAYOUTS, 'stack' as FileUploadLayout),\n size: oneOf(FILE_UPLOAD_SIZES, 'md' as FileUploadSize),\n disabled: bool,\n invalid: bool,\n class: string,\n};\n\nconst fileUploadListSchema = {\n class: string,\n};\n\nconst fileUploadItemSchema = {\n filename: string,\n filesize: string,\n mime: string,\n preview: string,\n icon: string.default('document__blank'),\n invalid: bool,\n error: string,\n class: string,\n};\n\nconst fileUploadRemoveSchema = {\n label: string.default('Remove file'),\n class: string,\n};\n\ntype FileUploadProps = SchemaToProps<typeof fileUploadSchema>;\n\nexport {\n FILE_UPLOAD_LAYOUTS,\n FILE_UPLOAD_PREVIEWS,\n FILE_UPLOAD_SIZES,\n FILE_UPLOAD_TRANSPORTS,\n fileUploadDropzoneSchema,\n fileUploadItemSchema,\n fileUploadListSchema,\n fileUploadRemoveSchema,\n fileUploadSchema,\n};\nexport type {\n FileUploadLayout,\n FileUploadPreview,\n FileUploadProps,\n FileUploadSize,\n FileUploadTransport,\n};\n","import {\n createMachine,\n type Machine,\n type MachineEventObject,\n type MachineScope,\n} from '../../runtime/state-machine';\nimport {defineHook} from '../../runtime/transition-coordinator';\nimport type {FileUploadProps} from './contract';\n\ntype FileSelectionSource = 'picker' | 'drop' | 'remove' | 'props' | 'clear';\ntype FileTransferStatus = 'selected' | 'uploading' | 'complete' | 'failed' | 'canceled';\n\ntype FileUploadMetadata = {\n id: string;\n name: string;\n bytes: number;\n size: string;\n type: string;\n};\n\ntype FileUploadRecord = FileUploadMetadata & {\n status: FileTransferStatus;\n progress: number;\n};\n\ntype FileUploadContext = {\n selection: {\n files: FileUploadMetadata[];\n limitReached: boolean;\n rejectedCount: number;\n limitRejectedCount: number;\n source: FileSelectionSource;\n };\n existing: {present: boolean; cleared: boolean};\n transfer: {\n status: 'native' | 'idle' | 'uploading' | 'complete' | 'failed' | 'canceled';\n activeIds: string[];\n progress: Record<string, number>;\n results: Record<string, Exclude<FileTransferStatus, 'selected' | 'uploading'>>;\n error: string;\n };\n};\n\ntype FileUploadMachineEffects = {\n commitSelection(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n resetSelection(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n syncProps(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n syncDragging(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n clearExisting(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n syncTransfer(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n emitComplete(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n emitError(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n emitCancel(scope: MachineScope<FileUploadContext, FileUploadProps>): void;\n};\n\ntype CreateFileUploadMachineOptions = {\n props: FileUploadProps;\n context: FileUploadContext;\n effects: FileUploadMachineEffects;\n};\n\ntype FileRecordsEvent = MachineEventObject & {\n records: FileUploadMetadata[];\n append?: boolean;\n source?: FileSelectionSource;\n};\n\nconst uploadingHook = defineHook<FileUploadContext, FileUploadProps, {files: FileUploadMetadata[]}, 'uploading'>({\n name: 'uploading',\n state: 'transfer.direct.uploading',\n project: (snapshot) => ({\n files: snapshot.context.selection.files.filter(({id}) => snapshot.context.transfer.activeIds.includes(id)),\n }),\n onDone: 'UPLOADING_DONE',\n onError: 'UPLOADING_ERROR',\n required: true,\n sends: {\n progress: (id: string, loaded: number, total: number) => ({type: 'UPLOAD_PROGRESS', id, loaded, total}),\n cancel: () => ({type: 'CANCEL_UPLOAD'}),\n },\n});\n\nconst fileUploadHooks = [uploadingHook] as const;\n\nconst recordsEvent = (event: MachineEventObject): FileRecordsEvent => event as FileRecordsEvent;\nconst eventSource = (event: MachineEventObject): FileSelectionSource => {\n const source = event.source;\n return source === 'picker' || source === 'drop' || source === 'remove' || source === 'props' ? source : 'clear';\n};\n\nconst acceptedByAccept = (file: FileUploadMetadata, accept: string): boolean => {\n const tokens = accept.split(',').map((token) => token.trim().toLowerCase()).filter(Boolean);\n if (tokens.length === 0) return true;\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return tokens.some((token) => {\n if (token.startsWith('.')) return name.endsWith(token);\n if (token.endsWith('/*')) return type.startsWith(token.slice(0, -1));\n return token.includes('/') && type === token;\n });\n};\n\nconst selectionPlan = (\n context: Readonly<FileUploadContext>,\n props: Readonly<FileUploadProps>,\n event: MachineEventObject,\n): FileUploadContext['selection'] => {\n const candidate = recordsEvent(event).records ?? [];\n const accepted = candidate.filter((file) => acceptedByAccept(file, props.accept));\n const base = recordsEvent(event).append && props.multiple ? [...context.selection.files] : [];\n const combined = props.multiple ? [...base, ...accepted] : accepted.slice(0, 1);\n const files = props.maxItems > 0 ? combined.slice(0, props.maxItems) : combined;\n return {\n files,\n limitReached: props.maxItems > 0 && files.length >= props.maxItems,\n rejectedCount: candidate.length - accepted.length + combined.length - files.length,\n limitRejectedCount: combined.length - files.length,\n source: eventSource(event),\n };\n};\n\nconst plannedFiles = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>): FileUploadMetadata[] => (\n selectionPlan(context, props, event).files\n);\nconst planIsEmpty = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => plannedFiles(scope).length === 0;\nconst planIsCapped = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>): boolean => (\n selectionPlan(context, props, event).limitReached\n);\nconst canMutate = ({context, props}: MachineScope<FileUploadContext, FileUploadProps>): boolean => (\n !props.disabled && context.transfer.status !== 'uploading'\n);\nconst isDirect = ({props}: MachineScope<FileUploadContext, FileUploadProps>): boolean => props.transport === 'direct';\nconst isNative = ({props}: MachineScope<FileUploadContext, FileUploadProps>): boolean => props.transport === 'native';\nconst shouldUpload = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => (\n isDirect(scope)\n && (eventSource(scope.event) === 'picker' || eventSource(scope.event) === 'drop')\n && plannedFiles(scope).length > 0\n);\n\nconst planSelection = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>) => ({\n context: {selection: selectionPlan(context, props, event)},\n});\nconst clearSelection = ({context}: MachineScope<FileUploadContext, FileUploadProps>) => ({\n context: {selection: {...context.selection, files: [], limitReached: false, rejectedCount: 0, limitRejectedCount: 0, source: 'clear' as const}},\n});\nconst beginUpload = ({context, props, event}: MachineScope<FileUploadContext, FileUploadProps>) => {\n const files = selectionPlan(context, props, event).files;\n const previousIds = new Set(context.selection.files.map(({id}) => id));\n const activeIds = recordsEvent(event).append ? files.filter(({id}) => !previousIds.has(id)).map(({id}) => id) : files.map(({id}) => id);\n return {context: {transfer: {\n ...context.transfer,\n status: 'uploading' as const,\n activeIds,\n progress: {...context.transfer.progress, ...Object.fromEntries(activeIds.map((id) => [id, 0]))},\n error: '',\n }}};\n};\nconst setTransferStatus = (\n context: Readonly<FileUploadContext>,\n status: 'native' | 'idle' | 'complete' | 'failed' | 'canceled',\n error = '',\n): FileUploadContext['transfer'] => ({...context.transfer, status, error});\nconst finishUpload = ({context}: MachineScope<FileUploadContext, FileUploadProps>) => ({context: {transfer: {\n ...setTransferStatus(context, 'complete'),\n progress: {...context.transfer.progress, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 1]))},\n results: {...context.transfer.results, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 'complete' as const]))},\n}}});\nconst failUpload = ({context, event}: MachineScope<FileUploadContext, FileUploadProps>) => ({context: {transfer: {\n ...setTransferStatus(context, 'failed', event.error instanceof Error ? event.error.message : String(event.error ?? 'Upload failed.')),\n results: {...context.transfer.results, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 'failed' as const]))},\n}}});\nconst cancelUpload = ({context}: MachineScope<FileUploadContext, FileUploadProps>) => ({context: {transfer: {\n ...setTransferStatus(context, 'canceled'),\n results: {...context.transfer.results, ...Object.fromEntries(context.transfer.activeIds.map((id) => [id, 'canceled' as const]))},\n}}});\nconst updateProgress = ({context, event}: MachineScope<FileUploadContext, FileUploadProps>) => {\n const id = typeof event.id === 'string' ? event.id : '';\n if (!context.transfer.activeIds.includes(id)) return;\n const loaded = Number(event.loaded);\n const total = Number(event.total);\n const progress = Number.isFinite(loaded) && Number.isFinite(total) && total > 0 ? Math.min(1, Math.max(0, loaded / total)) : 0;\n return {context: {transfer: {...context.transfer, progress: {...context.transfer.progress, [id]: progress}}}};\n};\n\nconst canMutateToEmpty = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => canMutate(scope) && planIsEmpty(scope);\nconst canMutateToCapped = (scope: MachineScope<FileUploadContext, FileUploadProps>): boolean => canMutate(scope) && planIsCapped(scope);\n\nconst inventoryTransitions = [\n {target: '#inventory-empty', guard: canMutateToEmpty, reduce: 'planSelection', effects: 'commitSelection'},\n {target: '#inventory-capped', guard: canMutateToCapped, reduce: 'planSelection', effects: 'commitSelection'},\n {target: '#inventory-populated', guard: canMutate, reduce: 'planSelection', effects: 'commitSelection'},\n];\n\nconst createFileUploadMachine = ({props, context, effects}: CreateFileUploadMachineOptions): Machine<FileUploadContext, FileUploadProps> => createMachine<FileUploadContext, FileUploadProps>({\n type: 'parallel',\n on: {PROPS_CHANGED: {reduce: 'replaceProps', effects: 'syncProps'}},\n states: {\n interaction: {\n initial: 'idle',\n states: {\n idle: {on: {DRAG_ENTER: {target: 'dragging', guard: canMutate, effects: 'syncDragging'}}},\n dragging: {tags: ['dragging'], on: {\n DRAG_LEAVE: {target: 'idle', effects: 'syncDragging'},\n DROP: {target: 'idle', effects: 'syncDragging'},\n RECONCILE: {target: 'idle', guard: ({props: currentProps}) => currentProps.disabled, effects: 'syncDragging'},\n }},\n },\n },\n inventory: {\n initial: 'empty',\n on: {\n FILES_CHANGED: inventoryTransitions,\n RECONCILE: inventoryTransitions,\n FILES_RESET: {target: '#inventory-empty', guard: canMutate, reduce: 'clearSelection', effects: 'resetSelection'},\n CLEAR_EXISTING: {guard: canMutate, reduce: 'clearExisting', effects: 'clearExisting'},\n },\n states: {\n empty: {id: 'inventory-empty', tags: ['empty']},\n populated: {id: 'inventory-populated', tags: ['has-files']},\n capped: {id: 'inventory-capped', tags: ['has-files', 'limit-reached']},\n },\n },\n transfer: {\n initial: 'inactive',\n states: {\n inactive: {on: {\n RECONCILE: [{target: '#transfer-direct-idle', guard: isDirect, reduce: 'setDirectIdle', effects: 'syncTransfer'}, {target: '#transfer-native', reduce: 'setNative', effects: 'syncTransfer'}],\n }},\n native: {id: 'transfer-native', on: {\n RECONCILE: {target: '#transfer-direct-idle', guard: isDirect, reduce: 'setDirectIdle', effects: 'syncTransfer'},\n }},\n direct: {\n initial: 'idle',\n on: {RECONCILE: {target: '#transfer-native', guard: isNative, reduce: 'setNative', effects: 'syncTransfer'}},\n states: {\n idle: {id: 'transfer-direct-idle', on: {FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'}}},\n uploading: {id: 'transfer-uploading', tags: ['uploading'], on: {\n UPLOAD_PROGRESS: {reduce: 'updateProgress', effects: 'syncTransfer'},\n UPLOADING_DONE: {target: 'complete', reduce: 'finishUpload', effects: ['syncTransfer', 'emitComplete']},\n UPLOADING_ERROR: {target: 'failed', reduce: 'failUpload', effects: ['syncTransfer', 'emitError']},\n CANCEL_UPLOAD: {target: 'canceled', reduce: 'cancelUpload', effects: ['syncTransfer', 'emitCancel']},\n RECONCILE: {target: 'canceled', guard: ({props: currentProps}) => currentProps.disabled || currentProps.transport !== 'direct', reduce: 'cancelUpload', effects: ['syncTransfer', 'emitCancel']},\n }},\n complete: {on: {FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'}}},\n failed: {tags: ['upload-failed'], on: {\n RETRY_UPLOAD: {target: 'uploading', reduce: 'retryUpload', effects: 'syncTransfer'},\n FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'},\n }},\n canceled: {on: {\n RETRY_UPLOAD: {target: 'uploading', reduce: 'retryUpload', effects: 'syncTransfer'},\n FILES_CHANGED: {target: 'uploading', guard: shouldUpload, reduce: 'beginUpload', effects: 'syncTransfer'},\n }},\n },\n },\n },\n },\n },\n}, {\n context,\n props,\n reducers: {\n replaceProps: ({event, props: currentProps}) => ({props: event.props as FileUploadProps ?? currentProps}),\n planSelection,\n clearSelection,\n clearExisting: ({context: current}) => ({context: {existing: {...current.existing, cleared: true}}}),\n beginUpload,\n retryUpload: ({context: current}) => ({context: {transfer: {...current.transfer, status: 'uploading', error: '', activeIds: current.selection.files.filter(({id}) => current.transfer.results[id] !== 'complete').map(({id}) => id)}}}),\n finishUpload,\n failUpload,\n cancelUpload,\n updateProgress,\n setNative: ({context: current}) => ({context: {transfer: setTransferStatus(current, 'native')}}),\n setDirectIdle: ({context: current}) => ({context: {transfer: setTransferStatus(current, 'idle')}}),\n },\n effects: {\n commitSelection: effects.commitSelection,\n resetSelection: effects.resetSelection,\n syncProps: effects.syncProps,\n syncDragging: effects.syncDragging,\n clearExisting: effects.clearExisting,\n syncTransfer: effects.syncTransfer,\n emitComplete: effects.emitComplete,\n emitError: effects.emitError,\n emitCancel: effects.emitCancel,\n },\n});\n\nconst recordsFromSnapshot = (context: Readonly<FileUploadContext>): FileUploadRecord[] => context.selection.files.map((file) => ({\n ...file,\n status: context.transfer.activeIds.includes(file.id) && context.transfer.status === 'uploading'\n ? 'uploading'\n : context.transfer.results[file.id] ?? 'selected',\n progress: context.transfer.progress[file.id] ?? 0,\n}));\n\nexport {createFileUploadMachine, fileUploadHooks, recordsFromSnapshot};\nexport type {\n CreateFileUploadMachineOptions,\n FileSelectionSource,\n FileTransferStatus,\n FileUploadContext,\n FileUploadMachineEffects,\n FileUploadMetadata,\n FileUploadRecord,\n};\n","import {defineStyles} from '../../runtime';\n\nconst fileUploadStyles = defineStyles({definition: {\n component: 'ui.file-upload',\n parts: {\n root: {\n base: [\n 'grid w-full min-w-0 gap-3',\n ],\n },\n control: {\n base: 'relative grid min-w-0 gap-3',\n },\n input: {\n base: 'sr-only',\n },\n dropzone: {\n base: [\n 'relative grid min-w-0 overflow-hidden rounded-surface-md text-inherit outline-none',\n ],\n variants: {\n layout: {\n stack: 'justify-items-center text-center',\n inline: 'grid-cols-[auto_minmax(0,1fr)_auto] items-center text-left',\n },\n size: {\n sm: 'gap-2 p-3',\n md: 'gap-3 p-4',\n lg: 'gap-3 p-5',\n },\n },\n defaults: {\n layout: 'stack',\n size: 'md',\n },\n },\n icon: {\n base: 'size-icon-lg shrink-0 fill-current text-surface-ink-muted',\n },\n body: {\n base: 'grid min-w-0 gap-1',\n },\n heading: {\n base: 'text-sm font-medium text-inherit',\n },\n text: {\n base: 'text-xs font-normal text-surface-ink-muted',\n },\n browse: {\n base: [\n 'inline-flex min-w-0 items-center justify-center rounded-control-md px-2 py-1 text-xs font-medium',\n ],\n },\n list: {\n base: 'grid min-w-0 gap-2',\n },\n empty: {\n base: 'text-xs text-surface-ink-muted',\n },\n item: {\n base: [\n 'grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 rounded-surface-sm px-3 py-2',\n ],\n },\n preview: {\n base: 'flex size-9 shrink-0 items-center justify-center overflow-hidden rounded-surface-xs bg-interaction-hover text-surface-ink-muted',\n },\n previewImage: {\n base: 'size-full',\n },\n itemIcon: {\n base: 'size-icon fill-current',\n },\n itemBody: {\n base: 'grid min-w-0 gap-0.5',\n },\n itemName: {\n base: 'truncate text-sm font-medium text-inherit',\n },\n itemMeta: {\n base: 'truncate text-xs font-normal text-surface-ink-muted',\n },\n itemError: {\n base: 'truncate text-xs font-normal text-intent-danger-text',\n },\n remove: {\n base: [\n 'relative z-20 inline-flex size-control-sm shrink-0 items-center justify-center rounded-control-md border-0 bg-transparent',\n 'text-surface-ink-muted outline-none',\n ],\n },\n removeIcon: {\n base: 'size-icon-xs fill-current leading-none',\n },\n clear: {\n base: 'sr-only',\n },\n },\n}});\n\nexport {fileUploadStyles};\n","import {containsFiles, getFiles} from '@atlaskit/pragmatic-drag-and-drop/external/file';\nimport {dropTargetForExternal, monitorForExternal, type ExternalDropTargetEventPayloadMap} from '@atlaskit/pragmatic-drag-and-drop/external/adapter';\nimport type Alpine from 'alpinejs';\n\nimport {createAlpineMachine, type AlpineMachine, type TrellisAlpineComponent} from '@client/runtime';\nimport {syncControlPresence, syncNativeControl} from '@client/runtime/form-control';\nimport {resolveStyle} from '@client/runtime/styles';\nimport {addListener, dispatch, setPresence, type CleanupStack} from '@client/utils';\nimport {fileUploadSchema, type FileUploadProps} from './contract';\nimport {\n createFileUploadMachine,\n fileUploadHooks,\n recordsFromSnapshot,\n type FileSelectionSource,\n type FileTransferStatus,\n type FileUploadContext,\n type FileUploadMetadata,\n type FileUploadRecord,\n} from './machine';\nimport {fileUploadStyles} from './styles';\n\n/**\n * Public Alpine API for `ui.file-upload`.\n *\n * @public\n */\ninterface UiFileUploadApi {\n /** Serializable metadata for the current pending or transferred files. */\n readonly files: readonly FileUploadRecord[];\n /** Whether pending or existing file content is present. */\n readonly hasFiles: boolean;\n /** Whether an external file is over the drop target. */\n readonly isDragging: boolean;\n /** Whether the direct transport hook is pending. */\n readonly isUploading: boolean;\n /** Whether the configured client-side item limit is full. */\n readonly isLimitReached: boolean;\n /** Opens the native file picker when interaction is available. */\n browse(): void;\n /** Removes a pending file by its stable record id. */\n remove(id: string): void;\n /** Retries failed or canceled direct-upload records. */\n retry(): void;\n /** Cancels the active direct-upload batch. */\n cancel(): void;\n /** Returns the original browser File for transport code without cloning it. */\n file(id: string): File | null;\n}\n\ntype FileUploadData = AlpineMachine<FileUploadContext, FileUploadProps, typeof fileUploadHooks> & UiFileUploadApi & {\n init(): void;\n destroy(): void;\n};\n\nconst formatBytes = (bytes: number): string => {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const unitIndex = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);\n const value = bytes / (1024 ** unitIndex);\n const display = value >= 10 || unitIndex === 0 ? Math.round(value) : Number(value.toFixed(1));\n return `${display} ${units[unitIndex]}`;\n};\n\nconst filesFromList = (list: FileList | null): File[] => list ? Array.from(list) : [];\nconst isImageFile = (file: File): boolean => file.type.startsWith('image/');\nconst canPreviewFile = (file: File, preview: FileUploadProps['preview']): boolean => preview !== 'none' && (preview === 'image' || isImageFile(file));\n\nconst toFileList = (files: File[]): FileList | null => {\n if (typeof DataTransfer === 'undefined') return null;\n const transfer = new DataTransfer();\n files.forEach((file) => transfer.items.add(file));\n return transfer.files;\n};\n\nconst setInputFiles = (input: HTMLInputElement, files: File[]): boolean => {\n const list = toFileList(files);\n if (!list) return false;\n try {\n input.files = list;\n return true;\n } catch {\n return false;\n }\n};\n\nconst iconSvg = (pathData: string, className: string): SVGSVGElement => {\n const namespace = 'http://www.w3.org/2000/svg';\n const icon = document.createElementNS(namespace, 'svg');\n const path = document.createElementNS(namespace, 'path');\n icon.setAttribute('viewBox', '0 0 32 32');\n icon.setAttribute('aria-hidden', 'true');\n icon.setAttribute('class', className);\n path.setAttribute('d', pathData);\n icon.append(path);\n return icon;\n};\n\nconst closeIcon = (className: string): SVGSVGElement => {\n const namespace = 'http://www.w3.org/2000/svg';\n const icon = document.createElementNS(namespace, 'svg');\n const polygon = document.createElementNS(namespace, 'polygon');\n icon.setAttribute('viewBox', '0 0 32 32');\n icon.setAttribute('aria-hidden', 'true');\n icon.setAttribute('class', className);\n polygon.setAttribute('points', '17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16');\n icon.append(polygon);\n return icon;\n};\n\nconst UiFileUpload = (): TrellisAlpineComponent<FileUploadData> => {\n let rootEl: (HTMLElement & Alpine.ElementWithXAttributes) | null = null;\n let cleanup: CleanupStack = [];\n let ignoreNativeChange = false;\n let fileSequence = 0;\n const rawFiles = new Map<string, File>();\n const previewUrls = new Map<string, string>();\n\n const root = (): HTMLElement => {\n if (!rootEl) throw new Error('File upload has not been initialized.');\n return rootEl;\n };\n const input = (): HTMLInputElement => {\n const control = root().querySelector<HTMLInputElement>('[data-ui-file-upload-input]');\n if (!control) throw new Error('File upload requires a native file input.');\n return control;\n };\n const dropzone = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-file-upload-dropzone]');\n const list = (): HTMLElement | null => root().querySelector<HTMLElement>('[data-ui-file-upload-list]');\n const currentProps = (): Readonly<FileUploadProps> => bridge.getSnapshot().props;\n const currentContext = (): Readonly<FileUploadContext> => bridge.getSnapshot().context;\n\n const metadataFor = (file: File): FileUploadMetadata => ({\n id: `file-${++fileSequence}`,\n name: file.name,\n bytes: file.size,\n size: formatBytes(file.size),\n type: file.type || 'File',\n });\n const registerFiles = (files: File[]): FileUploadMetadata[] => files.map((file) => {\n const metadata = metadataFor(file);\n rawFiles.set(metadata.id, file);\n return metadata;\n });\n const revokePreview = (id: string): void => {\n const url = previewUrls.get(id);\n if (url) URL.revokeObjectURL(url);\n previewUrls.delete(id);\n };\n const dispatchNativeChange = (): void => {\n ignoreNativeChange = true;\n input().dispatchEvent(new Event('input', {bubbles: true}));\n input().dispatchEvent(new Event('change', {bubbles: true}));\n };\n const sendFiles = (records: FileUploadMetadata[], source: FileSelectionSource, append = false): void => {\n if (currentProps().disabled || bridge.hasTag('uploading')) return;\n bridge.send({type: 'FILES_CHANGED', records, source, append});\n };\n\n const renderFiles = (context: Readonly<FileUploadContext>, props: Readonly<FileUploadProps>): void => {\n const container = list();\n if (!container) return;\n container.querySelectorAll('[data-ui-file-upload-pending]').forEach((item) => item.remove());\n const records = recordsFromSnapshot(context);\n const selectedIds = new Set(records.map(({id}) => id));\n [...previewUrls.keys()].filter((id) => !selectedIds.has(id)).forEach(revokePreview);\n [...rawFiles.keys()].filter((id) => !selectedIds.has(id)).forEach((id) => rawFiles.delete(id));\n const existing = container.querySelector<HTMLElement>('[data-existing-file]:not([hidden])');\n const empty = container.querySelector<HTMLElement>('[data-ui-file-upload-empty]');\n if (empty) empty.hidden = records.length > 0 || Boolean(existing);\n\n const itemClass = resolveStyle({part: fileUploadStyles.parts.item, className: props.itemClass});\n const previewClass = resolveStyle({part: fileUploadStyles.parts.preview});\n const imageClass = resolveStyle({part: fileUploadStyles.parts.previewImage});\n const bodyClass = resolveStyle({part: fileUploadStyles.parts.itemBody});\n const nameClass = resolveStyle({part: fileUploadStyles.parts.itemName});\n const metaClass = resolveStyle({part: fileUploadStyles.parts.itemMeta});\n const removeClass = resolveStyle({part: fileUploadStyles.parts.remove});\n const removeIconClass = resolveStyle({part: fileUploadStyles.parts.removeIcon});\n const itemIconClass = resolveStyle({part: fileUploadStyles.parts.itemIcon});\n\n records.forEach((record) => {\n const item = document.createElement('li');\n item.dataset.uiFileUploadItem = '';\n item.dataset.uiFileUploadPending = '';\n item.dataset.fileId = record.id;\n item.dataset.status = record.status;\n item.dataset.progress = String(record.progress);\n item.className = itemClass;\n\n const preview = document.createElement('span');\n preview.dataset.uiFileUploadPreview = '';\n preview.className = previewClass;\n preview.setAttribute('aria-hidden', 'true');\n const file = rawFiles.get(record.id);\n if (file && canPreviewFile(file, props.preview)) {\n let url = previewUrls.get(record.id);\n if (!url) {\n url = URL.createObjectURL(file);\n previewUrls.set(record.id, url);\n }\n const image = document.createElement('img');\n image.src = url;\n image.alt = '';\n image.loading = 'lazy';\n image.decoding = 'async';\n image.className = `outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10 block size-full object-cover ${imageClass}`;\n preview.append(image);\n } else {\n preview.append(iconSvg('M25.7,9.3l-7-7A.9078.9078,0,0,0,18,2H8A2.0059,2.0059,0,0,0,6,4V28a2.0059,2.0059,0,0,0,2,2H24a2.0059,2.0059,0,0,0,2-2V10A.9078.9078,0,0,0,25.7,9.3ZM18,4.4,23.6,10H18ZM24,28H8V4h8v6a2.0059,2.0059,0,0,0,2,2h6Z', itemIconClass));\n }\n\n const body = document.createElement('span');\n body.className = bodyClass;\n const name = document.createElement('span');\n name.dataset.uiFileUploadItemName = '';\n name.className = nameClass;\n name.textContent = record.name;\n const meta = document.createElement('span');\n meta.dataset.uiFileUploadItemMeta = '';\n meta.className = metaClass;\n meta.textContent = [record.size, record.type].filter(Boolean).join(' · ');\n body.append(name, meta);\n\n const remove = document.createElement('button');\n remove.type = 'button';\n remove.dataset.uiFileUploadRemove = '';\n remove.dataset.fileId = record.id;\n remove.className = removeClass;\n remove.disabled = bridge.hasTag('uploading');\n remove.setAttribute('aria-label', `Remove ${record.name}`);\n remove.append(closeIcon(removeIconClass));\n item.append(preview, body, remove);\n container.append(item);\n });\n };\n\n const syncDom = (\n context: Readonly<FileUploadContext> = currentContext(),\n props: Readonly<FileUploadProps> = currentProps(),\n ): void => {\n const records = recordsFromSnapshot(context);\n const existing = context.existing.present && !context.existing.cleared;\n const hasFiles = records.length > 0 || existing;\n const unavailable = props.disabled || context.selection.limitReached || context.transfer.status === 'uploading';\n const control = input();\n syncNativeControl({input: control, state: {disabled: props.disabled, required: props.required, invalid: props.invalid}});\n if (props.transport === 'native' && props.name) control.name = props.name;\n else control.removeAttribute('name');\n control.multiple = props.multiple;\n props.accept ? control.setAttribute('accept', props.accept) : control.removeAttribute('accept');\n props.capture ? control.setAttribute('capture', props.capture) : control.removeAttribute('capture');\n if (unavailable && !props.disabled) {\n control.setAttribute('aria-disabled', 'true');\n control.tabIndex = -1;\n } else if (!props.disabled) {\n control.removeAttribute('aria-disabled');\n control.removeAttribute('tabindex');\n }\n if (control.form) control.form.enctype = 'multipart/form-data';\n\n syncControlPresence({el: root(), state: props, value: 'true'});\n setPresence({el: root(), attr: 'data-empty', present: !hasFiles, value: 'true'});\n setPresence({el: root(), attr: 'data-has-files', present: hasFiles, value: 'true'});\n setPresence({el: root(), attr: 'data-multiple', present: props.multiple, value: 'true'});\n setPresence({el: root(), attr: 'data-max-items-reached', present: context.selection.limitReached, value: 'true'});\n setPresence({el: root(), attr: 'data-has-existing-file', present: existing, value: 'true'});\n root().dataset.transport = props.transport;\n root().dataset.transferState = context.transfer.status;\n const zone = dropzone();\n if (zone) {\n syncControlPresence({el: zone, state: {disabled: unavailable, invalid: props.invalid}, value: 'true'});\n setPresence({el: zone, attr: 'data-multiple', present: props.multiple, value: 'true'});\n setPresence({el: zone, attr: 'data-has-files', present: hasFiles, value: 'true'});\n setPresence({el: zone, attr: 'data-max-items-reached', present: context.selection.limitReached, value: 'true'});\n }\n renderFiles(context, props);\n };\n\n const initialContext = (props: FileUploadProps): FileUploadContext => ({\n selection: {files: [], limitReached: false, rejectedCount: 0, limitRejectedCount: 0, source: 'clear'},\n existing: {present: Boolean(root().querySelector('[data-ui-file-upload-item][data-existing-file]')), cleared: false},\n transfer: {status: props.transport === 'native' ? 'native' : 'idle', activeIds: [], progress: {}, results: {}, error: ''},\n });\n\n const bridge = createAlpineMachine({\n schema: fileUploadSchema,\n hooks: fileUploadHooks,\n createMachine: ({props}) => createFileUploadMachine({\n props,\n context: initialContext(props),\n effects: {\n commitSelection: (scope) => {\n const selected = scope.context.selection.files;\n const selectedFiles = selected.flatMap(({id}) => rawFiles.get(id) ?? []);\n if (!setInputFiles(input(), selectedFiles)) {\n input().value = '';\n bridge.send('FILES_RESET');\n return;\n }\n syncDom(scope.context, scope.props);\n if (scope.context.selection.limitRejectedCount > 0) {\n dispatch({el: root(), name: 'ui:file-upload-limit', detail: {rejectedCount: scope.context.selection.limitRejectedCount}});\n }\n if (scope.context.selection.source !== 'picker') dispatchNativeChange();\n dispatch({el: root(), name: 'ui:file-upload-change', detail: {files: recordsFromSnapshot(scope.context)}});\n },\n resetSelection: (scope) => { input().value = ''; syncDom(scope.context, scope.props); },\n syncProps: (scope) => {\n syncDom(scope.context, scope.props);\n bridge.send({type: 'RECONCILE', records: scope.context.selection.files, source: 'props'});\n },\n syncDragging: (scope) => {\n const dragging = scope.snapshot.tags.includes('dragging');\n setPresence({el: root(), attr: 'data-dragging', present: dragging, value: 'true'});\n const zone = dropzone();\n if (zone) setPresence({el: zone, attr: 'data-dragging', present: dragging, value: 'true'});\n },\n clearExisting: (scope) => {\n const clear = root().querySelector<HTMLInputElement>('[data-ui-file-upload-clear]');\n if (clear) {\n clear.checked = true;\n clear.dispatchEvent(new Event('change', {bubbles: true}));\n }\n const existing = root().querySelector<HTMLElement>('[data-ui-file-upload-item][data-existing-file]');\n if (existing) existing.hidden = true;\n syncDom(scope.context, scope.props);\n dispatch({el: root(), name: 'ui:file-upload-change', detail: {files: recordsFromSnapshot(scope.context)}});\n },\n syncTransfer: (scope) => syncDom(scope.context, scope.props),\n emitComplete: (scope) => dispatch({el: root(), name: 'ui:file-upload-complete', detail: {files: recordsFromSnapshot(scope.context)}}),\n emitError: (scope) => dispatch({el: root(), name: 'ui:file-upload-error', detail: {files: recordsFromSnapshot(scope.context), error: scope.context.transfer.error}}),\n emitCancel: (scope) => dispatch({el: root(), name: 'ui:file-upload-cancel', detail: {files: recordsFromSnapshot(scope.context)}}),\n },\n }),\n });\n\n const component: TrellisAlpineComponent<FileUploadData> = {\n ...bridge,\n get files() { return this.snapshot.current ? recordsFromSnapshot(this.snapshot.current.context) : []; },\n get hasFiles() { return (this.snapshot.current?.context.selection.files.length ?? 0) > 0 || Boolean(this.snapshot.current?.context.existing.present && !this.snapshot.current.context.existing.cleared); },\n get isDragging() { return this.snapshot.current?.tags.includes('dragging') ?? false; },\n get isUploading() { return this.snapshot.current?.tags.includes('uploading') ?? false; },\n get isLimitReached() { return this.snapshot.current?.context.selection.limitReached ?? false; },\n init() {\n rootEl = this.$el;\n bridge.connect(this.$el, this.snapshot);\n const control = input();\n addListener({target: control, event: 'change', handler: () => {\n if (ignoreNativeChange) { ignoreNativeChange = false; return; }\n sendFiles(registerFiles(filesFromList(control.files)), 'picker');\n }, cleanup});\n addListener({target: root(), event: 'click', handler: (event) => {\n const target = event.target;\n if (!(target instanceof Element)) return;\n const remove = target.closest<HTMLElement>('[data-ui-file-upload-remove][data-file-id]');\n if (remove?.dataset.fileId) { event.preventDefault(); component.remove(remove.dataset.fileId); return; }\n const existing = target.closest('[data-ui-file-upload-remove][data-existing-file]');\n if (existing) { event.preventDefault(); bridge.send('CLEAR_EXISTING'); }\n }, cleanup});\n const zone = dropzone();\n if (zone) {\n cleanup.push(dropTargetForExternal({\n element: zone,\n canDrop: ({source}) => !currentProps().disabled && !bridge.hasTag('uploading') && containsFiles({source}),\n getDropEffect: () => 'copy',\n onDragEnter: () => bridge.send('DRAG_ENTER'),\n onDragLeave: () => bridge.send('DRAG_LEAVE'),\n onDrop: ({source}: ExternalDropTargetEventPayloadMap['onDrop']) => {\n bridge.send('DROP');\n if (!containsFiles({source})) return;\n sendFiles(registerFiles(getFiles({source})), 'drop', currentProps().multiple);\n },\n }));\n cleanup.push(monitorForExternal({canMonitor: ({source}) => containsFiles({source}), onDrop: () => bridge.send('DRAG_LEAVE')}));\n }\n syncDom();\n bridge.send({type: 'RECONCILE', records: [], source: 'props'});\n },\n destroy() {\n cleanup.forEach((dispose) => dispose());\n cleanup = [];\n previewUrls.forEach((url) => URL.revokeObjectURL(url));\n previewUrls.clear();\n rawFiles.clear();\n bridge.disconnect();\n rootEl = null;\n },\n browse() { if (!currentProps().disabled && !bridge.hasTag('uploading')) input().click(); },\n remove(id) {\n if (currentProps().disabled || bridge.hasTag('uploading') || !rawFiles.has(id)) return;\n const records = currentContext().selection.files.filter((record) => record.id !== id);\n sendFiles(records, 'remove');\n },\n retry() { bridge.send('RETRY_UPLOAD'); },\n cancel() { bridge.send('CANCEL_UPLOAD'); },\n file(id) { return rawFiles.get(id) ?? null; },\n };\n return component;\n};\n\nconst registerFileUpload = (AlpineInstance: Alpine.Alpine): void => {\n AlpineInstance.data('UiFileUpload', () => UiFileUpload());\n};\n\nexport {registerFileUpload, UiFileUpload};\nexport type {FileTransferStatus, FileUploadData, FileUploadMetadata, FileUploadRecord, UiFileUploadApi};\n","// Generated by scripts/generate_component_entries.mjs from packages/client/component-entries.json.\n// Do not edit by hand.\nimport type {Alpine as AlpineType} from 'alpinejs';\n\nimport {registerFileUpload as registerComponent} from './index';\n\nconst registered = new WeakSet<AlpineType>();\n\nconst registerFileUpload = (AlpineInstance: AlpineType): void => {\n if (registered.has(AlpineInstance)) return;\n registered.add(AlpineInstance);\n\n registerComponent(AlpineInstance);\n};\n\nexport {registerFileUpload};\nexport default registerFileUpload;\nexport * from './index';\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}