@12-apps/ui 6.93.0 → 6.93.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/components-catalog.md +9 -2
  2. package/components-guidelines.md +30 -0
  3. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.js +2 -2
  4. package/dist/_internal/components/data-display/AlertDialog/AlertDialog.parts.js +9 -3
  5. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  6. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  7. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +7 -7
  8. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +7 -7
  9. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  10. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  11. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  12. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  13. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  14. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +31 -31
  15. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +42 -42
  16. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
  17. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
  18. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +2 -2
  19. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  20. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -5
  21. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
  22. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +6 -6
  23. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +5 -5
  24. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +26 -26
  25. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +8 -8
  26. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +6 -6
  27. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +7 -7
  28. package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +3 -3
  29. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +5 -5
  30. package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
  31. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +7 -7
  32. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +8 -8
  33. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +6 -6
  34. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
  35. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +3 -3
  36. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js +25 -0
  37. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js.map +1 -0
  38. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js +23 -0
  39. package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.styles.js.map +1 -0
  40. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +14 -12
  41. package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +3 -3
  42. package/dist/_internal/components/data-display/DayRuler/DayRuler.metrics.js +1 -1
  43. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +12 -15
  44. package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +3 -11
  45. package/dist/_internal/components/data-display/DayRuler/day-ruler-model.js +5 -1
  46. package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +3 -3
  47. package/dist/_internal/components/data-display/DayRuler/useTextFits.js +4 -3
  48. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +6 -6
  49. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +5 -5
  50. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.styles.js +2 -2
  51. package/dist/_internal/components/data-display/ScheduleGrid/ScheduleNameCell.js +3 -3
  52. package/dist/_internal/components/data-display/ScheduleGrid/schedule-name.styles.js +2 -2
  53. package/dist/_internal/components/data-display/ScheduleGrid/schedule-tones.js +3 -1
  54. package/dist/_internal/components/data-display/index.js +38 -36
  55. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +4 -4
  56. package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.parts.js +3 -3
  57. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +5 -5
  58. package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +4 -4
  59. package/dist/_internal/components/feedback/index.js +6 -6
  60. package/dist/_internal/components/index.js +49 -47
  61. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
  62. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
  63. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  64. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
  65. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  66. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
  67. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  68. package/dist/_internal/components/navigation/index.js +9 -9
  69. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  70. package/dist/charts.js +13 -13
  71. package/dist/{chunk-LDCZPZPD.js → chunk-24HHUCWB.js} +2 -2
  72. package/dist/{chunk-7ZQ3KQ7J.js → chunk-273OLFJD.js} +16 -6
  73. package/dist/chunk-273OLFJD.js.map +1 -0
  74. package/dist/{chunk-FAUNQ3FS.js → chunk-2M3W6ACW.js} +3 -3
  75. package/dist/{chunk-ALOEOGQV.js → chunk-3TZUZXY5.js} +2 -2
  76. package/dist/{chunk-4HK4FVMV.js → chunk-3UAHDLKH.js} +7 -1
  77. package/dist/{chunk-4HK4FVMV.js.map → chunk-3UAHDLKH.js.map} +1 -1
  78. package/dist/{chunk-F5H3WDG7.js → chunk-4E2RQOSQ.js} +2 -2
  79. package/dist/{chunk-JIEVKHOH.js → chunk-4J62V5OE.js} +6 -6
  80. package/dist/{chunk-OJZLFFG4.js → chunk-5AZEDQXX.js} +59 -70
  81. package/dist/chunk-5AZEDQXX.js.map +1 -0
  82. package/dist/{chunk-CZVAVX5L.js → chunk-6ATXOJVQ.js} +2 -2
  83. package/dist/{chunk-E2UOEI7N.js → chunk-6LGKJVOA.js} +2 -2
  84. package/dist/{chunk-XBWW3QSI.js → chunk-7WE432RQ.js} +9 -9
  85. package/dist/{chunk-5357QUVE.js → chunk-AMLHEKSV.js} +5 -5
  86. package/dist/{chunk-HSVSU7I2.js → chunk-ASEHJIIV.js} +3 -3
  87. package/dist/{chunk-FYUNROLW.js → chunk-BZYLTGOE.js} +2 -2
  88. package/dist/{chunk-TZ44F6W7.js → chunk-CGS2LQE5.js} +2 -2
  89. package/dist/{chunk-KPUUHAK6.js → chunk-CWXX5JR3.js} +11 -9
  90. package/dist/chunk-CWXX5JR3.js.map +1 -0
  91. package/dist/{chunk-6HXNFNOB.js → chunk-EE6DJPB7.js} +4 -4
  92. package/dist/{chunk-OM6ZT64U.js → chunk-F2UP5ZF4.js} +3 -3
  93. package/dist/{chunk-P53ANKZV.js → chunk-F7LBTMCA.js} +4 -4
  94. package/dist/{chunk-6HPVCDVU.js → chunk-FGZIEZEP.js} +69 -112
  95. package/dist/chunk-FGZIEZEP.js.map +1 -0
  96. package/dist/{chunk-IWSTMVCA.js → chunk-FKS2PNJF.js} +8 -8
  97. package/dist/{chunk-3WYEENUH.js → chunk-FPNVOB52.js} +7 -7
  98. package/dist/{chunk-E73C73UD.js → chunk-FYSS2PYA.js} +3 -3
  99. package/dist/{chunk-N557OEZR.js → chunk-G6NMSBSQ.js} +2 -2
  100. package/dist/{chunk-A5OERY43.js → chunk-GARM5SX6.js} +2 -2
  101. package/dist/{chunk-WJMSND5Q.js → chunk-GXGHEOWC.js} +2 -2
  102. package/dist/{chunk-U2SAW6DH.js → chunk-GY53SDVL.js} +4 -4
  103. package/dist/{chunk-MFX4ASX5.js → chunk-HWZETMO4.js} +3 -3
  104. package/dist/{chunk-MM3QESLI.js → chunk-ILJ3FXIC.js} +2 -2
  105. package/dist/{chunk-K6VEN5VN.js → chunk-K3PMMW23.js} +4 -4
  106. package/dist/{chunk-T5RFH2T5.js → chunk-KOGJBAFI.js} +2 -2
  107. package/dist/{chunk-COK65GX2.js → chunk-KURE5R7Z.js} +12 -2
  108. package/dist/chunk-KURE5R7Z.js.map +1 -0
  109. package/dist/{chunk-MAYAJXO6.js → chunk-KXDLLS62.js} +5 -5
  110. package/dist/{chunk-LE5JYNR7.js → chunk-L5CAHQIN.js} +23 -2
  111. package/dist/chunk-L5CAHQIN.js.map +1 -0
  112. package/dist/{chunk-DBI6AMNY.js → chunk-LKWXU6NH.js} +4 -4
  113. package/dist/chunk-MPVH2GM5.js +83 -0
  114. package/dist/chunk-MPVH2GM5.js.map +1 -0
  115. package/dist/{chunk-6DO672AG.js → chunk-N5PVD4J5.js} +7 -7
  116. package/dist/{chunk-ZYZPSBNQ.js → chunk-OGSTMHT6.js} +22 -7
  117. package/dist/chunk-OGSTMHT6.js.map +1 -0
  118. package/dist/{chunk-R52N5UCS.js → chunk-SB2SEGR6.js} +2 -2
  119. package/dist/{chunk-Z2WZDVGG.js → chunk-SI5SKX52.js} +2 -2
  120. package/dist/{chunk-RYJ6XGFA.js → chunk-SJAOQGQI.js} +2 -2
  121. package/dist/{chunk-D7R6SRJB.js → chunk-SKQPUAMK.js} +3 -3
  122. package/dist/{chunk-AMIUZRDQ.js → chunk-SNWCT6JN.js} +3 -3
  123. package/dist/{chunk-7W5X3KQ2.js → chunk-SW7JCF4Z.js} +2 -2
  124. package/dist/{chunk-BNBWUXT3.js → chunk-TE6HAWDM.js} +2 -2
  125. package/dist/{chunk-JG733RMP.js → chunk-TZC6KIK2.js} +5 -5
  126. package/dist/{chunk-4QGKR65P.js → chunk-U4Z6GZDW.js} +5 -5
  127. package/dist/{chunk-XFZDO2KB.js → chunk-UIIHUWOV.js} +13 -13
  128. package/dist/{chunk-L4V7FZJI.js → chunk-UKUGSU3Y.js} +2 -2
  129. package/dist/{chunk-VJIJCLUX.js → chunk-UOKXYV3U.js} +2 -2
  130. package/dist/{chunk-K7IDOTSU.js → chunk-VNMD6BA4.js} +2 -2
  131. package/dist/chunk-WG7CAT5D.js +65 -0
  132. package/dist/chunk-WG7CAT5D.js.map +1 -0
  133. package/dist/chunk-WSSD7H5E.js +52 -0
  134. package/dist/chunk-WSSD7H5E.js.map +1 -0
  135. package/dist/{chunk-DTZOP4ZR.js → chunk-XCUHGPPZ.js} +2 -2
  136. package/dist/{chunk-3YFDGFEK.js → chunk-Y7BOP7VZ.js} +2 -2
  137. package/dist/{chunk-XNAI7QGU.js → chunk-ZM6FJCWS.js} +4 -4
  138. package/dist/{chunk-FC7UCFFA.js → chunk-ZPWPA6FR.js} +8 -8
  139. package/dist/data-display/AlertDialog.js +2 -2
  140. package/dist/data-display/Avatar.js +2 -2
  141. package/dist/data-display/Badge.js +2 -2
  142. package/dist/data-display/CardKit.js +10 -10
  143. package/dist/data-display/Carousel.js +3 -3
  144. package/dist/data-display/Chart.js +13 -13
  145. package/dist/data-display/DataViews.js +56 -56
  146. package/dist/data-display/DayRuler.js +14 -12
  147. package/dist/data-display/ScheduleGrid.js +6 -6
  148. package/dist/feedback/ConfirmAction.js +6 -6
  149. package/dist/navigation/SectionNav.js +9 -9
  150. package/dist/types/components/data-display/AlertDialog/AlertDialog.d.ts.map +1 -1
  151. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts +11 -0
  152. package/dist/types/components/data-display/AlertDialog/AlertDialog.parts.d.ts.map +1 -1
  153. package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -1
  154. package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts +16 -0
  155. package/dist/types/components/data-display/DayRuler/DayRuler.footer.d.ts.map +1 -0
  156. package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts +18 -0
  157. package/dist/types/components/data-display/DayRuler/DayRuler.footer.styles.d.ts.map +1 -0
  158. package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts +15 -5
  159. package/dist/types/components/data-display/DayRuler/DayRuler.metrics.d.ts.map +1 -1
  160. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +13 -14
  161. package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -1
  162. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +20 -23
  163. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
  164. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +13 -3
  165. package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -1
  166. package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts +27 -0
  167. package/dist/types/components/data-display/DayRuler/day-ruler-model.d.ts.map +1 -1
  168. package/dist/types/components/data-display/DayRuler/useTextFits.d.ts +11 -9
  169. package/dist/types/components/data-display/DayRuler/useTextFits.d.ts.map +1 -1
  170. package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts +8 -0
  171. package/dist/types/components/data-display/ScheduleGrid/schedule-tones.d.ts.map +1 -1
  172. package/dist/user-avatar.js +3 -3
  173. package/package.json +1 -1
  174. package/src/components/data-display/AlertDialog/AlertDialog.md +25 -1
  175. package/src/components/data-display/AlertDialog/AlertDialog.parts.tsx +28 -0
  176. package/src/components/data-display/AlertDialog/AlertDialog.tsx +34 -5
  177. package/src/components/data-display/DayRuler/DayRuler.footer.styles.ts +54 -0
  178. package/src/components/data-display/DayRuler/DayRuler.footer.tsx +123 -0
  179. package/src/components/data-display/DayRuler/DayRuler.md +37 -13
  180. package/src/components/data-display/DayRuler/DayRuler.metrics.ts +15 -5
  181. package/src/components/data-display/DayRuler/DayRuler.parts.tsx +86 -155
  182. package/src/components/data-display/DayRuler/DayRuler.styles.ts +89 -83
  183. package/src/components/data-display/DayRuler/DayRuler.tsx +3 -2
  184. package/src/components/data-display/DayRuler/DayRuler.types.ts +13 -3
  185. package/src/components/data-display/DayRuler/day-ruler-model.ts +45 -0
  186. package/src/components/data-display/DayRuler/useTextFits.ts +68 -25
  187. package/src/components/data-display/ScheduleGrid/schedule-tones.ts +13 -0
  188. package/src/components/feedback/ConfirmAction/ConfirmAction.md +10 -0
  189. package/dist/chunk-6HPVCDVU.js.map +0 -1
  190. package/dist/chunk-7ZQ3KQ7J.js.map +0 -1
  191. package/dist/chunk-COK65GX2.js.map +0 -1
  192. package/dist/chunk-KPUUHAK6.js.map +0 -1
  193. package/dist/chunk-LE5JYNR7.js.map +0 -1
  194. package/dist/chunk-OJZLFFG4.js.map +0 -1
  195. package/dist/chunk-YMYJO2CZ.js +0 -32
  196. package/dist/chunk-YMYJO2CZ.js.map +0 -1
  197. package/dist/chunk-ZYZPSBNQ.js.map +0 -1
  198. /package/dist/{chunk-LDCZPZPD.js.map → chunk-24HHUCWB.js.map} +0 -0
  199. /package/dist/{chunk-FAUNQ3FS.js.map → chunk-2M3W6ACW.js.map} +0 -0
  200. /package/dist/{chunk-ALOEOGQV.js.map → chunk-3TZUZXY5.js.map} +0 -0
  201. /package/dist/{chunk-F5H3WDG7.js.map → chunk-4E2RQOSQ.js.map} +0 -0
  202. /package/dist/{chunk-JIEVKHOH.js.map → chunk-4J62V5OE.js.map} +0 -0
  203. /package/dist/{chunk-CZVAVX5L.js.map → chunk-6ATXOJVQ.js.map} +0 -0
  204. /package/dist/{chunk-E2UOEI7N.js.map → chunk-6LGKJVOA.js.map} +0 -0
  205. /package/dist/{chunk-XBWW3QSI.js.map → chunk-7WE432RQ.js.map} +0 -0
  206. /package/dist/{chunk-5357QUVE.js.map → chunk-AMLHEKSV.js.map} +0 -0
  207. /package/dist/{chunk-HSVSU7I2.js.map → chunk-ASEHJIIV.js.map} +0 -0
  208. /package/dist/{chunk-FYUNROLW.js.map → chunk-BZYLTGOE.js.map} +0 -0
  209. /package/dist/{chunk-TZ44F6W7.js.map → chunk-CGS2LQE5.js.map} +0 -0
  210. /package/dist/{chunk-6HXNFNOB.js.map → chunk-EE6DJPB7.js.map} +0 -0
  211. /package/dist/{chunk-OM6ZT64U.js.map → chunk-F2UP5ZF4.js.map} +0 -0
  212. /package/dist/{chunk-P53ANKZV.js.map → chunk-F7LBTMCA.js.map} +0 -0
  213. /package/dist/{chunk-IWSTMVCA.js.map → chunk-FKS2PNJF.js.map} +0 -0
  214. /package/dist/{chunk-3WYEENUH.js.map → chunk-FPNVOB52.js.map} +0 -0
  215. /package/dist/{chunk-E73C73UD.js.map → chunk-FYSS2PYA.js.map} +0 -0
  216. /package/dist/{chunk-N557OEZR.js.map → chunk-G6NMSBSQ.js.map} +0 -0
  217. /package/dist/{chunk-A5OERY43.js.map → chunk-GARM5SX6.js.map} +0 -0
  218. /package/dist/{chunk-WJMSND5Q.js.map → chunk-GXGHEOWC.js.map} +0 -0
  219. /package/dist/{chunk-U2SAW6DH.js.map → chunk-GY53SDVL.js.map} +0 -0
  220. /package/dist/{chunk-MFX4ASX5.js.map → chunk-HWZETMO4.js.map} +0 -0
  221. /package/dist/{chunk-MM3QESLI.js.map → chunk-ILJ3FXIC.js.map} +0 -0
  222. /package/dist/{chunk-K6VEN5VN.js.map → chunk-K3PMMW23.js.map} +0 -0
  223. /package/dist/{chunk-T5RFH2T5.js.map → chunk-KOGJBAFI.js.map} +0 -0
  224. /package/dist/{chunk-MAYAJXO6.js.map → chunk-KXDLLS62.js.map} +0 -0
  225. /package/dist/{chunk-DBI6AMNY.js.map → chunk-LKWXU6NH.js.map} +0 -0
  226. /package/dist/{chunk-6DO672AG.js.map → chunk-N5PVD4J5.js.map} +0 -0
  227. /package/dist/{chunk-R52N5UCS.js.map → chunk-SB2SEGR6.js.map} +0 -0
  228. /package/dist/{chunk-Z2WZDVGG.js.map → chunk-SI5SKX52.js.map} +0 -0
  229. /package/dist/{chunk-RYJ6XGFA.js.map → chunk-SJAOQGQI.js.map} +0 -0
  230. /package/dist/{chunk-D7R6SRJB.js.map → chunk-SKQPUAMK.js.map} +0 -0
  231. /package/dist/{chunk-AMIUZRDQ.js.map → chunk-SNWCT6JN.js.map} +0 -0
  232. /package/dist/{chunk-7W5X3KQ2.js.map → chunk-SW7JCF4Z.js.map} +0 -0
  233. /package/dist/{chunk-BNBWUXT3.js.map → chunk-TE6HAWDM.js.map} +0 -0
  234. /package/dist/{chunk-JG733RMP.js.map → chunk-TZC6KIK2.js.map} +0 -0
  235. /package/dist/{chunk-4QGKR65P.js.map → chunk-U4Z6GZDW.js.map} +0 -0
  236. /package/dist/{chunk-XFZDO2KB.js.map → chunk-UIIHUWOV.js.map} +0 -0
  237. /package/dist/{chunk-L4V7FZJI.js.map → chunk-UKUGSU3Y.js.map} +0 -0
  238. /package/dist/{chunk-VJIJCLUX.js.map → chunk-UOKXYV3U.js.map} +0 -0
  239. /package/dist/{chunk-K7IDOTSU.js.map → chunk-VNMD6BA4.js.map} +0 -0
  240. /package/dist/{chunk-DTZOP4ZR.js.map → chunk-XCUHGPPZ.js.map} +0 -0
  241. /package/dist/{chunk-3YFDGFEK.js.map → chunk-Y7BOP7VZ.js.map} +0 -0
  242. /package/dist/{chunk-XNAI7QGU.js.map → chunk-ZM6FJCWS.js.map} +0 -0
  243. /package/dist/{chunk-FC7UCFFA.js.map → chunk-ZPWPA6FR.js.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  DAY_RULER_METRICS
3
- } from "./chunk-7ZQ3KQ7J.js";
3
+ } from "./chunk-273OLFJD.js";
4
4
  import {
5
5
  actualBarColor,
6
6
  blockToneStyles,
7
7
  breakHatch,
8
- signalInk
9
- } from "./chunk-4HK4FVMV.js";
8
+ dashedLabelGround
9
+ } from "./chunk-3UAHDLKH.js";
10
10
  import {
11
11
  FIELD_BORDER_WIDTH
12
12
  } from "./chunk-O6MJWHU5.js";
@@ -17,24 +17,23 @@ import {
17
17
 
18
18
  // src/components/data-display/DayRuler/DayRuler.styles.ts
19
19
  import { alpha } from "@mui/material/styles/index.js";
20
- function rootSx(hasActions) {
21
- return (theme) => ({
22
- containerType: "inline-size",
23
- minWidth: 0,
24
- width: "100%",
25
- userSelect: "none",
26
- "--dr-actions": hasActions ? rem(theme, DAY_RULER_METRICS.sideColumn) : "0%"
27
- });
28
- }
20
+ var CONTAINER = "day-ruler";
21
+ var rootSx = {
22
+ containerType: "inline-size",
23
+ containerName: CONTAINER,
24
+ minWidth: 0,
25
+ width: "100%",
26
+ userSelect: "none"
27
+ };
29
28
  function compact(theme) {
30
- return `@container (width < ${rem(theme, DAY_RULER_METRICS.compactBelow)})`;
29
+ return `@container ${CONTAINER} (width < ${rem(theme, DAY_RULER_METRICS.compactBelow)})`;
31
30
  }
32
31
  function phone(theme) {
33
- return `@container (width < ${rem(theme, DAY_RULER_METRICS.phoneBelow)})`;
32
+ return `@container ${CONTAINER} (width < ${rem(theme, DAY_RULER_METRICS.phoneBelow)})`;
34
33
  }
35
34
  var lineSx = (theme) => ({
36
35
  display: "grid",
37
- gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,
36
+ gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr)`,
38
37
  columnGap: rem(theme, DAY_RULER_METRICS.gap),
39
38
  alignItems: "center",
40
39
  // Stacked: across the full width, like the tracks; the label above the counts.
@@ -99,29 +98,33 @@ var groupTitleSx = {
99
98
  };
100
99
  var rowSx = (theme) => ({
101
100
  display: "grid",
102
- gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,
103
- gridTemplateAreas: '"who track actions"',
101
+ gridTemplateColumns: `${rem(theme, DAY_RULER_METRICS.sideColumn)} minmax(0, 1fr)`,
102
+ gridTemplateRows: "auto auto",
103
+ gridTemplateAreas: '"who track" "actions track"',
104
104
  columnGap: rem(theme, DAY_RULER_METRICS.gap),
105
105
  alignItems: "center",
106
106
  py: rem(theme, DAY_RULER_METRICS.rowPaddingY),
107
107
  borderBottom: `1px solid ${theme.palette.divider}`,
108
108
  [compact(theme)]: {
109
109
  gridTemplateColumns: "minmax(0, 1fr) auto",
110
+ gridTemplateRows: "none",
110
111
  gridTemplateAreas: '"who actions" "track track"',
111
112
  rowGap: theme.spacing(1),
112
113
  py: theme.spacing(1.5)
113
114
  }
114
115
  });
115
116
  var whoSx = { gridArea: "who", minWidth: 0 };
116
- var actionsSx = {
117
+ var actionsSx = (theme) => ({
117
118
  gridArea: "actions",
118
119
  display: "flex",
119
120
  gap: 1,
120
121
  alignItems: "center",
121
- justifyContent: "flex-end",
122
+ justifyContent: "flex-start",
122
123
  flexWrap: "wrap",
123
- minWidth: 0
124
- };
124
+ minWidth: 0,
125
+ pt: rem(theme, DAY_RULER_METRICS.actionsTop),
126
+ [compact(theme)]: { justifyContent: "flex-end", pt: 0 }
127
+ });
125
128
  function breakSx(span) {
126
129
  return (theme) => ({
127
130
  position: "absolute",
@@ -162,6 +165,15 @@ function trackSx(opts) {
162
165
  }
163
166
  });
164
167
  }
168
+ function hitBand(theme, span, bounds) {
169
+ const border = `${FIELD_BORDER_WIDTH}px`;
170
+ const half = `max(calc(50% + ${border}), ${rem(theme, DAY_RULER_METRICS.block.hitArea / 2)})`;
171
+ if (!(span.share > 0)) return { left: `calc(50% - ${half})`, width: `calc(2 * ${half})` };
172
+ const rel = (pct) => `calc(${(pct - span.at) / span.share} * (100% + 2 * ${border}) - ${border})`;
173
+ const left = `max(${rel(bounds.lo)}, calc(50% - ${half}))`;
174
+ const right = `min(${rel(bounds.hi)}, calc(50% + ${half}))`;
175
+ return { left, width: `calc(${right} - ${left})` };
176
+ }
165
177
  function blockSx(tone, span, opts) {
166
178
  return (theme) => ({
167
179
  ...blockToneStyles(theme, tone, true),
@@ -185,25 +197,35 @@ function blockSx(tone, span, opts) {
185
197
  cursor: opts.movable ? "grab" : "pointer",
186
198
  boxShadow: opts.selected ? `0 0 0 ${rem(theme, DAY_RULER_METRICS.ring)} ${theme.palette.primary.main}` : "none",
187
199
  "&:focus-visible": { outline: `${rem(theme, DAY_RULER_METRICS.ring)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, DAY_RULER_METRICS.ringOffset) },
188
- "& [data-dr-text]": { position: "relative", overflow: "hidden", textOverflow: "ellipsis", minWidth: 0 },
200
+ // The label sits above the "agora" line (drawn under the blocks): on a fill
201
+ // that is not opaque it takes an opaque ground, so the line never cuts it.
202
+ "& [data-dr-text]": {
203
+ position: "relative",
204
+ overflow: "hidden",
205
+ textOverflow: "ellipsis",
206
+ minWidth: 0,
207
+ backgroundColor: dashedLabelGround(theme, tone)
208
+ },
189
209
  '& [data-dr-text="short"]': { display: "none" },
210
+ // By pixels, at every width: the full text, else the start, else nothing — never a cut text.
211
+ '&[data-fit="short"] [data-dr-text="full"]': { display: "none" },
212
+ '&[data-fit="short"] [data-dr-text="short"]': { display: "inline" },
213
+ '&[data-fit="none"] [data-dr-text]': { display: "none" },
190
214
  [compact(theme)]: {
191
215
  top: rem(theme, DAY_RULER_METRICS.block.compactTop),
192
216
  height: rem(theme, DAY_RULER_METRICS.block.compactHeight),
193
- // A 40px hit area around the 20px bar, the look unchanged: the text cuts
194
- // itself (its spans ellipsize), so the block need not clip.
217
+ // A 40px × 40px-or-wider hit area round the 20px bar, the look
218
+ // unchanged: the text never overflows (it fits or it is not shown), so
219
+ // the block need not clip.
195
220
  overflow: "visible",
196
221
  "&::after": {
197
222
  content: '""',
198
223
  position: "absolute",
199
- left: 0,
200
- right: 0,
201
224
  top: "50%",
202
225
  height: rem(theme, DAY_RULER_METRICS.block.hitArea),
203
- transform: "translateY(-50%)"
204
- },
205
- '&[data-narrow] [data-dr-text="full"]': { display: "none" },
206
- '&[data-narrow] [data-dr-text="short"]': { display: "inline" }
226
+ transform: "translateY(-50%)",
227
+ ...hitBand(theme, span, opts.hit)
228
+ }
207
229
  }
208
230
  });
209
231
  }
@@ -214,7 +236,11 @@ function handleSx(side) {
214
236
  bottom: 0,
215
237
  [side === "l" ? "left" : "right"]: 0,
216
238
  width: rem(theme, DAY_RULER_METRICS.handle),
217
- cursor: "ew-resize"
239
+ cursor: "ew-resize",
240
+ // Above the block's hit band (its `::after`, painted last): on a narrow
241
+ // ruler the band covers the whole bar, and a press on an end must still
242
+ // resize rather than move (FUT-3831).
243
+ zIndex: 1
218
244
  });
219
245
  }
220
246
  function actualSx(span) {
@@ -266,39 +292,6 @@ var skeletonNameSx = (theme) => ({
266
292
  borderRadius: rem(theme, DAY_RULER_METRICS.skeletonNameRadius),
267
293
  backgroundColor: theme.palette.action.hover
268
294
  });
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
- });
302
295
 
303
296
  export {
304
297
  rootSx,
@@ -320,10 +313,6 @@ export {
320
313
  actualLabelSx,
321
314
  nowSx,
322
315
  skeletonTrackSx,
323
- skeletonNameSx,
324
- footerInk,
325
- footerCellSx,
326
- footerNoteSx,
327
- trendSx
316
+ skeletonNameSx
328
317
  };
329
- //# sourceMappingURL=chunk-OJZLFFG4.js.map
318
+ //# sourceMappingURL=chunk-5AZEDQXX.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, dashedLabelGround } from '../ScheduleGrid/schedule-tones';\nimport type { ScheduleBlockTone } from '../ScheduleGrid/ScheduleGrid.types';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\n\n/** The container the ruler's layout answers to — named, so no other container between the root and a row can stand in for it. */\nconst CONTAINER = 'day-ruler';\n\n/** The ruler's root: the named container every layout query reads. */\nexport const rootSx: SxProps<Theme> = {\n containerType: 'inline-size',\n containerName: CONTAINER,\n minWidth: 0,\n width: '100%',\n userSelect: 'none',\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 ${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 ${CONTAINER} (width < ${rem(theme, M.phoneBelow)})`;\n}\n\n/**\n * Name · track: the coverage row and the axis row share these columns with\n * every row on a computer, so the hours line up down the whole ruler.\n */\nexport const lineSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr)`,\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 (its actions under it) · track, the\n * track the same width on every row whether or not the row has actions. A\n * narrow ruler (a phone): name and actions on top, the track under them, full\n * width.\n */\nexport const rowSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr)`,\n gridTemplateRows: 'auto auto',\n gridTemplateAreas: '\"who track\" \"actions track\"',\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 gridTemplateRows: 'none',\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> = (theme: Theme) => ({\n gridArea: 'actions',\n display: 'flex',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n minWidth: 0,\n pt: rem(theme, M.actionsTop),\n [compact(theme)]: { justifyContent: 'flex-end', pt: 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\n/** How far a bar's hit band may reach, in % of the track: the midpoints to its neighbours, or the track's ends. */\nexport interface HitBounds {\n lo: number;\n hi: number;\n}\n\n/**\n * The hit band round a bar on a narrow ruler (FUT-3831): `hitArea` tall and\n * at least `hitArea` wide, centred on the bar, then cut to `bounds` so it never\n * reaches past the midpoint to a neighbour. Positioned in % of the bar's\n * PADDING box (the pseudo-element's containing block, the bar less its\n * border), so a point at `k` bar-widths from the bar's outer left edge is\n * `k × (100% + 2 border) − border`; the px floor is the layout's to resolve.\n */\nfunction hitBand(theme: Theme, span: Span, bounds: HitBounds): CSSObject {\n // Every tone's border is the 1px hairline (`blockToneStyles`), the field border's width.\n const border = `${FIELD_BORDER_WIDTH}px`;\n const half = `max(calc(50% + ${border}), ${rem(theme, M.block.hitArea / 2)})`;\n if (!(span.share > 0)) return { left: `calc(50% - ${half})`, width: `calc(2 * ${half})` };\n const rel = (pct: number): string => `calc(${(pct - span.at) / span.share} * (100% + 2 * ${border}) - ${border})`;\n const left = `max(${rel(bounds.lo)}, calc(50% - ${half}))`;\n const right = `min(${rel(bounds.hi)}, calc(50% + ${half}))`;\n return { left, width: `calc(${right} - ${left})` };\n}\n\nexport function blockSx(\n tone: ScheduleBlockTone,\n span: Span,\n opts: { selected: boolean; movable: boolean; hit: HitBounds },\n): 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 // The label sits above the \"agora\" line (drawn under the blocks): on a fill\n // that is not opaque it takes an opaque ground, so the line never cuts it.\n '& [data-dr-text]': {\n position: 'relative',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n minWidth: 0,\n backgroundColor: dashedLabelGround(theme, tone),\n },\n '& [data-dr-text=\"short\"]': { display: 'none' },\n // By pixels, at every width: the full text, else the start, else nothing — never a cut text.\n '&[data-fit=\"short\"] [data-dr-text=\"full\"]': { display: 'none' },\n '&[data-fit=\"short\"] [data-dr-text=\"short\"]': { display: 'inline' },\n '&[data-fit=\"none\"] [data-dr-text]': { display: 'none' },\n [compact(theme)]: {\n top: rem(theme, M.block.compactTop),\n height: rem(theme, M.block.compactHeight),\n // A 40px × 40px-or-wider hit area round the 20px bar, the look\n // unchanged: the text never overflows (it fits or it is not shown), so\n // the block need not clip.\n overflow: 'visible',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n top: '50%',\n height: rem(theme, M.block.hitArea),\n transform: 'translateY(-50%)',\n ...hitBand(theme, span, opts.hit),\n },\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 // Above the block's hit band (its `::after`, painted last): on a narrow\n // ruler the band covers the whole bar, and a press on an end must still\n // resize rather than move (FUT-3831).\n zIndex: 1,\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\n/**\n * \"Agora\": drawn UNDER the blocks (before them in the track), so it never\n * crosses a block's label — \"07:30–1|3:00\" at 1280 (FUT-3831). It still shows\n * above and below each bar, where it overhangs the track, and through a\n * block's fill where that fill is not opaque — never through its text.\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"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildChartContext
3
- } from "./chunk-JG733RMP.js";
3
+ } from "./chunk-TZC6KIK2.js";
4
4
  import {
5
5
  ChartLegendContent,
6
6
  ChartTooltipContent
@@ -318,4 +318,4 @@ function renderChartByType(props, theme) {
318
318
  export {
319
319
  renderChartByType
320
320
  };
321
- //# sourceMappingURL=chunk-CZVAVX5L.js.map
321
+ //# sourceMappingURL=chunk-6ATXOJVQ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-DQ22UKMZ.js";
4
4
  import {
5
5
  Avatar
6
- } from "./chunk-JIEVKHOH.js";
6
+ } from "./chunk-4J62V5OE.js";
7
7
  import {
8
8
  Card
9
9
  } from "./chunk-4XBAEKQQ.js";
@@ -80,4 +80,4 @@ export {
80
80
  UserAvatar,
81
81
  UserMenu
82
82
  };
83
- //# sourceMappingURL=chunk-E2UOEI7N.js.map
83
+ //# sourceMappingURL=chunk-6LGKJVOA.js.map
@@ -5,6 +5,10 @@ import {
5
5
  import {
6
6
  filterRows
7
7
  } from "./chunk-YGQX7BNI.js";
8
+ import {
9
+ serverDerived,
10
+ useServerQuery
11
+ } from "./chunk-IMLIIW77.js";
8
12
  import {
9
13
  useSelection
10
14
  } from "./chunk-LLZWB32X.js";
@@ -16,20 +20,16 @@ import {
16
20
  computeActiveFilterCount,
17
21
  defaultSortFields
18
22
  } from "./chunk-UKNMPGEM.js";
19
- import {
20
- serverDerived,
21
- useServerQuery
22
- } from "./chunk-IMLIIW77.js";
23
- import {
24
- useClearFilters,
25
- useStateWriters
26
- } from "./chunk-OOLES6RR.js";
27
23
  import {
28
24
  emptyViewState
29
25
  } from "./chunk-HLYYB4O5.js";
30
26
  import {
31
27
  useDataViewsCopy
32
28
  } from "./chunk-KHG57NAE.js";
29
+ import {
30
+ useClearFilters,
31
+ useStateWriters
32
+ } from "./chunk-OOLES6RR.js";
33
33
 
34
34
  // src/components/data-display/DataViews/use-data-views-state.ts
35
35
  import { useEffect, useMemo, useRef, useState } from "react";
@@ -178,4 +178,4 @@ function useDataViewsState({
178
178
  export {
179
179
  useDataViewsState
180
180
  };
181
- //# sourceMappingURL=chunk-XBWW3QSI.js.map
181
+ //# sourceMappingURL=chunk-7WE432RQ.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  renderChartByType
3
- } from "./chunk-CZVAVX5L.js";
4
- import {
5
- ChartContainer
6
- } from "./chunk-RIRTW5EU.js";
3
+ } from "./chunk-6ATXOJVQ.js";
7
4
  import {
8
5
  getSizeStyles,
9
6
  getVariantStyles,
10
7
  plotHeightPx
11
8
  } from "./chunk-TCWISGSS.js";
9
+ import {
10
+ ChartContainer
11
+ } from "./chunk-RIRTW5EU.js";
12
12
  import {
13
13
  muiColor
14
14
  } from "./chunk-7ZPUN7TV.js";
@@ -111,4 +111,4 @@ var Chart = (props) => {
111
111
  export {
112
112
  Chart
113
113
  };
114
- //# sourceMappingURL=chunk-5357QUVE.js.map
114
+ //# sourceMappingURL=chunk-AMLHEKSV.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YNVTUQ5B.js";
4
4
  import {
5
5
  DataViewsGrid
6
- } from "./chunk-MFX4ASX5.js";
6
+ } from "./chunk-HWZETMO4.js";
7
7
  import {
8
8
  viewStateKey
9
9
  } from "./chunk-ZOLAYP2D.js";
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  ViewDialogs,
16
16
  ViewMutationErrorAlert
17
- } from "./chunk-WJMSND5Q.js";
17
+ } from "./chunk-GXGHEOWC.js";
18
18
  import {
19
19
  useSavedViewsController
20
20
  } from "./chunk-B2JSUFDX.js";
@@ -166,4 +166,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
166
166
  export {
167
167
  DataViewsTableBase
168
168
  };
169
- //# sourceMappingURL=chunk-HSVSU7I2.js.map
169
+ //# sourceMappingURL=chunk-ASEHJIIV.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-AJ6KFHEE.js";
4
4
  import {
5
5
  PanelRangeField
6
- } from "./chunk-3WYEENUH.js";
6
+ } from "./chunk-FPNVOB52.js";
7
7
  import {
8
8
  useDataViewsCopy
9
9
  } from "./chunk-KHG57NAE.js";
@@ -157,4 +157,4 @@ export {
157
157
  GridFilterPanel,
158
158
  FilterDialog
159
159
  };
160
- //# sourceMappingURL=chunk-FYUNROLW.js.map
160
+ //# sourceMappingURL=chunk-BZYLTGOE.js.map
@@ -4,7 +4,7 @@ import {
4
4
  nameButtonSx,
5
5
  nameLineSx,
6
6
  nameTextSx
7
- } from "./chunk-A5OERY43.js";
7
+ } from "./chunk-GARM5SX6.js";
8
8
 
9
9
  // src/components/data-display/ScheduleGrid/ScheduleNameCell.tsx
10
10
  import Box from "@mui/material/Box/index.js";
@@ -25,4 +25,4 @@ function ScheduleNameCell({ row, sx, role, sizes }) {
25
25
  export {
26
26
  ScheduleNameCell
27
27
  };
28
- //# sourceMappingURL=chunk-TZ44F6W7.js.map
28
+ //# sourceMappingURL=chunk-CGS2LQE5.js.map
@@ -1,32 +1,34 @@
1
1
  import {
2
2
  handleBlockKey,
3
3
  keyCreateSpan
4
- } from "./chunk-4QGKR65P.js";
4
+ } from "./chunk-U4Z6GZDW.js";
5
+ import {
6
+ GroupFooter
7
+ } from "./chunk-MPVH2GM5.js";
5
8
  import {
6
9
  Axis,
7
10
  Coverage,
8
- GroupFooter,
9
11
  RulerRow
10
- } from "./chunk-6HPVCDVU.js";
12
+ } from "./chunk-FGZIEZEP.js";
11
13
  import {
12
14
  groupTitleSx,
13
15
  rootSx,
14
16
  rowSx,
15
17
  skeletonNameSx,
16
18
  skeletonTrackSx
17
- } from "./chunk-OJZLFFG4.js";
19
+ } from "./chunk-5AZEDQXX.js";
18
20
  import {
19
21
  EN_US_DAY_RULER_LABELS
20
22
  } from "./chunk-F2ZUUEXC.js";
21
23
  import {
22
24
  useRulerDrag
23
- } from "./chunk-MAYAJXO6.js";
25
+ } from "./chunk-KXDLLS62.js";
24
26
  import {
25
27
  DAY_RULER_METRICS
26
- } from "./chunk-7ZQ3KQ7J.js";
28
+ } from "./chunk-273OLFJD.js";
27
29
  import {
28
30
  SR_ONLY_SX
29
- } from "./chunk-RYJ6XGFA.js";
31
+ } from "./chunk-SJAOQGQI.js";
30
32
  import {
31
33
  useAnnouncer
32
34
  } from "./chunk-35HMJQLO.js";
@@ -106,7 +108,7 @@ function DayRuler(props) {
106
108
  return /* @__PURE__ */ jsxs(
107
109
  Box,
108
110
  {
109
- sx: rootSx(props.rows.some((row) => row.actions !== void 0 && row.actions !== null)),
111
+ sx: rootSx,
110
112
  "data-testid": testId,
111
113
  role: "region",
112
114
  "aria-label": props["aria-label"],
@@ -125,4 +127,4 @@ function DayRuler(props) {
125
127
  export {
126
128
  DayRuler
127
129
  };
128
- //# sourceMappingURL=chunk-KPUUHAK6.js.map
130
+ //# sourceMappingURL=chunk-CWXX5JR3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport type React from 'react';\n\nimport { resolveLabels } from '../../../utils/resolve-labels';\nimport { SR_ONLY_SX } from '../ScheduleGrid/ScheduleGrid.styles';\nimport { useAnnouncer } from '../ScheduleGrid/useAnnouncer';\nimport { handleBlockKey, keyCreateSpan, type RulerAbilities, type RulerScale } from './DayRuler.keyboard';\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\nimport { GroupFooter } from './DayRuler.footer';\nimport { Axis, Coverage, RulerRow, type RowContext } from './DayRuler.parts';\nimport { groupTitleSx, rootSx, rowSx, skeletonNameSx, skeletonTrackSx } from './DayRuler.styles';\nimport type { DayRulerProps, DayRulerRow } from './DayRuler.types';\nimport { useRulerDrag } from './useRulerDrag';\n\n/** The rows, grouped under a heading each time `row.group` changes. */\nfunction grouped(rows: readonly DayRulerRow[]): { title?: string; rows: DayRulerRow[] }[] {\n const out: { title?: string; rows: DayRulerRow[] }[] = [];\n for (const row of rows) {\n const last = out[out.length - 1];\n if (last && last.title === row.group) last.rows.push(row);\n else out.push({ title: row.group, rows: [row] });\n }\n return out;\n}\n\nfunction scaleOf(props: DayRulerProps): RulerScale {\n return {\n from: props.from ?? 6,\n to: props.to ?? 26,\n snap: (props.snapMinutes ?? 15) / 60,\n createHours: props.createHours ?? 4,\n tickHours: props.tickHours ?? 4,\n };\n}\n\nfunction abilitiesOf(props: DayRulerProps): RulerAbilities {\n const open = !props.readOnly && !props.loading;\n return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };\n}\n\n/** A group's lines under its rows, when the host gives any (`groupFooter`). */\nfunction FooterOf({ props, group, ctx }: { props: DayRulerProps; group: string | undefined; ctx: RowContext }): React.JSX.Element | null {\n const rows = props.groupFooter?.(group);\n if (!rows || rows.length === 0) return null;\n const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;\n return <GroupFooter rows={rows} scale={ctx.scale} testId={ctx.testId} marked={marked} />;\n}\n\n/** The groups and their rows — or the skeleton, the host's error, or the host's empty state. */\nfunction RulerBody({ props, ctx }: { props: DayRulerProps; ctx: RowContext }): React.JSX.Element {\n if (props.error) return <>{props.error}</>;\n if (props.loading) {\n return (\n <>\n {Array.from({ length: M.skeletonRows }, (_, index) => (\n <Box key={index} sx={rowSx} aria-hidden data-testid={`${ctx.testId}-loading`}>\n <Box sx={skeletonNameSx} />\n <Box sx={skeletonTrackSx} />\n </Box>\n ))}\n </>\n );\n }\n if (props.rows.length === 0) return <>{props.empty ?? null}</>;\n return (\n <>\n {grouped(props.rows).map((group, index) => (\n <Box key={`${index}-${group.title ?? ''}`} role=\"list\" aria-label={group.title}>\n {group.title ? (\n <Box component=\"p\" sx={groupTitleSx} aria-hidden>\n {group.title}\n </Box>\n ) : null}\n {group.rows.map((row) => (\n <RulerRow key={row.id} row={row} ctx={ctx} />\n ))}\n <FooterOf props={props} group={group.title} ctx={ctx} />\n </Box>\n ))}\n </>\n );\n}\n\n/**\n * One day as an hour ruler per row — who is on the escala when, and who is\n * really on shift (FUT-3825). Drag on an empty stretch to create (a click\n * alone is `createHours`), drag a block to move it, drag its ends to change\n * them; every hour snaps to `snapMinutes`. On a narrow ruler (a phone) each row\n * stacks and the blocks are tap-only: touch scrolls and never drags.\n *\n * The ruler reports gestures; hours, limits and refusals are the host's.\n */\nexport function DayRuler(props: DayRulerProps): React.JSX.Element {\n const { now, onCreate, onMove, onResize } = props;\n const testId = props.dataTestId ?? 'day-ruler';\n const labels = resolveLabels(EN_US_DAY_RULER_LABELS, props.labels);\n const scale = scaleOf(props);\n const can = abilitiesOf(props);\n const dragApi = useRulerDrag(scale, { onCreate, onMove, onResize });\n const { text: announcement, say } = useAnnouncer();\n\n const ctx: RowContext = {\n scale,\n now,\n can,\n drag: dragApi.drag,\n dragApi,\n onBlockClick: props.onBlockClick,\n onKeyCreate: (row) => {\n const [start, end] = keyCreateSpan(scale, now, props.createStart?.(row.id));\n onCreate?.(row.id, start, end);\n },\n onBlockKey: (event, block) => handleBlockKey(event, block, { scale, can, onMove, onResize, labels, say }),\n createLabel: labels.createTrack,\n testId,\n };\n\n return (\n <Box\n sx={rootSx}\n data-testid={testId}\n role=\"region\"\n aria-label={props['aria-label']}\n aria-busy={props.loading || undefined}\n aria-description={props.loading ? labels.loading : undefined}\n >\n {props.coverage && props.coverage.length > 0 ? (\n <Coverage coverage={props.coverage} label={props.coverageLabel} scale={scale} testId={testId} />\n ) : null}\n <Axis scale={scale} testId={testId} />\n <RulerBody props={props} ctx={ctx} />\n <Box sx={SR_ONLY_SX} aria-live=\"polite\" role=\"status\" data-testid={`${testId}-live`}>\n {announcement}\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,10 +1,10 @@
1
- import {
2
- ColumnsTab
3
- } from "./chunk-WSAUWJFO.js";
4
1
  import {
5
2
  DisplayTab,
6
3
  SortTab
7
4
  } from "./chunk-YEGZIYVM.js";
5
+ import {
6
+ ColumnsTab
7
+ } from "./chunk-WSAUWJFO.js";
8
8
  import {
9
9
  ViewActions,
10
10
  ViewFooter,
@@ -265,4 +265,4 @@ function DataViewsDisplayPanel({
265
265
  export {
266
266
  DataViewsDisplayPanel
267
267
  };
268
- //# sourceMappingURL=chunk-6HXNFNOB.js.map
268
+ //# sourceMappingURL=chunk-EE6DJPB7.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-T7OIVPCO.js";
6
6
  import {
7
7
  MoreFilters
8
- } from "./chunk-F5H3WDG7.js";
8
+ } from "./chunk-4E2RQOSQ.js";
9
9
  import {
10
10
  PillControl
11
11
  } from "./chunk-AJ6KFHEE.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-KYUEO2IO.js";
18
18
  import {
19
19
  RangePill
20
- } from "./chunk-3WYEENUH.js";
20
+ } from "./chunk-FPNVOB52.js";
21
21
  import {
22
22
  CollapsedSearch,
23
23
  InlineKeyword
@@ -251,4 +251,4 @@ function FilterSlots({
251
251
  export {
252
252
  InlineFilterControls
253
253
  };
254
- //# sourceMappingURL=chunk-OM6ZT64U.js.map
254
+ //# sourceMappingURL=chunk-F2UP5ZF4.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SectionNavSheet
3
- } from "./chunk-DTZOP4ZR.js";
3
+ } from "./chunk-XCUHGPPZ.js";
4
4
  import {
5
5
  RaisedActionButton,
6
6
  raisedLift
7
- } from "./chunk-L4V7FZJI.js";
7
+ } from "./chunk-UKUGSU3Y.js";
8
8
  import {
9
9
  Box,
10
10
  CONTROL_RESET,
@@ -15,7 +15,7 @@ import {
15
15
  destinationControl,
16
16
  focusRing,
17
17
  useMounted
18
- } from "./chunk-LDCZPZPD.js";
18
+ } from "./chunk-24HHUCWB.js";
19
19
  import {
20
20
  barSlots,
21
21
  destinationState,
@@ -327,4 +327,4 @@ export {
327
327
  sectionNavSheetOffset,
328
328
  SectionNavBar
329
329
  };
330
- //# sourceMappingURL=chunk-P53ANKZV.js.map
330
+ //# sourceMappingURL=chunk-F7LBTMCA.js.map