@12-apps/ui 6.91.0 → 6.92.0

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 (243) hide show
  1. package/components-catalog.md +2 -2
  2. package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
  3. package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
  4. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  5. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -3
  6. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +4 -4
  7. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  8. package/dist/_internal/components/data-display/Chart/SpecChart.js +5 -5
  9. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  10. package/dist/_internal/components/data-display/Chip/Chip.js +3 -3
  11. package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -2
  12. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  13. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +16 -16
  14. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +22 -22
  15. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +1 -1
  16. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +3 -3
  17. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
  18. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +13 -13
  19. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +3 -3
  20. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +2 -2
  21. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +2 -2
  22. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  23. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
  24. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +1 -1
  25. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +4 -4
  26. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +1 -1
  27. package/dist/_internal/components/data-display/DayRuler/DayRuler.en-US.js +1 -1
  28. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +5 -5
  29. package/dist/_internal/components/data-display/DayRuler/DayRuler.labels.js +3 -3
  30. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +9 -4
  31. package/dist/_internal/components/data-display/DayRuler/DayRuler.pt-BR.js +1 -1
  32. package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +9 -1
  33. package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
  34. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +5 -5
  35. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +4 -4
  36. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +9 -9
  37. package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
  38. package/dist/_internal/components/data-display/Lightbox/Lightbox.js +2 -2
  39. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
  40. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +3 -3
  41. package/dist/_internal/components/data-display/RegionMap/RegionMap.js +2 -2
  42. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +4 -3
  43. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +3 -2
  44. package/dist/_internal/components/data-display/ScheduleGrid/schedule-header-host.styles.js +12 -0
  45. package/dist/_internal/components/data-display/ScheduleGrid/schedule-header-host.styles.js.map +1 -0
  46. package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
  47. package/dist/_internal/components/data-display/index.js +42 -41
  48. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
  49. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +5 -5
  50. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +4 -4
  51. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +3 -3
  52. package/dist/_internal/components/feedback/index.js +6 -6
  53. package/dist/_internal/components/index.js +60 -59
  54. package/dist/_internal/components/layout/SettingCard/SettingCard.js +8 -8
  55. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +4 -4
  56. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +7 -7
  57. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +5 -5
  58. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +9 -9
  59. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +8 -8
  60. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +9 -9
  61. package/dist/_internal/components/layout/index.js +12 -12
  62. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
  63. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
  64. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  65. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
  66. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  67. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
  68. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  69. package/dist/_internal/components/navigation/index.js +9 -9
  70. package/dist/charts.js +6 -6
  71. package/dist/{chunk-HC6OZ7QK.js → chunk-3EIRRLCQ.js} +2 -2
  72. package/dist/{chunk-7NP2JHGM.js → chunk-3OHZAZEE.js} +4 -4
  73. package/dist/{chunk-U2AEM3K4.js → chunk-3PQL2EN5.js} +2 -2
  74. package/dist/{chunk-M3XJVD5G.js → chunk-5357QUVE.js} +2 -2
  75. package/dist/{chunk-Z7T4EFEC.js → chunk-5I75WRXT.js} +4 -4
  76. package/dist/chunk-5MXVKZKZ.js +30 -0
  77. package/dist/chunk-5MXVKZKZ.js.map +1 -0
  78. package/dist/{chunk-5E2CRRD4.js → chunk-66VKX6JE.js} +5 -5
  79. package/dist/{chunk-N5PVD4J5.js → chunk-6DO672AG.js} +7 -7
  80. package/dist/{chunk-76DX2IMH.js → chunk-7F6D73NL.js} +2 -2
  81. package/dist/{chunk-XILMDEGZ.js → chunk-AI7XWBNG.js} +2 -2
  82. package/dist/{chunk-SNWCT6JN.js → chunk-AMIUZRDQ.js} +3 -3
  83. package/dist/{chunk-A3DDEKLV.js → chunk-BOADHYTA.js} +2 -2
  84. package/dist/{chunk-L3PDY7CJ.js → chunk-CKQOYPH3.js} +2 -2
  85. package/dist/{chunk-JH2XLVWM.js → chunk-CW5Z67NA.js} +2 -2
  86. package/dist/{chunk-3JZ3KEQQ.js → chunk-CZVAVX5L.js} +4 -4
  87. package/dist/{chunk-O3OU3ED7.js → chunk-D7R6SRJB.js} +3 -3
  88. package/dist/{chunk-O3OU3ED7.js.map → chunk-D7R6SRJB.js.map} +1 -1
  89. package/dist/{chunk-DVX4HDNP.js → chunk-DBPFKGXX.js} +2 -2
  90. package/dist/{chunk-QN7FVZQD.js → chunk-DHAXUVMR.js} +4 -4
  91. package/dist/{chunk-XCUHGPPZ.js → chunk-DTZOP4ZR.js} +2 -2
  92. package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
  93. package/dist/{chunk-MX2RF34M.js → chunk-E73C73UD.js} +15 -7
  94. package/dist/chunk-E73C73UD.js.map +1 -0
  95. package/dist/{chunk-42D7KBDH.js → chunk-EOIRU62W.js} +2 -2
  96. package/dist/{chunk-HNW7IZPV.js → chunk-EZBBLLEU.js} +5 -5
  97. package/dist/{chunk-HNW7IZPV.js.map → chunk-EZBBLLEU.js.map} +1 -1
  98. package/dist/{chunk-K3IB7S7Q.js → chunk-F2ZUUEXC.js} +3 -2
  99. package/dist/{chunk-K3IB7S7Q.js.map → chunk-F2ZUUEXC.js.map} +1 -1
  100. package/dist/{chunk-2M3W6ACW.js → chunk-FAUNQ3FS.js} +3 -3
  101. package/dist/{chunk-PJNIJIE6.js → chunk-FQNDJITD.js} +2 -2
  102. package/dist/{chunk-ZIHSCBMN.js → chunk-FWTVIRZZ.js} +4 -4
  103. package/dist/{chunk-KJKD6Y6V.js → chunk-GBB23QLL.js} +3 -3
  104. package/dist/{chunk-3IDL7NK7.js → chunk-K2VDRODL.js} +2 -2
  105. package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
  106. package/dist/{chunk-UKUGSU3Y.js → chunk-L4V7FZJI.js} +2 -2
  107. package/dist/{chunk-24HHUCWB.js → chunk-LDCZPZPD.js} +2 -2
  108. package/dist/{chunk-42TOCPXB.js → chunk-LXIPBHNJ.js} +5 -5
  109. package/dist/{chunk-ILJ3FXIC.js → chunk-MM3QESLI.js} +2 -2
  110. package/dist/{chunk-PGANINQD.js → chunk-NI67M453.js} +5 -5
  111. package/dist/{chunk-RDCIST7P.js → chunk-OCT5VCLP.js} +2 -2
  112. package/dist/{chunk-G2PVUPE7.js → chunk-OJZLFFG4.js} +41 -3
  113. package/dist/chunk-OJZLFFG4.js.map +1 -0
  114. package/dist/{chunk-F7LBTMCA.js → chunk-P53ANKZV.js} +4 -4
  115. package/dist/{chunk-HMEGQKNQ.js → chunk-PCQ5JWLF.js} +15 -7
  116. package/dist/chunk-PCQ5JWLF.js.map +1 -0
  117. package/dist/{chunk-QVDEGBME.js → chunk-PEAUGQKU.js} +4 -4
  118. package/dist/{chunk-JN2IANXD.js → chunk-R4LCPPKA.js} +2 -2
  119. package/dist/{chunk-U2QXQ7D4.js → chunk-S2VZUBM7.js} +4 -4
  120. package/dist/{chunk-HOPRZEBM.js → chunk-SKIAWOUC.js} +3 -3
  121. package/dist/{chunk-WCF56ZCD.js → chunk-TMINUTQQ.js} +2 -2
  122. package/dist/{chunk-ACM3HHZY.js → chunk-UDBOGSFO.js} +68 -2
  123. package/dist/chunk-UDBOGSFO.js.map +1 -0
  124. package/dist/{chunk-YGQM6GFQ.js → chunk-VHE7UEG5.js} +2 -2
  125. package/dist/{chunk-QHIWV55K.js → chunk-VWRXSBT2.js} +2 -2
  126. package/dist/{chunk-4KWDNGMA.js → chunk-W2KOP27S.js} +3 -3
  127. package/dist/{chunk-TSEBMVYY.js → chunk-X2GWR75Q.js} +3 -3
  128. package/dist/{chunk-JKZPGCN7.js → chunk-X3GD3TFI.js} +12 -12
  129. package/dist/{chunk-NKEFH3RS.js → chunk-XNAI7QGU.js} +2 -2
  130. package/dist/{chunk-L6JAALMX.js → chunk-XRV4QFEQ.js} +3 -3
  131. package/dist/{chunk-WH3LUOCQ.js → chunk-YE7M7URT.js} +2 -2
  132. package/dist/{chunk-DA3D5X5Z.js → chunk-YVDNCV2D.js} +6 -6
  133. package/dist/{chunk-G3JFESKD.js → chunk-Z5WUSI47.js} +6 -6
  134. package/dist/{chunk-5HADIIWN.js → chunk-ZDAAHCIS.js} +3 -3
  135. package/dist/{chunk-D3OXTS7Y.js → chunk-ZHCZOPKE.js} +3 -2
  136. package/dist/{chunk-D3OXTS7Y.js.map → chunk-ZHCZOPKE.js.map} +1 -1
  137. package/dist/data-display/Alert.js +2 -2
  138. package/dist/data-display/AsyncStateContainer.js +3 -3
  139. package/dist/data-display/Badge.js +2 -2
  140. package/dist/data-display/CardKit.js +7 -7
  141. package/dist/data-display/Chart.js +6 -6
  142. package/dist/data-display/Chip.js +3 -3
  143. package/dist/data-display/DataGrid.js +2 -2
  144. package/dist/data-display/DataViews.js +31 -31
  145. package/dist/data-display/DayRuler.js +7 -7
  146. package/dist/data-display/EmptyState.js +2 -2
  147. package/dist/data-display/FleetMap.js +9 -9
  148. package/dist/data-display/InteractiveTooltip.js +2 -2
  149. package/dist/data-display/Lightbox.js +2 -2
  150. package/dist/data-display/MapPreview.js +3 -3
  151. package/dist/data-display/RegionMap.js +2 -2
  152. package/dist/data-display/ScheduleGrid.js +4 -3
  153. package/dist/data-display/SectionOnboarding.js +3 -3
  154. package/dist/feedback/NotificationStatusNotice.js +3 -3
  155. package/dist/feedback/SequenceResolver.js +5 -5
  156. package/dist/layout/SettingCard.js +12 -12
  157. package/dist/navigation/SectionNav.js +9 -9
  158. package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -1
  159. package/dist/types/components/data-display/DayRuler/DayRuler.en-US.d.ts.map +1 -1
  160. package/dist/types/components/data-display/DayRuler/DayRuler.labels.d.ts +2 -0
  161. package/dist/types/components/data-display/DayRuler/DayRuler.labels.d.ts.map +1 -1
  162. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +13 -1
  163. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -1
  164. package/dist/types/components/data-display/DayRuler/DayRuler.pt-BR.d.ts.map +1 -1
  165. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +16 -0
  166. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
  167. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +44 -1
  168. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -1
  169. package/dist/types/components/data-display/DayRuler/index.d.ts +1 -1
  170. package/dist/types/components/data-display/DayRuler/index.d.ts.map +1 -1
  171. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts +3 -1
  172. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts.map +1 -1
  173. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts +12 -0
  174. package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts.map +1 -1
  175. package/dist/types/components/data-display/ScheduleGrid/schedule-header-host.styles.d.ts +16 -0
  176. package/dist/types/components/data-display/ScheduleGrid/schedule-header-host.styles.d.ts.map +1 -0
  177. package/package.json +1 -1
  178. package/src/components/data-display/DayRuler/DayRuler.en-US.ts +1 -0
  179. package/src/components/data-display/DayRuler/DayRuler.labels.ts +2 -0
  180. package/src/components/data-display/DayRuler/DayRuler.md +3 -2
  181. package/src/components/data-display/DayRuler/DayRuler.parts.tsx +120 -1
  182. package/src/components/data-display/DayRuler/DayRuler.pt-BR.ts +1 -0
  183. package/src/components/data-display/DayRuler/DayRuler.styles.ts +50 -1
  184. package/src/components/data-display/DayRuler/DayRuler.tsx +10 -1
  185. package/src/components/data-display/DayRuler/DayRuler.types.ts +30 -1
  186. package/src/components/data-display/DayRuler/index.ts +2 -0
  187. package/src/components/data-display/ScheduleGrid/ScheduleGrid.md +3 -2
  188. package/src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx +18 -3
  189. package/src/components/data-display/ScheduleGrid/ScheduleGrid.tsx +1 -1
  190. package/src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts +12 -0
  191. package/src/components/data-display/ScheduleGrid/schedule-header-host.styles.ts +35 -0
  192. package/dist/chunk-ACM3HHZY.js.map +0 -1
  193. package/dist/chunk-G2PVUPE7.js.map +0 -1
  194. package/dist/chunk-HMEGQKNQ.js.map +0 -1
  195. package/dist/chunk-MX2RF34M.js.map +0 -1
  196. /package/dist/{chunk-HC6OZ7QK.js.map → chunk-3EIRRLCQ.js.map} +0 -0
  197. /package/dist/{chunk-7NP2JHGM.js.map → chunk-3OHZAZEE.js.map} +0 -0
  198. /package/dist/{chunk-U2AEM3K4.js.map → chunk-3PQL2EN5.js.map} +0 -0
  199. /package/dist/{chunk-M3XJVD5G.js.map → chunk-5357QUVE.js.map} +0 -0
  200. /package/dist/{chunk-Z7T4EFEC.js.map → chunk-5I75WRXT.js.map} +0 -0
  201. /package/dist/{chunk-5E2CRRD4.js.map → chunk-66VKX6JE.js.map} +0 -0
  202. /package/dist/{chunk-N5PVD4J5.js.map → chunk-6DO672AG.js.map} +0 -0
  203. /package/dist/{chunk-76DX2IMH.js.map → chunk-7F6D73NL.js.map} +0 -0
  204. /package/dist/{chunk-XILMDEGZ.js.map → chunk-AI7XWBNG.js.map} +0 -0
  205. /package/dist/{chunk-SNWCT6JN.js.map → chunk-AMIUZRDQ.js.map} +0 -0
  206. /package/dist/{chunk-A3DDEKLV.js.map → chunk-BOADHYTA.js.map} +0 -0
  207. /package/dist/{chunk-L3PDY7CJ.js.map → chunk-CKQOYPH3.js.map} +0 -0
  208. /package/dist/{chunk-JH2XLVWM.js.map → chunk-CW5Z67NA.js.map} +0 -0
  209. /package/dist/{chunk-3JZ3KEQQ.js.map → chunk-CZVAVX5L.js.map} +0 -0
  210. /package/dist/{chunk-DVX4HDNP.js.map → chunk-DBPFKGXX.js.map} +0 -0
  211. /package/dist/{chunk-QN7FVZQD.js.map → chunk-DHAXUVMR.js.map} +0 -0
  212. /package/dist/{chunk-XCUHGPPZ.js.map → chunk-DTZOP4ZR.js.map} +0 -0
  213. /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
  214. /package/dist/{chunk-42D7KBDH.js.map → chunk-EOIRU62W.js.map} +0 -0
  215. /package/dist/{chunk-2M3W6ACW.js.map → chunk-FAUNQ3FS.js.map} +0 -0
  216. /package/dist/{chunk-PJNIJIE6.js.map → chunk-FQNDJITD.js.map} +0 -0
  217. /package/dist/{chunk-ZIHSCBMN.js.map → chunk-FWTVIRZZ.js.map} +0 -0
  218. /package/dist/{chunk-KJKD6Y6V.js.map → chunk-GBB23QLL.js.map} +0 -0
  219. /package/dist/{chunk-3IDL7NK7.js.map → chunk-K2VDRODL.js.map} +0 -0
  220. /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
  221. /package/dist/{chunk-UKUGSU3Y.js.map → chunk-L4V7FZJI.js.map} +0 -0
  222. /package/dist/{chunk-24HHUCWB.js.map → chunk-LDCZPZPD.js.map} +0 -0
  223. /package/dist/{chunk-42TOCPXB.js.map → chunk-LXIPBHNJ.js.map} +0 -0
  224. /package/dist/{chunk-ILJ3FXIC.js.map → chunk-MM3QESLI.js.map} +0 -0
  225. /package/dist/{chunk-PGANINQD.js.map → chunk-NI67M453.js.map} +0 -0
  226. /package/dist/{chunk-RDCIST7P.js.map → chunk-OCT5VCLP.js.map} +0 -0
  227. /package/dist/{chunk-F7LBTMCA.js.map → chunk-P53ANKZV.js.map} +0 -0
  228. /package/dist/{chunk-QVDEGBME.js.map → chunk-PEAUGQKU.js.map} +0 -0
  229. /package/dist/{chunk-JN2IANXD.js.map → chunk-R4LCPPKA.js.map} +0 -0
  230. /package/dist/{chunk-U2QXQ7D4.js.map → chunk-S2VZUBM7.js.map} +0 -0
  231. /package/dist/{chunk-HOPRZEBM.js.map → chunk-SKIAWOUC.js.map} +0 -0
  232. /package/dist/{chunk-WCF56ZCD.js.map → chunk-TMINUTQQ.js.map} +0 -0
  233. /package/dist/{chunk-YGQM6GFQ.js.map → chunk-VHE7UEG5.js.map} +0 -0
  234. /package/dist/{chunk-QHIWV55K.js.map → chunk-VWRXSBT2.js.map} +0 -0
  235. /package/dist/{chunk-4KWDNGMA.js.map → chunk-W2KOP27S.js.map} +0 -0
  236. /package/dist/{chunk-TSEBMVYY.js.map → chunk-X2GWR75Q.js.map} +0 -0
  237. /package/dist/{chunk-JKZPGCN7.js.map → chunk-X3GD3TFI.js.map} +0 -0
  238. /package/dist/{chunk-NKEFH3RS.js.map → chunk-XNAI7QGU.js.map} +0 -0
  239. /package/dist/{chunk-L6JAALMX.js.map → chunk-XRV4QFEQ.js.map} +0 -0
  240. /package/dist/{chunk-WH3LUOCQ.js.map → chunk-YE7M7URT.js.map} +0 -0
  241. /package/dist/{chunk-DA3D5X5Z.js.map → chunk-YVDNCV2D.js.map} +0 -0
  242. /package/dist/{chunk-G3JFESKD.js.map → chunk-Z5WUSI47.js.map} +0 -0
  243. /package/dist/{chunk-5HADIIWN.js.map → chunk-ZDAAHCIS.js.map} +0 -0
@@ -1,3 +1,8 @@
1
+ import {
2
+ DataGridEmpty,
3
+ DataGridError,
4
+ DataGridLoading
5
+ } from "./chunk-EARWC6PD.js";
1
6
  import {
2
7
  useDataGridModel
3
8
  } from "./chunk-LDROG4QI.js";
@@ -5,11 +10,6 @@ import {
5
10
  GridBody,
6
11
  GridHeader
7
12
  } from "./chunk-5RYPVYWP.js";
8
- import {
9
- DataGridEmpty,
10
- DataGridError,
11
- DataGridLoading
12
- } from "./chunk-EARWC6PD.js";
13
13
 
14
14
  // src/components/data-display/DataGrid/DataGrid.tsx
15
15
  import Paper from "@mui/material/Paper/index.js";
@@ -120,4 +120,4 @@ export {
120
120
  DataGrid,
121
121
  GRID_ONLY_PROPS
122
122
  };
123
- //# sourceMappingURL=chunk-BLZDSCIZ.js.map
123
+ //# sourceMappingURL=chunk-DYHOBKPU.js.map
@@ -1,10 +1,11 @@
1
+ import {
2
+ cornerSx,
3
+ headerAdornmentSx
4
+ } from "./chunk-5MXVKZKZ.js";
1
5
  import {
2
6
  daysBetween,
3
7
  isOpen
4
8
  } from "./chunk-E6UMTR2G.js";
5
- import {
6
- ScheduleNameCell
7
- } from "./chunk-TZ44F6W7.js";
8
9
  import {
9
10
  SR_ONLY_SX,
10
11
  blockSx,
@@ -24,6 +25,9 @@ import {
24
25
  totalCellSx,
25
26
  totalHeaderSx
26
27
  } from "./chunk-RYJ6XGFA.js";
28
+ import {
29
+ ScheduleNameCell
30
+ } from "./chunk-TZ44F6W7.js";
27
31
  import {
28
32
  SCHEDULE_GRID_METRICS
29
33
  } from "./chunk-3R6BR22L.js";
@@ -173,12 +177,15 @@ function NameCell({ row }) {
173
177
  const sizes = { name: SCHEDULE_GRID_METRICS.rowName, meta: SCHEDULE_GRID_METRICS.rowMeta, chipsTop: 0.5 };
174
178
  return /* @__PURE__ */ jsx(ScheduleNameCell, { row, role: "rowheader", sx: nameCellSx, sizes });
175
179
  }
180
+ function keepRangesWhole(node) {
181
+ return typeof node === "string" ? node.replace(/(\S)–(\S)/g, "$1\u2060\u2013\u2060$2") : node;
182
+ }
176
183
  function keepDatesWhole(label) {
177
184
  return label.replace(/ (?=\d)/g, "\xA0");
178
185
  }
179
- function GridHeader({ columns, totalLabel, rowSx, testId }) {
186
+ function GridHeader({ columns, totalLabel, corner, rowSx, testId }) {
180
187
  return /* @__PURE__ */ jsxs(Box, { role: "row", sx: [rowSx, headerRowSx], "data-testid": `${testId}-header`, children: [
181
- /* @__PURE__ */ jsx("span", { role: "cell", "data-sg-corner": "" }),
188
+ /* @__PURE__ */ jsx(Box, { component: "span", role: "cell", "data-sg-corner": "", sx: cornerSx, "data-testid": `${testId}-corner`, children: keepRangesWhole(corner) }),
182
189
  columns.map((column, day) => /* @__PURE__ */ jsxs(
183
190
  Box,
184
191
  {
@@ -187,7 +194,8 @@ function GridHeader({ columns, totalLabel, rowSx, testId }) {
187
194
  "data-sg-past": column.past ? "" : void 0,
188
195
  children: [
189
196
  /* @__PURE__ */ jsx("span", { "data-sg-col": "full", title: column.label, children: keepDatesWhole(column.label) }),
190
- column.sublabel ? /* @__PURE__ */ jsx(Box, { component: "span", sx: headerSublabelSx, "data-sg-col": "sub", children: column.sublabel }) : null
197
+ column.sublabel ? /* @__PURE__ */ jsx(Box, { component: "span", sx: headerSublabelSx, "data-sg-col": "sub", children: column.sublabel }) : null,
198
+ column.adornment ? /* @__PURE__ */ jsx(Box, { component: "span", sx: headerAdornmentSx, "data-sg-col": "adornment", "data-testid": `${testId}-adornment-${day}`, children: column.adornment }) : null
191
199
  ]
192
200
  },
193
201
  `${day}-${column.label}`
@@ -246,4 +254,4 @@ export {
246
254
  GridHeader,
247
255
  GridBody
248
256
  };
249
- //# sourceMappingURL=chunk-MX2RF34M.js.map
257
+ //# sourceMappingURL=chunk-E73C73UD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx"],"sourcesContent":["import AddIcon from '@mui/icons-material/Add';\nimport Box from '@mui/material/Box/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport type * as React from 'react';\n\nimport type { ScheduleGridLabels } from './ScheduleGrid.labels';\nimport { daysBetween, isOpen } from './schedule-grid-model';\nimport { SCHEDULE_GRID_METRICS } from './ScheduleGrid.metrics';\nimport {\n blockedLabelSx,\n blockSx,\n breakSx,\n cellSx,\n ghostSx,\n gripSx,\n groupTitleSx,\n headerCellSx,\n headerSublabelSx,\n headerRowSx,\n nameCellSx,\n personRowSx,\n plusButtonSx,\n skeletonCellSx,\n SR_ONLY_SX,\n totalCellSx,\n totalHeaderSx,\n} from './ScheduleGrid.styles';\nimport { cornerSx, headerAdornmentSx } from './schedule-header-host.styles';\nimport type { CellLook } from './ScheduleGrid.styles';\nimport type {\n ScheduleGridBlock,\n ScheduleGridCell,\n ScheduleGridColumn,\n ScheduleGridProps,\n ScheduleGridRow,\n} from './ScheduleGrid.types';\nimport { ScheduleNameCell } from './ScheduleNameCell';\nimport type { GridDrag, GridDragApi } from './useGridDrag';\n\n/** What the grid lets a cell do, resolved once per render. */\nexport interface CellAbilities {\n create: boolean;\n copy: boolean;\n move: boolean;\n}\n\n/** A row's shared columns, as an `sx` part. */\ntype RowSx = (theme: Theme) => CSSObject;\n\ninterface CellProps {\n row: ScheduleGridRow;\n day: number;\n column: ScheduleGridColumn;\n cell: ScheduleGridCell;\n drag: GridDrag | null;\n dragApi: GridDragApi;\n can: CellAbilities;\n createPreview?: (rowId: string) => string;\n onCreate?: (rowId: string, days: number[]) => void;\n onBlockClick?: (blockId: string) => void;\n labels: ScheduleGridLabels;\n testId: string;\n}\n\n/** The ghost text this cell shows during a create or copy, or `null` when the gesture does not land here. */\nfunction ghostFor(props: CellProps): string | null {\n const { drag, row, day, cell, createPreview } = props;\n if (!drag || drag.mode === 'move' || drag.rowId !== row.id || !isOpen(cell)) return null;\n if (!daysBetween(drag.anchor, drag.day).includes(day)) return null;\n if (drag.mode === 'copy') return day === drag.anchor ? null : drag.preview;\n return createPreview?.(row.id) ?? '';\n}\n\n/** The keys a block answers to, for `aria-keyshortcuts`. */\nfunction shortcutsOf(movable: boolean, copyable: boolean): string | undefined {\n const keys = [movable ? 'Alt+ArrowLeft Alt+ArrowRight' : '', copyable ? 'Shift+ArrowLeft Shift+ArrowRight' : ''];\n return keys.filter(Boolean).join(' ') || undefined;\n}\n\nconst titleOf = (block: ScheduleGridBlock): string => block.title ?? [block.label, block.note].filter(Boolean).join(' · ');\n\ninterface BlockProps {\n block: ScheduleGridBlock;\n row: ScheduleGridRow;\n day: number;\n can: CellAbilities;\n dragApi: GridDragApi;\n onBlockClick?: (blockId: string) => void;\n testId: string;\n}\n\nfunction Grip({ side, onPointerDown, testId }: { side: 'l' | 'r'; onPointerDown: (event: React.PointerEvent) => void; testId: string }) {\n return <Box component=\"span\" aria-hidden sx={gripSx(side)} onPointerDown={onPointerDown} data-sg-grip=\"\" data-testid={testId} />;\n}\n\n/** The block's break, kept inside it whatever the host sent. */\nfunction BreakBand({ span, testId }: { span: { start: number; end: number }; testId: string }): React.JSX.Element | null {\n const start = Math.min(1, Math.max(0, span.start));\n const end = Math.min(1, Math.max(0, span.end));\n if (!(end > start)) return null;\n return <Box component=\"span\" aria-hidden sx={breakSx({ start, end })} data-sg-break=\"\" data-testid={testId} />;\n}\n\nfunction BlockButton({ block, row, day, can, dragApi, onBlockClick, testId }: BlockProps): React.JSX.Element {\n const movable = can.move && Boolean(block.movable);\n const copyable = can.copy && Boolean(block.copyable);\n const startCopy = (event: React.PointerEvent): void => dragApi.startCopy(event, block.id, row.id, day, block.label);\n const startMove = (event: React.PointerEvent): void => dragApi.startMove(event, block.id, row.id, day);\n return (\n <Box\n component=\"button\"\n type=\"button\"\n sx={blockSx(block.tone, { selected: Boolean(block.selected), movable })}\n title={titleOf(block)}\n aria-keyshortcuts={shortcutsOf(movable, copyable)}\n aria-current={block.selected ? 'true' : undefined}\n data-sg-focus=\"\"\n data-sg-row={row.id}\n data-sg-day={day}\n data-sg-block={block.id}\n data-tone={block.tone}\n data-testid={`${testId}-block-${block.id}`}\n onPointerDown={movable ? startMove : undefined}\n onClick={() => {\n if (!dragApi.takeClick()) onBlockClick?.(block.id);\n }}\n >\n {block.breakSpan ? <BreakBand span={block.breakSpan} testId={`${testId}-break-${block.id}`} /> : null}\n {copyable ? <Grip side=\"l\" onPointerDown={startCopy} testId={`${testId}-grip-l-${block.id}`} /> : null}\n <span data-sg-line=\"label\">{block.label}</span>\n {block.note ? <span data-sg-line=\"note\">{block.note}</span> : null}\n {copyable ? <Grip side=\"r\" onPointerDown={startCopy} testId={`${testId}-grip-r-${block.id}`} /> : null}\n </Box>\n );\n}\n\n/**\n * The empty cell's \"+\". It stays mounted while a drag shows the ghost in it, so\n * a press and release in place is still its click.\n */\nfunction PlusButton({ props, ghost }: { props: CellProps; ghost: string | null }): React.JSX.Element {\n const { row, day, column, dragApi, onCreate, labels } = props;\n return (\n <Box\n component=\"button\"\n type=\"button\"\n sx={plusButtonSx}\n aria-label={labels.createCell(row.label, column.label)}\n data-ghost={ghost === null ? undefined : ''}\n data-sg-focus=\"\"\n data-sg-row={row.id}\n data-sg-day={day}\n onPointerDown={(event: React.PointerEvent) => dragApi.startCreate(event, row.id, day)}\n onClick={() => {\n if (!dragApi.takeClick()) onCreate?.(row.id, [day]);\n }}\n >\n {ghost === null ? <AddIcon aria-hidden /> : <Ghost text={ghost} />}\n </Box>\n );\n}\n\nfunction Ghost({ text }: { text: string }): React.JSX.Element {\n return (\n <Box component=\"span\" sx={ghostSx} aria-hidden>\n {text}\n </Box>\n );\n}\n\n/** What fills a cell after its blocks: the \"+\" (or the ghost in it), a lone ghost, or a closed day's label. */\nfunction CellFill({ props, ghost }: { props: CellProps; ghost: string | null }): React.JSX.Element | null {\n const { cell, can } = props;\n if (can.create && isOpen(cell)) return <PlusButton props={props} ghost={ghost} />;\n if (ghost !== null) return <Ghost text={ghost} />;\n if (!cell.blocked || cell.blocks.length > 0 || !cell.blockedLabel) return null;\n return (\n <Box component=\"span\" sx={blockedLabelSx} aria-hidden title={cell.blockedLabel}>\n {cell.blockedLabel}\n </Box>\n );\n}\n\n/** A gone day's words for a screen reader (\"Já passou\"): visually hidden, and only when the host gives them. */\nfunction ClosedWords({ cell }: { cell: ScheduleGridCell }): React.JSX.Element | null {\n if (!cell.closed || cell.blocked || !cell.closedLabel) return null;\n return (\n <Box component=\"span\" sx={SR_ONLY_SX}>\n {cell.closedLabel}\n </Box>\n );\n}\n\n/** How the cell is drawn right now. */\nfunction lookOf(props: CellProps, ghost: string | null): CellLook {\n const { row, day, column, cell, drag, can } = props;\n return {\n today: Boolean(column.today),\n blocked: Boolean(cell.blocked),\n closed: Boolean(cell.closed),\n target: ghost !== null,\n over: drag?.mode === 'move' && drag.moved && drag.rowId === row.id && drag.day === day,\n interactive: can.create && isOpen(cell),\n };\n}\n\n/** One day of one row: its blocks, a \"+\" when it is empty, the hatch when it is closed. */\nexport function GridCell(props: CellProps): React.JSX.Element {\n const { row, day, column, cell, can, labels, testId } = props;\n const ghost = ghostFor(props);\n const look = lookOf(props, ghost);\n const blocked = look.blocked;\n const closedName = blocked && cell.blocks.length === 0 ? (cell.blockedLabel ?? labels.blockedCell(row.label, column.label)) : undefined;\n return (\n <Box\n role=\"cell\"\n sx={cellSx(look)}\n data-sg-cell=\"\"\n data-sg-row={row.id}\n data-sg-day={day}\n data-testid={`${testId}-cell-${row.id}-${day}`}\n aria-label={closedName}\n >\n {cell.blocks.map((block) => (\n <BlockButton\n key={block.id}\n block={block}\n row={row}\n day={day}\n can={can}\n dragApi={props.dragApi}\n onBlockClick={props.onBlockClick}\n testId={testId}\n />\n ))}\n <CellFill props={props} ghost={ghost} />\n <ClosedWords cell={cell} />\n </Box>\n );\n}\n\n/** The first column: the person, as both views draw it. */\nfunction NameCell({ row }: { row: ScheduleGridRow }): React.JSX.Element {\n const sizes = { name: SCHEDULE_GRID_METRICS.rowName, meta: SCHEDULE_GRID_METRICS.rowMeta, chipsTop: 0.5 };\n return <ScheduleNameCell row={row} role=\"rowheader\" sx={nameCellSx} sizes={sizes} />;\n}\n\ninterface HeaderProps {\n columns: readonly ScheduleGridColumn[];\n /** Present when the grid has a last column. */\n totalLabel?: string;\n /** Above the names (`ScheduleGridProps.corner`). */\n corner?: React.ReactNode;\n rowSx: RowSx;\n testId: string;\n}\n\n/** The days, their counts and the total column's header — pinned while the grid scrolls. */\n\n/** A range (\"11h–23h\") breaks before or after it, never at its dash; a spaced dash (\"11h – 23h\") keeps its spaces. */\nfunction keepRangesWhole(node: React.ReactNode): React.ReactNode {\n return typeof node === 'string' ? node.replace(/(\\S)–(\\S)/g, '$1\\u2060–\\u2060$2') : node;\n}\n\n/** A label wraps between words, never inside \"Seg 19/10\": the space before a number holds. */\nfunction keepDatesWhole(label: string): string {\n return label.replace(/ (?=\\d)/g, '\\u00a0');\n}\n\nexport function GridHeader({ columns, totalLabel, corner, rowSx, testId }: HeaderProps): React.JSX.Element {\n return (\n <Box role=\"row\" sx={[rowSx, headerRowSx]} data-testid={`${testId}-header`}>\n {/* Above the names: a cell of the header row, with nothing to head but the host's corner words. */}\n <Box component=\"span\" role=\"cell\" data-sg-corner=\"\" sx={cornerSx} data-testid={`${testId}-corner`}>\n {keepRangesWhole(corner)}\n </Box>\n {columns.map((column, day) => (\n <Box\n role=\"columnheader\"\n key={`${day}-${column.label}`}\n sx={headerCellSx(Boolean(column.today), Boolean(column.past))}\n data-sg-past={column.past ? '' : undefined}\n >\n <span data-sg-col=\"full\" title={column.label}>\n {keepDatesWhole(column.label)}\n </span>\n {column.sublabel ? (\n <Box component=\"span\" sx={headerSublabelSx} data-sg-col=\"sub\">\n {column.sublabel}\n </Box>\n ) : null}\n {column.adornment ? (\n <Box component=\"span\" sx={headerAdornmentSx} data-sg-col=\"adornment\" data-testid={`${testId}-adornment-${day}`}>\n {column.adornment}\n </Box>\n ) : null}\n </Box>\n ))}\n {totalLabel !== undefined ? (\n <Box role=\"columnheader\" sx={totalHeaderSx}>\n {totalLabel}\n </Box>\n ) : null}\n </Box>\n );\n}\n\ninterface BodyProps {\n grid: ScheduleGridProps;\n rows: readonly ScheduleGridRow[];\n rowSx: RowSx;\n hasTotal: boolean;\n can: CellAbilities;\n dragApi: GridDragApi;\n labels: ScheduleGridLabels;\n testId: string;\n}\n\nfunction SkeletonRows({ grid, rowSx, testId }: Pick<BodyProps, 'grid' | 'rowSx' | 'testId'>): React.JSX.Element {\n return (\n <>\n {Array.from({ length: SCHEDULE_GRID_METRICS.skeletonRows }, (_, index) => (\n <Box key={index} sx={[rowSx, personRowSx]} aria-hidden data-testid={`${testId}-loading`}>\n <Box sx={skeletonCellSx} />\n {grid.columns.map((column, day) => (\n <Box key={`${day}-${column.label}`} sx={skeletonCellSx} />\n ))}\n </Box>\n ))}\n </>\n );\n}\n\nfunction PersonRow({ row, body }: { row: ScheduleGridRow; body: BodyProps }): React.JSX.Element {\n const { grid, rowSx, hasTotal, can, dragApi, labels, testId } = body;\n return (\n <Box role=\"row\" sx={[rowSx, personRowSx]} data-testid={`${testId}-row-${row.id}`}>\n <NameCell row={row} />\n {grid.columns.map((column, day) => (\n <GridCell\n key={`${day}-${column.label}`}\n row={row}\n day={day}\n column={column}\n cell={grid.cell(row.id, day)}\n drag={dragApi.drag}\n dragApi={dragApi}\n can={can}\n createPreview={grid.createPreview}\n onCreate={grid.onCreate}\n onBlockClick={grid.onBlockClick}\n labels={labels}\n testId={testId}\n />\n ))}\n {hasTotal ? (\n <Box role=\"cell\" sx={totalCellSx}>\n {row.total}\n </Box>\n ) : null}\n </Box>\n );\n}\n\n/** The host's error or empty node, as the table's one full-width row (a table holds rows only). */\nfunction MessageRow({ children, testId }: { children: React.ReactNode; testId: string }): React.JSX.Element | null {\n if (children === null || children === undefined || children === false) return null;\n return (\n <Box role=\"row\" data-testid={`${testId}-message`}>\n <Box role=\"cell\">{children}</Box>\n </Box>\n );\n}\n\n/** The groups and their rows — or the skeleton, the host's error, or the host's empty state. */\nexport function GridBody(body: BodyProps): React.JSX.Element | null {\n const { grid, rows } = body;\n if (grid.error) return <MessageRow testId={body.testId}>{grid.error}</MessageRow>;\n if (grid.loading) return <SkeletonRows grid={grid} rowSx={body.rowSx} testId={body.testId} />;\n if (rows.length === 0) return <MessageRow testId={body.testId}>{grid.empty}</MessageRow>;\n return (\n <>\n {grid.groups.map((group, index) => (\n <Box role=\"rowgroup\" key={`${index}-${group.title ?? ''}`} aria-label={group.title}>\n {group.title ? (\n <Box component=\"p\" sx={groupTitleSx} aria-hidden data-sg-group-title=\"\">\n {group.title}\n </Box>\n ) : null}\n {group.rows.map((row) => (\n <PersonRow key={row.id} row={row} body={body} />\n ))}\n </Box>\n ))}\n </>\n );\n}\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EWFBDAB7.js";
4
4
  import {
5
5
  EmptyState
6
- } from "./chunk-42TOCPXB.js";
6
+ } from "./chunk-LXIPBHNJ.js";
7
7
 
8
8
  // src/components/data-display/SectionOnboarding/SectionOnboarding.tsx
9
9
  import CheckCircle from "@mui/icons-material/CheckCircle";
@@ -193,4 +193,4 @@ export {
193
193
  SectionOnboarding,
194
194
  SectionOnboarding_default
195
195
  };
196
- //# sourceMappingURL=chunk-42D7KBDH.js.map
196
+ //# sourceMappingURL=chunk-EOIRU62W.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- PT_BR_DAY_RULER_LABELS
3
- } from "./chunk-D3OXTS7Y.js";
4
1
  import {
5
2
  EN_US_DAY_RULER_LABELS
6
- } from "./chunk-K3IB7S7Q.js";
3
+ } from "./chunk-F2ZUUEXC.js";
4
+ import {
5
+ PT_BR_DAY_RULER_LABELS
6
+ } from "./chunk-ZHCZOPKE.js";
7
7
 
8
8
  // src/components/data-display/DayRuler/DayRuler.labels.ts
9
9
  var DAY_RULER_LABELS = {
@@ -14,4 +14,4 @@ var DAY_RULER_LABELS = {
14
14
  export {
15
15
  DAY_RULER_LABELS
16
16
  };
17
- //# sourceMappingURL=chunk-HNW7IZPV.js.map
17
+ //# sourceMappingURL=chunk-EZBBLLEU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.labels.ts"],"sourcesContent":["/**\n * `DayRuler`'s words, in both languages. They live with the component rather\n * than in `UiLabels` so they load only with it: `EN_US_UI_LABELS` and\n * `PT_BR_UI_LABELS` are imported by eagerly loaded components (`Avatar`), and\n * every family in them ships to every host that renders any of those (FUT-3831).\n *\n * Each language is a named pack beside the component (`DayRuler.pt-BR.ts`,\n * `DayRuler.en-US.ts`). A pt-BR host passes `DAY_RULER_LABELS['pt-BR']` to\n * `labels`; the ruler falls back to `'en-US'` on its own.\n */\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { PT_BR_DAY_RULER_LABELS } from './DayRuler.pt-BR';\n\n/** `DayRuler`'s track names and the sentences its live region reads after a keyboard move or resize. */\nexport interface DayRulerLabels {\n /** A row's empty track: Enter schedules this row. */\n createTrack(row: string): string;\n /** After Alt+←/→ moved a block; `range` is \"20:45–00:45\". */\n moved(block: string, range: string): string;\n /** After Shift(+Alt)+←/→ changed a block's end or start. */\n resized(block: string, range: string): string;\n /** A keyboard move or resize past the ruler's ends or under the shortest length. */\n refused: string;\n /** Shift/Alt+←/→ on a block that is not `movable` / `resizable`: the block is fixed. */\n notMovable: string;\n /** The ruler's busy state. */\n loading: string;\n}\n\n/**\n * Both packs, in the shape `locales.ts`'s `pack(...)` yields. The component\n * itself imports only the en-US file, its fallback.\n */\nexport const DAY_RULER_LABELS: { readonly 'pt-BR': DayRulerLabels; readonly 'en-US': DayRulerLabels } = {\n 'pt-BR': PT_BR_DAY_RULER_LABELS,\n 'en-US': EN_US_DAY_RULER_LABELS,\n};\n"],"mappings":";;;;;;;;AAiCO,IAAM,mBAA2F;AAAA,EACtG,SAAS;AAAA,EACT,SAAS;AACX;","names":[]}
1
+ {"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.labels.ts"],"sourcesContent":["/**\n * `DayRuler`'s words, in both languages. They live with the component rather\n * than in `UiLabels` so they load only with it: `EN_US_UI_LABELS` and\n * `PT_BR_UI_LABELS` are imported by eagerly loaded components (`Avatar`), and\n * every family in them ships to every host that renders any of those (FUT-3831).\n *\n * Each language is a named pack beside the component (`DayRuler.pt-BR.ts`,\n * `DayRuler.en-US.ts`). A pt-BR host passes `DAY_RULER_LABELS['pt-BR']` to\n * `labels`; the ruler falls back to `'en-US'` on its own.\n */\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { PT_BR_DAY_RULER_LABELS } from './DayRuler.pt-BR';\n\n/** `DayRuler`'s track names and the sentences its live region reads after a keyboard move or resize. */\nexport interface DayRulerLabels {\n /** A row's empty track: Enter schedules this row. */\n createTrack(row: string): string;\n /** After Alt+←/→ moved a block; `range` is \"20:45–00:45\". */\n moved(block: string, range: string): string;\n /** After Shift(+Alt)+←/→ changed a block's end or start. */\n resized(block: string, range: string): string;\n /** A keyboard move or resize past the ruler's ends or under the shortest length. */\n refused: string;\n /** Shift/Alt+←/→ on a block that is not `movable` / `resizable`: the block is fixed. */\n notMovable: string;\n /** The ruler's busy state. */\n loading: string;\n /** Said after a group footer's marked hour when the host gives it no `title` (FUT-3882). */\n footerMarked: string;\n}\n\n/**\n * Both packs, in the shape `locales.ts`'s `pack(...)` yields. The component\n * itself imports only the en-US file, its fallback.\n */\nexport const DAY_RULER_LABELS: { readonly 'pt-BR': DayRulerLabels; readonly 'en-US': DayRulerLabels } = {\n 'pt-BR': PT_BR_DAY_RULER_LABELS,\n 'en-US': EN_US_DAY_RULER_LABELS,\n};\n"],"mappings":";;;;;;;;AAmCO,IAAM,mBAA2F;AAAA,EACtG,SAAS;AAAA,EACT,SAAS;AACX;","names":[]}
@@ -5,10 +5,11 @@ var EN_US_DAY_RULER_LABELS = {
5
5
  resized: (block, range) => `${block} now ${range}`,
6
6
  refused: "It cannot go further",
7
7
  notMovable: "This shift cannot be changed here",
8
- loading: "Loading the day"
8
+ loading: "Loading the day",
9
+ footerMarked: "short of people"
9
10
  };
10
11
 
11
12
  export {
12
13
  EN_US_DAY_RULER_LABELS
13
14
  };
14
- //# sourceMappingURL=chunk-K3IB7S7Q.js.map
15
+ //# sourceMappingURL=chunk-F2ZUUEXC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.en-US.ts"],"sourcesContent":["/** `DayRuler`'s en-US words, and the component's own fallback when `labels` is not given. */\nimport type { DayRulerLabels } from './DayRuler.labels';\n\nexport const EN_US_DAY_RULER_LABELS: DayRulerLabels = {\n createTrack: (row) => `Schedule ${row}`,\n moved: (block, range) => `${block} now ${range}`,\n resized: (block, range) => `${block} now ${range}`,\n refused: \"It cannot go further\",\n notMovable: \"This shift cannot be changed here\",\n loading: \"Loading the day\",\n};\n"],"mappings":";AAGO,IAAM,yBAAyC;AAAA,EACpD,aAAa,CAAC,QAAQ,YAAY,GAAG;AAAA,EACrC,OAAO,CAAC,OAAO,UAAU,GAAG,KAAK,QAAQ,KAAK;AAAA,EAC9C,SAAS,CAAC,OAAO,UAAU,GAAG,KAAK,QAAQ,KAAK;AAAA,EAChD,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AACX;","names":[]}
1
+ {"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.en-US.ts"],"sourcesContent":["/** `DayRuler`'s en-US words, and the component's own fallback when `labels` is not given. */\nimport type { DayRulerLabels } from './DayRuler.labels';\n\nexport const EN_US_DAY_RULER_LABELS: DayRulerLabels = {\n createTrack: (row) => `Schedule ${row}`,\n moved: (block, range) => `${block} now ${range}`,\n resized: (block, range) => `${block} now ${range}`,\n refused: \"It cannot go further\",\n notMovable: \"This shift cannot be changed here\",\n loading: \"Loading the day\",\n footerMarked: \"short of people\",\n};\n"],"mappings":";AAGO,IAAM,yBAAyC;AAAA,EACpD,aAAa,CAAC,QAAQ,YAAY,GAAG;AAAA,EACrC,OAAO,CAAC,OAAO,UAAU,GAAG,KAAK,QAAQ,KAAK;AAAA,EAC9C,SAAS,CAAC,OAAO,UAAU,GAAG,KAAK,QAAQ,KAAK;AAAA,EAChD,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,cAAc;AAChB;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  SectionNavRail
3
- } from "./chunk-SNWCT6JN.js";
3
+ } from "./chunk-AMIUZRDQ.js";
4
4
  import {
5
5
  SectionNavBar
6
- } from "./chunk-F7LBTMCA.js";
6
+ } from "./chunk-P53ANKZV.js";
7
7
 
8
8
  // src/components/navigation/SectionNav/SectionNav.tsx
9
9
  import { jsx } from "react/jsx-runtime";
@@ -55,4 +55,4 @@ function SectionNav({
55
55
  export {
56
56
  SectionNav
57
57
  };
58
- //# sourceMappingURL=chunk-2M3W6ACW.js.map
58
+ //# sourceMappingURL=chunk-FAUNQ3FS.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Alert
3
- } from "./chunk-QVDEGBME.js";
3
+ } from "./chunk-PEAUGQKU.js";
4
4
 
5
5
  // src/components/data-display/CardKit/card-actions-context.tsx
6
6
  import { createContext, useCallback, useContext, useState } from "react";
@@ -58,4 +58,4 @@ export {
58
58
  CardActionsProvider,
59
59
  useCardActions
60
60
  };
61
- //# sourceMappingURL=chunk-PJNIJIE6.js.map
61
+ //# sourceMappingURL=chunk-FQNDJITD.js.map
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  resolveLightboxProps
3
3
  } from "./chunk-UOS7DEQZ.js";
4
+ import {
5
+ LightboxThumbnails
6
+ } from "./chunk-64UNVW6D.js";
4
7
  import {
5
8
  LightboxStage
6
9
  } from "./chunk-SYGM4SHY.js";
@@ -13,9 +16,6 @@ import {
13
16
  import {
14
17
  useLightbox
15
18
  } from "./chunk-HZBDTPPV.js";
16
- import {
17
- LightboxThumbnails
18
- } from "./chunk-64UNVW6D.js";
19
19
  import {
20
20
  makeTestId
21
21
  } from "./chunk-VQU3CBAL.js";
@@ -148,4 +148,4 @@ export {
148
148
  Lightbox,
149
149
  Lightbox_default
150
150
  };
151
- //# sourceMappingURL=chunk-ZIHSCBMN.js.map
151
+ //# sourceMappingURL=chunk-FWTVIRZZ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SettingSwitchBlock,
3
3
  useSettingSwitchIds
4
- } from "./chunk-5HADIIWN.js";
4
+ } from "./chunk-ZDAAHCIS.js";
5
5
  import {
6
6
  SettingGroupContext
7
7
  } from "./chunk-XJQNSMGA.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-SALQ65SM.js";
11
11
  import {
12
12
  partTestId
13
- } from "./chunk-HC6OZ7QK.js";
13
+ } from "./chunk-3EIRRLCQ.js";
14
14
  import {
15
15
  dependentsStyles,
16
16
  hintStyles,
@@ -84,4 +84,4 @@ SettingGroup.displayName = "SettingGroup";
84
84
  export {
85
85
  SettingGroup
86
86
  };
87
- //# sourceMappingURL=chunk-KJKD6Y6V.js.map
87
+ //# sourceMappingURL=chunk-GBB23QLL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SettingSwitchBlock,
3
3
  useSettingSwitchIds
4
- } from "./chunk-5HADIIWN.js";
4
+ } from "./chunk-ZDAAHCIS.js";
5
5
  import {
6
6
  useSettingGroup
7
7
  } from "./chunk-XJQNSMGA.js";
@@ -44,4 +44,4 @@ SettingToggle.displayName = "SettingToggle";
44
44
  export {
45
45
  SettingToggle
46
46
  };
47
- //# sourceMappingURL=chunk-3IDL7NK7.js.map
47
+ //# sourceMappingURL=chunk-K2VDRODL.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- DataViewsScopeTabs
3
- } from "./chunk-PL2AB5HJ.js";
4
1
  import {
5
2
  useDataViewsLayout
6
3
  } from "./chunk-5CAWRMDX.js";
4
+ import {
5
+ DataViewsScopeTabs
6
+ } from "./chunk-PL2AB5HJ.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-K3PMMW23.js.map
37
+ //# sourceMappingURL=chunk-K6VEN5VN.js.map
@@ -3,7 +3,7 @@ import {
3
3
  CONTROL_RESET,
4
4
  NOT_LIVE,
5
5
  SlotIcon
6
- } from "./chunk-24HHUCWB.js";
6
+ } from "./chunk-LDCZPZPD.js";
7
7
  import {
8
8
  rem
9
9
  } from "./chunk-YKCAJ2TN.js";
@@ -129,4 +129,4 @@ export {
129
129
  RAISED_LIFT_COMPACT,
130
130
  raisedLift
131
131
  };
132
- //# sourceMappingURL=chunk-UKUGSU3Y.js.map
132
+ //# sourceMappingURL=chunk-L4V7FZJI.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-PUFA7FQ7.js";
7
7
  import {
8
8
  Badge
9
- } from "./chunk-N5PVD4J5.js";
9
+ } from "./chunk-6DO672AG.js";
10
10
  import {
11
11
  rem
12
12
  } from "./chunk-YKCAJ2TN.js";
@@ -115,4 +115,4 @@ export {
115
115
  VISUALLY_HIDDEN,
116
116
  useMounted
117
117
  };
118
- //# sourceMappingURL=chunk-24HHUCWB.js.map
118
+ //# sourceMappingURL=chunk-LDCZPZPD.js.map
@@ -1,7 +1,3 @@
1
- import {
2
- actionsOf,
3
- makeTestId
4
- } from "./chunk-MWFSIB6K.js";
5
1
  import {
6
2
  ACTIONS_GAP_UNITS,
7
3
  ACTIONS_MARGIN_TOP_UNITS,
@@ -18,6 +14,10 @@ import {
18
14
  illustrationMaxWidth,
19
15
  illustrationOpacity
20
16
  } from "./chunk-KLPTOVIX.js";
17
+ import {
18
+ actionsOf,
19
+ makeTestId
20
+ } from "./chunk-MWFSIB6K.js";
21
21
  import {
22
22
  EN_US_UI_LABELS
23
23
  } from "./chunk-XOXXG7Q5.js";
@@ -207,4 +207,4 @@ export {
207
207
  EmptyState,
208
208
  EmptyState_default
209
209
  };
210
- //# sourceMappingURL=chunk-42TOCPXB.js.map
210
+ //# sourceMappingURL=chunk-LXIPBHNJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CountedIcon
3
- } from "./chunk-24HHUCWB.js";
3
+ } from "./chunk-LDCZPZPD.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-ILJ3FXIC.js.map
136
+ //# sourceMappingURL=chunk-MM3QESLI.js.map
@@ -3,15 +3,15 @@ import {
3
3
  chipStyles,
4
4
  iconWithTestId,
5
5
  makeKeyDownHandler
6
- } from "./chunk-QN7FVZQD.js";
6
+ } from "./chunk-DHAXUVMR.js";
7
+ import {
8
+ chipMuiSize
9
+ } from "./chunk-E5I776YW.js";
7
10
  import {
8
11
  chipRole,
9
12
  isClickable,
10
13
  makeTestId
11
14
  } from "./chunk-BF4FYOAR.js";
12
- import {
13
- chipMuiSize
14
- } from "./chunk-E5I776YW.js";
15
15
 
16
16
  // src/components/data-display/Chip/Chip.tsx
17
17
  import CancelIcon from "@mui/icons-material/Cancel";
@@ -77,4 +77,4 @@ Chip.displayName = "Chip";
77
77
  export {
78
78
  Chip
79
79
  };
80
- //# sourceMappingURL=chunk-PGANINQD.js.map
80
+ //# sourceMappingURL=chunk-NI67M453.js.map
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-2ORD2FMN.js";
18
18
  import {
19
19
  Alert
20
- } from "./chunk-QVDEGBME.js";
20
+ } from "./chunk-PEAUGQKU.js";
21
21
  import {
22
22
  Button
23
23
  } from "./chunk-YOXYSAUI.js";
@@ -160,4 +160,4 @@ export {
160
160
  SequenceStepBody,
161
161
  SequenceDoneBody
162
162
  };
163
- //# sourceMappingURL=chunk-RDCIST7P.js.map
163
+ //# sourceMappingURL=chunk-OCT5VCLP.js.map
@@ -4,7 +4,8 @@ import {
4
4
  import {
5
5
  actualBarColor,
6
6
  blockToneStyles,
7
- breakHatch
7
+ breakHatch,
8
+ signalInk
8
9
  } from "./chunk-4HK4FVMV.js";
9
10
  import {
10
11
  FIELD_BORDER_WIDTH
@@ -265,6 +266,39 @@ var skeletonNameSx = (theme) => ({
265
266
  borderRadius: rem(theme, DAY_RULER_METRICS.skeletonNameRadius),
266
267
  backgroundColor: theme.palette.action.hover
267
268
  });
269
+ function footerInk(theme, marked, plain) {
270
+ return marked ? signalInk(theme, "warning", theme.palette.background.default) : plain;
271
+ }
272
+ function footerCellSx(marked) {
273
+ return (theme) => ({
274
+ display: "flex",
275
+ alignItems: "center",
276
+ justifyContent: "center",
277
+ fontSize: rem(theme, DAY_RULER_METRICS.coverage.font),
278
+ borderRadius: rem(theme, DAY_RULER_METRICS.coverage.radius),
279
+ color: footerInk(theme, marked, theme.palette.text.primary),
280
+ fontWeight: marked ? 500 : 400,
281
+ // The hairline is always there, transparent when unmarked, so a mark never shifts a count.
282
+ border: `1px solid ${marked ? theme.palette.warning.main : "transparent"}`,
283
+ minWidth: 0,
284
+ overflow: "hidden"
285
+ });
286
+ }
287
+ function footerNoteSx(marked) {
288
+ return (theme) => ({
289
+ fontSize: rem(theme, DAY_RULER_METRICS.meta),
290
+ color: footerInk(theme, marked, theme.palette.text.secondary),
291
+ fontWeight: marked ? 500 : 400,
292
+ ...marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}
293
+ });
294
+ }
295
+ var trendSx = (theme) => ({
296
+ display: "block",
297
+ width: "100%",
298
+ height: rem(theme, DAY_RULER_METRICS.coverage.height + DAY_RULER_METRICS.coverage.height / 2),
299
+ color: theme.palette.primary.main,
300
+ overflow: "visible"
301
+ });
268
302
 
269
303
  export {
270
304
  rootSx,
@@ -286,6 +320,10 @@ export {
286
320
  actualLabelSx,
287
321
  nowSx,
288
322
  skeletonTrackSx,
289
- skeletonNameSx
323
+ skeletonNameSx,
324
+ footerInk,
325
+ footerCellSx,
326
+ footerNoteSx,
327
+ trendSx
290
328
  };
291
- //# sourceMappingURL=chunk-G2PVUPE7.js.map
329
+ //# sourceMappingURL=chunk-OJZLFFG4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.styles.ts"],"sourcesContent":["import { alpha, type CSSObject, type SxProps, type Theme } from '@mui/material/styles/index.js';\n\nimport { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { actualBarColor, blockToneStyles, breakHatch, signalInk } from '../ScheduleGrid/schedule-tones';\nimport type { ScheduleBlockTone } from '../ScheduleGrid/ScheduleGrid.types';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\n\n/** The container narrow rows answer to (container queries, never media queries). */\n/**\n * `--dr-actions`: the actions column, 220px when any row has actions and\n * nothing when none does (no empty column at the end of every row).\n */\nexport function rootSx(hasActions: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n containerType: 'inline-size',\n minWidth: 0,\n width: '100%',\n userSelect: 'none',\n '--dr-actions': hasActions ? rem(theme, M.sideColumn) : '0%',\n });\n}\n\n/** `@container` below which a row stacks (the coverage and axis rows go full width). Bounds are \"from px up\". */\nfunction compact(theme: Theme): string {\n return `@container (width < ${rem(theme, M.compactBelow)})`;\n}\n\n/** `@container` below which the pane is phone-sized: no coverage row, no axis. Bounds are \"from px up\". */\nfunction phone(theme: Theme): string {\n return `@container (width < ${rem(theme, M.phoneBelow)})`;\n}\n\n/** Name · track · actions, the coverage row and the axis row share these columns on a computer. */\nexport const lineSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n // Stacked: across the full width, like the tracks; the label above the counts.\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr)',\n rowGap: rem(theme, M.coverage.gap),\n '& > span:empty': { display: 'none' },\n },\n [phone(theme)]: { display: 'none' },\n});\n\nexport const coverageLabelSx: SxProps<Theme> = { fontSize: sxRem(M.meta), color: 'text.secondary' };\n\nexport function coverageSx(hours: number): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `repeat(${hours}, minmax(0, 1fr))`,\n gap: rem(theme, M.coverage.gap),\n height: rem(theme, M.coverage.height),\n });\n}\n\n/**\n * How strongly a staffed hour is filled: the prototype's tonal success step, deeper with each\n * person on the escala (0.18 + 0.09 per person, at most 0.85). An empty hour has none.\n */\nexport function coverageStrength(count: number): number {\n if (count <= 0) return 0;\n return Math.min(0.85, 0.18 + count * 0.09);\n}\n\nexport function coverageCellSx(count: number): SxProps<Theme> {\n return (theme: Theme) => {\n const strength = coverageStrength(count);\n return {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: rem(theme, M.coverage.font),\n borderRadius: rem(theme, M.coverage.radius),\n color: theme.palette.text.primary,\n // A tonal fill, as the prototype's coverage line draws it — never an outline (FUT-3831). It is\n // the success colour over the page, so a staffed hour is LIGHTER than an empty one in dark mode\n // and plainly green in light, where the soft-signal blend read as the empty grey. The hairline\n // stays transparent so a count never shifts its cell.\n backgroundColor: strength > 0 ? alpha(theme.palette.success.main, strength) : theme.palette.action.hover,\n border: '1px solid transparent',\n minWidth: 0,\n overflow: 'hidden',\n };\n };\n}\n\nexport const axisSx: SxProps<Theme> = (theme: Theme) => ({\n position: 'relative',\n height: rem(theme, M.axis.height),\n fontSize: rem(theme, M.axis.font),\n color: theme.palette.text.secondary,\n mt: 0.5,\n '& > span': { position: 'absolute', transform: 'translateX(-50%)', whiteSpace: 'nowrap' },\n});\n\nexport const groupTitleSx: SxProps<Theme> = {\n fontSize: sxRem(M.groupTitle),\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n color: 'text.secondary',\n fontWeight: 500,\n pt: 1.5,\n pb: 0.5,\n m: 0,\n};\n\n/**\n * One person's row. A computer: name · track · actions on one line. A narrow\n * ruler (a phone): name and actions on top, the track under them, full width.\n */\nexport const rowSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,\n gridTemplateAreas: '\"who track actions\"',\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n py: rem(theme, M.rowPaddingY),\n borderBottom: `1px solid ${theme.palette.divider}`,\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gridTemplateAreas: '\"who actions\" \"track track\"',\n rowGap: theme.spacing(1),\n py: theme.spacing(1.5),\n },\n});\n\nexport const whoSx: SxProps<Theme> = { gridArea: 'who', minWidth: 0 };\n\nexport const actionsSx: SxProps<Theme> = {\n gridArea: 'actions',\n display: 'flex',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexWrap: 'wrap',\n minWidth: 0,\n};\n\n/** A break inside a block: a hatched band across its height, under its text. `span` is in % of the block. */\nexport function breakSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: `${span.at}%`,\n width: `${span.share}%`,\n background: breakHatch(theme, rem(theme, M.breakStripe.ink), rem(theme, M.breakStripe.ink + M.breakStripe.gap)),\n pointerEvents: 'none',\n // Where the band meets an end of the block it takes the block's rounding:\n // on a phone the block does not clip (its hit area reaches past it).\n ...(span.at <= 0.01 ? { borderTopLeftRadius: 'inherit', borderBottomLeftRadius: 'inherit' } : {}),\n ...(span.at + span.share >= 99.99 ? { borderTopRightRadius: 'inherit', borderBottomRightRadius: 'inherit' } : {}),\n });\n}\n\n/** The hour lines: one every `every` hours of a `hours`-long ruler. */\nfunction hourLines(theme: Theme, hours: number, every: number): string {\n const line = theme.palette.divider;\n const step = `${(100 * every) / hours}%`;\n const hairline = `${FIELD_BORDER_WIDTH}px`;\n return `repeating-linear-gradient(to right, ${line} 0, ${line} ${hairline}, transparent ${hairline}, transparent ${step})`;\n}\n\nexport function trackSx(opts: { hours: number; tickHours: number; interactive: boolean }): SxProps<Theme> {\n return (theme: Theme) => ({\n gridArea: 'track',\n position: 'relative',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n backgroundImage: hourLines(theme, opts.hours, 1),\n cursor: opts.interactive ? 'crosshair' : 'default',\n touchAction: 'auto',\n outline: 'none',\n '&:focus-visible': { boxShadow: `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` },\n [compact(theme)]: {\n height: rem(theme, M.track.compactHeight),\n borderRadius: rem(theme, M.track.compactRadius),\n backgroundImage: hourLines(theme, opts.hours, opts.tickHours),\n },\n });\n}\n\n/** Where a bar starts and how long it is, both in % of the track. */\nexport interface Span {\n at: number;\n share: number;\n}\n\nexport function blockSx(tone: ScheduleBlockTone, span: Span, opts: { selected: boolean; movable: boolean }): SxProps<Theme> {\n return (theme: Theme): CSSObject => ({\n ...blockToneStyles(theme, tone, true),\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.block.top),\n height: rem(theme, M.block.height),\n boxSizing: 'border-box',\n borderRadius: rem(theme, M.block.radius),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: `0 ${rem(theme, M.block.paddingX)}`,\n margin: 0,\n font: 'inherit',\n fontSize: rem(theme, M.block.font),\n fontWeight: 500,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n cursor: opts.movable ? 'grab' : 'pointer',\n boxShadow: opts.selected ? `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` : 'none',\n '&:focus-visible': { outline: `${rem(theme, M.ring)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, M.ringOffset) },\n '& [data-dr-text]': { position: 'relative', overflow: 'hidden', textOverflow: 'ellipsis', minWidth: 0 },\n '& [data-dr-text=\"short\"]': { display: 'none' },\n [compact(theme)]: {\n top: rem(theme, M.block.compactTop),\n height: rem(theme, M.block.compactHeight),\n // A 40px hit area around the 20px bar, the look unchanged: the text cuts\n // itself (its spans ellipsize), so the block need not clip.\n overflow: 'visible',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n top: '50%',\n height: rem(theme, M.block.hitArea),\n transform: 'translateY(-50%)',\n },\n '&[data-narrow] [data-dr-text=\"full\"]': { display: 'none' },\n '&[data-narrow] [data-dr-text=\"short\"]': { display: 'inline' },\n },\n });\n}\n\nexport function handleSx(side: 'l' | 'r'): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n [side === 'l' ? 'left' : 'right']: 0,\n width: rem(theme, M.handle),\n cursor: 'ew-resize',\n });\n}\n\nexport function actualSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.actual.top),\n height: rem(theme, M.actual.height),\n borderRadius: rem(theme, M.actual.radius),\n backgroundColor: actualBarColor(theme),\n pointerEvents: 'none',\n [compact(theme)]: { top: rem(theme, M.actual.compactTop), height: rem(theme, M.actual.compactHeight) },\n });\n}\n\nexport function actualLabelSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `calc(${left}% + ${rem(theme, M.actualLabel.offset)})`,\n top: rem(theme, M.actualLabel.top),\n fontSize: rem(theme, M.actualLabel.font),\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n [compact(theme)]: { display: 'none' },\n });\n}\n\nexport function nowSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${left}%`,\n top: rem(theme, -M.now.overhang),\n bottom: rem(theme, -M.now.overhang),\n width: rem(theme, M.now.width),\n backgroundColor: theme.palette.primary.main,\n pointerEvents: 'none',\n });\n}\n\nexport const skeletonTrackSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'track',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n});\n\nexport const skeletonNameSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'who',\n height: rem(theme, M.name),\n width: '60%',\n borderRadius: rem(theme, M.skeletonNameRadius),\n backgroundColor: theme.palette.action.hover,\n});\n\n/**\n * A marked footer's words (FUT-3882): the warning ink deepened until it reads\n * at 4.5:1 on the page — `warning.main` is 3.1:1 on white. The outline keeps\n * `warning.main`: a non-text mark needs 3:1.\n */\nexport function footerInk(theme: Theme, marked: boolean, plain: string): string {\n return marked ? signalInk(theme, 'warning', theme.palette.background.default) : plain;\n}\n\n/** A group's count line (FUT-3882): plain counts on the hours' columns, a marked hour outlined in the warning ink. */\nexport function footerCellSx(marked: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: rem(theme, M.coverage.font),\n borderRadius: rem(theme, M.coverage.radius),\n color: footerInk(theme, marked, theme.palette.text.primary),\n fontWeight: marked ? 500 : 400,\n // The hairline is always there, transparent when unmarked, so a mark never shifts a count.\n border: `1px solid ${marked ? theme.palette.warning.main : 'transparent'}`,\n minWidth: 0,\n overflow: 'hidden',\n });\n}\n\n/**\n * A footer line's sentence; when the host marks it (\"Faltam 2, 20h–22h\"), in\n * the readable warning ink with a warning bar before it — a shape, so colour\n * is never the only signal.\n */\nexport function footerNoteSx(marked: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n fontSize: rem(theme, M.meta),\n color: footerInk(theme, marked, theme.palette.text.secondary),\n fontWeight: marked ? 500 : 400,\n ...(marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}),\n });\n}\n\n/** A group's trend line: as tall as the coverage row, drawn in the primary colour. */\nexport const trendSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'block',\n width: '100%',\n height: rem(theme, M.coverage.height + M.coverage.height / 2),\n color: theme.palette.primary.main,\n overflow: 'visible',\n});\n"],"mappings":"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","names":[]}
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SectionNavSheet
3
- } from "./chunk-XCUHGPPZ.js";
3
+ } from "./chunk-DTZOP4ZR.js";
4
4
  import {
5
5
  RaisedActionButton,
6
6
  raisedLift
7
- } from "./chunk-UKUGSU3Y.js";
7
+ } from "./chunk-L4V7FZJI.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-24HHUCWB.js";
18
+ } from "./chunk-LDCZPZPD.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-F7LBTMCA.js.map
330
+ //# sourceMappingURL=chunk-P53ANKZV.js.map
@@ -1,22 +1,23 @@
1
1
  import {
2
2
  Axis,
3
3
  Coverage,
4
+ GroupFooter,
4
5
  RulerRow
5
- } from "./chunk-ACM3HHZY.js";
6
+ } from "./chunk-UDBOGSFO.js";
6
7
  import {
7
8
  groupTitleSx,
8
9
  rootSx,
9
10
  rowSx,
10
11
  skeletonNameSx,
11
12
  skeletonTrackSx
12
- } from "./chunk-G2PVUPE7.js";
13
+ } from "./chunk-OJZLFFG4.js";
14
+ import {
15
+ EN_US_DAY_RULER_LABELS
16
+ } from "./chunk-F2ZUUEXC.js";
13
17
  import {
14
18
  handleBlockKey,
15
19
  keyCreateSpan
16
20
  } from "./chunk-Y3F2F36I.js";
17
- import {
18
- EN_US_DAY_RULER_LABELS
19
- } from "./chunk-K3IB7S7Q.js";
20
21
  import {
21
22
  useRulerDrag
22
23
  } from "./chunk-EKSJES5E.js";
@@ -58,6 +59,12 @@ function abilitiesOf(props) {
58
59
  const open = !props.readOnly && !props.loading;
59
60
  return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };
60
61
  }
62
+ function FooterOf({ props, group, ctx }) {
63
+ const rows = props.groupFooter?.(group);
64
+ if (!rows || rows.length === 0) return null;
65
+ const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;
66
+ return /* @__PURE__ */ jsx(GroupFooter, { rows, scale: ctx.scale, testId: ctx.testId, marked });
67
+ }
61
68
  function RulerBody({ props, ctx }) {
62
69
  if (props.error) return /* @__PURE__ */ jsx(Fragment, { children: props.error });
63
70
  if (props.loading) {
@@ -69,7 +76,8 @@ function RulerBody({ props, ctx }) {
69
76
  if (props.rows.length === 0) return /* @__PURE__ */ jsx(Fragment, { children: props.empty ?? null });
70
77
  return /* @__PURE__ */ jsx(Fragment, { children: grouped(props.rows).map((group, index) => /* @__PURE__ */ jsxs(Box, { role: "list", "aria-label": group.title, children: [
71
78
  group.title ? /* @__PURE__ */ jsx(Box, { component: "p", sx: groupTitleSx, "aria-hidden": true, children: group.title }) : null,
72
- group.rows.map((row) => /* @__PURE__ */ jsx(RulerRow, { row, ctx }, row.id))
79
+ group.rows.map((row) => /* @__PURE__ */ jsx(RulerRow, { row, ctx }, row.id)),
80
+ /* @__PURE__ */ jsx(FooterOf, { props, group: group.title, ctx })
73
81
  ] }, `${index}-${group.title ?? ""}`)) });
74
82
  }
75
83
  function DayRuler(props) {
@@ -117,4 +125,4 @@ function DayRuler(props) {
117
125
  export {
118
126
  DayRuler
119
127
  };
120
- //# sourceMappingURL=chunk-HMEGQKNQ.js.map
128
+ //# sourceMappingURL=chunk-PCQ5JWLF.js.map