@12-apps/ui 6.93.0 → 6.93.2

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 (263) hide show
  1. package/components-catalog.md +9 -2
  2. package/components-guidelines.md +30 -0
  3. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -2
  4. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +9 -3
  5. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
  6. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  7. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  8. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +7 -7
  9. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -7
  10. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  11. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  12. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  13. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  14. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  15. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +31 -31
  16. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +42 -42
  17. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
  18. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
  19. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +2 -2
  20. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  21. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -5
  22. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
  23. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +6 -6
  24. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +5 -5
  25. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +26 -26
  26. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +8 -8
  27. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +6 -6
  28. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +7 -7
  29. package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +3 -3
  30. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -5
  31. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
  32. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +7 -7
  33. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +8 -8
  34. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +6 -6
  35. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  36. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +3 -3
  37. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js +25 -0
  38. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js.map +1 -0
  39. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js +23 -0
  40. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js.map +1 -0
  41. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +14 -12
  42. package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +3 -3
  43. package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js +1 -1
  44. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +12 -15
  45. package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +3 -11
  46. package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js +5 -1
  47. package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +3 -3
  48. package/dist/_internal/components/data-display/DayRuler/useTextFits.js +4 -3
  49. package/dist/_internal/components/data-display/ErrorState/ErrorState.js +2 -2
  50. package/dist/_internal/components/data-display/ErrorState/ErrorState.metrics.js +3 -1
  51. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +6 -6
  52. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +5 -5
  53. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js +2 -2
  54. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js +3 -3
  55. package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js +2 -2
  56. package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js +3 -1
  57. package/dist/_internal/components/data-display/index.js +41 -39
  58. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -4
  59. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -3
  60. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
  61. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -4
  62. package/dist/_internal/components/feedback/index.js +6 -6
  63. package/dist/_internal/components/index.js +52 -50
  64. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
  65. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
  66. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  67. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
  68. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  69. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
  70. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  71. package/dist/_internal/components/navigation/index.js +9 -9
  72. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  73. package/dist/charts.js +13 -13
  74. package/dist/{chunk-LDCZPZPD.js → chunk-24HHUCWB.js} +2 -2
  75. package/dist/{chunk-7ZQ3KQ7J.js → chunk-273OLFJD.js} +16 -6
  76. package/dist/chunk-273OLFJD.js.map +1 -0
  77. package/dist/{chunk-FAUNQ3FS.js → chunk-2M3W6ACW.js} +3 -3
  78. package/dist/{chunk-ALOEOGQV.js → chunk-3TZUZXY5.js} +2 -2
  79. package/dist/{chunk-4HK4FVMV.js → chunk-3UAHDLKH.js} +7 -1
  80. package/dist/{chunk-4HK4FVMV.js.map → chunk-3UAHDLKH.js.map} +1 -1
  81. package/dist/{chunk-F5H3WDG7.js → chunk-4E2RQOSQ.js} +2 -2
  82. package/dist/{chunk-JIEVKHOH.js → chunk-4J62V5OE.js} +6 -6
  83. package/dist/{chunk-OJZLFFG4.js → chunk-5AZEDQXX.js} +59 -70
  84. package/dist/chunk-5AZEDQXX.js.map +1 -0
  85. package/dist/{chunk-CZVAVX5L.js → chunk-6ATXOJVQ.js} +2 -2
  86. package/dist/{chunk-E2UOEI7N.js → chunk-6LGKJVOA.js} +2 -2
  87. package/dist/{chunk-XBWW3QSI.js → chunk-7WE432RQ.js} +9 -9
  88. package/dist/{chunk-5357QUVE.js → chunk-AMLHEKSV.js} +5 -5
  89. package/dist/{chunk-HSVSU7I2.js → chunk-ASEHJIIV.js} +3 -3
  90. package/dist/{chunk-FYUNROLW.js → chunk-BZYLTGOE.js} +2 -2
  91. package/dist/{chunk-TZ44F6W7.js → chunk-CGS2LQE5.js} +2 -2
  92. package/dist/{chunk-KPUUHAK6.js → chunk-CWXX5JR3.js} +11 -9
  93. package/dist/chunk-CWXX5JR3.js.map +1 -0
  94. package/dist/{chunk-6HXNFNOB.js → chunk-EE6DJPB7.js} +4 -4
  95. package/dist/{chunk-OM6ZT64U.js → chunk-F2UP5ZF4.js} +3 -3
  96. package/dist/{chunk-P53ANKZV.js → chunk-F7LBTMCA.js} +4 -4
  97. package/dist/{chunk-6HPVCDVU.js → chunk-FGZIEZEP.js} +69 -112
  98. package/dist/chunk-FGZIEZEP.js.map +1 -0
  99. package/dist/{chunk-IWSTMVCA.js → chunk-FKS2PNJF.js} +8 -8
  100. package/dist/{chunk-3WYEENUH.js → chunk-FPNVOB52.js} +7 -7
  101. package/dist/{chunk-E73C73UD.js → chunk-FYSS2PYA.js} +3 -3
  102. package/dist/{chunk-N557OEZR.js → chunk-G6NMSBSQ.js} +2 -2
  103. package/dist/{chunk-A5OERY43.js → chunk-GARM5SX6.js} +2 -2
  104. package/dist/{chunk-WJMSND5Q.js → chunk-GXGHEOWC.js} +2 -2
  105. package/dist/{chunk-U2SAW6DH.js → chunk-GY53SDVL.js} +4 -4
  106. package/dist/{chunk-MFX4ASX5.js → chunk-HWZETMO4.js} +3 -3
  107. package/dist/{chunk-HBH7V3IP.js → chunk-I6IFUFLW.js} +5 -3
  108. package/dist/chunk-I6IFUFLW.js.map +1 -0
  109. package/dist/{chunk-MM3QESLI.js → chunk-ILJ3FXIC.js} +2 -2
  110. package/dist/{chunk-K6VEN5VN.js → chunk-K3PMMW23.js} +4 -4
  111. package/dist/{chunk-T5RFH2T5.js → chunk-KOGJBAFI.js} +2 -2
  112. package/dist/{chunk-COK65GX2.js → chunk-KURE5R7Z.js} +12 -2
  113. package/dist/chunk-KURE5R7Z.js.map +1 -0
  114. package/dist/{chunk-MAYAJXO6.js → chunk-KXDLLS62.js} +5 -5
  115. package/dist/{chunk-LE5JYNR7.js → chunk-L5CAHQIN.js} +23 -2
  116. package/dist/chunk-L5CAHQIN.js.map +1 -0
  117. package/dist/{chunk-DBI6AMNY.js → chunk-LKWXU6NH.js} +4 -4
  118. package/dist/chunk-MPVH2GM5.js +83 -0
  119. package/dist/chunk-MPVH2GM5.js.map +1 -0
  120. package/dist/{chunk-6DO672AG.js → chunk-N5PVD4J5.js} +7 -7
  121. package/dist/{chunk-ZYZPSBNQ.js → chunk-OGSTMHT6.js} +22 -7
  122. package/dist/chunk-OGSTMHT6.js.map +1 -0
  123. package/dist/{chunk-TLGGVE56.js → chunk-OTVOQHZB.js} +3 -1
  124. package/dist/{chunk-TLGGVE56.js.map → chunk-OTVOQHZB.js.map} +1 -1
  125. package/dist/{chunk-7F6D73NL.js → chunk-RLTGD5WJ.js} +2 -2
  126. package/dist/{chunk-R52N5UCS.js → chunk-SB2SEGR6.js} +2 -2
  127. package/dist/{chunk-Z2WZDVGG.js → chunk-SI5SKX52.js} +2 -2
  128. package/dist/{chunk-RYJ6XGFA.js → chunk-SJAOQGQI.js} +2 -2
  129. package/dist/{chunk-D7R6SRJB.js → chunk-SKQPUAMK.js} +3 -3
  130. package/dist/{chunk-AMIUZRDQ.js → chunk-SNWCT6JN.js} +3 -3
  131. package/dist/{chunk-7W5X3KQ2.js → chunk-SW7JCF4Z.js} +2 -2
  132. package/dist/{chunk-BNBWUXT3.js → chunk-TE6HAWDM.js} +2 -2
  133. package/dist/{chunk-JG733RMP.js → chunk-TZC6KIK2.js} +5 -5
  134. package/dist/{chunk-4QGKR65P.js → chunk-U4Z6GZDW.js} +5 -5
  135. package/dist/{chunk-XFZDO2KB.js → chunk-UIIHUWOV.js} +13 -13
  136. package/dist/{chunk-L4V7FZJI.js → chunk-UKUGSU3Y.js} +2 -2
  137. package/dist/{chunk-VJIJCLUX.js → chunk-UOKXYV3U.js} +2 -2
  138. package/dist/{chunk-K7IDOTSU.js → chunk-VNMD6BA4.js} +2 -2
  139. package/dist/chunk-WG7CAT5D.js +65 -0
  140. package/dist/chunk-WG7CAT5D.js.map +1 -0
  141. package/dist/chunk-WSSD7H5E.js +52 -0
  142. package/dist/chunk-WSSD7H5E.js.map +1 -0
  143. package/dist/{chunk-DTZOP4ZR.js → chunk-XCUHGPPZ.js} +2 -2
  144. package/dist/{chunk-3YFDGFEK.js → chunk-Y7BOP7VZ.js} +2 -2
  145. package/dist/{chunk-XNAI7QGU.js → chunk-ZM6FJCWS.js} +4 -4
  146. package/dist/{chunk-FC7UCFFA.js → chunk-ZPWPA6FR.js} +8 -8
  147. package/dist/data-display/AlertDialog.js +2 -2
  148. package/dist/data-display/AsyncStateContainer.js +3 -3
  149. package/dist/data-display/Avatar.js +2 -2
  150. package/dist/data-display/Badge.js +2 -2
  151. package/dist/data-display/CardKit.js +10 -10
  152. package/dist/data-display/Carousel.js +3 -3
  153. package/dist/data-display/Chart.js +13 -13
  154. package/dist/data-display/DataViews.js +56 -56
  155. package/dist/data-display/DayRuler.js +14 -12
  156. package/dist/data-display/ErrorState.js +2 -2
  157. package/dist/data-display/ScheduleGrid.js +6 -6
  158. package/dist/feedback/ConfirmAction.js +6 -6
  159. package/dist/native/data-display/ErrorState.js.map +1 -1
  160. package/dist/navigation/SectionNav.js +9 -9
  161. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  162. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts +11 -0
  163. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts.map +1 -1
  164. package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -1
  165. package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts +16 -0
  166. package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts.map +1 -0
  167. package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts +18 -0
  168. package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts.map +1 -0
  169. package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts +15 -5
  170. package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts.map +1 -1
  171. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +13 -14
  172. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -1
  173. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +20 -23
  174. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
  175. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +13 -3
  176. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -1
  177. package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts +27 -0
  178. package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts.map +1 -1
  179. package/dist/types/components/data-display/DayRuler/useTextFits.d.ts +11 -9
  180. package/dist/types/components/data-display/DayRuler/useTextFits.d.ts.map +1 -1
  181. package/dist/types/components/data-display/ErrorState/ErrorState.d.ts.map +1 -1
  182. package/dist/types/components/data-display/ErrorState/ErrorState.metrics.d.ts +5 -0
  183. package/dist/types/components/data-display/ErrorState/ErrorState.metrics.d.ts.map +1 -1
  184. package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts +8 -0
  185. package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts.map +1 -1
  186. package/dist/types-native/components/data-display/ErrorState/ErrorState.metrics.d.ts +5 -0
  187. package/dist/types-native/components/data-display/ErrorState/ErrorState.metrics.d.ts.map +1 -1
  188. package/dist/user-avatar.js +3 -3
  189. package/package.json +1 -1
  190. package/src/components/data-display/AlertDialog/AlertDialog.md +25 -1
  191. package/src/components/data-display/AlertDialog/AlertDialog.parts.tsx +28 -0
  192. package/src/components/data-display/AlertDialog/AlertDialog.tsx +34 -5
  193. package/src/components/data-display/DayRuler/DayRuler.footer.styles.ts +54 -0
  194. package/src/components/data-display/DayRuler/DayRuler.footer.tsx +123 -0
  195. package/src/components/data-display/DayRuler/DayRuler.md +37 -13
  196. package/src/components/data-display/DayRuler/DayRuler.metrics.ts +15 -5
  197. package/src/components/data-display/DayRuler/DayRuler.parts.tsx +86 -155
  198. package/src/components/data-display/DayRuler/DayRuler.styles.ts +89 -83
  199. package/src/components/data-display/DayRuler/DayRuler.tsx +3 -2
  200. package/src/components/data-display/DayRuler/DayRuler.types.ts +13 -3
  201. package/src/components/data-display/DayRuler/day-ruler-model.ts +45 -0
  202. package/src/components/data-display/DayRuler/useTextFits.ts +68 -25
  203. package/src/components/data-display/ErrorState/ErrorState.metrics.ts +5 -0
  204. package/src/components/data-display/ErrorState/ErrorState.tsx +2 -0
  205. package/src/components/data-display/ScheduleGrid/schedule-tones.ts +13 -0
  206. package/src/components/feedback/ConfirmAction/ConfirmAction.md +10 -0
  207. package/dist/chunk-6HPVCDVU.js.map +0 -1
  208. package/dist/chunk-7ZQ3KQ7J.js.map +0 -1
  209. package/dist/chunk-COK65GX2.js.map +0 -1
  210. package/dist/chunk-HBH7V3IP.js.map +0 -1
  211. package/dist/chunk-KPUUHAK6.js.map +0 -1
  212. package/dist/chunk-LE5JYNR7.js.map +0 -1
  213. package/dist/chunk-OJZLFFG4.js.map +0 -1
  214. package/dist/chunk-YMYJO2CZ.js +0 -32
  215. package/dist/chunk-YMYJO2CZ.js.map +0 -1
  216. package/dist/chunk-ZYZPSBNQ.js.map +0 -1
  217. /package/dist/{chunk-LDCZPZPD.js.map → chunk-24HHUCWB.js.map} +0 -0
  218. /package/dist/{chunk-FAUNQ3FS.js.map → chunk-2M3W6ACW.js.map} +0 -0
  219. /package/dist/{chunk-ALOEOGQV.js.map → chunk-3TZUZXY5.js.map} +0 -0
  220. /package/dist/{chunk-F5H3WDG7.js.map → chunk-4E2RQOSQ.js.map} +0 -0
  221. /package/dist/{chunk-JIEVKHOH.js.map → chunk-4J62V5OE.js.map} +0 -0
  222. /package/dist/{chunk-CZVAVX5L.js.map → chunk-6ATXOJVQ.js.map} +0 -0
  223. /package/dist/{chunk-E2UOEI7N.js.map → chunk-6LGKJVOA.js.map} +0 -0
  224. /package/dist/{chunk-XBWW3QSI.js.map → chunk-7WE432RQ.js.map} +0 -0
  225. /package/dist/{chunk-5357QUVE.js.map → chunk-AMLHEKSV.js.map} +0 -0
  226. /package/dist/{chunk-HSVSU7I2.js.map → chunk-ASEHJIIV.js.map} +0 -0
  227. /package/dist/{chunk-FYUNROLW.js.map → chunk-BZYLTGOE.js.map} +0 -0
  228. /package/dist/{chunk-TZ44F6W7.js.map → chunk-CGS2LQE5.js.map} +0 -0
  229. /package/dist/{chunk-6HXNFNOB.js.map → chunk-EE6DJPB7.js.map} +0 -0
  230. /package/dist/{chunk-OM6ZT64U.js.map → chunk-F2UP5ZF4.js.map} +0 -0
  231. /package/dist/{chunk-P53ANKZV.js.map → chunk-F7LBTMCA.js.map} +0 -0
  232. /package/dist/{chunk-IWSTMVCA.js.map → chunk-FKS2PNJF.js.map} +0 -0
  233. /package/dist/{chunk-3WYEENUH.js.map → chunk-FPNVOB52.js.map} +0 -0
  234. /package/dist/{chunk-E73C73UD.js.map → chunk-FYSS2PYA.js.map} +0 -0
  235. /package/dist/{chunk-N557OEZR.js.map → chunk-G6NMSBSQ.js.map} +0 -0
  236. /package/dist/{chunk-A5OERY43.js.map → chunk-GARM5SX6.js.map} +0 -0
  237. /package/dist/{chunk-WJMSND5Q.js.map → chunk-GXGHEOWC.js.map} +0 -0
  238. /package/dist/{chunk-U2SAW6DH.js.map → chunk-GY53SDVL.js.map} +0 -0
  239. /package/dist/{chunk-MFX4ASX5.js.map → chunk-HWZETMO4.js.map} +0 -0
  240. /package/dist/{chunk-MM3QESLI.js.map → chunk-ILJ3FXIC.js.map} +0 -0
  241. /package/dist/{chunk-K6VEN5VN.js.map → chunk-K3PMMW23.js.map} +0 -0
  242. /package/dist/{chunk-T5RFH2T5.js.map → chunk-KOGJBAFI.js.map} +0 -0
  243. /package/dist/{chunk-MAYAJXO6.js.map → chunk-KXDLLS62.js.map} +0 -0
  244. /package/dist/{chunk-DBI6AMNY.js.map → chunk-LKWXU6NH.js.map} +0 -0
  245. /package/dist/{chunk-6DO672AG.js.map → chunk-N5PVD4J5.js.map} +0 -0
  246. /package/dist/{chunk-7F6D73NL.js.map → chunk-RLTGD5WJ.js.map} +0 -0
  247. /package/dist/{chunk-R52N5UCS.js.map → chunk-SB2SEGR6.js.map} +0 -0
  248. /package/dist/{chunk-Z2WZDVGG.js.map → chunk-SI5SKX52.js.map} +0 -0
  249. /package/dist/{chunk-RYJ6XGFA.js.map → chunk-SJAOQGQI.js.map} +0 -0
  250. /package/dist/{chunk-D7R6SRJB.js.map → chunk-SKQPUAMK.js.map} +0 -0
  251. /package/dist/{chunk-AMIUZRDQ.js.map → chunk-SNWCT6JN.js.map} +0 -0
  252. /package/dist/{chunk-7W5X3KQ2.js.map → chunk-SW7JCF4Z.js.map} +0 -0
  253. /package/dist/{chunk-BNBWUXT3.js.map → chunk-TE6HAWDM.js.map} +0 -0
  254. /package/dist/{chunk-JG733RMP.js.map → chunk-TZC6KIK2.js.map} +0 -0
  255. /package/dist/{chunk-4QGKR65P.js.map → chunk-U4Z6GZDW.js.map} +0 -0
  256. /package/dist/{chunk-XFZDO2KB.js.map → chunk-UIIHUWOV.js.map} +0 -0
  257. /package/dist/{chunk-L4V7FZJI.js.map → chunk-UKUGSU3Y.js.map} +0 -0
  258. /package/dist/{chunk-VJIJCLUX.js.map → chunk-UOKXYV3U.js.map} +0 -0
  259. /package/dist/{chunk-K7IDOTSU.js.map → chunk-VNMD6BA4.js.map} +0 -0
  260. /package/dist/{chunk-DTZOP4ZR.js.map → chunk-XCUHGPPZ.js.map} +0 -0
  261. /package/dist/{chunk-3YFDGFEK.js.map → chunk-Y7BOP7VZ.js.map} +0 -0
  262. /package/dist/{chunk-XNAI7QGU.js.map → chunk-ZM6FJCWS.js.map} +0 -0
  263. /package/dist/{chunk-FC7UCFFA.js.map → chunk-ZPWPA6FR.js.map} +0 -0
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SectionNavSheet
3
- } from "./chunk-DTZOP4ZR.js";
3
+ } from "./chunk-XCUHGPPZ.js";
4
4
  import {
5
5
  RaisedActionButton,
6
6
  raisedLift
7
- } from "./chunk-L4V7FZJI.js";
7
+ } from "./chunk-UKUGSU3Y.js";
8
8
  import {
9
9
  Box,
10
10
  CONTROL_RESET,
@@ -15,7 +15,7 @@ import {
15
15
  destinationControl,
16
16
  focusRing,
17
17
  useMounted
18
- } from "./chunk-LDCZPZPD.js";
18
+ } from "./chunk-24HHUCWB.js";
19
19
  import {
20
20
  barSlots,
21
21
  destinationState,
@@ -327,4 +327,4 @@ export {
327
327
  sectionNavSheetOffset,
328
328
  SectionNavBar
329
329
  };
330
- //# sourceMappingURL=chunk-P53ANKZV.js.map
330
+ //# sourceMappingURL=chunk-F7LBTMCA.js.map
@@ -8,39 +8,34 @@ import {
8
8
  coverageCellSx,
9
9
  coverageLabelSx,
10
10
  coverageSx,
11
- footerCellSx,
12
- footerNoteSx,
13
11
  handleSx,
14
12
  lineSx,
15
13
  nowSx,
16
14
  rowSx,
17
15
  trackSx,
18
- trendSx,
19
16
  whoSx
20
- } from "./chunk-OJZLFFG4.js";
17
+ } from "./chunk-5AZEDQXX.js";
21
18
  import {
22
- useTextFits
23
- } from "./chunk-YMYJO2CZ.js";
19
+ useTextFit
20
+ } from "./chunk-WG7CAT5D.js";
21
+ import {
22
+ DAY_RULER_METRICS
23
+ } from "./chunk-273OLFJD.js";
24
24
  import {
25
25
  formatHour,
26
26
  formatRange,
27
+ hitBoundsOf,
27
28
  percentOf,
28
29
  ticksOf
29
- } from "./chunk-LE5JYNR7.js";
30
- import {
31
- DAY_RULER_METRICS
32
- } from "./chunk-7ZQ3KQ7J.js";
33
- import {
34
- SR_ONLY_SX
35
- } from "./chunk-RYJ6XGFA.js";
30
+ } from "./chunk-L5CAHQIN.js";
36
31
  import {
37
32
  ScheduleNameCell
38
- } from "./chunk-TZ44F6W7.js";
33
+ } from "./chunk-CGS2LQE5.js";
39
34
 
40
35
  // src/components/data-display/DayRuler/DayRuler.parts.tsx
41
36
  import Box from "@mui/material/Box/index.js";
42
- import { useRef } from "react";
43
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
37
+ import { Fragment, isValidElement, useRef } from "react";
38
+ import { Fragment as Fragment2, jsx, jsxs } from "react/jsx-runtime";
44
39
  var spanOf = (start, end, scale) => {
45
40
  const at = percentOf(start, scale.from, scale.to);
46
41
  return { at, share: Math.max(0, percentOf(end, scale.from, scale.to) - at) };
@@ -70,24 +65,31 @@ function BreakBand({ block, at, testId }) {
70
65
  if (!gap) return null;
71
66
  return /* @__PURE__ */ jsx(Box, { component: "span", "aria-hidden": true, sx: breakSx(gap), "data-dr-break": "", "data-testid": testId });
72
67
  }
73
- function RulerBlock({ row, block, span, at, text, ctx, testId }) {
68
+ function fallbackFit(block, scale) {
69
+ return (block.end - block.start) / (scale.to - scale.from) >= DAY_RULER_METRICS.narrowShare ? "full" : "short";
70
+ }
71
+ function fitProps(fit, text) {
72
+ return fit === "full" ? {} : { "aria-label": text, "data-fit": fit };
73
+ }
74
+ function RulerBlock({ row, block, span, at, hit, text, ctx, testId }) {
74
75
  const { can, dragApi, scale } = ctx;
75
76
  const movable = can.move && Boolean(block.movable);
76
77
  const resizable = can.resize && Boolean(block.resizable);
77
78
  const ref = useRef(null);
78
- const fits = useTextFits(ref, text, (block.end - block.start) / (scale.to - scale.from) >= DAY_RULER_METRICS.narrowShare);
79
+ const short = block.shortLabel ?? text;
80
+ const fit = useTextFit(ref, text, short, fallbackFit(block, scale));
79
81
  const press = (mode) => (event) => dragApi.startBlock(event, row.id, block, mode);
80
82
  return /* @__PURE__ */ jsxs(
81
83
  Box,
82
84
  {
83
85
  component: "button",
84
86
  type: "button",
85
- sx: blockSx(block.tone, span, { selected: Boolean(block.selected), movable }),
87
+ sx: blockSx(block.tone, span, { selected: Boolean(block.selected), movable, hit }),
86
88
  title: block.title ?? block.label,
89
+ ...fitProps(fit, text),
87
90
  "aria-keyshortcuts": shortcutsOf(movable, resizable),
88
91
  "aria-current": block.selected ? "true" : void 0,
89
92
  ref,
90
- "data-narrow": fits ? void 0 : "",
91
93
  "data-tone": block.tone,
92
94
  "data-testid": testId,
93
95
  onPointerDown: movable ? press("move") : void 0,
@@ -99,7 +101,7 @@ function RulerBlock({ row, block, span, at, text, ctx, testId }) {
99
101
  /* @__PURE__ */ jsx(BreakBand, { block, at, testId: `${ctx.testId}-break-${block.id}` }),
100
102
  resizable ? /* @__PURE__ */ jsx(Handle, { side: "l", onPointerDown: press("start"), testId: `${ctx.testId}-handle-l-${block.id}` }) : null,
101
103
  /* @__PURE__ */ jsx("span", { "data-dr-text": "full", title: text, children: text }),
102
- /* @__PURE__ */ jsx("span", { "data-dr-text": "short", title: text, children: block.shortLabel ?? text }),
104
+ /* @__PURE__ */ jsx("span", { "data-dr-text": "short", title: text, children: short }),
103
105
  resizable ? /* @__PURE__ */ jsx(Handle, { side: "r", onPointerDown: press("end"), testId: `${ctx.testId}-handle-r-${block.id}` }) : null
104
106
  ]
105
107
  }
@@ -107,37 +109,46 @@ function RulerBlock({ row, block, span, at, text, ctx, testId }) {
107
109
  }
108
110
  function Blocks({ row, ctx }) {
109
111
  const mine = ctx.drag && ctx.drag.rowId === row.id ? ctx.drag : null;
110
- return /* @__PURE__ */ jsxs(Fragment, { children: [
111
- row.blocks.map((block) => {
112
- const live = mine?.blockId === block.id ? mine : null;
113
- const start = live ? live.start : block.start;
114
- const end = live ? live.end : block.end;
115
- return /* @__PURE__ */ jsx(
116
- RulerBlock,
117
- {
118
- row,
119
- block,
120
- span: spanOf(start, end, ctx.scale),
121
- at: { start, end },
122
- text: live?.moved ? formatRange(start, end) : block.label,
123
- ctx,
124
- testId: `${ctx.testId}-block-${block.id}`
125
- },
126
- block.id
127
- );
128
- }),
129
- mine && mine.mode === "create" ? /* @__PURE__ */ jsx(CreatePreview, { row, drag: mine, ctx }) : null
112
+ const drawn = row.blocks.map((block) => {
113
+ const live = mine?.blockId === block.id ? mine : null;
114
+ const start = live ? live.start : block.start;
115
+ const end = live ? live.end : block.end;
116
+ return { block, live, start, end, span: spanOf(start, end, ctx.scale) };
117
+ });
118
+ const preview = mine && mine.mode === "create" ? previewSpan(mine, ctx.scale) : null;
119
+ const hits = hitBoundsOf([...drawn.map((d) => d.span), ...preview ? [preview] : []]);
120
+ return /* @__PURE__ */ jsxs(Fragment2, { children: [
121
+ drawn.map(({ block, live, start, end, span }, index) => /* @__PURE__ */ jsx(
122
+ RulerBlock,
123
+ {
124
+ row,
125
+ block,
126
+ span,
127
+ at: { start, end },
128
+ hit: hits[index],
129
+ text: live?.moved ? formatRange(start, end) : block.label,
130
+ ctx,
131
+ testId: `${ctx.testId}-block-${block.id}`
132
+ },
133
+ block.id
134
+ )),
135
+ mine && preview ? /* @__PURE__ */ jsx(CreatePreview, { row, drag: mine, span: preview, hit: hits[drawn.length], ctx }) : null
130
136
  ] });
131
137
  }
132
- function CreatePreview({ row, drag, ctx }) {
138
+ function previewSpan(drag, scale) {
139
+ return spanOf(drag.start, Math.max(drag.end, drag.start + scale.snap), scale);
140
+ }
141
+ function CreatePreview(props) {
142
+ const { row, drag, span, hit, ctx } = props;
133
143
  const range = formatRange(drag.start, drag.end);
134
144
  return /* @__PURE__ */ jsx(
135
145
  RulerBlock,
136
146
  {
137
147
  row,
138
148
  block: { id: "\0new", start: drag.start, end: drag.end, label: range, tone: "plan" },
139
- span: spanOf(drag.start, Math.max(drag.end, drag.start + ctx.scale.snap), ctx.scale),
149
+ span,
140
150
  at: { start: drag.start, end: drag.end },
151
+ hit,
141
152
  text: range,
142
153
  ctx,
143
154
  testId: `${ctx.testId}-preview`
@@ -147,7 +158,7 @@ function CreatePreview({ row, drag, ctx }) {
147
158
  function Actual({ row, ctx }) {
148
159
  const { actual } = row;
149
160
  if (!actual) return null;
150
- return /* @__PURE__ */ jsxs(Fragment, { children: [
161
+ return /* @__PURE__ */ jsxs(Fragment2, { children: [
151
162
  /* @__PURE__ */ jsx(Box, { sx: actualSx(spanOf(actual.start, actual.end, ctx.scale)), "data-testid": `${ctx.testId}-actual-${row.id}` }),
152
163
  row.actualLabel ? /* @__PURE__ */ jsx(Box, { component: "span", sx: actualLabelSx(percentOf(actual.start, ctx.scale.from, ctx.scale.to)), children: row.actualLabel }) : null
153
164
  ] });
@@ -172,17 +183,24 @@ function Track({ row, ctx }) {
172
183
  },
173
184
  children: [
174
185
  /* @__PURE__ */ jsx(Actual, { row, ctx }),
175
- /* @__PURE__ */ jsx(Blocks, { row, ctx }),
176
- showNow ? /* @__PURE__ */ jsx(Box, { sx: nowSx(percentOf(now, scale.from, scale.to)), "data-testid": `${ctx.testId}-now` }) : null
186
+ showNow ? /* @__PURE__ */ jsx(Box, { sx: nowSx(percentOf(now, scale.from, scale.to)), "data-testid": `${ctx.testId}-now` }) : null,
187
+ /* @__PURE__ */ jsx(Blocks, { row, ctx })
177
188
  ]
178
189
  }
179
190
  );
180
191
  }
192
+ function hasContent(node) {
193
+ if (node === null || node === void 0 || typeof node === "boolean" || node === "") return false;
194
+ if (Array.isArray(node)) return node.some((child) => hasContent(child));
195
+ if (isValidElement(node) && node.type === Fragment) return hasContent(node.props.children);
196
+ return true;
197
+ }
181
198
  function RulerRow({ row, ctx }) {
199
+ const hasActions = hasContent(row.actions);
182
200
  return /* @__PURE__ */ jsxs(Box, { sx: rowSx, "data-testid": `${ctx.testId}-row-${row.id}`, role: "listitem", children: [
183
201
  /* @__PURE__ */ jsx(ScheduleNameCell, { row, sx: whoSx, sizes: { name: DAY_RULER_METRICS.name, meta: DAY_RULER_METRICS.meta, chipsTop: 0.75 } }),
184
202
  /* @__PURE__ */ jsx(Track, { row, ctx }),
185
- /* @__PURE__ */ jsx(Box, { sx: actionsSx, children: row.actions })
203
+ hasActions ? /* @__PURE__ */ jsx(Box, { sx: actionsSx, "data-testid": `${ctx.testId}-actions-${row.id}`, children: row.actions }) : null
186
204
  ] });
187
205
  }
188
206
  function Coverage(props) {
@@ -193,82 +211,21 @@ function Coverage(props) {
193
211
  /* @__PURE__ */ jsx(Box, { sx: coverageSx(hours), children: Array.from({ length: hours }, (_, index) => {
194
212
  const count = coverage[index] ?? 0;
195
213
  return /* @__PURE__ */ jsx(Box, { component: "span", sx: coverageCellSx(count), title: `${formatHour(scale.from + index)} \xB7 ${count}`, children: count > 0 ? count : "" }, index);
196
- }) }),
197
- /* @__PURE__ */ jsx("span", {})
214
+ }) })
198
215
  ] });
199
216
  }
200
- function trendPoints(values, hours) {
201
- const present = values.slice(0, hours).filter((value) => value !== null);
202
- const max = Math.max(0, ...present);
203
- return values.slice(0, hours).flatMap((value, index) => {
204
- if (value === null) return [];
205
- const x = (index + 0.5) * 100 / hours;
206
- const y = max > 0 ? 38 - value / max * 34 : 38;
207
- return [`${x.toFixed(2)},${y.toFixed(2)}`];
208
- }).join(" ");
209
- }
210
- var hourWords = (hour, text) => text ? `${formatHour(hour)} \xB7 ${text}` : formatHour(hour);
211
- function markedWords(cell, hour, marked) {
212
- return cell.title ?? `${hourWords(hour, cell.text)} \xB7 ${marked}`;
213
- }
214
- function FooterCells({ cells, ctx }) {
215
- return /* @__PURE__ */ jsx(Box, { sx: coverageSx(ctx.hours), children: Array.from({ length: ctx.hours }, (_, index) => {
216
- const cell = cells[index] ?? { text: "" };
217
- const hour = ctx.from + index;
218
- return /* @__PURE__ */ jsx(
219
- Box,
220
- {
221
- component: "span",
222
- sx: footerCellSx(Boolean(cell.marked)),
223
- title: cell.marked ? markedWords(cell, hour, ctx.marked) : cell.title ?? hourWords(hour, cell.text),
224
- "data-marked": cell.marked ? "" : void 0,
225
- children: cell.marked ? /* @__PURE__ */ jsxs(Fragment, { children: [
226
- /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: cell.text }),
227
- /* @__PURE__ */ jsx(Box, { component: "span", sx: SR_ONLY_SX, children: markedWords(cell, hour, ctx.marked) })
228
- ] }) : cell.text
229
- },
230
- index
231
- );
232
- }) });
233
- }
234
- function trendWords(values, ctx) {
235
- return values.slice(0, ctx.hours).flatMap((value, index) => value === null ? [] : [`${formatHour(ctx.from + index)} ${Math.round(value * 10) / 10}`]).join(" \xB7 ");
236
- }
237
- function FooterFigures({ row, ctx }) {
238
- if (row.trend) {
239
- return /* @__PURE__ */ jsxs(Box, { component: "span", sx: { display: "block", minWidth: 0 }, children: [
240
- /* @__PURE__ */ jsx(Box, { component: "svg", viewBox: "0 0 100 40", preserveAspectRatio: "none", sx: trendSx, "aria-hidden": true, children: /* @__PURE__ */ jsx("polyline", { fill: "none", stroke: "currentColor", strokeWidth: 1.5, vectorEffect: "non-scaling-stroke", points: trendPoints(row.trend, ctx.hours) }) }),
241
- /* @__PURE__ */ jsx(Box, { component: "span", sx: SR_ONLY_SX, children: trendWords(row.trend, ctx) })
242
- ] });
243
- }
244
- if (row.note !== void 0) {
245
- return /* @__PURE__ */ jsx(Box, { component: "span", sx: footerNoteSx(Boolean(row.marked)), "data-marked": row.marked ? "" : void 0, children: row.note });
246
- }
247
- return /* @__PURE__ */ jsx(FooterCells, { cells: row.cells ?? [], ctx });
248
- }
249
- function GroupFooter(props) {
250
- const { rows, scale, testId } = props;
251
- const ctx = { hours: scale.to - scale.from, from: scale.from, marked: props.marked };
252
- return /* @__PURE__ */ jsx(Fragment, { children: rows.map((row) => /* @__PURE__ */ jsxs(Box, { sx: lineSx, "data-testid": `${testId}-footer-${row.id}`, children: [
253
- /* @__PURE__ */ jsx(Box, { component: "span", sx: coverageLabelSx, children: row.label }),
254
- /* @__PURE__ */ jsx(FooterFigures, { row, ctx }),
255
- /* @__PURE__ */ jsx("span", {})
256
- ] }, row.id)) });
257
- }
258
217
  function Axis({ scale, testId }) {
259
218
  return /* @__PURE__ */ jsxs(Box, { sx: lineSx, "data-testid": `${testId}-axis`, "aria-hidden": true, children: [
260
219
  /* @__PURE__ */ jsx("span", {}),
261
- /* @__PURE__ */ jsx(Box, { sx: axisSx, children: ticksOf(scale.from, scale.to, scale.tickHours).map((h) => /* @__PURE__ */ jsx("span", { style: { left: `${percentOf(h, scale.from, scale.to)}%` }, children: formatHour(h) }, h)) }),
262
- /* @__PURE__ */ jsx("span", {})
220
+ /* @__PURE__ */ jsx(Box, { sx: axisSx, children: ticksOf(scale.from, scale.to, scale.tickHours).map((h) => /* @__PURE__ */ jsx("span", { style: { left: `${percentOf(h, scale.from, scale.to)}%` }, children: formatHour(h) }, h)) })
263
221
  ] });
264
222
  }
265
223
 
266
224
  export {
267
225
  spanOf,
226
+ hasContent,
268
227
  RulerRow,
269
228
  Coverage,
270
- trendPoints,
271
- GroupFooter,
272
229
  Axis
273
230
  };
274
- //# sourceMappingURL=chunk-6HPVCDVU.js.map
231
+ //# sourceMappingURL=chunk-FGZIEZEP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.parts.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport type * as React from 'react';\nimport { Fragment, isValidElement, useRef } from 'react';\n\nimport { ScheduleNameCell } from '../ScheduleGrid/ScheduleNameCell';\nimport type { RulerAbilities, RulerScale } from './DayRuler.keyboard';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\nimport { useTextFit } from './useTextFits';\nimport { formatHour, formatRange, hitBoundsOf, percentOf, ticksOf, type BlockTextFit } from './day-ruler-model';\nimport {\n actionsSx,\n actualLabelSx,\n actualSx,\n axisSx,\n blockSx,\n breakSx,\n coverageCellSx,\n coverageLabelSx,\n coverageSx,\n handleSx,\n lineSx,\n nowSx,\n rowSx,\n trackSx,\n whoSx,\n type HitBounds,\n type Span,\n} from './DayRuler.styles';\nimport type { DayRulerBlock, DayRulerRow, RulerHour } from './DayRuler.types';\nimport type { RulerDrag, RulerDragApi } from './useRulerDrag';\n\nexport const spanOf = (start: RulerHour, end: RulerHour, scale: RulerScale): Span => {\n const at = percentOf(start, scale.from, scale.to);\n return { at, share: Math.max(0, percentOf(end, scale.from, scale.to) - at) };\n};\n\n/** What every row of one ruler shares. */\nexport interface RowContext {\n scale: RulerScale;\n now?: RulerHour;\n can: RulerAbilities;\n drag: RulerDrag | null;\n dragApi: RulerDragApi;\n onBlockClick?: (blockId: string) => void;\n onKeyCreate: (row: DayRulerRow) => void;\n onBlockKey: (event: React.KeyboardEvent, block: DayRulerBlock) => void;\n createLabel: (row: string) => string;\n testId: string;\n}\n\n/** The keys a block answers to, for `aria-keyshortcuts`. */\nfunction shortcutsOf(movable: boolean, resizable: boolean): string | undefined {\n const keys = [\n movable ? 'Alt+ArrowLeft Alt+ArrowRight' : '',\n resizable ? 'Shift+ArrowLeft Shift+ArrowRight Shift+Alt+ArrowLeft Shift+Alt+ArrowRight' : '',\n ];\n return keys.filter(Boolean).join(' ') || undefined;\n}\n\nfunction Handle({ side, onPointerDown, testId }: { side: 'l' | 'r'; onPointerDown: (event: React.PointerEvent<HTMLElement>) => void; testId: string }) {\n return <Box component=\"span\" aria-hidden sx={handleSx(side)} data-testid={testId} onPointerDown={onPointerDown} />;\n}\n\ninterface BlockProps {\n row: DayRulerRow;\n block: DayRulerBlock;\n /** Where it is drawn: its own hours, or where a drag has it now. */\n span: Span;\n /** The hours it is drawn at (its own, or a drag's). */\n at: { start: RulerHour; end: RulerHour };\n /** How far its hit band may reach on a narrow ruler, in % of the track (the midpoints to its neighbours). */\n hit: HitBounds;\n text: string;\n ctx: RowContext;\n testId: string;\n}\n\n/**\n * The block's break, where it falls inside the block as drawn: it moves with a\n * dragged block (same offset from its start) and is cut to the block's ends.\n */\nfunction breakShare(block: DayRulerBlock, start: RulerHour, end: RulerHour): Span | null {\n const span = block.breakSpan;\n const length = end - start;\n if (!span || !(length > 0)) return null;\n const shift = Math.abs(length - (block.end - block.start)) < 1e-6 ? start - block.start : 0;\n const a = Math.max(start, span.start + shift);\n const b = Math.min(end, span.end + shift);\n if (!(b > a)) return null;\n return { at: ((a - start) / length) * 100, share: ((b - a) / length) * 100 };\n}\n\n/** The block's break as a hatched band, when it falls inside the block as drawn. */\nfunction BreakBand({ block, at, testId }: { block: DayRulerBlock; at: BlockProps['at']; testId: string }): React.JSX.Element | null {\n const gap = breakShare(block, at.start, at.end);\n if (!gap) return null;\n return <Box component=\"span\" aria-hidden sx={breakSx(gap)} data-dr-break=\"\" data-testid={testId} />;\n}\n\n/** Where nothing can be measured, a block shorter than the prototype's 30% of the ruler says its start. */\nfunction fallbackFit(block: DayRulerBlock, scale: RulerScale): BlockTextFit {\n return (block.end - block.start) / (scale.to - scale.from) >= M.narrowShare ? 'full' : 'short';\n}\n\n/**\n * What the bar's fit puts on it: `data-fit` for the styles, and — while the bar\n * shows less than its full text — that full text as its name, so the name still\n * says all of it.\n */\nfunction fitProps(fit: BlockTextFit, text: string): { 'aria-label'?: string; 'data-fit'?: BlockTextFit } {\n return fit === 'full' ? {} : { 'aria-label': text, 'data-fit': fit };\n}\n\nfunction RulerBlock({ row, block, span, at, hit, text, ctx, testId }: BlockProps): React.JSX.Element {\n const { can, dragApi, scale } = ctx;\n const movable = can.move && Boolean(block.movable);\n const resizable = can.resize && Boolean(block.resizable);\n const ref = useRef<HTMLButtonElement | null>(null);\n const short = block.shortLabel ?? text;\n const fit = useTextFit(ref, text, short, fallbackFit(block, scale));\n const press = (mode: 'move' | 'start' | 'end') => (event: React.PointerEvent<HTMLElement>) =>\n dragApi.startBlock(event, row.id, block, mode);\n return (\n <Box\n component=\"button\"\n type=\"button\"\n sx={blockSx(block.tone, span, { selected: Boolean(block.selected), movable, hit })}\n title={block.title ?? block.label}\n {...fitProps(fit, text)}\n aria-keyshortcuts={shortcutsOf(movable, resizable)}\n aria-current={block.selected ? 'true' : undefined}\n ref={ref}\n data-tone={block.tone}\n data-testid={testId}\n onPointerDown={movable ? press('move') : undefined}\n onClick={() => {\n if (!dragApi.takeClick()) ctx.onBlockClick?.(block.id);\n }}\n onKeyDown={(event: React.KeyboardEvent) => ctx.onBlockKey(event, block)}\n >\n <BreakBand block={block} at={at} testId={`${ctx.testId}-break-${block.id}`} />\n {resizable ? <Handle side=\"l\" onPointerDown={press('start')} testId={`${ctx.testId}-handle-l-${block.id}`} /> : null}\n <span data-dr-text=\"full\" title={text}>\n {text}\n </span>\n <span data-dr-text=\"short\" title={text}>\n {short}\n </span>\n {resizable ? <Handle side=\"r\" onPointerDown={press('end')} testId={`${ctx.testId}-handle-r-${block.id}`} /> : null}\n </Box>\n );\n}\n\n/** A row's blocks, each where a drag has it now (with its live hours) or where it is. */\nfunction Blocks({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element {\n const mine = ctx.drag && ctx.drag.rowId === row.id ? ctx.drag : null;\n const drawn = row.blocks.map((block) => {\n const live = mine?.blockId === block.id ? mine : null;\n const start = live ? live.start : block.start;\n const end = live ? live.end : block.end;\n return { block, live, start, end, span: spanOf(start, end, ctx.scale) };\n });\n const preview = mine && mine.mode === 'create' ? previewSpan(mine, ctx.scale) : null;\n // Every bar drawn on the row, the create's preview included, bounds its neighbours' hit bands.\n const hits = hitBoundsOf([...drawn.map((d) => d.span), ...(preview ? [preview] : [])]);\n return (\n <>\n {drawn.map(({ block, live, start, end, span }, index) => (\n <RulerBlock\n key={block.id}\n row={row}\n block={block}\n span={span}\n at={{ start, end }}\n hit={hits[index]!}\n text={live?.moved ? formatRange(start, end) : block.label}\n ctx={ctx}\n testId={`${ctx.testId}-block-${block.id}`}\n />\n ))}\n {mine && preview ? <CreatePreview row={row} drag={mine} span={preview} hit={hits[drawn.length]!} ctx={ctx} /> : null}\n </>\n );\n}\n\n/** Where a create drag's preview is drawn: at least one snap long. */\nfunction previewSpan(drag: RulerDrag, scale: RulerScale): Span {\n return spanOf(drag.start, Math.max(drag.end, drag.start + scale.snap), scale);\n}\n\n/** The block a create drag is drawing, with its live hours. */\nfunction CreatePreview(props: { row: DayRulerRow; drag: RulerDrag; span: Span; hit: HitBounds; ctx: RowContext }): React.JSX.Element {\n const { row, drag, span, hit, ctx } = props;\n const range = formatRange(drag.start, drag.end);\n return (\n <RulerBlock\n row={row}\n block={{ id: '\\u0000new', start: drag.start, end: drag.end, label: range, tone: 'plan' }}\n span={span}\n at={{ start: drag.start, end: drag.end }}\n hit={hit}\n text={range}\n ctx={ctx}\n testId={`${ctx.testId}-preview`}\n />\n );\n}\n\n/** The real shift under the blocks, and its label at its start. */\nfunction Actual({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element | null {\n const { actual } = row;\n if (!actual) return null;\n return (\n <>\n <Box sx={actualSx(spanOf(actual.start, actual.end, ctx.scale))} data-testid={`${ctx.testId}-actual-${row.id}`} />\n {row.actualLabel ? (\n <Box component=\"span\" sx={actualLabelSx(percentOf(actual.start, ctx.scale.from, ctx.scale.to))}>\n {row.actualLabel}\n </Box>\n ) : null}\n </>\n );\n}\n\n/** A row's track: the actual bar, the now line under its blocks (or the one being dragged, live). */\nfunction Track({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element {\n const { scale, now, can, dragApi } = ctx;\n const showNow = now !== undefined && now >= scale.from && now <= scale.to;\n return (\n <Box\n sx={trackSx({ hours: scale.to - scale.from, tickHours: scale.tickHours, interactive: can.create })}\n data-dr-track=\"\"\n data-testid={`${ctx.testId}-track-${row.id}`}\n role={can.create ? 'group' : undefined}\n tabIndex={can.create ? 0 : undefined}\n aria-label={can.create ? ctx.createLabel(row.label) : undefined}\n onPointerDown={can.create ? (event: React.PointerEvent<HTMLElement>) => dragApi.startCreate(event, row.id) : undefined}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (!can.create || event.target !== event.currentTarget || (event.key !== 'Enter' && event.key !== ' ')) return;\n event.preventDefault();\n ctx.onKeyCreate(row);\n }}\n >\n <Actual row={row} ctx={ctx} />\n {/* Before the blocks, so it paints under them and never through a label. */}\n {showNow ? <Box sx={nowSx(percentOf(now, scale.from, scale.to))} data-testid={`${ctx.testId}-now`} /> : null}\n <Blocks row={row} ctx={ctx} />\n </Box>\n );\n}\n\n/**\n * Whether a node draws anything: nothing, a boolean, an empty string, an empty\n * array and an empty fragment do not — the actions slot (and its 8px above)\n * is rendered only for content.\n */\nexport function hasContent(node: React.ReactNode): boolean {\n if (node === null || node === undefined || typeof node === 'boolean' || node === '') return false;\n if (Array.isArray(node)) return node.some((child) => hasContent(child as React.ReactNode));\n if (isValidElement<{ children?: React.ReactNode }>(node) && node.type === Fragment) return hasContent(node.props.children);\n return true;\n}\n\n/**\n * One person: name, meta and chips, the row's actions under them · the track.\n * The actions live in the name's column, never a column of their own: a\n * column reserved for one row's \"Iniciar agora\" left every other row a blank\n * band, and a per-row one would have cut the hours out of line (FUT-3831).\n */\nexport function RulerRow({ row, ctx }: { row: DayRulerRow; ctx: RowContext }): React.JSX.Element {\n const hasActions = hasContent(row.actions);\n return (\n <Box sx={rowSx} data-testid={`${ctx.testId}-row-${row.id}`} role=\"listitem\">\n <ScheduleNameCell row={row} sx={whoSx} sizes={{ name: M.name, meta: M.meta, chipsTop: 0.75 }} />\n <Track row={row} ctx={ctx} />\n {hasActions ? (\n <Box sx={actionsSx} data-testid={`${ctx.testId}-actions-${row.id}`}>\n {row.actions}\n </Box>\n ) : null}\n </Box>\n );\n}\n\n/** \"Na escala, por hora\": a count per hour above the axis. */\nexport function Coverage(props: { coverage: readonly number[]; label?: string; scale: RulerScale; testId: string }): React.JSX.Element {\n const { coverage, label, scale, testId } = props;\n const hours = scale.to - scale.from;\n return (\n <Box sx={lineSx} data-testid={`${testId}-coverage`}>\n <Box component=\"span\" sx={coverageLabelSx}>\n {label}\n </Box>\n <Box sx={coverageSx(hours)}>\n {Array.from({ length: hours }, (_, index) => {\n const count = coverage[index] ?? 0;\n return (\n <Box key={index} component=\"span\" sx={coverageCellSx(count)} title={`${formatHour(scale.from + index)} · ${count}`}>\n {count > 0 ? count : ''}\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n}\n\n/** The hour labels under the coverage row. */\nexport function Axis({ scale, testId }: { scale: RulerScale; testId: string }): React.JSX.Element {\n return (\n <Box sx={lineSx} data-testid={`${testId}-axis`} aria-hidden>\n <span />\n <Box sx={axisSx}>\n {ticksOf(scale.from, scale.to, scale.tickHours).map((h) => (\n <span key={h} style={{ left: `${percentOf(h, scale.from, scale.to)}%` }}>\n {formatHour(h)}\n </span>\n ))}\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","names":["Fragment"]}
@@ -1,12 +1,10 @@
1
+ import {
2
+ useDisclosure
3
+ } from "./chunk-2JCRNWHE.js";
1
4
  import {
2
5
  StandaloneContainer,
3
6
  useRowLayout
4
7
  } from "./chunk-E6K2UZGR.js";
5
- import {
6
- DiscloseSlot,
7
- DragSlot,
8
- SelectSlot
9
- } from "./chunk-QO7UJXXO.js";
10
8
  import {
11
9
  actionProps,
12
10
  metaShape,
@@ -20,8 +18,10 @@ import {
20
18
  ListCardTail
21
19
  } from "./chunk-CSJ7WNXU.js";
22
20
  import {
23
- useDisclosure
24
- } from "./chunk-2JCRNWHE.js";
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-IWSTMVCA.js.map
188
+ //# sourceMappingURL=chunk-FKS2PNJF.js.map
@@ -1,21 +1,21 @@
1
- import {
2
- RangeSummary
3
- } from "./chunk-WLDP7C4K.js";
4
1
  import {
5
2
  RangeBounds
6
- } from "./chunk-FC7UCFFA.js";
3
+ } from "./chunk-ZPWPA6FR.js";
7
4
  import {
8
5
  RangePresets
9
6
  } from "./chunk-LZNUBQ5I.js";
10
7
  import {
11
- presetsFor
12
- } from "./chunk-CBOB5AV6.js";
8
+ RangeSummary
9
+ } from "./chunk-WLDP7C4K.js";
13
10
  import {
14
11
  isRangeInverted,
15
12
  isRangeSet,
16
13
  numericRange,
17
14
  rangeChipLabel
18
15
  } from "./chunk-GCZJH4XL.js";
16
+ import {
17
+ presetsFor
18
+ } from "./chunk-CBOB5AV6.js";
19
19
  import {
20
20
  useStillAnchor
21
21
  } from "./chunk-7CUZTWKW.js";
@@ -240,4 +240,4 @@ export {
240
240
  RangePill,
241
241
  PanelRangeField
242
242
  };
243
- //# sourceMappingURL=chunk-3WYEENUH.js.map
243
+ //# sourceMappingURL=chunk-FPNVOB52.js.map
@@ -24,10 +24,10 @@ import {
24
24
  skeletonCellSx,
25
25
  totalCellSx,
26
26
  totalHeaderSx
27
- } from "./chunk-RYJ6XGFA.js";
27
+ } from "./chunk-SJAOQGQI.js";
28
28
  import {
29
29
  ScheduleNameCell
30
- } from "./chunk-TZ44F6W7.js";
30
+ } from "./chunk-CGS2LQE5.js";
31
31
  import {
32
32
  SCHEDULE_GRID_METRICS
33
33
  } from "./chunk-3R6BR22L.js";
@@ -254,4 +254,4 @@ export {
254
254
  GridHeader,
255
255
  GridBody
256
256
  };
257
- //# sourceMappingURL=chunk-E73C73UD.js.map
257
+ //# sourceMappingURL=chunk-FYSS2PYA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ConfirmActionDialog
3
- } from "./chunk-7W5X3KQ2.js";
3
+ } from "./chunk-SW7JCF4Z.js";
4
4
  import {
5
5
  useConfirmAction
6
6
  } from "./chunk-EMYESBIT.js";
@@ -43,4 +43,4 @@ function useRowConfirm({
43
43
  export {
44
44
  useRowConfirm
45
45
  };
46
- //# sourceMappingURL=chunk-N557OEZR.js.map
46
+ //# sourceMappingURL=chunk-G6NMSBSQ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  signalInk
3
- } from "./chunk-4HK4FVMV.js";
3
+ } from "./chunk-3UAHDLKH.js";
4
4
  import {
5
5
  SCHEDULE_NAME_METRICS
6
6
  } from "./chunk-3R6BR22L.js";
@@ -91,4 +91,4 @@ export {
91
91
  nameLineSx,
92
92
  chipsSx
93
93
  };
94
- //# sourceMappingURL=chunk-A5OERY43.js.map
94
+ //# sourceMappingURL=chunk-GARM5SX6.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-I4DG3PP4.js";
4
4
  import {
5
5
  ManageViewsDialog
6
- } from "./chunk-K7IDOTSU.js";
6
+ } from "./chunk-VNMD6BA4.js";
7
7
  import {
8
8
  useDataViewsCopy
9
9
  } from "./chunk-KHG57NAE.js";
@@ -121,4 +121,4 @@ export {
121
121
  ViewsMenuSlot,
122
122
  ViewDialogs
123
123
  };
124
- //# sourceMappingURL=chunk-WJMSND5Q.js.map
124
+ //# sourceMappingURL=chunk-GXGHEOWC.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ CarouselChrome
3
+ } from "./chunk-TB5CRHTF.js";
1
4
  import {
2
5
  containerStyles,
3
6
  frameBox
@@ -8,9 +11,6 @@ import {
8
11
  import {
9
12
  useCarouselNavigation
10
13
  } from "./chunk-RUIV5TVA.js";
11
- import {
12
- CarouselChrome
13
- } from "./chunk-TB5CRHTF.js";
14
14
  import {
15
15
  withDefaults
16
16
  } from "./chunk-HPK33ACY.js";
@@ -151,4 +151,4 @@ var Carousel = (props) => {
151
151
  export {
152
152
  Carousel
153
153
  };
154
- //# sourceMappingURL=chunk-U2SAW6DH.js.map
154
+ //# sourceMappingURL=chunk-GY53SDVL.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  GridShell
3
- } from "./chunk-XFZDO2KB.js";
3
+ } from "./chunk-UIIHUWOV.js";
4
4
  import {
5
5
  useDataViewsState
6
- } from "./chunk-XBWW3QSI.js";
6
+ } from "./chunk-7WE432RQ.js";
7
7
 
8
8
  // src/components/data-display/DataViews/DataViewsGrid.tsx
9
9
  import { useEffect, useRef } from "react";
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
27
27
  export {
28
28
  DataViewsGrid
29
29
  };
30
- //# sourceMappingURL=chunk-MFX4ASX5.js.map
30
+ //# sourceMappingURL=chunk-HWZETMO4.js.map
@@ -9,8 +9,9 @@ import {
9
9
  ERROR_STATE_PADDING_UNITS,
10
10
  ERROR_TEXT_GAP_UNITS,
11
11
  RETRY_MARGIN_TOP_UNITS,
12
+ RETRY_MIN_HEIGHT,
12
13
  RETRY_MIN_WIDTH
13
- } from "./chunk-TLGGVE56.js";
14
+ } from "./chunk-OTVOQHZB.js";
14
15
  import {
15
16
  EN_US_UI_LABELS
16
17
  } from "./chunk-XOXXG7Q5.js";
@@ -135,7 +136,8 @@ var ErrorState = React.memo((props) => {
135
136
  "data-testid": testId("retry-button"),
136
137
  sx: {
137
138
  mt: theme.spacing(RETRY_MARGIN_TOP_UNITS),
138
- minWidth: rem(theme, RETRY_MIN_WIDTH)
139
+ minWidth: rem(theme, RETRY_MIN_WIDTH),
140
+ minHeight: rem(theme, RETRY_MIN_HEIGHT)
139
141
  },
140
142
  children: retryLabel
141
143
  }
@@ -151,4 +153,4 @@ export {
151
153
  ErrorState,
152
154
  ErrorState_default
153
155
  };
154
- //# sourceMappingURL=chunk-HBH7V3IP.js.map
156
+ //# sourceMappingURL=chunk-I6IFUFLW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/ErrorState/ErrorState.tsx"],"sourcesContent":["import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport WarningAmberIcon from '@mui/icons-material/WarningAmber';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Stack from '@mui/material/Stack/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport {\n ERROR_ICON_BOX,\n ERROR_ICON_BOX_OPACITY,\n ERROR_ICON_SIZE,\n ERROR_MESSAGE_LINE_HEIGHT,\n ERROR_MESSAGE_MAX_WIDTH,\n ERROR_STATE_GAP_UNITS,\n ERROR_STATE_MIN_HEIGHT,\n ERROR_STATE_PADDING_UNITS,\n ERROR_TEXT_GAP_UNITS,\n RETRY_MARGIN_TOP_UNITS,\n RETRY_MIN_HEIGHT,\n RETRY_MIN_WIDTH,\n} from './ErrorState.metrics';\nimport type { ErrorStateProps, ErrorStateSeverity } from './ErrorState.types';\nimport { resolveTestId } from '../../../platform/test-id';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\n\nconst makeTestId =\n (dataTestId?: string) =>\n (suffix: string): string =>\n dataTestId ? `${dataTestId}-${suffix}` : `error-state-${suffix}`;\n\nconst paletteFor = (theme: Theme, severity: ErrorStateSeverity) =>\n severity === 'error' ? theme.palette.error : theme.palette.warning;\n\nconst ErrorIcon: React.FC<{\n severity: ErrorStateSeverity;\n icon?: React.ReactNode;\n testId: string;\n}> = ({ severity, icon, testId }) => {\n const theme = useTheme();\n const color = paletteFor(theme, severity);\n const Fallback = severity === 'error' ? ErrorOutlineIcon : WarningAmberIcon;\n\n return (\n <Box\n data-testid={testId}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: rem(theme, ERROR_ICON_BOX),\n height: rem(theme, ERROR_ICON_BOX),\n borderRadius: '50%',\n backgroundColor: color.light,\n opacity: ERROR_ICON_BOX_OPACITY,\n }}\n >\n {icon || <Fallback sx={{ fontSize: sxRem(ERROR_ICON_SIZE), color: color.main }} />}\n </Box>\n );\n};\n\nconst ErrorText: React.FC<{\n title?: string;\n message: string;\n titleId: string;\n testId: (suffix: string) => string;\n}> = ({ title, message, titleId, testId }) => {\n const theme = useTheme();\n\n return (\n <Stack spacing={ERROR_TEXT_GAP_UNITS} alignItems=\"center\">\n {title && (\n <Typography\n id={titleId}\n variant=\"h6\"\n component=\"h3\"\n data-testid={testId('title')}\n sx={{\n fontWeight: theme.typography.fontWeightMedium,\n color: theme.palette.text.primary,\n }}\n >\n {title}\n </Typography>\n )}\n\n <Typography\n id={`${titleId}-message`}\n variant=\"body2\"\n color=\"text.secondary\"\n data-testid={testId('message')}\n sx={{\n maxWidth: rem(theme, ERROR_MESSAGE_MAX_WIDTH),\n lineHeight: ERROR_MESSAGE_LINE_HEIGHT,\n }}\n >\n {message}\n </Typography>\n </Stack>\n );\n};\n\nexport const ErrorState: React.FC<ErrorStateProps> = React.memo((props) => {\n const {\n message,\n title,\n onRetry,\n retryLabel = EN_US_UI_LABELS.errorState.retry,\n severity = 'error',\n icon,\n className,\n } = props;\n const theme = useTheme();\n const titleId = React.useId();\n // `dataTestId` is the documented spelling; `testID`, the shared contract's\n // other one, resolves to the same id.\n const dataTestId = resolveTestId(props);\n const testId = makeTestId(dataTestId);\n\n return (\n <Box\n role=\"alert\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={`${titleId}-message`}\n className={className}\n data-testid={dataTestId || 'error-state'}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n padding: theme.spacing(ERROR_STATE_PADDING_UNITS),\n minHeight: rem(theme, ERROR_STATE_MIN_HEIGHT),\n gap: theme.spacing(ERROR_STATE_GAP_UNITS),\n }}\n >\n <ErrorIcon severity={severity} icon={icon} testId={testId('icon')} />\n\n <ErrorText title={title} message={message} titleId={titleId} testId={testId} />\n\n {onRetry && (\n <Button\n variant=\"outlined\"\n color={severity}\n onClick={onRetry}\n startIcon={<RefreshIcon />}\n data-testid={testId('retry-button')}\n sx={{\n mt: theme.spacing(RETRY_MARGIN_TOP_UNITS),\n minWidth: rem(theme, RETRY_MIN_WIDTH),\n minHeight: rem(theme, RETRY_MIN_HEIGHT),\n }}\n >\n {retryLabel}\n </Button>\n )}\n </Box>\n );\n});\n\nErrorState.displayName = 'ErrorState';\n\nexport default ErrorState;\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CountedIcon
3
- } from "./chunk-LDCZPZPD.js";
3
+ } from "./chunk-24HHUCWB.js";
4
4
  import {
5
5
  rem
6
6
  } from "./chunk-YKCAJ2TN.js";
@@ -133,4 +133,4 @@ function RailCreateMenu({
133
133
  export {
134
134
  RailCreateMenu
135
135
  };
136
- //# sourceMappingURL=chunk-MM3QESLI.js.map
136
+ //# sourceMappingURL=chunk-ILJ3FXIC.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- useDataViewsLayout
3
- } from "./chunk-5CAWRMDX.js";
4
1
  import {
5
2
  DataViewsScopeTabs
6
3
  } from "./chunk-PL2AB5HJ.js";
4
+ import {
5
+ useDataViewsLayout
6
+ } from "./chunk-5CAWRMDX.js";
7
7
 
8
8
  // src/components/data-display/DataViews/data-views-scope-tabs.tsx
9
9
  import { jsx } from "react/jsx-runtime";
@@ -34,4 +34,4 @@ function ScopeTabsSlot({
34
34
  export {
35
35
  ScopeTabsSlot
36
36
  };
37
- //# sourceMappingURL=chunk-K6VEN5VN.js.map
37
+ //# sourceMappingURL=chunk-K3PMMW23.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  withConfirmation
3
- } from "./chunk-ALOEOGQV.js";
3
+ } from "./chunk-3TZUZXY5.js";
4
4
  import {
5
5
  Button
6
6
  } from "./chunk-YOXYSAUI.js";
@@ -18,4 +18,4 @@ function createConfirmButton(copy, errorText) {
18
18
  export {
19
19
  createConfirmButton
20
20
  };
21
- //# sourceMappingURL=chunk-T5RFH2T5.js.map
21
+ //# sourceMappingURL=chunk-KOGJBAFI.js.map