@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
@@ -47,4 +47,20 @@ export declare function actualLabelSx(left: number): SxProps<Theme>;
47
47
  export declare function nowSx(left: number): SxProps<Theme>;
48
48
  export declare const skeletonTrackSx: SxProps<Theme>;
49
49
  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>;
50
66
  //# 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"}
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"}
@@ -63,6 +63,43 @@ export interface DayRulerRow {
63
63
  onLabelClick?: () => void;
64
64
  labelAccessible?: string;
65
65
  }
66
+ /** One hour of a group's count line: what it says, and whether the host marks it (an hour short of people). */
67
+ export interface DayRulerFooterCell {
68
+ /** What the hour says ("4", "—"). Empty draws nothing. */
69
+ text: string;
70
+ /** Drawn in the warning ink inside a warning outline. Never the only signal: say it in `title` too. */
71
+ marked?: boolean;
72
+ /** The hour's tooltip and accessible words ("20h · o movimento pede 4, a escala tem 2"). Default: the hour and `text`. */
73
+ title?: string;
74
+ }
75
+ /**
76
+ * A line under a group's rows, on the tracks' columns (FUT-3882): one count
77
+ * per hour (`cells`, index 0 = `from…from+1`) — "Na escala, por hora",
78
+ * "O movimento pede" —, a trend drawn as a line (`trend`, one value per hour,
79
+ * `null` for none) — "Média de pedidos/hora" —, or a sentence across the
80
+ * track where the figures would be (`note`) — "Pouco histórico: …", or,
81
+ * `marked`, in the warning ink: "Faltam 2, 20h–22h".
82
+ */
83
+ export type DayRulerFooterRow = {
84
+ id: string;
85
+ label: string;
86
+ cells: readonly DayRulerFooterCell[];
87
+ trend?: undefined;
88
+ note?: undefined;
89
+ } | {
90
+ id: string;
91
+ label: string;
92
+ trend: readonly (number | null)[];
93
+ cells?: undefined;
94
+ note?: undefined;
95
+ } | {
96
+ id: string;
97
+ label: string;
98
+ note: string;
99
+ marked?: boolean;
100
+ cells?: undefined;
101
+ trend?: undefined;
102
+ };
66
103
  export interface DayRulerProps {
67
104
  rows: readonly DayRulerRow[];
68
105
  /** The ruler's first hour (default 6, 06:00). */
@@ -75,6 +112,12 @@ export interface DayRulerProps {
75
112
  coverage?: readonly number[];
76
113
  /** Beside the coverage row ("Na escala, por hora"). */
77
114
  coverageLabel?: string;
115
+ /**
116
+ * Lines under a group's rows, on the tracks' columns, for the group titled
117
+ * `group` (`undefined` for rows with no group). Like the coverage row they
118
+ * are not drawn in a phone-sized pane, where the host says it its own way.
119
+ */
120
+ groupFooter?: (group: string | undefined) => readonly DayRulerFooterRow[] | undefined;
78
121
  /** An axis label every this many hours (default 4). */
79
122
  tickHours?: number;
80
123
  /** Every gesture snaps to this (default 15 minutes). */
@@ -96,7 +139,7 @@ export interface DayRulerProps {
96
139
  /** The component's own words. Default: the English pack. */
97
140
  labels?: Partial<DayRulerLabels>;
98
141
  /**
99
- * Base test id (default `day-ruler`). Parts: `-coverage`, `-axis`, `-row-${rowId}`,
142
+ * Base test id (default `day-ruler`). Parts: `-coverage`, `-axis`, `-footer-${footerRowId}`, `-row-${rowId}`,
100
143
  * `-track-${rowId}`, `-block-${blockId}`, `-handle-l-${blockId}`, `-handle-r-${blockId}`, `-break-${blockId}`,
101
144
  * `-actual-${rowId}`, `-now`, `-preview`, `-live`, `-loading`.
102
145
  */
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
  export { DayRuler } from './DayRuler';
2
- export type { DayRulerActual, DayRulerBlock, DayRulerProps, DayRulerRow, RulerHour, } from './DayRuler.types';
2
+ export type { DayRulerActual, DayRulerBlock, DayRulerFooterCell, DayRulerFooterRow, DayRulerProps, DayRulerRow, RulerHour, } from './DayRuler.types';
3
3
  export { DAY_RULER_LABELS } from './DayRuler.labels';
4
4
  export type { DayRulerLabels } from './DayRuler.labels';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DayRuler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EACV,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -31,10 +31,12 @@ interface HeaderProps {
31
31
  columns: readonly ScheduleGridColumn[];
32
32
  /** Present when the grid has a last column. */
33
33
  totalLabel?: string;
34
+ /** Above the names (`ScheduleGridProps.corner`). */
35
+ corner?: React.ReactNode;
34
36
  rowSx: RowSx;
35
37
  testId: string;
36
38
  }
37
- export declare function GridHeader({ columns, totalLabel, rowSx, testId }: HeaderProps): React.JSX.Element;
39
+ export declare function GridHeader({ columns, totalLabel, corner, rowSx, testId }: HeaderProps): React.JSX.Element;
38
40
  interface BodyProps {
39
41
  grid: ScheduleGridProps;
40
42
  rows: readonly ScheduleGridRow[];
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleGrid.parts.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAuBhE,OAAO,KAAK,EAEV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,+CAA+C;AAC/C,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;AAEzC,UAAU,SAAS;IACjB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAgJD,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgC5D;AAQD,UAAU,WAAW;IACnB,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AASD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6BjG;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,SAAS,eAAe,EAAE,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AA0DD,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAqBlE"}
1
+ {"version":3,"file":"ScheduleGrid.parts.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAwBhE,OAAO,KAAK,EAEV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf;AAED,+CAA+C;AAC/C,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;AAEzC,UAAU,SAAS;IACjB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAgJD,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgC5D;AAQD,UAAU,WAAW;IACnB,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAoCzG;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,SAAS,eAAe,EAAE,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AA0DD,gGAAgG;AAChG,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAqBlE"}
@@ -16,6 +16,13 @@ export interface ScheduleGridColumn {
16
16
  label: string;
17
17
  /** Under the label ("3 turnos", "ninguém"). */
18
18
  sublabel?: string;
19
+ /**
20
+ * Under the label and the sublabel, inside the pinned header row: the host's
21
+ * own figure for that day (an hour band of how busy it gets, a "falta 2 ·
22
+ * 20–22h" line). It takes the column's width and travels with the header,
23
+ * sideways too. Keep it short: every header cell grows to the tallest.
24
+ */
25
+ adornment?: React.ReactNode;
19
26
  /** Today's column: its label in the primary colour and its cells framed. */
20
27
  today?: boolean;
21
28
  /**
@@ -116,6 +123,11 @@ export interface ScheduleGridProps {
116
123
  cell: (rowId: string, day: number) => ScheduleGridCell;
117
124
  /** The last column's header ("horas"). Without it and without row totals, there is no last column. */
118
125
  totalLabel?: string;
126
+ /**
127
+ * The header row's cell above the names, pinned with it ("Movimento,
128
+ * 11h–23h" — what the days' adornments show). Empty by default.
129
+ */
130
+ corner?: React.ReactNode;
119
131
  /**
120
132
  * No create, copy or move: no "+", no grips, empty cells are not focusable.
121
133
  * Block clicks still reach `onBlockClick` (a read-only window).
@@ -1 +1 @@
1
- {"version":3,"file":"ScheduleGrid.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScheduleGrid.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SxProps, Theme } from '@mui/material/styles/index.js';
2
+ /**
3
+ * The header row's host figures (FUT-3882): a day's adornment under its label
4
+ * and the corner above the names. Their own module to keep the grid's styles
5
+ * under the file-size budget.
6
+ */
7
+ /** A day's adornment: under its label, the column's full width, in the secondary ink unless the host says otherwise. */
8
+ export declare const headerAdornmentSx: SxProps<Theme>;
9
+ /**
10
+ * The cell above the names. It is the pinned mask over the names column (the
11
+ * grid's sticky rule): it must stay a stretched grid item, the header row's
12
+ * full height, or a day scrolled sideways shows above the names. Its words sit
13
+ * inside it on the days' label line (the prototype's "Movimento, 11h–23h").
14
+ */
15
+ export declare const cornerSx: SxProps<Theme>;
16
+ //# sourceMappingURL=schedule-header-host.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-header-host.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/ScheduleGrid/schedule-header-host.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAKpE;;;;GAIG;AAEH,wHAAwH;AACxH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAK5C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,EAAE,OAAO,CAAC,KAAK,CASnC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.91.0",
3
+ "version": "6.92.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -8,4 +8,5 @@ export const EN_US_DAY_RULER_LABELS: DayRulerLabels = {
8
8
  refused: "It cannot go further",
9
9
  notMovable: "This shift cannot be changed here",
10
10
  loading: "Loading the day",
11
+ footerMarked: "short of people",
11
12
  };
@@ -25,6 +25,8 @@ export interface DayRulerLabels {
25
25
  notMovable: string;
26
26
  /** The ruler's busy state. */
27
27
  loading: string;
28
+ /** Said after a group footer's marked hour when the host gives it no `title` (FUT-3882). */
29
+ footerMarked: string;
28
30
  }
29
31
 
30
32
  /**
@@ -47,6 +47,7 @@ Times are **hours from the day's midnight**, fractions included: `20.75` is 20:4
47
47
  | `now` | `number?` | The "agora" line, when on the ruler. |
48
48
  | `coverage` | `number[]?` | People per hour, index 0 = `from…from+1`. |
49
49
  | `coverageLabel` | `string?` | Beside the counts ("Na escala, por hora"). |
50
+ | `groupFooter` | `(group) => DayRulerFooterRow[]?` | Lines under a group's rows, on the tracks' columns (FUT-3882), for the group titled `group` (`undefined` for rows with no group). A row is `{ id, label, cells }` — one `{ text, marked?, title? }` per hour from `from`, a `marked` hour drawn in the warning ink (deepened to read at 4.5:1 on the page) inside a `warning.main` outline ("O movimento pede", an hour short of people). A marked hour's `title` is also said as visually hidden text; without one, it reads "20:00 · 2 · " + `labels.footerMarked`. An unmarked hour's default title is "20:00 · 2", or just the hour when it says nothing — or `{ id, label, trend }`, one value (or `null`) per hour drawn as a line in the primary colour, the highest near the top ("Média de pedidos/hora"; the drawing is `aria-hidden` and its figures are said as visually hidden text, "11:00 4 · 12:00 6"). A row `{ id, label, note, marked? }` says a sentence across the track instead ("Pouco histórico: menos de 4 semanas com pedidos na cozinha."); `marked` draws it in the readable warning ink behind a warning bar (a shape, not colour alone) and flags it `data-marked` ("Faltam 2, 20h–22h"). Not drawn in a phone-sized pane, like the coverage row. Called for every group on each render: keep it cheap (derive the rows once, outside, and look them up). A host drawing these usually leaves out `coverage`: the same counts would show twice. |
50
51
  | `tickHours` | `number` (default 4) | An axis label every this many hours (HH:MM). |
51
52
  | `snapMinutes` | `number` (default 15) | |
52
53
  | `createHours` | `number` (default 4) | What a click alone creates. |
@@ -55,8 +56,8 @@ Times are **hours from the day's midnight**, fractions included: `20.75` is 20:4
55
56
  | `onCreate` / `onMove` / `onResize` / `onBlockClick` | see Gestures | Each is offered only when its handler is given. |
56
57
  | `loading` / `error` / `empty` | `boolean` / node / node | Skeleton rows with `aria-busy`; the host's error; the host's empty sentence. |
57
58
  | `aria-label` | `string?` | The region's name. |
58
- | `labels` | `Partial<DayRulerLabels>` | `createTrack(row)`, `moved(block, range)`, `resized(block, range)`, `refused`, `loading`. Default: the English pack; pt-BR: `DAY_RULER_LABELS['pt-BR']` from `@12-apps/ui/data-display/DayRuler`. |
59
- | `dataTestId` | `string?` (default `day-ruler`) | Parts: `-coverage`, `-axis`, `-row-${rowId}`, `-track-${rowId}`, `-block-${blockId}`, `-handle-l/-r-${blockId}`, `-break-${blockId}`, `-actual-${rowId}`, `-now`, `-preview`, `-live`, `-loading`. |
59
+ | `labels` | `Partial<DayRulerLabels>` | `createTrack(row)`, `moved(block, range)`, `resized(block, range)`, `refused`, `loading`, `footerMarked`. Default: the English pack; pt-BR: `DAY_RULER_LABELS['pt-BR']` from `@12-apps/ui/data-display/DayRuler`. |
60
+ | `dataTestId` | `string?` (default `day-ruler`) | Parts: `-coverage`, `-axis`, `-footer-${footerRowId}`, `-row-${rowId}`, `-track-${rowId}`, `-block-${blockId}`, `-handle-l/-r-${blockId}`, `-break-${blockId}`, `-actual-${rowId}`, `-now`, `-preview`, `-live`, `-loading`. |
60
61
 
61
62
  Tones are `ScheduleGrid`'s; on the ruler a `plan` block is a dashed outline over a faint ground.
62
63
 
@@ -7,6 +7,7 @@ import type { RulerAbilities, RulerScale } from './DayRuler.keyboard';
7
7
  import { DAY_RULER_METRICS as M } from './DayRuler.metrics';
8
8
  import { useTextFits } from './useTextFits';
9
9
  import { formatHour, formatRange, percentOf, ticksOf } from './day-ruler-model';
10
+ import { SR_ONLY_SX } from '../ScheduleGrid/ScheduleGrid.styles';
10
11
  import {
11
12
  actionsSx,
12
13
  actualLabelSx,
@@ -17,15 +18,18 @@ import {
17
18
  coverageCellSx,
18
19
  coverageLabelSx,
19
20
  coverageSx,
21
+ footerCellSx,
22
+ footerNoteSx,
20
23
  handleSx,
21
24
  lineSx,
22
25
  nowSx,
23
26
  rowSx,
24
27
  trackSx,
28
+ trendSx,
25
29
  whoSx,
26
30
  type Span,
27
31
  } from './DayRuler.styles';
28
- import type { DayRulerBlock, DayRulerRow, RulerHour } from './DayRuler.types';
32
+ import type { DayRulerBlock, DayRulerFooterCell, DayRulerFooterRow, DayRulerRow, RulerHour } from './DayRuler.types';
29
33
  import type { RulerDrag, RulerDragApi } from './useRulerDrag';
30
34
 
31
35
  export const spanOf = (start: RulerHour, end: RulerHour, scale: RulerScale): Span => {
@@ -254,6 +258,121 @@ export function Coverage(props: { coverage: readonly number[]; label?: string; s
254
258
  );
255
259
  }
256
260
 
261
+ /** The points of a trend over the hours' centres, in a 100 × 40 box: the highest value near the top, `null` breaks nothing (it is skipped). */
262
+ export function trendPoints(values: readonly (number | null)[], hours: number): string {
263
+ const present = values.slice(0, hours).filter((value): value is number => value !== null);
264
+ const max = Math.max(0, ...present);
265
+ return values
266
+ .slice(0, hours)
267
+ .flatMap((value, index) => {
268
+ if (value === null) return [];
269
+ const x = ((index + 0.5) * 100) / hours;
270
+ const y = max > 0 ? 38 - (value / max) * 34 : 38;
271
+ return [`${x.toFixed(2)},${y.toFixed(2)}`];
272
+ })
273
+ .join(' ');
274
+ }
275
+
276
+ /** One hour's default words: "20:00 · 4"; just the hour when it says nothing. */
277
+ const hourWords = (hour: RulerHour, text: string): string => (text ? `${formatHour(hour)} · ${text}` : formatHour(hour));
278
+
279
+ /** What a reader hears for a marked hour: the host's `title`, else the hour, its count and that it is short. */
280
+ function markedWords(cell: DayRulerFooterCell, hour: RulerHour, marked: string): string {
281
+ return cell.title ?? `${hourWords(hour, cell.text)} · ${marked}`;
282
+ }
283
+
284
+ interface FooterContext {
285
+ hours: number;
286
+ from: RulerHour;
287
+ /** `labels.footerMarked`. */
288
+ marked: string;
289
+ }
290
+
291
+ function FooterCells({ cells, ctx }: { cells: readonly DayRulerFooterCell[]; ctx: FooterContext }): React.JSX.Element {
292
+ return (
293
+ <Box sx={coverageSx(ctx.hours)}>
294
+ {Array.from({ length: ctx.hours }, (_, index) => {
295
+ const cell = cells[index] ?? { text: '' };
296
+ const hour = ctx.from + index;
297
+ return (
298
+ <Box
299
+ key={index}
300
+ component="span"
301
+ sx={footerCellSx(Boolean(cell.marked))}
302
+ title={cell.marked ? markedWords(cell, hour, ctx.marked) : (cell.title ?? hourWords(hour, cell.text))}
303
+ data-marked={cell.marked ? '' : undefined}
304
+ >
305
+ {/* A marked hour is said in words too, not only by its outline and a tooltip touch never shows. */}
306
+ {cell.marked ? (
307
+ <>
308
+ <span aria-hidden>{cell.text}</span>
309
+ <Box component="span" sx={SR_ONLY_SX}>
310
+ {markedWords(cell, hour, ctx.marked)}
311
+ </Box>
312
+ </>
313
+ ) : (
314
+ cell.text
315
+ )}
316
+ </Box>
317
+ );
318
+ })}
319
+ </Box>
320
+ );
321
+ }
322
+
323
+ /** A trend's figures in words, for the reader the drawn line does not reach: "11:00 4 · 12:00 6". */
324
+ function trendWords(values: readonly (number | null)[], ctx: FooterContext): string {
325
+ return values
326
+ .slice(0, ctx.hours)
327
+ .flatMap((value, index) => (value === null ? [] : [`${formatHour(ctx.from + index)} ${Math.round(value * 10) / 10}`]))
328
+ .join(' · ');
329
+ }
330
+
331
+ function FooterFigures({ row, ctx }: { row: DayRulerFooterRow; ctx: FooterContext }): React.JSX.Element {
332
+ if (row.trend) {
333
+ return (
334
+ <Box component="span" sx={{ display: 'block', minWidth: 0 }}>
335
+ <Box component="svg" viewBox="0 0 100 40" preserveAspectRatio="none" sx={trendSx} aria-hidden>
336
+ <polyline fill="none" stroke="currentColor" strokeWidth={1.5} vectorEffect="non-scaling-stroke" points={trendPoints(row.trend, ctx.hours)} />
337
+ </Box>
338
+ <Box component="span" sx={SR_ONLY_SX}>
339
+ {trendWords(row.trend, ctx)}
340
+ </Box>
341
+ </Box>
342
+ );
343
+ }
344
+ if (row.note !== undefined) {
345
+ return (
346
+ <Box component="span" sx={footerNoteSx(Boolean(row.marked))} data-marked={row.marked ? '' : undefined}>
347
+ {row.note}
348
+ </Box>
349
+ );
350
+ }
351
+ return <FooterCells cells={row.cells ?? []} ctx={ctx} />;
352
+ }
353
+
354
+ /**
355
+ * A group's lines under its rows (FUT-3882): counts per hour, a trend, or a
356
+ * sentence, on the tracks' columns. `marked` is `labels.footerMarked`.
357
+ */
358
+ export function GroupFooter(props: { rows: readonly DayRulerFooterRow[]; scale: RulerScale; testId: string; marked: string }): React.JSX.Element {
359
+ const { rows, scale, testId } = props;
360
+ const ctx: FooterContext = { hours: scale.to - scale.from, from: scale.from, marked: props.marked };
361
+ return (
362
+ <>
363
+ {rows.map((row) => (
364
+ <Box key={row.id} sx={lineSx} data-testid={`${testId}-footer-${row.id}`}>
365
+ <Box component="span" sx={coverageLabelSx}>
366
+ {row.label}
367
+ </Box>
368
+ <FooterFigures row={row} ctx={ctx} />
369
+ <span />
370
+ </Box>
371
+ ))}
372
+ </>
373
+ );
374
+ }
375
+
257
376
  /** The hour labels under the coverage row. */
258
377
  export function Axis({ scale, testId }: { scale: RulerScale; testId: string }): React.JSX.Element {
259
378
  return (
@@ -8,4 +8,5 @@ export const PT_BR_DAY_RULER_LABELS: DayRulerLabels = {
8
8
  refused: "Não dá para ir além",
9
9
  notMovable: "Este turno não muda por aqui",
10
10
  loading: "Carregando o dia",
11
+ footerMarked: "falta gente",
11
12
  };
@@ -2,7 +2,7 @@ import { alpha, type CSSObject, type SxProps, type Theme } from '@mui/material/s
2
2
 
3
3
  import { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';
4
4
  import { rem, sxRem } from '../../../tokens/relative';
5
- import { actualBarColor, blockToneStyles, breakHatch } from '../ScheduleGrid/schedule-tones';
5
+ import { actualBarColor, blockToneStyles, breakHatch, signalInk } from '../ScheduleGrid/schedule-tones';
6
6
  import type { ScheduleBlockTone } from '../ScheduleGrid/ScheduleGrid.types';
7
7
  import { DAY_RULER_METRICS as M } from './DayRuler.metrics';
8
8
 
@@ -301,3 +301,52 @@ export const skeletonNameSx: SxProps<Theme> = (theme: Theme) => ({
301
301
  borderRadius: rem(theme, M.skeletonNameRadius),
302
302
  backgroundColor: theme.palette.action.hover,
303
303
  });
304
+
305
+ /**
306
+ * A marked footer's words (FUT-3882): the warning ink deepened until it reads
307
+ * at 4.5:1 on the page — `warning.main` is 3.1:1 on white. The outline keeps
308
+ * `warning.main`: a non-text mark needs 3:1.
309
+ */
310
+ export function footerInk(theme: Theme, marked: boolean, plain: string): string {
311
+ return marked ? signalInk(theme, 'warning', theme.palette.background.default) : plain;
312
+ }
313
+
314
+ /** A group's count line (FUT-3882): plain counts on the hours' columns, a marked hour outlined in the warning ink. */
315
+ export function footerCellSx(marked: boolean): SxProps<Theme> {
316
+ return (theme: Theme) => ({
317
+ display: 'flex',
318
+ alignItems: 'center',
319
+ justifyContent: 'center',
320
+ fontSize: rem(theme, M.coverage.font),
321
+ borderRadius: rem(theme, M.coverage.radius),
322
+ color: footerInk(theme, marked, theme.palette.text.primary),
323
+ fontWeight: marked ? 500 : 400,
324
+ // The hairline is always there, transparent when unmarked, so a mark never shifts a count.
325
+ border: `1px solid ${marked ? theme.palette.warning.main : 'transparent'}`,
326
+ minWidth: 0,
327
+ overflow: 'hidden',
328
+ });
329
+ }
330
+
331
+ /**
332
+ * A footer line's sentence; when the host marks it ("Faltam 2, 20h–22h"), in
333
+ * the readable warning ink with a warning bar before it — a shape, so colour
334
+ * is never the only signal.
335
+ */
336
+ export function footerNoteSx(marked: boolean): SxProps<Theme> {
337
+ return (theme: Theme) => ({
338
+ fontSize: rem(theme, M.meta),
339
+ color: footerInk(theme, marked, theme.palette.text.secondary),
340
+ fontWeight: marked ? 500 : 400,
341
+ ...(marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}),
342
+ });
343
+ }
344
+
345
+ /** A group's trend line: as tall as the coverage row, drawn in the primary colour. */
346
+ export const trendSx: SxProps<Theme> = (theme: Theme) => ({
347
+ display: 'block',
348
+ width: '100%',
349
+ height: rem(theme, M.coverage.height + M.coverage.height / 2),
350
+ color: theme.palette.primary.main,
351
+ overflow: 'visible',
352
+ });
@@ -9,7 +9,7 @@ import { useAnnouncer } from '../ScheduleGrid/useAnnouncer';
9
9
  import { handleBlockKey, keyCreateSpan, type RulerAbilities, type RulerScale } from './DayRuler.keyboard';
10
10
  import { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';
11
11
  import { DAY_RULER_METRICS as M } from './DayRuler.metrics';
12
- import { Axis, Coverage, RulerRow, type RowContext } from './DayRuler.parts';
12
+ import { Axis, Coverage, GroupFooter, RulerRow, type RowContext } from './DayRuler.parts';
13
13
  import { groupTitleSx, rootSx, rowSx, skeletonNameSx, skeletonTrackSx } from './DayRuler.styles';
14
14
  import type { DayRulerProps, DayRulerRow } from './DayRuler.types';
15
15
  import { useRulerDrag } from './useRulerDrag';
@@ -40,6 +40,14 @@ function abilitiesOf(props: DayRulerProps): RulerAbilities {
40
40
  return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };
41
41
  }
42
42
 
43
+ /** A group's lines under its rows, when the host gives any (`groupFooter`). */
44
+ function FooterOf({ props, group, ctx }: { props: DayRulerProps; group: string | undefined; ctx: RowContext }): React.JSX.Element | null {
45
+ const rows = props.groupFooter?.(group);
46
+ if (!rows || rows.length === 0) return null;
47
+ const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;
48
+ return <GroupFooter rows={rows} scale={ctx.scale} testId={ctx.testId} marked={marked} />;
49
+ }
50
+
43
51
  /** The groups and their rows — or the skeleton, the host's error, or the host's empty state. */
44
52
  function RulerBody({ props, ctx }: { props: DayRulerProps; ctx: RowContext }): React.JSX.Element {
45
53
  if (props.error) return <>{props.error}</>;
@@ -68,6 +76,7 @@ function RulerBody({ props, ctx }: { props: DayRulerProps; ctx: RowContext }): R
68
76
  {group.rows.map((row) => (
69
77
  <RulerRow key={row.id} row={row} ctx={ctx} />
70
78
  ))}
79
+ <FooterOf props={props} group={group.title} ctx={ctx} />
71
80
  </Box>
72
81
  ))}
73
82
  </>
@@ -66,6 +66,29 @@ export interface DayRulerRow {
66
66
  labelAccessible?: string;
67
67
  }
68
68
 
69
+ /** One hour of a group's count line: what it says, and whether the host marks it (an hour short of people). */
70
+ export interface DayRulerFooterCell {
71
+ /** What the hour says ("4", "—"). Empty draws nothing. */
72
+ text: string;
73
+ /** Drawn in the warning ink inside a warning outline. Never the only signal: say it in `title` too. */
74
+ marked?: boolean;
75
+ /** The hour's tooltip and accessible words ("20h · o movimento pede 4, a escala tem 2"). Default: the hour and `text`. */
76
+ title?: string;
77
+ }
78
+
79
+ /**
80
+ * A line under a group's rows, on the tracks' columns (FUT-3882): one count
81
+ * per hour (`cells`, index 0 = `from…from+1`) — "Na escala, por hora",
82
+ * "O movimento pede" —, a trend drawn as a line (`trend`, one value per hour,
83
+ * `null` for none) — "Média de pedidos/hora" —, or a sentence across the
84
+ * track where the figures would be (`note`) — "Pouco histórico: …", or,
85
+ * `marked`, in the warning ink: "Faltam 2, 20h–22h".
86
+ */
87
+ export type DayRulerFooterRow =
88
+ | { id: string; label: string; cells: readonly DayRulerFooterCell[]; trend?: undefined; note?: undefined }
89
+ | { id: string; label: string; trend: readonly (number | null)[]; cells?: undefined; note?: undefined }
90
+ | { id: string; label: string; note: string; marked?: boolean; cells?: undefined; trend?: undefined };
91
+
69
92
  export interface DayRulerProps {
70
93
  rows: readonly DayRulerRow[];
71
94
  /** The ruler's first hour (default 6, 06:00). */
@@ -78,6 +101,12 @@ export interface DayRulerProps {
78
101
  coverage?: readonly number[];
79
102
  /** Beside the coverage row ("Na escala, por hora"). */
80
103
  coverageLabel?: string;
104
+ /**
105
+ * Lines under a group's rows, on the tracks' columns, for the group titled
106
+ * `group` (`undefined` for rows with no group). Like the coverage row they
107
+ * are not drawn in a phone-sized pane, where the host says it its own way.
108
+ */
109
+ groupFooter?: (group: string | undefined) => readonly DayRulerFooterRow[] | undefined;
81
110
  /** An axis label every this many hours (default 4). */
82
111
  tickHours?: number;
83
112
  /** Every gesture snaps to this (default 15 minutes). */
@@ -99,7 +128,7 @@ export interface DayRulerProps {
99
128
  /** The component's own words. Default: the English pack. */
100
129
  labels?: Partial<DayRulerLabels>;
101
130
  /**
102
- * Base test id (default `day-ruler`). Parts: `-coverage`, `-axis`, `-row-${rowId}`,
131
+ * Base test id (default `day-ruler`). Parts: `-coverage`, `-axis`, `-footer-${footerRowId}`, `-row-${rowId}`,
103
132
  * `-track-${rowId}`, `-block-${blockId}`, `-handle-l-${blockId}`, `-handle-r-${blockId}`, `-break-${blockId}`,
104
133
  * `-actual-${rowId}`, `-now`, `-preview`, `-live`, `-loading`.
105
134
  */
@@ -2,6 +2,8 @@ export { DayRuler } from './DayRuler';
2
2
  export type {
3
3
  DayRulerActual,
4
4
  DayRulerBlock,
5
+ DayRulerFooterCell,
6
+ DayRulerFooterRow,
5
7
  DayRulerProps,
6
8
  DayRulerRow,
7
9
  RulerHour,
@@ -48,10 +48,11 @@ lists events on one axis). For one day by the hour, or for a phone, use `DayRule
48
48
 
49
49
  | Prop | Type | Description |
50
50
  |---|---|---|
51
- | `columns` | `ScheduleGridColumn[]` | `label` (wraps to a second line when its column is short, never cut, and never between a word and the number after it: "Seg 19/10" stays whole; also in `title`), `sublabel?`, `today?` (label in the primary colour, cells framed), `past?` (the day has gone: label in `text.secondary`, see [Closed days](#closed-days)). A day is its index here. |
51
+ | `columns` | `ScheduleGridColumn[]` | `label` (wraps to a second line when its column is short, never cut, and never between a word and the number after it: "Seg 19/10" stays whole; also in `title`), `sublabel?`, `adornment?` (a node under the label and sublabel, inside the pinned header and the column's width — a host's own figure for the day, such as an hour band and a "falta 2 · 20–22h" line; every header cell grows to the tallest, so keep it short; it sits inside the `columnheader`, so its words become part of the day's accessible name — draw a figure `aria-hidden` and give it words of its own, as `role="img"` with an `aria-label`), `today?` (label in the primary colour, cells framed), `past?` (the day has gone: label in `text.secondary`, see [Closed days](#closed-days)). A day is its index here. |
52
52
  | `groups` | `ScheduleGridGroup[]` | `title?` (upper-case heading, names the row group), `rows`: `id`, `label`, `meta?`, `metaTone?` (`'warning'` for "acima de 40h"), `total?`, `onLabelClick?` (makes the name a button), `labelAccessible?`, `nameAdornment?` (node beside the name — a "Freela" tag; it moves under the name when the column has no room for both), `chips?` (node under the meta — "2 regras ›"; one line, a chip that does not fit shrinks and cuts its label). |
53
53
  | `cell` | `(rowId, day) => ScheduleGridCell` | `blocks` (`id`, `label`, `note?`, `tone`, `movable?`, `copyable?`, `selected?`, `title?`, `breakSpan?` — `{ start, end }` as fractions 0…1 of the block, a meal break drawn as a hatched gap; its words go in `note`), `blocked?` (hatched, refuses create and drop), `blockedLabel?`, `closed?` (the day can take no new turno — it has gone: no fill, no "+", see [Closed days](#closed-days)), `closedLabel?` (a closed cell's visually hidden words, "Já passou"). Called for every cell on each render: keep it cheap. |
54
54
  | `totalLabel` | `string?` | The last column's header ("horas"). |
55
+ | `corner` | `ReactNode?` | The header row's cell above the names, pinned with it ("Movimento, 11h–23h" — what the days' adornments show), on the days' label line. A string never breaks at a range's dash ("11h–23h" stays whole). The cell itself always spans the header row's full height: it is the opaque mask the days scroll under. Empty by default. |
55
56
  | `readOnly` | `boolean?` | No "+", no grips, no drag; empty cells are not focusable. Block clicks still reach `onBlockClick`. |
56
57
  | `onCreate` / `onCopy` / `onMove` / `onBlockClick` | see Gestures | Each gesture is offered only when its handler is given. |
57
58
  | `createPreview` | `(rowId) => string` | The ghost text a create drag shows (the person's last hours). |
@@ -62,7 +63,7 @@ lists events on one axis). For one day by the hour, or for a phone, use `DayRule
62
63
  | `scrollToDay` | `number?` (an index into `columns`) | While the days scroll sideways, the day they open on. Applied **once per value** (and per day count): as soon as the days are drawn, they scroll at once (`behavior: 'instant'`, never smoothly, so reduced motion needs nothing else) until that day is the first column after the pinned names — or to the end of their reach, when the day is that close to the end. While `loading`, `error` or `empty` it waits for the rows; while the grid has no box (`display: none`, a container that gets its width after mount) it waits for the first width. The header row follows; focus and the page's vertical scroll are untouched. A re-render or a refetch with the same value keeps the person's own scroll, and **a later resize does not re-anchor** — pass a new value for that. A value outside the columns, and a grid whose days fit, do nothing. **Assumes LTR**: the names are the left column. Pass today's index (`3` on a Thursday) so a week opened mid-week does not start on the gone days. |
63
64
  | `aria-label` | `string?` | The grid's name. |
64
65
  | `labels` | `Partial<ScheduleGridLabels>` | `createCell(row, column)`, `blockedCell(row, column)`, `copied(block, column)`, `moved(block, row, column)`, `refused`, `loading`. Default: the English pack; a pt-BR host passes `SCHEDULE_GRID_LABELS['pt-BR']` from `@12-apps/ui/data-display/ScheduleGrid`. |
65
- | `dataTestId` | `string?` (default `schedule-grid`) | Parts: `-header`, `-row-${rowId}`, `-cell-${rowId}-${day}`, `-block-${blockId}`, `-grip-l-${blockId}`, `-grip-r-${blockId}`, `-break-${blockId}`, `-live`, `-loading`. |
66
+ | `dataTestId` | `string?` (default `schedule-grid`) | Parts: `-header`, `-corner`, `-adornment-${day}`, `-row-${rowId}`, `-cell-${rowId}-${day}`, `-block-${blockId}`, `-grip-l-${blockId}`, `-grip-r-${blockId}`, `-break-${blockId}`, `-live`, `-loading`. |
66
67
 
67
68
  ### Tones — never colour alone
68
69