@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 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/data-views-number-input.tsx"],"sourcesContent":["'use client';\n\n/**\n * A numeric bound typed the way Brazilians write numbers, replacing\n * `<input type=\"number\">`.\n *\n * The native control parses in the BROWSER's locale, and it does not fail\n * loudly when the text does not match — it drops what it cannot read and keeps\n * the rest. Typing `50,00` into it, measured in Chromium:\n *\n * digitado \"50,00\" -> campo \"5000\" -> filtro R$ 5.000\n * digitado \"17,50\" -> campo \"1750\" -> filtro R$ 1.750\n * digitado \"50.00\" -> campo \"500\" -> filtro R$ 500\n *\n * The comma is deleted and the digits close ranks, so the merchant asks for\n * fifty reais and gets a filter a HUNDRED times larger. The list empties, the\n * chip reads `Valor: ≥ R$ 5000`, and nothing on screen connects that to the\n * `50,00` they typed. It reads as \"the value filter is broken\", which is how it\n * was reported.\n *\n * So the field parses pt-BR itself: `,` is the decimal separator and `.` groups\n * thousands, which is what `R$ 1.234,56` means to the person reading it. A\n * plain `50` still works, and so does `50.00` — a dot with exactly two digits\n * after it is far more likely to be a decimal typed on a numeric keypad than a\n * thousands group, and reading it as `5000` is the very failure this replaces.\n *\n * WHICH KEYPAD, and where the request has to be made. `inputMode` goes on the\n * `<input>`, via `inputProps` — set on the `TextField` it rides the spread onto\n * the root `FormControl` div, an element nothing types into, so the attribute\n * has no effect and a phone goes on offering letters for a field that accepts\n * none of them. It is `decimal` rather than `numeric` because the numeric pad\n * has no comma on iOS, and the comma is the separator this field exists to\n * accept — `numeric` here would reopen the bug above from the other side, with\n * `17,50` untypeable rather than misread. Autofill is off alongside it: its\n * saved-value strip covers the keypad to offer names and addresses, none of\n * which survive `ALLOWED` anyway.\n */\nimport Box from '@mui/material/Box/index.js';\nimport TextField from '@mui/material/TextField/index.js';\nimport React, { useEffect, useState } from 'react';\nimport { fieldTextFieldStyles } from '../../../tokens/field-height';\nimport { sxRem } from '../../../tokens/relative';\n\n/** Everything this field lets through: digits and the two separators. */\nconst ALLOWED = /[^\\d.,]/g;\n\n/**\n * pt-BR text → number, or `undefined` when it is not one (yet).\n *\n * `.` is a thousands group and `,` is the decimal point, EXCEPT when a lone dot\n * is followed by one or two digits and no comma is present — `50.00` and `1.5`\n * are decimals somebody typed, while `1.234` is a thousand.\n */\nexport function parsePtBrNumber(text: string): number | undefined {\n const cleaned = text.replace(ALLOWED, '');\n if (cleaned === '') return undefined;\n const hasComma = cleaned.includes(',');\n const dots = cleaned.split('.').length - 1;\n const lastDot = cleaned.lastIndexOf('.');\n const dotIsDecimal =\n !hasComma && dots === 1 && cleaned.length - lastDot - 1 > 0 && cleaned.length - lastDot - 1 <= 2;\n const normalized = dotIsDecimal\n ? cleaned\n : cleaned.replace(/\\./g, '').replace(',', '.');\n const amount = Number(normalized);\n return Number.isFinite(amount) ? amount : undefined;\n}\n\n/**\n * A stored bound → the text the merchant reads, with a comma for the decimal\n * point.\n *\n * It takes a STRING too, and that is not defensive typing: a range restored\n * from the URL arrives as one (`?totalCents_gte=5000`). Narrowing to `number`\n * and dropping the rest emptied the field on every reload — and then the next\n * keystroke wrote a bound built from nothing.\n */\nexport function formatPtBrNumber(amount: number | string | undefined): string {\n if (amount == null || amount === '') return '';\n return String(amount).replace('.', ',');\n}\n\n/** The same, as a number — `undefined` when the bound is unset or unusable. */\nfunction boundAsNumber(amount: number | string | undefined): number | undefined {\n if (amount == null || amount === '') return undefined;\n const parsed = typeof amount === 'number' ? amount : Number(amount);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * One end of a numeric range. The BOUND stays a plain `number` — nothing\n * downstream learns that the typing surface changed.\n */\nexport function NumberBoundInput({\n label,\n value,\n unit,\n onChange,\n testId,\n}: {\n label: string;\n /** The applied bound. A range restored from the URL hands this over as a string. */\n value: number | string | undefined;\n /** Rendered as a start adornment (\"R$\"), not parsed out of the text. */\n unit?: string;\n onChange: (bound: number | undefined) => void;\n testId: string;\n}): React.JSX.Element {\n const applied = boundAsNumber(value);\n const [text, setText] = useState(() => formatPtBrNumber(value));\n\n // Re-sync only when the applied bound moved somewhere the text does not\n // already mean — a \"Limpar\", a saved view. Comparing through the PARSE rather\n // than the string keeps `50,` and `50,00` from being rewritten mid-edit.\n useEffect(() => {\n setText((current) => (parsePtBrNumber(current) === applied ? current : formatPtBrNumber(applied)));\n }, [applied]);\n\n return (\n <TextField\n size=\"small\"\n type=\"text\"\n label={label}\n value={text}\n onChange={(event) => {\n // Reject the characters rather than silently dropping them AFTER\n // parsing — a letter should not move the number.\n const next = event.target.value.replace(ALLOWED, '');\n setText(next);\n const amount = parsePtBrNumber(next);\n // A bare separator (`50,`) parses to nothing yet; leave the applied\n // bound alone rather than clearing it half-way through a decimal.\n if (next === '') return onChange(undefined);\n if (amount !== undefined) onChange(amount);\n }}\n // Blur TIDIES, it does not rewrite. Text that already means the applied\n // bound is left exactly as typed — `20`, `17,50` and `1.234,56` all stay\n // — and only something that does not (`50,,`) snaps back.\n //\n // Padding the field to the chip's precision was tried and is worse than\n // the mismatch it closed: settling `20` to `20,00` means the next edit\n // starts from text the merchant did not write, so appending a digit to\n // make it 200 produces `20,000`, which parses back to 20. The filter then\n // ignores the keystroke, which is exactly the \"não funciona\" this whole\n // control exists to end. An input must hold what was typed into it; the\n // CHIP is where the applied window gets written in full.\n onBlur={() =>\n setText((current) =>\n parsePtBrNumber(current) === applied ? current : formatPtBrNumber(applied),\n )\n }\n InputLabelProps={{ shrink: true }}\n // `inputMode` belongs on the `<input>`, never on the TextField — see the\n // keypad note at the top of this file for what goes wrong up there.\n inputProps={{ 'data-testid': testId, inputMode: 'decimal', autoComplete: 'off' }}\n InputProps={\n unit\n ? {\n startAdornment: (\n <Box component=\"span\" sx={{ mr: 0.5, color: 'text.secondary' }}>\n {unit}\n </Box>\n ),\n }\n : undefined\n }\n sx={[{ width: sxRem(140) }, fieldTextFieldStyles]}\n />\n );\n}\n"],"mappings":";;;;;;;;AAqCA,OAAO,SAAS;AAChB,OAAO,eAAe;AACtB,SAAgB,WAAW,gBAAgB;AAwH3B;AAnHhB,IAAM,UAAU;AAST,SAAS,gBAAgB,MAAkC;AAChE,QAAM,UAAU,KAAK,QAAQ,SAAS,EAAE;AACxC,MAAI,YAAY,GAAI,QAAO;AAC3B,QAAM,WAAW,QAAQ,SAAS,GAAG;AACrC,QAAM,OAAO,QAAQ,MAAM,GAAG,EAAE,SAAS;AACzC,QAAM,UAAU,QAAQ,YAAY,GAAG;AACvC,QAAM,eACJ,CAAC,YAAY,SAAS,KAAK,QAAQ,SAAS,UAAU,IAAI,KAAK,QAAQ,SAAS,UAAU,KAAK;AACjG,QAAM,aAAa,eACf,UACA,QAAQ,QAAQ,OAAO,EAAE,EAAE,QAAQ,KAAK,GAAG;AAC/C,QAAM,SAAS,OAAO,UAAU;AAChC,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAWO,SAAS,iBAAiB,QAA6C;AAC5E,MAAI,UAAU,QAAQ,WAAW,GAAI,QAAO;AAC5C,SAAO,OAAO,MAAM,EAAE,QAAQ,KAAK,GAAG;AACxC;AAGA,SAAS,cAAc,QAAyD;AAC9E,MAAI,UAAU,QAAQ,WAAW,GAAI,QAAO;AAC5C,QAAM,SAAS,OAAO,WAAW,WAAW,SAAS,OAAO,MAAM;AAClE,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAMO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQsB;AACpB,QAAM,UAAU,cAAc,KAAK;AACnC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,MAAM,iBAAiB,KAAK,CAAC;AAK9D,YAAU,MAAM;AACd,YAAQ,CAAC,YAAa,gBAAgB,OAAO,MAAM,UAAU,UAAU,iBAAiB,OAAO,CAAE;AAAA,EACnG,GAAG,CAAC,OAAO,CAAC;AAEZ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACA,OAAO;AAAA,MACP,UAAU,CAAC,UAAU;AAGnB,cAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,SAAS,EAAE;AACnD,gBAAQ,IAAI;AACZ,cAAM,SAAS,gBAAgB,IAAI;AAGnC,YAAI,SAAS,GAAI,QAAO,SAAS,MAAS;AAC1C,YAAI,WAAW,OAAW,UAAS,MAAM;AAAA,MAC3C;AAAA,MAYA,QAAQ,MACN;AAAA,QAAQ,CAAC,YACP,gBAAgB,OAAO,MAAM,UAAU,UAAU,iBAAiB,OAAO;AAAA,MAC3E;AAAA,MAEF,iBAAiB,EAAE,QAAQ,KAAK;AAAA,MAGhC,YAAY,EAAE,eAAe,QAAQ,WAAW,WAAW,cAAc,MAAM;AAAA,MAC/E,YACE,OACI;AAAA,QACE,gBACE,oBAAC,OAAI,WAAU,QAAO,IAAI,EAAE,IAAI,KAAK,OAAO,iBAAiB,GAC1D,gBACH;AAAA,MAEJ,IACA;AAAA,MAEN,IAAI,CAAC,EAAE,OAAO,MAAM,GAAG,EAAE,GAAG,oBAAoB;AAAA;AAAA,EAClD;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/data-views-more-filters.tsx"],"sourcesContent":["\"use client\";\n\nimport KeyboardArrowDownRoundedIcon from \"@mui/icons-material/KeyboardArrowDownRounded\";\n// A FUNNEL, not the tune sliders this used to share with \"Exibir\". The two\n// sit a few px apart on the same bar and do unrelated things — one narrows\n// WHICH rows you see, the other changes HOW they are shown — and with one\n// glyph between them the bar offered the operator no way to tell which was\n// which. On a phone, where both are icon-only, they were indistinguishable.\nimport FilterAltRoundedIcon from \"@mui/icons-material/FilterAltRounded\";\nimport Popover from \"@mui/material/Popover/index.js\";\nimport type { Theme } from \"@mui/material/styles/index.js\";\nimport { useState } from \"react\";\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { Button } from \"../../form/Button\";\nimport { Box } from \"../../../mui/Box\";\nimport { Text } from \"../../typography/Text\";\n\nimport { fieldClearing, MoreGroup, MoreQuick, type MoreFieldProps } from \"./data-views-more-fields\";\nimport type { OverflowField } from \"./data-views-overflow\";\nimport { rem, sxRem } from \"../../../tokens/relative\";\n\n/**\n * \"MAIS\" — the filter overflow: its trigger, its panel and its footer. What\n * goes INSIDE it is `data-views-more-fields`.\n *\n * It holds the fields that had no room on the toolbar. An applied filter is\n * ranked ahead of an idle one for the visible slots but is NOT exempt (see\n * `useFilterOverflow`), so an applied filter can be in here — on a phone, most\n * of them are. That is why the trigger changes tone and counts the applied\n * ones: a filter you cannot see is a filter you forget you set, and the badge\n * is what stops that.\n */\n\ninterface MoreFiltersProps<T extends Record<string, unknown>> extends MoreFieldProps {\n fields: OverflowField<T>[];\n}\n\n/**\n * The trigger, badged with how many fields had no room on the bar — and told\n * apart when some of them are APPLIED.\n *\n * An applied filter can land in here now (it is ranked first, not exempt), so\n * this button is the only thing on screen still saying it exists. A neutral\n * badge reading \"3\" would make \"three filters you have not used\" and \"three\n * filters narrowing this list\" look identical, which is the whole failure the\n * old exemption was written to avoid. So an overflow holding applied filters\n * takes the applied tone and counts them in its own badge.\n */\nfunction MoreTrigger({\n count,\n appliedCount,\n compact,\n onOpen,\n testIdPrefix,\n}: {\n count: number;\n appliedCount: number;\n /** Icon only — the same rung that strips Exibir/Exportar. */\n compact: boolean;\n onOpen: (anchor: HTMLElement) => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const applied = appliedCount > 0;\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n color=\"neutral\"\n onClick={(event) => onOpen(event.currentTarget as HTMLElement)}\n dataTestId={`${testIdPrefix}-more-filters`}\n aria-label={\n applied\n ? copy.filters.moreFiltersApplied(count, appliedCount)\n : copy.filters.moreFilters(count)\n }\n >\n <Box\n component=\"span\"\n sx={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 0.5,\n color: applied ? \"primary.main\" : undefined,\n }}\n >\n <FilterAltRoundedIcon fontSize=\"small\" />\n {!compact && (\n <Box component=\"span\" sx={{ display: { xs: \"none\", sm: \"inline\" } }}>\n {copy.filters.moreTriggerLabel}\n </Box>\n )}\n <Box\n component=\"span\"\n data-testid={`${testIdPrefix}-more-badge`}\n sx={{\n px: 0.75,\n borderRadius: 5,\n bgcolor: applied ? \"primary.main\" : \"action.selected\",\n color: applied ? \"primary.contrastText\" : undefined,\n fontSize: sxRem(11),\n fontWeight: applied ? 700 : undefined,\n }}\n >\n {applied ? appliedCount : count}\n </Box>\n {!compact && <KeyboardArrowDownRoundedIcon fontSize=\"small\" />}\n </Box>\n </Button>\n );\n}\n\n/** The panel's heading: what these are, and why they are in here. */\nfunction MoreHeading(): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n px: 1.5,\n py: 1,\n borderBottom: 1,\n borderColor: \"divider\",\n }}\n >\n <Text variant=\"caption\" as=\"span\">\n <Box component=\"span\" sx={{ textTransform: \"uppercase\", letterSpacing: sxRem(0.5), color: \"text.disabled\" }}>\n {copy.filters.moreHeading}\n </Box>\n </Text>\n <Text variant=\"caption\" as=\"span\">\n <Box component=\"span\" sx={{ ml: \"auto\", color: \"text.disabled\" }}>\n {copy.filters.overflowNote}\n </Box>\n </Text>\n </Box>\n );\n}\n\n/**\n * The panel's own way back to the unfiltered list.\n *\n * The bar's \"Limpar\" is the primary one, but it is a control like any other\n * and the ladder can take its label — and on the narrowest rungs this panel is\n * where most of the fields ended up anyway. Clearing everything from inside it\n * saves closing it to reach a button three pixels wide.\n */\nfunction MoreFooter({\n onClearAll,\n testIdPrefix,\n}: {\n onClearAll: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <Box sx={{ px: 1.5, py: 1, borderTop: 1, borderColor: \"divider\" }}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onClearAll}\n data-testid={`${testIdPrefix}-more-clear-all`}\n sx={{\n width: \"100%\",\n border: 0,\n p: 0,\n bgcolor: \"transparent\",\n cursor: \"pointer\",\n font: \"inherit\",\n fontSize: sxRem(13),\n textAlign: \"left\",\n color: \"primary.main\",\n \"&:hover\": { textDecoration: \"underline\" },\n }}\n >\n {copy.filters.clearAll}\n </Box>\n </Box>\n );\n}\n\n/** The panel's body: a shed quick chip as a toggle row, anything else as a labelled group. */\nfunction MoreFields<T extends Record<string, unknown>>({\n fields,\n ...rest\n}: MoreFiltersProps<T>): React.JSX.Element {\n return (\n <>\n {fields.map((field) =>\n field.quick ? (\n <MoreQuick key={field.id} quick={field.quick} {...rest} />\n ) : (\n <MoreGroup key={field.id} field={field} {...rest} />\n ),\n )}\n </>\n );\n}\n\n/** The overflow trigger + panel. Renders nothing when everything fits. */\nexport function MoreFilters<T extends Record<string, unknown>>({\n fields,\n onOpenChange,\n onClearAll,\n anyApplied,\n compact = false,\n clearKey,\n ...rest\n}: MoreFiltersProps<T> & {\n /** Changes on every clear-all; the fields here are keyed on it (FUT-4144). */\n clearKey?: number;\n /** Icon only — the same rung that strips Exibir/Exportar. */\n compact?: boolean;\n /** Clears every filter, not just the ones in here. */\n onClearAll: () => void;\n /** Whether anything is applied anywhere — the footer is pointless otherwise. */\n anyApplied: boolean;\n /**\n * So the shell can FREEZE the measured split while this panel is open.\n *\n * Applying a filter in here makes its field active, and an active field\n * takes an inline slot first — so the field being edited was promoted OUT of\n * this panel mid-keystroke, taking the focused input with it. Typing \"12\"\n * got as far as \"1\" and then had nowhere to go.\n */\n onOpenChange?: (open: boolean) => void;\n}): React.JSX.Element | null {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n if (fields.length === 0) return null;\n return (\n <>\n <MoreTrigger\n count={fields.length}\n appliedCount={\n fields.filter(\n (field) =>\n fieldClearing({\n field,\n pills: rest.pills,\n ranges: rest.ranges,\n onTogglePill: rest.onTogglePill,\n onChangeRange: rest.onChangeRange,\n }).applied,\n ).length\n }\n compact={compact}\n onOpen={(element) => {\n setAnchor(element);\n onOpenChange?.(true);\n }}\n testIdPrefix={rest.testIdPrefix}\n />\n <Popover\n open={Boolean(anchor)}\n anchorEl={anchor}\n onClose={() => {\n setAnchor(null);\n onOpenChange?.(false);\n }}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n slotProps={{ paper: { sx: { width: sxRem(300), maxWidth: (theme: Theme) => `calc(100vw - ${rem(theme, 32)})` } } }}\n >\n <Box data-testid={`${rest.testIdPrefix}-more-panel`}>\n <MoreHeading />\n {/* overflowX hidden, not auto: this panel is a fixed 300px and its\n contents are told to shrink into it. A horizontal scrollbar here\n means something refused to, which is a bug to fix rather than a\n scrollbar to live with. */}\n <Box sx={{ maxHeight: sxRem(320), overflowY: \"auto\", overflowX: \"hidden\", p: 1.5, minWidth: 0 }}>\n <MoreFields key={clearKey} fields={fields} {...rest} />\n </Box>\n {anyApplied && (\n <MoreFooter onClearAll={onClearAll} testIdPrefix={rest.testIdPrefix} />\n )}\n </Box>\n </Popover>\n </>\n );\n}\n"],"mappings":"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","names":["default"]}
@@ -1 +0,0 @@
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, 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 { 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 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\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 // 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={picker.view === 'days' ? calendar.handleKeyDown : undefined}\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={resolveLabels(EN_US_UI_LABELS.calendar, props.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 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 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/data-views-bar-controls.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * THE TWO BARE AFFORDANCES ON THE FILTER BAR.\n *\n * Neither opens anything, which is what sets them apart from every other\n * control on that row and why they are styled flat rather than as outlined\n * pills: one clears the filters, one leaves a search takeover. Giving them a\n * pill's weight made \"Limpar\" read as a sixth filter.\n *\n * Their own module because `data-views-inline-bar` outgrew the file-size gate.\n */\nimport CloseRoundedIcon from \"@mui/icons-material/CloseRounded\";\nimport FilterAltOffRoundedIcon from \"@mui/icons-material/FilterAltOffRounded\";\nimport Tooltip from \"@mui/material/Tooltip/index.js\";\n\nimport { Box } from \"../../../mui/Box\";\nimport { fieldRadiusPx } from \"../../../tokens/field-radius\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { fieldHeight } from \"../../../tokens/field-height\";\nimport { sxRem } from \"../../../tokens/relative\";\n\n/**\n * \"Limpar\" — one gesture back to the unfiltered list.\n *\n * Present ONLY while something is applied, and last in the cluster, because it\n * is destructive and must never be where a filter control was a moment ago.\n * Each pill already carries its own ✕; this is the other job — six applied\n * filters is six ✕ hunts, and the operator who wants \"show me everything\n * again\" has no way to say it.\n *\n * Loses its label on the same rung Exibir/Exportar lose theirs, and keeps a\n * tooltip when it does: it is one of the two controls (with the search) whose\n * icon has to carry the whole meaning on a phone.\n */\nexport function ClearAllControl({\n onClearAll,\n compact,\n testIdPrefix,\n}: {\n onClearAll: () => void;\n compact: boolean;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n // No border, no fill. Every other control on this row is an outlined field\n // because it OPENS something; this one is an escape hatch, and giving it the\n // same weight made it read as a sixth filter. Quiet until hovered.\n const button = (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onClearAll}\n data-testid={`${testIdPrefix}-clear-all`}\n aria-label={copy.filters.clearAll}\n sx={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 0.5,\n height: fieldHeight,\n px: compact ? 0.75 : 1,\n border: 0,\n borderRadius: fieldRadiusPx,\n bgcolor: \"transparent\",\n cursor: \"pointer\",\n font: \"inherit\",\n fontSize: sxRem(13),\n whiteSpace: \"nowrap\",\n color: \"text.secondary\",\n \"&:hover\": { color: \"text.primary\", bgcolor: \"action.hover\" },\n }}\n >\n <FilterAltOffRoundedIcon sx={{ fontSize: sxRem(16) }} />\n {!compact && <Box component=\"span\">{copy.filters.clear}</Box>}\n </Box>\n );\n return compact ? <Tooltip title={copy.filters.clearAll}>{button}</Tooltip> : button;\n}\n\n/**\n * The way out of a search takeover.\n *\n * A phone has no Escape key, and without this the takeover is a one-way door\n * onto a bar with no filters on it.\n\n/**\n * The way out of a search takeover.\n *\n * A phone has no Escape key, and without this the takeover is a one-way door\n * onto a bar with no filters on it.\n */\nexport function CloseSearchControl({\n onClose,\n testIdPrefix,\n}: {\n onClose: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <Tooltip title={copy.search.close}>\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onClose}\n aria-label={copy.search.close}\n data-testid={`${testIdPrefix}-search-close`}\n sx={{\n display: \"inline-flex\",\n alignItems: \"center\",\n height: fieldHeight,\n px: 0.75,\n border: 0,\n borderRadius: fieldRadiusPx,\n bgcolor: \"transparent\",\n cursor: \"pointer\",\n color: \"text.secondary\",\n \"&:hover\": { color: \"text.primary\", bgcolor: \"action.hover\" },\n }}\n >\n <CloseRoundedIcon sx={{ fontSize: sxRem(18) }} />\n </Box>\n </Tooltip>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAYA,OAAO,sBAAsB;AAC7B,OAAO,6BAA6B;AACpC,OAAO,aAAa;AAmChB,SAuBE,KAvBF;AAdG,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACF,GAIsB;AACpB,QAAM,OAAO,iBAAiB;AAI9B,QAAM,SACJ;AAAA,IAACA;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAS;AAAA,MACT,eAAa,GAAG,YAAY;AAAA,MAC5B,cAAY,KAAK,QAAQ;AAAA,MACzB,IAAI;AAAA,QACF,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,IAAI,UAAU,OAAO;AAAA,QACrB,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,UAAU,MAAM,EAAE;AAAA,QAClB,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,WAAW,EAAE,OAAO,gBAAgB,SAAS,eAAe;AAAA,MAC9D;AAAA,MAEA;AAAA,4BAAC,2BAAwB,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA,QACrD,CAAC,WAAW,oBAACA,UAAA,EAAI,WAAU,QAAQ,eAAK,QAAQ,OAAM;AAAA;AAAA;AAAA,EACzD;AAEF,SAAO,UAAU,oBAAC,WAAQ,OAAO,KAAK,QAAQ,UAAW,kBAAO,IAAa;AAC/E;AAcO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AACF,GAGsB;AACpB,QAAM,OAAO,iBAAiB;AAC9B,SACE,oBAAC,WAAQ,OAAO,KAAK,OAAO,OAC1B;AAAA,IAACA;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY,KAAK,OAAO;AAAA,MACxB,eAAa,GAAG,YAAY;AAAA,MAC5B,IAAI;AAAA,QACF,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,WAAW,EAAE,OAAO,gBAAgB,SAAS,eAAe;AAAA,MAC9D;AAAA,MAEA,8BAAC,oBAAiB,IAAI,EAAE,UAAU,MAAM,EAAE,EAAE,GAAG;AAAA;AAAA,EACjD,GACF;AAEJ;","names":["default"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/pt-BR.data-display.ts"],"sourcesContent":["/**\n * The pt-BR pack for the data-display family. Split out of `pt-BR.ts`, which is a\n * barrel over this folder — see that file for why.\n */\nimport type { DataViewsCopy } from \"./components/data-display/DataViews/data-views-copy\";\nimport type {\n CarouselCopy,\n DataGridCopy,\n DataStateCopy,\n LightboxCopy,\n MapPreviewCopy,\n TimingDiagramCopy,\n} from './copy';\nimport { PT_BR_TABLE_FILTER_COPY } from './pt-BR.layout';\nimport {\n PT_BR_CATEGORY_SELECT_COPY,\n PT_BR_CONFIRM_ACTION_COPY,\n PT_BR_SAVED_VIEWS_LABELS,\n} from './pt-BR.shared';\n\nexport const PT_BR_LIGHTBOX_COPY: LightboxCopy = {\n close: \"Fechar\",\n previous: \"Anterior\",\n next: \"Próximo\",\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n resetZoom: \"Restaurar o zoom\",\n play: \"Iniciar a apresentação\",\n pause: \"Pausar a apresentação\",\n dialogLabel: \"Galeria de imagens\",\n itemPosition: (index, total) => `Item ${index} de ${total}`,\n videoFallback: (index, total) => `Vídeo ${index} de ${total}`,\n imageFallback: (index, total) => `Imagem ${index} de ${total}`,\n thumbnailFallback: (index) => `Miniatura ${index}`,\n};\n\nexport const PT_BR_DATA_GRID_COPY: DataGridCopy = {\n sortBy: (header) => `Ordenar por ${header}`,\n selectRow: (rowNumber) => `Selecionar linha ${rowNumber}`,\n selectAllRows: \"Selecionar todas as linhas\",\n expandRow: \"Expandir linha\",\n collapseRow: \"Recolher linha\",\n gridLabel: \"Grade de dados\",\n};\n\nexport const PT_BR_MAP_PREVIEW_COPY: Required<MapPreviewCopy> = {\n zoomIn: \"Aproximar\",\n zoomOut: \"Afastar\",\n center: \"Centralizar o mapa\",\n mapType: \"Trocar o tipo de mapa\",\n fullscreen: \"Tela cheia\",\n search: \"Buscar endereço\",\n searchPlaceholder: \"Buscar local...\",\n viewDescription: (lat, lng, zoom) => `Mapa centralizado em ${lat}, ${lng}, zoom ${zoom}`,\n mapTypeTitle: (name) => `Tipo de mapa: ${name}`,\n mapTypeNames: { roadmap: \"mapa\", satellite: \"satélite\", hybrid: \"híbrido\", terrain: \"relevo\" },\n coordinates: (lat, lng) => `Lat.: ${lat}, Long.: ${lng}`,\n zoomLevel: (zoom) => `Zoom: ${zoom}`,\n};\n\nexport const PT_BR_CAROUSEL_COPY: Required<CarouselCopy> = {\n previous: \"Anterior\",\n next: \"Próximo\",\n goToSlide: (position) => `Ir para o slide ${position}`,\n};\n\nexport const PT_BR_TIMING_DIAGRAM_COPY: TimingDiagramCopy = {\n regionLabel: \"Diagrama de tempos\",\n heading: \"Tempo da requisição\",\n dns: \"Busca de DNS\",\n connect: \"Conexão\",\n ssl: \"SSL/TLS\",\n request: \"Requisição\",\n response: \"Resposta\",\n total: (formatted) => `Total: ${formatted}`,\n totalTime: (formatted) => `Tempo total: ${formatted}`,\n};\n\nexport const PT_BR_DATA_STATE_COPY: DataStateCopy = {\n empty: \"Nenhum dado por aqui\",\n loading: \"Carregando…\",\n endOfList: \"Não há mais itens para carregar\",\n dismissAlert: \"Fechar o aviso\",\n dismissBanner: \"Fechar a faixa\",\n};\n\nexport const PT_BR_DATA_VIEWS_COPY: DataViewsCopy = {\n savedViewsMenu: PT_BR_SAVED_VIEWS_LABELS,\n confirmAction: PT_BR_CONFIRM_ACTION_COPY,\n categorySelect: PT_BR_CATEGORY_SELECT_COPY,\n board: {\n countOnPage: (label, count) => `${label}: ${count} nesta página`,\n onThisPage: (count) => `${count} nesta página`,\n pageSum: (sum) => `Soma desta página: ${sum}`,\n emptyColumn: \"Nada nesta etapa\",\n pageScopeNote:\n \"As contagens e somas abaixo referem-se apenas aos itens desta página.\",\n },\n deleteView: {\n title: \"Excluir visão\",\n target: (viewName) => `Excluir \"${viewName}\"?`,\n sharedWarning: \"Esta visão está compartilhada — a equipe perderá o acesso a ela.\",\n rowsUnaffected: (entityLabel) =>\n `${entityLabel} não são afetados; apenas o recorte salvo é removido.`,\n entityFallback: \"Os registros\",\n confirm: \"Excluir visão\",\n cancel: \"Cancelar\",\n },\n manageViews: {\n title: \"Gerenciar visões\",\n empty: \"Nenhuma visão salva.\",\n edit: \"Editar\",\n defaultTag: \"Padrão\",\n otherUserTag: \"De outro usuário\",\n deleteTitle: \"Excluir a visão salva?\",\n deleteBody: \"Os filtros e colunas guardados nela são perdidos. Não é possível restaurar.\",\n deleteConfirm: \"Excluir\",\n },\n saveView: {\n sharedDescription: \"Qualquer pessoa da loja poderá abrir e usar esta visão.\",\n setDefaultTitle: \"Definir como padrão\",\n setDefaultDescription: \"Esta tela abre nesta visão em vez da Visão principal.\",\n previewHeading: \"O que esta visão guarda\",\n previewUnchanged: \"Nada foi alterado — esta visão ficará igual à Visão principal.\",\n sortRowLabel: \"Ordenação\",\n saveFailed: \"Não foi possível salvar a visão.\",\n titleEditing: \"Editar visão\",\n titleCreating: \"Salvar visão\",\n descriptionLabel: \"Descrição — opcional\",\n descriptionPlaceholder: \"Para que serve esta visão\",\n submitEditing: \"Salvar alterações\",\n submitCreating: \"Salvar visão\",\n nameLabel: \"Nome\",\n cancel: \"Cancelar\",\n pinnedTitle: \"Fixar na barra lateral\",\n pinnedDescription: \"Aparece como atalho no menu, abaixo desta tela.\",\n sharedTitle: \"Compartilhar com a equipe\",\n namePlaceholder: \"Ex.: Recusados no PIX desta semana\",\n previewFilters: \"Filtros\",\n previewHiddenColumns: \"Colunas ocultas\",\n },\n columns: {\n visibleCount: (visible, total) => `${visible} de ${total} visíveis`,\n reset: \"Padrão\",\n showAll: \"Mostrar todas\",\n dragHint: \"Arraste para reordenar as colunas.\",\n moveUp: (columnLabel) => `Mover ${columnLabel} para cima`,\n moveDown: (columnLabel) => `Mover ${columnLabel} para baixo`,\n },\n display: {\n sortTab: \"Ordenar\",\n columnsTab: \"Colunas\",\n panelTab: \"Exibição\",\n direction: \"Direção\",\n layoutHints: {\n table: \"Colunas comparáveis, boa para varrer números.\",\n list: \"Uma linha por item, com os dados principais.\",\n cards: \"Blocos maiores, bom para poucos itens.\",\n board: \"Colunas por etapa, para acompanhar o que está onde.\",\n },\n densityHeadings: {\n table: \"Altura das linhas\",\n list: \"Altura das linhas\",\n cards: \"Cards por linha\",\n board: \"Largura das colunas\",\n },\n densityLabels: {\n table: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n list: { compact: \"Baixa\", cozy: \"Média\", comfortable: \"Alta\" },\n cards: { compact: \"Muitos\", cozy: \"Médio\", comfortable: \"Poucos\" },\n board: { compact: \"Estreita\", cozy: \"Média\", comfortable: \"Larga\" },\n },\n boardUnavailable: \"Esta tela não declara etapas, então não oferece quadro.\",\n densityUnavailableNarrow:\n \"Um card por linha nesta largura — a densidade volta em telas maiores.\",\n trigger: \"Exibir\",\n fieldHeading: \"Campo\",\n formatHeading: \"Formato\",\n cardZoom: \"Tamanho dos cards\",\n },\n export: {\n formats: {\n json: { label: \"JSON (.json)\", hint: \"Para integrações\" },\n },\n scopeLine: (selectedCount, totalCount) =>\n selectedCount > 0\n ? `Exportando ${selectedCount} ${selectedCount === 1 ? \"item selecionado\" : \"itens selecionados\"}`\n : `Exportando ${totalCount} ${totalCount === 1 ? \"item filtrado\" : \"itens filtrados\"}`,\n visibleColumns: (columnCount) => `${columnCount} colunas visíveis, na ordem atual`,\n trigger: \"Exportar\",\n triggerLabel: \"Exportar\",\n },\n tableFilter: PT_BR_TABLE_FILTER_COPY,\n grid: {\n ...PT_BR_DATA_GRID_COPY,\n rowActions: \"Ações\",\n bulkActions: (selectedCount) => `Ações (${selectedCount}) ▾`,\n emptyFilteredTitle: \"Nenhum resultado para esses filtros\",\n emptyFilteredHint: \"Ajuste ou remova os filtros.\",\n emptyFilteredAction: \"Limpar filtros\",\n sortAscending: \"Crescente\",\n sortDescending: \"Decrescente\",\n },\n filters: {\n moreFilters: (count) => `Mais filtros: ${count} sem espaço na barra`,\n moreFiltersApplied: (count, appliedCount) =>\n `Mais filtros: ${count} sem espaço na barra, ${appliedCount} aplicado(s)`,\n moreTriggerLabel: \"Mais\",\n moreHeading: \"Mais filtros\",\n overflowNote: \"sem espaço na barra\",\n rangeEnd: \"Até\",\n rangeInvalid: \"O início precisa ser menor que o fim.\",\n rangeInclusiveNote: \"Ambas as datas entram no resultado.\",\n rangeStart: \"De\",\n dayMask: \"dd/mm/aaaa\",\n dayInvalid: \"Essa data não existe.\",\n clearAllFilters: \"Limpar todos os filtros\",\n rangePresets: {\n hoje: \"Hoje\",\n ontem: \"Ontem\",\n semana: \"Esta semana\",\n mes: \"Este mês\",\n ano: \"Este ano\",\n },\n scopesLabel: \"Situação\",\n panelTitle: \"Filtros\",\n clear: \"Limpar\",\n clearAll: \"Limpar filtros\",\n clearRange: (label) => `Limpar ${label}`,\n allOption: \"Todas\",\n optionSearchPlaceholder: \"Buscar…\",\n optionsEmpty: \"Nenhum resultado\",\n optionsHeading: \"Opções\",\n },\n selection: {\n selectAllOnPage: \"Selecionar todos nesta página\",\n clearSelection: \"Limpar seleção\",\n selectAll: \"Selecionar tudo\",\n onThisPage: (count) => `${count} nesta página`,\n selectedCount: (count) => `${count} ${count === 1 ? \"selecionado\" : \"selecionados\"}`,\n selectRow: \"Selecionar\",\n expandRow: \"Expandir detalhes\",\n collapseRow: \"Recolher detalhes\",\n },\n nav: {\n mainView: \"Visão principal\",\n defaultTag: \"Padrão\",\n pinnedTag: \"Fixada\",\n sharedTag: \"Compartilhada\",\n viewOptions: (viewName) => `Opções de ${viewName}`,\n emptyHint: \"Nenhuma visão salva. Ajuste filtros, colunas ou ordenação e salve abaixo.\",\n setDefault: \"Definir como padrão\",\n deleteView: \"Excluir visão\",\n unsavedChanges: \"Alterações não salvas\",\n label: \"Visão\",\n update: \"Atualizar visão\",\n save: \"Salvar visão\",\n saveAs: \"Salvar como nova\",\n reset: \"Redefinir\",\n updateFailed: \"Não foi possível atualizar a visão\",\n dismissError: \"Fechar o aviso\",\n goBack: \"Voltar\",\n pageSize: \"Mostrar:\",\n saveFailed: \"Não foi possível salvar a alteração da visão.\",\n editView: \"Renomear e editar\",\n pinToSidebar: \"Fixar na barra lateral\",\n shareWithTeam: \"Compartilhar com a equipe\",\n },\n search: {\n placeholder: \"Buscar…\",\n allColumnsLabel: \"Buscar em todas as colunas\",\n keywordPlaceholder: \"Pressione Enter para filtrar\",\n open: \"Buscar\",\n close: \"Fechar busca\",\n clear: \"Limpar busca\",\n },\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/CalendarDay.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\nimport Box from '@mui/material/Box/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { rem, sxRem } from '../../../tokens/relative';\n\nimport type { DayBand } from './Calendar.band';\nimport { bandColor, endpointFill, endpointHoverFill } from './Calendar.band';\nimport type { DayRenderArgs } from './Calendar.types';\n\n/**\n * A column's width: the 304 design px a month asked for when its seven 40px\n * cells sat 4px apart, shared by seven columns that now touch (FUT-4162). The\n * cell fills its column up to this size, so the month shrinks with its\n * container instead of holding a fixed 304px floor (FUT-3861).\n */\nconst COLUMN_SIZE = sxRem(304 / 7);\n\n/** 304/7 wide to 40 tall: the day's face is a 40 design px circle at full size. */\nconst CELL_RATIO = '38 / 35';\n\ninterface DayState extends DayRenderArgs {\n outside: boolean;\n focused: boolean;\n}\n\n// Order matters: these land on the element in the order listed.\nconst CLASS_FLAGS: Array<[keyof DayState, string]> = [\n ['selected', 'selected'],\n ['inRange', 'in-range'],\n ['rangeStart', 'range-start'],\n ['rangeEnd', 'range-end'],\n ['disabled', 'disabled'],\n ['today', 'today'],\n ['outside', 'outside'],\n ['hovered', 'hovered'],\n ['focused', 'focused'],\n];\n\nconst dayClassNames = (state: DayState, custom?: string): string =>\n [\n 'calendar-day',\n ...CLASS_FLAGS.filter(([flag]) => state[flag]).map(([, name]) => name),\n ...(custom ? [custom] : []),\n ].join(' ');\n\nconst isEndpoint = (day: DayRenderArgs): boolean =>\n day.selected || day.rangeStart || day.rangeEnd;\n\n// The band's share of the cell (see `Calendar.band.ts`): all of it, or the\n// half that faces the rest of the range.\nconst BAND_IMAGE: Record<Exclude<DayBand, 'none'>, (band: string) => string> = {\n full: (band) => `linear-gradient(${band}, ${band})`,\n after: (band) => `linear-gradient(to right, transparent 50%, ${band} 50%)`,\n before: (band) => `linear-gradient(to left, transparent 50%, ${band} 50%)`,\n};\n\n// A gradient's `to right` is physical; a right-to-left grid starts a range on\n// its right, so the two halves trade places there.\nconst inDirection = (band: Exclude<DayBand, 'none'>, theme: Theme): Exclude<DayBand, 'none'> => {\n if (theme.direction !== 'rtl' || band === 'full') return band;\n return band === 'after' ? 'before' : 'after';\n};\n\nconst faceBackgroundFor = (day: DayRenderArgs): ((theme: Theme) => string) | string =>\n isEndpoint(day) ? endpointFill : 'transparent';\n\nconst colorFor = (day: DayRenderArgs, visible: boolean): string => {\n if (isEndpoint(day)) return 'primary.contrastText';\n if (day.disabled) return 'text.disabled';\n // Outside days that are switched off still occupy the grid, they just have\n // nothing to show.\n if (!visible) return 'transparent';\n return 'text.primary';\n};\n\nconst hoverBackgroundFor = (day: DayRenderArgs): ((theme: Theme) => string) | string | undefined => {\n if (day.disabled) return undefined;\n return isEndpoint(day) ? endpointHoverFill : 'action.hover';\n};\n\n// The band reaches the cell's edges so neighbouring days join; where a week\n// row ends, it rounds off instead of stopping square: half the cell each way\n// is a half-round cap on a cell as tall as it is wide.\nconst BAND_RADIUS = '50%';\n\n/**\n * One cell: the band, painted on the button across its whole column, and the\n * day's round face, a `::before` circle behind the number. The face is a\n * pseudo-element so the button's own content stays the bare day number a host's\n * tests query (`getByText('27')` is the cell, as it always was).\n */\nconst dayCellSx = (day: DayRenderArgs, band: DayBand, visible: boolean): SxProps<Theme> => ({\n position: 'relative',\n isolation: 'isolate',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n // The column it ASKS for keeps the month's intrinsic width at 304 (FUT-3861),\n // now that the seven columns carry no gap between them; `maxWidth` and the\n // column's `minmax(0, 1fr)` let it give way below that, and the ratio keeps\n // it 40 tall at full size and shrinking with it.\n width: COLUMN_SIZE,\n maxWidth: '100%',\n aspectRatio: CELL_RATIO,\n justifySelf: 'stretch',\n boxSizing: 'border-box',\n padding: 0,\n border: 'none',\n background: 'none',\n backgroundImage: band === 'none' ? 'none' : (theme: Theme) => BAND_IMAGE[inDirection(band, theme)](bandColor(theme)),\n cursor: day.disabled ? 'not-allowed' : 'pointer',\n color: colorFor(day, visible),\n opacity: !day.inCurrentMonth && visible ? 0.5 : 1,\n fontWeight: day.today || isEndpoint(day) ? 'bold' : 'normal',\n '&:nth-of-type(7n + 1)': { borderStartStartRadius: BAND_RADIUS, borderEndStartRadius: BAND_RADIUS },\n '&:nth-of-type(7n)': { borderStartEndRadius: BAND_RADIUS, borderEndEndRadius: BAND_RADIUS },\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: 0,\n margin: 'auto',\n zIndex: -1,\n // A circle as tall as the cell: 40 design px at full size (FUT-3861).\n height: '100%',\n aspectRatio: '1 / 1',\n maxWidth: '100%',\n borderRadius: '50%',\n backgroundColor: faceBackgroundFor(day),\n },\n '&:hover::before': {\n backgroundColor: hoverBackgroundFor(day),\n },\n '&:focus': { outline: 'none' },\n '&:focus::before': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(1),\n },\n});\n\nexport interface CalendarDayProps {\n day: DayRenderArgs;\n band: DayBand;\n focused: boolean;\n showOutsideDays: boolean;\n dayClassName?: (args: DayRenderArgs) => string;\n onSelect: (date: Date) => void;\n onHover: (date: Date) => void;\n onHoverEnd: () => void;\n}\n\nexport const CalendarDay: FC<CalendarDayProps> = ({\n day,\n band,\n focused,\n showOutsideDays,\n dayClassName,\n onSelect,\n onHover,\n onHoverEnd,\n}) => {\n const visible = day.inCurrentMonth || showOutsideDays;\n const state: DayState = { ...day, outside: !day.inCurrentMonth, focused };\n\n return (\n <Box\n component=\"button\"\n role=\"gridcell\"\n tabIndex={focused ? 0 : -1}\n aria-selected={day.selected}\n aria-disabled={day.disabled}\n aria-current={day.today ? 'date' : undefined}\n className={dayClassNames(state, dayClassName?.(day))}\n data-testid={`calendar-date-${day.date.getDate()}`}\n onClick={() => onSelect(day.date)}\n onMouseEnter={() => onHover(day.date)}\n onMouseLeave={onHoverEnd}\n sx={dayCellSx(day, band, visible)}\n >\n {day.selected && (\n <Box component=\"span\" data-testid=\"calendar-selected-date\" sx={{ display: 'none' }} />\n )}\n {day.today && (\n <Box component=\"span\" data-testid=\"calendar-today\" sx={{ display: 'none' }} />\n )}\n {visible ? day.date.getDate() : ''}\n </Box>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/CalendarDayCell.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport React from 'react';\n\nimport { bandFor } from './Calendar.band';\nimport { isSameDay } from './Calendar.dates';\nimport { buildDayArgs } from './Calendar.selection';\nimport type { CalendarProps, DateRange, MonthMatrixDay, SelectionMode } from './Calendar.types';\nimport { CalendarDay } from './CalendarDay';\n\n// Everything a cell needs that is the same for every cell in the calendar.\nexport interface DayCellContext {\n selectionMode: SelectionMode;\n value: Date | null;\n range: DateRange;\n hoveredDate: Date | null;\n focusedDate: Date;\n today: Date;\n showOutsideDays: boolean;\n isDisabled: (date: Date) => boolean;\n renderDay?: CalendarProps['renderDay'];\n dayClassName?: CalendarProps['dayClassName'];\n onSelect: (date: Date) => void;\n onHover: (date: Date) => void;\n onHoverEnd: () => void;\n}\n\nexport const CalendarDayCell: FC<DayCellContext & { day: MonthMatrixDay }> = ({\n day,\n focusedDate,\n showOutsideDays,\n renderDay,\n dayClassName,\n onSelect,\n onHover,\n onHoverEnd,\n ...context\n}) => {\n const args = buildDayArgs({ day, ...context });\n\n if (renderDay) return <>{renderDay(args)}</>;\n\n return (\n <CalendarDay\n day={args}\n band={bandFor({ args, ...context })}\n focused={isSameDay(args.date, focusedDate)}\n showOutsideDays={showOutsideDays}\n dayClassName={dayClassName}\n onSelect={onSelect}\n onHover={onHover}\n onHoverEnd={onHoverEnd}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAuCwB;AAbjB,IAAM,kBAAgE,CAAC;AAAA,EAC5E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,OAAO,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAC;AAE7C,MAAI,UAAW,QAAO,gCAAG,oBAAU,IAAI,GAAE;AAEzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAM,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;AAAA,MAClC,SAAS,UAAU,KAAK,MAAM,WAAW;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/Calendar/CalendarMonth.tsx"],"sourcesContent":["import ChevronLeft from '@mui/icons-material/ChevronLeft';\nimport ChevronRight from '@mui/icons-material/ChevronRight';\nimport Box from '@mui/material/Box/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport type { FC } from 'react';\nimport React from 'react';\n\nimport { sxRem } from '../../../tokens/relative';\n\nimport { getMonthName } from './Calendar.dates';\nimport type { CalendarProps, MonthMatrix } from './Calendar.types';\nimport type { DayCellContext } from './CalendarDayCell';\nimport { CalendarDayCell } from './CalendarDayCell';\n\n/** The nav spacer's width and the weekday row's height, 32 design px through the type scale. */\nconst SPACER_WIDTH = sxRem(32);\n\n// `minmax(0, 1fr)`, not `1fr`: a bare `1fr` keeps each column at least its\n// content's width, which is what held the grid at 304px (FUT-3861). No column\n// gap: a selected range is one band across the days, and a gap cut it into\n// tiles (FUT-4162). Rows keep theirs. Items centre in their column: the built-in\n// day stretches across it, a host's `renderDay` cell sits in its middle.\nconst GRID_SX = {\n display: 'grid',\n justifyItems: 'center',\n gridTemplateColumns: 'repeat(7, minmax(0, 1fr))',\n columnGap: 0,\n rowGap: 0.5,\n} as const;\n\n/**\n * A month takes the room it is given, from nothing up to seven full columns\n * (304 design px: what 7 × 40 cells and 6 × 4 gaps came to before the gaps\n * went, FUT-4162). Months side by side keep a 280 basis,\n * so a multi-month calendar still wraps rather than squeezing every month.\n */\nexport const MONTH_SX = { flex: `1 1 ${sxRem(280)}`, minWidth: 0, maxWidth: sxRem(304) } as const;\n\n// Only the outermost months carry arrows; the ones between get a spacer so their\n// titles stay centred.\nconst MonthNavHeader: FC<{\n title: React.ReactNode;\n showPrevious: boolean;\n showNext: boolean;\n onPreviousMonth: () => void;\n onNextMonth: () => void;\n}> = ({ title, showPrevious, showNext, onPreviousMonth, onNextMonth }) => (\n <Box\n sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2 }}\n data-testid=\"calendar-header\"\n >\n {showPrevious && (\n <IconButton onClick={onPreviousMonth} size=\"small\" data-testid=\"calendar-prev-month\">\n <ChevronLeft />\n </IconButton>\n )}\n\n <Typography\n variant=\"h6\"\n component=\"h2\"\n sx={{ fontWeight: 'bold', flex: 1, textAlign: 'center' }}\n >\n {title}\n </Typography>\n\n {showNext && (\n <IconButton onClick={onNextMonth} size=\"small\" data-testid=\"calendar-next-month\">\n <ChevronRight />\n </IconButton>\n )}\n\n {!showPrevious && !showNext && <Box sx={{ width: SPACER_WIDTH }} />}\n </Box>\n);\n\nconst WeekdayHeader: FC<{ weekdayNames: string[] }> = ({ weekdayNames }) => (\n <Box sx={{ ...GRID_SX, mb: 1 }}>\n {weekdayNames.map((weekday, index) => (\n <Box\n // Narrow weekday names repeat within a week ('S', 'T'), so position is\n // the only stable key here.\n key={`weekday-${index}`}\n role=\"columnheader\"\n data-testid={`calendar-weekday-${index}`}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: SPACER_WIDTH,\n fontSize: sxRem(14),\n fontWeight: 'bold',\n color: 'text.secondary',\n }}\n >\n {weekday}\n </Box>\n ))}\n </Box>\n);\n\n/** The weekday row and the day grid under a month's caption. */\nexport const MonthDays: FC<{\n matrix: MonthMatrix;\n monthIndex: number;\n weekdayNames: string[];\n dayContext: DayCellContext;\n}> = ({ matrix, monthIndex, weekdayNames, dayContext }) => (\n <>\n <WeekdayHeader weekdayNames={weekdayNames} />\n\n <Box\n role=\"grid\"\n aria-labelledby={`month-${monthIndex}`}\n data-testid=\"calendar-grid\"\n sx={GRID_SX}\n >\n {matrix.weeks.flat().map((day) => (\n <CalendarDayCell key={day.key} day={day} {...dayContext} />\n ))}\n </Box>\n </>\n);\n\nexport interface CalendarMonthProps {\n matrix: MonthMatrix;\n monthIndex: number;\n monthsToShow: number;\n locale: string;\n weekdayNames: string[];\n renderHeader?: CalendarProps['renderHeader'];\n onPreviousMonth: () => void;\n onNextMonth: () => void;\n dayContext: DayCellContext;\n}\n\nexport const CalendarMonth: FC<CalendarMonthProps> = ({\n matrix,\n monthIndex,\n monthsToShow,\n locale,\n weekdayNames,\n renderHeader,\n onPreviousMonth,\n onNextMonth,\n dayContext,\n}) => {\n const monthName = getMonthName(matrix.month, matrix.year, locale);\n const title = renderHeader ? renderHeader({ month: matrix.month, year: matrix.year }) : monthName;\n\n return (\n /* The month is addressable by its position, because in a multi-month\n calendar every day number appears once PER MONTH — `calendar-date-5` is\n January's 5th and February's. Without a per-month hook a test can only\n reach a day positionally, which is exactly what the flakiness gate\n refuses. Additive: `calendar-grid` below is unchanged. */\n <Box sx={MONTH_SX} data-testid={`calendar-month-${monthIndex}`}>\n <MonthNavHeader\n title={title}\n showPrevious={monthIndex === 0}\n showNext={monthIndex === monthsToShow - 1}\n onPreviousMonth={onPreviousMonth}\n onNextMonth={onNextMonth}\n />\n\n <MonthDays\n matrix={matrix}\n monthIndex={monthIndex}\n weekdayNames={weekdayNames}\n dayContext={dayContext}\n />\n </Box>\n );\n};\n"],"mappings":"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","names":[]}