@12-apps/ui 6.89.2 → 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 (274) 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/FleetMap/FleetBody.js +9 -8
  43. package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -7
  44. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -1
  45. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js.map +1 -1
  46. package/dist/_internal/components/data-display/FleetMap/FleetMap.js +9 -9
  47. package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +4 -3
  48. package/dist/_internal/components/data-display/MapPreview/MapLayers.js +5 -4
  49. package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +4 -3
  50. package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +3 -2
  51. package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -6
  52. package/dist/_internal/components/data-display/index.js +35 -35
  53. package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
  54. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +6 -6
  55. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +5 -5
  56. package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +4 -4
  57. package/dist/_internal/components/feedback/index.js +7 -7
  58. package/dist/_internal/components/form/Calendar/Calendar.js +5 -5
  59. package/dist/_internal/components/form/Calendar/CalendarDay.js +1 -1
  60. package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
  61. package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
  62. package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +4 -4
  63. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +3 -3
  64. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +10 -10
  65. package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +2 -2
  66. package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +3 -3
  67. package/dist/_internal/components/form/index.js +24 -24
  68. package/dist/_internal/components/index.js +63 -63
  69. package/dist/_internal/en-US.data-display.js +2 -1
  70. package/dist/_internal/pt-BR.data-display.js +2 -1
  71. package/dist/_internal/user-avatar/user-avatar.js +5 -5
  72. package/dist/charts.js +11 -11
  73. package/dist/{chunk-FJ3UZ4RC.js → chunk-2FKWKLSC.js} +5 -3
  74. package/dist/chunk-2FKWKLSC.js.map +1 -0
  75. package/dist/{chunk-BO6MT2S2.js → chunk-3HZKUN5J.js} +7 -6
  76. package/dist/chunk-3HZKUN5J.js.map +1 -0
  77. package/dist/{chunk-TYXFFNPM.js → chunk-3OTGREQG.js} +10 -10
  78. package/dist/{chunk-BEHT4IHH.js → chunk-3X2MA47R.js} +2 -2
  79. package/dist/{chunk-XHIBFBNP.js → chunk-3ZRK3BRN.js} +4 -2
  80. package/dist/chunk-3ZRK3BRN.js.map +1 -0
  81. package/dist/{chunk-X5OGIT2F.js → chunk-4L54KUZV.js} +22 -4
  82. package/dist/chunk-4L54KUZV.js.map +1 -0
  83. package/dist/{chunk-TRYR424I.js → chunk-6LOWZCH7.js} +15 -1
  84. package/dist/chunk-6LOWZCH7.js.map +1 -0
  85. package/dist/{chunk-6WHIJPEF.js → chunk-6PU5P7QT.js} +2 -2
  86. package/dist/chunk-7CUZTWKW.js +52 -0
  87. package/dist/chunk-7CUZTWKW.js.map +1 -0
  88. package/dist/{chunk-JIEVKHOH.js → chunk-7YJYIMWP.js} +7 -7
  89. package/dist/{chunk-YNZUYZ2O.js → chunk-A3DDEKLV.js} +2 -2
  90. package/dist/{chunk-FEKWKWGK.js → chunk-ARGVUTTL.js} +15 -1
  91. package/dist/chunk-ARGVUTTL.js.map +1 -0
  92. package/dist/{chunk-DYHOBKPU.js → chunk-BLZDSCIZ.js} +6 -6
  93. package/dist/{chunk-E2UOEI7N.js → chunk-BV2LOTMC.js} +2 -2
  94. package/dist/{chunk-O63ZROSY.js → chunk-BZBLPXV7.js} +4 -4
  95. package/dist/{chunk-OKRITX4S.js → chunk-CJ6XXM4X.js} +4 -4
  96. package/dist/{chunk-LV6AD6XC.js → chunk-DBI6AMNY.js} +4 -4
  97. package/dist/{chunk-QRRWLLXW.js → chunk-DSBC6O46.js} +2 -2
  98. package/dist/{chunk-3YFDGFEK.js → chunk-DVX4HDNP.js} +2 -2
  99. package/dist/{chunk-CJUK32UH.js → chunk-EEO7M5GU.js} +2 -2
  100. package/dist/{chunk-7XSCEHGA.js → chunk-EOQ6EKTS.js} +7 -7
  101. package/dist/{chunk-5RSK5M6M.js → chunk-FI2CQOGC.js} +63 -126
  102. package/dist/chunk-FI2CQOGC.js.map +1 -0
  103. package/dist/{chunk-Q2ERGAQO.js → chunk-FYAW5GBF.js} +33 -6
  104. package/dist/chunk-FYAW5GBF.js.map +1 -0
  105. package/dist/{chunk-AMLHEKSV.js → chunk-HI7JPDD6.js} +5 -5
  106. package/dist/chunk-J2AVWIMM.js +60 -0
  107. package/dist/chunk-J2AVWIMM.js.map +1 -0
  108. package/dist/{chunk-7QKIL5YF.js → chunk-J2GDA64N.js} +4 -4
  109. package/dist/{chunk-BAQ3ITZV.js → chunk-JFD742C3.js} +2 -2
  110. package/dist/{chunk-OBA75Y5O.js → chunk-JHWEL4NX.js} +61 -33
  111. package/dist/chunk-JHWEL4NX.js.map +1 -0
  112. package/dist/{chunk-HQCZT6TO.js → chunk-JVOEVTCZ.js} +5 -5
  113. package/dist/{chunk-WAO7UQRS.js → chunk-KANCE4MS.js} +3 -3
  114. package/dist/{chunk-XLU5WFSY.js → chunk-KRBPWTXW.js} +2 -2
  115. package/dist/{chunk-S6D7NOV7.js → chunk-L6JAALMX.js} +3 -3
  116. package/dist/{chunk-72HOUWAW.js → chunk-L6YTVXGN.js} +5 -3
  117. package/dist/{chunk-72HOUWAW.js.map → chunk-L6YTVXGN.js.map} +1 -1
  118. package/dist/chunk-LZNUBQ5I.js +181 -0
  119. package/dist/chunk-LZNUBQ5I.js.map +1 -0
  120. package/dist/{chunk-BECKKDYG.js → chunk-M2M4IDFU.js} +2 -2
  121. package/dist/{chunk-CSGBHYW6.js → chunk-M5Y42AZ4.js} +2 -2
  122. package/dist/chunk-MICX23P4.js +122 -0
  123. package/dist/chunk-MICX23P4.js.map +1 -0
  124. package/dist/{chunk-5CP5Z3YU.js → chunk-MPWA55CF.js} +4 -4
  125. package/dist/{chunk-5KK3I42O.js → chunk-NK6O4NE4.js} +13 -10
  126. package/dist/chunk-NK6O4NE4.js.map +1 -0
  127. package/dist/{chunk-RCTHCXS6.js → chunk-PJNIJIE6.js} +2 -2
  128. package/dist/{chunk-6ATXOJVQ.js → chunk-QADTI63U.js} +4 -4
  129. package/dist/{chunk-MW7P2C2C.js → chunk-QAEO52Z4.js} +2 -2
  130. package/dist/{chunk-5S5K73I6.js → chunk-QSOCOXVL.js} +3 -3
  131. package/dist/{chunk-NQCTANF3.js → chunk-QVDEGBME.js} +7 -7
  132. package/dist/{chunk-BQBEN44R.js → chunk-RDCIST7P.js} +2 -2
  133. package/dist/{chunk-HUXAIQC5.js → chunk-RZ3P4X2I.js} +2 -2
  134. package/dist/{chunk-WJMSND5Q.js → chunk-SCXVTNLE.js} +2 -2
  135. package/dist/{chunk-K6FCSB6T.js → chunk-SK2CTB3O.js} +6 -6
  136. package/dist/{chunk-QLJU7UUI.js → chunk-T7OIVPCO.js} +38 -3
  137. package/dist/chunk-T7OIVPCO.js.map +1 -0
  138. package/dist/{chunk-U2ILXZDG.js → chunk-TB5CRHTF.js} +2 -2
  139. package/dist/{chunk-SB2SEGR6.js → chunk-TIM4PXWN.js} +3 -3
  140. package/dist/{chunk-YDIC6LSP.js → chunk-VCQFDQM3.js} +27 -7
  141. package/dist/chunk-VCQFDQM3.js.map +1 -0
  142. package/dist/chunk-VIMMEADQ.js +164 -0
  143. package/dist/chunk-VIMMEADQ.js.map +1 -0
  144. package/dist/{chunk-6D5AMANO.js → chunk-WH3LUOCQ.js} +2 -2
  145. package/dist/{chunk-OWRQOYUE.js → chunk-WWR6APJR.js} +2 -2
  146. package/dist/{chunk-5BVAUUWL.js → chunk-X37NTEVS.js} +2 -2
  147. package/dist/{chunk-WW3F7DCX.js → chunk-Z2WZDVGG.js} +2 -2
  148. package/dist/{chunk-EXVCVXFX.js → chunk-ZH6NYB6Y.js} +3 -3
  149. package/dist/data-display/Alert.js +3 -3
  150. package/dist/data-display/Avatar.js +4 -4
  151. package/dist/data-display/CardKit.js +11 -11
  152. package/dist/data-display/Carousel.js +6 -5
  153. package/dist/data-display/Chart.js +11 -11
  154. package/dist/data-display/DataGrid.js +2 -2
  155. package/dist/data-display/DataViews.js +60 -35
  156. package/dist/data-display/FleetMap.js +9 -9
  157. package/dist/data-display/MapPreview.js +7 -6
  158. package/dist/en-US.js +1 -1
  159. package/dist/feedback/NotificationStatusNotice.js +4 -4
  160. package/dist/feedback/SequenceResolver.js +6 -6
  161. package/dist/form/Calendar.js +5 -5
  162. package/dist/form/DateRangePicker.js +10 -10
  163. package/dist/locales.js +5 -5
  164. package/dist/pt-BR.js +1 -1
  165. package/dist/types/components/data-display/DataViews/data-views-bar-controls.d.ts +15 -1
  166. package/dist/types/components/data-display/DataViews/data-views-bar-controls.d.ts.map +1 -1
  167. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +35 -0
  168. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  169. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +7 -1
  170. package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
  171. package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
  172. package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts +5 -3
  173. package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts.map +1 -1
  174. package/dist/types/components/data-display/DataViews/data-views-number-input.d.ts +10 -2
  175. package/dist/types/components/data-display/DataViews/data-views-number-input.d.ts.map +1 -1
  176. package/dist/types/components/data-display/DataViews/data-views-preset-chips.d.ts +10 -0
  177. package/dist/types/components/data-display/DataViews/data-views-preset-chips.d.ts.map +1 -1
  178. package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts +35 -0
  179. package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts.map +1 -0
  180. package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts +35 -0
  181. package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts.map +1 -0
  182. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts +2 -11
  183. package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
  184. package/dist/types/components/data-display/DataViews/data-views-range-summary.d.ts +21 -0
  185. package/dist/types/components/data-display/DataViews/data-views-range-summary.d.ts.map +1 -0
  186. package/dist/types/components/data-display/DataViews/data-views-still-anchor.d.ts +45 -0
  187. package/dist/types/components/data-display/DataViews/data-views-still-anchor.d.ts.map +1 -0
  188. package/dist/types/components/data-display/LazyImage/LazyImage.hooks.d.ts +1 -1
  189. package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
  190. package/dist/types/components/form/Calendar/CalendarDay.d.ts +2 -0
  191. package/dist/types/components/form/Calendar/CalendarDay.d.ts.map +1 -1
  192. package/dist/types/components/form/Calendar/CalendarDayCell.d.ts +2 -0
  193. package/dist/types/components/form/Calendar/CalendarDayCell.d.ts.map +1 -1
  194. package/dist/types/components/form/Calendar/CalendarMonth.d.ts +5 -0
  195. package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
  196. package/dist/types/en-US.data-display.d.ts.map +1 -1
  197. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  198. package/dist/user-avatar.js +5 -5
  199. package/package.json +1 -1
  200. package/src/components/data-display/DataViews/RESPONSIVE-BEHAVIOUR.md +59 -0
  201. package/src/components/data-display/DataViews/data-views-bar-controls.tsx +56 -1
  202. package/src/components/data-display/DataViews/data-views-copy.ts +36 -0
  203. package/src/components/data-display/DataViews/data-views-day-input.tsx +9 -1
  204. package/src/components/data-display/DataViews/data-views-inline-bar.tsx +5 -3
  205. package/src/components/data-display/DataViews/data-views-more-fields.tsx +1 -0
  206. package/src/components/data-display/DataViews/data-views-more-filters.tsx +82 -29
  207. package/src/components/data-display/DataViews/data-views-number-input.tsx +19 -9
  208. package/src/components/data-display/DataViews/data-views-preset-chips.tsx +165 -16
  209. package/src/components/data-display/DataViews/data-views-range-bounds.tsx +223 -0
  210. package/src/components/data-display/DataViews/data-views-range-calendar.tsx +185 -0
  211. package/src/components/data-display/DataViews/data-views-range-pill.tsx +71 -154
  212. package/src/components/data-display/DataViews/data-views-range-summary.tsx +66 -0
  213. package/src/components/data-display/DataViews/data-views-still-anchor.ts +93 -0
  214. package/src/components/form/Calendar/Calendar.md +17 -2
  215. package/src/components/form/Calendar/Calendar.tsx +56 -3
  216. package/src/components/form/Calendar/CalendarDay.tsx +33 -3
  217. package/src/components/form/Calendar/CalendarDayCell.tsx +4 -0
  218. package/src/components/form/Calendar/CalendarMonth.tsx +27 -5
  219. package/src/en-US.data-display.ts +12 -0
  220. package/src/pt-BR.data-display.ts +12 -0
  221. package/dist/chunk-5KK3I42O.js.map +0 -1
  222. package/dist/chunk-5RSK5M6M.js.map +0 -1
  223. package/dist/chunk-7D7CJRL7.js +0 -78
  224. package/dist/chunk-7D7CJRL7.js.map +0 -1
  225. package/dist/chunk-BO6MT2S2.js.map +0 -1
  226. package/dist/chunk-FEKWKWGK.js.map +0 -1
  227. package/dist/chunk-FJ3UZ4RC.js.map +0 -1
  228. package/dist/chunk-OBA75Y5O.js.map +0 -1
  229. package/dist/chunk-Q2ERGAQO.js.map +0 -1
  230. package/dist/chunk-QLJU7UUI.js.map +0 -1
  231. package/dist/chunk-TRYR424I.js.map +0 -1
  232. package/dist/chunk-X5OGIT2F.js.map +0 -1
  233. package/dist/chunk-XHIBFBNP.js.map +0 -1
  234. package/dist/chunk-YDIC6LSP.js.map +0 -1
  235. /package/dist/{chunk-TYXFFNPM.js.map → chunk-3OTGREQG.js.map} +0 -0
  236. /package/dist/{chunk-BEHT4IHH.js.map → chunk-3X2MA47R.js.map} +0 -0
  237. /package/dist/{chunk-6WHIJPEF.js.map → chunk-6PU5P7QT.js.map} +0 -0
  238. /package/dist/{chunk-JIEVKHOH.js.map → chunk-7YJYIMWP.js.map} +0 -0
  239. /package/dist/{chunk-YNZUYZ2O.js.map → chunk-A3DDEKLV.js.map} +0 -0
  240. /package/dist/{chunk-DYHOBKPU.js.map → chunk-BLZDSCIZ.js.map} +0 -0
  241. /package/dist/{chunk-E2UOEI7N.js.map → chunk-BV2LOTMC.js.map} +0 -0
  242. /package/dist/{chunk-O63ZROSY.js.map → chunk-BZBLPXV7.js.map} +0 -0
  243. /package/dist/{chunk-OKRITX4S.js.map → chunk-CJ6XXM4X.js.map} +0 -0
  244. /package/dist/{chunk-LV6AD6XC.js.map → chunk-DBI6AMNY.js.map} +0 -0
  245. /package/dist/{chunk-QRRWLLXW.js.map → chunk-DSBC6O46.js.map} +0 -0
  246. /package/dist/{chunk-3YFDGFEK.js.map → chunk-DVX4HDNP.js.map} +0 -0
  247. /package/dist/{chunk-CJUK32UH.js.map → chunk-EEO7M5GU.js.map} +0 -0
  248. /package/dist/{chunk-7XSCEHGA.js.map → chunk-EOQ6EKTS.js.map} +0 -0
  249. /package/dist/{chunk-AMLHEKSV.js.map → chunk-HI7JPDD6.js.map} +0 -0
  250. /package/dist/{chunk-7QKIL5YF.js.map → chunk-J2GDA64N.js.map} +0 -0
  251. /package/dist/{chunk-BAQ3ITZV.js.map → chunk-JFD742C3.js.map} +0 -0
  252. /package/dist/{chunk-HQCZT6TO.js.map → chunk-JVOEVTCZ.js.map} +0 -0
  253. /package/dist/{chunk-WAO7UQRS.js.map → chunk-KANCE4MS.js.map} +0 -0
  254. /package/dist/{chunk-XLU5WFSY.js.map → chunk-KRBPWTXW.js.map} +0 -0
  255. /package/dist/{chunk-S6D7NOV7.js.map → chunk-L6JAALMX.js.map} +0 -0
  256. /package/dist/{chunk-BECKKDYG.js.map → chunk-M2M4IDFU.js.map} +0 -0
  257. /package/dist/{chunk-CSGBHYW6.js.map → chunk-M5Y42AZ4.js.map} +0 -0
  258. /package/dist/{chunk-5CP5Z3YU.js.map → chunk-MPWA55CF.js.map} +0 -0
  259. /package/dist/{chunk-RCTHCXS6.js.map → chunk-PJNIJIE6.js.map} +0 -0
  260. /package/dist/{chunk-6ATXOJVQ.js.map → chunk-QADTI63U.js.map} +0 -0
  261. /package/dist/{chunk-MW7P2C2C.js.map → chunk-QAEO52Z4.js.map} +0 -0
  262. /package/dist/{chunk-5S5K73I6.js.map → chunk-QSOCOXVL.js.map} +0 -0
  263. /package/dist/{chunk-NQCTANF3.js.map → chunk-QVDEGBME.js.map} +0 -0
  264. /package/dist/{chunk-BQBEN44R.js.map → chunk-RDCIST7P.js.map} +0 -0
  265. /package/dist/{chunk-HUXAIQC5.js.map → chunk-RZ3P4X2I.js.map} +0 -0
  266. /package/dist/{chunk-WJMSND5Q.js.map → chunk-SCXVTNLE.js.map} +0 -0
  267. /package/dist/{chunk-K6FCSB6T.js.map → chunk-SK2CTB3O.js.map} +0 -0
  268. /package/dist/{chunk-U2ILXZDG.js.map → chunk-TB5CRHTF.js.map} +0 -0
  269. /package/dist/{chunk-SB2SEGR6.js.map → chunk-TIM4PXWN.js.map} +0 -0
  270. /package/dist/{chunk-6D5AMANO.js.map → chunk-WH3LUOCQ.js.map} +0 -0
  271. /package/dist/{chunk-OWRQOYUE.js.map → chunk-WWR6APJR.js.map} +0 -0
  272. /package/dist/{chunk-5BVAUUWL.js.map → chunk-X37NTEVS.js.map} +0 -0
  273. /package/dist/{chunk-WW3F7DCX.js.map → chunk-Z2WZDVGG.js.map} +0 -0
  274. /package/dist/{chunk-EXVCVXFX.js.map → chunk-ZH6NYB6Y.js.map} +0 -0
@@ -1,9 +1,3 @@
1
- import {
2
- pulseAnimation,
3
- rotateAnimation,
4
- scaleInAnimation,
5
- shimmerAnimation
6
- } from "./chunk-MTEQEPNY.js";
7
1
  import {
8
2
  ACTIVE_SCALE,
9
3
  AVATAR_SIZES,
@@ -23,6 +17,12 @@ import {
23
17
  SPINNER,
24
18
  STATUS_DOT
25
19
  } from "./chunk-6ZZGK5DT.js";
20
+ import {
21
+ pulseAnimation,
22
+ rotateAnimation,
23
+ scaleInAnimation,
24
+ shimmerAnimation
25
+ } from "./chunk-MTEQEPNY.js";
26
26
  import {
27
27
  absoluteInk,
28
28
  controlNeutral,
@@ -277,4 +277,4 @@ function AvatarView(props) {
277
277
  export {
278
278
  AvatarView
279
279
  };
280
- //# sourceMappingURL=chunk-7XSCEHGA.js.map
280
+ //# sourceMappingURL=chunk-EOQ6EKTS.js.map
@@ -1,9 +1,15 @@
1
1
  import {
2
- NumberBoundInput
3
- } from "./chunk-FJ3UZ4RC.js";
2
+ RangeBounds
3
+ } from "./chunk-VIMMEADQ.js";
4
4
  import {
5
5
  RangePresets
6
- } from "./chunk-7D7CJRL7.js";
6
+ } from "./chunk-LZNUBQ5I.js";
7
+ import {
8
+ presetsFor
9
+ } from "./chunk-CBOB5AV6.js";
10
+ import {
11
+ RangeSummary
12
+ } from "./chunk-J2AVWIMM.js";
7
13
  import {
8
14
  isRangeInverted,
9
15
  isRangeSet,
@@ -11,11 +17,8 @@ import {
11
17
  rangeChipLabel
12
18
  } from "./chunk-GCZJH4XL.js";
13
19
  import {
14
- useOutsideResetKey
15
- } from "./chunk-YOPMXGHY.js";
16
- import {
17
- presetsFor
18
- } from "./chunk-CBOB5AV6.js";
20
+ useStillAnchor
21
+ } from "./chunk-7CUZTWKW.js";
19
22
  import {
20
23
  useDataViewsCopy
21
24
  } from "./chunk-KHG57NAE.js";
@@ -23,8 +26,8 @@ import {
23
26
  TableFilter
24
27
  } from "./chunk-FORQEHRQ.js";
25
28
  import {
26
- DayBoundInput
27
- } from "./chunk-72HOUWAW.js";
29
+ TableFilterContext
30
+ } from "./chunk-7AIL2F5E.js";
28
31
  import {
29
32
  fieldHeight
30
33
  } from "./chunk-RGVNXES5.js";
@@ -35,6 +38,8 @@ import {
35
38
  fieldEdge
36
39
  } from "./chunk-7ZADLRLP.js";
37
40
  import {
41
+ rem,
42
+ remPx,
38
43
  sxRem
39
44
  } from "./chunk-YKCAJ2TN.js";
40
45
 
@@ -45,95 +50,10 @@ import Box from "@mui/material/Box/index.js";
45
50
  import Button from "@mui/material/Button/index.js";
46
51
  import Popover from "@mui/material/Popover/index.js";
47
52
  import Typography from "@mui/material/Typography/index.js";
48
- import { useState } from "react";
53
+ import useMediaQuery from "@mui/material/useMediaQuery/index.js";
54
+ import { useTheme } from "@mui/material/styles/index.js";
55
+ import { useContext } from "react";
49
56
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
50
- function BoundField({
51
- field,
52
- label,
53
- value,
54
- onChange,
55
- testId
56
- }) {
57
- const copy = useDataViewsCopy();
58
- if (field.kind === "day") {
59
- return /* @__PURE__ */ jsx(
60
- DayBoundInput,
61
- {
62
- mask: copy.filters.dayMask,
63
- invalidMessage: copy.filters.dayInvalid,
64
- label,
65
- value: value == null ? void 0 : String(value),
66
- onChange,
67
- testId
68
- }
69
- );
70
- }
71
- return /* @__PURE__ */ jsx(
72
- NumberBoundInput,
73
- {
74
- label,
75
- value,
76
- unit: field.unit,
77
- onChange,
78
- testId
79
- }
80
- );
81
- }
82
- function RangeBounds({
83
- field,
84
- value,
85
- onChange,
86
- testId
87
- }) {
88
- const copy = useDataViewsCopy();
89
- const inverted = isRangeInverted(value);
90
- const { key, emitted } = useOutsideResetKey(value);
91
- return /* @__PURE__ */ jsxs(Box, { "data-testid": `${testId}-panel`, children: [
92
- /* @__PURE__ */ jsx(Box, { sx: { "&:not(:empty)": { mb: 1.5 } }, children: /* @__PURE__ */ jsx(RangePresets, { presets: presetsFor(field, copy), value, onChange, testId }) }),
93
- /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "flex-start", gap: 1.5 }, children: [
94
- /* @__PURE__ */ jsx(
95
- BoundField,
96
- {
97
- field,
98
- label: copy.filters.rangeStart,
99
- value: value.min,
100
- onChange: (min) => onChange(emitted({ ...value, min })),
101
- testId: `${testId}-min`
102
- },
103
- `min-${key}`
104
- ),
105
- /* @__PURE__ */ jsx(
106
- BoundField,
107
- {
108
- field,
109
- label: copy.filters.rangeEnd,
110
- value: value.max,
111
- onChange: (max) => onChange(emitted({ ...value, max })),
112
- testId: `${testId}-max`
113
- },
114
- `max-${key}`
115
- )
116
- ] }),
117
- inverted && /* @__PURE__ */ jsx(
118
- Typography,
119
- {
120
- component: "p",
121
- "data-testid": `${testId}-inverted`,
122
- sx: { mt: 0.75, fontSize: sxRem(12), color: "error.main" },
123
- children: copy.filters.rangeInvalid
124
- }
125
- ),
126
- field.kind === "day" && !inverted && /* @__PURE__ */ jsx(
127
- Typography,
128
- {
129
- component: "p",
130
- "data-testid": `${testId}-inclusive`,
131
- sx: { mt: 0.75, fontSize: sxRem(12), color: "text.disabled" },
132
- children: copy.filters.rangeInclusiveNote
133
- }
134
- )
135
- ] });
136
- }
137
57
  function ClearAffordance({
138
58
  label,
139
59
  onClear,
@@ -207,6 +127,18 @@ function RangeTrigger({
207
127
  }
208
128
  );
209
129
  }
130
+ function useCalendarMonths() {
131
+ const theme = useTheme();
132
+ return useMediaQuery(theme.breakpoints.up("md")) ? 2 : 1;
133
+ }
134
+ var DAY_PAPER_SX = (theme) => ({
135
+ width: { xs: "100%", sm: rem(theme, 400), md: "auto" },
136
+ // Below `sm` 8px from each edge and 8px of padding, so the month gets the
137
+ // 280px seven 40px day columns need: at 320 it had 256 and every day was a
138
+ // 33px target (FUT-4144 UI review).
139
+ maxWidth: { xs: `calc(100% - ${rem(theme, 16)})`, sm: `calc(100% - ${rem(theme, 32)})` },
140
+ p: { xs: 1, sm: 2 }
141
+ });
210
142
  function RangePill({
211
143
  field,
212
144
  value,
@@ -214,10 +146,11 @@ function RangePill({
214
146
  onOpenChange,
215
147
  testIdPrefix
216
148
  }) {
217
- const copy = useDataViewsCopy();
218
- const [anchor, setAnchor] = useState(null);
219
- const active = isRangeSet(value);
149
+ const still = useStillAnchor();
220
150
  const testId = `${testIdPrefix}-range-${field.id}`;
151
+ const calendarMonths = useCalendarMonths();
152
+ const theme = useTheme();
153
+ const phone = useMediaQuery(theme.breakpoints.down("sm"));
221
154
  return /* @__PURE__ */ jsxs(Fragment, { children: [
222
155
  /* @__PURE__ */ jsx(
223
156
  RangeTrigger,
@@ -226,40 +159,35 @@ function RangePill({
226
159
  value,
227
160
  onChange,
228
161
  onOpen: (element) => {
229
- setAnchor(element);
162
+ still.open(element);
230
163
  onOpenChange?.(true);
231
164
  },
232
- open: Boolean(anchor),
165
+ open: Boolean(still.anchor),
233
166
  testId
234
167
  }
235
168
  ),
236
169
  /* @__PURE__ */ jsxs(
237
170
  Popover,
238
171
  {
239
- open: Boolean(anchor),
240
- anchorEl: anchor,
172
+ ...still.popoverProps,
241
173
  onClose: () => {
242
- setAnchor(null);
174
+ still.close();
243
175
  onOpenChange?.(false);
244
176
  },
245
- anchorOrigin: { vertical: "bottom", horizontal: "left" },
246
- slotProps: { paper: { sx: { p: 2, mt: 0.5 } } },
177
+ marginThreshold: field.kind === "day" && phone ? remPx(theme, 8) : void 0,
178
+ slotProps: { paper: { ref: still.paperRef, sx: [{ p: 2, mt: 0.5 }, field.kind === "day" && DAY_PAPER_SX] } },
247
179
  children: [
248
- /* @__PURE__ */ jsx(RangeBounds, { field, value, onChange, testId }),
249
- active && /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 2, mt: 1.5 }, children: [
250
- /* @__PURE__ */ jsx(Typography, { component: "span", sx: { fontSize: sxRem(12), color: "text.secondary" }, children: rangeChipLabel(field, value) }),
251
- /* @__PURE__ */ jsx(
252
- Button,
253
- {
254
- variant: "text",
255
- size: "small",
256
- onClick: () => onChange({}),
257
- "data-testid": `${testId}-clear`,
258
- sx: { textTransform: "none" },
259
- children: copy.filters.clear
260
- }
261
- )
262
- ] })
180
+ /* @__PURE__ */ jsx(
181
+ RangeBounds,
182
+ {
183
+ field,
184
+ value,
185
+ onChange,
186
+ testId,
187
+ calendarMonths
188
+ }
189
+ ),
190
+ /* @__PURE__ */ jsx(RangeSummary, { field, value, onClear: () => onChange({}), testId })
263
191
  ]
264
192
  }
265
193
  )
@@ -272,10 +200,20 @@ function PanelRangeField({
272
200
  testId
273
201
  }) {
274
202
  const copy = useDataViewsCopy();
203
+ const panel = useContext(TableFilterContext);
275
204
  if (field.kind === "day") {
276
205
  return /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", flexDirection: "column", gap: 1 }, children: [
277
206
  /* @__PURE__ */ jsx(Typography, { component: "span", sx: { fontSize: sxRem(12), fontWeight: 500, color: "text.secondary" }, children: field.label }),
278
- /* @__PURE__ */ jsx(RangeBounds, { field, value, onChange, testId })
207
+ /* @__PURE__ */ jsx(
208
+ RangeBounds,
209
+ {
210
+ field,
211
+ value,
212
+ onChange,
213
+ testId,
214
+ showCalendar: panel ? panel.open : true
215
+ }
216
+ )
279
217
  ] });
280
218
  }
281
219
  return /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", flexDirection: "column", gap: 1 }, children: [
@@ -294,8 +232,7 @@ function PanelRangeField({
294
232
  }
295
233
 
296
234
  export {
297
- RangeBounds,
298
235
  RangePill,
299
236
  PanelRangeField
300
237
  };
301
- //# sourceMappingURL=chunk-5RSK5M6M.js.map
238
+ //# sourceMappingURL=chunk-FI2CQOGC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-range-pill.tsx"],"sourcesContent":["'use client';\n\n/**\n * A range filter as a PILL in the inline filter bar — the same affordance the\n * multi-select facets use, so \"Data\" and \"Valor\" sit in the filter row beside\n * \"Pagamento\"/\"Situação\"/\"Método\" instead of floating above the grid.\n *\n * Before this the inline bar rendered pills only, and `rangeFields` had a\n * surface on the slide-in panel alone — which `inlineFilters` REPLACES on a wide\n * screen. So a range filter was invisible on exactly the screens that use it,\n * and a page wanting one had to hang its own inputs outside the grid, outside\n * `DataViewState`, and outside the grid's \"Limpar filtros\" (FUT-668).\n */\nimport CloseIcon from '@mui/icons-material/Close';\nimport ChevronDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Popover from '@mui/material/Popover/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport { useTheme, type Theme } from '@mui/material/styles/index.js';\nimport React, { useContext } from 'react';\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { TableFilter } from '../../layout/TableFilter';\nimport { TableFilterContext } from '../../layout/TableFilter/TableFilterContext';\nimport { RangePresets } from './data-views-preset-chips';\nimport { RangeBounds } from './data-views-range-bounds';\nimport { RangeSummary } from './data-views-range-summary';\nimport { useStillAnchor } from './data-views-still-anchor';\nimport { presetsFor } from './data-views-range-presets';\nimport {\n isRangeInverted,\n isRangeSet,\n numericRange,\n rangeChipLabel,\n} from './data-views-range-values';\nimport type { RangeFieldConfig, RangeValue } from './data-views-types';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { fieldHeight } from '../../../tokens/field-height';\nimport { fieldEdge } from '../../../tokens/field-edge';\nimport { rem, remPx, sxRem } from '../../../tokens/relative';\n\n// Re-exported: the pair moved to its own file, and its importers keep their path.\nexport { RangeBounds };\n\n/**\n * The pill + its popover. Bounds commit on change (the list is server-driven, so\n * each edit is a query) and the popover stays open, which is what lets a\n * merchant set \"de\" and then \"até\" without re-opening it.\n */\n/** An applied range clears from the pill itself — re-opening to empty two fields is three gestures for one intent. */\nfunction ClearAffordance({\n label,\n onClear,\n testId,\n}: {\n label: string;\n onClear: () => void;\n testId: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const clear = (event: React.SyntheticEvent): void => {\n event.stopPropagation();\n onClear();\n };\n return (\n <Box\n component=\"span\"\n role=\"button\"\n tabIndex={0}\n aria-label={copy.filters.clearRange(label)}\n data-testid={testId}\n onClick={clear}\n onKeyDown={(event: React.KeyboardEvent) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n clear(event);\n }}\n sx={{ display: 'inline-flex', borderRadius: 999, p: 0.125, '&:hover': { bgcolor: 'action.selected' } }}\n >\n <CloseIcon sx={{ fontSize: sxRem(14) }} />\n </Box>\n );\n}\n\n/** The pill button: its label carries the applied window, and its tone the state. */\nfunction RangeTrigger<T extends Record<string, unknown>>({\n field,\n value,\n onChange,\n onOpen,\n open,\n testId,\n}: {\n field: RangeFieldConfig<T>;\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n onOpen: (anchor: HTMLElement) => void;\n open: boolean;\n testId: string;\n}): React.JSX.Element {\n const active = isRangeSet(value);\n const inverted = isRangeInverted(value);\n // An INVERTED window gets its own tone rather than the ordinary \"applied\"\n // one: it is applied, and it matches nothing, and those are different states.\n // At rest the pill draws the one field border (`fieldEdge`).\n const tone = inverted ? 'error.main' : active ? 'primary.main' : null;\n return (\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n data-testid={testId}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={(event) => onOpen(event.currentTarget)}\n // ✕ FIRST, chevron LAST — the same shape as every other pill. It used to\n // replace the chevron at the end, so a range pill and a multi-select pill\n // put the clear in different places, and an applied range lost the\n // affordance that says it opens.\n startIcon={\n active ? (\n <ClearAffordance label={field.label} onClear={() => onChange({})} testId={`${testId}-clear-inline`} />\n ) : undefined\n }\n endIcon={<ChevronDownIcon sx={{ fontSize: sxRem(16) }} />}\n sx={{\n borderRadius: fieldRadiusPx,\n height: fieldHeight,\n px: 1.5,\n maxWidth: sxRem(280),\n color: inverted ? 'error.main' : 'text.primary',\n fontWeight: 600,\n fontSize: sxRem(13),\n textTransform: 'none',\n whiteSpace: 'nowrap',\n borderColor: (theme) => tone ?? fieldEdge(theme),\n bgcolor: active ? 'action.selected' : 'background.paper',\n '&:hover': {\n borderColor: active ? tone : 'text.primary',\n bgcolor: active ? 'action.selected' : 'action.hover',\n },\n }}\n >\n {/* The applied bounds, in the label — a pill reading only \"Valor\" hides\n the very thing that is narrowing the list. */}\n <Box component=\"span\" sx={{ overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {active ? rangeChipLabel(field, value) : field.label}\n </Box>\n </Button>\n );\n}\n\n/**\n * How many months the pill's calendar shows: two from the theme's `md` up,\n * where the popover has the ~670px they take; one below it.\n *\n * A media query, not an `sx` breakpoint, because it decides what to RENDER —\n * CSS cannot un-render a second month. `up('md')` so that where nothing can be\n * measured (a test, the server) the answer is the one month that always fits.\n */\nfunction useCalendarMonths(): 1 | 2 {\n const theme = useTheme();\n return useMediaQuery(theme.breakpoints.up('md')) ? 2 : 1;\n}\n\n/**\n * The day popover's width. Below `sm` it takes the screen's (less the\n * popover's own 16px margins, which its `maxWidth` already keeps), so the boxes\n * and the month share it instead of leaving a strip of grid beside a narrow\n * card. From `sm` to `md` it holds one month, and sized to its content the\n * preset row alone stretched it to ~515px with the month hugging the left and\n * a band of nothing beside it; 400 keeps the month and the boxes one width.\n * From `md` its content — two months — sets it.\n */\nconst DAY_PAPER_SX = (theme: Theme) => ({\n width: { xs: '100%', sm: rem(theme, 400), md: 'auto' },\n // Below `sm` 8px from each edge and 8px of padding, so the month gets the\n // 280px seven 40px day columns need: at 320 it had 256 and every day was a\n // 33px target (FUT-4144 UI review).\n maxWidth: { xs: `calc(100% - ${rem(theme, 16)})`, sm: `calc(100% - ${rem(theme, 32)})` },\n p: { xs: 1, sm: 2 },\n});\n\n\nexport function RangePill<T extends Record<string, unknown>>({\n field,\n value,\n onChange,\n onOpenChange,\n testIdPrefix,\n}: {\n field: RangeFieldConfig<T>;\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n /** So a measured toolbar can hold still while this is open. */\n onOpenChange?: (open: boolean) => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const still = useStillAnchor();\n const testId = `${testIdPrefix}-range-${field.id}`;\n const calendarMonths = useCalendarMonths();\n const theme = useTheme();\n const phone = useMediaQuery(theme.breakpoints.down('sm'));\n return (\n <>\n <RangeTrigger\n field={field}\n value={value}\n onChange={onChange}\n onOpen={(element) => {\n still.open(element);\n onOpenChange?.(true);\n }}\n open={Boolean(still.anchor)}\n testId={testId}\n />\n <Popover\n {...still.popoverProps}\n onClose={() => {\n still.close();\n onOpenChange?.(false);\n }}\n // Below `sm` a day popover keeps 8px from the screen's edges instead of 16.\n marginThreshold={field.kind === 'day' && phone ? remPx(theme, 8) : undefined}\n slotProps={{ paper: { ref: still.paperRef, sx: [{ p: 2, mt: 0.5 }, field.kind === 'day' && DAY_PAPER_SX] } }}\n >\n <RangeBounds\n field={field}\n value={value}\n onChange={onChange}\n testId={testId}\n calendarMonths={calendarMonths}\n />\n <RangeSummary field={field} value={value} onClear={() => onChange({})} testId={testId} />\n </Popover>\n </>\n );\n}\n\n\n/**\n * One range on the SLIDE-IN panel (and the narrow-screen modal): the numeric\n * control the panel already had, or — for a day range, which that control cannot\n * express — the same `De`/`Até` pair the pill's popover uses.\n */\nexport function PanelRangeField<T extends Record<string, unknown>>({\n field,\n value,\n onChange,\n testId,\n}: {\n field: RangeFieldConfig<T>;\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n testId: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n // The slide-in panel stays mounted while closed; its calendar does not.\n // Outside a `TableFilter` (the \"Mais\" sheet, a test) the pair is on screen.\n const panel = useContext(TableFilterContext);\n if (field.kind === \"day\") {\n return (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\n <Typography component=\"span\" sx={{ fontSize: sxRem(12), fontWeight: 500, color: \"text.secondary\" }}>\n {field.label}\n </Typography>\n <RangeBounds\n field={field}\n value={value}\n onChange={onChange}\n testId={testId}\n showCalendar={panel ? panel.open : true}\n />\n </Box>\n );\n }\n return (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 1 }}>\n <TableFilter.RangeField\n label={field.label}\n unit={field.unit}\n value={numericRange(value)}\n onChange={(range) => onChange(range)}\n testId={testId}\n />\n {/* Below the numeric control here, unlike the pill's popover: this one\n renders its own label, and chips above it would separate the label\n from the field it names. */}\n <RangePresets presets={presetsFor(field, copy)} value={value} onChange={onChange} testId={testId} />\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,OAAO,eAAe;AACtB,OAAO,qBAAqB;AAC5B,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,aAAa;AACpB,OAAO,gBAAgB;AACvB,OAAO,mBAAmB;AAC1B,SAAS,gBAA4B;AACrC,SAAgB,kBAAkB;AA4D5B,SA6HF,UA7HE,KAyIA,YAzIA;AA7BN,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACF,GAIsB;AACpB,QAAM,OAAO,iBAAiB;AAC9B,QAAM,QAAQ,CAAC,UAAsC;AACnD,UAAM,gBAAgB;AACtB,YAAQ;AAAA,EACV;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,UAAU;AAAA,MACV,cAAY,KAAK,QAAQ,WAAW,KAAK;AAAA,MACzC,eAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAW,CAAC,UAA+B;AACzC,YAAI,MAAM,QAAQ,WAAW,MAAM,QAAQ,IAAK;AAChD,cAAM,eAAe;AACrB,cAAM,KAAK;AAAA,MACb;AAAA,MACA,IAAI,EAAE,SAAS,eAAe,cAAc,KAAK,GAAG,OAAO,WAAW,EAAE,SAAS,kBAAkB,EAAE;AAAA,MAErG,8BAAC,aAAU,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA;AAAA,EAC1C;AAEJ;AAGA,SAAS,aAAgD;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOsB;AACpB,QAAM,SAAS,WAAW,KAAK;AAC/B,QAAM,WAAW,gBAAgB,KAAK;AAItC,QAAM,OAAO,WAAW,eAAe,SAAS,iBAAiB;AACjE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,MAAK;AAAA,MACL,eAAa;AAAA,MACb,iBAAc;AAAA,MACd,iBAAe;AAAA,MACf,SAAS,CAAC,UAAU,OAAO,MAAM,aAAa;AAAA,MAK9C,WACE,SACE,oBAAC,mBAAgB,OAAO,MAAM,OAAO,SAAS,MAAM,SAAS,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,iBAAiB,IAClG;AAAA,MAEN,SAAS,oBAAC,mBAAgB,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA,MACvD,IAAI;AAAA,QACF,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,UAAU,MAAM,GAAG;AAAA,QACnB,OAAO,WAAW,eAAe;AAAA,QACjC,YAAY;AAAA,QACZ,UAAU,MAAM,EAAE;AAAA,QAClB,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,aAAa,CAAC,UAAU,QAAQ,UAAU,KAAK;AAAA,QAC/C,SAAS,SAAS,oBAAoB;AAAA,QACtC,WAAW;AAAA,UACT,aAAa,SAAS,OAAO;AAAA,UAC7B,SAAS,SAAS,oBAAoB;AAAA,QACxC;AAAA,MACF;AAAA,MAIA,8BAAC,OAAI,WAAU,QAAO,IAAI,EAAE,UAAU,UAAU,cAAc,WAAW,GACtE,mBAAS,eAAe,OAAO,KAAK,IAAI,MAAM,OACjD;AAAA;AAAA,EACF;AAEJ;AAUA,SAAS,oBAA2B;AAClC,QAAM,QAAQ,SAAS;AACvB,SAAO,cAAc,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,IAAI;AACzD;AAWA,IAAM,eAAe,CAAC,WAAkB;AAAA,EACtC,OAAO,EAAE,IAAI,QAAQ,IAAI,IAAI,OAAO,GAAG,GAAG,IAAI,OAAO;AAAA;AAAA;AAAA;AAAA,EAIrD,UAAU,EAAE,IAAI,eAAe,IAAI,OAAO,EAAE,CAAC,KAAK,IAAI,eAAe,IAAI,OAAO,EAAE,CAAC,IAAI;AAAA,EACvF,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE;AACpB;AAGO,SAAS,UAA6C;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOsB;AACpB,QAAM,QAAQ,eAAe;AAC7B,QAAM,SAAS,GAAG,YAAY,UAAU,MAAM,EAAE;AAChD,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,QAAQ,SAAS;AACvB,QAAM,QAAQ,cAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AACxD,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,CAAC,YAAY;AACnB,gBAAM,KAAK,OAAO;AAClB,yBAAe,IAAI;AAAA,QACrB;AAAA,QACA,MAAM,QAAQ,MAAM,MAAM;AAAA,QAC1B;AAAA;AAAA,IACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG,MAAM;AAAA,QACV,SAAS,MAAM;AACb,gBAAM,MAAM;AACZ,yBAAe,KAAK;AAAA,QACtB;AAAA,QAEA,iBAAiB,MAAM,SAAS,SAAS,QAAQ,MAAM,OAAO,CAAC,IAAI;AAAA,QACnE,WAAW,EAAE,OAAO,EAAE,KAAK,MAAM,UAAU,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,SAAS,SAAS,YAAY,EAAE,EAAE;AAAA,QAE3G;AAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACF;AAAA,UACA,oBAAC,gBAAa,OAAc,OAAc,SAAS,MAAM,SAAS,CAAC,CAAC,GAAG,QAAgB;AAAA;AAAA;AAAA,IACzF;AAAA,KACF;AAEJ;AAQO,SAAS,gBAAmD;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKsB;AACpB,QAAM,OAAO,iBAAiB;AAG9B,QAAM,QAAQ,WAAW,kBAAkB;AAC3C,MAAI,MAAM,SAAS,OAAO;AACxB,WACE,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC1D;AAAA,0BAAC,cAAW,WAAU,QAAO,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,YAAY,KAAK,OAAO,iBAAiB,GAC9F,gBAAM,OACT;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,cAAc,QAAQ,MAAM,OAAO;AAAA;AAAA,MACrC;AAAA,OACF;AAAA,EAEJ;AACA,SACE,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GAC1D;AAAA;AAAA,MAAC,YAAY;AAAA,MAAZ;AAAA,QACC,OAAO,MAAM;AAAA,QACb,MAAM,MAAM;AAAA,QACZ,OAAO,aAAa,KAAK;AAAA,QACzB,UAAU,CAAC,UAAU,SAAS,KAAK;AAAA,QACnC;AAAA;AAAA,IACF;AAAA,IAIA,oBAAC,gBAAa,SAAS,WAAW,OAAO,IAAI,GAAG,OAAc,UAAoB,QAAgB;AAAA,KACpG;AAEJ;","names":[]}
@@ -4,15 +4,18 @@ import {
4
4
  import {
5
5
  useCalendar
6
6
  } from "./chunk-TPMT3J32.js";
7
+ import {
8
+ navigateFocus
9
+ } from "./chunk-LZOCNAUA.js";
7
10
  import {
8
11
  resolveCalendarProps
9
12
  } from "./chunk-I4K5JMS4.js";
10
13
  import {
11
14
  CalendarSelectorsMonth
12
- } from "./chunk-5BVAUUWL.js";
15
+ } from "./chunk-X37NTEVS.js";
13
16
  import {
14
17
  CalendarMonth
15
- } from "./chunk-YDIC6LSP.js";
18
+ } from "./chunk-VCQFDQM3.js";
16
19
  import {
17
20
  resolveLabels
18
21
  } from "./chunk-LL2BWQPM.js";
@@ -27,7 +30,7 @@ import {
27
30
  // src/components/form/Calendar/Calendar.tsx
28
31
  import Box from "@mui/material/Box/index.js";
29
32
  import Paper from "@mui/material/Paper/index.js";
30
- import React, { useCallback, useRef } from "react";
33
+ import React, { useCallback, useEffect, useRef } from "react";
31
34
  import { jsx, jsxs } from "react/jsx-runtime";
32
35
  var containerSx = (monthsToShow) => ({
33
36
  p: 3,
@@ -43,6 +46,7 @@ var containerSx = (monthsToShow) => ({
43
46
  });
44
47
  var buildDayContext = (props, calendar) => ({
45
48
  selectionMode: props.selectionMode,
49
+ locale: props.locale,
46
50
  value: props.value,
47
51
  range: props.range,
48
52
  showOutsideDays: props.showOutsideDays,
@@ -68,6 +72,23 @@ var useRootRef = (forwarded) => {
68
72
  );
69
73
  return { rootRef, setRoot };
70
74
  };
75
+ var OWN_MONTH_STOP = '[role="gridcell"][tabindex="0"][data-in-month="true"]';
76
+ var ANY_STOP = '[role="gridcell"][tabindex="0"]';
77
+ var useFollowDayFocus = (rootRef, focusedDate, firstDayOfWeek) => {
78
+ const movedFrom = useRef(null);
79
+ useEffect(() => {
80
+ const from = movedFrom.current;
81
+ movedFrom.current = null;
82
+ if (from === null || from === focusedDate.getTime()) return;
83
+ const root = rootRef.current;
84
+ (root?.querySelector(OWN_MONTH_STOP) ?? root?.querySelector(ANY_STOP))?.focus();
85
+ }, [rootRef, focusedDate]);
86
+ return (event) => {
87
+ const onDay = event.target.getAttribute("role") === "gridcell";
88
+ const moves = navigateFocus(event.key, focusedDate, { firstDayOfWeek, shiftKey: event.shiftKey }) !== null;
89
+ movedFrom.current = onDay && moves ? focusedDate.getTime() : null;
90
+ };
91
+ };
71
92
  var Calendar = React.forwardRef((componentProps, ref) => {
72
93
  const props = resolveCalendarProps(componentProps);
73
94
  const { monthsToShow, locale, renderHeader, renderFooter, className, ariaLabel } = props;
@@ -76,6 +97,8 @@ var Calendar = React.forwardRef((componentProps, ref) => {
76
97
  const bounds = { minDate: props.minDate, maxDate: props.maxDate };
77
98
  const picker = useCalendarPicker({ rootRef, bounds, ...calendar });
78
99
  const dayContext = buildDayContext(props, calendar);
100
+ const noteKeyTarget = useFollowDayFocus(rootRef, calendar.focusedDate, props.firstDayOfWeek);
101
+ const labels = resolveLabels(EN_US_UI_LABELS.calendar, props.labels);
79
102
  const firstMonth = calendar.monthMatrices[0];
80
103
  return /* @__PURE__ */ jsxs(
81
104
  Paper,
@@ -85,7 +108,10 @@ var Calendar = React.forwardRef((componentProps, ref) => {
85
108
  role: "application",
86
109
  "aria-label": ariaLabel,
87
110
  tabIndex: 0,
88
- onKeyDown: picker.view === "days" ? calendar.handleKeyDown : void 0,
111
+ onKeyDown: picker.view === "days" ? (event) => {
112
+ noteKeyTarget(event);
113
+ calendar.handleKeyDown(event);
114
+ } : void 0,
89
115
  "data-testid": "calendar-container",
90
116
  sx: containerSx(monthsToShow),
91
117
  children: [
@@ -97,7 +123,7 @@ var Calendar = React.forwardRef((componentProps, ref) => {
97
123
  weekdayNames: calendar.weekdayNames,
98
124
  dayContext,
99
125
  bounds,
100
- labels: resolveLabels(EN_US_UI_LABELS.calendar, props.labels),
126
+ labels,
101
127
  picker,
102
128
  onPreviousMonth: () => {
103
129
  picker.showDays();
@@ -117,6 +143,7 @@ var Calendar = React.forwardRef((componentProps, ref) => {
117
143
  locale,
118
144
  weekdayNames: calendar.weekdayNames,
119
145
  renderHeader,
146
+ labels: props.labels ? labels : void 0,
120
147
  onPreviousMonth: calendar.goToPreviousMonth,
121
148
  onNextMonth: calendar.goToNextMonth,
122
149
  dayContext
@@ -135,4 +162,4 @@ export {
135
162
  Calendar,
136
163
  Calendar_default
137
164
  };
138
- //# sourceMappingURL=chunk-Q2ERGAQO.js.map
165
+ //# sourceMappingURL=chunk-FYAW5GBF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/Calendar/Calendar.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport Paper from '@mui/material/Paper/index.js';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nimport { EN_US_UI_LABELS } from '../../../en-US.labels';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { resolveLabels } from '../../../utils/resolve-labels';\n\nimport { resolveCalendarProps } from './Calendar.helpers';\nimport { useCalendar } from './Calendar.hooks';\nimport { navigateFocus } from './Calendar.keyboard';\nimport { useCalendarPicker } from './Calendar.picker';\nimport type { CalendarProps, ResolvedCalendarProps } from './Calendar.types';\nimport type { DayCellContext } from './CalendarDayCell';\nimport { CalendarMonth } from './CalendarMonth';\nimport { CalendarSelectorsMonth } from './CalendarSelectorsMonth';\n\nconst containerSx = (monthsToShow: number): SxProps<Theme> => ({\n p: 3,\n display: 'flex',\n flexDirection: monthsToShow > 1 ? 'row' : 'column',\n gap: 3,\n outline: 'none',\n '&:focus-within': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(2),\n },\n});\n\ntype CalendarState = ReturnType<typeof useCalendar>;\n\nconst buildDayContext = (props: ResolvedCalendarProps, calendar: CalendarState): DayCellContext => ({\n selectionMode: props.selectionMode,\n locale: props.locale,\n value: props.value,\n range: props.range,\n showOutsideDays: props.showOutsideDays,\n renderDay: props.renderDay,\n dayClassName: props.dayClassName,\n hoveredDate: calendar.hoveredDate,\n focusedDate: calendar.focusedDate,\n today: calendar.today,\n isDisabled: calendar.isDisabled,\n onSelect: calendar.handleDateClick,\n onHover: calendar.handleDateMouseEnter,\n onHoverEnd: calendar.handleDateMouseLeave,\n});\n\n// The container is the forwarded ref's AND the picker's: focus falls back to it.\nconst useRootRef = (forwarded: React.ForwardedRef<HTMLDivElement>) => {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const setRoot = useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwarded === 'function') forwarded(node);\n else if (forwarded) forwarded.current = node;\n },\n [forwarded],\n );\n return { rootRef, setRoot };\n};\n\n/** The tab stop as a day of its OWN month — side by side, an outside copy of it comes first in the DOM. */\nconst OWN_MONTH_STOP = '[role=\"gridcell\"][tabindex=\"0\"][data-in-month=\"true\"]';\nconst ANY_STOP = '[role=\"gridcell\"][tabindex=\"0\"]';\n\n/**\n * Keeps the keyboard's place visible when it is on a DAY.\n *\n * The arrows move the grid's one tab stop (`focusedDate`), and that is enough\n * while the container holds focus. But a reader who tabbed onto a day, or\n * clicked one, has focus on that day's button: the tab stop moved and focus\n * stayed behind on a cell that is no longer it, so the ring sat on the old day\n * and a month change unmounted it under the reader.\n *\n * So a NAVIGATION key pressed on a day notes where the tab stop was, and once\n * it has moved, focus follows it to the day in its own month. Any other key —\n * Enter, Tab, Escape — clears the note: Enter re-sets the same day and must\n * leave focus alone, and a stale note would pull focus into the grid on the\n * next mouse pick.\n */\nconst useFollowDayFocus = (\n rootRef: React.RefObject<HTMLDivElement | null>,\n focusedDate: Date,\n firstDayOfWeek: number,\n) => {\n const movedFrom = useRef<number | null>(null);\n useEffect(() => {\n const from = movedFrom.current;\n movedFrom.current = null;\n if (from === null || from === focusedDate.getTime()) return;\n const root = rootRef.current;\n (root?.querySelector<HTMLElement>(OWN_MONTH_STOP) ?? root?.querySelector<HTMLElement>(ANY_STOP))?.focus();\n }, [rootRef, focusedDate]);\n return (event: React.KeyboardEvent) => {\n const onDay = (event.target as HTMLElement).getAttribute('role') === 'gridcell';\n const moves = navigateFocus(event.key, focusedDate, { firstDayOfWeek, shiftKey: event.shiftKey }) !== null;\n movedFrom.current = onDay && moves ? focusedDate.getTime() : null;\n };\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>((componentProps, ref) => {\n const props = resolveCalendarProps(componentProps);\n const { monthsToShow, locale, renderHeader, renderFooter, className, ariaLabel } = props;\n\n const calendar = useCalendar(props);\n const { rootRef, setRoot } = useRootRef(ref);\n const bounds = { minDate: props.minDate, maxDate: props.maxDate };\n const picker = useCalendarPicker({ rootRef, bounds, ...calendar });\n const dayContext = buildDayContext(props, calendar);\n const noteKeyTarget = useFollowDayFocus(rootRef, calendar.focusedDate, props.firstDayOfWeek);\n const labels = resolveLabels(EN_US_UI_LABELS.calendar, props.labels);\n // The selectors caption always resolves to one month (see the helpers).\n const firstMonth = calendar.monthMatrices[0];\n\n return (\n <Paper\n ref={setRoot}\n className={className}\n role=\"application\"\n aria-label={ariaLabel}\n tabIndex={0}\n // The day keys belong to the days: with a month or year grid open there\n // is no focused day on screen to move.\n onKeyDown={\n picker.view === 'days'\n ? (event) => {\n noteKeyTarget(event);\n calendar.handleKeyDown(event);\n }\n : undefined\n }\n data-testid=\"calendar-container\"\n sx={containerSx(monthsToShow)}\n >\n <Box ref={calendar.gridRef} sx={{ display: 'flex', gap: 3, flexWrap: 'wrap' }}>\n {props.captionLayout === 'selectors' && firstMonth ? (\n <CalendarSelectorsMonth\n matrix={firstMonth}\n locale={locale}\n weekdayNames={calendar.weekdayNames}\n dayContext={dayContext}\n bounds={bounds}\n labels={labels}\n picker={picker}\n onPreviousMonth={() => {\n picker.showDays();\n calendar.goToPreviousMonth();\n }}\n onNextMonth={() => {\n picker.showDays();\n calendar.goToNextMonth();\n }}\n />\n ) : (\n calendar.monthMatrices.map((matrix, index) => (\n <CalendarMonth\n key={`month-${matrix.year}-${matrix.month}`}\n matrix={matrix}\n monthIndex={index}\n monthsToShow={monthsToShow}\n locale={locale}\n weekdayNames={calendar.weekdayNames}\n renderHeader={renderHeader}\n // Only a host that passed `labels` gets named arrows: without\n // them the arrows caption stays exactly as it always was.\n labels={props.labels ? labels : undefined}\n onPreviousMonth={calendar.goToPreviousMonth}\n onNextMonth={calendar.goToNextMonth}\n dayContext={dayContext}\n />\n ))\n )}\n </Box>\n\n {renderFooter && (\n <Box sx={{ mt: 2, pt: 2, borderTop: 1, borderColor: 'divider' }}>{renderFooter}</Box>\n )}\n </Paper>\n );\n});\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n"],"mappings":"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","names":[]}
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  renderChartByType
3
- } from "./chunk-6ATXOJVQ.js";
3
+ } from "./chunk-QADTI63U.js";
4
+ import {
5
+ ChartContainer
6
+ } from "./chunk-RIRTW5EU.js";
4
7
  import {
5
8
  getSizeStyles,
6
9
  getVariantStyles,
7
10
  plotHeightPx
8
11
  } 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-AMLHEKSV.js.map
114
+ //# sourceMappingURL=chunk-HI7JPDD6.js.map
@@ -0,0 +1,60 @@
1
+ import {
2
+ isRangeSet,
3
+ rangeChipLabel
4
+ } from "./chunk-GCZJH4XL.js";
5
+ import {
6
+ useDataViewsCopy
7
+ } from "./chunk-KHG57NAE.js";
8
+ import {
9
+ sxRem
10
+ } from "./chunk-YKCAJ2TN.js";
11
+
12
+ // src/components/data-display/DataViews/data-views-range-summary.tsx
13
+ import Box from "@mui/material/Box/index.js";
14
+ import Button from "@mui/material/Button/index.js";
15
+ import Typography from "@mui/material/Typography/index.js";
16
+ import { jsx, jsxs } from "react/jsx-runtime";
17
+ function RangeSummary({
18
+ field,
19
+ value,
20
+ onClear,
21
+ testId
22
+ }) {
23
+ const copy = useDataViewsCopy();
24
+ const active = isRangeSet(value);
25
+ if (!active && field.kind !== "day") return null;
26
+ return /* @__PURE__ */ jsxs(
27
+ Box,
28
+ {
29
+ "aria-hidden": active ? void 0 : true,
30
+ sx: {
31
+ display: "flex",
32
+ alignItems: "center",
33
+ justifyContent: "space-between",
34
+ gap: 2,
35
+ mt: { xs: 0.5, sm: 1.5 },
36
+ visibility: active ? void 0 : "hidden"
37
+ },
38
+ children: [
39
+ /* @__PURE__ */ jsx(Typography, { component: "span", sx: { fontSize: sxRem(12), color: "text.secondary" }, children: active ? rangeChipLabel(field, value) : field.label }),
40
+ /* @__PURE__ */ jsx(
41
+ Button,
42
+ {
43
+ variant: "text",
44
+ size: "small",
45
+ onClick: active ? onClear : void 0,
46
+ tabIndex: active ? void 0 : -1,
47
+ "data-testid": active ? `${testId}-clear` : void 0,
48
+ sx: { textTransform: "none" },
49
+ children: copy.filters.clear
50
+ }
51
+ )
52
+ ]
53
+ }
54
+ );
55
+ }
56
+
57
+ export {
58
+ RangeSummary
59
+ };
60
+ //# sourceMappingURL=chunk-J2AVWIMM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-range-summary.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React from 'react';\n\nimport { useDataViewsCopy } from './data-views-copy-context';\nimport { isRangeSet, rangeChipLabel } from './data-views-range-values';\nimport type { RangeFieldConfig, RangeValue } from './data-views-types';\nimport { sxRem } from '../../../tokens/relative';\n\n/**\n * The applied window in words, and \"Limpar\".\n *\n * An inverted window is not an error the merchant must fix before the list\n * responds — it simply matches nothing, and saying so beats an empty grid with\n * no explanation (FUT-668).\n *\n * A DAY filter keeps the row's height while nothing is applied: its first tap\n * on the calendar applies a bound, and a row appearing then grew the popover\n * 26px and moved it 32px up at 320×568, the day under the finger with it\n * (FUT-4144 UI review round 2). The held row is invisible and inert.\n */\nexport function RangeSummary<T extends Record<string, unknown>>({\n field,\n value,\n onClear,\n testId,\n}: {\n field: RangeFieldConfig<T>;\n value: RangeValue;\n onClear: () => void;\n testId: string;\n}): React.JSX.Element | null {\n const copy = useDataViewsCopy();\n const active = isRangeSet(value);\n if (!active && field.kind !== 'day') return null;\n return (\n <Box\n aria-hidden={active ? undefined : true}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n mt: { xs: 0.5, sm: 1.5 },\n visibility: active ? undefined : 'hidden',\n }}\n >\n <Typography component=\"span\" sx={{ fontSize: sxRem(12), color: 'text.secondary' }}>\n {active ? rangeChipLabel(field, value) : field.label}\n </Typography>\n <Button\n variant=\"text\"\n size=\"small\"\n onClick={active ? onClear : undefined}\n tabIndex={active ? undefined : -1}\n data-testid={active ? `${testId}-clear` : undefined}\n sx={{ textTransform: 'none' }}\n >\n {copy.filters.clear}\n </Button>\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAEA,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,gBAAgB;AAmCnB,SAWE,KAXF;AAfG,SAAS,aAAgD;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAK6B;AAC3B,QAAM,OAAO,iBAAiB;AAC9B,QAAM,SAAS,WAAW,KAAK;AAC/B,MAAI,CAAC,UAAU,MAAM,SAAS,MAAO,QAAO;AAC5C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,SAAS,SAAY;AAAA,MAClC,IAAI;AAAA,QACF,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,KAAK;AAAA,QACL,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI;AAAA,QACvB,YAAY,SAAS,SAAY;AAAA,MACnC;AAAA,MAEA;AAAA,4BAAC,cAAW,WAAU,QAAO,IAAI,EAAE,UAAU,MAAM,EAAE,GAAG,OAAO,iBAAiB,GAC7E,mBAAS,eAAe,OAAO,KAAK,IAAI,MAAM,OACjD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS,SAAS,UAAU;AAAA,YAC5B,UAAU,SAAS,SAAY;AAAA,YAC/B,eAAa,SAAS,GAAG,MAAM,WAAW;AAAA,YAC1C,IAAI,EAAE,eAAe,OAAO;AAAA,YAE3B,eAAK,QAAQ;AAAA;AAAA,QAChB;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -3,19 +3,19 @@ import {
3
3
  } from "./chunk-R26WP22N.js";
4
4
  import {
5
5
  useDateRangePicker
6
- } from "./chunk-HUXAIQC5.js";
6
+ } from "./chunk-RZ3P4X2I.js";
7
7
  import {
8
8
  DateRangeQuickList
9
9
  } from "./chunk-6KKQHJE7.js";
10
10
  import {
11
11
  DateRangeFields
12
- } from "./chunk-5S5K73I6.js";
12
+ } from "./chunk-QSOCOXVL.js";
13
13
  import {
14
14
  toLocalDay
15
15
  } from "./chunk-SUTOAW7I.js";
16
16
  import {
17
17
  Calendar
18
- } from "./chunk-Q2ERGAQO.js";
18
+ } from "./chunk-FYAW5GBF.js";
19
19
 
20
20
  // src/components/form/DateRangePicker/DateRangePicker.tsx
21
21
  import Box from "@mui/material/Box/index.js";
@@ -181,4 +181,4 @@ export {
181
181
  DateRangePicker,
182
182
  DateRangePicker_default
183
183
  };
184
- //# sourceMappingURL=chunk-7QKIL5YF.js.map
184
+ //# sourceMappingURL=chunk-J2GDA64N.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FleetCanvas
3
- } from "./chunk-MW7P2C2C.js";
3
+ } from "./chunk-QAEO52Z4.js";
4
4
  import {
5
5
  FleetRoster
6
6
  } from "./chunk-A4B27HYU.js";
@@ -79,4 +79,4 @@ function FleetBody({
79
79
  export {
80
80
  FleetBody
81
81
  };
82
- //# sourceMappingURL=chunk-BAQ3ITZV.js.map
82
+ //# sourceMappingURL=chunk-JFD742C3.js.map