@12-apps/ui 6.89.1 → 6.90.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 (288) hide show
  1. package/components-catalog.md +1 -1
  2. package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
  3. package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
  4. package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
  5. package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
  6. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
  7. package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +4 -3
  8. package/dist/_internal/components/data-display/Carousel/Carousel.js +6 -5
  9. package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +3 -2
  10. package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
  11. package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
  12. package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
  13. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  14. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  15. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +48 -23
  16. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +53 -28
  17. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +1 -1
  18. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +1 -1
  19. package/dist/_internal/components/data-display/DataViews/base-list-card.js +3 -3
  20. package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +5 -3
  21. package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +1 -1
  22. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +31 -6
  23. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +3 -3
  24. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +47 -22
  25. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +37 -12
  26. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +32 -7
  27. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +33 -8
  28. package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +1 -1
  29. package/dist/_internal/components/data-display/DataViews/data-views-preset-chips.js +10 -3
  30. package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +47 -0
  31. package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js.map +1 -0
  32. package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js +36 -0
  33. package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js.map +1 -0
  34. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +32 -6
  35. package/dist/_internal/components/data-display/DataViews/data-views-range-summary.js +12 -0
  36. package/dist/_internal/components/data-display/DataViews/data-views-range-summary.js.map +1 -0
  37. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +3 -3
  38. package/dist/_internal/components/data-display/DataViews/data-views-still-anchor.js +9 -0
  39. package/dist/_internal/components/data-display/DataViews/data-views-still-anchor.js.map +1 -0
  40. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +4 -4
  41. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +2 -2
  42. package/dist/_internal/components/data-display/DayRuler/DayRuler.js +3 -3
  43. package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +2 -2
  44. package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +3 -1
  45. package/dist/_internal/components/data-display/FleetMap/FleetBody.js +9 -8
  46. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -7
  47. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -1
  48. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js.map +1 -1
  49. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +9 -9
  50. package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +4 -3
  51. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +5 -4
  52. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +4 -3
  53. package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +3 -2
  54. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -6
  55. package/dist/_internal/components/data-display/index.js +38 -38
  56. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
  57. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +6 -6
  58. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +5 -5
  59. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +4 -4
  60. package/dist/_internal/components/feedback/index.js +7 -7
  61. package/dist/_internal/components/form/Calendar/Calendar.js +5 -5
  62. package/dist/_internal/components/form/Calendar/CalendarDay.js +1 -1
  63. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  64. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  65. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +4 -4
  66. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +3 -3
  67. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +10 -10
  68. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +2 -2
  69. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +3 -3
  70. package/dist/_internal/components/form/index.js +24 -24
  71. package/dist/_internal/components/index.js +66 -66
  72. package/dist/_internal/en-US.data-display.js +2 -1
  73. package/dist/_internal/pt-BR.data-display.js +2 -1
  74. package/dist/_internal/user-avatar/user-avatar.js +5 -5
  75. package/dist/charts.js +11 -11
  76. package/dist/{chunk-FJ3UZ4RC.js → chunk-2FKWKLSC.js} +5 -3
  77. package/dist/chunk-2FKWKLSC.js.map +1 -0
  78. package/dist/{chunk-BO6MT2S2.js → chunk-3HZKUN5J.js} +7 -6
  79. package/dist/chunk-3HZKUN5J.js.map +1 -0
  80. package/dist/{chunk-TYXFFNPM.js → chunk-3OTGREQG.js} +10 -10
  81. package/dist/{chunk-BEHT4IHH.js → chunk-3X2MA47R.js} +2 -2
  82. package/dist/{chunk-XHIBFBNP.js → chunk-3ZRK3BRN.js} +4 -2
  83. package/dist/chunk-3ZRK3BRN.js.map +1 -0
  84. package/dist/{chunk-X5OGIT2F.js → chunk-4L54KUZV.js} +22 -4
  85. package/dist/chunk-4L54KUZV.js.map +1 -0
  86. package/dist/{chunk-TRYR424I.js → chunk-6LOWZCH7.js} +15 -1
  87. package/dist/chunk-6LOWZCH7.js.map +1 -0
  88. package/dist/{chunk-6WHIJPEF.js → chunk-6PU5P7QT.js} +2 -2
  89. package/dist/chunk-7CUZTWKW.js +52 -0
  90. package/dist/chunk-7CUZTWKW.js.map +1 -0
  91. package/dist/{chunk-JIEVKHOH.js → chunk-7YJYIMWP.js} +7 -7
  92. package/dist/{chunk-YNZUYZ2O.js → chunk-A3DDEKLV.js} +2 -2
  93. package/dist/{chunk-KHREN7Y7.js → chunk-ACM3HHZY.js} +2 -2
  94. package/dist/{chunk-FEKWKWGK.js → chunk-ARGVUTTL.js} +15 -1
  95. package/dist/chunk-ARGVUTTL.js.map +1 -0
  96. package/dist/{chunk-DYHOBKPU.js → chunk-BLZDSCIZ.js} +6 -6
  97. package/dist/{chunk-E2UOEI7N.js → chunk-BV2LOTMC.js} +2 -2
  98. package/dist/{chunk-O63ZROSY.js → chunk-BZBLPXV7.js} +4 -4
  99. package/dist/{chunk-OKRITX4S.js → chunk-CJ6XXM4X.js} +4 -4
  100. package/dist/{chunk-LV6AD6XC.js → chunk-DBI6AMNY.js} +4 -4
  101. package/dist/{chunk-QRRWLLXW.js → chunk-DSBC6O46.js} +2 -2
  102. package/dist/{chunk-3YFDGFEK.js → chunk-DVX4HDNP.js} +2 -2
  103. package/dist/{chunk-CJUK32UH.js → chunk-EEO7M5GU.js} +2 -2
  104. package/dist/{chunk-7XSCEHGA.js → chunk-EOQ6EKTS.js} +7 -7
  105. package/dist/{chunk-5RSK5M6M.js → chunk-FI2CQOGC.js} +63 -126
  106. package/dist/chunk-FI2CQOGC.js.map +1 -0
  107. package/dist/{chunk-Q2ERGAQO.js → chunk-FYAW5GBF.js} +33 -6
  108. package/dist/chunk-FYAW5GBF.js.map +1 -0
  109. package/dist/{chunk-EOJSA2EK.js → chunk-G2PVUPE7.js} +26 -18
  110. package/dist/chunk-G2PVUPE7.js.map +1 -0
  111. package/dist/{chunk-AMLHEKSV.js → chunk-HI7JPDD6.js} +5 -5
  112. package/dist/{chunk-2H6SCVLD.js → chunk-HMEGQKNQ.js} +3 -3
  113. package/dist/chunk-J2AVWIMM.js +60 -0
  114. package/dist/chunk-J2AVWIMM.js.map +1 -0
  115. package/dist/{chunk-7QKIL5YF.js → chunk-J2GDA64N.js} +4 -4
  116. package/dist/{chunk-BAQ3ITZV.js → chunk-JFD742C3.js} +2 -2
  117. package/dist/{chunk-OBA75Y5O.js → chunk-JHWEL4NX.js} +61 -33
  118. package/dist/chunk-JHWEL4NX.js.map +1 -0
  119. package/dist/{chunk-HQCZT6TO.js → chunk-JVOEVTCZ.js} +5 -5
  120. package/dist/{chunk-WAO7UQRS.js → chunk-KANCE4MS.js} +3 -3
  121. package/dist/{chunk-XLU5WFSY.js → chunk-KRBPWTXW.js} +2 -2
  122. package/dist/{chunk-S6D7NOV7.js → chunk-L6JAALMX.js} +3 -3
  123. package/dist/{chunk-72HOUWAW.js → chunk-L6YTVXGN.js} +5 -3
  124. package/dist/{chunk-72HOUWAW.js.map → chunk-L6YTVXGN.js.map} +1 -1
  125. package/dist/chunk-LZNUBQ5I.js +181 -0
  126. package/dist/chunk-LZNUBQ5I.js.map +1 -0
  127. package/dist/{chunk-BECKKDYG.js → chunk-M2M4IDFU.js} +2 -2
  128. package/dist/{chunk-CSGBHYW6.js → chunk-M5Y42AZ4.js} +2 -2
  129. package/dist/chunk-MICX23P4.js +122 -0
  130. package/dist/chunk-MICX23P4.js.map +1 -0
  131. package/dist/{chunk-5CP5Z3YU.js → chunk-MPWA55CF.js} +4 -4
  132. package/dist/{chunk-5KK3I42O.js → chunk-NK6O4NE4.js} +13 -10
  133. package/dist/chunk-NK6O4NE4.js.map +1 -0
  134. package/dist/{chunk-RCTHCXS6.js → chunk-PJNIJIE6.js} +2 -2
  135. package/dist/{chunk-6ATXOJVQ.js → chunk-QADTI63U.js} +4 -4
  136. package/dist/{chunk-MW7P2C2C.js → chunk-QAEO52Z4.js} +2 -2
  137. package/dist/{chunk-5S5K73I6.js → chunk-QSOCOXVL.js} +3 -3
  138. package/dist/{chunk-NQCTANF3.js → chunk-QVDEGBME.js} +7 -7
  139. package/dist/{chunk-BQBEN44R.js → chunk-RDCIST7P.js} +2 -2
  140. package/dist/{chunk-HUXAIQC5.js → chunk-RZ3P4X2I.js} +2 -2
  141. package/dist/{chunk-WJMSND5Q.js → chunk-SCXVTNLE.js} +2 -2
  142. package/dist/{chunk-K6FCSB6T.js → chunk-SK2CTB3O.js} +6 -6
  143. package/dist/{chunk-QLJU7UUI.js → chunk-T7OIVPCO.js} +38 -3
  144. package/dist/chunk-T7OIVPCO.js.map +1 -0
  145. package/dist/{chunk-U2ILXZDG.js → chunk-TB5CRHTF.js} +2 -2
  146. package/dist/{chunk-SB2SEGR6.js → chunk-TIM4PXWN.js} +3 -3
  147. package/dist/{chunk-YDIC6LSP.js → chunk-VCQFDQM3.js} +27 -7
  148. package/dist/chunk-VCQFDQM3.js.map +1 -0
  149. package/dist/chunk-VIMMEADQ.js +164 -0
  150. package/dist/chunk-VIMMEADQ.js.map +1 -0
  151. package/dist/{chunk-6D5AMANO.js → chunk-WH3LUOCQ.js} +2 -2
  152. package/dist/{chunk-OWRQOYUE.js → chunk-WWR6APJR.js} +2 -2
  153. package/dist/{chunk-5BVAUUWL.js → chunk-X37NTEVS.js} +2 -2
  154. package/dist/{chunk-WW3F7DCX.js → chunk-Z2WZDVGG.js} +2 -2
  155. package/dist/{chunk-EXVCVXFX.js → chunk-ZH6NYB6Y.js} +3 -3
  156. package/dist/data-display/Alert.js +3 -3
  157. package/dist/data-display/Avatar.js +4 -4
  158. package/dist/data-display/CardKit.js +11 -11
  159. package/dist/data-display/Carousel.js +6 -5
  160. package/dist/data-display/Chart.js +11 -11
  161. package/dist/data-display/DataGrid.js +2 -2
  162. package/dist/data-display/DataViews.js +60 -35
  163. package/dist/data-display/DayRuler.js +3 -3
  164. package/dist/data-display/FleetMap.js +9 -9
  165. package/dist/data-display/MapPreview.js +7 -6
  166. package/dist/en-US.js +1 -1
  167. package/dist/feedback/NotificationStatusNotice.js +4 -4
  168. package/dist/feedback/SequenceResolver.js +6 -6
  169. package/dist/form/Calendar.js +5 -5
  170. package/dist/form/DateRangePicker.js +10 -10
  171. package/dist/locales.js +5 -5
  172. package/dist/pt-BR.js +1 -1
  173. package/dist/types/components/data-display/DataViews/data-views-bar-controls.d.ts +15 -1
  174. package/dist/types/components/data-display/DataViews/data-views-bar-controls.d.ts.map +1 -1
  175. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +35 -0
  176. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  177. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +7 -1
  178. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
  179. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  180. package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts +5 -3
  181. package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts.map +1 -1
  182. package/dist/types/components/data-display/DataViews/data-views-number-input.d.ts +10 -2
  183. package/dist/types/components/data-display/DataViews/data-views-number-input.d.ts.map +1 -1
  184. package/dist/types/components/data-display/DataViews/data-views-preset-chips.d.ts +10 -0
  185. package/dist/types/components/data-display/DataViews/data-views-preset-chips.d.ts.map +1 -1
  186. package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts +35 -0
  187. package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts.map +1 -0
  188. package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts +35 -0
  189. package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts.map +1 -0
  190. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts +2 -11
  191. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
  192. package/dist/types/components/data-display/DataViews/data-views-range-summary.d.ts +21 -0
  193. package/dist/types/components/data-display/DataViews/data-views-range-summary.d.ts.map +1 -0
  194. package/dist/types/components/data-display/DataViews/data-views-still-anchor.d.ts +45 -0
  195. package/dist/types/components/data-display/DataViews/data-views-still-anchor.d.ts.map +1 -0
  196. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +6 -1
  197. package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
  198. package/dist/types/components/data-display/LazyImage/LazyImage.hooks.d.ts +1 -1
  199. package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
  200. package/dist/types/components/form/Calendar/CalendarDay.d.ts +2 -0
  201. package/dist/types/components/form/Calendar/CalendarDay.d.ts.map +1 -1
  202. package/dist/types/components/form/Calendar/CalendarDayCell.d.ts +2 -0
  203. package/dist/types/components/form/Calendar/CalendarDayCell.d.ts.map +1 -1
  204. package/dist/types/components/form/Calendar/CalendarMonth.d.ts +5 -0
  205. package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
  206. package/dist/types/en-US.data-display.d.ts.map +1 -1
  207. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  208. package/dist/user-avatar.js +5 -5
  209. package/package.json +1 -1
  210. package/src/components/data-display/DataViews/RESPONSIVE-BEHAVIOUR.md +59 -0
  211. package/src/components/data-display/DataViews/data-views-bar-controls.tsx +56 -1
  212. package/src/components/data-display/DataViews/data-views-copy.ts +36 -0
  213. package/src/components/data-display/DataViews/data-views-day-input.tsx +9 -1
  214. package/src/components/data-display/DataViews/data-views-inline-bar.tsx +5 -3
  215. package/src/components/data-display/DataViews/data-views-more-fields.tsx +1 -0
  216. package/src/components/data-display/DataViews/data-views-more-filters.tsx +82 -29
  217. package/src/components/data-display/DataViews/data-views-number-input.tsx +19 -9
  218. package/src/components/data-display/DataViews/data-views-preset-chips.tsx +165 -16
  219. package/src/components/data-display/DataViews/data-views-range-bounds.tsx +223 -0
  220. package/src/components/data-display/DataViews/data-views-range-calendar.tsx +185 -0
  221. package/src/components/data-display/DataViews/data-views-range-pill.tsx +71 -154
  222. package/src/components/data-display/DataViews/data-views-range-summary.tsx +66 -0
  223. package/src/components/data-display/DataViews/data-views-still-anchor.ts +93 -0
  224. package/src/components/data-display/DayRuler/DayRuler.styles.ts +29 -16
  225. package/src/components/form/Calendar/Calendar.md +17 -2
  226. package/src/components/form/Calendar/Calendar.tsx +56 -3
  227. package/src/components/form/Calendar/CalendarDay.tsx +33 -3
  228. package/src/components/form/Calendar/CalendarDayCell.tsx +4 -0
  229. package/src/components/form/Calendar/CalendarMonth.tsx +27 -5
  230. package/src/en-US.data-display.ts +12 -0
  231. package/src/pt-BR.data-display.ts +12 -0
  232. package/dist/chunk-5KK3I42O.js.map +0 -1
  233. package/dist/chunk-5RSK5M6M.js.map +0 -1
  234. package/dist/chunk-7D7CJRL7.js +0 -78
  235. package/dist/chunk-7D7CJRL7.js.map +0 -1
  236. package/dist/chunk-BO6MT2S2.js.map +0 -1
  237. package/dist/chunk-EOJSA2EK.js.map +0 -1
  238. package/dist/chunk-FEKWKWGK.js.map +0 -1
  239. package/dist/chunk-FJ3UZ4RC.js.map +0 -1
  240. package/dist/chunk-OBA75Y5O.js.map +0 -1
  241. package/dist/chunk-Q2ERGAQO.js.map +0 -1
  242. package/dist/chunk-QLJU7UUI.js.map +0 -1
  243. package/dist/chunk-TRYR424I.js.map +0 -1
  244. package/dist/chunk-X5OGIT2F.js.map +0 -1
  245. package/dist/chunk-XHIBFBNP.js.map +0 -1
  246. package/dist/chunk-YDIC6LSP.js.map +0 -1
  247. /package/dist/{chunk-TYXFFNPM.js.map → chunk-3OTGREQG.js.map} +0 -0
  248. /package/dist/{chunk-BEHT4IHH.js.map → chunk-3X2MA47R.js.map} +0 -0
  249. /package/dist/{chunk-6WHIJPEF.js.map → chunk-6PU5P7QT.js.map} +0 -0
  250. /package/dist/{chunk-JIEVKHOH.js.map → chunk-7YJYIMWP.js.map} +0 -0
  251. /package/dist/{chunk-YNZUYZ2O.js.map → chunk-A3DDEKLV.js.map} +0 -0
  252. /package/dist/{chunk-KHREN7Y7.js.map → chunk-ACM3HHZY.js.map} +0 -0
  253. /package/dist/{chunk-DYHOBKPU.js.map → chunk-BLZDSCIZ.js.map} +0 -0
  254. /package/dist/{chunk-E2UOEI7N.js.map → chunk-BV2LOTMC.js.map} +0 -0
  255. /package/dist/{chunk-O63ZROSY.js.map → chunk-BZBLPXV7.js.map} +0 -0
  256. /package/dist/{chunk-OKRITX4S.js.map → chunk-CJ6XXM4X.js.map} +0 -0
  257. /package/dist/{chunk-LV6AD6XC.js.map → chunk-DBI6AMNY.js.map} +0 -0
  258. /package/dist/{chunk-QRRWLLXW.js.map → chunk-DSBC6O46.js.map} +0 -0
  259. /package/dist/{chunk-3YFDGFEK.js.map → chunk-DVX4HDNP.js.map} +0 -0
  260. /package/dist/{chunk-CJUK32UH.js.map → chunk-EEO7M5GU.js.map} +0 -0
  261. /package/dist/{chunk-7XSCEHGA.js.map → chunk-EOQ6EKTS.js.map} +0 -0
  262. /package/dist/{chunk-AMLHEKSV.js.map → chunk-HI7JPDD6.js.map} +0 -0
  263. /package/dist/{chunk-2H6SCVLD.js.map → chunk-HMEGQKNQ.js.map} +0 -0
  264. /package/dist/{chunk-7QKIL5YF.js.map → chunk-J2GDA64N.js.map} +0 -0
  265. /package/dist/{chunk-BAQ3ITZV.js.map → chunk-JFD742C3.js.map} +0 -0
  266. /package/dist/{chunk-HQCZT6TO.js.map → chunk-JVOEVTCZ.js.map} +0 -0
  267. /package/dist/{chunk-WAO7UQRS.js.map → chunk-KANCE4MS.js.map} +0 -0
  268. /package/dist/{chunk-XLU5WFSY.js.map → chunk-KRBPWTXW.js.map} +0 -0
  269. /package/dist/{chunk-S6D7NOV7.js.map → chunk-L6JAALMX.js.map} +0 -0
  270. /package/dist/{chunk-BECKKDYG.js.map → chunk-M2M4IDFU.js.map} +0 -0
  271. /package/dist/{chunk-CSGBHYW6.js.map → chunk-M5Y42AZ4.js.map} +0 -0
  272. /package/dist/{chunk-5CP5Z3YU.js.map → chunk-MPWA55CF.js.map} +0 -0
  273. /package/dist/{chunk-RCTHCXS6.js.map → chunk-PJNIJIE6.js.map} +0 -0
  274. /package/dist/{chunk-6ATXOJVQ.js.map → chunk-QADTI63U.js.map} +0 -0
  275. /package/dist/{chunk-MW7P2C2C.js.map → chunk-QAEO52Z4.js.map} +0 -0
  276. /package/dist/{chunk-5S5K73I6.js.map → chunk-QSOCOXVL.js.map} +0 -0
  277. /package/dist/{chunk-NQCTANF3.js.map → chunk-QVDEGBME.js.map} +0 -0
  278. /package/dist/{chunk-BQBEN44R.js.map → chunk-RDCIST7P.js.map} +0 -0
  279. /package/dist/{chunk-HUXAIQC5.js.map → chunk-RZ3P4X2I.js.map} +0 -0
  280. /package/dist/{chunk-WJMSND5Q.js.map → chunk-SCXVTNLE.js.map} +0 -0
  281. /package/dist/{chunk-K6FCSB6T.js.map → chunk-SK2CTB3O.js.map} +0 -0
  282. /package/dist/{chunk-U2ILXZDG.js.map → chunk-TB5CRHTF.js.map} +0 -0
  283. /package/dist/{chunk-SB2SEGR6.js.map → chunk-TIM4PXWN.js.map} +0 -0
  284. /package/dist/{chunk-6D5AMANO.js.map → chunk-WH3LUOCQ.js.map} +0 -0
  285. /package/dist/{chunk-OWRQOYUE.js.map → chunk-WWR6APJR.js.map} +0 -0
  286. /package/dist/{chunk-5BVAUUWL.js.map → chunk-X37NTEVS.js.map} +0 -0
  287. /package/dist/{chunk-WW3F7DCX.js.map → chunk-Z2WZDVGG.js.map} +0 -0
  288. /package/dist/{chunk-EXVCVXFX.js.map → chunk-ZH6NYB6Y.js.map} +0 -0
@@ -0,0 +1,181 @@
1
+ import {
2
+ isPresetActive,
3
+ resolvePreset
4
+ } from "./chunk-CBOB5AV6.js";
5
+ import {
6
+ useDataViewsCopy
7
+ } from "./chunk-KHG57NAE.js";
8
+ import {
9
+ EN_US_DATA_VIEWS_COPY
10
+ } from "./chunk-ARGVUTTL.js";
11
+ import {
12
+ sxRem
13
+ } from "./chunk-YKCAJ2TN.js";
14
+
15
+ // src/components/data-display/DataViews/data-views-preset-chips.tsx
16
+ import Box from "@mui/material/Box/index.js";
17
+ import TextField from "@mui/material/TextField/index.js";
18
+ import { useTheme } from "@mui/material/styles/index.js";
19
+ import { useLayoutEffect, useRef, useState } from "react";
20
+ import { jsx, jsxs } from "react/jsx-runtime";
21
+ function PresetChip({
22
+ preset,
23
+ active,
24
+ onSelect,
25
+ testId
26
+ }) {
27
+ return /* @__PURE__ */ jsx(
28
+ Box,
29
+ {
30
+ component: "button",
31
+ type: "button",
32
+ onClick: onSelect,
33
+ "aria-pressed": active,
34
+ "data-testid": testId,
35
+ sx: {
36
+ px: 1.25,
37
+ py: 0.5,
38
+ border: 1,
39
+ borderStyle: "solid",
40
+ borderColor: active ? "primary.main" : "divider",
41
+ borderRadius: 999,
42
+ bgcolor: active ? "action.selected" : "background.paper",
43
+ color: active ? "primary.main" : "text.secondary",
44
+ cursor: "pointer",
45
+ font: "inherit",
46
+ fontSize: sxRem(12),
47
+ fontWeight: 600,
48
+ whiteSpace: "nowrap",
49
+ overflow: "hidden",
50
+ textOverflow: "ellipsis",
51
+ minWidth: 0,
52
+ "&:hover": { borderColor: active ? "primary.main" : "text.primary" }
53
+ },
54
+ children: preset.label
55
+ }
56
+ );
57
+ }
58
+ var MEASURE_SX = {
59
+ display: "inline-block",
60
+ px: 1.25,
61
+ border: 1,
62
+ font: "inherit",
63
+ fontSize: sxRem(12),
64
+ fontWeight: 600,
65
+ whiteSpace: "nowrap"
66
+ };
67
+ function presetsFitOneLine(width, widest, count, gap) {
68
+ if (width === null) return true;
69
+ return widest * count + gap * (count - 1) <= width;
70
+ }
71
+ function useElementWidth(ref) {
72
+ const [width, setWidth] = useState(null);
73
+ useLayoutEffect(() => {
74
+ const element = ref.current;
75
+ if (element === null || typeof ResizeObserver === "undefined") return void 0;
76
+ const observer = new ResizeObserver((entries) => {
77
+ const measured = entries[0]?.contentRect.width;
78
+ if (measured !== void 0 && measured > 0) setWidth(measured);
79
+ });
80
+ observer.observe(element);
81
+ return () => observer.disconnect();
82
+ }, [ref]);
83
+ return width;
84
+ }
85
+ function useWidestLabel(ref, labels, width) {
86
+ const [widest, setWidest] = useState(0);
87
+ useLayoutEffect(() => {
88
+ const measure = () => {
89
+ const spans = ref.current?.querySelectorAll("[data-preset-measure]") ?? [];
90
+ setWidest(Math.max(0, ...Array.from(spans, (span) => span.offsetWidth + 1)));
91
+ };
92
+ measure();
93
+ let live = true;
94
+ void document.fonts?.ready.then(() => {
95
+ if (live) measure();
96
+ });
97
+ return () => {
98
+ live = false;
99
+ };
100
+ }, [ref, labels, width]);
101
+ return widest;
102
+ }
103
+ function PresetSelect({
104
+ presets,
105
+ value,
106
+ onChange,
107
+ testId
108
+ }) {
109
+ const copy = useDataViewsCopy().filters.presetSelect ?? EN_US_DATA_VIEWS_COPY.filters.presetSelect;
110
+ const active = presets.find((preset) => isPresetActive(preset, value))?.id ?? "";
111
+ return /* @__PURE__ */ jsxs(
112
+ TextField,
113
+ {
114
+ select: true,
115
+ size: "small",
116
+ fullWidth: true,
117
+ label: copy?.label,
118
+ value: active,
119
+ onChange: (event) => {
120
+ const picked = presets.find((preset) => preset.id === event.target.value);
121
+ onChange(picked ? resolvePreset(picked) : {});
122
+ },
123
+ SelectProps: { native: true },
124
+ InputLabelProps: { shrink: true },
125
+ inputProps: { "data-testid": `${testId}-presets-select` },
126
+ children: [
127
+ /* @__PURE__ */ jsx("option", { value: "", children: copy?.none }),
128
+ presets.map((preset) => /* @__PURE__ */ jsx("option", { value: preset.id, children: preset.label }, preset.id))
129
+ ]
130
+ }
131
+ );
132
+ }
133
+ function RangePresets({
134
+ presets,
135
+ value,
136
+ onChange,
137
+ testId
138
+ }) {
139
+ const theme = useTheme();
140
+ const box = useRef(null);
141
+ const width = useElementWidth(box);
142
+ const widest = useWidestLabel(box, presets.map((preset) => preset.label).join("|"), width);
143
+ if (presets.length === 0) return null;
144
+ const fits = presetsFitOneLine(width, widest, presets.length, parseFloat(theme.spacing(0.75)));
145
+ return /* @__PURE__ */ jsxs(Box, { ref: box, sx: { position: "relative", minWidth: 0 }, children: [
146
+ /* @__PURE__ */ jsx(
147
+ Box,
148
+ {
149
+ "aria-hidden": "true",
150
+ sx: { position: "absolute", top: 0, left: 0, width: "max-content", height: 0, overflow: "hidden", visibility: "hidden" },
151
+ children: presets.map((preset) => /* @__PURE__ */ jsx(Box, { component: "span", "data-preset-measure": "", sx: MEASURE_SX, children: preset.label }, preset.id))
152
+ }
153
+ ),
154
+ fits ? /* @__PURE__ */ jsx(
155
+ Box,
156
+ {
157
+ "data-testid": `${testId}-presets`,
158
+ sx: { display: "grid", gridTemplateColumns: `repeat(${presets.length}, minmax(0, 1fr))`, gap: 0.75 },
159
+ children: presets.map((preset) => {
160
+ const active = isPresetActive(preset, value);
161
+ return /* @__PURE__ */ jsx(
162
+ PresetChip,
163
+ {
164
+ preset,
165
+ active,
166
+ onSelect: () => onChange(active ? {} : resolvePreset(preset)),
167
+ testId: `${testId}-preset-${preset.id}`
168
+ },
169
+ preset.id
170
+ );
171
+ })
172
+ }
173
+ ) : /* @__PURE__ */ jsx(Box, { "data-testid": `${testId}-presets`, children: /* @__PURE__ */ jsx(PresetSelect, { presets, value, onChange, testId }) })
174
+ ] });
175
+ }
176
+
177
+ export {
178
+ presetsFitOneLine,
179
+ RangePresets
180
+ };
181
+ //# sourceMappingURL=chunk-LZNUBQ5I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-preset-chips.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * THE ONE-CLICK WINDOWS ABOVE A RANGE'S `De`/`Até` INPUTS.\n *\n * \"Filter by last month\" is two date pickers, four gestures and a mental\n * calculation of which day the month ended on. It is also the overwhelmingly\n * common case. So the common windows get a chip each, and the inputs stay for\n * the windows nobody could enumerate.\n *\n * Clicking an active preset CLEARS it. A chip that reads as pressed and does\n * nothing when pressed again is a dead control, and the alternative — hunting\n * for the pill's ✕ — is the gesture this row exists to remove.\n *\n * ONE LINE at every width (ADR 0190 in the host, FUT-4144): the presets are\n * the options of one question, and as wrapping chips \"Este ano\" fell onto a\n * second line at 320, 390 and 600, where it read as a second question. Where\n * the row is wide enough they are a segmented control of equal parts; where it\n * is not, the same question is a select.\n */\nimport Box from \"@mui/material/Box/index.js\";\nimport TextField from \"@mui/material/TextField/index.js\";\nimport { useTheme } from \"@mui/material/styles/index.js\";\nimport React, { useLayoutEffect, useRef, useState, type RefObject } from \"react\";\n\nimport { EN_US_DATA_VIEWS_COPY } from \"../../../en-US.data-display\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { isPresetActive, resolvePreset } from \"./data-views-range-presets\";\nimport type { RangePreset, RangeValue } from \"./data-views-types\";\nimport { sxRem } from \"../../../tokens/relative\";\n\n/** One preset, styled as the same pill-shaped chip the filter bar uses. */\nfunction PresetChip({\n preset,\n active,\n onSelect,\n testId,\n}: {\n preset: RangePreset;\n active: boolean;\n onSelect: () => void;\n testId: string;\n}): React.JSX.Element {\n return (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onSelect}\n aria-pressed={active}\n data-testid={testId}\n sx={{\n px: 1.25,\n py: 0.5,\n border: 1,\n borderStyle: \"solid\",\n borderColor: active ? \"primary.main\" : \"divider\",\n borderRadius: 999,\n bgcolor: active ? \"action.selected\" : \"background.paper\",\n color: active ? \"primary.main\" : \"text.secondary\",\n cursor: \"pointer\",\n font: \"inherit\",\n fontSize: sxRem(12),\n fontWeight: 600,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n minWidth: 0,\n \"&:hover\": { borderColor: active ? \"primary.main\" : \"text.primary\" },\n }}\n >\n {preset.label}\n </Box>\n );\n}\n\n/** The chip look, for the hidden row that measures each label at its natural width. */\nconst MEASURE_SX = {\n display: \"inline-block\",\n px: 1.25,\n border: 1,\n font: \"inherit\",\n fontSize: sxRem(12),\n fontWeight: 600,\n whiteSpace: \"nowrap\",\n} as const;\n\n/**\n * Whether `count` equal parts, each as wide as the widest label, fit `width`\n * with `gap` between them. Unmeasured (`null`: the server, jsdom) counts as\n * fitting, so the row renders the buttons it always rendered.\n */\nexport function presetsFitOneLine(width: number | null, widest: number, count: number, gap: number): boolean {\n if (width === null) return true;\n return widest * count + gap * (count - 1) <= width;\n}\n\n/** The element's own width as it changes; `null` until measured, or where nothing can measure. */\nfunction useElementWidth(ref: RefObject<HTMLElement | null>): number | null {\n const [width, setWidth] = useState<number | null>(null);\n useLayoutEffect(() => {\n const element = ref.current;\n if (element === null || typeof ResizeObserver === \"undefined\") return undefined;\n const observer = new ResizeObserver((entries) => {\n const measured = entries[0]?.contentRect.width;\n if (measured !== undefined && measured > 0) setWidth(measured);\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, [ref]);\n return width;\n}\n\n/**\n * The widest label at the chip's own type, padding and border, read off the\n * hidden measuring row.\n *\n * `offsetWidth`, the LAYOUT width, never the bounding box: a popover grows in\n * from 75% scale, and a box read during that transition is a quarter short —\n * which judged \"Acima de R$ 10\" to fit a third of the \"Mais\" panel and cut it\n * to \"Acima de …\" (FUT-4144 UI review round 2). Measured again when the row's\n * width changes and once the web fonts have loaded, since a fallback face is\n * narrower than the one the parts will be drawn in.\n */\nfunction useWidestLabel(ref: RefObject<HTMLElement | null>, labels: string, width: number | null): number {\n const [widest, setWidest] = useState(0);\n useLayoutEffect(() => {\n const measure = (): void => {\n const spans = ref.current?.querySelectorAll<HTMLElement>(\"[data-preset-measure]\") ?? [];\n // +1: `offsetWidth` rounds, so a label laid out at 80.4px reads 80 and\n // would be judged to fit half a pixel short, behind an ellipsis.\n setWidest(Math.max(0, ...Array.from(spans, (span) => span.offsetWidth + 1)));\n };\n measure();\n let live = true;\n void document.fonts?.ready.then(() => {\n if (live) measure();\n });\n return () => {\n live = false;\n };\n }, [ref, labels, width]);\n return widest;\n}\n\n/** The same question as a select, for a row too narrow for its parts. */\nfunction PresetSelect({\n presets,\n value,\n onChange,\n testId,\n}: {\n presets: RangePreset[];\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n testId: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy().filters.presetSelect ?? EN_US_DATA_VIEWS_COPY.filters.presetSelect;\n const active = presets.find((preset) => isPresetActive(preset, value))?.id ?? \"\";\n return (\n <TextField\n select\n size=\"small\"\n fullWidth\n label={copy?.label}\n value={active}\n onChange={(event) => {\n const picked = presets.find((preset) => preset.id === event.target.value);\n // \"None\" is the select's way of tapping the active chip again.\n onChange(picked ? resolvePreset(picked) : {});\n }}\n SelectProps={{ native: true }}\n InputLabelProps={{ shrink: true }}\n inputProps={{ \"data-testid\": `${testId}-presets-select` }}\n >\n <option value=\"\">{copy?.none}</option>\n {presets.map((preset) => (\n <option key={preset.id} value={preset.id}>\n {preset.label}\n </option>\n ))}\n </TextField>\n );\n}\n\n/**\n * The preset row. Renders nothing when a field declares none, so a numeric\n * range without host-configured windows keeps the popover it had.\n *\n * Carries no outer margin — the three surfaces that host it (the pill's\n * popover, the slide-in panel, the \"Mais\" overflow) each sit it in a different\n * stack, and a baked-in margin would be wrong in two of them.\n *\n * What is measured is the row's OWN width, not the window's: the same row\n * lives in a 670px popover, a 300px panel and a phone-wide sheet.\n */\nexport function RangePresets({\n presets,\n value,\n onChange,\n testId,\n}: {\n presets: RangePreset[];\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n testId: string;\n}): React.JSX.Element | null {\n const theme = useTheme();\n const box = useRef<HTMLDivElement>(null);\n const width = useElementWidth(box);\n const widest = useWidestLabel(box, presets.map((preset) => preset.label).join(\"|\"), width);\n if (presets.length === 0) return null;\n const fits = presetsFitOneLine(width, widest, presets.length, parseFloat(theme.spacing(0.75)));\n return (\n <Box ref={box} sx={{ position: \"relative\", minWidth: 0 }}>\n <Box\n aria-hidden=\"true\"\n sx={{ position: \"absolute\", top: 0, left: 0, width: \"max-content\", height: 0, overflow: \"hidden\", visibility: \"hidden\" }}\n >\n {presets.map((preset) => (\n <Box key={preset.id} component=\"span\" data-preset-measure=\"\" sx={MEASURE_SX}>\n {preset.label}\n </Box>\n ))}\n </Box>\n {fits ? (\n <Box\n data-testid={`${testId}-presets`}\n sx={{ display: \"grid\", gridTemplateColumns: `repeat(${presets.length}, minmax(0, 1fr))`, gap: 0.75 }}\n >\n {presets.map((preset) => {\n const active = isPresetActive(preset, value);\n return (\n <PresetChip\n key={preset.id}\n preset={preset}\n active={active}\n onSelect={() => onChange(active ? {} : resolvePreset(preset))}\n testId={`${testId}-preset-${preset.id}`}\n />\n );\n })}\n </Box>\n ) : (\n <Box data-testid={`${testId}-presets`}>\n <PresetSelect presets={presets} value={value} onChange={onChange} testId={testId} />\n </Box>\n )}\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EN_US_CAROUSEL_COPY
3
- } from "./chunk-FEKWKWGK.js";
3
+ } from "./chunk-ARGVUTTL.js";
4
4
  import {
5
5
  withDefaults
6
6
  } from "./chunk-HPK33ACY.js";
@@ -330,4 +330,4 @@ export {
330
330
  CarouselArrows,
331
331
  CarouselThumbnails
332
332
  };
333
- //# sourceMappingURL=chunk-BECKKDYG.js.map
333
+ //# sourceMappingURL=chunk-M2M4IDFU.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-H2J2MTRE.js";
4
4
  import {
5
5
  EN_US_MAP_PREVIEW_COPY
6
- } from "./chunk-FEKWKWGK.js";
6
+ } from "./chunk-ARGVUTTL.js";
7
7
  import {
8
8
  rem
9
9
  } from "./chunk-YKCAJ2TN.js";
@@ -46,4 +46,4 @@ export {
46
46
  resolveMapPreviewProps,
47
47
  glassStyles
48
48
  };
49
- //# sourceMappingURL=chunk-CSGBHYW6.js.map
49
+ //# sourceMappingURL=chunk-M5Y42AZ4.js.map
@@ -0,0 +1,122 @@
1
+ import {
2
+ useDataViewsCopy
3
+ } from "./chunk-KHG57NAE.js";
4
+ import {
5
+ toDayString,
6
+ toLocalDay
7
+ } from "./chunk-SUTOAW7I.js";
8
+ import {
9
+ Calendar
10
+ } from "./chunk-FYAW5GBF.js";
11
+ import {
12
+ EN_US_DATA_VIEWS_COPY
13
+ } from "./chunk-ARGVUTTL.js";
14
+ import {
15
+ rem,
16
+ sxRem
17
+ } from "./chunk-YKCAJ2TN.js";
18
+
19
+ // src/components/data-display/DataViews/data-views-range-calendar.tsx
20
+ import Box from "@mui/material/Box/index.js";
21
+ import Typography from "@mui/material/Typography/index.js";
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ var CALENDAR_CLASS = "data-views-range-calendar";
24
+ var ROOT_SX = (theme) => ({
25
+ mt: { xs: 1, sm: 1.5 },
26
+ // Below `sm` the caption and the weekday row give up their bottom margins,
27
+ // so the whole popover fits a 320×568 screen under its pill (FUT-4144).
28
+ '& :has(> * > [data-testid="calendar-month-select"])': { mb: { xs: 0.5, sm: 2 } },
29
+ '& :has(> [role="columnheader"])': { mb: { xs: 0, sm: 1 } },
30
+ '& [role="columnheader"]': { height: { xs: rem(theme, 24), sm: rem(theme, 32) } },
31
+ // The days carry no column gap of their own (`Calendar`, FUT-4162), so the
32
+ // seven columns are what a day's 40px target is carved from below `sm`; the
33
+ // range band and its round endpoints are the Calendar's, untouched here.
34
+ // The month/year caption on ONE row at 320: the selectors give up the slack
35
+ // around their text before the arrows are pushed onto a second row.
36
+ '& [data-testid="calendar-month-select"], & [data-testid="calendar-year-select"]': { px: 0.5, minWidth: 0 },
37
+ [`& .${CALENDAR_CLASS}`]: {
38
+ p: 0,
39
+ boxShadow: "none",
40
+ backgroundColor: "transparent",
41
+ backgroundImage: "none",
42
+ // A tapped day already rings itself; the whole grid framed in the primary
43
+ // colour after every tap is noise in a popover. The frame stays for the
44
+ // keyboard reaching the grid itself.
45
+ "&:focus-within": { outline: "none" },
46
+ "&:focus-visible": {
47
+ outline: (theme2) => `${rem(theme2, 2)} solid`,
48
+ outlineColor: "primary.main",
49
+ outlineOffset: sxRem(2)
50
+ }
51
+ }
52
+ });
53
+ function rangeOf(value) {
54
+ return {
55
+ start: toLocalDay(typeof value.min === "string" ? value.min : null),
56
+ end: toLocalDay(typeof value.max === "string" ? value.max : null)
57
+ };
58
+ }
59
+ function rangeFromCalendar(previous, picked) {
60
+ const min = dayOf(picked.start);
61
+ const max = dayOf(picked.end) ?? keptEnd(previous, min);
62
+ return { ...min ? { min } : {}, ...max ? { max } : {} };
63
+ }
64
+ var dayOf = (date) => date ? toDayString(date) : void 0;
65
+ function keptEnd(previous, min) {
66
+ if (previous.min != null || typeof previous.max !== "string") return void 0;
67
+ return min && min <= previous.max ? previous.max : void 0;
68
+ }
69
+ function openingMonth(value, months) {
70
+ const end = toLocalDay(typeof value.max === "string" ? value.max : null);
71
+ const anchor = end ?? /* @__PURE__ */ new Date();
72
+ return new Date(anchor.getFullYear(), anchor.getMonth() - (months > 1 ? 1 : 0), 1);
73
+ }
74
+ function DayRangeCalendar({
75
+ fieldLabel,
76
+ value,
77
+ onChange,
78
+ months,
79
+ viewKey,
80
+ testId
81
+ }) {
82
+ const copy = useDataViewsCopy().filters.dayCalendar ?? EN_US_DATA_VIEWS_COPY.filters.dayCalendar;
83
+ const range = rangeOf(value);
84
+ const pick = (picked) => onChange(rangeFromCalendar(value, picked));
85
+ const waitingForEnd = Boolean(range.start && !range.end);
86
+ return /* @__PURE__ */ jsxs(Box, { sx: ROOT_SX, "data-testid": `${testId}-calendar`, children: [
87
+ /* @__PURE__ */ jsx(
88
+ Calendar,
89
+ {
90
+ ariaLabel: copy.label(fieldLabel),
91
+ className: CALENDAR_CLASS,
92
+ selectionMode: "range",
93
+ locale: copy.locale,
94
+ labels: copy.caption,
95
+ firstDayOfWeek: 0,
96
+ numberOfMonths: months,
97
+ showOutsideDays: months === 1,
98
+ captionLayout: months > 1 ? "arrows" : "selectors",
99
+ defaultMonth: openingMonth(value, months),
100
+ range,
101
+ onIntermediateRangeChange: pick
102
+ },
103
+ viewKey
104
+ ),
105
+ /* @__PURE__ */ jsx(
106
+ Typography,
107
+ {
108
+ component: "p",
109
+ "aria-live": "polite",
110
+ "data-testid": `${testId}-calendar-hint`,
111
+ sx: { mt: { xs: 0.25, sm: 1 }, fontSize: sxRem(12), color: "text.secondary" },
112
+ children: waitingForEnd ? copy.pickEnd : copy.pickStart
113
+ }
114
+ )
115
+ ] });
116
+ }
117
+
118
+ export {
119
+ rangeFromCalendar,
120
+ DayRangeCalendar
121
+ };
122
+ //# sourceMappingURL=chunk-MICX23P4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-range-calendar.tsx"],"sourcesContent":["'use client';\n\n/**\n * The range calendar under a day filter's `De`/`Até` boxes (FUT-4144).\n *\n * The owner picked it ALWAYS OPEN (option B of the prototype): a period is\n * three taps — open the filter, the first day, the last day — against five for\n * a calendar button in each box and four for a link to a separate sheet. It\n * sits BELOW the boxes, with no button of its own, so the typed path is not one\n * keystroke longer than it was.\n *\n * The boxes and the calendar are two views of ONE range: a tap writes the\n * boxes, a typed day moves and repaints the calendar, an impossible typed day\n * (which writes nothing) leaves it alone, and \"Limpar\" empties both.\n *\n * It is `Calendar` in `selectionMode=\"range\"`, the same one `DateRangePicker`\n * mounts — not a second calendar. Its own rule picks the period: the first tap\n * starts it, the second closes it, and a second tap BEFORE the first swaps the\n * two, so the boxes never show a period backwards.\n */\nimport Box from '@mui/material/Box/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React from 'react';\n\nimport { EN_US_DATA_VIEWS_COPY } from '../../../en-US.data-display';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { Calendar, type DateRange } from '../../form/Calendar';\nimport { toDayString, toLocalDay } from '../../form/DateRangePicker/DateRangePicker.dates';\nimport type { DataViewsDayCalendarCopy } from './data-views-copy';\nimport { useDataViewsCopy } from './data-views-copy-context';\nimport type { RangeValue } from './data-views-types';\n\nconst CALENDAR_CLASS = 'data-views-range-calendar';\n\n/**\n * `Calendar` draws its own `Paper` with 24px of padding and a shadow. Inside\n * the filter's popover that reads as a card inside a card, so the inner frame\n * is flattened through the class hook the component offers for this — the\n * same thing `DateRangePicker` does.\n */\nconst ROOT_SX = (theme: Theme) => ({\n mt: { xs: 1, sm: 1.5 },\n // Below `sm` the caption and the weekday row give up their bottom margins,\n // so the whole popover fits a 320×568 screen under its pill (FUT-4144).\n '& :has(> * > [data-testid=\"calendar-month-select\"])': { mb: { xs: 0.5, sm: 2 } },\n '& :has(> [role=\"columnheader\"])': { mb: { xs: 0, sm: 1 } },\n '& [role=\"columnheader\"]': { height: { xs: rem(theme, 24), sm: rem(theme, 32) } },\n // The days carry no column gap of their own (`Calendar`, FUT-4162), so the\n // seven columns are what a day's 40px target is carved from below `sm`; the\n // range band and its round endpoints are the Calendar's, untouched here.\n // The month/year caption on ONE row at 320: the selectors give up the slack\n // around their text before the arrows are pushed onto a second row.\n '& [data-testid=\"calendar-month-select\"], & [data-testid=\"calendar-year-select\"]': { px: 0.5, minWidth: 0 },\n [`& .${CALENDAR_CLASS}`]: {\n p: 0,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n backgroundImage: 'none',\n // A tapped day already rings itself; the whole grid framed in the primary\n // colour after every tap is noise in a popover. The frame stays for the\n // keyboard reaching the grid itself.\n '&:focus-within': { outline: 'none' },\n '&:focus-visible': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(2),\n },\n },\n});\n\n/** The two ends of a range, as `Calendar` reads them. */\nfunction rangeOf(value: RangeValue): DateRange {\n return {\n start: toLocalDay(typeof value.min === 'string' ? value.min : null),\n end: toLocalDay(typeof value.max === 'string' ? value.max : null),\n };\n}\n\n/**\n * What a tap on the calendar makes of the range.\n *\n * `Calendar` reports the period it holds after the tap: a fresh start (`end`\n * null) or a closed one, already in order. The one case it cannot see is a\n * range with only `Até` — typed, or left by a saved view — where its first tap\n * would drop that `Até`. A first day on or before it keeps it, so \"até 15/10\"\n * plus one tap on the 3rd is 03/10–15/10, as the prototype does.\n */\nexport function rangeFromCalendar(previous: RangeValue, picked: DateRange): RangeValue {\n const min = dayOf(picked.start);\n const max = dayOf(picked.end) ?? keptEnd(previous, min);\n return { ...(min ? { min } : {}), ...(max ? { max } : {}) };\n}\n\nconst dayOf = (date: Date | null | undefined): string | undefined => (date ? toDayString(date) : undefined);\n\n/** The `Até` of a range that has ONLY one, when the new first day is on or before it. */\nfunction keptEnd(previous: RangeValue, min: string | undefined): string | undefined {\n if (previous.min != null || typeof previous.max !== 'string') return undefined;\n return min && min <= previous.max ? previous.max : undefined;\n}\n\n/**\n * The month the calendar opens on while `De` is empty. With `De` set it opens\n * on De's month, which `Calendar` does by itself.\n *\n * With two months the current month sits on the RIGHT (setembro | outubro), so\n * the days a filter usually asks about — the ones just past — are on screen;\n * with only `Até` set, its month takes that place.\n */\nfunction openingMonth(value: RangeValue, months: number): Date | undefined {\n const end = toLocalDay(typeof value.max === 'string' ? value.max : null);\n const anchor = end ?? new Date();\n return new Date(anchor.getFullYear(), anchor.getMonth() - (months > 1 ? 1 : 0), 1);\n}\n\n/** Props of {@link DayRangeCalendar}. */\nexport interface DayRangeCalendarProps {\n /** The filter's own label (\"Data\"), which names the calendar. */\n fieldLabel: string;\n value: RangeValue;\n /** Called with the range a tap leaves; never for a typed day. */\n onChange: (range: RangeValue) => void;\n /**\n * Months side by side. Two read as a period at a glance where there is room;\n * one, with the month/year selectors, where there is not.\n */\n months: 1 | 2;\n /**\n * Changes when the range moved from OUTSIDE the calendar (typed, a preset,\n * \"Limpar\"), so the calendar re-opens on it. Never for its own taps: a\n * calendar that jumped under the finger picking in it would be unusable.\n */\n viewKey: string;\n testId: string;\n}\n\nexport function DayRangeCalendar({\n fieldLabel,\n value,\n onChange,\n months,\n viewKey,\n testId,\n}: DayRangeCalendarProps): React.JSX.Element {\n const copy: DataViewsDayCalendarCopy =\n useDataViewsCopy().filters.dayCalendar ?? (EN_US_DATA_VIEWS_COPY.filters.dayCalendar as DataViewsDayCalendarCopy);\n const range = rangeOf(value);\n const pick = (picked: DateRange) => onChange(rangeFromCalendar(value, picked));\n const waitingForEnd = Boolean(range.start && !range.end);\n\n return (\n <Box sx={ROOT_SX} data-testid={`${testId}-calendar`}>\n <Calendar\n key={viewKey}\n ariaLabel={copy.label(fieldLabel)}\n className={CALENDAR_CLASS}\n selectionMode=\"range\"\n locale={copy.locale}\n labels={copy.caption}\n // Sunday first, as a pt-BR calendar reads (`D S T Q Q S S`) and as the\n // presets' \"Esta semana\" counts.\n firstDayOfWeek={0}\n numberOfMonths={months}\n // Side by side, a day of the next month in this one is the same day\n // twice; one month alone keeps them, muted, as a six-week frame.\n showOutsideDays={months === 1}\n captionLayout={months > 1 ? 'arrows' : 'selectors'}\n defaultMonth={openingMonth(value, months)}\n range={range}\n // The intermediate callback does the work: the other fires only on the\n // tap that CLOSES a period, so the first tap would write nothing.\n onIntermediateRangeChange={pick}\n />\n <Typography\n component=\"p\"\n aria-live=\"polite\"\n data-testid={`${testId}-calendar-hint`}\n sx={{ mt: { xs: 0.25, sm: 1 }, fontSize: sxRem(12), color: 'text.secondary' }}\n >\n {waitingForEnd ? copy.pickEnd : copy.pickStart}\n </Typography>\n </Box>\n );\n}\n"],"mappings":"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","names":["theme"]}
@@ -1,10 +1,10 @@
1
+ import {
2
+ isoToMasked
3
+ } from "./chunk-L6YTVXGN.js";
1
4
  import {
2
5
  dayCount,
3
6
  isAfterDay
4
7
  } from "./chunk-SUTOAW7I.js";
5
- import {
6
- isoToMasked
7
- } from "./chunk-72HOUWAW.js";
8
8
  import {
9
9
  EN_US_UI_LABELS
10
10
  } from "./chunk-XOXXG7Q5.js";
@@ -65,4 +65,4 @@ export {
65
65
  resolveQuickRanges,
66
66
  activeQuickRangeId
67
67
  };
68
- //# sourceMappingURL=chunk-5CP5Z3YU.js.map
68
+ //# sourceMappingURL=chunk-MPWA55CF.js.map
@@ -1,22 +1,23 @@
1
1
  import {
2
2
  ClearAllControl,
3
- CloseSearchControl
4
- } from "./chunk-QLJU7UUI.js";
3
+ CloseSearchControl,
4
+ useBarFrozen
5
+ } from "./chunk-T7OIVPCO.js";
5
6
  import {
6
7
  MoreFilters
7
- } from "./chunk-OBA75Y5O.js";
8
+ } from "./chunk-JHWEL4NX.js";
8
9
  import {
9
10
  PillControl
10
11
  } from "./chunk-AJ6KFHEE.js";
11
- import {
12
- QuickChip
13
- } from "./chunk-AT6UKTH4.js";
14
12
  import {
15
13
  isQuickActive
16
14
  } from "./chunk-KYUEO2IO.js";
17
15
  import {
18
16
  RangePill
19
- } from "./chunk-5RSK5M6M.js";
17
+ } from "./chunk-FI2CQOGC.js";
18
+ import {
19
+ QuickChip
20
+ } from "./chunk-AT6UKTH4.js";
20
21
  import {
21
22
  CollapsedSearch,
22
23
  InlineKeyword
@@ -201,12 +202,13 @@ function FilterSlots({
201
202
  testIdPrefix,
202
203
  clearKey
203
204
  }) {
205
+ const clear = useBarFrozen(onControlOpenChange);
204
206
  return /* @__PURE__ */ jsxs(Fragment, { children: [
205
207
  inline.map((field) => /* @__PURE__ */ jsx(
206
208
  InlineControl,
207
209
  {
208
210
  field,
209
- onOpenChange: onControlOpenChange,
211
+ onOpenChange: clear.onOpenChange,
210
212
  pills,
211
213
  ranges,
212
214
  onTogglePill,
@@ -221,7 +223,7 @@ function FilterSlots({
221
223
  MoreFilters,
222
224
  {
223
225
  clearKey,
224
- onOpenChange: onControlOpenChange,
226
+ onOpenChange: clear.onOpenChange,
225
227
  onClearAll,
226
228
  anyApplied: activeFilterCount > 0,
227
229
  compact: compactControls,
@@ -239,6 +241,7 @@ function FilterSlots({
239
241
  {
240
242
  onClearAll,
241
243
  compact: compactControls,
244
+ frozen: clear.frozen,
242
245
  testIdPrefix
243
246
  }
244
247
  )
@@ -248,4 +251,4 @@ function FilterSlots({
248
251
  export {
249
252
  InlineFilterControls
250
253
  };
251
- //# sourceMappingURL=chunk-5KK3I42O.js.map
254
+ //# sourceMappingURL=chunk-NK6O4NE4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-inline-bar.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * The INLINE filter bar — the horizontal row of controls a grid renders instead\n * of the slide-in panel on a wide screen (`inlineFilters`): the compact keyword\n * box, one pill per facet, one pill per range, and \"Mais N\" for whatever had no\n * room.\n *\n * There is no \"Filtros ativos\" row beneath it. Listing every applied filter a\n * second time, under the controls already showing them, was the same\n * information twice — and put the ✕ that removes a filter somewhere other than\n * the control that applied it. Each pill carries its own.\n *\n * Split from `data-views-filter-panel` because they are two surfaces, not one:\n * the panel is a column of stacked fields, this is a row of pills, and the only\n * thing they share is the prop shape they are both driven by.\n */\nimport Box from \"@mui/material/Box/index.js\";\nimport { useState } from \"react\";\n\n\nimport { ClearAllControl, CloseSearchControl, useBarFrozen } from \"./data-views-bar-controls\";\nimport type { GridFilterPanelProps } from \"./data-views-filter-panel\";\nimport { MoreFilters } from \"./data-views-more-filters\";\nimport type { OverflowField, OverflowSplit } from \"./data-views-overflow\";\nimport { CollapsedSearch, InlineKeyword } from \"./data-views-search\";\nimport { PillControl } from \"./data-views-category-pill\";\nimport { isQuickActive } from \"./data-views-overflow\";\nimport { QuickChip } from \"./data-views-quick-chip\";\nimport { RangePill } from \"./data-views-range-pill\";\nimport type { QuickFilterConfig, RangeValue } from \"./data-views-types\";\n\n\n\n/* ── Inline (second-line) filter bar ─────────────────────────────────────── */\n\n/** The search, in whichever of its two forms the measurement asked for. */\nfunction SearchSlot({\n search,\n onSearchChange,\n collapsed,\n expanded,\n fill,\n onOpen,\n onEscape,\n testIdPrefix,\n}: {\n search: string;\n onSearchChange: (value: string) => void;\n collapsed: boolean;\n expanded: boolean;\n /** The box owns the cluster alone, so it may shrink below its usual floor. */\n fill: boolean;\n onOpen: () => void;\n onEscape: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n if (collapsed) {\n return (\n <CollapsedSearch active={search !== \"\"} onOpen={onOpen} testId={`${testIdPrefix}-search-all`} />\n );\n }\n return (\n <InlineKeyword\n value={search}\n onChange={onSearchChange}\n testId={`${testIdPrefix}-search-all`}\n autoFocus={expanded}\n onEscape={onEscape}\n fill={fill}\n />\n );\n}\n\n/** Props the inline bar needs (the slide-in panel's, minus its own chrome). */\ntype InlineFilterBarProps<T extends Record<string, unknown>> = Pick<\n GridFilterPanelProps<T>,\n | \"testIdPrefix\"\n | \"search\"\n | \"fields\"\n | \"rangeFields\"\n | \"pills\"\n | \"ranges\"\n | \"onSearchChange\"\n | \"onTogglePill\"\n | \"onChangeRange\"\n | \"onClearField\"\n | \"onClearAll\"\n> & {\n /** The measured degradation state, computed once in `GridShell`. */\n split: OverflowSplit<T>;\n};\n\n/**\n * One filter control on the bar: a multi-select pill or a min/max range. The\n * two are the same thing from the bar's point of view — a labelled control that\n * writes into the view state — so which one to build is decided here rather\n * than in the bar's own render.\n */\nfunction InlineControl<T extends Record<string, unknown>>({\n field,\n pills,\n ranges,\n onTogglePill,\n onChangeRange,\n onClearField,\n onToggleQuick,\n onOpenChange,\n testIdPrefix,\n}: {\n field: OverflowField<T>;\n onToggleQuick?: (quick: QuickFilterConfig) => void;\n onOpenChange?: (open: boolean) => void;\n pills: Record<string, string[]>;\n ranges: Record<string, RangeValue>;\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onChangeRange: (fieldId: string, range: RangeValue) => void;\n onClearField: (fieldId: string) => void;\n testIdPrefix: string;\n}): React.JSX.Element | null {\n if (field.group === \"quick\" && field.quick) {\n const quick = field.quick;\n return (\n <QuickChip\n quick={quick}\n active={isQuickActive(quick, pills)}\n onToggle={() => onToggleQuick?.(quick)}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n if (field.group === \"pill\" && field.pill) {\n return (\n <PillControl\n fieldId={field.id}\n pill={field.pill}\n selected={pills[field.id] ?? []}\n onTogglePill={onTogglePill}\n onClearField={onClearField}\n onOpenChange={onOpenChange}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n if (field.group === \"range\" && field.range) {\n return (\n <RangePill\n field={field.range}\n value={ranges[field.id] ?? {}}\n onChange={(range) => onChangeRange(field.id, range)}\n onOpenChange={onOpenChange}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n return null;\n}\n\n/**\n * WHICH OF THE SEARCH'S THREE STATES THE BAR IS IN.\n *\n * Resting, expanded-and-sharing, or expanded-and-owning-the-cluster. They were\n * one boolean until a phone showed why they are not:\n *\n * - `fill` — an expanded box drops its usual 200px floor and takes whatever the\n * cluster has. That floor is right for a box that lives on the row; it is\n * wrong for one expanded into a cluster the ladder sized for an icon, where\n * insisting on it made the row scroll sideways (154px of overhang at 320px,\n * 84px at 390px, 42px at 500px).\n * - `takesOver` — the narrower case, where shrinking has run out of road and\n * what is left would be too small to read. Only then do the filters stand\n * down. A large phone has room to share, and evicting them there cost the\n * operator their filters for nothing.\n *\n * Once CLICKED the box stays open until Escape or its ✕, so typing is never\n * interrupted by a re-measure.\n */\nfunction useSearchMode<T extends Record<string, unknown>>(\n split: OverflowSplit<T>,\n): {\n showBox: boolean;\n expanded: boolean;\n fill: boolean;\n takesOver: boolean;\n open: () => void;\n close: () => void;\n} {\n const [searchOpen, setSearchOpen] = useState(false);\n return {\n showBox: !split.searchCollapsed || searchOpen,\n expanded: searchOpen,\n fill: split.searchCollapsed && searchOpen,\n takesOver: searchOpen && split.searchTakeover,\n open: () => setSearchOpen(true),\n close: () => setSearchOpen(false),\n };\n}\n\n/**\n * The filter CONTROLS alone — search, the fields that fit, and \"Mais N\" for the\n * ones that don't — with no row chrome of its own, because it is rendered ON\n * the toolbar line rather than under it (`ContentToolbar`'s `leadingControls`).\n *\n * The measurement driving the collapse lives on the toolbar ROW, not here —\n * see the note on `split` below.\n */\nexport function InlineFilterControls<T extends Record<string, unknown>>({\n testIdPrefix,\n pills,\n ranges,\n search,\n onSearchChange,\n onTogglePill,\n onChangeRange,\n onClearField,\n split,\n onClearAll,\n activeFilterCount,\n onControlOpenChange,\n onToggleQuick,\n clearKey,\n}: Omit<InlineFilterBarProps<T>, \"fields\" | \"rangeFields\"> & {\n /** Changes on every clear-all; the \"Mais\" fields are keyed on it (FUT-4144). */\n clearKey?: number;\n /** Presses or releases a quick chip — see `QuickFilterConfig`. */\n onToggleQuick?: (quick: QuickFilterConfig) => void;\n /** How many filters are applied — decides whether \"Limpar\" is on the bar at all. */\n activeFilterCount: number;\n /** Reports a control opening/closing so the shell can freeze the measurement. */\n onControlOpenChange?: (open: boolean) => void;\n}): React.JSX.Element {\n // MEASURED, not breakpointed — and measured ONCE, in the shell, because the\n // toolbar around it needs the same answer to drop its labels. The measured\n // element is the whole toolbar ROW (see `GridToolbar`), not this cluster:\n // `RESERVED` prices the counter and Exibir/Exportar, so measuring only the\n // controls would charge for that furniture a second time and collapse the\n // ladder while the row still had hundreds of free pixels.\n const { inline, overflow, compactControls, clearAllHidden } = split;\n const { showBox, expanded, fill, takesOver, open, close } = useSearchMode(split);\n return (\n <Box\n data-testid={`${testIdPrefix}-inline-filters`}\n sx={{\n display: \"flex\",\n flexWrap: \"nowrap\",\n alignItems: \"center\",\n gap: 1,\n minWidth: 0,\n // No squeezing: if the estimate over-packs, the row must overflow (and\n // the next measure sheds a control), not shrink labels to an ellipsis.\n \"& > *\": { flexShrink: 0 },\n }}\n >\n <SearchSlot\n search={search}\n onSearchChange={onSearchChange}\n collapsed={!showBox}\n expanded={expanded}\n fill={fill}\n onOpen={open}\n onEscape={close}\n testIdPrefix={testIdPrefix}\n />\n {takesOver && <CloseSearchControl onClose={close} testIdPrefix={testIdPrefix} />}\n {!takesOver && (\n <FilterSlots\n inline={inline}\n overflow={overflow}\n pills={pills}\n ranges={ranges}\n onTogglePill={onTogglePill}\n onChangeRange={onChangeRange}\n onClearField={onClearField}\n onToggleQuick={onToggleQuick}\n onClearAll={onClearAll}\n onControlOpenChange={onControlOpenChange}\n activeFilterCount={activeFilterCount}\n compactControls={compactControls}\n clearAllHidden={clearAllHidden}\n testIdPrefix={testIdPrefix}\n clearKey={clearKey}\n />\n )}\n </Box>\n );\n}\n\n/**\n * Everything to the right of the search: the fields that fit, \"Mais N\" for the\n * ones that don't, and \"Limpar\". Split out of `InlineFilterControls` only to\n * keep that function inside the size gate — the three are one cluster and the\n * order they render in is the order they shed in.\n */\nfunction FilterSlots<T extends Record<string, unknown>>({\n inline,\n overflow,\n pills,\n ranges,\n onTogglePill,\n onChangeRange,\n onClearField,\n onToggleQuick,\n onClearAll,\n onControlOpenChange,\n activeFilterCount,\n compactControls,\n clearAllHidden,\n testIdPrefix,\n clearKey,\n}: {\n clearKey?: number;\n onToggleQuick?: (quick: QuickFilterConfig) => void;\n inline: OverflowField<T>[];\n overflow: OverflowField<T>[];\n pills: Record<string, string[]>;\n ranges: Record<string, RangeValue>;\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onChangeRange: (fieldId: string, range: RangeValue) => void;\n onClearField: (fieldId: string) => void;\n onClearAll: () => void;\n onControlOpenChange?: (open: boolean) => void;\n activeFilterCount: number;\n compactControls: boolean;\n clearAllHidden: boolean;\n testIdPrefix: string;\n}): React.JSX.Element {\n const clear = useBarFrozen(onControlOpenChange);\n return (\n <>\n {inline.map((field) => (\n <InlineControl\n key={field.id}\n field={field}\n onOpenChange={clear.onOpenChange}\n pills={pills}\n ranges={ranges}\n onTogglePill={onTogglePill}\n onChangeRange={onChangeRange}\n onClearField={onClearField}\n onToggleQuick={onToggleQuick}\n testIdPrefix={testIdPrefix}\n />\n ))}\n <MoreFilters\n clearKey={clearKey}\n onOpenChange={clear.onOpenChange}\n onClearAll={onClearAll}\n anyApplied={activeFilterCount > 0}\n compact={compactControls}\n fields={overflow}\n pills={pills}\n ranges={ranges}\n onTogglePill={onTogglePill}\n onChangeRange={onChangeRange}\n onToggleQuick={onToggleQuick}\n testIdPrefix={testIdPrefix}\n />\n {activeFilterCount > 0 && !clearAllHidden && (\n <ClearAllControl\n onClearAll={onClearAll}\n compact={compactControls}\n frozen={clear.frozen}\n testIdPrefix={testIdPrefix}\n />\n )}\n </>\n );\n}\n\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Alert
3
- } from "./chunk-NQCTANF3.js";
3
+ } from "./chunk-QVDEGBME.js";
4
4
 
5
5
  // src/components/data-display/CardKit/card-actions-context.tsx
6
6
  import { createContext, useCallback, useContext, useState } from "react";
@@ -58,4 +58,4 @@ export {
58
58
  CardActionsProvider,
59
59
  useCardActions
60
60
  };
61
- //# sourceMappingURL=chunk-RCTHCXS6.js.map
61
+ //# sourceMappingURL=chunk-PJNIJIE6.js.map
@@ -1,10 +1,10 @@
1
- import {
2
- buildChartContext
3
- } from "./chunk-TZC6KIK2.js";
4
1
  import {
5
2
  ChartLegendContent,
6
3
  ChartTooltipContent
7
4
  } from "./chunk-RIRTW5EU.js";
5
+ import {
6
+ buildChartContext
7
+ } from "./chunk-TZC6KIK2.js";
8
8
  import {
9
9
  uiInk
10
10
  } from "./chunk-XJAD6E3V.js";
@@ -318,4 +318,4 @@ function renderChartByType(props, theme) {
318
318
  export {
319
319
  renderChartByType
320
320
  };
321
- //# sourceMappingURL=chunk-6ATXOJVQ.js.map
321
+ //# sourceMappingURL=chunk-QADTI63U.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  MapPreview
3
- } from "./chunk-OKRITX4S.js";
3
+ } from "./chunk-CJ6XXM4X.js";
4
4
 
5
5
  // src/components/data-display/FleetMap/FleetCanvas.tsx
6
6
  import Box from "@mui/material/Box/index.js";
@@ -38,4 +38,4 @@ function FleetCanvas({
38
38
  export {
39
39
  FleetCanvas
40
40
  };
41
- //# sourceMappingURL=chunk-MW7P2C2C.js.map
41
+ //# sourceMappingURL=chunk-QAEO52Z4.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  statusMessage
3
- } from "./chunk-5CP5Z3YU.js";
3
+ } from "./chunk-MPWA55CF.js";
4
4
  import {
5
5
  DayBoundInput
6
- } from "./chunk-72HOUWAW.js";
6
+ } from "./chunk-L6YTVXGN.js";
7
7
 
8
8
  // src/components/form/DateRangePicker/DateRangePickerFields.tsx
9
9
  import Box from "@mui/material/Box/index.js";
@@ -64,4 +64,4 @@ function DateRangeFields({
64
64
  export {
65
65
  DateRangeFields
66
66
  };
67
- //# sourceMappingURL=chunk-5S5K73I6.js.map
67
+ //# sourceMappingURL=chunk-QSOCOXVL.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ AlertContent
3
+ } from "./chunk-7HZ36QDH.js";
1
4
  import {
2
5
  alertEmphasisStyles,
3
6
  alertLayoutStyles,
@@ -6,17 +9,14 @@ import {
6
9
  getColorFromTheme,
7
10
  getVariantIcon
8
11
  } from "./chunk-L5RS6QAT.js";
9
- import {
10
- resolveIconPlacement
11
- } from "./chunk-QXUXO22M.js";
12
- import {
13
- AlertContent
14
- } from "./chunk-7HZ36QDH.js";
15
12
  import {
16
13
  resolveAlertProps,
17
14
  resolveAnnouncement,
18
15
  testIdFor
19
16
  } from "./chunk-L7VH6IMR.js";
17
+ import {
18
+ resolveIconPlacement
19
+ } from "./chunk-QXUXO22M.js";
20
20
  import {
21
21
  ACTIVE,
22
22
  ALERT_EASING,
@@ -277,4 +277,4 @@ export {
277
277
  Alert,
278
278
  ALERT_ONLY_PROPS
279
279
  };
280
- //# sourceMappingURL=chunk-NQCTANF3.js.map
280
+ //# sourceMappingURL=chunk-QVDEGBME.js.map
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-2ORD2FMN.js";
18
18
  import {
19
19
  Alert
20
- } from "./chunk-NQCTANF3.js";
20
+ } from "./chunk-QVDEGBME.js";
21
21
  import {
22
22
  Button
23
23
  } from "./chunk-YOXYSAUI.js";
@@ -160,4 +160,4 @@ export {
160
160
  SequenceStepBody,
161
161
  SequenceDoneBody
162
162
  };
163
- //# sourceMappingURL=chunk-BQBEN44R.js.map
163
+ //# sourceMappingURL=chunk-RDCIST7P.js.map
@@ -3,7 +3,7 @@ import {
3
3
  defaultMessages,
4
4
  resolveDayRange,
5
5
  resolveQuickRanges
6
- } from "./chunk-5CP5Z3YU.js";
6
+ } from "./chunk-MPWA55CF.js";
7
7
  import {
8
8
  toDayString,
9
9
  todayIn
@@ -69,4 +69,4 @@ function useDateRangePicker({
69
69
  export {
70
70
  useDateRangePicker
71
71
  };
72
- //# sourceMappingURL=chunk-HUXAIQC5.js.map
72
+ //# sourceMappingURL=chunk-RZ3P4X2I.js.map