@12-apps/ui 6.57.0 → 6.59.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 (210) hide show
  1. package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
  2. package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
  3. package/dist/_internal/components/data-display/Carousel/Carousel.js +2 -2
  4. package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
  5. package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
  6. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  7. package/dist/_internal/components/data-display/Chart/chart-format.js +5 -1
  8. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  9. package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
  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 +20 -19
  13. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +5 -3
  14. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +45 -0
  15. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js.map +1 -0
  16. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  17. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -4
  18. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  19. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +4 -4
  20. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
  21. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +17 -17
  22. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
  23. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
  24. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +5 -5
  25. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  26. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js +3 -1
  27. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +3 -3
  28. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +1 -1
  29. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +2 -2
  30. package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js +13 -0
  31. package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js.map +1 -0
  32. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
  33. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
  34. package/dist/_internal/components/data-display/index.js +16 -16
  35. package/dist/_internal/components/index.js +24 -24
  36. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
  37. package/dist/_internal/components/layout/index.js +1 -1
  38. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
  39. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
  40. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  41. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
  42. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  43. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
  44. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  45. package/dist/_internal/components/navigation/index.js +9 -9
  46. package/dist/_internal/en-US.data-display.js +1 -1
  47. package/dist/_internal/pt-BR.data-display.js +1 -1
  48. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  49. package/dist/charts.js +8 -8
  50. package/dist/{chunk-RBHBJDOZ.js → chunk-3FMWQQW6.js} +5 -5
  51. package/dist/chunk-3FMWQQW6.js.map +1 -0
  52. package/dist/{chunk-MKAA3YIJ.js → chunk-3K7WN2PO.js} +3 -3
  53. package/dist/{chunk-GI24X7XA.js → chunk-4PPNCZWY.js} +3 -3
  54. package/dist/{chunk-573XC4HK.js → chunk-4QKS5Y35.js} +2 -2
  55. package/dist/{chunk-KX75HM5U.js → chunk-5YDS6HO3.js} +7 -2
  56. package/dist/{chunk-KX75HM5U.js.map → chunk-5YDS6HO3.js.map} +1 -1
  57. package/dist/{chunk-N4MR4EMC.js → chunk-6D2PFC5C.js} +2 -2
  58. package/dist/{chunk-QVWNK4JO.js → chunk-6GPNZSAE.js} +19 -2
  59. package/dist/chunk-6GPNZSAE.js.map +1 -0
  60. package/dist/{chunk-LJKWWXZD.js → chunk-6OSUK2C7.js} +28 -22
  61. package/dist/chunk-6OSUK2C7.js.map +1 -0
  62. package/dist/{chunk-ICSXPZXT.js → chunk-6QBT5TPS.js} +2 -2
  63. package/dist/{chunk-A6EUQDRK.js → chunk-ARJIKW56.js} +4 -2
  64. package/dist/chunk-ARJIKW56.js.map +1 -0
  65. package/dist/{chunk-53ACGKBW.js → chunk-EDBP62WG.js} +3 -3
  66. package/dist/{chunk-YXIVQFNW.js → chunk-EWIKSTJV.js} +4 -4
  67. package/dist/{chunk-LWZ2K225.js → chunk-FXZUVZON.js} +6 -6
  68. package/dist/chunk-G6EJLEVV.js +75 -0
  69. package/dist/chunk-G6EJLEVV.js.map +1 -0
  70. package/dist/{chunk-IK2ZVV3M.js → chunk-GK7JNSMK.js} +2 -2
  71. package/dist/{chunk-HFBQCJNP.js → chunk-HCYRCU4W.js} +2 -2
  72. package/dist/{chunk-BJMNAPKH.js → chunk-HH7PM5HT.js} +10 -22
  73. package/dist/chunk-HH7PM5HT.js.map +1 -0
  74. package/dist/{chunk-7AAJYWC3.js → chunk-HPO7PB4F.js} +2 -2
  75. package/dist/{chunk-WF3P7GE5.js → chunk-I3CQBEKS.js} +2 -2
  76. package/dist/{chunk-RREWYOKS.js → chunk-IL4FCC54.js} +2 -2
  77. package/dist/{chunk-7M3DRP7Q.js → chunk-ILNO4ZJ6.js} +3 -3
  78. package/dist/{chunk-R6SBP5M5.js → chunk-JVOEVTCZ.js} +4 -2
  79. package/dist/chunk-JVOEVTCZ.js.map +1 -0
  80. package/dist/{chunk-2CJZLL5Y.js → chunk-NHVL2QPG.js} +2 -1
  81. package/dist/{chunk-2CJZLL5Y.js.map → chunk-NHVL2QPG.js.map} +1 -1
  82. package/dist/{chunk-45PGSVOH.js → chunk-NTJUAPJM.js} +10 -8
  83. package/dist/chunk-NTJUAPJM.js.map +1 -0
  84. package/dist/{chunk-EUPUEMFX.js → chunk-PC4H5LVB.js} +7 -7
  85. package/dist/{chunk-KEKOPD43.js → chunk-PQ7RWH7L.js} +4 -2
  86. package/dist/chunk-PQ7RWH7L.js.map +1 -0
  87. package/dist/{chunk-HRMB72E4.js → chunk-QHP5PZNC.js} +2 -1
  88. package/dist/{chunk-HRMB72E4.js.map → chunk-QHP5PZNC.js.map} +1 -1
  89. package/dist/{chunk-GNBCSTXF.js → chunk-QKAYXAQE.js} +6 -6
  90. package/dist/{chunk-GNBCSTXF.js.map → chunk-QKAYXAQE.js.map} +1 -1
  91. package/dist/{chunk-TZFBJ47T.js → chunk-SFLNHCA2.js} +39 -15
  92. package/dist/chunk-SFLNHCA2.js.map +1 -0
  93. package/dist/{chunk-OBMPE6PW.js → chunk-SSDYEOU4.js} +5 -5
  94. package/dist/{chunk-I6ESCBY3.js → chunk-TF27Z27K.js} +2 -2
  95. package/dist/{chunk-JF5LQOGB.js → chunk-U47KRLEW.js} +57 -45
  96. package/dist/chunk-U47KRLEW.js.map +1 -0
  97. package/dist/chunk-V4V2N6YJ.js +55 -0
  98. package/dist/chunk-V4V2N6YJ.js.map +1 -0
  99. package/dist/{chunk-C67FDYG7.js → chunk-W7N4ORCV.js} +16 -6
  100. package/dist/chunk-W7N4ORCV.js.map +1 -0
  101. package/dist/{chunk-JL77BSOL.js → chunk-WBDQSBLV.js} +2 -2
  102. package/dist/{chunk-G76BNXWE.js → chunk-XW5SEW3H.js} +6 -6
  103. package/dist/{chunk-46ZATLQV.js → chunk-YIKFYWKD.js} +3 -3
  104. package/dist/{chunk-4JBS6NOT.js → chunk-ZWBGQYVO.js} +35 -6
  105. package/dist/chunk-ZWBGQYVO.js.map +1 -0
  106. package/dist/{chunk-VWW2EXH7.js → chunk-ZYJZHXFU.js} +4 -4
  107. package/dist/data-display/Avatar.js +2 -2
  108. package/dist/data-display/Badge.js +2 -2
  109. package/dist/data-display/CardKit.js +10 -10
  110. package/dist/data-display/Carousel.js +2 -2
  111. package/dist/data-display/Chart.js +8 -8
  112. package/dist/data-display/DataGrid.js +2 -2
  113. package/dist/data-display/DataViews.js +25 -23
  114. package/dist/en-US.js +1 -1
  115. package/dist/layout/ContentToolbar.js +1 -1
  116. package/dist/locales.js +2 -2
  117. package/dist/navigation/SectionNav.js +9 -9
  118. package/dist/pt-BR.js +1 -1
  119. package/dist/types/components/data-display/Chart/Chart.types.d.ts +5 -0
  120. package/dist/types/components/data-display/Chart/Chart.types.d.ts.map +1 -1
  121. package/dist/types/components/data-display/Chart/chart-context.d.ts.map +1 -1
  122. package/dist/types/components/data-display/Chart/chart-format.d.ts +14 -0
  123. package/dist/types/components/data-display/Chart/chart-format.d.ts.map +1 -1
  124. package/dist/types/components/data-display/Chart/chart-spec.d.ts.map +1 -1
  125. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts.map +1 -1
  126. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts +29 -1
  127. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts.map +1 -1
  128. package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts +46 -0
  129. package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts.map +1 -0
  130. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts +5 -2
  131. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts.map +1 -1
  132. package/dist/types/components/data-display/DataViews/base-list-card.d.ts +10 -1
  133. package/dist/types/components/data-display/DataViews/base-list-card.d.ts.map +1 -1
  134. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +7 -0
  135. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  136. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  137. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts +2 -0
  138. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts.map +1 -1
  139. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts +3 -1
  140. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts.map +1 -1
  141. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts +2 -0
  142. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  143. package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts +47 -0
  144. package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts.map +1 -0
  145. package/dist/types/components/data-display/DataViews/list-card-rails.d.ts +17 -2
  146. package/dist/types/components/data-display/DataViews/list-card-rails.d.ts.map +1 -1
  147. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +3 -2
  148. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  149. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +14 -0
  150. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  151. package/dist/types/en-US.data-display.d.ts.map +1 -1
  152. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  153. package/dist/user-avatar.js +3 -3
  154. package/package.json +1 -1
  155. package/src/components/data-display/Chart/Chart.md +5 -1
  156. package/src/components/data-display/Chart/Chart.types.ts +5 -0
  157. package/src/components/data-display/Chart/chart-context.ts +21 -1
  158. package/src/components/data-display/Chart/chart-format.ts +31 -0
  159. package/src/components/data-display/Chart/chart-renderers.tsx +1 -1
  160. package/src/components/data-display/Chart/chart-spec.ts +2 -1
  161. package/src/components/data-display/DataViews/DataViewsTableBase.tsx +7 -36
  162. package/src/components/data-display/DataViews/base-list-card-geometry.tsx +114 -40
  163. package/src/components/data-display/DataViews/base-list-card-layout.tsx +104 -0
  164. package/src/components/data-display/DataViews/base-list-card-slots.tsx +47 -3
  165. package/src/components/data-display/DataViews/base-list-card.tsx +65 -68
  166. package/src/components/data-display/DataViews/data-views-copy.ts +7 -0
  167. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +2 -1
  168. package/src/components/data-display/DataViews/data-views-selection-extra.ts +10 -1
  169. package/src/components/data-display/DataViews/data-views-shell-toolbar.tsx +4 -0
  170. package/src/components/data-display/DataViews/data-views-toolbar.tsx +4 -0
  171. package/src/components/data-display/DataViews/data-views-url-echo.ts +134 -0
  172. package/src/components/data-display/DataViews/list-card-rails.tsx +22 -6
  173. package/src/components/layout/ContentToolbar/ContentToolbar.md +5 -2
  174. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +51 -10
  175. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +14 -0
  176. package/src/en-US.data-display.ts +1 -0
  177. package/src/pt-BR.data-display.ts +1 -0
  178. package/dist/chunk-45PGSVOH.js.map +0 -1
  179. package/dist/chunk-4JBS6NOT.js.map +0 -1
  180. package/dist/chunk-A6EUQDRK.js.map +0 -1
  181. package/dist/chunk-BJMNAPKH.js.map +0 -1
  182. package/dist/chunk-C67FDYG7.js.map +0 -1
  183. package/dist/chunk-JF5LQOGB.js.map +0 -1
  184. package/dist/chunk-KEKOPD43.js.map +0 -1
  185. package/dist/chunk-LJKWWXZD.js.map +0 -1
  186. package/dist/chunk-QVWNK4JO.js.map +0 -1
  187. package/dist/chunk-R6SBP5M5.js.map +0 -1
  188. package/dist/chunk-RBHBJDOZ.js.map +0 -1
  189. package/dist/chunk-TZFBJ47T.js.map +0 -1
  190. /package/dist/{chunk-MKAA3YIJ.js.map → chunk-3K7WN2PO.js.map} +0 -0
  191. /package/dist/{chunk-GI24X7XA.js.map → chunk-4PPNCZWY.js.map} +0 -0
  192. /package/dist/{chunk-573XC4HK.js.map → chunk-4QKS5Y35.js.map} +0 -0
  193. /package/dist/{chunk-N4MR4EMC.js.map → chunk-6D2PFC5C.js.map} +0 -0
  194. /package/dist/{chunk-ICSXPZXT.js.map → chunk-6QBT5TPS.js.map} +0 -0
  195. /package/dist/{chunk-53ACGKBW.js.map → chunk-EDBP62WG.js.map} +0 -0
  196. /package/dist/{chunk-YXIVQFNW.js.map → chunk-EWIKSTJV.js.map} +0 -0
  197. /package/dist/{chunk-LWZ2K225.js.map → chunk-FXZUVZON.js.map} +0 -0
  198. /package/dist/{chunk-IK2ZVV3M.js.map → chunk-GK7JNSMK.js.map} +0 -0
  199. /package/dist/{chunk-HFBQCJNP.js.map → chunk-HCYRCU4W.js.map} +0 -0
  200. /package/dist/{chunk-7AAJYWC3.js.map → chunk-HPO7PB4F.js.map} +0 -0
  201. /package/dist/{chunk-WF3P7GE5.js.map → chunk-I3CQBEKS.js.map} +0 -0
  202. /package/dist/{chunk-RREWYOKS.js.map → chunk-IL4FCC54.js.map} +0 -0
  203. /package/dist/{chunk-7M3DRP7Q.js.map → chunk-ILNO4ZJ6.js.map} +0 -0
  204. /package/dist/{chunk-EUPUEMFX.js.map → chunk-PC4H5LVB.js.map} +0 -0
  205. /package/dist/{chunk-OBMPE6PW.js.map → chunk-SSDYEOU4.js.map} +0 -0
  206. /package/dist/{chunk-I6ESCBY3.js.map → chunk-TF27Z27K.js.map} +0 -0
  207. /package/dist/{chunk-JL77BSOL.js.map → chunk-WBDQSBLV.js.map} +0 -0
  208. /package/dist/{chunk-G76BNXWE.js.map → chunk-XW5SEW3H.js.map} +0 -0
  209. /package/dist/{chunk-46ZATLQV.js.map → chunk-YIKFYWKD.js.map} +0 -0
  210. /package/dist/{chunk-VWW2EXH7.js.map → chunk-ZYJZHXFU.js.map} +0 -0
@@ -0,0 +1,47 @@
1
+ import type { DataViewServer, DataViewState, DataViewSyncState } from "./data-views-types";
2
+ /**
3
+ * A server-mode grid's URL round trip, and the echo it must not re-apply.
4
+ *
5
+ * A server-mode host mirrors the grid's query into its URL and hands it back as
6
+ * `initialState`, which the base turns into `syncState` and MERGES over the live
7
+ * state, so browser back/forward moves the controls. But the browser shows the
8
+ * new URL before React renders it. An edit made in that window, such as
9
+ * clearing a date bound right after typing it, is overwritten when the render
10
+ * carrying the PREVIOUS query lands. The grid then re-emits that stale query,
11
+ * and the cleared filter comes back and sticks in the URL (FUT-3182, the
12
+ * audit trail's "De" bound).
13
+ *
14
+ * So the base records every query it emits. An `initialState` matching one
15
+ * still pending is the host echoing it back, not a navigation, and it is not
16
+ * merged. Anything else (back/forward, a deep link, a host-side reset) still is.
17
+ * A host whose round trip changes the slice's shape never matches, and keeps
18
+ * the old behaviour rather than losing a navigation.
19
+ */
20
+ /** The URL-carried part of a grid state or query. */
21
+ type UrlSlice = Pick<DataViewState, "search" | "pills" | "ranges" | "sortBy" | "scope">;
22
+ /** One comparable string for a URL slice: empty pills and unbounded ranges left out. */
23
+ export declare function urlSliceKey(slice: UrlSlice): string;
24
+ /**
25
+ * Record what the grid emits, and recognise it coming back.
26
+ *
27
+ * `consumeEcho` answers whether a URL slice is one of the queries still in
28
+ * flight. A match drops it and every older one, since the host has caught up to
29
+ * at least that far; a miss is a navigation and clears the list.
30
+ */
31
+ export declare function useUrlEchoGuard(server: DataViewServer | undefined): {
32
+ server: DataViewServer | undefined;
33
+ consumeEcho: (slice: UrlSlice) => boolean;
34
+ };
35
+ /**
36
+ * Derive the grid's reactive `syncState` from the URL-seeded `initialState` in
37
+ * server mode, so browser back/forward RE-APPLIES the search/pills/sort controls
38
+ * (merging over live state, preserving hidden columns — see
39
+ * {@link DataViewSyncState}). Client-mode tables (no `server`) get `undefined`.
40
+ *
41
+ * Seeded on the first render, so a deep link shows on mount. After that a new
42
+ * `initialState` reference is re-applied unless it is the grid's own query
43
+ * coming back (`consumeEcho`), which would overwrite an edit made since.
44
+ */
45
+ export declare function useUrlSyncState(server: DataViewServer | undefined, initialState: DataViewState | undefined, consumeEcho: (slice: UrlSlice) => boolean): DataViewSyncState | undefined;
46
+ export {};
47
+ //# sourceMappingURL=data-views-url-echo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-views-url-echo.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-url-echo.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3F;;;;;;;;;;;;;;;;;GAiBG;AAEH,qDAAqD;AACrD,KAAK,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;AAcxF,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAenD;AAKD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG;IACnE,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;CAC3C,CAeA;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,GAAG,SAAS,EAClC,YAAY,EAAE,aAAa,GAAG,SAAS,EACvC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,GACxC,iBAAiB,GAAG,SAAS,CAc/B"}
@@ -134,8 +134,23 @@ export declare function railsTemplateFor(gutters: {
134
134
  }, metaColumns: number): string;
135
135
  /** How many rails the named-slot layout has — the span such a card claims. */
136
136
  export declare const RAIL_COUNT = 8;
137
- /** Tracks for a cell-configured row: gutters, leading, the cells, then the menu. */
138
- export declare function cellRailsTemplate(cells: readonly string[]): string;
137
+ /**
138
+ * Tracks for a cell-configured row: gutters, leading, the cells, then the menu.
139
+ *
140
+ * `gutters` says which of the three head gutters RENDER. A group reserves all
141
+ * three (the default), so every row spans the same tracks. A standalone row
142
+ * renders a gutter only when it uses it, and a track whose slot renders nothing
143
+ * is not a reserved gap: grid auto-placement fills it with the NEXT slot. So the
144
+ * checkbox landed in the disclosure track, the glyph in the drag track, and
145
+ * every cell two tracks early, in a column sized for something else. The named-
146
+ * slot layout already drops absent gutters ({@link railsTemplateFor}); this is
147
+ * the same rule for configured cells.
148
+ */
149
+ export declare function cellRailsTemplate(cells: readonly string[], gutters?: {
150
+ disclose: boolean;
151
+ drag: boolean;
152
+ select: boolean;
153
+ }): string;
139
154
  /** How many tracks such a row spans — the fixed head/tail plus one per cell. */
140
155
  export declare function cellRailCount(cells: number): number;
141
156
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"list-card-rails.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/list-card-rails.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-card-rails.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/list-card-rails.tsx"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { ContentToolbarProps } from './ContentToolbar.types';
3
3
  /**
4
4
  * Shared toolbar for content pages (Favorites, Personal Space, Recents, …). The
5
5
  * left cluster owns selection chrome — **Select All**, and once items are
6
- * selected, **Clear All** + an "N items selected" count + an optional `actions`
6
+ * selected, **Clear All** + the count (`selectedCountLabel`) + an optional `actions`
7
7
  * slot. The right cluster is a free `rightControls` slot for page-specific
8
8
  * controls (ViewSelector, SortByDropdown, MultiSelectDropdown, FilterTrigger).
9
9
  *
@@ -16,6 +16,7 @@ import type { ContentToolbarProps } from './ContentToolbar.types';
16
16
  * <ContentToolbar
17
17
  * hasSelection={selected.size > 0}
18
18
  * selectedCount={selected.size}
19
+ * selectedCountLabel={(n) => `${n} ${n === 1 ? 'selecionado' : 'selecionados'}`}
19
20
  * selectAll={selectAll}
20
21
  * clearSelection={clear}
21
22
  * rightControls={
@@ -29,5 +30,5 @@ import type { ContentToolbarProps } from './ContentToolbar.types';
29
30
  * />
30
31
  * ```
31
32
  */
32
- export declare function ContentToolbar({ hasSelection, selectedCount, selectAll, clearSelection, rightControls, leadingControls, actions, selectionExtra, selectAllTestId, clearAllTestId, edgeAlign, exclusiveSelection, selectAllLabel, selectAllText, clearAllText, }: ContentToolbarProps): React.JSX.Element;
33
+ export declare function ContentToolbar({ hasSelection, allSelected, selectedCount, selectedCountLabel, selectAll, clearSelection, rightControls, leadingControls, actions, selectionExtra, selectAllTestId, clearAllTestId, edgeAlign, exclusiveSelection, selectAllLabel, selectAllText, clearAllText, }: ContentToolbarProps): React.JSX.Element;
33
34
  //# sourceMappingURL=ContentToolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA4OlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,EACd,SAAiB,EACjB,kBAA0B,EAC1B,cAAc,EACd,aAAa,EACb,YAAY,GACb,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkDzC"}
1
+ {"version":3,"file":"ContentToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAgRlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,EACd,SAAiB,EACjB,kBAA0B,EAC1B,cAAc,EACd,aAAa,EACb,YAAY,GACb,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAoDzC"}
@@ -14,6 +14,20 @@ export interface ContentToolbarProps {
14
14
  hasSelection: boolean;
15
15
  /** Number of currently selected items. */
16
16
  selectedCount: number;
17
+ /**
18
+ * The words for that count — "1 selecionado", "3 selecionados".
19
+ * A function because the noun agrees with the number. REQUIRED: this package
20
+ * ships no default copy, and the English it used to hardcode here was the one
21
+ * string on a pt-BR admin list a host could not replace (FUT-1443).
22
+ */
23
+ selectedCountLabel: (count: number) => string;
24
+ /**
25
+ * Whether EVERYTHING the select-all box covers is selected. When given, the
26
+ * box reads checked only then, and partial (indeterminate) while just some
27
+ * rows are — as the table's own header checkbox does. Omitted, it keeps
28
+ * reading checked for any selection.
29
+ */
30
+ allSelected?: boolean;
17
31
  /** Select every item on the page. */
18
32
  selectAll: () => void;
19
33
  /** Clear the current selection. */
@@ -1 +1 @@
1
- {"version":3,"file":"ContentToolbar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContentToolbar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAC;IACtB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qCAAqC;IACrC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,mCAAmC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,aAAa,EAAE,SAAS,CAAC;IACzB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,8CAA8C;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,yCAAyC;IACzC,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,+EAA+E;IAC/E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2CAA2C;IAC3C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACzC;AAID,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,cAAc,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAChC;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACxC;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IACjE,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,uDAAuD;AACvD,MAAM,WAAW,iBAAiB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IACtE,yEAAyE;IACzE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;IACrC,kEAAkE;IAClE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAID,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,IAAI,EAAE,OAAO,CAAC;IACd,2CAA2C;IAC3C,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,kEAAkE;IAClE,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa;IAC1E,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,8DAA8D;IAC9D,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,mDAAmD;IACnD;;;;OAIG;IACH,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"en-US.data-display.d.ts","sourceRoot":"","sources":["../../src/en-US.data-display.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,mBAAmB,EAAE,YAcjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAOlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAOpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAGjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAUvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAMnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aA2LnC,CAAC"}
1
+ {"version":3,"file":"en-US.data-display.d.ts","sourceRoot":"","sources":["../../src/en-US.data-display.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,mBAAmB,EAAE,YAcjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAOlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAOpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAGjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAUvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAMnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aA4LnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pt-BR.data-display.d.ts","sourceRoot":"","sources":["../../src/pt-BR.data-display.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,mBAAmB,EAAE,YAcjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAOlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAOpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAGjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAUvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAMnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAmLnC,CAAC"}
1
+ {"version":3,"file":"pt-BR.data-display.d.ts","sourceRoot":"","sources":["../../src/pt-BR.data-display.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EAClB,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,mBAAmB,EAAE,YAcjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAOlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAOpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAGjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAUvC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAMnC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAoLnC,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  UserAvatar,
3
3
  UserMenu
4
- } from "./chunk-I6ESCBY3.js";
4
+ } from "./chunk-TF27Z27K.js";
5
5
  import "./chunk-UDQSIRAP.js";
6
- import "./chunk-G76BNXWE.js";
7
- import "./chunk-3ZVUNSFF.js";
6
+ import "./chunk-XW5SEW3H.js";
8
7
  import "./chunk-GYDUXL3D.js";
9
8
  import "./chunk-6ZZGK5DT.js";
9
+ import "./chunk-3ZVUNSFF.js";
10
10
  import "./chunk-MTEQEPNY.js";
11
11
  import "./chunk-VUHLNYAE.js";
12
12
  import "./chunk-2GSIEDGN.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.57.0",
3
+ "version": "6.59.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -68,6 +68,9 @@ import { Chart } from '@procurement/ui';
68
68
  - `stacked` (boolean): Stack data series for bar/area charts
69
69
  - `showValues` (boolean): Display data values on chart
70
70
  - `valueFormatter` (function): Formats tooltip values and value-axis ticks
71
+ - `axisValueFormatter` (function): Formats the value-axis ticks only, when they should read
72
+ shorter than the tooltip; falls back to `valueFormatter`. `SpecChart` sets it, so a `brl`
73
+ axis reads "R$ 180" while the tooltip keeps "R$ 180,00"
71
74
  - `allowDecimalTicks` (boolean): Allow half-steps on the value axis (default: true; set
72
75
  false for a COUNT metric, or the axis repeats itself — `0, 1, 1, 2, 2`)
73
76
 
@@ -97,7 +100,8 @@ axis corner, at every viewport.
97
100
  - `showLegend` (boolean): Show chart legend (default: true)
98
101
  - `showTooltip` (boolean): Show hover tooltips (default: true)
99
102
  - `showCartesianGrid` (boolean): Show grid lines (default: true)
100
- - `margin` (object): Chart margins configuration
103
+ - `margin` (object): Chart margins configuration. A line, bar, area or composed chart
104
+ defaults to no left margin (its value axis sizes itself) unless it has a `yAxisLabel`
101
105
  - `colors` (string[]): Custom color palette
102
106
  - `responsive` (boolean): Enable responsive behavior (default: true)
103
107
 
@@ -64,6 +64,11 @@ export interface ChartProps {
64
64
  centerLabel?: string | { label: string; value: string | number };
65
65
  /** Formats numeric tooltip values and y-axis ticks (e.g. centavos → BRL). */
66
66
  valueFormatter?: (value: number) => string;
67
+ /**
68
+ * Formats the value-axis ticks only, when they should read shorter than a
69
+ * tooltip (whole reais without ",00"). Falls back to `valueFormatter`.
70
+ */
71
+ axisValueFormatter?: (value: number) => string;
67
72
  /**
68
73
  * Whether the value axis may place ticks between whole numbers. Default true.
69
74
  *
@@ -40,6 +40,26 @@ export interface ChartRenderContext {
40
40
  };
41
41
  }
42
42
 
43
+ /**
44
+ * The chart types whose value axis sizes itself to its widest tick
45
+ * (`width="auto"`, `cartesianAxes`). Their left margin is only room for a
46
+ * rotated axis TITLE; without one it was 20px of nothing beside the ticks,
47
+ * taken out of the plot on a phone. Pie, radar and scatter keep it: a pie is
48
+ * centred between both margins, and scatter's axis is still fixed-width.
49
+ */
50
+ const AUTO_WIDTH_VALUE_AXIS: ReadonlySet<NonNullable<ChartProps['type']>> = new Set([
51
+ 'line',
52
+ 'bar',
53
+ 'area',
54
+ 'composed',
55
+ ]);
56
+
57
+ /** The default left margin in design px — see {@link AUTO_WIDTH_VALUE_AXIS}. */
58
+ function leftMarginDesignPx(props: ChartProps): number {
59
+ const autoWidthAxis = AUTO_WIDTH_VALUE_AXIS.has(props.type ?? 'line');
60
+ return autoWidthAxis && !props.yAxisLabel ? 0 : 20;
61
+ }
62
+
43
63
  export function buildChartContext(props: ChartProps, theme: Theme): ChartRenderContext {
44
64
  const sizeStyles = getSizeStyles(theme, props.size, props.height);
45
65
  const chartColors = getDefaultColors(theme, props.variant ?? 'default', props.colors);
@@ -72,7 +92,7 @@ export function buildChartContext(props: ChartProps, theme: Theme): ChartRenderC
72
92
  margin: {
73
93
  top: remPx(theme, 20),
74
94
  right: remPx(theme, 30),
75
- left: remPx(theme, 20),
95
+ left: remPx(theme, leftMarginDesignPx(props)),
76
96
  bottom: remPx(theme, 20),
77
97
  ...marginPx(theme, props.margin),
78
98
  },
@@ -24,3 +24,34 @@ export function formatChartValue(value: number, format: ChartNumberFormat = 'dec
24
24
  export function chartValueFormatter(format?: ChartNumberFormat): (value: number) => string {
25
25
  return (value: number) => formatChartValue(value, format);
26
26
  }
27
+
28
+ /** Whole reais, for an axis tick that has no centavos to show. */
29
+ const brlWhole = new Intl.NumberFormat('pt-BR', {
30
+ style: 'currency',
31
+ currency: 'BRL',
32
+ minimumFractionDigits: 0,
33
+ maximumFractionDigits: 0,
34
+ });
35
+
36
+ /**
37
+ * Format a value-AXIS tick: {@link formatChartValue}, except that a `brl` tick
38
+ * on a whole real drops its ",00".
39
+ *
40
+ * An axis tick is a gridline's name, not an amount anybody reads to the
41
+ * centavo. Recharts picks round ticks (R$ 45, R$ 90, R$ 135…), so on a phone
42
+ * "R$ 180,00" spent a fifth of the card on two zeros and squeezed the plot it
43
+ * labels to ~160px at 390. A tick that does fall between reais keeps its
44
+ * centavos, so no tick is ever rounded into a value it is not. Tooltips keep
45
+ * the full amount: they ARE read to the centavo.
46
+ */
47
+ export function formatChartAxisValue(value: number, format: ChartNumberFormat = 'decimal'): string {
48
+ if (format === 'brl' && Number.isFinite(value) && value % 100 === 0) {
49
+ return brlWhole.format(value / 100);
50
+ }
51
+ return formatChartValue(value, format);
52
+ }
53
+
54
+ /** Curried {@link formatChartAxisValue}, memo-friendly for the value axis. */
55
+ export function chartAxisValueFormatter(format?: ChartNumberFormat): (value: number) => string {
56
+ return (value: number) => formatChartAxisValue(value, format);
57
+ }
@@ -82,7 +82,7 @@ function cartesianAxes(ctx: ChartRenderContext): React.ReactNode[] {
82
82
  // something.
83
83
  width="auto"
84
84
  tickMargin={axisConfig.tickMargin}
85
- tickFormatter={props.valueFormatter}
85
+ tickFormatter={props.axisValueFormatter ?? props.valueFormatter}
86
86
  allowDecimals={props.allowDecimalTicks !== false}
87
87
  />,
88
88
  );
@@ -1,6 +1,6 @@
1
1
  import type { ChartDataPoint, ChartProps } from './Chart.types';
2
2
  import type { ChartSemanticColor, ChartSpec, ChartSpecSeries } from './ChartSpec.types';
3
- import { chartValueFormatter } from './chart-format';
3
+ import { chartAxisValueFormatter, chartValueFormatter } from './chart-format';
4
4
  import {
5
5
  getChartSpecRenderer,
6
6
  getRegisteredChartSpecTypes,
@@ -176,6 +176,7 @@ export function specToChartProps(
176
176
  showTooltip: spec.tooltip ?? true,
177
177
  height: spec.height,
178
178
  valueFormatter: chartValueFormatter(spec.numberFormat),
179
+ axisValueFormatter: chartAxisValueFormatter(spec.numberFormat),
179
180
  // An integer metric is a COUNT: half a row does not exist, so the axis must
180
181
  // not offer half-steps it would then round into duplicates (FUT-755).
181
182
  allowDecimalTicks: spec.numberFormat !== 'integer',
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import type { SortFieldDefinition } from "../../layout/ContentToolbar";
4
- import { useEffect, useMemo, useRef, useState } from "react";
4
+ import { useEffect, useRef, useState } from "react";
5
5
 
6
6
  import { DataViewsGrid } from "./DataViewsGrid";
7
7
  import type { SelectionExtraRender } from "./data-views-selection-extra";
@@ -14,6 +14,7 @@ import type { DataViewExport } from "./data-views-export";
14
14
  import type { ScopeConfig } from "./data-views-scopes";
15
15
  import type { DataViewRowDetail } from "./data-views-row-detail";
16
16
  import { ViewDialogs, ViewMutationErrorAlert } from "./data-views-table-parts";
17
+ import { useUrlEchoGuard, useUrlSyncState } from "./data-views-url-echo";
17
18
  import {
18
19
  useSavedViewsController,
19
20
  type SavedViewsController,
@@ -23,7 +24,6 @@ import {
23
24
  type DataViewsLayout,
24
25
  type DataViewServer,
25
26
  type DataViewState,
26
- type DataViewSyncState,
27
27
  type DataViewPersistence,
28
28
  type DataViewRouter,
29
29
  type FilterFieldConfig,
@@ -114,38 +114,6 @@ export interface DataViewsTableBaseProps<T extends Record<string, unknown>> {
114
114
  initialState?: DataViewState;
115
115
  }
116
116
 
117
- /**
118
- * Derive the grid's reactive `syncState` from the URL-seeded `initialState` in
119
- * server mode so browser back/forward RE-APPLIES the search/pills/sort controls
120
- * (merging over live state, preserving hidden columns — see {@link DataViewSyncState}).
121
- * Client-mode tables (no `server`) get `undefined`. Callers memoize `initialState`
122
- * on the URL, so this reference only changes on genuine navigations.
123
- */
124
- function useUrlSyncState(
125
- server: DataViewServer | undefined,
126
- initialState: DataViewState | undefined,
127
- ): DataViewSyncState | undefined {
128
- const isServerMode = server !== undefined;
129
- return useMemo<DataViewSyncState | undefined>(
130
- () =>
131
- isServerMode && initialState
132
- ? {
133
- search: initialState.search,
134
- pills: initialState.pills,
135
- ranges: initialState.ranges,
136
- sortBy: initialState.sortBy,
137
- // The scope belongs in the URL-driven slice alongside them: a
138
- // `?view=recusados`-style deep link and browser back/forward must
139
- // move the tab strip, and they must do it WITHOUT resetting the
140
- // user's hidden columns — which is the whole reason this is a
141
- // merging `syncState` and not a replacing `appliedState`.
142
- scope: initialState.scope,
143
- }
144
- : undefined,
145
- [isServerMode, initialState],
146
- );
147
- }
148
-
149
117
  /**
150
118
  * Resolve the initial applied view: a `?view=<id>` shortcut (FUT-90) wins, else
151
119
  * the user's default view, else none. Drives the seed state + trigger label.
@@ -294,14 +262,17 @@ export function DataViewsTableBase<T extends Record<string, unknown>>(
294
262
  dirty,
295
263
  onRequestDelete: setPendingDelete,
296
264
  });
297
- // Server-mode lists re-apply URL-derived controls on back/forward (not just the mount seed).
298
- const syncState = useUrlSyncState(server, initialState);
265
+ // Server-mode lists re-apply URL-derived controls on back/forward (not just
266
+ // the mount seed), but never the grid's own query echoing back through the URL.
267
+ const echo = useUrlEchoGuard(server);
268
+ const syncState = useUrlSyncState(echo.server, initialState, echo.consumeEcho);
299
269
 
300
270
  return (
301
271
  <>
302
272
  <ViewMutationErrorAlert error={ctl.mutationError} onClose={ctl.clearMutationError} testIdPrefix={testIdPrefix} />
303
273
  <DataViewsGrid<T>
304
274
  {...props}
275
+ server={echo.server}
305
276
  testIdPrefix={testIdPrefix}
306
277
  appliedState={ctl.applied}
307
278
  syncState={syncState}
@@ -74,8 +74,90 @@ interface RowSxOptions {
74
74
  divider: boolean;
75
75
  interactive: boolean;
76
76
  draggable: boolean;
77
+ /** What the two-line layout below `STACK_BREAK` has to place by name. */
78
+ stack: StackPlacement;
77
79
  }
78
80
 
81
+ /**
82
+ * The slots the stacked row places that the named-slot rules cannot know about.
83
+ *
84
+ * For a CONFIGURED row, `firstCell` is the cell that takes the title's place and
85
+ * `valueCell` the one that takes the value's (null for a named-slot row, or for
86
+ * a one-cell row with no value to show). `expandable` decides whether the
87
+ * disclosure button gets a place or, when it is only a reserved empty gutter,
88
+ * none at all.
89
+ */
90
+ export interface StackPlacement {
91
+ firstCell: string | null;
92
+ valueCell: string | null;
93
+ expandable: boolean;
94
+ }
95
+
96
+ /** A `[data-slot="cell-<id>"]` child selector, quoted so any id is safe. */
97
+ const cellSlot = (id: string): string => `& > [data-slot=${JSON.stringify(`cell-${id}`)}]`;
98
+
99
+ /**
100
+ * A configured row, stacked, keeps the SAME two facts a named-slot row keeps:
101
+ * what the record is (the first cell, in the title's place on line 1) and the
102
+ * figure it is about (the value cell, on line 2 from under the title to the
103
+ * right edge, where an `end` cell sits flush right). Every other cell goes, as
104
+ * `meta` goes — a row is a fixed-height scanning unit, and what does not fit
105
+ * belongs in its expandable body.
106
+ *
107
+ * Left to auto-placement these cells had flowed into whatever track was free:
108
+ * a name squeezed beside the glyph, an amount clipped to "R$ …".
109
+ *
110
+ * The hide-all rule comes first and the two named cells after it: the
111
+ * selectors have equal specificity, so the later rule wins for those cells.
112
+ */
113
+ function stackedCells(stack: StackPlacement): Record<string, unknown> {
114
+ if (stack.firstCell == null) return {};
115
+ return {
116
+ '& > [data-slot^="cell-"]': { display: "none" },
117
+ [cellSlot(stack.firstCell)]: { display: "flex", gridArea: "1 / 3" },
118
+ ...(stack.valueCell == null ? {} : { [cellSlot(stack.valueCell)]: { display: "flex", gridArea: "2 / 3 / 3 / 5" } }),
119
+ };
120
+ }
121
+
122
+ /**
123
+ * TWO-LINE, below the point where the shared rails stop helping.
124
+ *
125
+ * The standard mobile transaction row: what the record IS on the first line,
126
+ * what it COSTS under it at the right edge. Better than
127
+ * truncating four columns into ellipses, and the reason each slot carries a
128
+ * `data-slot` — the placement is explicit rather than whatever order the
129
+ * children happen to be in.
130
+ *
131
+ * [ select ][ leading ][ title …………… ][ menu ]
132
+ * [ (disclose) ] [ (cells) …………… ][ value ]
133
+ *
134
+ * The MENU stays in the top-right corner at every width. It is the row's
135
+ * one fixed landmark — an overflow that moves to the second line on a phone
136
+ * is an overflow nobody finds twice.
137
+ */
138
+ const stackedRowSx = (inGroup: boolean, railCount: number, stack: StackPlacement): Record<string, unknown> => ({
139
+ gridTemplateColumns: "auto auto minmax(0, 1fr) max-content",
140
+ // The GROUP's track count, which a configured list sets from its cells
141
+ // (`cellRailCount`) — not the named-slot RAIL_COUNT, which over-spans a
142
+ // configured group and adds an implicit track at its end.
143
+ ...(inGroup ? { gridColumn: `span ${railCount}` } : {}),
144
+ rowGap: 0.75,
145
+ columnGap: 1,
146
+ '& > [data-slot="drag"]': { display: "none" },
147
+ // The disclosure button, when there is one, under the checkbox: the head of
148
+ // the row, where it sits at every other width — never beside the menu, where
149
+ // it read as an "open" arrow. A reserved empty gutter takes no place at all.
150
+ '& > [data-slot="disclose"]': stack.expandable ? { gridArea: "2 / 1", justifySelf: "center" } : { display: "none" },
151
+ '& > [data-slot="select"]': { gridArea: "1 / 1" },
152
+ '& > [data-slot="leading"]': { gridArea: "1 / 2" },
153
+ '& > [data-slot="caption"]': { gridArea: "1 / 3" },
154
+ '& > [data-slot="actions"]': { gridArea: "1 / 4", justifyContent: "flex-end" },
155
+ '& > [data-slot="meta"]': { display: "none" },
156
+ // Second line, starting under the title rather than under the checkbox.
157
+ '& > [data-slot="value"]': { gridArea: "2 / 4", textAlign: "right" },
158
+ ...stackedCells(stack),
159
+ });
160
+
79
161
  /**
80
162
  * DIVIDER COMPOSES WITH THE VARIANT — it changes the row's SHAPE, not its
81
163
  * surface.
@@ -91,7 +173,7 @@ interface RowSxOptions {
91
173
  * {@link rowStyles}.
92
174
  */
93
175
  export const rowSx = (theme: Theme, opts: RowSxOptions): Record<string, unknown> => {
94
- const { inGroup, railCount, cellTemplate, gutters, metaColumns, pad, padY, scale, divider, interactive, draggable } = opts;
176
+ const { inGroup, railCount, cellTemplate, gutters, metaColumns, pad, padY, scale, divider, interactive, draggable, stack } = opts;
95
177
  return {
96
178
  position: "relative",
97
179
  borderRadius: CARD_RADIUS,
@@ -103,13 +185,14 @@ export const rowSx = (theme: Theme, opts: RowSxOptions): Record<string, unknown>
103
185
  // computed `grid-template-columns: 1222px` on a card asking for subgrid.)
104
186
  //
105
187
  // So inside a group the GROUP is the query container and the row is the
106
- // subgrid; standalone, the row is both the container and its own grid.
188
+ // subgrid. Standalone, the row is its own grid but NOT its own container:
189
+ // a container query matches an ANCESTOR, never the element itself, so a
190
+ // row that was its own container placed its children for two lines while
191
+ // its own template stayed wide. A standalone card renders inside a wrapper
192
+ // that is the container (`BaseListCard`).
107
193
  ...(inGroup
108
194
  ? { gridColumn: `span ${railCount}`, gridTemplateColumns: "subgrid" }
109
- : {
110
- containerType: "inline-size",
111
- gridTemplateColumns: cellTemplate ?? railsTemplateFor(gutters, metaColumns),
112
- }),
195
+ : { gridTemplateColumns: cellTemplate ?? railsTemplateFor(gutters, metaColumns) }),
113
196
  alignItems: "center",
114
197
  // Wide enough that the meta cluster, the value and the status read as three
115
198
  // columns rather than one run of text — the complaint that started all this
@@ -128,34 +211,8 @@ export const rowSx = (theme: Theme, opts: RowSxOptions): Record<string, unknown>
128
211
  outlineColor: "primary.main",
129
212
  outlineOffset: rem(theme, 2),
130
213
  },
131
- // TWO-LINE, below the point where the shared rails stop helping.
132
- //
133
- // The standard mobile transaction row: what the record IS and what it COST
134
- // on the first line, the supporting detail on the second. Better than
135
- // truncating four columns into ellipses, and the reason each slot carries a
136
- // `data-slot` — the placement is explicit rather than whatever order the
137
- // children happen to be in.
138
- //
139
- // [ select ][ leading ][ title …………… ][ menu ]
140
- // [ (cells) …………… ][ value ]
141
- //
142
- // The MENU stays in the top-right corner at every width. It is the row's
143
- // one fixed landmark — an overflow that moves to the second line on a phone
144
- // is an overflow nobody finds twice.
145
- [`@container (max-width: ${rem(theme, STACK_BREAK)})`]: {
146
- gridTemplateColumns: "auto auto minmax(0, 1fr) max-content",
147
- ...(inGroup ? { gridColumn: `span ${RAIL_COUNT}` } : {}),
148
- rowGap: 0.75,
149
- columnGap: 1,
150
- '& > [data-slot="drag"]': { display: "none" },
151
- '& > [data-slot="select"]': { gridArea: "1 / 1" },
152
- '& > [data-slot="leading"]': { gridArea: "1 / 2" },
153
- '& > [data-slot="caption"]': { gridArea: "1 / 3" },
154
- '& > [data-slot="actions"]': { gridArea: "1 / 4", justifyContent: "flex-end" },
155
- '& > [data-slot="meta"]': { display: "none" },
156
- // Second line, starting under the title rather than under the checkbox.
157
- '& > [data-slot="value"]': { gridArea: "2 / 4", textAlign: "right" },
158
- },
214
+ // TWO-LINE below STACK_BREAK: see {@link stackedRowSx}.
215
+ [`@container (max-width: ${rem(theme, STACK_BREAK)})`]: stackedRowSx(inGroup, railCount, stack),
159
216
  ...(divider
160
217
  ? { borderRadius: 0, borderWidth: 0, borderBottomWidth: 1, borderStyle: "solid" }
161
218
  : {}),
@@ -262,23 +319,39 @@ function rowSurface(
262
319
  return { ...surface, borderBottomColor: theme.palette.divider };
263
320
  }
264
321
 
322
+ /**
323
+ * Which head gutters this row renders: the ones it uses, or all three when its
324
+ * group reserves them. The template is built from this; the three gutter slots
325
+ * (`base-list-card-gutters.tsx`) apply the SAME conditions on their own — keep
326
+ * the two in step, because a template that disagrees with the slots is exactly
327
+ * how cells slid two tracks.
328
+ */
329
+ export function rowGutters(
330
+ props: BaseListCardProps,
331
+ shell: ReturnType<typeof useRowShell>,
332
+ ): { disclose: boolean; drag: boolean; select: boolean } {
333
+ const { selectable, drag, reserve } = shell;
334
+ return {
335
+ disclose: reserve || props.children != null,
336
+ drag: reserve || drag.draggable,
337
+ select: reserve || selectable,
338
+ };
339
+ }
340
+
265
341
  export function rowStyles(
266
342
  props: BaseListCardProps,
267
343
  shell: ReturnType<typeof useRowShell>,
268
344
  cellTemplate: string | null,
345
+ stack: StackPlacement,
269
346
  ): Record<string, unknown> {
270
- const { theme, group, selectable, drag, reserve, pad, padY, scale, acts } = shell;
347
+ const { theme, group, drag, pad, padY, scale, acts } = shell;
271
348
  return {
272
349
  ...rowSurface(props, shell),
273
350
  ...rowSx(theme, {
274
351
  inGroup: group !== null,
275
352
  railCount: group?.railCount ?? RAIL_COUNT,
276
353
  cellTemplate,
277
- gutters: {
278
- disclose: reserve || props.children != null,
279
- drag: reserve || drag.draggable,
280
- select: reserve || selectable,
281
- },
354
+ gutters: rowGutters(props, shell),
282
355
  metaColumns: metaShape(props).columns,
283
356
  pad,
284
357
  padY,
@@ -286,6 +359,7 @@ export function rowStyles(
286
359
  divider: props.divider ?? false,
287
360
  interactive: acts || props.href != null,
288
361
  draggable: drag.draggable && drag.handleProps === undefined,
362
+ stack,
289
363
  }),
290
364
  };
291
365
  }