@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,12 +1,11 @@
1
1
  import { type SxProps, type Theme } from '@mui/material/styles/index.js';
2
2
  import type { ScheduleBlockTone } from '../ScheduleGrid/ScheduleGrid.types';
3
- /** The container narrow rows answer to (container queries, never media queries). */
3
+ /** The ruler's root: the named container every layout query reads. */
4
+ export declare const rootSx: SxProps<Theme>;
4
5
  /**
5
- * `--dr-actions`: the actions column, 220px when any row has actions and
6
- * nothing when none does (no empty column at the end of every row).
6
+ * Name · track: the coverage row and the axis row share these columns with
7
+ * every row on a computer, so the hours line up down the whole ruler.
7
8
  */
8
- export declare function rootSx(hasActions: boolean): SxProps<Theme>;
9
- /** Name · track · actions, the coverage row and the axis row share these columns on a computer. */
10
9
  export declare const lineSx: SxProps<Theme>;
11
10
  export declare const coverageLabelSx: SxProps<Theme>;
12
11
  export declare function coverageSx(hours: number): SxProps<Theme>;
@@ -19,8 +18,10 @@ export declare function coverageCellSx(count: number): SxProps<Theme>;
19
18
  export declare const axisSx: SxProps<Theme>;
20
19
  export declare const groupTitleSx: SxProps<Theme>;
21
20
  /**
22
- * One person's row. A computer: name · track · actions on one line. A narrow
23
- * ruler (a phone): name and actions on top, the track under them, full width.
21
+ * One person's row. A computer: name (its actions under it) · track, the
22
+ * track the same width on every row whether or not the row has actions. A
23
+ * narrow ruler (a phone): name and actions on top, the track under them, full
24
+ * width.
24
25
  */
25
26
  export declare const rowSx: SxProps<Theme>;
26
27
  export declare const whoSx: SxProps<Theme>;
@@ -37,30 +38,26 @@ export interface Span {
37
38
  at: number;
38
39
  share: number;
39
40
  }
41
+ /** How far a bar's hit band may reach, in % of the track: the midpoints to its neighbours, or the track's ends. */
42
+ export interface HitBounds {
43
+ lo: number;
44
+ hi: number;
45
+ }
40
46
  export declare function blockSx(tone: ScheduleBlockTone, span: Span, opts: {
41
47
  selected: boolean;
42
48
  movable: boolean;
49
+ hit: HitBounds;
43
50
  }): SxProps<Theme>;
44
51
  export declare function handleSx(side: 'l' | 'r'): SxProps<Theme>;
45
52
  export declare function actualSx(span: Span): SxProps<Theme>;
46
53
  export declare function actualLabelSx(left: number): SxProps<Theme>;
54
+ /**
55
+ * "Agora": drawn UNDER the blocks (before them in the track), so it never
56
+ * crosses a block's label — "07:30–1|3:00" at 1280 (FUT-3831). It still shows
57
+ * above and below each bar, where it overhangs the track, and through a
58
+ * block's fill where that fill is not opaque — never through its text.
59
+ */
47
60
  export declare function nowSx(left: number): SxProps<Theme>;
48
61
  export declare const skeletonTrackSx: SxProps<Theme>;
49
62
  export declare const skeletonNameSx: SxProps<Theme>;
50
- /**
51
- * A marked footer's words (FUT-3882): the warning ink deepened until it reads
52
- * at 4.5:1 on the page — `warning.main` is 3.1:1 on white. The outline keeps
53
- * `warning.main`: a non-text mark needs 3:1.
54
- */
55
- export declare function footerInk(theme: Theme, marked: boolean, plain: string): string;
56
- /** A group's count line (FUT-3882): plain counts on the hours' columns, a marked hour outlined in the warning ink. */
57
- export declare function footerCellSx(marked: boolean): SxProps<Theme>;
58
- /**
59
- * A footer line's sentence; when the host marks it ("Faltam 2, 20h–22h"), in
60
- * the readable warning ink with a warning bar before it — a shape, so colour
61
- * is never the only signal.
62
- */
63
- export declare function footerNoteSx(marked: boolean): SxProps<Theme>;
64
- /** A group's trend line: as tall as the coverage row, drawn in the primary colour. */
65
- export declare const trendSx: SxProps<Theme>;
66
63
  //# sourceMappingURL=DayRuler.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DayRuler.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/DayRuler.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAKhG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAG5E,oFAAoF;AACpF;;;GAGG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAQ1D;AAYD,mGAAmG;AACnG,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,KAAK,CAYhC,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,KAAK,CAAwD,CAAC;AAEpG,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAOxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAoB5D;AAED,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,KAAK,CAOhC,CAAC;AAEH,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,KAAK,CASvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,CAc/B,CAAC;AAEH,eAAO,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,CAAoC,CAAC;AAEtE,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,KAAK,CAQpC,CAAC;AAEF,6GAA6G;AAC7G,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAclD;AAUD,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAkBxG;AAED,qEAAqE;AACrE,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CA4C1H;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CASxD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAYnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAW1D;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAUlD;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,KAAK,CAKzC,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,KAAK,CAMxC,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,sHAAsH;AACtH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAc5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAO5D;AAED,sFAAsF;AACtF,eAAO,MAAM,OAAO,EAAE,OAAO,CAAC,KAAK,CAMjC,CAAC"}
1
+ {"version":3,"file":"DayRuler.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/DayRuler.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAKhG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAM5E,sEAAsE;AACtE,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,KAAK,CAMjC,CAAC;AAYF;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,KAAK,CAYhC,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,KAAK,CAAwD,CAAC;AAEpG,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAOxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAoB5D;AAED,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,KAAK,CAOhC,CAAC;AAEH,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,KAAK,CASvC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,CAgB/B,CAAC;AAEH,eAAO,MAAM,KAAK,EAAE,OAAO,CAAC,KAAK,CAAoC,CAAC;AAEtE,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,KAAK,CAUnC,CAAC;AAEH,6GAA6G;AAC7G,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAclD;AAUD,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAkBxG;AAED,qEAAqE;AACrE,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mHAAmH;AACnH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAqBD,wBAAgB,OAAO,CACrB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GAC5D,OAAO,CAAC,KAAK,CAAC,CAsDhB;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAaxD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAYnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAW1D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAUlD;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,KAAK,CAKzC,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,KAAK,CAMxC,CAAC"}
@@ -11,9 +11,14 @@ export interface DayRulerBlock {
11
11
  id: string;
12
12
  start: RulerHour;
13
13
  end: RulerHour;
14
- /** What the block says ("↻ 20:39–00:00", "Ausente"). One line, cut with an ellipsis. */
14
+ /**
15
+ * What the block says ("↻ 20:39–00:00", "Ausente"). One line, drawn whole or
16
+ * not at all: a bar too short for it says `shortLabel`, and one too short
17
+ * even for that says nothing — never a cut text (FUT-3831). Either way it
18
+ * stays the block's tooltip (unless `title`) and its accessible name.
19
+ */
15
20
  label: string;
16
- /** What a NARROW block says on a narrow ruler (a phone) instead of a cut label — its start ("20:39"). */
21
+ /** What a block too short for its `label` says instead, at any width — its start ("20:39"). */
17
22
  shortLabel?: string;
18
23
  tone: ScheduleBlockTone;
19
24
  /** Its middle can be dragged along the row (and Alt+←/→ moves it). */
@@ -51,7 +56,12 @@ export interface DayRulerRow {
51
56
  nameAdornment?: React.ReactNode;
52
57
  /** Under the meta: the host's chips (praça, "Em pausa desde …"). One line; a chip that does not fit shrinks, its label cut. */
53
58
  chips?: React.ReactNode;
54
- /** The row's own buttons ("Encerrar turno", "Iniciar agora"), at the end of the row. */
59
+ /**
60
+ * The row's own buttons ("Encerrar turno", "Iniciar agora"): under the name
61
+ * on a computer, beside it when the row stacks. They take no column of their
62
+ * own, so every track keeps the same width and the hours stay aligned
63
+ * (FUT-3831).
64
+ */
55
65
  actions?: React.ReactNode;
56
66
  blocks: readonly DayRulerBlock[];
57
67
  actual?: DayRulerActual;
@@ -1 +1 @@
1
- {"version":3,"file":"DayRuler.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/DayRuler.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DayRuler.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/DayRuler.types.ts"],"names":[],"mappings":"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"}
@@ -23,4 +23,31 @@ export declare function resized(start: RulerHour, end: RulerHour, side: 'start'
23
23
  export declare function createdSpan(a: RulerHour, b: RulerHour, minHours: number, createHours: number, to: RulerHour): [RulerHour, RulerHour];
24
24
  /** The axis labels: every `step` hours from `from` to `to`, both ends included. */
25
25
  export declare function ticksOf(from: RulerHour, to: RulerHour, step: number): RulerHour[];
26
+ /** A bar along the track: where it starts and how long it is, both in % of the track. */
27
+ export interface TrackSpan {
28
+ at: number;
29
+ share: number;
30
+ }
31
+ /**
32
+ * How far each bar's hit band may reach, in % of the track (FUT-3831): from
33
+ * `lo` to `hi`, never past the track's ends and never past the MIDPOINT of
34
+ * the gap to the bar beside it, so a band widened round a short bar cannot
35
+ * take a tap meant for its neighbour. Two bars that touch or overlap give each
36
+ * other nothing: the band stays on the bar's own edge on that side.
37
+ *
38
+ * The band itself is drawn in CSS — at least the hit area wide, centred on the
39
+ * bar, then cut to `lo…hi` — because the bar's width in px is the layout's.
40
+ */
41
+ export declare function hitBoundsOf(spans: readonly TrackSpan[]): {
42
+ lo: number;
43
+ hi: number;
44
+ }[];
45
+ /** What a block can say in its bar: its full text, its start, or nothing. */
46
+ export type BlockTextFit = 'full' | 'short' | 'none';
47
+ /**
48
+ * Which of a block's texts fits the room it leaves inside the bar, by pixels
49
+ * (FUT-3831): the full one, else the short one, else NOTHING — a cut "12:"
50
+ * says less than an empty bar whose title and accessible name carry the text.
51
+ */
52
+ export declare function textFitOf(fullWidth: number, shortWidth: number, room: number): BlockTextFit;
26
53
  //# sourceMappingURL=day-ruler-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"day-ruler-model.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/day-ruler-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AAEH,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,SAAS,CAE7E;AAED,yGAAyG;AACzG,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAGtH;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAE9E;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAK/C;AAED,qBAAqB;AACrB,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAEpE;AAED,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAI7H;AAED,mGAAmG;AACnG,wBAAgB,OAAO,CACrB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,OAAO,GAAG,KAAK,EACrB,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,GACZ,CAAC,SAAS,EAAE,SAAS,CAAC,CAGxB;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CACzB,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,GACZ,CAAC,SAAS,EAAE,SAAS,CAAC,CAKxB;AAED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAKjF"}
1
+ {"version":3,"file":"day-ruler-model.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/day-ruler-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AAEH,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAE5D;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,SAAS,CAE7E;AAED,yGAAyG;AACzG,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAGtH;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAE9E;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAK/C;AAED,qBAAqB;AACrB,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAEpE;AAED,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAI7H;AAED,mGAAmG;AACnG,wBAAgB,OAAO,CACrB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,OAAO,GAAG,KAAK,EACrB,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,GACZ,CAAC,SAAS,EAAE,SAAS,CAAC,CAGxB;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CACzB,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,GACZ,CAAC,SAAS,EAAE,SAAS,CAAC,CAKxB;AAED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAKjF;AAED,yFAAyF;AACzF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,CAYrF;AAED,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAK3F"}
@@ -1,14 +1,16 @@
1
1
  import type * as React from 'react';
2
+ import { type BlockTextFit } from './day-ruler-model';
2
3
  /**
3
- * Whether a block's full text fits it, by pixels (FUT-3825): the full text's
4
- * own width against the room the block leaves it, re-read whenever the block
5
- * is resized. A wide block on a narrow ruler keeps "18:00–23:00"; only one too
6
- * short for it says its start.
4
+ * Which of a block's texts fits it, by pixels (FUT-3825, FUT-3831): the full
5
+ * text's and the short text's own widths against the room the block leaves
6
+ * them. A wide block keeps "18:00–23:00"; one too short for it says its start
7
+ * ("18:00"); one too short even for that says nothing — never a cut "18:".
7
8
  *
8
- * The full text is measured with its span shown for the measurement alone
9
- * (synchronously, so nothing is painted), even while the short text stands in
10
- * for it. Where nothing can be measured (no `ResizeObserver`) it answers
11
- * `fallback`.
9
+ * Measured at once (synchronously, so nothing is painted), then again on the
10
+ * next frame whenever the block is resized, and once more when the page's
11
+ * fonts have loaded: a webfont arriving late changes every text's width, and
12
+ * a fit read in the fallback font would leave a label cut. Where nothing can
13
+ * be measured (no `ResizeObserver`) it answers `fallback`.
12
14
  */
13
- export declare function useTextFits(block: React.RefObject<HTMLElement | null>, text: string, fallback: boolean): boolean;
15
+ export declare function useTextFit(block: React.RefObject<HTMLElement | null>, text: string, short: string, fallback: BlockTextFit): BlockTextFit;
14
16
  //# sourceMappingURL=useTextFits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTextFits.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/useTextFits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CA0BhH"}
1
+ {"version":3,"file":"useTextFits.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/useTextFits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAoCjE;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,YAAY,CAgCxI"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorState.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ErrorState/ErrorState.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,oBAAoB,CAAC;AAkF9E,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwD/C,CAAC;AAIH,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ErrorState.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ErrorState/ErrorState.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,oBAAoB,CAAC;AAkF9E,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyD/C,CAAC;AAIH,eAAe,UAAU,CAAC"}
@@ -22,6 +22,11 @@ export declare const ERROR_MESSAGE_LINE_HEIGHT = 1.6;
22
22
  /** The retry button: 8px below the text, no narrower than 120px. */
23
23
  export declare const RETRY_MARGIN_TOP_UNITS = 1;
24
24
  export declare const RETRY_MIN_WIDTH = 120;
25
+ /**
26
+ * The web retry is never shorter than the 40px tap floor. MUI's medium outlined
27
+ * button is 37px tall on its own (FUT-1310), so the floor is stated, not inherited.
28
+ */
29
+ export declare const RETRY_MIN_HEIGHT = 40;
25
30
  /**
26
31
  * The web retry IS MUI's medium outlined `Button`: 5px 15px inside its 1px
27
32
  * border, 14px type, the theme's radius, a 20px start icon. The native side
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorState.metrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ErrorState/ErrorState.metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErE;;;;;;GAMG;AAEH,8GAA8G;AAC9G,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,qFAAqF;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,GAAG,cAAc,CAE9F"}
1
+ {"version":3,"file":"ErrorState.metrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ErrorState/ErrorState.metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErE;;;;;;GAMG;AAEH,8GAA8G;AAC9G,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,qFAAqF;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,GAAG,cAAc,CAE9F"}
@@ -20,6 +20,14 @@ export declare function signalInk(theme: Theme, signal: 'warning' | 'success', g
20
20
  * a raised chip. Never colour alone: every tone also carries its note text.
21
21
  */
22
22
  export declare function blockToneStyles(theme: Theme, tone: ScheduleBlockTone, dashedPlan?: boolean): CSSObject;
23
+ /**
24
+ * An OPAQUE ground for a ruler block's label where the block's own fill is
25
+ * not opaque (the dashed plan's faint wash, the away / uncovered outline): the
26
+ * fill flattened over the cell's ground, so the label reads the same and
27
+ * whatever the track draws under the block — the "agora" line — never shows
28
+ * through the text (FUT-3831). An opaque fill needs none: `undefined`.
29
+ */
30
+ export declare function dashedLabelGround(theme: Theme, tone: ScheduleBlockTone): string | undefined;
23
31
  /**
24
32
  * A break inside a block (a meal break): the page's own ground with diagonal
25
33
  * stripes of the disabled action colour, opaque, so the block reads as CUT there in any
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-tones.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ScheduleGrid/schedule-tones.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAM/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAStC,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE/C;AAED,8GAA8G;AAC9G,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CASjF;AAWD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG7F;AAaD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,UAAQ,GAAG,SAAS,CAoCpG;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI/E;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD"}
1
+ {"version":3,"file":"schedule-tones.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ScheduleGrid/schedule-tones.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAM/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,8FAA8F;AAC9F,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAStC,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE/C;AAED,8GAA8G;AAC9G,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CASjF;AAWD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG7F;AAaD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,UAAQ,GAAG,SAAS,CAoCpG;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAI3F;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI/E;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEnD"}
@@ -22,6 +22,11 @@ export declare const ERROR_MESSAGE_LINE_HEIGHT = 1.6;
22
22
  /** The retry button: 8px below the text, no narrower than 120px. */
23
23
  export declare const RETRY_MARGIN_TOP_UNITS = 1;
24
24
  export declare const RETRY_MIN_WIDTH = 120;
25
+ /**
26
+ * The web retry is never shorter than the 40px tap floor. MUI's medium outlined
27
+ * button is 37px tall on its own (FUT-1310), so the floor is stated, not inherited.
28
+ */
29
+ export declare const RETRY_MIN_HEIGHT = 40;
25
30
  /**
26
31
  * The web retry IS MUI's medium outlined `Button`: 5px 15px inside its 1px
27
32
  * border, 14px type, the theme's radius, a 20px start icon. The native side
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorState.metrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ErrorState/ErrorState.metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErE;;;;;;GAMG;AAEH,8GAA8G;AAC9G,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,qFAAqF;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,GAAG,cAAc,CAE9F"}
1
+ {"version":3,"file":"ErrorState.metrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ErrorState/ErrorState.metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErE;;;;;;GAMG;AAEH,8GAA8G;AAC9G,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,qFAAqF;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,GAAG,cAAc,CAE9F"}
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  UserAvatar,
3
3
  UserMenu
4
- } from "./chunk-E2UOEI7N.js";
4
+ } from "./chunk-6LGKJVOA.js";
5
5
  import "./chunk-DQ22UKMZ.js";
6
6
  import "./chunk-UDQSIRAP.js";
7
- import "./chunk-JIEVKHOH.js";
7
+ import "./chunk-4J62V5OE.js";
8
+ import "./chunk-3ZVUNSFF.js";
8
9
  import "./chunk-7XSCEHGA.js";
9
10
  import "./chunk-MTEQEPNY.js";
10
11
  import "./chunk-6ZZGK5DT.js";
11
- import "./chunk-3ZVUNSFF.js";
12
12
  import "./chunk-VUHLNYAE.js";
13
13
  import "./chunk-2GSIEDGN.js";
14
14
  import "./chunk-4XBAEKQQ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.93.0",
3
+ "version": "6.93.2",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -155,6 +155,30 @@ that fits keeps its natural widths, pushed to the right; a pair that does not
155
155
  stacks, with the primary on top. With `emphasis="cancel"` the two buttons also
156
156
  grow to share the row, so stacked they take its full width.
157
157
 
158
+ **Stacked order** is the library's rule ([guidelines › Stacked
159
+ buttons](../../../../components-guidelines.md#stacked-buttons)): the primary on
160
+ top, the dismissive button at the bottom — so on a destructive question the
161
+ verb sits above Cancel, and Cancel takes the bottom slot, the one a thumb
162
+ reaches first. Cancel stays FIRST in the DOM, so it is also the first to tab
163
+ to.
164
+
165
+ ### Narrow Layout (FUT-3831)
166
+
167
+ A dialog given less than **480px** — read with a container query on its
168
+ `.MuiDialog-container` (named `alert-dialog`), never a media query, so a dialog
169
+ portalled into a narrow pane answers to the pane — lays out for a phone:
170
+
171
+ - **The icon sits above the title**, beside the close button, and the title
172
+ takes the paper's whole width. At 320 the icon column and the close button's
173
+ clearance had left a long question about two words a line. A title with no
174
+ icon (`icon={null}`) keeps the close button's clearance.
175
+ - **A pair of buttons always grows**: a pair that still fits shares the row in
176
+ two equal halves, and a pair that stacks is two buttons each across the row,
177
+ in the stacked order above — never two ragged widths pushed to the right. A
178
+ lone button (`showCancel={false}`) keeps its own width, pushed to the right.
179
+
180
+ Over 480px nothing changes.
181
+
158
182
  ### Without Cancel Button
159
183
 
160
184
  ```tsx
@@ -306,7 +330,7 @@ The AlertDialog component includes `data-testid` attributes for reliable testing
306
330
  | `alert-dialog` | Dialog container | Root Dialog element (can be customized via prop) |
307
331
  | `{dataTestId}-close-button` | Close button | X button in top-right corner |
308
332
  | `{dataTestId}-title` | Title section | Dialog title container |
309
- | `{dataTestId}-icon` | Icon wrapper | Wrapper around icon element (when icon is shown) |
333
+ | `{dataTestId}-icon` | Icon wrapper | Wrapper around icon element (when icon is shown); carries `data-alert-icon` |
310
334
  | `{dataTestId}-content` | Content section | Dialog content container |
311
335
  | `{dataTestId}-description` | Description text | Main description text element |
312
336
  | `{dataTestId}-actions` | Actions section | Dialog actions footer container |
@@ -8,6 +8,7 @@ import Button from '@mui/material/Button/index.js';
8
8
  import CircularProgress from '@mui/material/CircularProgress/index.js';
9
9
  import DialogActions from '@mui/material/DialogActions/index.js';
10
10
  import { styled, useTheme } from '@mui/material/styles/index.js';
11
+ import type { Theme } from '@mui/material/styles/index.js';
11
12
  import React from 'react';
12
13
 
13
14
  import { rem } from '../../../tokens/relative';
@@ -15,6 +16,21 @@ import { EN_US_UI_LABELS } from '../../../en-US.labels';
15
16
 
16
17
  import type { AlertDialogProps } from './AlertDialog.types';
17
18
 
19
+ /** The query container the dialog's narrow layout reads: its `.MuiDialog-container`. */
20
+ export const ALERT_DIALOG_CONTAINER = 'alert-dialog';
21
+
22
+ /**
23
+ * Below this width of the space the dialog is given, it lays out for a phone:
24
+ * the icon above the title, the buttons each across the row. 480px covers
25
+ * every phone (320–430) and leaves a tablet's dialog as it was.
26
+ */
27
+ export const ALERT_DIALOG_NARROW_BELOW = 480;
28
+
29
+ /** `@container` for a dialog given less than {@link ALERT_DIALOG_NARROW_BELOW}. Never a media query. */
30
+ export function narrowDialog(theme: Theme): string {
31
+ return `@container ${ALERT_DIALOG_CONTAINER} (width < ${rem(theme, ALERT_DIALOG_NARROW_BELOW)})`;
32
+ }
33
+
18
34
  /**
19
35
  * The action row WRAPS WHOLE BUTTONS; it never breaks a label inside one. A pair
20
36
  * that did not fit side by side used to squeeze the longer label onto two
@@ -29,6 +45,16 @@ import type { AlertDialogProps } from './AlertDialog.types';
29
45
  * the default because growing also stretches a pair that fits, which would
30
46
  * redraw every existing dialog's footer.
31
47
  *
48
+ * Narrow (a dialog given less than {@link ALERT_DIALOG_NARROW_BELOW}, a
49
+ * phone) a PAIR of buttons always grows (a lone one keeps its width), so a pair that stacks is two buttons each
50
+ * across the row rather than two ragged widths pushed to the right
51
+ * (FUT-3831). The stacked ORDER is the library's rule, the platforms' too
52
+ * (Material's stacked dialog actions, Apple's stacked alert buttons): the
53
+ * primary on top and the dismissive one at the bottom, the slot a thumb
54
+ * reaches first — so on a destructive question the safe tap is the near one,
55
+ * and Cancel is still FIRST in the DOM, the tab order. See
56
+ * `components-guidelines.md`, "Stacked buttons".
57
+ *
32
58
  * Rendered with `disableSpacing`: MUI's own spacing is a left margin on every
33
59
  * button after the first, which would indent a button that wrapped onto a line
34
60
  * of its own. The gaps below replace it, at the same 16px across.
@@ -44,6 +70,8 @@ const StyledDialogActions = styled(DialogActions, {
44
70
  // medium button is 37px, short of it on a phone.
45
71
  '& > .MuiButton-root': { minHeight: rem(theme, 40) },
46
72
  ...(fill && { '& > .MuiButton-root': { flexGrow: 1, minHeight: rem(theme, 40) } }),
73
+ // A PAIR only: a lone button (`showCancel={false}`) keeps its own width.
74
+ [narrowDialog(theme)]: { '& > .MuiButton-root:not(:only-child)': { flexGrow: 1 } },
47
75
  }));
48
76
 
49
77
  const confirmButtonColor = (variant: AlertDialogProps['variant']): 'error' | 'primary' =>
@@ -14,7 +14,7 @@ import React from 'react';
14
14
  import { EN_US_UI_LABELS } from '../../../en-US.labels';
15
15
  import { neutralTones } from '../../../tokens/ink';
16
16
 
17
- import { AlertDialogFooter } from './AlertDialog.parts';
17
+ import { ALERT_DIALOG_CONTAINER, AlertDialogFooter, narrowDialog } from './AlertDialog.parts';
18
18
  import type { AlertDialogProps } from './AlertDialog.types';
19
19
  import { rem, rems } from '../../../tokens/relative';
20
20
 
@@ -34,6 +34,15 @@ const pulseAnimation = (theme: Theme) => keyframes`
34
34
  }
35
35
  `;
36
36
 
37
+ /**
38
+ * The container the narrow layout answers to: the space the dialog is given
39
+ * (the viewport, or the element a host portals it into), read with a
40
+ * container query — never a media query (FUT-3831).
41
+ */
42
+ const QUERY_CONTAINER = {
43
+ '& .MuiDialog-container': { containerType: 'inline-size', containerName: ALERT_DIALOG_CONTAINER },
44
+ } as const;
45
+
37
46
  const StyledDialog = styled(Dialog, {
38
47
  shouldForwardProp: (prop) =>
39
48
  !['customVariant', 'glow', 'pulse'].includes(prop as string),
@@ -41,7 +50,7 @@ const StyledDialog = styled(Dialog, {
41
50
  customVariant?: string;
42
51
  glow?: boolean;
43
52
  pulse?: boolean;
44
- }>(({ theme, customVariant, glow, pulse }) => ({
53
+ }>(QUERY_CONTAINER, ({ theme, customVariant, glow, pulse }) => ({
45
54
  '& .MuiDialog-paper': {
46
55
  borderRadius: theme.spacing(2),
47
56
  transition: 'all 0.3s ease',
@@ -122,7 +131,17 @@ const StyledDialog = styled(Dialog, {
122
131
  },
123
132
  }));
124
133
 
125
- const StyledDialogTitle = styled(DialogTitle)(({ theme }) => ({
134
+ /**
135
+ * The title row. Wide: the icon beside the title, which keeps clear of the
136
+ * close button. Narrow (a dialog given less than `narrowBelow`, a phone): the
137
+ * icon ABOVE the title, beside the close button, so the question takes the
138
+ * paper's whole width — at 320 the icon column and the close button had left
139
+ * it about two words a line (FUT-3831). Without an icon the title keeps the
140
+ * close button's clearance at every width.
141
+ */
142
+ const StyledDialogTitle = styled(DialogTitle, {
143
+ shouldForwardProp: (prop) => prop !== 'withIcon',
144
+ })<{ withIcon: boolean }>(({ theme, withIcon }) => ({
126
145
  display: 'flex',
127
146
  alignItems: 'center',
128
147
  gap: theme.spacing(1.5),
@@ -131,6 +150,14 @@ const StyledDialogTitle = styled(DialogTitle)(({ theme }) => ({
131
150
  fontWeight: 600,
132
151
  fontSize: rem(theme, 20),
133
152
  },
153
+ ...(withIcon && {
154
+ [narrowDialog(theme)]: {
155
+ flexDirection: 'column',
156
+ alignItems: 'flex-start',
157
+ paddingRight: theme.spacing(3),
158
+ '& > [data-alert-icon]': { display: 'flex', minHeight: rem(theme, 24) },
159
+ },
160
+ }),
134
161
  }));
135
162
 
136
163
  const StyledDialogContent = styled(DialogContent)(({ theme }) => ({
@@ -218,9 +245,11 @@ function AlertDialogHeader({
218
245
  }): React.ReactElement | null {
219
246
  if (!title) return null;
220
247
  return (
221
- <StyledDialogTitle id={titleId(dataTestId)} data-testid={`${dataTestId}-title`}>
248
+ <StyledDialogTitle id={titleId(dataTestId)} data-testid={`${dataTestId}-title`} withIcon={icon !== null}>
222
249
  {icon !== null && (
223
- <span data-testid={`${dataTestId}-icon`}>{variantIcon(variant, icon)}</span>
250
+ <span data-testid={`${dataTestId}-icon`} data-alert-icon="">
251
+ {variantIcon(variant, icon)}
252
+ </span>
224
253
  )}
225
254
  <Typography variant="h6" component="span">
226
255
  {title}
@@ -0,0 +1,54 @@
1
+ import type { SxProps, Theme } from '@mui/material/styles/index.js';
2
+
3
+ import { rem } from '../../../tokens/relative';
4
+ import { signalInk } from '../ScheduleGrid/schedule-tones';
5
+ import { DAY_RULER_METRICS as M } from './DayRuler.metrics';
6
+
7
+ /**
8
+ * A marked footer's words (FUT-3882): the warning ink deepened until it reads
9
+ * at 4.5:1 on the page — `warning.main` is 3.1:1 on white. The outline keeps
10
+ * `warning.main`: a non-text mark needs 3:1.
11
+ */
12
+ export function footerInk(theme: Theme, marked: boolean, plain: string): string {
13
+ return marked ? signalInk(theme, 'warning', theme.palette.background.default) : plain;
14
+ }
15
+
16
+ /** A group's count line (FUT-3882): plain counts on the hours' columns, a marked hour outlined in the warning ink. */
17
+ export function footerCellSx(marked: boolean): SxProps<Theme> {
18
+ return (theme: Theme) => ({
19
+ display: 'flex',
20
+ alignItems: 'center',
21
+ justifyContent: 'center',
22
+ fontSize: rem(theme, M.coverage.font),
23
+ borderRadius: rem(theme, M.coverage.radius),
24
+ color: footerInk(theme, marked, theme.palette.text.primary),
25
+ fontWeight: marked ? 500 : 400,
26
+ // The hairline is always there, transparent when unmarked, so a mark never shifts a count.
27
+ border: `1px solid ${marked ? theme.palette.warning.main : 'transparent'}`,
28
+ minWidth: 0,
29
+ overflow: 'hidden',
30
+ });
31
+ }
32
+
33
+ /**
34
+ * A footer line's sentence; when the host marks it ("Faltam 2, 20h–22h"), in
35
+ * the readable warning ink with a warning bar before it — a shape, so colour
36
+ * is never the only signal.
37
+ */
38
+ export function footerNoteSx(marked: boolean): SxProps<Theme> {
39
+ return (theme: Theme) => ({
40
+ fontSize: rem(theme, M.meta),
41
+ color: footerInk(theme, marked, theme.palette.text.secondary),
42
+ fontWeight: marked ? 500 : 400,
43
+ ...(marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}),
44
+ });
45
+ }
46
+
47
+ /** A group's trend line: as tall as the coverage row, drawn in the primary colour. */
48
+ export const trendSx: SxProps<Theme> = (theme: Theme) => ({
49
+ display: 'block',
50
+ width: '100%',
51
+ height: rem(theme, M.coverage.height + M.coverage.height / 2),
52
+ color: theme.palette.primary.main,
53
+ overflow: 'visible',
54
+ });