@12-apps/ui 6.94.0 → 6.95.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/NATIVE.md +1 -1
  2. package/components-catalog.md +7 -0
  3. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  4. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +1 -1
  5. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +1 -1
  6. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  7. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  8. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +27 -27
  9. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +32 -32
  10. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +1 -1
  11. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
  12. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +2 -2
  13. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  14. package/dist/_internal/components/data-display/DataViews/base-list-card.js +4 -4
  15. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +4 -4
  16. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
  17. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +10 -10
  18. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
  19. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +25 -25
  20. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +9 -9
  21. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +7 -7
  22. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +8 -8
  23. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  24. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +7 -7
  25. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +2 -2
  26. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +6 -6
  27. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  28. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
  29. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +3 -3
  30. package/dist/_internal/components/data-display/HoverCard/HoverCard.js +1 -1
  31. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +5 -5
  32. package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
  33. package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
  34. package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
  35. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +2 -2
  36. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +1 -1
  37. package/dist/_internal/components/data-display/Sheet/Sheet.body.js +2 -2
  38. package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
  39. package/dist/_internal/components/data-display/Sheet/Sheet.js +5 -5
  40. package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +1 -1
  41. package/dist/_internal/components/data-display/Table/Table.js +3 -3
  42. package/dist/_internal/components/data-display/index.js +39 -39
  43. package/dist/_internal/components/feedback/StackedModal/StackedModal.hooks.js +2 -2
  44. package/dist/_internal/components/feedback/StackedModal/StackedModal.js +4 -4
  45. package/dist/_internal/components/feedback/StackedModal/modal-stack.js +3 -1
  46. package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
  47. package/dist/_internal/components/feedback/UsableModal/UsableModal.js +11 -0
  48. package/dist/_internal/components/feedback/UsableModal/UsableModal.js.map +1 -0
  49. package/dist/_internal/components/feedback/UsableModal/UsableModal.modal.js +87 -0
  50. package/dist/_internal/components/feedback/UsableModal/UsableModal.modal.js.map +1 -0
  51. package/dist/_internal/components/feedback/UsableModal/UsableModal.sheet.js +91 -0
  52. package/dist/_internal/components/feedback/UsableModal/UsableModal.sheet.js.map +1 -0
  53. package/dist/_internal/components/feedback/UsableModal/UsableModal.types.js +1 -0
  54. package/dist/_internal/components/feedback/UsableModal/UsableModal.types.js.map +1 -0
  55. package/dist/_internal/components/feedback/UsableModal/has-footer.js +8 -0
  56. package/dist/_internal/components/feedback/UsableModal/has-footer.js.map +1 -0
  57. package/dist/_internal/components/feedback/UsableModal/recover-chunk.js +10 -0
  58. package/dist/_internal/components/feedback/UsableModal/recover-chunk.js.map +1 -0
  59. package/dist/_internal/components/feedback/index.js +9 -9
  60. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +3 -3
  61. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
  62. package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +2 -2
  63. package/dist/_internal/components/form/CategorySelect/CategorySelect.js +2 -2
  64. package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
  65. package/dist/_internal/components/form/Command/Command.js +2 -2
  66. package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
  67. package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
  68. package/dist/_internal/components/form/index.js +43 -43
  69. package/dist/_internal/components/form/total-form/Fields/CategoryField.js +3 -3
  70. package/dist/_internal/components/form/total-form/Fields/index.js +9 -9
  71. package/dist/_internal/components/index.js +125 -125
  72. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +3 -3
  73. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +3 -3
  74. package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +3 -3
  75. package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +2 -2
  76. package/dist/_internal/components/layout/index.js +17 -17
  77. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +6 -6
  78. package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +2 -2
  79. package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +4 -4
  80. package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
  81. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +3 -3
  82. package/dist/_internal/components/navigation/index.js +19 -19
  83. package/dist/_internal/components/utility/index.js +4 -4
  84. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  85. package/dist/charts.js +11 -11
  86. package/dist/{chunk-NQDOKJLI.js → chunk-2365CQJU.js} +2 -2
  87. package/dist/{chunk-4E2RQOSQ.js → chunk-24G3BWKD.js} +2 -2
  88. package/dist/{chunk-NASLJO2R.js → chunk-2KSFBZ2H.js} +5 -4
  89. package/dist/chunk-2KSFBZ2H.js.map +1 -0
  90. package/dist/{chunk-XE33EZVS.js → chunk-2SBQ47RI.js} +5 -5
  91. package/dist/{chunk-HWZETMO4.js → chunk-37SNQQ7P.js} +3 -3
  92. package/dist/{chunk-2L6TANRY.js → chunk-4RF4BALN.js} +3 -3
  93. package/dist/{chunk-X6D5JEUV.js → chunk-4RSFYS2V.js} +6 -6
  94. package/dist/{chunk-LYVTJLCF.js → chunk-56JF5PZK.js} +4 -4
  95. package/dist/{chunk-7WE432RQ.js → chunk-5HXVXW22.js} +5 -5
  96. package/dist/{chunk-N3GLX64O.js → chunk-5I75WRXT.js} +4 -4
  97. package/dist/{chunk-BP3ZKIPE.js → chunk-64UNVW6D.js} +4 -4
  98. package/dist/{chunk-NQ6P7O7C.js → chunk-6AKDAQSS.js} +2 -2
  99. package/dist/{chunk-PGJIWCQR.js → chunk-6EZQLNPK.js} +4 -4
  100. package/dist/{chunk-EE6DJPB7.js → chunk-6HXNFNOB.js} +4 -4
  101. package/dist/{chunk-4QTPERAY.js → chunk-6RW4WNGS.js} +4 -4
  102. package/dist/{chunk-GBB23QLL.js → chunk-6ZAKPYWX.js} +4 -4
  103. package/dist/{chunk-CWXX5JR3.js → chunk-75GAQL2Q.js} +5 -5
  104. package/dist/{chunk-JZRSHDNY.js → chunk-77FQFWA3.js} +6 -3
  105. package/dist/chunk-77FQFWA3.js.map +1 -0
  106. package/dist/{chunk-LY5I3ZSV.js → chunk-A2YLFKQU.js} +4 -4
  107. package/dist/{chunk-6DGNMASB.js → chunk-ALREWFRX.js} +4 -4
  108. package/dist/{chunk-F2UP5ZF4.js → chunk-BMC5KGH2.js} +4 -4
  109. package/dist/{chunk-3ODEBPGT.js → chunk-BRFL7OWI.js} +5 -5
  110. package/dist/chunk-BTMBQIED.js +7 -0
  111. package/dist/chunk-BTMBQIED.js.map +1 -0
  112. package/dist/{chunk-UIIHUWOV.js → chunk-C7IFBYIJ.js} +7 -7
  113. package/dist/{chunk-FKS2PNJF.js → chunk-CSD6SWBZ.js} +6 -6
  114. package/dist/{chunk-6LGKJVOA.js → chunk-E2UOEI7N.js} +2 -2
  115. package/dist/{chunk-K2VDRODL.js → chunk-E4NFH77Z.js} +4 -4
  116. package/dist/chunk-FRAFGRRD.js +53 -0
  117. package/dist/chunk-FRAFGRRD.js.map +1 -0
  118. package/dist/{chunk-VM4UYCD4.js → chunk-FTYOCFTV.js} +3 -3
  119. package/dist/{chunk-JVQ56E3U.js → chunk-FWTVIRZZ.js} +6 -6
  120. package/dist/{chunk-ALMGYCHY.js → chunk-I54YFYBS.js} +2 -2
  121. package/dist/chunk-IQDPMLDM.js +39 -0
  122. package/dist/chunk-IQDPMLDM.js.map +1 -0
  123. package/dist/{chunk-TSMF7K37.js → chunk-J4UA744J.js} +9 -2
  124. package/dist/chunk-J4UA744J.js.map +1 -0
  125. package/dist/{chunk-4J62V5OE.js → chunk-JIEVKHOH.js} +6 -6
  126. package/dist/{chunk-MKNW4FRR.js → chunk-JOQGKXR5.js} +5 -5
  127. package/dist/{chunk-Y3FYOKWF.js → chunk-KHDKG7XB.js} +2 -2
  128. package/dist/{chunk-TSID4257.js → chunk-KMMFN24G.js} +4 -4
  129. package/dist/{chunk-E5OBAS3U.js → chunk-LTJC7TGB.js} +4 -2
  130. package/dist/chunk-LTJC7TGB.js.map +1 -0
  131. package/dist/{chunk-LKWXU6NH.js → chunk-LV6AD6XC.js} +2 -2
  132. package/dist/{chunk-WQO5WONV.js → chunk-MWXZXCVX.js} +4 -4
  133. package/dist/{chunk-PNZH6CDD.js → chunk-NI3MC742.js} +4 -4
  134. package/dist/{chunk-BZYLTGOE.js → chunk-OKDKKBLI.js} +4 -4
  135. package/dist/{chunk-AJ6KFHEE.js → chunk-PJDAZG65.js} +2 -2
  136. package/dist/{chunk-FPNVOB52.js → chunk-RNIJL54W.js} +4 -4
  137. package/dist/{chunk-2M3W6ACW.js → chunk-S46LGAQ2.js} +4 -4
  138. package/dist/{chunk-6N2U67KF.js → chunk-T3KVZTO3.js} +4 -4
  139. package/dist/{chunk-GY53SDVL.js → chunk-U2SAW6DH.js} +4 -4
  140. package/dist/{chunk-P772HCHI.js → chunk-W676GY42.js} +4 -4
  141. package/dist/{chunk-T2G4LDU5.js → chunk-WLLUARTC.js} +2 -2
  142. package/dist/{chunk-SI5SKX52.js → chunk-WW3F7DCX.js} +2 -2
  143. package/dist/{chunk-UOKXYV3U.js → chunk-XALDXR3F.js} +2 -2
  144. package/dist/{chunk-ZM6FJCWS.js → chunk-XNAI7QGU.js} +4 -4
  145. package/dist/{chunk-LZ5PGB7U.js → chunk-XTYBJAZG.js} +21 -13
  146. package/dist/chunk-XTYBJAZG.js.map +1 -0
  147. package/dist/{chunk-JXK53XJW.js → chunk-YOLLISEY.js} +9 -9
  148. package/dist/{chunk-FKUVFPQZ.js → chunk-Z6QFIRD7.js} +4 -4
  149. package/dist/data-display/Avatar.js +2 -2
  150. package/dist/data-display/CardKit.js +1 -1
  151. package/dist/data-display/Carousel.js +3 -3
  152. package/dist/data-display/Chart.js +11 -11
  153. package/dist/data-display/DataViews.js +40 -40
  154. package/dist/data-display/DayRuler.js +3 -3
  155. package/dist/data-display/HoverCard.js +1 -1
  156. package/dist/data-display/Lightbox.js +5 -5
  157. package/dist/data-display/RegionMap.js +2 -2
  158. package/dist/data-display/ScheduleGrid.js +5 -5
  159. package/dist/data-display/Sheet.js +5 -5
  160. package/dist/data-display/Table.js +3 -3
  161. package/dist/feedback/ConfirmAction.js +3 -3
  162. package/dist/feedback/StackedModal.js +4 -4
  163. package/dist/feedback/TutorialOverlay.js +2 -2
  164. package/dist/feedback/UsableModal.js +9 -0
  165. package/dist/feedback/UsableModal.js.map +1 -0
  166. package/dist/form/AddressAutocomplete.js +5 -5
  167. package/dist/form/CategorySelect.js +2 -2
  168. package/dist/form/CodeEditor.js +2 -2
  169. package/dist/form/Command.js +2 -2
  170. package/dist/form/Menubar.js +2 -2
  171. package/dist/form/UploadButton.js +2 -2
  172. package/dist/form/total-form.js +7 -7
  173. package/dist/layout/ContentToolbar.js +3 -3
  174. package/dist/layout/SettingCard.js +7 -7
  175. package/dist/layout/SettingsLayout.js +3 -3
  176. package/dist/locales.js +4 -4
  177. package/dist/navigation/AppHeader.js +8 -8
  178. package/dist/navigation/NavigationMenu.js +4 -4
  179. package/dist/navigation/SectionNav.js +3 -3
  180. package/dist/pt-BR.js +5 -5
  181. package/dist/types/components/data-display/Sheet/Sheet.body.d.ts +2 -0
  182. package/dist/types/components/data-display/Sheet/Sheet.body.d.ts.map +1 -1
  183. package/dist/types/components/data-display/Sheet/Sheet.d.ts.map +1 -1
  184. package/dist/types/components/data-display/Sheet/Sheet.parts.d.ts.map +1 -1
  185. package/dist/types/components/data-display/Sheet/Sheet.types.d.ts +14 -0
  186. package/dist/types/components/data-display/Sheet/Sheet.types.d.ts.map +1 -1
  187. package/dist/types/components/feedback/StackedModal/StackedModal.hooks.d.ts.map +1 -1
  188. package/dist/types/components/feedback/StackedModal/modal-stack.d.ts +6 -0
  189. package/dist/types/components/feedback/StackedModal/modal-stack.d.ts.map +1 -1
  190. package/dist/types/components/feedback/UsableModal/UsableModal.d.ts +20 -0
  191. package/dist/types/components/feedback/UsableModal/UsableModal.d.ts.map +1 -0
  192. package/dist/types/components/feedback/UsableModal/UsableModal.modal.d.ts +11 -0
  193. package/dist/types/components/feedback/UsableModal/UsableModal.modal.d.ts.map +1 -0
  194. package/dist/types/components/feedback/UsableModal/UsableModal.sheet.d.ts +17 -0
  195. package/dist/types/components/feedback/UsableModal/UsableModal.sheet.d.ts.map +1 -0
  196. package/dist/types/components/feedback/UsableModal/UsableModal.types.d.ts +35 -0
  197. package/dist/types/components/feedback/UsableModal/UsableModal.types.d.ts.map +1 -0
  198. package/dist/types/components/feedback/UsableModal/has-footer.d.ts +4 -0
  199. package/dist/types/components/feedback/UsableModal/has-footer.d.ts.map +1 -0
  200. package/dist/types/components/feedback/UsableModal/index.d.ts +3 -0
  201. package/dist/types/components/feedback/UsableModal/index.d.ts.map +1 -0
  202. package/dist/types/components/feedback/UsableModal/recover-chunk.d.ts +24 -0
  203. package/dist/types/components/feedback/UsableModal/recover-chunk.d.ts.map +1 -0
  204. package/dist/user-avatar.js +3 -3
  205. package/package.json +5 -1
  206. package/src/components/data-display/Sheet/Sheet.body.tsx +4 -0
  207. package/src/components/data-display/Sheet/Sheet.md +5 -0
  208. package/src/components/data-display/Sheet/Sheet.parts.tsx +5 -3
  209. package/src/components/data-display/Sheet/Sheet.tsx +29 -9
  210. package/src/components/data-display/Sheet/Sheet.types.ts +14 -0
  211. package/src/components/feedback/StackedModal/StackedModal.hooks.ts +16 -0
  212. package/src/components/feedback/StackedModal/modal-stack.tsx +12 -2
  213. package/src/components/feedback/UsableModal/UsableModal.md +95 -0
  214. package/src/components/feedback/UsableModal/UsableModal.modal.tsx +76 -0
  215. package/src/components/feedback/UsableModal/UsableModal.sheet.tsx +65 -0
  216. package/src/components/feedback/UsableModal/UsableModal.tsx +92 -0
  217. package/src/components/feedback/UsableModal/UsableModal.types.ts +38 -0
  218. package/src/components/feedback/UsableModal/has-footer.ts +4 -0
  219. package/src/components/feedback/UsableModal/index.ts +2 -0
  220. package/src/components/feedback/UsableModal/recover-chunk.ts +61 -0
  221. package/dist/chunk-E5OBAS3U.js.map +0 -1
  222. package/dist/chunk-JZRSHDNY.js.map +0 -1
  223. package/dist/chunk-LZ5PGB7U.js.map +0 -1
  224. package/dist/chunk-NASLJO2R.js.map +0 -1
  225. package/dist/chunk-TSMF7K37.js.map +0 -1
  226. /package/dist/{chunk-NQDOKJLI.js.map → chunk-2365CQJU.js.map} +0 -0
  227. /package/dist/{chunk-4E2RQOSQ.js.map → chunk-24G3BWKD.js.map} +0 -0
  228. /package/dist/{chunk-XE33EZVS.js.map → chunk-2SBQ47RI.js.map} +0 -0
  229. /package/dist/{chunk-HWZETMO4.js.map → chunk-37SNQQ7P.js.map} +0 -0
  230. /package/dist/{chunk-2L6TANRY.js.map → chunk-4RF4BALN.js.map} +0 -0
  231. /package/dist/{chunk-X6D5JEUV.js.map → chunk-4RSFYS2V.js.map} +0 -0
  232. /package/dist/{chunk-LYVTJLCF.js.map → chunk-56JF5PZK.js.map} +0 -0
  233. /package/dist/{chunk-7WE432RQ.js.map → chunk-5HXVXW22.js.map} +0 -0
  234. /package/dist/{chunk-N3GLX64O.js.map → chunk-5I75WRXT.js.map} +0 -0
  235. /package/dist/{chunk-BP3ZKIPE.js.map → chunk-64UNVW6D.js.map} +0 -0
  236. /package/dist/{chunk-NQ6P7O7C.js.map → chunk-6AKDAQSS.js.map} +0 -0
  237. /package/dist/{chunk-PGJIWCQR.js.map → chunk-6EZQLNPK.js.map} +0 -0
  238. /package/dist/{chunk-EE6DJPB7.js.map → chunk-6HXNFNOB.js.map} +0 -0
  239. /package/dist/{chunk-4QTPERAY.js.map → chunk-6RW4WNGS.js.map} +0 -0
  240. /package/dist/{chunk-GBB23QLL.js.map → chunk-6ZAKPYWX.js.map} +0 -0
  241. /package/dist/{chunk-CWXX5JR3.js.map → chunk-75GAQL2Q.js.map} +0 -0
  242. /package/dist/{chunk-LY5I3ZSV.js.map → chunk-A2YLFKQU.js.map} +0 -0
  243. /package/dist/{chunk-6DGNMASB.js.map → chunk-ALREWFRX.js.map} +0 -0
  244. /package/dist/{chunk-F2UP5ZF4.js.map → chunk-BMC5KGH2.js.map} +0 -0
  245. /package/dist/{chunk-3ODEBPGT.js.map → chunk-BRFL7OWI.js.map} +0 -0
  246. /package/dist/{chunk-UIIHUWOV.js.map → chunk-C7IFBYIJ.js.map} +0 -0
  247. /package/dist/{chunk-FKS2PNJF.js.map → chunk-CSD6SWBZ.js.map} +0 -0
  248. /package/dist/{chunk-6LGKJVOA.js.map → chunk-E2UOEI7N.js.map} +0 -0
  249. /package/dist/{chunk-K2VDRODL.js.map → chunk-E4NFH77Z.js.map} +0 -0
  250. /package/dist/{chunk-VM4UYCD4.js.map → chunk-FTYOCFTV.js.map} +0 -0
  251. /package/dist/{chunk-JVQ56E3U.js.map → chunk-FWTVIRZZ.js.map} +0 -0
  252. /package/dist/{chunk-ALMGYCHY.js.map → chunk-I54YFYBS.js.map} +0 -0
  253. /package/dist/{chunk-4J62V5OE.js.map → chunk-JIEVKHOH.js.map} +0 -0
  254. /package/dist/{chunk-MKNW4FRR.js.map → chunk-JOQGKXR5.js.map} +0 -0
  255. /package/dist/{chunk-Y3FYOKWF.js.map → chunk-KHDKG7XB.js.map} +0 -0
  256. /package/dist/{chunk-TSID4257.js.map → chunk-KMMFN24G.js.map} +0 -0
  257. /package/dist/{chunk-LKWXU6NH.js.map → chunk-LV6AD6XC.js.map} +0 -0
  258. /package/dist/{chunk-WQO5WONV.js.map → chunk-MWXZXCVX.js.map} +0 -0
  259. /package/dist/{chunk-PNZH6CDD.js.map → chunk-NI3MC742.js.map} +0 -0
  260. /package/dist/{chunk-BZYLTGOE.js.map → chunk-OKDKKBLI.js.map} +0 -0
  261. /package/dist/{chunk-AJ6KFHEE.js.map → chunk-PJDAZG65.js.map} +0 -0
  262. /package/dist/{chunk-FPNVOB52.js.map → chunk-RNIJL54W.js.map} +0 -0
  263. /package/dist/{chunk-2M3W6ACW.js.map → chunk-S46LGAQ2.js.map} +0 -0
  264. /package/dist/{chunk-6N2U67KF.js.map → chunk-T3KVZTO3.js.map} +0 -0
  265. /package/dist/{chunk-GY53SDVL.js.map → chunk-U2SAW6DH.js.map} +0 -0
  266. /package/dist/{chunk-P772HCHI.js.map → chunk-W676GY42.js.map} +0 -0
  267. /package/dist/{chunk-T2G4LDU5.js.map → chunk-WLLUARTC.js.map} +0 -0
  268. /package/dist/{chunk-SI5SKX52.js.map → chunk-WW3F7DCX.js.map} +0 -0
  269. /package/dist/{chunk-UOKXYV3U.js.map → chunk-XALDXR3F.js.map} +0 -0
  270. /package/dist/{chunk-ZM6FJCWS.js.map → chunk-XNAI7QGU.js.map} +0 -0
  271. /package/dist/{chunk-JXK53XJW.js.map → chunk-YOLLISEY.js.map} +0 -0
  272. /package/dist/{chunk-FKUVFPQZ.js.map → chunk-Z6QFIRD7.js.map} +0 -0
@@ -1,3 +1,6 @@
1
+ import {
2
+ useAsyncSwitch
3
+ } from "./chunk-SALQ65SM.js";
1
4
  import {
2
5
  SettingSwitchBlock,
3
6
  useSettingSwitchIds
@@ -5,9 +8,6 @@ import {
5
8
  import {
6
9
  SettingGroupContext
7
10
  } from "./chunk-XJQNSMGA.js";
8
- import {
9
- useAsyncSwitch
10
- } from "./chunk-SALQ65SM.js";
11
11
  import {
12
12
  partTestId
13
13
  } from "./chunk-3EIRRLCQ.js";
@@ -84,4 +84,4 @@ SettingGroup.displayName = "SettingGroup";
84
84
  export {
85
85
  SettingGroup
86
86
  };
87
- //# sourceMappingURL=chunk-GBB23QLL.js.map
87
+ //# sourceMappingURL=chunk-6ZAKPYWX.js.map
@@ -1,7 +1,3 @@
1
- import {
2
- handleBlockKey,
3
- keyCreateSpan
4
- } from "./chunk-U4Z6GZDW.js";
5
1
  import {
6
2
  GroupFooter
7
3
  } from "./chunk-MPVH2GM5.js";
@@ -20,6 +16,10 @@ import {
20
16
  import {
21
17
  EN_US_DAY_RULER_LABELS
22
18
  } from "./chunk-F2ZUUEXC.js";
19
+ import {
20
+ handleBlockKey,
21
+ keyCreateSpan
22
+ } from "./chunk-U4Z6GZDW.js";
23
23
  import {
24
24
  useRulerDrag
25
25
  } from "./chunk-KXDLLS62.js";
@@ -127,4 +127,4 @@ function DayRuler(props) {
127
127
  export {
128
128
  DayRuler
129
129
  };
130
- //# sourceMappingURL=chunk-CWXX5JR3.js.map
130
+ //# sourceMappingURL=chunk-75GAQL2Q.js.map
@@ -10,7 +10,7 @@ var BASE_Z_INDEX = MODAL_STACK_BASE_Z_INDEX;
10
10
  var Z_INDEX_STEP = MODAL_STACK_Z_INDEX_STEP;
11
11
  var noop = () => {
12
12
  };
13
- var ModalStackContext = createContext({
13
+ var NO_STACK = {
14
14
  stack: [],
15
15
  pushModal: noop,
16
16
  popModal: noop,
@@ -18,7 +18,9 @@ var ModalStackContext = createContext({
18
18
  currentDepth: 0,
19
19
  isModalInStack: () => false,
20
20
  getModalRole: () => null
21
- });
21
+ };
22
+ var ModalStackContext = createContext(NO_STACK);
23
+ var useInModalStack = () => useContext(ModalStackContext) !== NO_STACK;
22
24
  var useModalStack = () => {
23
25
  const context = useContext(ModalStackContext);
24
26
  if (!context) {
@@ -95,7 +97,8 @@ var ModalStackProvider = ({ children }) => {
95
97
  };
96
98
 
97
99
  export {
100
+ useInModalStack,
98
101
  useModalStack,
99
102
  ModalStackProvider
100
103
  };
101
- //# sourceMappingURL=chunk-JZRSHDNY.js.map
104
+ //# sourceMappingURL=chunk-77FQFWA3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/StackedModal/modal-stack.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { MODAL_STACK_BASE_Z_INDEX, MODAL_STACK_Z_INDEX_STEP } from '../../../tokens/layers';\nimport type { ModalInfo, ModalPanelRole, ModalStackContextValue } from './StackedModal.types';\n\n/**\n * MUI Dialog default z-index; each panel in the stack sits 10 above the last.\n *\n * Imported rather than declared here: anything that portals out of a panel has\n * to clear this ladder, so the numbers are shared with the token that tells it\n * how — see `tokens/layers`.\n */\nconst BASE_Z_INDEX = MODAL_STACK_BASE_Z_INDEX;\nconst Z_INDEX_STEP = MODAL_STACK_Z_INDEX_STEP;\n\nconst noop = (): void => {\n /** do nothing */\n};\n\n/** What a `StackedModal` reads with no provider above it: an empty stack nothing can push onto. */\nconst NO_STACK: ModalStackContextValue = {\n stack: [],\n pushModal: noop,\n popModal: noop,\n clearStack: noop,\n currentDepth: 0,\n isModalInStack: () => false,\n getModalRole: () => null,\n};\n\nconst ModalStackContext = createContext<ModalStackContextValue>(NO_STACK);\n\n/**\n * Whether a `ModalStackProvider` is above this point. A component that opens a\n * `StackedModal` on its own (`UsableModal`) brings a provider only when the\n * host has none, so its panel still joins a stack the host already keeps.\n */\nexport const useInModalStack = (): boolean => useContext(ModalStackContext) !== NO_STACK;\n\nexport const useModalStack = (): ModalStackContextValue => {\n const context = useContext(ModalStackContext);\n if (!context) {\n throw new Error('useModalStack must be used within a ModalStackProvider');\n }\n return context;\n};\n\n/** Top of the stack drives the view; the one behind it recedes; the rest are hidden. */\nconst roleAt = (index: number, depth: number): ModalPanelRole => {\n if (index === depth - 1) return 'primary';\n if (index === depth - 2) return 'secondary';\n return 'background';\n};\n\n/** Re-derive every role from stack position — the one place roles are assigned. */\nconst withRoles = (stack: ModalInfo[]): ModalInfo[] =>\n stack.map((modal, index) => ({ ...modal, role: roleAt(index, stack.length) }));\n\n/**\n * Locks body scroll while any modal is open, restoring whatever the page had\n * before. Owned by the provider rather than each modal, so nested panels can't\n * fight over the same style.\n */\nconst useBodyScrollLock = (locked: boolean): void => {\n const originalOverflow = useRef<string>('');\n\n useEffect(() => {\n const restore = (): void => {\n if (!originalOverflow.current) return;\n document.body.style.overflow = originalOverflow.current;\n originalOverflow.current = '';\n };\n\n if (locked) {\n if (!originalOverflow.current) {\n originalOverflow.current = document.body.style.overflow || '';\n }\n document.body.style.overflow = 'hidden';\n } else {\n restore();\n }\n\n return restore;\n }, [locked]);\n};\n\nexport const ModalStackProvider: FC<{ children: ReactNode }> = ({ children }) => {\n const [stack, setStack] = useState<ModalInfo[]>([]);\n\n useBodyScrollLock(stack.length > 0);\n\n const pushModal = useCallback((modalId: string) => {\n setStack((prev) => {\n if (prev.some((m) => m.id === modalId)) return prev;\n const entry: ModalInfo = {\n id: modalId,\n zIndex: BASE_Z_INDEX + prev.length * Z_INDEX_STEP,\n role: 'primary',\n };\n return withRoles([...prev, entry]);\n });\n }, []);\n\n const popModal = useCallback((modalId?: string) => {\n setStack((prev) =>\n withRoles(modalId ? prev.filter((m) => m.id !== modalId) : prev.slice(0, -1)),\n );\n }, []);\n\n const clearStack = useCallback(() => setStack([]), []);\n\n const isModalInStack = useCallback(\n (modalId: string) => stack.some((m) => m.id === modalId),\n [stack],\n );\n\n const getModalRole = useCallback(\n (modalId: string) => stack.find((m) => m.id === modalId)?.role ?? null,\n [stack],\n );\n\n const value = useMemo(\n () => ({\n stack,\n pushModal,\n popModal,\n clearStack,\n currentDepth: stack.length,\n isModalInStack,\n getModalRole,\n }),\n [stack, pushModal, popModal, clearStack, isModalInStack, getModalRole],\n );\n\n return <ModalStackContext.Provider value={value}>{children}</ModalStackContext.Provider>;\n};\n"],"mappings":";;;;;;AACA,SAAS,eAAe,aAAa,YAAY,WAAW,SAAS,QAAQ,gBAAgB;AAqIpF;AA1HT,IAAM,eAAe;AACrB,IAAM,eAAe;AAErB,IAAM,OAAO,MAAY;AAEzB;AAGA,IAAM,WAAmC;AAAA,EACvC,OAAO,CAAC;AAAA,EACR,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,gBAAgB,MAAM;AAAA,EACtB,cAAc,MAAM;AACtB;AAEA,IAAM,oBAAoB,cAAsC,QAAQ;AAOjE,IAAM,kBAAkB,MAAe,WAAW,iBAAiB,MAAM;AAEzE,IAAM,gBAAgB,MAA8B;AACzD,QAAM,UAAU,WAAW,iBAAiB;AAC5C,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACA,SAAO;AACT;AAGA,IAAM,SAAS,CAAC,OAAe,UAAkC;AAC/D,MAAI,UAAU,QAAQ,EAAG,QAAO;AAChC,MAAI,UAAU,QAAQ,EAAG,QAAO;AAChC,SAAO;AACT;AAGA,IAAM,YAAY,CAAC,UACjB,MAAM,IAAI,CAAC,OAAO,WAAW,EAAE,GAAG,OAAO,MAAM,OAAO,OAAO,MAAM,MAAM,EAAE,EAAE;AAO/E,IAAM,oBAAoB,CAAC,WAA0B;AACnD,QAAM,mBAAmB,OAAe,EAAE;AAE1C,YAAU,MAAM;AACd,UAAM,UAAU,MAAY;AAC1B,UAAI,CAAC,iBAAiB,QAAS;AAC/B,eAAS,KAAK,MAAM,WAAW,iBAAiB;AAChD,uBAAiB,UAAU;AAAA,IAC7B;AAEA,QAAI,QAAQ;AACV,UAAI,CAAC,iBAAiB,SAAS;AAC7B,yBAAiB,UAAU,SAAS,KAAK,MAAM,YAAY;AAAA,MAC7D;AACA,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC,OAAO;AACL,cAAQ;AAAA,IACV;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,MAAM,CAAC;AACb;AAEO,IAAM,qBAAkD,CAAC,EAAE,SAAS,MAAM;AAC/E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsB,CAAC,CAAC;AAElD,oBAAkB,MAAM,SAAS,CAAC;AAElC,QAAM,YAAY,YAAY,CAAC,YAAoB;AACjD,aAAS,CAAC,SAAS;AACjB,UAAI,KAAK,KAAK,CAAC,MAAM,EAAE,OAAO,OAAO,EAAG,QAAO;AAC/C,YAAM,QAAmB;AAAA,QACvB,IAAI;AAAA,QACJ,QAAQ,eAAe,KAAK,SAAS;AAAA,QACrC,MAAM;AAAA,MACR;AACA,aAAO,UAAU,CAAC,GAAG,MAAM,KAAK,CAAC;AAAA,IACnC,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,QAAM,WAAW,YAAY,CAAC,YAAqB;AACjD;AAAA,MAAS,CAAC,SACR,UAAU,UAAU,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,IAC9E;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,aAAa,YAAY,MAAM,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;AAErD,QAAM,iBAAiB;AAAA,IACrB,CAAC,YAAoB,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,OAAO;AAAA,IACvD,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,eAAe;AAAA,IACnB,CAAC,YAAoB,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,OAAO,GAAG,QAAQ;AAAA,IAClE,CAAC,KAAK;AAAA,EACR;AAEA,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc,MAAM;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,OAAO,WAAW,UAAU,YAAY,gBAAgB,YAAY;AAAA,EACvE;AAEA,SAAO,oBAAC,kBAAkB,UAAlB,EAA2B,OAAe,UAAS;AAC7D;","names":[]}
@@ -1,9 +1,9 @@
1
- import {
2
- SettingsSectionChips
3
- } from "./chunk-GBVNY2LG.js";
4
1
  import {
5
2
  SettingsSectionHeader
6
3
  } from "./chunk-WOXNVM52.js";
4
+ import {
5
+ SettingsSectionChips
6
+ } from "./chunk-GBVNY2LG.js";
7
7
  import {
8
8
  TOUCH_TARGET,
9
9
  atLeastRail,
@@ -167,4 +167,4 @@ function SettingsPanel({
167
167
  export {
168
168
  SettingsPanel
169
169
  };
170
- //# sourceMappingURL=chunk-LY5I3ZSV.js.map
170
+ //# sourceMappingURL=chunk-A2YLFKQU.js.map
@@ -1,12 +1,12 @@
1
- import {
2
- useMenubarMenus
3
- } from "./chunk-42VH7N5L.js";
4
1
  import {
5
2
  MenubarToolbar
6
3
  } from "./chunk-X3EB67O2.js";
7
4
  import {
8
5
  barStyles
9
6
  } from "./chunk-UCRGKQUW.js";
7
+ import {
8
+ useMenubarMenus
9
+ } from "./chunk-42VH7N5L.js";
10
10
  import {
11
11
  withDefaults
12
12
  } from "./chunk-HPK33ACY.js";
@@ -190,4 +190,4 @@ export {
190
190
  Menubar,
191
191
  MenubarGroup
192
192
  };
193
- //# sourceMappingURL=chunk-6DGNMASB.js.map
193
+ //# sourceMappingURL=chunk-ALREWFRX.js.map
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-T7OIVPCO.js";
6
6
  import {
7
7
  MoreFilters
8
- } from "./chunk-4E2RQOSQ.js";
8
+ } from "./chunk-24G3BWKD.js";
9
9
  import {
10
10
  PillControl
11
- } from "./chunk-AJ6KFHEE.js";
11
+ } from "./chunk-PJDAZG65.js";
12
12
  import {
13
13
  QuickChip
14
14
  } from "./chunk-AT6UKTH4.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-KYUEO2IO.js";
18
18
  import {
19
19
  RangePill
20
- } from "./chunk-FPNVOB52.js";
20
+ } from "./chunk-RNIJL54W.js";
21
21
  import {
22
22
  CollapsedSearch,
23
23
  InlineKeyword
@@ -251,4 +251,4 @@ function FilterSlots({
251
251
  export {
252
252
  InlineFilterControls
253
253
  };
254
- //# sourceMappingURL=chunk-F2UP5ZF4.js.map
254
+ //# sourceMappingURL=chunk-BMC5KGH2.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ ToggleField
3
+ } from "./chunk-RLTYBV4N.js";
1
4
  import {
2
5
  TextField
3
6
  } from "./chunk-GB7NTXL2.js";
@@ -9,10 +12,7 @@ import {
9
12
  } from "./chunk-KXVWH3JM.js";
10
13
  import {
11
14
  CategoryField
12
- } from "./chunk-NQ6P7O7C.js";
13
- import {
14
- ToggleField
15
- } from "./chunk-RLTYBV4N.js";
15
+ } from "./chunk-6AKDAQSS.js";
16
16
  import {
17
17
  __export
18
18
  } from "./chunk-PZ5AY32C.js";
@@ -30,4 +30,4 @@ __export(Fields_exports, {
30
30
  export {
31
31
  Fields_exports
32
32
  };
33
- //# sourceMappingURL=chunk-3ODEBPGT.js.map
33
+ //# sourceMappingURL=chunk-BRFL7OWI.js.map
@@ -0,0 +1,7 @@
1
+ // src/components/feedback/UsableModal/has-footer.ts
2
+ var hasFooter = (footer) => footer !== void 0 && footer !== null && footer !== false;
3
+
4
+ export {
5
+ hasFooter
6
+ };
7
+ //# sourceMappingURL=chunk-BTMBQIED.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/UsableModal/has-footer.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\n/** A footer worth a bar: `null`, `false` and `undefined` draw none, on either surface. */\nexport const hasFooter = (footer: ReactNode): boolean => footer !== undefined && footer !== null && footer !== false;\n"],"mappings":";AAGO,IAAM,YAAY,CAAC,WAA+B,WAAW,UAAa,WAAW,QAAQ,WAAW;","names":[]}
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  GridMain
3
- } from "./chunk-ZM6FJCWS.js";
3
+ } from "./chunk-XNAI7QGU.js";
4
4
  import {
5
5
  FilterDialog,
6
6
  GridFilterPanel
7
- } from "./chunk-BZYLTGOE.js";
7
+ } from "./chunk-OKDKKBLI.js";
8
8
  import {
9
9
  ShellEmpty
10
10
  } from "./chunk-MKVDHR3B.js";
11
11
  import {
12
12
  InlineFilterControls
13
- } from "./chunk-F2UP5ZF4.js";
13
+ } from "./chunk-BMC5KGH2.js";
14
14
  import {
15
15
  GridHeaderRow
16
16
  } from "./chunk-X3AFXHY5.js";
@@ -24,9 +24,6 @@ import {
24
24
  toOverflowFields,
25
25
  toggleQuick
26
26
  } from "./chunk-KYUEO2IO.js";
27
- import {
28
- ShellToolbar
29
- } from "./chunk-SI5SKX52.js";
30
27
  import {
31
28
  allOnPageSelected,
32
29
  resolveSelectionExtra
@@ -34,6 +31,9 @@ import {
34
31
  import {
35
32
  ScopeTabsSlot
36
33
  } from "./chunk-K3PMMW23.js";
34
+ import {
35
+ ShellToolbar
36
+ } from "./chunk-WW3F7DCX.js";
37
37
  import {
38
38
  SHELL_PROPS,
39
39
  useStickyBarTop
@@ -252,4 +252,4 @@ function GridShell(props) {
252
252
  export {
253
253
  GridShell
254
254
  };
255
- //# sourceMappingURL=chunk-UIIHUWOV.js.map
255
+ //# sourceMappingURL=chunk-C7IFBYIJ.js.map
@@ -5,6 +5,11 @@ import {
5
5
  StandaloneContainer,
6
6
  useRowLayout
7
7
  } from "./chunk-E6K2UZGR.js";
8
+ import {
9
+ DiscloseSlot,
10
+ DragSlot,
11
+ SelectSlot
12
+ } from "./chunk-QO7UJXXO.js";
8
13
  import {
9
14
  actionProps,
10
15
  metaShape,
@@ -17,11 +22,6 @@ import {
17
22
  ListCardMeta,
18
23
  ListCardTail
19
24
  } from "./chunk-CSJ7WNXU.js";
20
- import {
21
- DiscloseSlot,
22
- DragSlot,
23
- SelectSlot
24
- } from "./chunk-QO7UJXXO.js";
25
25
  import {
26
26
  DropIndicator
27
27
  } from "./chunk-K4EKTMTC.js";
@@ -185,4 +185,4 @@ function BaseListCard(props) {
185
185
  export {
186
186
  BaseListCard
187
187
  };
188
- //# sourceMappingURL=chunk-FKS2PNJF.js.map
188
+ //# sourceMappingURL=chunk-CSD6SWBZ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-DQ22UKMZ.js";
4
4
  import {
5
5
  Avatar
6
- } from "./chunk-4J62V5OE.js";
6
+ } from "./chunk-JIEVKHOH.js";
7
7
  import {
8
8
  Card
9
9
  } from "./chunk-4XBAEKQQ.js";
@@ -80,4 +80,4 @@ export {
80
80
  UserAvatar,
81
81
  UserMenu
82
82
  };
83
- //# sourceMappingURL=chunk-6LGKJVOA.js.map
83
+ //# sourceMappingURL=chunk-E2UOEI7N.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ useAsyncSwitch
3
+ } from "./chunk-SALQ65SM.js";
1
4
  import {
2
5
  SettingSwitchBlock,
3
6
  useSettingSwitchIds
@@ -5,9 +8,6 @@ import {
5
8
  import {
6
9
  useSettingGroup
7
10
  } from "./chunk-XJQNSMGA.js";
8
- import {
9
- useAsyncSwitch
10
- } from "./chunk-SALQ65SM.js";
11
11
  import {
12
12
  flatStyles,
13
13
  surfaceStyles,
@@ -44,4 +44,4 @@ SettingToggle.displayName = "SettingToggle";
44
44
  export {
45
45
  SettingToggle
46
46
  };
47
- //# sourceMappingURL=chunk-K2VDRODL.js.map
47
+ //# sourceMappingURL=chunk-E4NFH77Z.js.map
@@ -0,0 +1,53 @@
1
+ import {
2
+ recoverChunk
3
+ } from "./chunk-IQDPMLDM.js";
4
+
5
+ // src/components/feedback/UsableModal/UsableModal.tsx
6
+ import { useTheme } from "@mui/material/styles/index.js";
7
+ import useMediaQuery from "@mui/material/useMediaQuery/index.js";
8
+ import { lazy, Suspense, useEffect, useState } from "react";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var StackedSurface = lazy(
11
+ recoverChunk(async () => ({
12
+ default: (await import("./_internal/components/feedback/UsableModal/UsableModal.modal.js")).UsableModalStacked
13
+ }))
14
+ );
15
+ var SheetSurface = lazy(
16
+ recoverChunk(async () => ({
17
+ default: (await import("./_internal/components/feedback/UsableModal/UsableModal.sheet.js")).UsableModalSheet
18
+ }))
19
+ );
20
+ function useViewportSurface(layout) {
21
+ const theme = useTheme();
22
+ const phone = useMediaQuery(theme.breakpoints.down("sm"), { noSsr: true });
23
+ if (layout !== "auto") return layout;
24
+ return phone ? "sheet" : "modal";
25
+ }
26
+ var SURFACE_EXIT_MS = 400;
27
+ function useOpenedSurface(open, layout) {
28
+ const viewport = useViewportSurface(layout);
29
+ const [surface, setSurface] = useState(open ? viewport : null);
30
+ const [wasOpen, setWasOpen] = useState(open);
31
+ if (open !== wasOpen) {
32
+ setWasOpen(open);
33
+ if (open) setSurface(viewport);
34
+ }
35
+ useEffect(() => {
36
+ if (open || surface === null) return;
37
+ const timer = window.setTimeout(() => setSurface(null), SURFACE_EXIT_MS);
38
+ return () => window.clearTimeout(timer);
39
+ }, [open, surface]);
40
+ return surface;
41
+ }
42
+ function UsableModal({ layout = "auto", ...props }) {
43
+ const surface = useOpenedSurface(props.open, layout);
44
+ if (surface === null) return null;
45
+ const Shown = surface === "sheet" ? SheetSurface : StackedSurface;
46
+ return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Shown, { ...props }) });
47
+ }
48
+
49
+ export {
50
+ SURFACE_EXIT_MS,
51
+ UsableModal
52
+ };
53
+ //# sourceMappingURL=chunk-FRAFGRRD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/UsableModal/UsableModal.tsx"],"sourcesContent":["import { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport { lazy, Suspense, useEffect, useState, type ComponentType } from 'react';\n\nimport { recoverChunk } from './recover-chunk';\nimport type { UsableModalLayout, UsableModalProps, UsableModalSurfaceProps } from './UsableModal.types';\n\ntype Surface = 'modal' | 'sheet';\n\n/**\n * Each surface is its own chunk (the package builds with `splitting: true`), so\n * a phone never downloads `StackedModal` and a computer never downloads `Sheet`.\n * A chunk a deploy replaced is retried, then the page reloads once onto the\n * current build (`./recover-chunk`) — never the host's error boundary.\n */\nconst StackedSurface = lazy(\n recoverChunk(async (): Promise<{ default: ComponentType<UsableModalSurfaceProps> }> => ({\n default: (await import('./UsableModal.modal')).UsableModalStacked,\n })),\n);\nconst SheetSurface = lazy(\n recoverChunk(async (): Promise<{ default: ComponentType<UsableModalSurfaceProps> }> => ({\n default: (await import('./UsableModal.sheet')).UsableModalSheet,\n })),\n);\n\n/** The surface the viewport asks for now: a sheet below `sm`, a stacked modal from `sm` up. */\nfunction useViewportSurface(layout: UsableModalLayout): Surface {\n const theme = useTheme();\n // `noSsr`: the first render already knows the width, so a phone never mounts\n // (and never fetches) the stacked modal for one frame before the sheet.\n const phone = useMediaQuery(theme.breakpoints.down('sm'), { noSsr: true });\n if (layout !== 'auto') return layout;\n return phone ? 'sheet' : 'modal';\n}\n\n/**\n * How long a closed surface stays mounted: longer than its own way out — the\n * drawer's slide-down (225 ms) and the stacked modal's leaving its stack\n * (300 ms) — so neither is cut off.\n */\nexport const SURFACE_EXIT_MS = 400;\n\n/**\n * The surface is chosen when the modal OPENS and kept until it closes: a phone\n * turned to landscape, or a window narrowed past `sm`, mid-task, does not swap\n * the surface and throw away what the person typed. The next opening asks the\n * viewport again.\n *\n * Once closed, and its way out run, the surface is let go of: every opening\n * starts with a fresh body on both surfaces (the sheet would otherwise keep its\n * content mounted, and the last half-written form, while the stacked modal\n * drops its own), and a closed sheet leaves nothing on the page — not even the\n * drawer's edge strip that swallows taps and swipes the sheet open.\n */\nfunction useOpenedSurface(open: boolean, layout: UsableModalLayout): Surface | null {\n const viewport = useViewportSurface(layout);\n const [surface, setSurface] = useState<Surface | null>(open ? viewport : null);\n const [wasOpen, setWasOpen] = useState(open);\n if (open !== wasOpen) {\n setWasOpen(open);\n if (open) setSurface(viewport);\n }\n useEffect(() => {\n if (open || surface === null) return;\n const timer = window.setTimeout(() => setSurface(null), SURFACE_EXIT_MS);\n return () => window.clearTimeout(timer);\n }, [open, surface]);\n return surface;\n}\n\n/**\n * A modal that is a `StackedModal` on a computer and a bottom `Sheet` on a\n * phone, behind one API: title, body, a pinned footer, and the ways out.\n *\n * Nothing is fetched until the first open: until then it renders nothing.\n * Closing hands the surface `open={false}`, so it runs its own way out — the\n * slide-out, and the stacked modal leaving its stack — and then it unmounts\n * (`SURFACE_EXIT_MS`). While the\n * chunk loads the screen shows no placeholder: a modal that blinks a spinner\n * before its content is worse than one that appears a frame later.\n */\nexport function UsableModal({ layout = 'auto', ...props }: UsableModalProps): React.JSX.Element | null {\n const surface = useOpenedSurface(props.open, layout);\n if (surface === null) return null;\n const Shown = surface === 'sheet' ? SheetSurface : StackedSurface;\n return (\n <Suspense fallback={null}>\n <Shown {...props} />\n </Suspense>\n );\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AACzB,OAAO,mBAAmB;AAC1B,SAAS,MAAM,UAAU,WAAW,gBAAoC;AAsFlE;AAzEN,IAAM,iBAAiB;AAAA,EACrB,aAAa,aAA2E;AAAA,IACtF,UAAU,MAAM,OAAO,kEAAqB,GAAG;AAAA,EACjD,EAAE;AACJ;AACA,IAAM,eAAe;AAAA,EACnB,aAAa,aAA2E;AAAA,IACtF,UAAU,MAAM,OAAO,kEAAqB,GAAG;AAAA,EACjD,EAAE;AACJ;AAGA,SAAS,mBAAmB,QAAoC;AAC9D,QAAM,QAAQ,SAAS;AAGvB,QAAM,QAAQ,cAAc,MAAM,YAAY,KAAK,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC;AACzE,MAAI,WAAW,OAAQ,QAAO;AAC9B,SAAO,QAAQ,UAAU;AAC3B;AAOO,IAAM,kBAAkB;AAc/B,SAAS,iBAAiB,MAAe,QAA2C;AAClF,QAAM,WAAW,mBAAmB,MAAM;AAC1C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAyB,OAAO,WAAW,IAAI;AAC7E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAC3C,MAAI,SAAS,SAAS;AACpB,eAAW,IAAI;AACf,QAAI,KAAM,YAAW,QAAQ;AAAA,EAC/B;AACA,YAAU,MAAM;AACd,QAAI,QAAQ,YAAY,KAAM;AAC9B,UAAM,QAAQ,OAAO,WAAW,MAAM,WAAW,IAAI,GAAG,eAAe;AACvE,WAAO,MAAM,OAAO,aAAa,KAAK;AAAA,EACxC,GAAG,CAAC,MAAM,OAAO,CAAC;AAClB,SAAO;AACT;AAaO,SAAS,YAAY,EAAE,SAAS,QAAQ,GAAG,MAAM,GAA+C;AACrG,QAAM,UAAU,iBAAiB,MAAM,MAAM,MAAM;AACnD,MAAI,YAAY,KAAM,QAAO;AAC7B,QAAM,QAAQ,YAAY,UAAU,eAAe;AACnD,SACE,oBAAC,YAAS,UAAU,MAClB,8BAAC,SAAO,GAAG,OAAO,GACpB;AAEJ;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  NavigationMegaSection
3
- } from "./chunk-4QTPERAY.js";
3
+ } from "./chunk-6RW4WNGS.js";
4
4
  import {
5
5
  NavigationStandardBody
6
- } from "./chunk-PNZH6CDD.js";
6
+ } from "./chunk-NI3MC742.js";
7
7
  import {
8
8
  LogoBar,
9
9
  NavigationShell
@@ -177,4 +177,4 @@ NavigationMenu.displayName = "NavigationMenu";
177
177
  export {
178
178
  NavigationMenu
179
179
  };
180
- //# sourceMappingURL=chunk-VM4UYCD4.js.map
180
+ //# sourceMappingURL=chunk-FTYOCFTV.js.map
@@ -3,25 +3,25 @@ import {
3
3
  } from "./chunk-UOS7DEQZ.js";
4
4
  import {
5
5
  LightboxThumbnails
6
- } from "./chunk-BP3ZKIPE.js";
6
+ } from "./chunk-64UNVW6D.js";
7
7
  import {
8
8
  LightboxStage
9
9
  } from "./chunk-SYGM4SHY.js";
10
10
  import {
11
11
  LightboxOverlay
12
- } from "./chunk-T2G4LDU5.js";
12
+ } from "./chunk-WLLUARTC.js";
13
13
  import {
14
14
  LightboxCurrentMedia
15
15
  } from "./chunk-RBGUS7WO.js";
16
- import {
17
- LightboxCopyProvider
18
- } from "./chunk-TEQYTEM2.js";
19
16
  import {
20
17
  useLightbox
21
18
  } from "./chunk-HZBDTPPV.js";
22
19
  import {
23
20
  makeTestId
24
21
  } from "./chunk-VQU3CBAL.js";
22
+ import {
23
+ LightboxCopyProvider
24
+ } from "./chunk-TEQYTEM2.js";
25
25
  import {
26
26
  scrim
27
27
  } from "./chunk-XJAD6E3V.js";
@@ -148,4 +148,4 @@ export {
148
148
  Lightbox,
149
149
  Lightbox_default
150
150
  };
151
- //# sourceMappingURL=chunk-JVQ56E3U.js.map
151
+ //# sourceMappingURL=chunk-FWTVIRZZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Sheet
3
- } from "./chunk-LZ5PGB7U.js";
3
+ } from "./chunk-XTYBJAZG.js";
4
4
  import {
5
5
  Dialog
6
6
  } from "./chunk-DAFFZED3.js";
@@ -166,4 +166,4 @@ AppHeaderDetails.displayName = "AppHeaderDetails";
166
166
  export {
167
167
  AppHeaderDetails
168
168
  };
169
- //# sourceMappingURL=chunk-ALMGYCHY.js.map
169
+ //# sourceMappingURL=chunk-I54YFYBS.js.map
@@ -0,0 +1,39 @@
1
+ // src/components/feedback/UsableModal/recover-chunk.ts
2
+ var RELOADED_KEY = "12-apps-ui:usable-modal-chunk-reload";
3
+ var RELOAD_SPENT_MS = 5 * 60 * 1e3;
4
+ var Nothing = () => null;
5
+ function readReloaded() {
6
+ try {
7
+ const at = Number(window.sessionStorage.getItem(RELOADED_KEY));
8
+ return at > 0 && Date.now() - at < RELOAD_SPENT_MS;
9
+ } catch {
10
+ return true;
11
+ }
12
+ }
13
+ function writeReloaded(value) {
14
+ try {
15
+ if (value) window.sessionStorage.setItem(RELOADED_KEY, String(Date.now()));
16
+ else window.sessionStorage.removeItem(RELOADED_KEY);
17
+ } catch {
18
+ }
19
+ }
20
+ function recoverChunk(load) {
21
+ return async () => {
22
+ try {
23
+ const loaded = await load().catch(() => load());
24
+ writeReloaded(false);
25
+ return loaded;
26
+ } catch {
27
+ if (typeof window === "undefined" || readReloaded()) return { default: Nothing };
28
+ writeReloaded(true);
29
+ window.location.reload();
30
+ return new Promise(() => void 0);
31
+ }
32
+ };
33
+ }
34
+
35
+ export {
36
+ RELOAD_SPENT_MS,
37
+ recoverChunk
38
+ };
39
+ //# sourceMappingURL=chunk-IQDPMLDM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/UsableModal/recover-chunk.ts"],"sourcesContent":["import type { ComponentType } from 'react';\n\n/** Remembers, for this tab, WHEN a reload was last spent on a missing chunk. */\nconst RELOADED_KEY = '12-apps-ui:usable-modal-chunk-reload';\n\n/**\n * How long a reload counts as spent. Inside it, a chunk still missing after the\n * reload is not a deploy but a broken build: render nothing rather than loop.\n * Past it, a missing chunk is the NEXT deploy — a tab open for days meets one a\n * day — and earns its own reload; a flag kept for the tab's life would leave\n * the modal silently dead after the second deploy.\n */\nexport const RELOAD_SPENT_MS = 5 * 60 * 1000;\n\ntype Module<P> = { default: ComponentType<P> };\n\n/** Renders nothing: what a surface becomes when its chunk cannot be had at all. */\nconst Nothing = (): null => null;\n\nfunction readReloaded(): boolean {\n try {\n const at = Number(window.sessionStorage.getItem(RELOADED_KEY));\n return at > 0 && Date.now() - at < RELOAD_SPENT_MS;\n } catch {\n return true;\n }\n}\n\nfunction writeReloaded(value: boolean): void {\n try {\n if (value) window.sessionStorage.setItem(RELOADED_KEY, String(Date.now()));\n else window.sessionStorage.removeItem(RELOADED_KEY);\n } catch {\n // Storage refused (private mode, quota): the reload guard is lost, not the modal.\n }\n}\n\n/**\n * A lazy loader that survives a deploy. Every deploy replaces a host's hashed\n * chunks, so a tab opened before it asks for a file that is gone. The import is\n * tried twice; then the page reloads ONCE onto the current build (the same\n * answer as a host's own route loader); if that already happened in this tab\n * in the last `RELOAD_SPENT_MS`,\n * the modal renders nothing rather than handing the failure to the host's\n * error boundary and losing the whole page for opening a modal.\n */\nexport function recoverChunk<P>(load: () => Promise<Module<P>>): () => Promise<Module<P>> {\n return async () => {\n try {\n const loaded = await load().catch(() => load());\n writeReloaded(false);\n return loaded;\n } catch {\n if (typeof window === 'undefined' || readReloaded()) return { default: Nothing };\n writeReloaded(true);\n window.location.reload();\n // The page is going away; nothing should render in the meantime.\n return new Promise<Module<P>>(() => undefined);\n }\n };\n}\n"],"mappings":";AAGA,IAAM,eAAe;AASd,IAAM,kBAAkB,IAAI,KAAK;AAKxC,IAAM,UAAU,MAAY;AAE5B,SAAS,eAAwB;AAC/B,MAAI;AACF,UAAM,KAAK,OAAO,OAAO,eAAe,QAAQ,YAAY,CAAC;AAC7D,WAAO,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK;AAAA,EACrC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,cAAc,OAAsB;AAC3C,MAAI;AACF,QAAI,MAAO,QAAO,eAAe,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC,CAAC;AAAA,QACpE,QAAO,eAAe,WAAW,YAAY;AAAA,EACpD,QAAQ;AAAA,EAER;AACF;AAWO,SAAS,aAAgB,MAA0D;AACxF,SAAO,YAAY;AACjB,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC;AAC9C,oBAAc,KAAK;AACnB,aAAO;AAAA,IACT,QAAQ;AACN,UAAI,OAAO,WAAW,eAAe,aAAa,EAAG,QAAO,EAAE,SAAS,QAAQ;AAC/E,oBAAc,IAAI;AAClB,aAAO,SAAS,OAAO;AAEvB,aAAO,IAAI,QAAmB,MAAM,MAAS;AAAA,IAC/C;AAAA,EACF;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useModalStack
3
- } from "./chunk-JZRSHDNY.js";
3
+ } from "./chunk-77FQFWA3.js";
4
4
 
5
5
  // src/components/feedback/StackedModal/StackedModal.hooks.ts
6
6
  import { useTheme } from "@mui/material/styles/index.js";
@@ -68,6 +68,13 @@ var useStackRegistration = (open, modalId) => {
68
68
  const timer = window.setTimeout(() => popModal(modalId), ROLE_TRANSITION_MS);
69
69
  return () => window.clearTimeout(timer);
70
70
  }, [open, modalId, popModal, isModalInStack]);
71
+ useEffect(
72
+ () => () => {
73
+ popModal(modalId);
74
+ hasRegisteredRef.current = false;
75
+ },
76
+ [modalId, popModal]
77
+ );
71
78
  };
72
79
  var usePanelChrome = (options) => {
73
80
  const { open, modalId, loading, closeOnEsc, closeOnClickOutside, disableFocusTrap, onClose } = options;
@@ -144,4 +151,4 @@ var useModalRole = (open, modalId) => {
144
151
  export {
145
152
  usePanelChrome
146
153
  };
147
- //# sourceMappingURL=chunk-TSMF7K37.js.map
154
+ //# sourceMappingURL=chunk-J4UA744J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/StackedModal/StackedModal.hooks.ts"],"sourcesContent":["import { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport type { RefObject } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { useModalStack } from './modal-stack';\nimport type { ModalPanelRole } from './StackedModal.types';\n\nconst FOCUSABLE = 'a[href], button, textarea, input, select, [tabindex]:not([tabindex=\"-1\"])';\n/** MUI Dialog's own default, used when the modal isn't registered in the stack yet. */\nconst FALLBACK_Z_INDEX = 1300;\n/** Matches the panel's slide duration, so role swaps animate rather than jump. */\nconst ROLE_TRANSITION_MS = 300;\n\n/** Keeps Tab cycling inside the open panel instead of escaping to the page behind. */\nconst useFocusTrap = (\n ref: RefObject<HTMLElement | null>,\n isActive: boolean,\n disabled?: boolean,\n): void => {\n useEffect(() => {\n if (!isActive || disabled || !ref.current) return;\n\n const element = ref.current;\n const focusable = element.querySelectorAll(FOCUSABLE);\n const first = focusable[0] as HTMLElement | undefined;\n const last = focusable[focusable.length - 1] as HTMLElement | undefined;\n\n window.setTimeout(() => first?.focus(), 100);\n\n const handleTabKey = (e: globalThis.KeyboardEvent): void => {\n if (e.key !== 'Tab') return;\n const atEdge = e.shiftKey ? first : last;\n if (document.activeElement !== atEdge) return;\n e.preventDefault();\n (e.shiftKey ? last : first)?.focus();\n };\n\n element.addEventListener('keydown', handleTabKey);\n return () => element.removeEventListener('keydown', handleTabKey);\n }, [ref, isActive, disabled]);\n};\n\n/** Closes the panel on Escape — only while it is the top one. */\nconst useEscapeToClose = (active: boolean, onClose: () => void): void => {\n useEffect(() => {\n if (!active) return;\n\n const handleEsc = (e: globalThis.KeyboardEvent): void => {\n if (e.key !== 'Escape') return;\n e.preventDefault();\n onClose();\n };\n\n window.addEventListener('keydown', handleEsc);\n return () => window.removeEventListener('keydown', handleEsc);\n }, [active, onClose]);\n};\n\n/** Holds the skeleton a beat past `loading` so the swap to content isn't a flash. */\nconst useSkeleton = (loading: boolean): boolean => {\n const [showSkeleton, setShowSkeleton] = useState(loading);\n\n useEffect(() => {\n if (loading) {\n setShowSkeleton(true);\n return;\n }\n const timer = window.setTimeout(() => setShowSkeleton(false), 200);\n return () => window.clearTimeout(timer);\n }, [loading]);\n\n return showSkeleton;\n};\n\n/** Registers the modal in the stack while open, and unregisters it after it slides out. */\nconst useStackRegistration = (open: boolean, modalId: string): void => {\n const { pushModal, popModal, isModalInStack } = useModalStack();\n const hasRegisteredRef = useRef(false);\n\n useEffect(() => {\n if (open && !hasRegisteredRef.current) {\n pushModal(modalId);\n hasRegisteredRef.current = true;\n } else if (!open) {\n hasRegisteredRef.current = false;\n }\n }, [open, modalId, pushModal]);\n\n useEffect(() => {\n if (open || !isModalInStack(modalId)) return;\n const timer = window.setTimeout(() => popModal(modalId), ROLE_TRANSITION_MS);\n return () => window.clearTimeout(timer);\n }, [open, modalId, popModal, isModalInStack]);\n\n // A panel unmounted while open, or before its slide-out timer fired, still\n // leaves the stack: otherwise its entry stays `primary` and the panel below\n // is stuck as `secondary` (no Esc, no backdrop, a back arrow to nowhere).\n // `popModal(id)` filters by id, so popping one already gone is a no-op, and\n // it is a stable callback, so this runs on unmount (or an id change) only.\n // The registration flag goes with the entry: StrictMode runs this cleanup and\n // then the effects again on the SAME instance, and a flag left `true` would\n // skip the re-push and leave an open panel out of its stack.\n useEffect(\n () => () => {\n popModal(modalId);\n hasRegisteredRef.current = false;\n },\n [modalId, popModal],\n );\n};\n\ninterface PanelChromeOptions {\n open?: boolean;\n modalId: string;\n loading?: boolean;\n closeOnEsc?: boolean;\n closeOnClickOutside?: boolean;\n disableFocusTrap?: boolean;\n onClose: () => void;\n}\n\ninterface PanelChrome {\n dialogRef: RefObject<HTMLDivElement | null>;\n modalRole: ModalPanelRole;\n isAnimating: boolean;\n showSkeleton: boolean;\n zIndex: number;\n isMobile: boolean;\n canGoBack: boolean;\n /**\n * This panel is the bottom of the stack. Read from ITS position, not from the\n * depth: once a child opens, the depth says \"can go back\" for every panel,\n * the receding root included.\n */\n isRoot: boolean;\n handleBack: () => void;\n handleClose: (event: object, reason: 'backdropClick' | 'escapeKeyDown') => void;\n}\n\n/**\n * Everything the panel needs to render itself: its place in the stack, the\n * viewport it is on, and the handlers that dismiss it. Bundled into one hook so\n * the component stays a description of the markup.\n */\nexport const usePanelChrome = (options: PanelChromeOptions): PanelChrome => {\n const { open, modalId, loading, closeOnEsc, closeOnClickOutside, disableFocusTrap, onClose } =\n options;\n\n const dialogRef = useRef<HTMLDivElement>(null);\n const { currentDepth, stack } = useModalStack();\n const { modalRole, isAnimating } = useModalRole(Boolean(open), modalId);\n const showSkeleton = useSkeleton(Boolean(loading));\n const zIndex = usePanelZIndex(modalId, FALLBACK_Z_INDEX);\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const isPrimary = modalRole === 'primary';\n const canGoBack = currentDepth > 1;\n // Not yet pushed (its first render) and something already below it: NOT the\n // root — so a child never renders a frame without its back arrow.\n const isRoot = (stack[0]?.id ?? modalId) === modalId;\n\n useFocusTrap(dialogRef, Boolean(open) && isPrimary, disableFocusTrap);\n useEscapeToClose(Boolean(open && closeOnEsc) && isPrimary, onClose);\n\n const { handleBack, handleClose } = useCloseHandlers({\n isPrimary,\n closeOnClickOutside,\n closeOnEsc,\n canGoBack,\n onClose,\n });\n\n return {\n dialogRef,\n modalRole,\n isAnimating,\n showSkeleton,\n zIndex,\n isMobile,\n canGoBack,\n isRoot,\n handleBack,\n handleClose,\n };\n};\n\ninterface CloseHandlerOptions {\n /** Only the top panel responds to a backdrop click or Escape. */\n isPrimary: boolean;\n closeOnClickOutside?: boolean;\n closeOnEsc?: boolean;\n /** Deeper than one panel, so the leading control goes back rather than closing. */\n canGoBack: boolean;\n onClose: () => void;\n}\n\n/** The panel's dismissal handlers, honouring which gestures the caller allows. */\nconst useCloseHandlers = ({\n isPrimary,\n closeOnClickOutside,\n closeOnEsc,\n canGoBack,\n onClose,\n}: CloseHandlerOptions): {\n handleBack: () => void;\n handleClose: (event: object, reason: 'backdropClick' | 'escapeKeyDown') => void;\n} => ({\n handleBack: () => {\n if (canGoBack) onClose();\n },\n handleClose: (_event, reason) => {\n if (!isPrimary) return;\n if (reason === 'backdropClick' && !closeOnClickOutside) return;\n if (reason === 'escapeKeyDown' && !closeOnEsc) return;\n onClose();\n },\n});\n\n/** The z-index this panel was assigned when it joined the stack. */\nconst usePanelZIndex = (modalId: string, fallback: number): number => {\n const { stack } = useModalStack();\n return stack.find((m) => m.id === modalId)?.zIndex ?? fallback;\n};\n\n/**\n * This modal's role in the stack, plus whether it is mid-transition between two\n * roles (which drives the expand/contract animation).\n */\nconst useModalRole = (\n open: boolean,\n modalId: string,\n): { modalRole: ModalPanelRole; isAnimating: boolean } => {\n const { stack } = useModalStack();\n const [modalRole, setModalRole] = useState<ModalPanelRole>('primary');\n const [isAnimating, setIsAnimating] = useState(false);\n\n useStackRegistration(open, modalId);\n\n useEffect(() => {\n if (!open) return;\n\n const newRole = stack.find((m) => m.id === modalId)?.role;\n if (!newRole || newRole === modalRole) return;\n\n setIsAnimating(true);\n setModalRole(newRole);\n const timer = window.setTimeout(() => setIsAnimating(false), ROLE_TRANSITION_MS);\n return () => window.clearTimeout(timer);\n }, [stack, modalId, open, modalRole]);\n\n return { modalRole, isAnimating };\n};\n"],"mappings":"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","names":[]}
@@ -1,8 +1,3 @@
1
- import {
2
- AVATAR_DEFAULTS,
3
- contentTypeOf,
4
- pickAvatarContent
5
- } from "./chunk-3ZVUNSFF.js";
6
1
  import {
7
2
  AvatarView
8
3
  } from "./chunk-7XSCEHGA.js";
@@ -12,6 +7,11 @@ import {
12
7
  GROUP_MAX,
13
8
  GROUP_OVERLAP
14
9
  } from "./chunk-6ZZGK5DT.js";
10
+ import {
11
+ AVATAR_DEFAULTS,
12
+ contentTypeOf,
13
+ pickAvatarContent
14
+ } from "./chunk-3ZVUNSFF.js";
15
15
  import {
16
16
  EN_US_UI_LABELS
17
17
  } from "./chunk-XOXXG7Q5.js";
@@ -178,4 +178,4 @@ export {
178
178
  Avatar,
179
179
  AvatarGroup
180
180
  };
181
- //# sourceMappingURL=chunk-4J62V5OE.js.map
181
+ //# sourceMappingURL=chunk-JIEVKHOH.js.map
@@ -1,13 +1,13 @@
1
+ import {
2
+ makeTestId,
3
+ resolveCodeEditorProps
4
+ } from "./chunk-X3OWMTLO.js";
1
5
  import {
2
6
  EditorToolbar
3
7
  } from "./chunk-3TVUW7QE.js";
4
8
  import {
5
9
  useCodeEditor
6
10
  } from "./chunk-OXXIGHZK.js";
7
- import {
8
- makeTestId,
9
- resolveCodeEditorProps
10
- } from "./chunk-X3OWMTLO.js";
11
11
  import {
12
12
  fieldRadius
13
13
  } from "./chunk-GDN2LUTZ.js";
@@ -178,4 +178,4 @@ var CodeEditor = (componentProps) => {
178
178
  export {
179
179
  CodeEditor
180
180
  };
181
- //# sourceMappingURL=chunk-MKNW4FRR.js.map
181
+ //# sourceMappingURL=chunk-JOQGKXR5.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YNVTUQ5B.js";
4
4
  import {
5
5
  DataViewsGrid
6
- } from "./chunk-HWZETMO4.js";
6
+ } from "./chunk-37SNQQ7P.js";
7
7
  import {
8
8
  viewStateKey
9
9
  } from "./chunk-ZOLAYP2D.js";
@@ -166,4 +166,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
166
166
  export {
167
167
  DataViewsTableBase
168
168
  };
169
- //# sourceMappingURL=chunk-Y3FYOKWF.js.map
169
+ //# sourceMappingURL=chunk-KHDKG7XB.js.map
@@ -4,6 +4,9 @@ import {
4
4
  import {
5
5
  CategoryPanel
6
6
  } from "./chunk-VMTOLAZ5.js";
7
+ import {
8
+ useCategorySelect
9
+ } from "./chunk-RZVUY2MO.js";
7
10
  import {
8
11
  useCategoryKeyHandler
9
12
  } from "./chunk-USJPZ5Q7.js";
@@ -13,9 +16,6 @@ import {
13
16
  import {
14
17
  CategoryTrigger
15
18
  } from "./chunk-GHP5JLL3.js";
16
- import {
17
- useCategorySelect
18
- } from "./chunk-RZVUY2MO.js";
19
19
  import {
20
20
  METRICS
21
21
  } from "./chunk-VPGDYI63.js";
@@ -155,4 +155,4 @@ function CategorySelect(props) {
155
155
  export {
156
156
  CategorySelect
157
157
  };
158
- //# sourceMappingURL=chunk-TSID4257.js.map
158
+ //# sourceMappingURL=chunk-KMMFN24G.js.map