@12-apps/ui 6.56.1 → 6.58.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 (292) hide show
  1. package/NATIVE.md +2 -2
  2. package/components-catalog.md +2 -2
  3. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  4. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  5. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  6. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  7. package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
  8. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  9. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  10. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  11. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +18 -18
  12. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +26 -25
  13. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
  14. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +3 -3
  15. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
  16. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +5 -3
  17. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +45 -0
  18. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js.map +1 -0
  19. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  20. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -4
  21. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  22. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +4 -4
  23. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
  24. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +17 -17
  25. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
  26. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
  27. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +5 -5
  28. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  29. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js +3 -1
  30. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +3 -3
  31. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +6 -6
  32. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +2 -2
  33. package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js +13 -0
  34. package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js.map +1 -0
  35. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
  36. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
  37. package/dist/_internal/components/data-display/Progress/Progress.js +1 -1
  38. package/dist/_internal/components/data-display/index.js +15 -15
  39. package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
  40. package/dist/_internal/components/feedback/Dialog/Dialog.styles.js +1 -1
  41. package/dist/_internal/components/feedback/index.js +2 -2
  42. package/dist/_internal/components/index.js +35 -35
  43. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
  44. package/dist/_internal/components/layout/SettingCard/SettingCard.js +5 -5
  45. package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +3 -3
  46. package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +4 -4
  47. package/dist/_internal/components/layout/SettingCard/SettingGrid.js +4 -4
  48. package/dist/_internal/components/layout/SettingCard/SettingGroup.js +6 -6
  49. package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +5 -5
  50. package/dist/_internal/components/layout/SettingCard/SettingToggle.js +6 -6
  51. package/dist/_internal/components/layout/index.js +10 -10
  52. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +3 -3
  53. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
  54. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
  55. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  56. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
  57. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  58. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
  59. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  60. package/dist/_internal/components/navigation/index.js +12 -12
  61. package/dist/_internal/en-US.data-display.js +1 -1
  62. package/dist/_internal/icons/Icon.js +2 -2
  63. package/dist/_internal/icons/paths.generated.js +1 -1
  64. package/dist/_internal/pt-BR.data-display.js +1 -1
  65. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  66. package/dist/charts.js +6 -6
  67. package/dist/{chunk-MKAA3YIJ.js → chunk-3K7WN2PO.js} +3 -3
  68. package/dist/{chunk-CLC4VIOF.js → chunk-4PYEDDYV.js} +2 -2
  69. package/dist/{chunk-573XC4HK.js → chunk-4QKS5Y35.js} +2 -2
  70. package/dist/{chunk-KX75HM5U.js → chunk-5YDS6HO3.js} +7 -2
  71. package/dist/{chunk-KX75HM5U.js.map → chunk-5YDS6HO3.js.map} +1 -1
  72. package/dist/{chunk-N4MR4EMC.js → chunk-6D2PFC5C.js} +2 -2
  73. package/dist/{chunk-JWXGZ4VM.js → chunk-6J27G2HT.js} +2 -2
  74. package/dist/{chunk-LJKWWXZD.js → chunk-6OSUK2C7.js} +28 -22
  75. package/dist/chunk-6OSUK2C7.js.map +1 -0
  76. package/dist/{chunk-ICSXPZXT.js → chunk-6QBT5TPS.js} +2 -2
  77. package/dist/{chunk-C67FDYG7.js → chunk-7CWZI6MQ.js} +5 -5
  78. package/dist/{chunk-WGFHZNFR.js → chunk-AEIJSEVV.js} +4 -1
  79. package/dist/{chunk-WGFHZNFR.js.map → chunk-AEIJSEVV.js.map} +1 -1
  80. package/dist/{chunk-JL77BSOL.js → chunk-AQI3UK6P.js} +2 -2
  81. package/dist/{chunk-A6EUQDRK.js → chunk-ARJIKW56.js} +4 -2
  82. package/dist/chunk-ARJIKW56.js.map +1 -0
  83. package/dist/{chunk-6E4XNOAC.js → chunk-CCCILWYZ.js} +4 -4
  84. package/dist/{chunk-GI24X7XA.js → chunk-DZIRCD2W.js} +2 -2
  85. package/dist/{chunk-53ACGKBW.js → chunk-EDBP62WG.js} +3 -3
  86. package/dist/{chunk-YXIVQFNW.js → chunk-EWIKSTJV.js} +4 -4
  87. package/dist/{chunk-LWZ2K225.js → chunk-FXZUVZON.js} +6 -6
  88. package/dist/chunk-G6EJLEVV.js +75 -0
  89. package/dist/chunk-G6EJLEVV.js.map +1 -0
  90. package/dist/{chunk-IK2ZVV3M.js → chunk-GK7JNSMK.js} +2 -2
  91. package/dist/{chunk-Y2HCYT5W.js → chunk-GRRW5NSR.js} +2 -2
  92. package/dist/{chunk-NZZ2BTIK.js → chunk-H7R6UKOE.js} +2 -2
  93. package/dist/{chunk-HFBQCJNP.js → chunk-HCYRCU4W.js} +2 -2
  94. package/dist/{chunk-C3BRCCHG.js → chunk-HH7PM5HT.js} +12 -24
  95. package/dist/chunk-HH7PM5HT.js.map +1 -0
  96. package/dist/{chunk-7AAJYWC3.js → chunk-HPO7PB4F.js} +2 -2
  97. package/dist/{chunk-WF3P7GE5.js → chunk-I3CQBEKS.js} +2 -2
  98. package/dist/{chunk-RREWYOKS.js → chunk-IL4FCC54.js} +2 -2
  99. package/dist/{chunk-7M3DRP7Q.js → chunk-ILNO4ZJ6.js} +3 -3
  100. package/dist/{chunk-AL3Z24VG.js → chunk-ILQVNZ5B.js} +2 -2
  101. package/dist/{chunk-5PN5MY2X.js → chunk-INQO5AYV.js} +3 -3
  102. package/dist/{chunk-2DV64INT.js → chunk-KEDZTZCV.js} +2 -2
  103. package/dist/{chunk-2CJZLL5Y.js → chunk-NHVL2QPG.js} +2 -1
  104. package/dist/{chunk-2CJZLL5Y.js.map → chunk-NHVL2QPG.js.map} +1 -1
  105. package/dist/{chunk-45PGSVOH.js → chunk-NTJUAPJM.js} +10 -8
  106. package/dist/chunk-NTJUAPJM.js.map +1 -0
  107. package/dist/{chunk-EUPUEMFX.js → chunk-PC4H5LVB.js} +7 -7
  108. package/dist/{chunk-44JLXXWQ.js → chunk-PPITQH3C.js} +2 -2
  109. package/dist/{chunk-KEKOPD43.js → chunk-PQ7RWH7L.js} +4 -2
  110. package/dist/chunk-PQ7RWH7L.js.map +1 -0
  111. package/dist/{chunk-HRMB72E4.js → chunk-QHP5PZNC.js} +2 -1
  112. package/dist/{chunk-HRMB72E4.js.map → chunk-QHP5PZNC.js.map} +1 -1
  113. package/dist/{chunk-GNBCSTXF.js → chunk-QKAYXAQE.js} +6 -6
  114. package/dist/{chunk-GNBCSTXF.js.map → chunk-QKAYXAQE.js.map} +1 -1
  115. package/dist/{chunk-JC244QQF.js → chunk-SEWUYHSG.js} +2 -2
  116. package/dist/{chunk-TZFBJ47T.js → chunk-SFLNHCA2.js} +39 -15
  117. package/dist/chunk-SFLNHCA2.js.map +1 -0
  118. package/dist/{chunk-OBMPE6PW.js → chunk-SSDYEOU4.js} +5 -5
  119. package/dist/{chunk-I6ESCBY3.js → chunk-TF27Z27K.js} +2 -2
  120. package/dist/{chunk-JF5LQOGB.js → chunk-U47KRLEW.js} +57 -45
  121. package/dist/chunk-U47KRLEW.js.map +1 -0
  122. package/dist/{chunk-RBHBJDOZ.js → chunk-UEU5NSIG.js} +4 -4
  123. package/dist/chunk-V4V2N6YJ.js +55 -0
  124. package/dist/chunk-V4V2N6YJ.js.map +1 -0
  125. package/dist/{chunk-XTHDWW4M.js → chunk-VAY6KESM.js} +7 -4
  126. package/dist/chunk-VAY6KESM.js.map +1 -0
  127. package/dist/{chunk-5XZEGI35.js → chunk-X7HCS3HP.js} +3 -3
  128. package/dist/{chunk-6ZLP7BA7.js → chunk-XC7YHO7Z.js} +3 -1
  129. package/dist/{chunk-6ZLP7BA7.js.map → chunk-XC7YHO7Z.js.map} +1 -1
  130. package/dist/{chunk-T2S7NIUG.js → chunk-XE4JVTM6.js} +2 -2
  131. package/dist/{chunk-G76BNXWE.js → chunk-XW5SEW3H.js} +6 -6
  132. package/dist/{chunk-SIWXMNQT.js → chunk-YDTCM5F6.js} +4 -4
  133. package/dist/{chunk-46ZATLQV.js → chunk-YIKFYWKD.js} +3 -3
  134. package/dist/{chunk-BQGWY577.js → chunk-ZCUVZ5PR.js} +3 -3
  135. package/dist/{chunk-4JBS6NOT.js → chunk-ZWBGQYVO.js} +35 -6
  136. package/dist/chunk-ZWBGQYVO.js.map +1 -0
  137. package/dist/{chunk-VWW2EXH7.js → chunk-ZYJZHXFU.js} +4 -4
  138. package/dist/data-display/Avatar.js +2 -2
  139. package/dist/data-display/Badge.js +2 -2
  140. package/dist/data-display/CardKit.js +10 -10
  141. package/dist/data-display/Carousel.js +2 -2
  142. package/dist/data-display/Chart.js +6 -6
  143. package/dist/data-display/DataGrid.js +2 -2
  144. package/dist/data-display/DataViews.js +31 -29
  145. package/dist/data-display/Progress.js +1 -1
  146. package/dist/en-US.js +1 -1
  147. package/dist/feedback/Dialog.js +2 -2
  148. package/dist/icons.js +2 -2
  149. package/dist/layout/ContentToolbar.js +1 -1
  150. package/dist/layout/SettingCard.js +9 -9
  151. package/dist/locales.js +2 -2
  152. package/dist/native/chunks/{chunk-QGTZGL7P.js → chunk-BUFQXX27.js} +2 -2
  153. package/dist/native/chunks/{chunk-EZO2KJF7.js → chunk-JFKH5YHF.js} +3 -1
  154. package/dist/native/chunks/{chunk-EZO2KJF7.js.map → chunk-JFKH5YHF.js.map} +1 -1
  155. package/dist/native/data-display/Alert.js +1 -1
  156. package/dist/native/data-display/Avatar.js +1 -1
  157. package/dist/native/data-display/Badge.js +1 -1
  158. package/dist/native/data-display/Chip.js +1 -1
  159. package/dist/native/data-display/EmptyState.js +2 -2
  160. package/dist/native/data-display/ErrorState.js +1 -1
  161. package/dist/native/data-display/FleetMap.js +2 -2
  162. package/dist/native/data-display/Progress.js +11 -5
  163. package/dist/native/data-display/Progress.js.map +1 -1
  164. package/dist/native/feedback/Dialog.js +2 -1
  165. package/dist/native/feedback/Dialog.js.map +1 -1
  166. package/dist/native/form/Checkbox.js +1 -1
  167. package/dist/native/form/Select.js +1 -1
  168. package/dist/native/icons.js +1 -1
  169. package/dist/navigation/AppHeader.js +3 -3
  170. package/dist/navigation/SectionNav.js +9 -9
  171. package/dist/pt-BR.js +1 -1
  172. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts.map +1 -1
  173. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts +29 -1
  174. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts.map +1 -1
  175. package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts +46 -0
  176. package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts.map +1 -0
  177. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts +5 -2
  178. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts.map +1 -1
  179. package/dist/types/components/data-display/DataViews/base-list-card.d.ts +10 -1
  180. package/dist/types/components/data-display/DataViews/base-list-card.d.ts.map +1 -1
  181. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +7 -0
  182. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  183. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  184. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts +2 -0
  185. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts.map +1 -1
  186. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts +3 -1
  187. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts.map +1 -1
  188. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts +2 -0
  189. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  190. package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts +47 -0
  191. package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts.map +1 -0
  192. package/dist/types/components/data-display/DataViews/list-card-rails.d.ts +17 -2
  193. package/dist/types/components/data-display/DataViews/list-card-rails.d.ts.map +1 -1
  194. package/dist/types/components/data-display/Progress/Progress.base.d.ts +8 -0
  195. package/dist/types/components/data-display/Progress/Progress.base.d.ts.map +1 -1
  196. package/dist/types/components/data-display/Progress/Progress.d.ts.map +1 -1
  197. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts +2 -1
  198. package/dist/types/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  199. package/dist/types/components/feedback/Dialog/Dialog.styles.d.ts.map +1 -1
  200. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +3 -2
  201. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  202. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +14 -0
  203. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  204. package/dist/types/en-US.data-display.d.ts.map +1 -1
  205. package/dist/types/icons/paths.generated.d.ts +2 -0
  206. package/dist/types/icons/paths.generated.d.ts.map +1 -1
  207. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  208. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts +8 -0
  209. package/dist/types-native/components/data-display/Progress/Progress.base.d.ts.map +1 -1
  210. package/dist/types-native/components/data-display/Progress/Progress.native.d.ts.map +1 -1
  211. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts +2 -1
  212. package/dist/types-native/components/feedback/Dialog/Dialog.base.d.ts.map +1 -1
  213. package/dist/types-native/components/feedback/Dialog/Dialog.look.native.d.ts.map +1 -1
  214. package/dist/types-native/icons/paths.generated.d.ts +2 -0
  215. package/dist/types-native/icons/paths.generated.d.ts.map +1 -1
  216. package/dist/user-avatar.js +3 -3
  217. package/package.json +1 -1
  218. package/src/components/data-display/DataViews/DataViewsTableBase.tsx +7 -36
  219. package/src/components/data-display/DataViews/base-list-card-geometry.tsx +114 -40
  220. package/src/components/data-display/DataViews/base-list-card-layout.tsx +104 -0
  221. package/src/components/data-display/DataViews/base-list-card-slots.tsx +47 -3
  222. package/src/components/data-display/DataViews/base-list-card.tsx +65 -68
  223. package/src/components/data-display/DataViews/data-views-copy.ts +7 -0
  224. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +2 -1
  225. package/src/components/data-display/DataViews/data-views-selection-extra.ts +10 -1
  226. package/src/components/data-display/DataViews/data-views-shell-toolbar.tsx +4 -0
  227. package/src/components/data-display/DataViews/data-views-toolbar.tsx +4 -0
  228. package/src/components/data-display/DataViews/data-views-url-echo.ts +134 -0
  229. package/src/components/data-display/DataViews/list-card-rails.tsx +22 -6
  230. package/src/components/data-display/Progress/Progress.base.ts +10 -0
  231. package/src/components/data-display/Progress/Progress.md +23 -0
  232. package/src/components/data-display/Progress/Progress.native.tsx +35 -25
  233. package/src/components/data-display/Progress/Progress.tsx +8 -5
  234. package/src/components/feedback/Dialog/Dialog.base.ts +2 -1
  235. package/src/components/feedback/Dialog/Dialog.look.native.ts +1 -0
  236. package/src/components/feedback/Dialog/Dialog.md +25 -1
  237. package/src/components/feedback/Dialog/Dialog.styles.ts +3 -0
  238. package/src/components/layout/ContentToolbar/ContentToolbar.md +5 -2
  239. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +51 -10
  240. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +14 -0
  241. package/src/en-US.data-display.ts +1 -0
  242. package/src/icons/Icon.md +4 -0
  243. package/src/icons/glyphs.json +2 -0
  244. package/src/icons/paths.generated.ts +2 -0
  245. package/src/pt-BR.data-display.ts +1 -0
  246. package/dist/chunk-45PGSVOH.js.map +0 -1
  247. package/dist/chunk-4JBS6NOT.js.map +0 -1
  248. package/dist/chunk-A6EUQDRK.js.map +0 -1
  249. package/dist/chunk-C3BRCCHG.js.map +0 -1
  250. package/dist/chunk-JF5LQOGB.js.map +0 -1
  251. package/dist/chunk-KEKOPD43.js.map +0 -1
  252. package/dist/chunk-LJKWWXZD.js.map +0 -1
  253. package/dist/chunk-TZFBJ47T.js.map +0 -1
  254. package/dist/chunk-XTHDWW4M.js.map +0 -1
  255. /package/dist/{chunk-MKAA3YIJ.js.map → chunk-3K7WN2PO.js.map} +0 -0
  256. /package/dist/{chunk-CLC4VIOF.js.map → chunk-4PYEDDYV.js.map} +0 -0
  257. /package/dist/{chunk-573XC4HK.js.map → chunk-4QKS5Y35.js.map} +0 -0
  258. /package/dist/{chunk-N4MR4EMC.js.map → chunk-6D2PFC5C.js.map} +0 -0
  259. /package/dist/{chunk-JWXGZ4VM.js.map → chunk-6J27G2HT.js.map} +0 -0
  260. /package/dist/{chunk-ICSXPZXT.js.map → chunk-6QBT5TPS.js.map} +0 -0
  261. /package/dist/{chunk-C67FDYG7.js.map → chunk-7CWZI6MQ.js.map} +0 -0
  262. /package/dist/{chunk-JL77BSOL.js.map → chunk-AQI3UK6P.js.map} +0 -0
  263. /package/dist/{chunk-6E4XNOAC.js.map → chunk-CCCILWYZ.js.map} +0 -0
  264. /package/dist/{chunk-GI24X7XA.js.map → chunk-DZIRCD2W.js.map} +0 -0
  265. /package/dist/{chunk-53ACGKBW.js.map → chunk-EDBP62WG.js.map} +0 -0
  266. /package/dist/{chunk-YXIVQFNW.js.map → chunk-EWIKSTJV.js.map} +0 -0
  267. /package/dist/{chunk-LWZ2K225.js.map → chunk-FXZUVZON.js.map} +0 -0
  268. /package/dist/{chunk-IK2ZVV3M.js.map → chunk-GK7JNSMK.js.map} +0 -0
  269. /package/dist/{chunk-Y2HCYT5W.js.map → chunk-GRRW5NSR.js.map} +0 -0
  270. /package/dist/{chunk-NZZ2BTIK.js.map → chunk-H7R6UKOE.js.map} +0 -0
  271. /package/dist/{chunk-HFBQCJNP.js.map → chunk-HCYRCU4W.js.map} +0 -0
  272. /package/dist/{chunk-7AAJYWC3.js.map → chunk-HPO7PB4F.js.map} +0 -0
  273. /package/dist/{chunk-WF3P7GE5.js.map → chunk-I3CQBEKS.js.map} +0 -0
  274. /package/dist/{chunk-RREWYOKS.js.map → chunk-IL4FCC54.js.map} +0 -0
  275. /package/dist/{chunk-7M3DRP7Q.js.map → chunk-ILNO4ZJ6.js.map} +0 -0
  276. /package/dist/{chunk-AL3Z24VG.js.map → chunk-ILQVNZ5B.js.map} +0 -0
  277. /package/dist/{chunk-5PN5MY2X.js.map → chunk-INQO5AYV.js.map} +0 -0
  278. /package/dist/{chunk-2DV64INT.js.map → chunk-KEDZTZCV.js.map} +0 -0
  279. /package/dist/{chunk-EUPUEMFX.js.map → chunk-PC4H5LVB.js.map} +0 -0
  280. /package/dist/{chunk-44JLXXWQ.js.map → chunk-PPITQH3C.js.map} +0 -0
  281. /package/dist/{chunk-JC244QQF.js.map → chunk-SEWUYHSG.js.map} +0 -0
  282. /package/dist/{chunk-OBMPE6PW.js.map → chunk-SSDYEOU4.js.map} +0 -0
  283. /package/dist/{chunk-I6ESCBY3.js.map → chunk-TF27Z27K.js.map} +0 -0
  284. /package/dist/{chunk-RBHBJDOZ.js.map → chunk-UEU5NSIG.js.map} +0 -0
  285. /package/dist/{chunk-5XZEGI35.js.map → chunk-X7HCS3HP.js.map} +0 -0
  286. /package/dist/{chunk-T2S7NIUG.js.map → chunk-XE4JVTM6.js.map} +0 -0
  287. /package/dist/{chunk-G76BNXWE.js.map → chunk-XW5SEW3H.js.map} +0 -0
  288. /package/dist/{chunk-SIWXMNQT.js.map → chunk-YDTCM5F6.js.map} +0 -0
  289. /package/dist/{chunk-46ZATLQV.js.map → chunk-YIKFYWKD.js.map} +0 -0
  290. /package/dist/{chunk-BQGWY577.js.map → chunk-ZCUVZ5PR.js.map} +0 -0
  291. /package/dist/{chunk-VWW2EXH7.js.map → chunk-ZYJZHXFU.js.map} +0 -0
  292. /package/dist/native/chunks/{chunk-QGTZGL7P.js.map → chunk-BUFQXX27.js.map} +0 -0
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  FilterDialog,
3
3
  GridFilterPanel
4
- } from "./chunk-N4MR4EMC.js";
4
+ } from "./chunk-6D2PFC5C.js";
5
5
  import {
6
6
  DataViewsEmpty
7
7
  } from "./chunk-6NWFX2XJ.js";
8
8
  import {
9
9
  InlineFilterControls
10
- } from "./chunk-MKAA3YIJ.js";
10
+ } from "./chunk-3K7WN2PO.js";
11
11
  import {
12
12
  GridHeaderRow
13
13
  } from "./chunk-X3AFXHY5.js";
14
14
  import {
15
15
  GridMain
16
- } from "./chunk-7M3DRP7Q.js";
16
+ } from "./chunk-ILNO4ZJ6.js";
17
17
  import {
18
18
  DataViewsPagination
19
19
  } from "./chunk-K6WY2CHG.js";
@@ -21,15 +21,16 @@ import {
21
21
  toOverflowFields,
22
22
  useFilterOverflow
23
23
  } from "./chunk-6QYKZMEE.js";
24
+ import {
25
+ allOnPageSelected,
26
+ resolveSelectionExtra
27
+ } from "./chunk-5YDS6HO3.js";
24
28
  import {
25
29
  ScopeTabsSlot
26
30
  } from "./chunk-5JWCNQSI.js";
27
31
  import {
28
32
  ShellToolbar
29
- } from "./chunk-A6EUQDRK.js";
30
- import {
31
- resolveSelectionExtra
32
- } from "./chunk-KX75HM5U.js";
33
+ } from "./chunk-ARJIKW56.js";
33
34
  import {
34
35
  togglePillValues
35
36
  } from "./chunk-NQZNV3VR.js";
@@ -151,6 +152,7 @@ function ShellStack({
151
152
  rowActions: props.rowActions,
152
153
  bulkActions: props.bulkActions,
153
154
  selectionExtra: resolveSelectionExtra(props),
155
+ allOnPageSelected: allOnPageSelected(c, props.getRowId),
154
156
  toolbarRightSlot: props.toolbarRightSlot,
155
157
  compactControls: showInline && split.compactControls,
156
158
  counterHidden: showInline && split.counterHidden,
@@ -238,4 +240,4 @@ function GridShell(props) {
238
240
  export {
239
241
  GridShell
240
242
  };
241
- //# sourceMappingURL=chunk-45PGSVOH.js.map
243
+ //# sourceMappingURL=chunk-NTJUAPJM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-grid-parts.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nimport { TableFilter } from \"../../layout/TableFilter\";\nimport { Stack } from \"../../../mui/Stack\";\n\nimport {\n DataViewsLayoutProvider,\n useDataViewsLayout,\n type DataViewsLayout,\n} from \"./data-views-layout-context\";\nimport { FilterDialog, GridFilterPanel } from \"./data-views-filter-panel\";\nimport { GridMain } from \"./data-views-grid-bodies\";\nimport type { ListGroupConfig } from \"./list-card-rails\";\nimport { InlineFilterControls } from \"./data-views-inline-bar\";\nimport { toOverflowFields, useFilterOverflow, type OverflowSplit } from \"./data-views-overflow\";\nimport { GridHeaderRow } from \"./data-views-header-row\";\nimport { allOnPageSelected, resolveSelectionExtra, type SelectionExtraRender } from \"./data-views-selection-extra\";\nimport { ShellToolbar } from \"./data-views-shell-toolbar\";\nimport type { DisplayPanelView } from \"./data-views-display-panel\";\nimport type { DataViewExport } from \"./data-views-export\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { DataViewsEmpty } from \"./data-views-empty\";\nimport { DataViewsPagination } from \"./data-views-pagination\";\nimport type { BoardConfig } from \"./DataViewsBoard\";\nimport { type ScopeConfig } from \"./data-views-scopes\";\nimport { ScopeTabsSlot } from \"./data-views-scope-tabs\";\nimport { togglePillValues } from \"./data-views-grid-helpers\";\nimport type {\n DataViewCardSelection,\n FilterFieldConfig,\n RangeFieldConfig,\n RangeValue,\n RowAction,\n} from \"./data-views-types\";\nimport type { DataViewRowDetail } from \"./data-views-row-detail\";\nimport type { DataViewsController } from \"./use-data-views-state\";\n\n/* ── Layout ⇄ view-state mirror ──────────────────────────────────────────── */\n\n/**\n * Mirrors the LIVE layout back into the view state, so saving a view captures\n * the layout the user is actually looking at.\n *\n * A component rather than a callback prop because only something INSIDE the\n * provider can read the layout, and only the controller can write the state.\n * The `stored !== layout` guard is what makes it idempotent: `c` is rebuilt on\n * every render, so an unguarded effect here would patch → re-render → patch.\n *\n * It re-fires when `stored` changes too, which is the case that matters after\n * applying a saved view: `appliedState` REPLACES the state, so a view saved\n * before layouts were captured clears `state.layout`, and the mirror puts the\n * current one back rather than leaving the next save with nothing to store.\n */\nfunction LayoutStateSync<T extends Record<string, unknown>>({\n c,\n}: {\n c: DataViewsController<T>;\n}): null {\n const { layout } = useDataViewsLayout();\n const stored = c.state.layout;\n useEffect(() => {\n if (stored !== layout) c.patch({ layout });\n // `c` is intentionally out of the deps — see the guard above.\n }, [layout, stored]);\n return null;\n}\n\n/* ── Shell (composes toolbar + body + panel) ─────────────────────────────── */\n\n/** The shared filter-surface props consumed by the inline bar, panel, and modal. */\ninterface FilterSurfaceProps<T extends Record<string, unknown>> {\n testIdPrefix: string;\n search: string;\n fields: FilterFieldConfig<T>[];\n rangeFields: RangeFieldConfig<T>[];\n pills: Record<string, string[]>;\n ranges: Record<string, RangeValue>;\n onSearchChange: (value: string) => void;\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onChangeRange: (fieldId: string, range: RangeValue) => void;\n onClearField: (fieldId: string) => void;\n onClearAll: () => void;\n}\n\n/**\n * Derives the responsive filter state (which surface to show at this width) and\n * the filter-mutation handlers from the controller — pulled out of `GridShell`\n * so the component body stays under the size/complexity budget.\n */\n/** Grouped rather than positional: the list had grown past readability. */\ninterface GridShellFiltersArgs<T extends Record<string, unknown>> {\n c: DataViewsController<T>;\n inlineFilters: boolean;\n fields: FilterFieldConfig<T>[];\n rangeFields: RangeFieldConfig<T>[];\n testIdPrefix: string;\n alwaysShowSearch: boolean;\n /** Is \"Exportar\" on the bar? Half the right cluster's cost when it is not. */\n hasExport: boolean;\n}\n\nfunction useGridShellFilters<T extends Record<string, unknown>>({\n c,\n inlineFilters,\n fields,\n rangeFields,\n testIdPrefix,\n alwaysShowSearch,\n hasExport,\n}: GridShellFiltersArgs<T>): {\n showInline: boolean;\n useModal: boolean;\n inlineVisible: boolean;\n filterProps: FilterSurfaceProps<T>;\n split: OverflowSplit<T>;\n onControlOpenChange: (open: boolean) => void;\n} {\n const { state } = c;\n // How many filter controls are open. A COUNT, not a flag: closing one popover\n // by opening another overlaps, and a boolean would unfreeze mid-handover.\n const [openControls, setOpenControls] = useState(0);\n // ONE measurement for the whole shell: the filter row decides which controls\n // it can keep, and the TOOLBAR needs the same answer to drop its labels.\n // Measuring twice would let the two disagree at the crossover width.\n const split = useFilterOverflow(\n toOverflowFields(fields, rangeFields),\n state.pills,\n c.ranges,\n openControls > 0,\n hasExport,\n );\n // THE BAR RENDERS AT EVERY WIDTH. It used to be swapped for a full-screen\n // filter MODAL below `lg`, which was the responsive strategy before the\n // measured ladder existed — and the two now do the same job, badly together:\n // the modal took the bar away at 1199px, and with it the very degradation\n // (labels off, search collapsed, filters into \"Mais\") that exists to make a\n // narrow bar work. So a 900px window got no bar and no ladder, and the\n // operator lost the search entirely rather than gaining a compact one.\n //\n // The ladder is measured, so it already covers every width the modal did.\n const showInline = inlineFilters;\n const useModal = false;\n const inlineVisible =\n showInline &&\n (alwaysShowSearch || fields.length > 0 || rangeFields.length > 0 || state.search !== \"\");\n const filterProps: FilterSurfaceProps<T> = {\n testIdPrefix,\n search: state.search,\n fields,\n rangeFields,\n pills: state.pills,\n ranges: c.ranges,\n onSearchChange: (value) => c.patch({ search: value }),\n // Updater, never the render's `state` — see {@link DataViewStatePatch}.\n onTogglePill: (fieldId, value, checked) =>\n c.patch(({ pills }) => ({ pills: { ...pills, [fieldId]: togglePillValues(pills[fieldId], value, checked) } })),\n onChangeRange: (fieldId, range) => c.patch({ ranges: { ...c.ranges, [fieldId]: range } }),\n onClearField: (fieldId) => c.patch({ pills: { ...state.pills, [fieldId]: [] } }),\n onClearAll: () => c.patch({ search: \"\", pills: {}, ranges: {} }),\n };\n return {\n showInline,\n useModal,\n inlineVisible,\n filterProps,\n split,\n onControlOpenChange: (open) =>\n setOpenControls((count) => Math.max(0, count + (open ? 1 : -1))),\n };\n}\n\ninterface GridShellProps<T extends Record<string, unknown>> {\n c: DataViewsController<T>;\n rows: T[];\n fields: FilterFieldConfig<T>[];\n rangeFields: RangeFieldConfig<T>[];\n getRowId: (row: T) => string | number;\n testIdPrefix: string;\n dataTestId?: string;\n emptyState?: React.ReactNode;\n toolbarRightSlot?: React.ReactNode;\n rowActions?: RowAction<T>[];\n bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;\n /** A widening control beside the selection count — see `resolveSelectionExtra`. */\n selectionExtra?: SelectionExtraRender<T>;\n /** Opt-in \"Grade\" (cards) layout: renders each row as an entity-supplied card.\n * Omit ⇒ table only (no layout toggle). */\n renderCard?: (row: T, selection: DataViewCardSelection) => React.ReactNode;\n /**\n * Opt-in \"Quadro\" (board) layout. Needs `renderCard` too — the board reuses\n * the entity's card, so a board config without one simply offers no board\n * rather than failing: that is a config gap, not a runtime error.\n */\n board?: BoardConfig<T>;\n /** Opt-in \"Lista\" layout: one full-width, entity-rendered row per record. */\n renderListRow?: (row: T, selection: DataViewCardSelection) => React.ReactNode;\n /** The Lista's shared columns, so its rows line up by construction. */\n listGroup?: ListGroupConfig<T>;\n /** Opt-in expandable rows, drawn by the table layout only. */\n rowDetail?: DataViewRowDetail<T>;\n /** The page-level partition rendered as tabs under the toolbar. */\n scopes?: ScopeConfig[];\n /**\n * The row field the scopes partition by. Compared against the board's\n * `groupBy` so the two are not shown as the same partition twice.\n */\n scopeFieldId?: string;\n /** Per-sort-field value kind, so directions read in the column's own terms. */\n sortKinds?: Record<string, string>;\n /** The saved-view chrome bracketing the Exibir panel. */\n displayView?: DisplayPanelView;\n /** Injected export — the host re-queries; the grid never fetches. */\n exportConfig?: DataViewExport;\n /** Page title in the grid's own header row, above the scopes + toolbar. */\n title?: string;\n /** Primary page actions rendered at the header row's right. */\n headerActions?: React.ReactNode;\n /** Which layout to show first when the user has expressed no preference (default \"table\"). */\n defaultLayout?: DataViewsLayout;\n /** Pin to `defaultLayout`, ignoring the remembered preference (stories/docs). */\n ignoreStoredLayout?: boolean;\n /**\n * Opt into the responsive inline filter UX: a collapsible filter row below the\n * toolbar on wide screens and a modal on narrow ones. When false (default),\n * keep the classic slide-in filter panel opened by the \"Filtros\" button.\n */\n inlineFilters?: boolean;\n /**\n * Keep the inline search box on screen even with no filter fields and no\n * active search. Without it a grid whose only filter IS the search (`fields`\n * empty) can never OFFER one: the row renders only once a search exists, so\n * the operator would have to hand-edit the URL to start one. Default false —\n * every grid that ships filter fields already shows the row.\n */\n alwaysShowSearch?: boolean;\n}\n\n/** The scrollable content region: scope tabs, toolbar, filter bar, body, pager. */\nfunction ShellStack<T extends Record<string, unknown>>({\n props,\n filters,\n}: {\n props: GridShellProps<T>;\n filters: ReturnType<typeof useGridShellFilters<T>>;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { c, testIdPrefix, dataTestId, scopes = [], emptyState, inlineFilters = false } = props;\n const { showInline, useModal, inlineVisible, filterProps, split, onControlOpenChange } = filters;\n // The grid renders the FILTERED empty state itself — it is the only party\n // that knows a filter is applied. See {@link DataViewsEmpty}.\n const body = (\n <DataViewsEmpty\n filtered={c.activeFilterCount > 0 || c.state.search !== \"\"}\n onClearFilters={() => c.patch({ search: \"\", pills: {}, ranges: {} })}\n emptyState={emptyState}\n testIdPrefix={testIdPrefix}\n />\n );\n return (\n <TableFilter\n copy={copy.tableFilter} open={c.filterOpen} onOpenChange={c.setFilterOpen}\n hasActiveFilters={c.activeFilterCount > 0}\n >\n <Stack spacing={0} data-testid={dataTestId ? `${dataTestId}-container` : undefined}>\n <GridHeaderRow title={props.title} headerActions={props.headerActions} testIdPrefix={testIdPrefix} />\n <ShellToolbar\n c={c}\n rows={props.rows}\n sortKinds={props.sortKinds}\n displayView={props.displayView}\n exportConfig={props.exportConfig}\n filterControls={\n inlineVisible ? (\n <InlineFilterControls\n {...filterProps} split={split} activeFilterCount={c.activeFilterCount}\n onControlOpenChange={onControlOpenChange}\n />\n ) : undefined\n }\n barRef={split.barRef}\n testIdPrefix={testIdPrefix}\n rowActions={props.rowActions}\n bulkActions={props.bulkActions}\n selectionExtra={resolveSelectionExtra(props)}\n allOnPageSelected={allOnPageSelected(c, props.getRowId)}\n toolbarRightSlot={props.toolbarRightSlot}\n compactControls={showInline && split.compactControls}\n counterHidden={showInline && split.counterHidden}\n showInline={showInline}\n />\n <ScopeTabsSlot\n scopes={scopes} scopeFieldId={props.scopeFieldId} board={props.board}\n value={c.scope} onChange={c.setScope} counts={c.scopeCounts}\n testIdPrefix={testIdPrefix}\n />\n <TableFilter.Layout>\n <TableFilter.Main>\n <GridMain\n c={c}\n getRowId={props.getRowId}\n renderCard={props.renderCard}\n renderListRow={props.renderListRow}\n listGroup={props.listGroup}\n board={props.board}\n rowDetail={props.rowDetail}\n dataTestId={dataTestId}\n testIdPrefix={testIdPrefix}\n emptyState={body}\n />\n <DataViewsPagination c={c} testIdPrefix={testIdPrefix} />\n </TableFilter.Main>\n {inlineFilters ? null : <GridFilterPanel {...filterProps} />}\n </TableFilter.Layout>\n {useModal && <FilterDialog open={c.filterOpen} onClose={() => c.setFilterOpen(false)} {...filterProps} />}\n </Stack>\n </TableFilter>\n );\n}\n\nexport function GridShell<T extends Record<string, unknown>>(props: GridShellProps<T>): React.JSX.Element {\n const {\n c,\n fields,\n rangeFields,\n testIdPrefix,\n renderCard,\n renderListRow,\n board,\n defaultLayout,\n ignoreStoredLayout,\n inlineFilters = false,\n alwaysShowSearch = false,\n } = props;\n const filters = useGridShellFilters({\n c,\n inlineFilters,\n fields,\n rangeFields,\n testIdPrefix,\n alwaysShowSearch,\n hasExport: props.exportConfig !== undefined,\n });\n return (\n <DataViewsLayoutProvider\n canUseCards={Boolean(renderCard)}\n canUseList={Boolean(renderListRow)}\n // The board reuses the entity's card, so it needs BOTH — a `board` with no\n // `renderCard` offers no board rather than throwing.\n canUseBoard={Boolean(board && renderCard)}\n defaultLayout={defaultLayout}\n ignoreStoredLayout={ignoreStoredLayout}\n viewLayout={c.state.layout}\n >\n <LayoutStateSync c={c} />\n <ShellStack props={props} filters={filters} />\n </DataViewsLayoutProvider>\n );\n}\n"],"mappings":"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","names":["default"]}
@@ -1,9 +1,3 @@
1
- import {
2
- badgeContentOf,
3
- definedAria,
4
- formatCount,
5
- resolveBadgeProps
6
- } from "./chunk-6C5D6O3D.js";
7
1
  import {
8
2
  buildBadgeContent
9
3
  } from "./chunk-H6XOWGQV.js";
@@ -11,6 +5,12 @@ import {
11
5
  badgeStyles,
12
6
  getAnchorOrigin
13
7
  } from "./chunk-OEMZFRLF.js";
8
+ import {
9
+ badgeContentOf,
10
+ definedAria,
11
+ formatCount,
12
+ resolveBadgeProps
13
+ } from "./chunk-6C5D6O3D.js";
14
14
  import {
15
15
  CLOSE_DELAY_MS,
16
16
  MOUNT_ANIMATION_MS
@@ -180,4 +180,4 @@ Badge.displayName = "Badge";
180
180
  export {
181
181
  Badge
182
182
  };
183
- //# sourceMappingURL=chunk-EUPUEMFX.js.map
183
+ //# sourceMappingURL=chunk-PC4H5LVB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  partTestId
3
- } from "./chunk-CLC4VIOF.js";
3
+ } from "./chunk-4PYEDDYV.js";
4
4
  import {
5
5
  SETTING_CARD_OPEN_ATTR,
6
6
  withCallerSx
@@ -79,4 +79,4 @@ export {
79
79
  settingGridStyles,
80
80
  SettingGrid
81
81
  };
82
- //# sourceMappingURL=chunk-44JLXXWQ.js.map
82
+ //# sourceMappingURL=chunk-PPITQH3C.js.map
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-KHG57NAE.js";
13
13
  import {
14
14
  ContentToolbar
15
- } from "./chunk-TZFBJ47T.js";
15
+ } from "./chunk-SFLNHCA2.js";
16
16
  import {
17
17
  FilterTrigger
18
18
  } from "./chunk-M5DBOM7R.js";
@@ -112,11 +112,13 @@ function GridToolbar(props) {
112
112
  clearAllText: copy.filters.clearAll,
113
113
  hasSelection: selectedRows.length > 0,
114
114
  selectedCount: selectedRows.length,
115
+ selectedCountLabel: copy.selection.selectedCount,
115
116
  selectAll: props.selectAll,
116
117
  clearSelection: props.clearSelection,
117
118
  selectAllTestId: `${testIdPrefix}-select-all`,
118
119
  clearAllTestId: `${testIdPrefix}-clear-all`,
119
120
  selectionExtra: props.selectionExtra,
121
+ allSelected: props.allOnPageSelected,
120
122
  actions: renderBulkActions({
121
123
  rowActions: props.rowActions,
122
124
  bulkActions: props.bulkActions,
@@ -136,4 +138,4 @@ function GridToolbar(props) {
136
138
  export {
137
139
  GridToolbar
138
140
  };
139
- //# sourceMappingURL=chunk-KEKOPD43.js.map
141
+ //# sourceMappingURL=chunk-PQ7RWH7L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport Divider from \"@mui/material/Divider/index.js\";\n\nimport {\n ContentToolbar,\n FilterTrigger,\n type ColumnVisibilityOption,\n type SortFieldDefinition,\n} from \"../../layout/ContentToolbar\";\nimport { Box } from \"../../../mui/Box\";\nimport { Text } from \"../../typography/Text\";\n\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { DataViewsDisplayPanel, type DisplayPanelView } from \"./data-views-display-panel\";\nimport { DataViewsExportMenu, type DataViewExport } from \"./data-views-export\";\nimport { renderBulkActions } from \"./data-views-grid-helpers\";\nimport type { RowAction } from \"./data-views-types\";\nimport type { DataViewsController } from \"./use-data-views-state\";\nimport { sxRem } from \"../../../tokens/relative\";\n\nexport interface GridToolbarProps<T extends Record<string, unknown>> {\n testIdPrefix: string;\n selectedRows: T[];\n selectAll: () => void;\n clearSelection: () => void;\n rowActions?: RowAction<T>[];\n bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;\n /** A control between the count and the actions menu — see `selectionExtra`. */\n selectionExtra?: React.ReactNode;\n /** Every row on the page is ticked: the select-all box reads checked, else partial. */\n allOnPageSelected?: boolean;\n sortFields: SortFieldDefinition[];\n activeSortField: string;\n activeSortOrder: \"asc\" | \"desc\";\n onChangeSort: (field: string, order: \"asc\" | \"desc\") => void;\n matchedCount: number;\n totalCount: number;\n toolbarRightSlot?: React.ReactNode;\n columnOptions: ColumnVisibilityOption[];\n onToggleColumn: (id: string, visible: boolean) => void;\n filterOpen: boolean;\n setFilterOpen: (open: boolean) => void;\n activeFilterCount: number;\n /** Hide the \"Filtros\" slide-in trigger (compact layout shows filters inline). */\n showFilterTrigger?: boolean;\n /**\n * Search + filter controls, rendered ON the toolbar line rather than on a row\n * beneath it. Absent ⇒ the toolbar keeps its plain two-cluster shape.\n */\n filterControls?: React.ReactNode;\n /** Measures the toolbar ROW for the filter overflow — see `useFilterOverflow`. */\n barRef?: React.Ref<HTMLDivElement>;\n /** The controller, so \"Exibir\" can drive sort, columns, order and format. */\n c: DataViewsController<T>;\n /** Per-sort-field value kind, so directions read in the column's own terms. */\n sortKinds?: Record<string, string>;\n /** The saved-view chrome bracketing the Exibir panel, when the host has views. */\n displayView?: DisplayPanelView;\n /** Injected export. Absent ⇒ no Exportar control. */\n exportConfig?: DataViewExport;\n /**\n * Step 2 of the degradation ladder: Exibir/Exportar as icons only.\n * MEASURED upstream (see `useFilterOverflow`) rather than switched at a\n * breakpoint, so a two-filter page keeps its labels where a five-filter one\n * has already given them up.\n */\n compactControls?: boolean;\n /**\n * Step 5 of the ladder, and its floor: on a screen too narrow for even the\n * fully-collapsed row, the counter is dropped so the controls still fit one\n * line instead of spilling outside the toolbar.\n */\n counterHidden?: boolean;\n}\n\n/** The right-aligned toolbar controls: Sort By, the counter, zoom/layout/columns, filters. */\nfunction ToolbarRightControls<T extends Record<string, unknown>>(props: GridToolbarProps<T>): React.JSX.Element {\n const { testIdPrefix, matchedCount, totalCount, filterOpen, setFilterOpen } = props;\n return (\n <>\n {/* MEASURED, never breakpointed: `RESERVED.counter` prices it into the\n ladder, so hiding it at `md` was the ladder and a breakpoint\n disagreeing about the same pixels — which broke the row at exactly\n 900px. It is dropped only as the ladder's last rung. */}\n {!props.counterHidden && (\n <>\n <Text variant=\"caption\" as=\"span\">\n <Box\n component=\"span\"\n data-testid={`${testIdPrefix}-counter`}\n sx={{ whiteSpace: \"nowrap\" }}\n >\n {matchedCount} de {totalCount}\n </Box>\n </Text>\n {/* Divides the READING of the list from the controls that change it —\n the counter states what is on screen, everything right of here\n acts on it. */}\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ height: sxRem(20), alignSelf: \"center\", mx: 0.5 }}\n />\n </>\n )}\n {props.toolbarRightSlot}\n {/* Sort + columns + format, in ONE control — see DataViewsDisplayPanel. */}\n <DataViewsDisplayPanel\n c={props.c}\n testIdPrefix={testIdPrefix}\n sortKinds={props.sortKinds}\n view={props.displayView}\n compact={props.compactControls}\n />\n {props.exportConfig && (\n <DataViewsExportMenu\n config={props.exportConfig}\n query={props.c.currentQuery}\n totalCount={props.totalCount}\n selectedIds={[...props.c.selectedIds]}\n columns={props.columnOptions.filter((col) => col.visible).map((col) => ({ id: col.id, label: col.label }))}\n testIdPrefix={testIdPrefix}\n compact={props.compactControls}\n />\n )}\n {props.showFilterTrigger !== false && (\n <FilterTrigger\n open={filterOpen}\n onOpenChange={setFilterOpen}\n activeCount={props.activeFilterCount}\n data-testid={`${testIdPrefix}-filters-toggle`}\n />\n )}\n </>\n );\n}\n\n/**\n * The bordered toolbar band: selection chrome + Sort By, the result counter, the\n * saved-views slot, and the filter funnel. The negative margin lets the top/bottom\n * separators reach the sidebar's vertical line and the window edge.\n */\nexport function GridToolbar<T extends Record<string, unknown>>(props: GridToolbarProps<T>): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { testIdPrefix, selectedRows } = props;\n return (\n <Box\n ref={props.barRef}\n sx={{\n borderTop: 1,\n borderBottom: 1,\n borderColor: \"divider\",\n py: 1.25,\n mx: { xs: -2, md: -3 },\n px: { xs: 2, md: 3 },\n }}\n >\n <ContentToolbar\n selectAllLabel={copy.selection.selectAll}\n selectAllText={copy.selection.selectAllOnPage}\n clearAllText={copy.filters.clearAll}\n hasSelection={selectedRows.length > 0}\n selectedCount={selectedRows.length}\n selectedCountLabel={copy.selection.selectedCount}\n selectAll={props.selectAll}\n clearSelection={props.clearSelection}\n selectAllTestId={`${testIdPrefix}-select-all`}\n clearAllTestId={`${testIdPrefix}-clear-all`}\n selectionExtra={props.selectionExtra}\n allSelected={props.allOnPageSelected}\n actions={renderBulkActions({\n rowActions: props.rowActions,\n bulkActions: props.bulkActions,\n selectedRows,\n clearSelection: props.clearSelection,\n testIdPrefix,\n })}\n leadingControls={props.filterControls}\n // Selection takes the whole line: no Select All while browsing, and no\n // search/filters/Exibir/Exportar once a row is ticked.\n exclusiveSelection\n rightControls={<ToolbarRightControls {...props} />}\n />\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,aAAa;AAoFZ,mBACE,KACE,YAFJ;AATR,SAAS,qBAAwD,OAA+C;AAC9G,QAAM,EAAE,cAAc,cAAc,YAAY,YAAY,cAAc,IAAI;AAC9E,SACE,iCAKG;AAAA,KAAC,MAAM,iBACN,iCACE;AAAA,0BAAC,QAAK,SAAQ,WAAU,IAAG,QACzB;AAAA,QAACA;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,eAAa,GAAG,YAAY;AAAA,UAC5B,IAAI,EAAE,YAAY,SAAS;AAAA,UAE1B;AAAA;AAAA,YAAa;AAAA,YAAK;AAAA;AAAA;AAAA,MACrB,GACF;AAAA,MAIA;AAAA,QAAC;AAAA;AAAA,UACC,aAAY;AAAA,UACZ,UAAQ;AAAA,UACR,IAAI,EAAE,QAAQ,MAAM,EAAE,GAAG,WAAW,UAAU,IAAI,IAAI;AAAA;AAAA,MACxD;AAAA,OACF;AAAA,IAED,MAAM;AAAA,IAEP;AAAA,MAAC;AAAA;AAAA,QACC,GAAG,MAAM;AAAA,QACT;AAAA,QACA,WAAW,MAAM;AAAA,QACjB,MAAM,MAAM;AAAA,QACZ,SAAS,MAAM;AAAA;AAAA,IACjB;AAAA,IACC,MAAM,gBACL;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ,MAAM;AAAA,QACd,OAAO,MAAM,EAAE;AAAA,QACf,YAAY,MAAM;AAAA,QAClB,aAAa,CAAC,GAAG,MAAM,EAAE,WAAW;AAAA,QACpC,SAAS,MAAM,cAAc,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,OAAO,IAAI,MAAM,EAAE;AAAA,QACzG;AAAA,QACA,SAAS,MAAM;AAAA;AAAA,IACjB;AAAA,IAED,MAAM,sBAAsB,SAC3B;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,cAAc;AAAA,QACd,aAAa,MAAM;AAAA,QACnB,eAAa,GAAG,YAAY;AAAA;AAAA,IAC9B;AAAA,KAEJ;AAEJ;AAOO,SAAS,YAA+C,OAA+C;AAC5G,QAAM,OAAO,iBAAiB;AAC9B,QAAM,EAAE,cAAc,aAAa,IAAI;AACvC,SACE;AAAA,IAACA;AAAA,IAAA;AAAA,MACC,KAAK,MAAM;AAAA,MACX,IAAI;AAAA,QACF,WAAW;AAAA,QACX,cAAc;AAAA,QACd,aAAa;AAAA,QACb,IAAI;AAAA,QACJ,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG;AAAA,QACrB,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE;AAAA,MACrB;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,gBAAgB,KAAK,UAAU;AAAA,UAC/B,eAAe,KAAK,UAAU;AAAA,UAC9B,cAAc,KAAK,QAAQ;AAAA,UAC3B,cAAc,aAAa,SAAS;AAAA,UACpC,eAAe,aAAa;AAAA,UAC5B,oBAAoB,KAAK,UAAU;AAAA,UACnC,WAAW,MAAM;AAAA,UACjB,gBAAgB,MAAM;AAAA,UACtB,iBAAiB,GAAG,YAAY;AAAA,UAChC,gBAAgB,GAAG,YAAY;AAAA,UAC/B,gBAAgB,MAAM;AAAA,UACtB,aAAa,MAAM;AAAA,UACnB,SAAS,kBAAkB;AAAA,YACzB,YAAY,MAAM;AAAA,YAClB,aAAa,MAAM;AAAA,YACnB;AAAA,YACA,gBAAgB,MAAM;AAAA,YACtB;AAAA,UACF,CAAC;AAAA,UACD,iBAAiB,MAAM;AAAA,UAGvB,oBAAkB;AAAA,UAClB,eAAe,oBAAC,wBAAsB,GAAG,OAAO;AAAA;AAAA,MAClD;AAAA;AAAA,EACF;AAEJ;","names":["default"]}
@@ -202,6 +202,7 @@ var PT_BR_DATA_VIEWS_COPY = {
202
202
  clearSelection: "Limpar sele\xE7\xE3o",
203
203
  selectAll: "Selecionar tudo",
204
204
  onThisPage: (count) => `${count} nesta p\xE1gina`,
205
+ selectedCount: (count) => `${count} ${count === 1 ? "selecionado" : "selecionados"}`,
205
206
  selectRow: "Selecionar",
206
207
  expandRow: "Expandir detalhes",
207
208
  collapseRow: "Recolher detalhes"
@@ -247,4 +248,4 @@ export {
247
248
  PT_BR_DATA_STATE_COPY,
248
249
  PT_BR_DATA_VIEWS_COPY
249
250
  };
250
- //# sourceMappingURL=chunk-HRMB72E4.js.map
251
+ //# sourceMappingURL=chunk-QHP5PZNC.js.map
@@ -1 +1 @@
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: 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};\n\nexport const PT_BR_CAROUSEL_COPY: CarouselCopy = {\n previous: \"Anterior\",\n next: \"Próximo\",\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 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 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 },\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 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 selectRow: \"Selecionar\",\n expandRow: \"Expandir detalhes\",\n collapseRow: \"Recolher detalhes\",\n },\n nav: {\n mainView: \"Visão principal\",\n defaultTag: \"Padrão\",\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
+ {"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: 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};\n\nexport const PT_BR_CAROUSEL_COPY: CarouselCopy = {\n previous: \"Anterior\",\n next: \"Próximo\",\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 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 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 },\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 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 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":[]}
@@ -64,15 +64,15 @@ function railsTemplateFor(gutters, metaColumns) {
64
64
  }
65
65
  var RAIL_COUNT = 8;
66
66
  var CELL_FIXED_RAILS = 4;
67
- function cellRailsTemplate(cells) {
67
+ function cellRailsTemplate(cells, gutters = { disclose: true, drag: true, select: true }) {
68
68
  return [
69
- DEFAULT_RAILS.disclose,
70
- DEFAULT_RAILS.drag,
71
- DEFAULT_RAILS.select,
69
+ gutters.disclose ? DEFAULT_RAILS.disclose : null,
70
+ gutters.drag ? DEFAULT_RAILS.drag : null,
71
+ gutters.select ? DEFAULT_RAILS.select : null,
72
72
  DEFAULT_RAILS.leading,
73
73
  ...cells,
74
74
  DEFAULT_RAILS.actions
75
- ].join(" ");
75
+ ].filter((rail) => rail != null).join(" ");
76
76
  }
77
77
  function cellRailCount(cells) {
78
78
  return CELL_FIXED_RAILS + cells + 1;
@@ -129,4 +129,4 @@ export {
129
129
  cellRailCount,
130
130
  ListCardGroup
131
131
  };
132
- //# sourceMappingURL=chunk-GNBCSTXF.js.map
132
+ //# sourceMappingURL=chunk-QKAYXAQE.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/list-card-rails.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext, type ReactNode } from \"react\";\n\nimport { Box } from \"../../../mui/Box\";\nimport { DENSITY_ROW_PADDING, type DataViewsDensity } from \"./data-views-layout-context\";\nimport { CellConfigProvider, cellTracks, type ListCardCellConfig } from \"./list-card-cells\";\n\n/**\n * THE LIST OWNS THE COLUMNS, NOT THE ROW.\n *\n * Every row laying itself out with flex produces a list where nothing lines up.\n * The caption takes `flex: 1` and shoves the rest right; the value sits after\n * the meta cluster with the same gap as any other pair, so `MÉTODO PIX\n * R$ 13,90` reads as one continuous run and the only unlabelled thing in the\n * row is the number that matters most; and because the status chip's width\n * varies with its text (`Pago` vs `Em aberto` vs `Cancelado`), the money jitters\n * left and right on every row down the page.\n *\n * So the rails are declared ONCE, here, and each card is `grid-template-columns:\n * subgrid` spanning them. One set of edges for the whole list, the value on its\n * own rail, the status in a slot wide enough for the longest label it will ever\n * hold. Adding a row cannot move the column.\n *\n * Subgrid needs the card to be a DIRECT child of this grid — no wrapper element\n * between them, which is why the group renders its children bare.\n */\n\n/** One rail. Fixed where alignment matters, flexible where it does not. */\nexport interface ListRails {\n /**\n * The disclosure chevron, ahead of everything.\n *\n * Reserved on the same terms as the gutters behind it: a list where only SOME\n * rows carry an expandable body would otherwise indent those rows and no\n * others, and a column of captions that starts at two different offsets reads\n * as a rendering fault rather than as a row you can open.\n */\n disclose: string;\n /** Reserved even when nothing drags: toggling drag mode must not shift the list. */\n drag: string;\n /** Reserved even when nothing is selectable, for the same reason. */\n select: string;\n leading: string;\n /** Absorbs spare width, alongside `meta`. */\n caption: string;\n /** Also absorbs spare width, so the middle columns spread rather than bunch. */\n meta: string;\n /** The value's own rail, with a fixed right edge. */\n value: string;\n actions: string;\n}\n\n/**\n * The meta rail, sized to sit its pairs on even intervals WITH the caption.\n *\n * ONE SHARE OF THE SPARE WIDTH PER PAIR, not one for the cluster. A single `1fr`\n * handed the whole cluster as much room as the title and then split it between\n * the pairs, so the title sat on a full share while `DATA` and `MÉTODO` had half\n * a share each — which is why the gap after the title came out twice the gap\n * between the pairs. Even columns need even shares, so the rail grows with the\n * number of pairs it has to hold.\n *\n * `max-content` still floors it: the evenness is never paid for with a clipped\n * label on a row too narrow to afford it.\n */\nexport function metaRail(columns: number): string {\n return `minmax(max-content, ${Math.max(columns, 1)}fr)`;\n}\n\n/**\n * The caption and meta rails, resolved TOGETHER — because exactly one of them\n * has to be the flexible track, and which one depends on whether the row has any\n * middle columns at all.\n *\n * A grid distributes its free space to `fr` tracks; with no `fr` present it\n * spreads it across every `auto` track instead — including the empty gutters,\n * the empty meta rail and the empty status rail. So a row with a title and a\n * value and nothing between them drifted its title into the middle of the row,\n * each empty rail having claimed an equal share of the slack.\n *\n * With pairs to place, `meta` is the flexible one and the caption sizes to its\n * title (the spare width belongs to the only rail with several things to space\n * out). With no pairs, there is nothing to distribute and the caption takes the\n * slack back, which is what it always did.\n */\nexport function contentRails(metaColumns: number): Pick<ListRails, \"caption\" | \"meta\"> {\n return metaColumns > 0\n ? { caption: \"minmax(0, auto)\", meta: metaRail(metaColumns) }\n : { caption: \"minmax(0, 1fr)\", meta: \"auto\" };\n}\n\nexport const DEFAULT_RAILS: ListRails = {\n disclose: \"auto\",\n drag: \"auto\",\n select: \"auto\",\n leading: \"auto\",\n // Two is the canonical row (a date and a method); a list carrying a different\n // number says so with `metaColumns`, and a standalone card counts its own.\n ...contentRails(2),\n // `max-content` on the value, so the rail is as wide as the widest amount in\n // the list and no wider — a fixed px guess is either clipping or dead space.\n // NOT an `fr`: the value's whole promise is a fixed right edge, and a rail\n // that grows with the spare width moves that edge on every list.\n value: \"max-content\",\n actions: \"auto\",\n};\n\nexport interface ListRailsValue {\n density: DataViewsDensity;\n /** Whether the gutters are held open even when empty. */\n reserveGutters: boolean;\n /**\n * How many tracks a row spans.\n *\n * Fixed at {@link RAIL_COUNT} for the named-slot layout, but a cell-configured\n * list has as many tracks as the config declares, and every row must span the\n * same number or subgrid tears.\n */\n railCount: number;\n}\n\nconst ListRailsContext = createContext<ListRailsValue | null>(null);\n\n/** Is this card inside a group that owns the rails? */\nexport function useListRails(): ListRailsValue | null {\n return useContext(ListRailsContext);\n}\n\n/**\n * The column template, as one `grid-template-columns` value.\n *\n * A rail set to `null` is DROPPED rather than sized to zero. The two are not the\n * same: a zero-width track still takes a `column-gap` beside it, so a gutter\n * nobody is using still pushes the row's contents inward. Only a standalone card\n * may drop one — inside a group the rails are subgrid over a shared template and\n * every row must span the same count.\n */\nexport function railsTemplate(rails: RailOverrides): string {\n return [\n rails.disclose,\n rails.drag,\n rails.select,\n rails.leading,\n rails.caption,\n rails.meta,\n rails.value,\n rails.actions,\n ]\n .filter((rail): rail is string => rail != null)\n .join(\" \");\n}\n\n/** A rail set, where `null` means \"this rail is not in the template at all\". */\ntype RailOverrides = { [K in keyof ListRails]: ListRails[K] | null };\n\n/** The gap between rails, in theme spacing units. */\nexport const RAIL_GAP = 3;\n\n/** …the same gap in pixels, for anything drawing INTO it. */\nexport const RAIL_GAP_PX = RAIL_GAP * 8;\n\n/**\n * AN EMPTY GUTTER COSTS ITS OWN WIDTH *AND* THE RAIL GAP BESIDE IT.\n *\n * A zero-width grid track still gets a `column-gap`, and no margin on the item\n * inside it can win that back — gaps sit between TRACKS, and a track's position\n * is settled before any item's margin is applied. (Tried it; the box simply\n * overhangs its own track and everything after it stays put.) So a row with\n * nothing to drag was paying 24px for a rail holding nothing, which was the\n * single biggest contributor to the left inset the checkbox appeared to have.\n *\n * The only way out is for the track NOT TO EXIST: the slot renders nothing and\n * the rail leaves the template, which is safe because grid auto-placement fills\n * the remaining tracks in DOM order. Standalone only — inside a\n * {@link ListCardGroup} the rails are subgrid across a shared template and the\n * count cannot vary per row, which is also where `reserveGutters` earns its\n * keep: a selectable list and a read-only one still line up, and turning drag\n * mode on does not shift every row sideways.\n */\nexport function railsTemplateFor(\n gutters: { disclose: boolean; drag: boolean; select: boolean },\n metaColumns: number,\n): string {\n return railsTemplate({\n ...DEFAULT_RAILS,\n // Standalone, the card can simply COUNT its pairs — no `metaColumns` to be\n // told, and no guess.\n ...contentRails(metaColumns),\n ...(gutters.disclose ? {} : { disclose: null }),\n ...(gutters.drag ? {} : { drag: null }),\n ...(gutters.select ? {} : { select: null }),\n });\n}\n\n/** How many rails the named-slot layout has — the span such a card claims. */\nexport const RAIL_COUNT = 8;\n\n/**\n * The gutters and the trailing menu that bracket a CONFIGURED row.\n *\n * A cell-configured list still has a head and a tail the config does not\n * describe: the disclosure chevron, the drag grip and the checkbox in front, and\n * the overflow menu behind. The menu is not optional — it is where a row's\n * actions live, and a list that hid it would have nowhere to put them.\n */\nconst CELL_FIXED_RAILS = 4;\n\n/** Tracks for a cell-configured row: gutters, leading, the cells, then the menu. */\nexport function cellRailsTemplate(cells: readonly string[]): string {\n return [\n DEFAULT_RAILS.disclose,\n DEFAULT_RAILS.drag,\n DEFAULT_RAILS.select,\n DEFAULT_RAILS.leading,\n ...cells,\n DEFAULT_RAILS.actions,\n ].join(\" \");\n}\n\n/** How many tracks such a row spans — the fixed head/tail plus one per cell. */\nexport function cellRailCount(cells: number): number {\n return CELL_FIXED_RAILS + cells + 1;\n}\n\n/**\n * A {@link ListCardGroup}'s configuration, as a value a caller can pass around.\n *\n * The same fields the group takes as props, named once so a table can accept\n * \"the list's columns\" as a single prop and hand them straight over. It is what\n * makes a list line up BY CONSTRUCTION rather than by convention: without it\n * every row resolves its own tracks from its own copy of the config, which\n * agrees with its neighbours right until one row carries an unusually wide value.\n */\nexport interface ListGroupConfig<T extends Record<string, unknown>> {\n /**\n * The cells every row renders. Supplying these replaces the named-slot layout\n * (title/subtitle/meta/value/status) for the rows inside.\n */\n cells?: readonly ListCardCellConfig<T>[];\n /**\n * How many labelled pairs the rows carry, in the named-slot layout. The group\n * renders its children opaquely and cannot count them.\n */\n metaColumns?: number;\n /** Override individual rails; anything omitted keeps its default. */\n rails?: Partial<ListRails>;\n /**\n * Hold the drag and select gutters open even when nothing uses them. On by\n * default, so a selectable list and a read-only one still line up.\n */\n reserveGutters?: boolean;\n}\n\n/**\n * A list of {@link BaseListCard}s that share one set of columns.\n *\n * Also the natural home for the things a review pointed out belong to the list\n * rather than the card: the density every row answers, and — when it lands —\n * shift-click range selection and the single `aria-live` region a list needs\n * (fifty polite live regions is a screen-reader nightmare, which is why the\n * card no longer takes one).\n */\nexport function ListCardGroup({\n children,\n density = \"cozy\",\n cells,\n metaColumns,\n rails,\n reserveGutters = true,\n gap,\n dataTestId,\n}: {\n children: ReactNode;\n density?: DataViewsDensity;\n /**\n * The list's CELL CONFIG — declared once here, obeyed by every row.\n *\n * This is what makes the columns line up by construction rather than by\n * convention: the group resolves the tracks and hands the same config to every\n * card, so two rows cannot disagree about the shape of the list because\n * neither of them decides it.\n *\n * Supplying this replaces the named-slot layout (title/subtitle/meta/value/\n * status) for the rows inside — they render `row` through these cells instead.\n * The gutters and the overflow menu are unaffected; they bracket the cells and\n * are not the config's to describe.\n */\n cells?: readonly ListCardCellConfig<never>[];\n /**\n * How many labelled pairs the rows in this list carry.\n *\n * The rail claims one share of the spare width per pair, so the title and\n * every pair land on even intervals. A list is homogeneous — its rows show\n * the same fields — but the group renders its children opaquely and cannot\n * count them, so this is the one thing it has to be told.\n */\n metaColumns?: number;\n /** Override individual rails; anything omitted keeps its default. */\n rails?: Partial<ListRails>;\n /**\n * Hold the drag and select gutters open even when nothing uses them.\n *\n * On by default: a selectable list and a read-only one should line up, and\n * turning drag mode on should not shift every row sideways.\n */\n reserveGutters?: boolean;\n /** Row gap. Defaults to the density's own spacing. */\n gap?: number;\n dataTestId?: string;\n}): React.JSX.Element {\n const resolved = {\n ...DEFAULT_RAILS,\n ...(metaColumns == null ? {} : contentRails(metaColumns)),\n ...rails,\n };\n const configured = cells != null && cells.length > 0;\n const template = configured ? cellRailsTemplate(cellTracks(cells)) : railsTemplate(resolved);\n const railCount = configured ? cellRailCount(cells.length) : RAIL_COUNT;\n return (\n <ListRailsContext.Provider value={{ density, reserveGutters, railCount }}>\n <CellConfigProvider cells={cells}>\n <Box\n data-testid={dataTestId}\n sx={{\n // The query container for every row inside it — a row cannot be one\n // itself and a subgrid at the same time (containment drops subgrid).\n // Every row in a list is the same width anyway, so the group is the\n // honest place to ask the question.\n containerType: \"inline-size\",\n display: \"grid\",\n gridTemplateColumns: template,\n alignItems: \"center\",\n rowGap: gap ?? DENSITY_ROW_PADDING[density],\n }}\n >\n {children}\n </Box>\n </CellConfigProvider>\n </ListRailsContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAEA,SAAS,eAAe,kBAAkC;AAgUpD;AAhQC,SAAS,SAAS,SAAyB;AAChD,SAAO,uBAAuB,KAAK,IAAI,SAAS,CAAC,CAAC;AACpD;AAkBO,SAAS,aAAa,aAA0D;AACrF,SAAO,cAAc,IACjB,EAAE,SAAS,mBAAmB,MAAM,SAAS,WAAW,EAAE,IAC1D,EAAE,SAAS,kBAAkB,MAAM,OAAO;AAChD;AAEO,IAAM,gBAA2B;AAAA,EACtC,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA;AAAA;AAAA,EAGT,GAAG,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjB,OAAO;AAAA,EACP,SAAS;AACX;AAgBA,IAAM,mBAAmB,cAAqC,IAAI;AAG3D,SAAS,eAAsC;AACpD,SAAO,WAAW,gBAAgB;AACpC;AAWO,SAAS,cAAc,OAA8B;AAC1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR,EACG,OAAO,CAAC,SAAyB,QAAQ,IAAI,EAC7C,KAAK,GAAG;AACb;AAMO,IAAM,WAAW;AAGjB,IAAM,cAAc,WAAW;AAoB/B,SAAS,iBACd,SACA,aACQ;AACR,SAAO,cAAc;AAAA,IACnB,GAAG;AAAA;AAAA;AAAA,IAGH,GAAG,aAAa,WAAW;AAAA,IAC3B,GAAI,QAAQ,WAAW,CAAC,IAAI,EAAE,UAAU,KAAK;AAAA,IAC7C,GAAI,QAAQ,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK;AAAA,IACrC,GAAI,QAAQ,SAAS,CAAC,IAAI,EAAE,QAAQ,KAAK;AAAA,EAC3C,CAAC;AACH;AAGO,IAAM,aAAa;AAU1B,IAAM,mBAAmB;AAGlB,SAAS,kBAAkB,OAAkC;AAClE,SAAO;AAAA,IACL,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,IACd,GAAG;AAAA,IACH,cAAc;AAAA,EAChB,EAAE,KAAK,GAAG;AACZ;AAGO,SAAS,cAAc,OAAuB;AACnD,SAAO,mBAAmB,QAAQ;AACpC;AAwCO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AACF,GAsCsB;AACpB,QAAM,WAAW;AAAA,IACf,GAAG;AAAA,IACH,GAAI,eAAe,OAAO,CAAC,IAAI,aAAa,WAAW;AAAA,IACvD,GAAG;AAAA,EACL;AACA,QAAM,aAAa,SAAS,QAAQ,MAAM,SAAS;AACnD,QAAM,WAAW,aAAa,kBAAkB,WAAW,KAAK,CAAC,IAAI,cAAc,QAAQ;AAC3F,QAAM,YAAY,aAAa,cAAc,MAAM,MAAM,IAAI;AAC7D,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,EAAE,SAAS,gBAAgB,UAAU,GACtE,8BAAC,sBAAmB,OACnB;AAAA,IAACA;AAAA,IAAA;AAAA,MACC,eAAa;AAAA,MACb,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,QAKF,eAAe;AAAA,QACf,SAAS;AAAA,QACT,qBAAqB;AAAA,QACrB,YAAY;AAAA,QACZ,QAAQ,OAAO,oBAAoB,OAAO;AAAA,MAC5C;AAAA,MAEC;AAAA;AAAA,EACH,GACD,GACD;AAEJ;","names":["default"]}
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/list-card-rails.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext, type ReactNode } from \"react\";\n\nimport { Box } from \"../../../mui/Box\";\nimport { DENSITY_ROW_PADDING, type DataViewsDensity } from \"./data-views-layout-context\";\nimport { CellConfigProvider, cellTracks, type ListCardCellConfig } from \"./list-card-cells\";\n\n/**\n * THE LIST OWNS THE COLUMNS, NOT THE ROW.\n *\n * Every row laying itself out with flex produces a list where nothing lines up.\n * The caption takes `flex: 1` and shoves the rest right; the value sits after\n * the meta cluster with the same gap as any other pair, so `MÉTODO PIX\n * R$ 13,90` reads as one continuous run and the only unlabelled thing in the\n * row is the number that matters most; and because the status chip's width\n * varies with its text (`Pago` vs `Em aberto` vs `Cancelado`), the money jitters\n * left and right on every row down the page.\n *\n * So the rails are declared ONCE, here, and each card is `grid-template-columns:\n * subgrid` spanning them. One set of edges for the whole list, the value on its\n * own rail, the status in a slot wide enough for the longest label it will ever\n * hold. Adding a row cannot move the column.\n *\n * Subgrid needs the card to be a DIRECT child of this grid — no wrapper element\n * between them, which is why the group renders its children bare.\n */\n\n/** One rail. Fixed where alignment matters, flexible where it does not. */\nexport interface ListRails {\n /**\n * The disclosure chevron, ahead of everything.\n *\n * Reserved on the same terms as the gutters behind it: a list where only SOME\n * rows carry an expandable body would otherwise indent those rows and no\n * others, and a column of captions that starts at two different offsets reads\n * as a rendering fault rather than as a row you can open.\n */\n disclose: string;\n /** Reserved even when nothing drags: toggling drag mode must not shift the list. */\n drag: string;\n /** Reserved even when nothing is selectable, for the same reason. */\n select: string;\n leading: string;\n /** Absorbs spare width, alongside `meta`. */\n caption: string;\n /** Also absorbs spare width, so the middle columns spread rather than bunch. */\n meta: string;\n /** The value's own rail, with a fixed right edge. */\n value: string;\n actions: string;\n}\n\n/**\n * The meta rail, sized to sit its pairs on even intervals WITH the caption.\n *\n * ONE SHARE OF THE SPARE WIDTH PER PAIR, not one for the cluster. A single `1fr`\n * handed the whole cluster as much room as the title and then split it between\n * the pairs, so the title sat on a full share while `DATA` and `MÉTODO` had half\n * a share each — which is why the gap after the title came out twice the gap\n * between the pairs. Even columns need even shares, so the rail grows with the\n * number of pairs it has to hold.\n *\n * `max-content` still floors it: the evenness is never paid for with a clipped\n * label on a row too narrow to afford it.\n */\nexport function metaRail(columns: number): string {\n return `minmax(max-content, ${Math.max(columns, 1)}fr)`;\n}\n\n/**\n * The caption and meta rails, resolved TOGETHER — because exactly one of them\n * has to be the flexible track, and which one depends on whether the row has any\n * middle columns at all.\n *\n * A grid distributes its free space to `fr` tracks; with no `fr` present it\n * spreads it across every `auto` track instead — including the empty gutters,\n * the empty meta rail and the empty status rail. So a row with a title and a\n * value and nothing between them drifted its title into the middle of the row,\n * each empty rail having claimed an equal share of the slack.\n *\n * With pairs to place, `meta` is the flexible one and the caption sizes to its\n * title (the spare width belongs to the only rail with several things to space\n * out). With no pairs, there is nothing to distribute and the caption takes the\n * slack back, which is what it always did.\n */\nexport function contentRails(metaColumns: number): Pick<ListRails, \"caption\" | \"meta\"> {\n return metaColumns > 0\n ? { caption: \"minmax(0, auto)\", meta: metaRail(metaColumns) }\n : { caption: \"minmax(0, 1fr)\", meta: \"auto\" };\n}\n\nexport const DEFAULT_RAILS: ListRails = {\n disclose: \"auto\",\n drag: \"auto\",\n select: \"auto\",\n leading: \"auto\",\n // Two is the canonical row (a date and a method); a list carrying a different\n // number says so with `metaColumns`, and a standalone card counts its own.\n ...contentRails(2),\n // `max-content` on the value, so the rail is as wide as the widest amount in\n // the list and no wider — a fixed px guess is either clipping or dead space.\n // NOT an `fr`: the value's whole promise is a fixed right edge, and a rail\n // that grows with the spare width moves that edge on every list.\n value: \"max-content\",\n actions: \"auto\",\n};\n\nexport interface ListRailsValue {\n density: DataViewsDensity;\n /** Whether the gutters are held open even when empty. */\n reserveGutters: boolean;\n /**\n * How many tracks a row spans.\n *\n * Fixed at {@link RAIL_COUNT} for the named-slot layout, but a cell-configured\n * list has as many tracks as the config declares, and every row must span the\n * same number or subgrid tears.\n */\n railCount: number;\n}\n\nconst ListRailsContext = createContext<ListRailsValue | null>(null);\n\n/** Is this card inside a group that owns the rails? */\nexport function useListRails(): ListRailsValue | null {\n return useContext(ListRailsContext);\n}\n\n/**\n * The column template, as one `grid-template-columns` value.\n *\n * A rail set to `null` is DROPPED rather than sized to zero. The two are not the\n * same: a zero-width track still takes a `column-gap` beside it, so a gutter\n * nobody is using still pushes the row's contents inward. Only a standalone card\n * may drop one — inside a group the rails are subgrid over a shared template and\n * every row must span the same count.\n */\nexport function railsTemplate(rails: RailOverrides): string {\n return [\n rails.disclose,\n rails.drag,\n rails.select,\n rails.leading,\n rails.caption,\n rails.meta,\n rails.value,\n rails.actions,\n ]\n .filter((rail): rail is string => rail != null)\n .join(\" \");\n}\n\n/** A rail set, where `null` means \"this rail is not in the template at all\". */\ntype RailOverrides = { [K in keyof ListRails]: ListRails[K] | null };\n\n/** The gap between rails, in theme spacing units. */\nexport const RAIL_GAP = 3;\n\n/** …the same gap in pixels, for anything drawing INTO it. */\nexport const RAIL_GAP_PX = RAIL_GAP * 8;\n\n/**\n * AN EMPTY GUTTER COSTS ITS OWN WIDTH *AND* THE RAIL GAP BESIDE IT.\n *\n * A zero-width grid track still gets a `column-gap`, and no margin on the item\n * inside it can win that back — gaps sit between TRACKS, and a track's position\n * is settled before any item's margin is applied. (Tried it; the box simply\n * overhangs its own track and everything after it stays put.) So a row with\n * nothing to drag was paying 24px for a rail holding nothing, which was the\n * single biggest contributor to the left inset the checkbox appeared to have.\n *\n * The only way out is for the track NOT TO EXIST: the slot renders nothing and\n * the rail leaves the template, which is safe because grid auto-placement fills\n * the remaining tracks in DOM order. Standalone only — inside a\n * {@link ListCardGroup} the rails are subgrid across a shared template and the\n * count cannot vary per row, which is also where `reserveGutters` earns its\n * keep: a selectable list and a read-only one still line up, and turning drag\n * mode on does not shift every row sideways.\n */\nexport function railsTemplateFor(\n gutters: { disclose: boolean; drag: boolean; select: boolean },\n metaColumns: number,\n): string {\n return railsTemplate({\n ...DEFAULT_RAILS,\n // Standalone, the card can simply COUNT its pairs — no `metaColumns` to be\n // told, and no guess.\n ...contentRails(metaColumns),\n ...(gutters.disclose ? {} : { disclose: null }),\n ...(gutters.drag ? {} : { drag: null }),\n ...(gutters.select ? {} : { select: null }),\n });\n}\n\n/** How many rails the named-slot layout has — the span such a card claims. */\nexport const RAIL_COUNT = 8;\n\n/**\n * The gutters and the trailing menu that bracket a CONFIGURED row.\n *\n * A cell-configured list still has a head and a tail the config does not\n * describe: the disclosure chevron, the drag grip and the checkbox in front, and\n * the overflow menu behind. The menu is not optional — it is where a row's\n * actions live, and a list that hid it would have nowhere to put them.\n */\nconst CELL_FIXED_RAILS = 4;\n\n/**\n * Tracks for a cell-configured row: gutters, leading, the cells, then the menu.\n *\n * `gutters` says which of the three head gutters RENDER. A group reserves all\n * three (the default), so every row spans the same tracks. A standalone row\n * renders a gutter only when it uses it, and a track whose slot renders nothing\n * is not a reserved gap: grid auto-placement fills it with the NEXT slot. So the\n * checkbox landed in the disclosure track, the glyph in the drag track, and\n * every cell two tracks early, in a column sized for something else. The named-\n * slot layout already drops absent gutters ({@link railsTemplateFor}); this is\n * the same rule for configured cells.\n */\nexport function cellRailsTemplate(\n cells: readonly string[],\n gutters: { disclose: boolean; drag: boolean; select: boolean } = { disclose: true, drag: true, select: true },\n): string {\n return [\n gutters.disclose ? DEFAULT_RAILS.disclose : null,\n gutters.drag ? DEFAULT_RAILS.drag : null,\n gutters.select ? DEFAULT_RAILS.select : null,\n DEFAULT_RAILS.leading,\n ...cells,\n DEFAULT_RAILS.actions,\n ]\n .filter((rail): rail is string => rail != null)\n .join(\" \");\n}\n\n/** How many tracks such a row spans — the fixed head/tail plus one per cell. */\nexport function cellRailCount(cells: number): number {\n return CELL_FIXED_RAILS + cells + 1;\n}\n\n/**\n * A {@link ListCardGroup}'s configuration, as a value a caller can pass around.\n *\n * The same fields the group takes as props, named once so a table can accept\n * \"the list's columns\" as a single prop and hand them straight over. It is what\n * makes a list line up BY CONSTRUCTION rather than by convention: without it\n * every row resolves its own tracks from its own copy of the config, which\n * agrees with its neighbours right until one row carries an unusually wide value.\n */\nexport interface ListGroupConfig<T extends Record<string, unknown>> {\n /**\n * The cells every row renders. Supplying these replaces the named-slot layout\n * (title/subtitle/meta/value/status) for the rows inside.\n */\n cells?: readonly ListCardCellConfig<T>[];\n /**\n * How many labelled pairs the rows carry, in the named-slot layout. The group\n * renders its children opaquely and cannot count them.\n */\n metaColumns?: number;\n /** Override individual rails; anything omitted keeps its default. */\n rails?: Partial<ListRails>;\n /**\n * Hold the drag and select gutters open even when nothing uses them. On by\n * default, so a selectable list and a read-only one still line up.\n */\n reserveGutters?: boolean;\n}\n\n/**\n * A list of {@link BaseListCard}s that share one set of columns.\n *\n * Also the natural home for the things a review pointed out belong to the list\n * rather than the card: the density every row answers, and — when it lands —\n * shift-click range selection and the single `aria-live` region a list needs\n * (fifty polite live regions is a screen-reader nightmare, which is why the\n * card no longer takes one).\n */\nexport function ListCardGroup({\n children,\n density = \"cozy\",\n cells,\n metaColumns,\n rails,\n reserveGutters = true,\n gap,\n dataTestId,\n}: {\n children: ReactNode;\n density?: DataViewsDensity;\n /**\n * The list's CELL CONFIG — declared once here, obeyed by every row.\n *\n * This is what makes the columns line up by construction rather than by\n * convention: the group resolves the tracks and hands the same config to every\n * card, so two rows cannot disagree about the shape of the list because\n * neither of them decides it.\n *\n * Supplying this replaces the named-slot layout (title/subtitle/meta/value/\n * status) for the rows inside — they render `row` through these cells instead.\n * The gutters and the overflow menu are unaffected; they bracket the cells and\n * are not the config's to describe.\n */\n cells?: readonly ListCardCellConfig<never>[];\n /**\n * How many labelled pairs the rows in this list carry.\n *\n * The rail claims one share of the spare width per pair, so the title and\n * every pair land on even intervals. A list is homogeneous — its rows show\n * the same fields — but the group renders its children opaquely and cannot\n * count them, so this is the one thing it has to be told.\n */\n metaColumns?: number;\n /** Override individual rails; anything omitted keeps its default. */\n rails?: Partial<ListRails>;\n /**\n * Hold the drag and select gutters open even when nothing uses them.\n *\n * On by default: a selectable list and a read-only one should line up, and\n * turning drag mode on should not shift every row sideways.\n */\n reserveGutters?: boolean;\n /** Row gap. Defaults to the density's own spacing. */\n gap?: number;\n dataTestId?: string;\n}): React.JSX.Element {\n const resolved = {\n ...DEFAULT_RAILS,\n ...(metaColumns == null ? {} : contentRails(metaColumns)),\n ...rails,\n };\n const configured = cells != null && cells.length > 0;\n const template = configured ? cellRailsTemplate(cellTracks(cells)) : railsTemplate(resolved);\n const railCount = configured ? cellRailCount(cells.length) : RAIL_COUNT;\n return (\n <ListRailsContext.Provider value={{ density, reserveGutters, railCount }}>\n <CellConfigProvider cells={cells}>\n <Box\n data-testid={dataTestId}\n sx={{\n // The query container for every row inside it — a row cannot be one\n // itself and a subgrid at the same time (containment drops subgrid).\n // Every row in a list is the same width anyway, so the group is the\n // honest place to ask the question.\n containerType: \"inline-size\",\n display: \"grid\",\n gridTemplateColumns: template,\n alignItems: \"center\",\n rowGap: gap ?? DENSITY_ROW_PADDING[density],\n }}\n >\n {children}\n </Box>\n </CellConfigProvider>\n </ListRailsContext.Provider>\n );\n}\n"],"mappings":"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","names":["default"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ICON_PATHS
3
- } from "./chunk-6ZLP7BA7.js";
3
+ } from "./chunk-XC7YHO7Z.js";
4
4
  import {
5
5
  iconFill
6
6
  } from "./chunk-QWBQVQRG.js";
@@ -48,4 +48,4 @@ Icon.displayName = "Icon";
48
48
  export {
49
49
  Icon
50
50
  };
51
- //# sourceMappingURL=chunk-JC244QQF.js.map
51
+ //# sourceMappingURL=chunk-SEWUYHSG.js.map
@@ -23,9 +23,32 @@ var selectionButtonSx = {
23
23
  textTransform: "none",
24
24
  color: "text.primary"
25
25
  };
26
+ function SelectAllBox({
27
+ hasSelection,
28
+ allSelected,
29
+ selectAll,
30
+ clearSelection,
31
+ selectAllTestId,
32
+ selectAllLabel
33
+ }) {
34
+ return /* @__PURE__ */ jsx(
35
+ Checkbox,
36
+ {
37
+ size: "small",
38
+ checked: allSelected ?? hasSelection,
39
+ indeterminate: hasSelection && allSelected === false,
40
+ onChange: () => hasSelection && allSelected !== false ? clearSelection() : selectAll(),
41
+ "data-testid": `${selectAllTestId}-checkbox`,
42
+ inputProps: { "aria-label": selectAllLabel },
43
+ sx: { p: 0.5, display: { xs: "inline-flex", md: "none" } }
44
+ }
45
+ );
46
+ }
26
47
  function SelectionCluster({
27
48
  hasSelection,
49
+ allSelected,
28
50
  selectedCount,
51
+ selectedCountLabel,
29
52
  selectAll,
30
53
  clearSelection,
31
54
  actions,
@@ -78,20 +101,21 @@ function SelectionCluster({
78
101
  }
79
102
  ),
80
103
  /* @__PURE__ */ jsx(
81
- Checkbox,
104
+ SelectAllBox,
82
105
  {
83
- size: "small",
84
- checked: hasSelection,
85
- onChange: (event) => event.target.checked ? selectAll() : clearSelection(),
86
- "data-testid": `${selectAllTestId}-checkbox`,
87
- inputProps: { "aria-label": selectAllLabel },
88
- sx: { p: 0.5, display: { xs: "inline-flex", md: "none" } }
106
+ hasSelection,
107
+ allSelected,
108
+ selectAll,
109
+ clearSelection,
110
+ selectAllTestId,
111
+ selectAllLabel
89
112
  }
90
113
  ),
91
114
  hasSelection ? /* @__PURE__ */ jsx(
92
115
  SelectionState,
93
116
  {
94
117
  selectedCount,
118
+ selectedCountLabel,
95
119
  clearSelection,
96
120
  clearAllTestId,
97
121
  clearAllText,
@@ -105,6 +129,7 @@ function SelectionCluster({
105
129
  }
106
130
  function SelectionState({
107
131
  selectedCount,
132
+ selectedCountLabel,
108
133
  clearSelection,
109
134
  clearAllTestId,
110
135
  clearAllText,
@@ -124,18 +149,13 @@ function SelectionState({
124
149
  }
125
150
  ),
126
151
  /* @__PURE__ */ jsx(Divider, { orientation: "vertical", flexItem: true, sx: { height: sxRem(16), alignSelf: "center" } }),
127
- /* @__PURE__ */ jsxs(
152
+ /* @__PURE__ */ jsx(
128
153
  Typography,
129
154
  {
130
155
  component: "span",
131
156
  "data-testid": "selected-count-indicator",
132
157
  sx: { fontSize: sxRem(14), color: "text.secondary", whiteSpace: "nowrap", flexShrink: 0 },
133
- children: [
134
- selectedCount,
135
- " ",
136
- selectedCount === 1 ? "item" : "items",
137
- " selected"
138
- ]
158
+ children: selectedCountLabel(selectedCount)
139
159
  }
140
160
  ),
141
161
  selectionExtra !== void 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -202,7 +222,9 @@ function BrowsingClusters({
202
222
  }
203
223
  function ContentToolbar({
204
224
  hasSelection,
225
+ allSelected,
205
226
  selectedCount,
227
+ selectedCountLabel,
206
228
  selectAll,
207
229
  clearSelection,
208
230
  rightControls,
@@ -244,7 +266,9 @@ function ContentToolbar({
244
266
  selectAllText,
245
267
  clearAllText,
246
268
  hasSelection,
269
+ allSelected,
247
270
  selectedCount,
271
+ selectedCountLabel,
248
272
  selectAll,
249
273
  clearSelection,
250
274
  actions,
@@ -273,4 +297,4 @@ function ContentToolbar({
273
297
  export {
274
298
  ContentToolbar
275
299
  };
276
- //# sourceMappingURL=chunk-TZFBJ47T.js.map
300
+ //# sourceMappingURL=chunk-SFLNHCA2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/ContentToolbar/ContentToolbar.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport Button from '@mui/material/Button/index.js';\nimport Checkbox from '@mui/material/Checkbox/index.js';\nimport Divider from '@mui/material/Divider/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React from 'react';\n\nimport type { ContentToolbarProps } from './ContentToolbar.types';\nimport { fieldRadiusPx } from '../../../tokens/field-radius';\nimport { sxRem } from '../../../tokens/relative';\n\nconst selectionButtonSx = {\n minWidth: 0,\n height: 'auto',\n borderRadius: fieldRadiusPx,\n fontWeight: 600,\n py: 0.5,\n px: 1.5,\n fontSize: sxRem(12),\n textTransform: 'none',\n color: 'text.primary',\n} as const;\n\ntype SelectionClusterProps = Pick<\n ContentToolbarProps,\n | 'hasSelection'\n | 'selectedCount'\n | 'selectedCountLabel'\n | 'allSelected'\n | 'selectAll'\n | 'clearSelection'\n | 'actions'\n | 'selectionExtra'\n | 'selectAllTestId'\n | 'clearAllTestId'\n | 'edgeAlign'\n | 'selectAllLabel'\n | 'selectAllText'\n | 'clearAllText'\n>;\n\n/**\n * The phone's select-all box. Checked only when everything is ticked and\n * partial while some is, when the host says which (`allSelected`) — the same\n * reading as the table's header checkbox. A partial box selects the rest, as\n * the header does; a full one clears.\n */\nfunction SelectAllBox({\n hasSelection,\n allSelected,\n selectAll,\n clearSelection,\n selectAllTestId,\n selectAllLabel,\n}: Pick<\n ContentToolbarProps,\n 'hasSelection' | 'allSelected' | 'selectAll' | 'clearSelection' | 'selectAllTestId' | 'selectAllLabel'\n>): React.JSX.Element {\n return (\n <Checkbox\n size=\"small\"\n checked={allSelected ?? hasSelection}\n indeterminate={hasSelection && allSelected === false}\n onChange={() => (hasSelection && allSelected !== false ? clearSelection() : selectAll())}\n data-testid={`${selectAllTestId}-checkbox`}\n inputProps={{ 'aria-label': selectAllLabel }}\n sx={{ p: 0.5, display: { xs: 'inline-flex', md: 'none' } }}\n />\n );\n}\n\n/** The left cluster: Select All + (when selecting) Clear All / count / actions. */\nfunction SelectionCluster({\n hasSelection,\n allSelected,\n selectedCount,\n selectedCountLabel,\n selectAll,\n clearSelection,\n actions,\n selectionExtra,\n selectAllTestId,\n clearAllTestId,\n edgeAlign = false,\n selectAllLabel,\n selectAllText,\n clearAllText,\n}: SelectionClusterProps): React.JSX.Element {\n const actionsSlot = actions !== undefined && (\n <Box sx={{ ml: 0.5, display: 'flex', flexShrink: 0, alignItems: 'center' }}>{actions}</Box>\n );\n return (\n <Box\n sx={{\n display: 'flex',\n minWidth: 0,\n // Browsing (mobile): don't grow, so the controls sit on the SAME line as\n // the checkbox (no orphaned selection row). Desktop: grow to push\n // controls right.\n //\n // SELECTING (mobile) it must be able to shrink instead. Its children are\n // all `flex-shrink: 0`, so a cluster pinned at content width cannot wrap\n // and the row painted past the toolbar's own edge — on Produtos at 390px\n // that took \"Ações\" off-screen behind a sideways scroll, which is the\n // one control the selection exists to reach.\n flex: { xs: hasSelection ? '1 1 auto' : '0 0 auto', md: 1 },\n alignItems: 'center',\n // Wrapping is the phone's answer, and only the phone's: below `md` the\n // cluster carries the count, the scope control and \"Ações\" at once, and\n // no combination of those fits 320px on one line. From `md` up it stays\n // a single line, where it always fitted.\n flexWrap: { xs: 'wrap', md: 'nowrap' },\n columnGap: 1.5,\n rowGap: 1,\n ml: edgeAlign ? -1.5 : 0,\n }}\n >\n {/* Desktop: a \"Select All\" text button (md+). Mobile: a compact checkbox\n that toggles select-all/clear — the text would eat the tight row. */}\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n onClick={selectAll}\n data-testid={selectAllTestId}\n sx={{ ...selectionButtonSx, display: { xs: 'none', md: 'inline-flex' } }}\n >\n {selectAllText}\n </Button>\n <SelectAllBox\n hasSelection={hasSelection}\n allSelected={allSelected}\n selectAll={selectAll}\n clearSelection={clearSelection}\n selectAllTestId={selectAllTestId}\n selectAllLabel={selectAllLabel}\n />\n {hasSelection ? (\n <SelectionState\n selectedCount={selectedCount}\n selectedCountLabel={selectedCountLabel}\n clearSelection={clearSelection}\n clearAllTestId={clearAllTestId}\n clearAllText={clearAllText}\n selectionExtra={selectionExtra}\n />\n ) : null}\n {actionsSlot}\n </Box>\n );\n}\n\n/**\n * What the cluster shows once something IS ticked: Clear All, the count, and\n * the host's own `selectionExtra`.\n *\n * Its own component only because the cluster around it is at the complexity\n * gate's line ceiling — but the split falls where the meaning does. Everything\n * here exists only while a selection does, and the `actions` slot deliberately\n * stays OUTSIDE it: a toolbar may carry actions while browsing too.\n */\nfunction SelectionState({\n selectedCount,\n selectedCountLabel,\n clearSelection,\n clearAllTestId,\n clearAllText,\n selectionExtra,\n}: Pick<\n ContentToolbarProps,\n 'selectedCount' | 'selectedCountLabel' | 'clearSelection' | 'clearAllTestId' | 'clearAllText' | 'selectionExtra'\n>): React.JSX.Element {\n return (\n <>\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"inherit\"\n onClick={clearSelection}\n data-testid={clearAllTestId}\n sx={selectionButtonSx}\n >\n {clearAllText}\n </Button>\n <Divider orientation=\"vertical\" flexItem sx={{ height: sxRem(16), alignSelf: 'center' }} />\n <Typography\n component=\"span\"\n data-testid=\"selected-count-indicator\"\n sx={{ fontSize: sxRem(14), color: 'text.secondary', whiteSpace: 'nowrap', flexShrink: 0 }}\n >\n {selectedCountLabel(selectedCount)}\n </Typography>\n {selectionExtra !== undefined && (\n <>\n {/* A DELIBERATE break, not a wrap that happened to land here. What\n follows — \"Seleção: 48 produtos — todas as páginas\", its \"Limpar\n seleção\", and \"Ações\" — is a sentence about the selection plus the\n control that acts on it, and letting the phone break it wherever it\n ran out of room split that sentence mid-phrase. Zero height so it\n costs nothing but the row gap, and `display:none` from `md` up,\n where the line still fits. */}\n <Box\n aria-hidden\n sx={{ flexBasis: '100%', height: 0, display: { xs: 'block', md: 'none' } }}\n />\n {selectionExtra}\n </>\n )}\n </>\n );\n}\n\n/**\n * The BROWSING half of the toolbar: search + filters on the left, the page's\n * own controls on the right. Split out of {@link ContentToolbar} so that\n * function stays inside the complexity gate — it is layout only, and the\n * decision of whether to show it at all is made by the caller.\n */\nfunction BrowsingClusters({\n leadingControls,\n rightControls,\n hasSelection,\n edgeAlign,\n}: {\n leadingControls?: React.ReactNode;\n rightControls: React.ReactNode;\n hasSelection: boolean;\n edgeAlign: boolean;\n}): React.JSX.Element {\n return (\n <>\n {/* minWidth:0 lets this cluster be the one that gives up width as the row\n * tightens, which is what the filter overflow measures against. */}\n {leadingControls !== undefined && (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1,\n minWidth: 0,\n // The collapse ladder has a FLOOR — below roughly 400px even the\n // fully-collapsed row does not fit, and its controls cannot shrink\n // (they are flexShrink:0 so an over-packed row sheds instead of\n // squeezing). Past that point this scrolls rather than letting them\n // paint outside the toolbar, which is what a narrow phone did.\n overflowX: 'auto',\n // No scrollbar gutter stealing height on the common case.\n scrollbarWidth: 'thin',\n }}\n >\n {leadingControls}\n </Box>\n )}\n {/* ml:auto keeps the controls right-aligned even when the cluster wraps to\n * its own row (where justify-content:space-between would otherwise snap a\n * lone item to the left); it's a no-op on a shared row. */}\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n // Same single-line rule as the row itself: this cluster wrapping\n // INTERNALLY buys a second line just as surely as the row wrapping\n // does. It bit at exactly 900px, the `md` breakpoint where the \"N de\n // N\" counter appears and pushes Exibir/Exportar over the edge.\n flexWrap: leadingControls === undefined ? 'wrap' : 'nowrap',\n // Tight (5px) when browsing so the controls fit one line beside the\n // checkbox; roomier (14px) in selection mode where they get their own row.\n gap: hasSelection ? sxRem(14) : sxRem(5),\n ml: 'auto',\n mr: edgeAlign ? -1.5 : 0,\n '& > *': { flexShrink: 0 },\n }}\n >\n {rightControls}\n </Box>\n </>\n );\n}\n\n/**\n * Shared toolbar for content pages (Favorites, Personal Space, Recents, …). The\n * left cluster owns selection chrome — **Select All**, and once items are\n * selected, **Clear All** + the count (`selectedCountLabel`) + an optional `actions`\n * slot. The right cluster is a free `rightControls` slot for page-specific\n * controls (ViewSelector, SortByDropdown, MultiSelectDropdown, FilterTrigger).\n *\n * Faithful, generic MUI port of the reference `ContentPageToolbar` — the\n * domain-specific default actions are intentionally left to the consumer via\n * the `actions` slot so this stays agnostic and reusable across projects.\n *\n * @example\n * ```tsx\n * <ContentToolbar\n * hasSelection={selected.size > 0}\n * selectedCount={selected.size}\n * selectedCountLabel={(n) => `${n} ${n === 1 ? 'selecionado' : 'selecionados'}`}\n * selectAll={selectAll}\n * clearSelection={clear}\n * rightControls={\n * <>\n * <ViewSelector viewMode={view} onViewModeChange={setView} zoom={zoom} onZoomChange={setZoom} />\n * <SortByDropdown fields={FIELDS} activeField={field} onFieldChange={setField} />\n * <MultiSelectDropdown label=\"Content Type\" options={types} selected={typeSet} onToggle={toggle} onClear={clear} />\n * <FilterTrigger open={panelOpen} onOpenChange={setPanelOpen} hasActiveFilters={hasFilters} />\n * </>\n * }\n * />\n * ```\n */\nexport function ContentToolbar({\n hasSelection,\n allSelected,\n selectedCount,\n selectedCountLabel,\n selectAll,\n clearSelection,\n rightControls,\n leadingControls,\n actions,\n selectionExtra,\n selectAllTestId,\n clearAllTestId,\n edgeAlign = false,\n exclusiveSelection = false,\n selectAllLabel,\n selectAllText,\n clearAllText,\n}: ContentToolbarProps): React.JSX.Element {\n // Under `exclusiveSelection` the two states are alternatives, not neighbours:\n // browsing shows the controls and no checkbox, selecting shows the checkbox\n // and no controls. Anything else double-books the row.\n const showSelection = !exclusiveSelection || hasSelection;\n const showControls = !exclusiveSelection || !hasSelection;\n return (\n // Two clusters on one line. They may wrap onto separate rows ONLY for a\n // toolbar without `leadingControls` — one carrying search + filters is\n // driven by a measured collapse ladder (see `useFilterOverflow`), and a\n // wrap there is the ladder having failed: it would silently buy a second\n // row instead of shedding a control into \"Mais\", which is the one outcome\n // the ladder exists to prevent.\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n flexWrap: leadingControls === undefined ? 'wrap' : 'nowrap',\n rowGap: 1,\n }}\n >\n {showSelection && (\n <SelectionCluster\n selectAllText={selectAllText}\n clearAllText={clearAllText}\n hasSelection={hasSelection}\n allSelected={allSelected}\n selectedCount={selectedCount}\n selectedCountLabel={selectedCountLabel}\n selectAll={selectAll}\n clearSelection={clearSelection}\n actions={actions}\n selectionExtra={selectionExtra}\n selectAllTestId={selectAllTestId}\n clearAllTestId={clearAllTestId}\n selectAllLabel={selectAllLabel}\n edgeAlign={edgeAlign}\n />\n )}\n\n {showControls && (\n <BrowsingClusters\n leadingControls={leadingControls}\n rightControls={rightControls}\n hasSelection={hasSelection}\n edgeAlign={edgeAlign}\n />\n )}\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,7 @@
1
+ import {
2
+ containerStyles,
3
+ frameBox
4
+ } from "./chunk-Z64TMGYT.js";
1
5
  import {
2
6
  CarouselTrack
3
7
  } from "./chunk-EMNDJ57M.js";
@@ -7,10 +11,6 @@ import {
7
11
  import {
8
12
  CarouselChrome
9
13
  } from "./chunk-QCTG7LIX.js";
10
- import {
11
- containerStyles,
12
- frameBox
13
- } from "./chunk-Z64TMGYT.js";
14
14
  import {
15
15
  withDefaults
16
16
  } from "./chunk-HPK33ACY.js";
@@ -151,4 +151,4 @@ var Carousel = (props) => {
151
151
  export {
152
152
  Carousel
153
153
  };
154
- //# sourceMappingURL=chunk-OBMPE6PW.js.map
154
+ //# sourceMappingURL=chunk-SSDYEOU4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Avatar
3
- } from "./chunk-G76BNXWE.js";
3
+ } from "./chunk-XW5SEW3H.js";
4
4
  import {
5
5
  Card
6
6
  } from "./chunk-J2QIICWP.js";
@@ -74,4 +74,4 @@ export {
74
74
  UserAvatar,
75
75
  UserMenu
76
76
  };
77
- //# sourceMappingURL=chunk-I6ESCBY3.js.map
77
+ //# sourceMappingURL=chunk-TF27Z27K.js.map