@12-apps/ui 6.57.0 → 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 (188) 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 +6 -6
  6. package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
  7. package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
  8. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  9. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +18 -18
  10. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +20 -19
  11. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +5 -3
  12. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +45 -0
  13. package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js.map +1 -0
  14. package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
  15. package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -4
  16. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  17. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +4 -4
  18. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
  19. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +17 -17
  20. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
  21. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
  22. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +5 -5
  23. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  24. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js +3 -1
  25. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +3 -3
  26. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +1 -1
  27. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +2 -2
  28. package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js +13 -0
  29. package/dist/_internal/components/data-display/DataViews/data-views-url-echo.js.map +1 -0
  30. package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
  31. package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +1 -1
  32. package/dist/_internal/components/data-display/index.js +14 -14
  33. package/dist/_internal/components/index.js +22 -22
  34. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
  35. package/dist/_internal/components/layout/index.js +1 -1
  36. package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
  37. package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
  38. package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
  39. package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
  40. package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
  41. package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
  42. package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
  43. package/dist/_internal/components/navigation/index.js +9 -9
  44. package/dist/_internal/en-US.data-display.js +1 -1
  45. package/dist/_internal/pt-BR.data-display.js +1 -1
  46. package/dist/_internal/user-avatar/user-avatar.js +3 -3
  47. package/dist/charts.js +6 -6
  48. package/dist/{chunk-MKAA3YIJ.js → chunk-3K7WN2PO.js} +3 -3
  49. package/dist/{chunk-573XC4HK.js → chunk-4QKS5Y35.js} +2 -2
  50. package/dist/{chunk-KX75HM5U.js → chunk-5YDS6HO3.js} +7 -2
  51. package/dist/{chunk-KX75HM5U.js.map → chunk-5YDS6HO3.js.map} +1 -1
  52. package/dist/{chunk-N4MR4EMC.js → chunk-6D2PFC5C.js} +2 -2
  53. package/dist/{chunk-LJKWWXZD.js → chunk-6OSUK2C7.js} +28 -22
  54. package/dist/chunk-6OSUK2C7.js.map +1 -0
  55. package/dist/{chunk-ICSXPZXT.js → chunk-6QBT5TPS.js} +2 -2
  56. package/dist/{chunk-C67FDYG7.js → chunk-7CWZI6MQ.js} +5 -5
  57. package/dist/{chunk-JL77BSOL.js → chunk-AQI3UK6P.js} +2 -2
  58. package/dist/{chunk-A6EUQDRK.js → chunk-ARJIKW56.js} +4 -2
  59. package/dist/chunk-ARJIKW56.js.map +1 -0
  60. package/dist/{chunk-GI24X7XA.js → chunk-DZIRCD2W.js} +2 -2
  61. package/dist/{chunk-53ACGKBW.js → chunk-EDBP62WG.js} +3 -3
  62. package/dist/{chunk-YXIVQFNW.js → chunk-EWIKSTJV.js} +4 -4
  63. package/dist/{chunk-LWZ2K225.js → chunk-FXZUVZON.js} +6 -6
  64. package/dist/chunk-G6EJLEVV.js +75 -0
  65. package/dist/chunk-G6EJLEVV.js.map +1 -0
  66. package/dist/{chunk-IK2ZVV3M.js → chunk-GK7JNSMK.js} +2 -2
  67. package/dist/{chunk-HFBQCJNP.js → chunk-HCYRCU4W.js} +2 -2
  68. package/dist/{chunk-BJMNAPKH.js → chunk-HH7PM5HT.js} +10 -22
  69. package/dist/chunk-HH7PM5HT.js.map +1 -0
  70. package/dist/{chunk-7AAJYWC3.js → chunk-HPO7PB4F.js} +2 -2
  71. package/dist/{chunk-WF3P7GE5.js → chunk-I3CQBEKS.js} +2 -2
  72. package/dist/{chunk-RREWYOKS.js → chunk-IL4FCC54.js} +2 -2
  73. package/dist/{chunk-7M3DRP7Q.js → chunk-ILNO4ZJ6.js} +3 -3
  74. package/dist/{chunk-2CJZLL5Y.js → chunk-NHVL2QPG.js} +2 -1
  75. package/dist/{chunk-2CJZLL5Y.js.map → chunk-NHVL2QPG.js.map} +1 -1
  76. package/dist/{chunk-45PGSVOH.js → chunk-NTJUAPJM.js} +10 -8
  77. package/dist/chunk-NTJUAPJM.js.map +1 -0
  78. package/dist/{chunk-EUPUEMFX.js → chunk-PC4H5LVB.js} +7 -7
  79. package/dist/{chunk-KEKOPD43.js → chunk-PQ7RWH7L.js} +4 -2
  80. package/dist/chunk-PQ7RWH7L.js.map +1 -0
  81. package/dist/{chunk-HRMB72E4.js → chunk-QHP5PZNC.js} +2 -1
  82. package/dist/{chunk-HRMB72E4.js.map → chunk-QHP5PZNC.js.map} +1 -1
  83. package/dist/{chunk-GNBCSTXF.js → chunk-QKAYXAQE.js} +6 -6
  84. package/dist/{chunk-GNBCSTXF.js.map → chunk-QKAYXAQE.js.map} +1 -1
  85. package/dist/{chunk-TZFBJ47T.js → chunk-SFLNHCA2.js} +39 -15
  86. package/dist/chunk-SFLNHCA2.js.map +1 -0
  87. package/dist/{chunk-OBMPE6PW.js → chunk-SSDYEOU4.js} +5 -5
  88. package/dist/{chunk-I6ESCBY3.js → chunk-TF27Z27K.js} +2 -2
  89. package/dist/{chunk-JF5LQOGB.js → chunk-U47KRLEW.js} +57 -45
  90. package/dist/chunk-U47KRLEW.js.map +1 -0
  91. package/dist/{chunk-RBHBJDOZ.js → chunk-UEU5NSIG.js} +4 -4
  92. package/dist/chunk-V4V2N6YJ.js +55 -0
  93. package/dist/chunk-V4V2N6YJ.js.map +1 -0
  94. package/dist/{chunk-G76BNXWE.js → chunk-XW5SEW3H.js} +6 -6
  95. package/dist/{chunk-46ZATLQV.js → chunk-YIKFYWKD.js} +3 -3
  96. package/dist/{chunk-4JBS6NOT.js → chunk-ZWBGQYVO.js} +35 -6
  97. package/dist/chunk-ZWBGQYVO.js.map +1 -0
  98. package/dist/{chunk-VWW2EXH7.js → chunk-ZYJZHXFU.js} +4 -4
  99. package/dist/data-display/Avatar.js +2 -2
  100. package/dist/data-display/Badge.js +2 -2
  101. package/dist/data-display/CardKit.js +10 -10
  102. package/dist/data-display/Carousel.js +2 -2
  103. package/dist/data-display/Chart.js +6 -6
  104. package/dist/data-display/DataGrid.js +2 -2
  105. package/dist/data-display/DataViews.js +25 -23
  106. package/dist/en-US.js +1 -1
  107. package/dist/layout/ContentToolbar.js +1 -1
  108. package/dist/locales.js +2 -2
  109. package/dist/navigation/SectionNav.js +9 -9
  110. package/dist/pt-BR.js +1 -1
  111. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts.map +1 -1
  112. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts +29 -1
  113. package/dist/types/components/data-display/DataViews/base-list-card-geometry.d.ts.map +1 -1
  114. package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts +46 -0
  115. package/dist/types/components/data-display/DataViews/base-list-card-layout.d.ts.map +1 -0
  116. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts +5 -2
  117. package/dist/types/components/data-display/DataViews/base-list-card-slots.d.ts.map +1 -1
  118. package/dist/types/components/data-display/DataViews/base-list-card.d.ts +10 -1
  119. package/dist/types/components/data-display/DataViews/base-list-card.d.ts.map +1 -1
  120. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +7 -0
  121. package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
  122. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  123. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts +2 -0
  124. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts.map +1 -1
  125. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts +3 -1
  126. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts.map +1 -1
  127. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts +2 -0
  128. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  129. package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts +47 -0
  130. package/dist/types/components/data-display/DataViews/data-views-url-echo.d.ts.map +1 -0
  131. package/dist/types/components/data-display/DataViews/list-card-rails.d.ts +17 -2
  132. package/dist/types/components/data-display/DataViews/list-card-rails.d.ts.map +1 -1
  133. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +3 -2
  134. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  135. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +14 -0
  136. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  137. package/dist/types/en-US.data-display.d.ts.map +1 -1
  138. package/dist/types/pt-BR.data-display.d.ts.map +1 -1
  139. package/dist/user-avatar.js +3 -3
  140. package/package.json +1 -1
  141. package/src/components/data-display/DataViews/DataViewsTableBase.tsx +7 -36
  142. package/src/components/data-display/DataViews/base-list-card-geometry.tsx +114 -40
  143. package/src/components/data-display/DataViews/base-list-card-layout.tsx +104 -0
  144. package/src/components/data-display/DataViews/base-list-card-slots.tsx +47 -3
  145. package/src/components/data-display/DataViews/base-list-card.tsx +65 -68
  146. package/src/components/data-display/DataViews/data-views-copy.ts +7 -0
  147. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +2 -1
  148. package/src/components/data-display/DataViews/data-views-selection-extra.ts +10 -1
  149. package/src/components/data-display/DataViews/data-views-shell-toolbar.tsx +4 -0
  150. package/src/components/data-display/DataViews/data-views-toolbar.tsx +4 -0
  151. package/src/components/data-display/DataViews/data-views-url-echo.ts +134 -0
  152. package/src/components/data-display/DataViews/list-card-rails.tsx +22 -6
  153. package/src/components/layout/ContentToolbar/ContentToolbar.md +5 -2
  154. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +51 -10
  155. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +14 -0
  156. package/src/en-US.data-display.ts +1 -0
  157. package/src/pt-BR.data-display.ts +1 -0
  158. package/dist/chunk-45PGSVOH.js.map +0 -1
  159. package/dist/chunk-4JBS6NOT.js.map +0 -1
  160. package/dist/chunk-A6EUQDRK.js.map +0 -1
  161. package/dist/chunk-BJMNAPKH.js.map +0 -1
  162. package/dist/chunk-JF5LQOGB.js.map +0 -1
  163. package/dist/chunk-KEKOPD43.js.map +0 -1
  164. package/dist/chunk-LJKWWXZD.js.map +0 -1
  165. package/dist/chunk-TZFBJ47T.js.map +0 -1
  166. /package/dist/{chunk-MKAA3YIJ.js.map → chunk-3K7WN2PO.js.map} +0 -0
  167. /package/dist/{chunk-573XC4HK.js.map → chunk-4QKS5Y35.js.map} +0 -0
  168. /package/dist/{chunk-N4MR4EMC.js.map → chunk-6D2PFC5C.js.map} +0 -0
  169. /package/dist/{chunk-ICSXPZXT.js.map → chunk-6QBT5TPS.js.map} +0 -0
  170. /package/dist/{chunk-C67FDYG7.js.map → chunk-7CWZI6MQ.js.map} +0 -0
  171. /package/dist/{chunk-JL77BSOL.js.map → chunk-AQI3UK6P.js.map} +0 -0
  172. /package/dist/{chunk-GI24X7XA.js.map → chunk-DZIRCD2W.js.map} +0 -0
  173. /package/dist/{chunk-53ACGKBW.js.map → chunk-EDBP62WG.js.map} +0 -0
  174. /package/dist/{chunk-YXIVQFNW.js.map → chunk-EWIKSTJV.js.map} +0 -0
  175. /package/dist/{chunk-LWZ2K225.js.map → chunk-FXZUVZON.js.map} +0 -0
  176. /package/dist/{chunk-IK2ZVV3M.js.map → chunk-GK7JNSMK.js.map} +0 -0
  177. /package/dist/{chunk-HFBQCJNP.js.map → chunk-HCYRCU4W.js.map} +0 -0
  178. /package/dist/{chunk-7AAJYWC3.js.map → chunk-HPO7PB4F.js.map} +0 -0
  179. /package/dist/{chunk-WF3P7GE5.js.map → chunk-I3CQBEKS.js.map} +0 -0
  180. /package/dist/{chunk-RREWYOKS.js.map → chunk-IL4FCC54.js.map} +0 -0
  181. /package/dist/{chunk-7M3DRP7Q.js.map → chunk-ILNO4ZJ6.js.map} +0 -0
  182. /package/dist/{chunk-EUPUEMFX.js.map → chunk-PC4H5LVB.js.map} +0 -0
  183. /package/dist/{chunk-OBMPE6PW.js.map → chunk-SSDYEOU4.js.map} +0 -0
  184. /package/dist/{chunk-I6ESCBY3.js.map → chunk-TF27Z27K.js.map} +0 -0
  185. /package/dist/{chunk-RBHBJDOZ.js.map → chunk-UEU5NSIG.js.map} +0 -0
  186. /package/dist/{chunk-G76BNXWE.js.map → chunk-XW5SEW3H.js.map} +0 -0
  187. /package/dist/{chunk-46ZATLQV.js.map → chunk-YIKFYWKD.js.map} +0 -0
  188. /package/dist/{chunk-VWW2EXH7.js.map → chunk-ZYJZHXFU.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/data-display/DataViews/base-list-card.tsx"],"sourcesContent":["\"use client\";\n\nimport Collapse from \"@mui/material/Collapse/index.js\";\nimport { type ReactNode } from \"react\";\n\nimport { Card } from \"../../layout/Card\";\nimport type { DescriptionItemProps } from \"../DescriptionItem\";\nimport { Box } from \"../../../mui/Box\";\n\nimport { type CardSurfaceProps } from \"./card-surface\";\nimport { DropIndicator } from \"./data-views-drag\";\nimport { useDisclosure } from \"./base-list-card-disclosure\";\nimport { actionProps, metaShape, rowStyles, useRowShell } from \"./base-list-card-geometry\";\nimport { DiscloseSlot, DragSlot, SelectSlot } from \"./base-list-card-gutters\";\nimport { type DataViewsDensity } from \"./data-views-layout-context\";\nimport { cellRailsTemplate } from \"./list-card-rails\";\nimport { ListCardCells, cellTracks, useCellConfig, type ListCardCellConfig } from \"./list-card-cells\";\nimport {\n ListCardActions,\n ListCardCaption,\n ListCardMeta,\n ListCardTail,\n} from \"./base-list-card-slots\";\n\n/**\n * THE \"LISTA\" LAYOUT'S CARD — {@link BaseCard}'s horizontal sibling.\n *\n * `ListBody` always described the shape it wanted (\"a marker, a title, a\n * subtitle and a value on the right\") and never provided it, so every host\n * hand-rolled a `<Box>` flex row: a tint for selection with no checkbox, fixed\n * `minWidth` columns that ignored density and never collapsed, no hover, no\n * focus ring, and a `borderBottom` fighting the gap between rows.\n *\n * THE LIST OWNS THE COLUMNS. Inside a {@link ListCardGroup} this card is\n * `grid-template-columns: subgrid` across the group's rails, so the value sits\n * on its own edge and cannot be shunted about by the width of the status chip\n * beside it. Standalone it falls back to the same template on its own. See\n * `list-card-rails`.\n *\n * IT ANSWERS ITS OWN WIDTH, not the viewport — a container query, because the\n * same row renders full-bleed on a phone, in a 300px board column, and beside a\n * filter panel that opens and closes. Below `STACK_BREAK` it leaves the shared\n * rails entirely and goes two-line, which is the standard mobile transaction\n * row and beats truncating everything: title + value, then subtitle + status.\n */\n\nexport interface BaseListCardProps extends CardSurfaceProps {\n /** A marker: avatar, thumbnail or status glyph. Earn the pixels — a generic\n * icon repeated down fifty rows is noise. */\n leading?: ReactNode;\n /** First-class title. Rendered as the link when `href` is set. */\n title?: ReactNode;\n /** Secondary line under the title. */\n subtitle?: ReactNode;\n /**\n * Middle columns as labelled pairs — {@link DescriptionItem}s, not free-form\n * nodes, so a screen reader reads \"Data, 05/08/2026\" rather than four\n * unrelated strings. Stacked (label above value) by default.\n *\n * The FIRST rung of the collapse ladder: the only slot whose absence does not\n * stop the row being identified or acted on.\n */\n meta?: DescriptionItemProps[];\n /** Escape hatch for a middle section these pairs cannot express. */\n metaSlot?: ReactNode;\n /** The number this row is about. Its own rail, tabular figures, never truncated. */\n value?: ReactNode;\n /**\n * Inline actions — the one or two things done often enough to deserve a\n * button. Revealed on hover and `:focus-within` by default, so fifty rows of\n * buttons are not the resting state of the page.\n */\n actions?: ReactNode;\n /** Always show the inline actions, rather than on hover/focus. */\n actionsAlwaysVisible?: boolean;\n /** The 3-dots overflow menu, pinned to the end. Also opens on right-click. */\n menu?: ReactNode;\n /** What opens the overflow menu on right-click / long-press. */\n onContextMenu?: (event: React.MouseEvent) => void;\n /**\n * THE EXPANDABLE BODY — and the whole reason this is a card and not a table\n * row.\n *\n * A summary row of labelled columns is a table row with a border round it: it\n * restates what the table already says and gives nobody a reason to switch to\n * it. What a card can do that a table cell cannot is OPEN — carry the record's\n * own detail underneath its summary, in whatever shape that record wants.\n *\n * So this container makes no claim about what goes in here. It spans every\n * rail and imposes nothing: an order puts its line items and a totals ledger\n * here, a cart adds its recovery actions, a role lists its permissions. The\n * design of that area belongs entirely to the consumer, and none of it is the\n * envelope's business.\n *\n * ABSENT ⇒ NO CHEVRON. A row given nothing to reveal renders no disclosure\n * control at all, rather than one that opens onto an empty box, so a column of\n * chevrons is a truthful index of which rows have more behind them.\n */\n children?: ReactNode;\n /** Open on first render, for an uncontrolled card. Ignored when `expanded` is set. */\n defaultExpanded?: boolean;\n /**\n * Open state, when the LIST wants to own it.\n *\n * Left unset the card keeps its own, and rows open independently — several at\n * once, which is what comparing two records requires. Pass this (with\n * `onExpandedChange`) to impose something else, an accordion being the usual\n * reason.\n */\n expanded?: boolean;\n /** Fired with the state the card is asking to move to. */\n onExpandedChange?: (expanded: boolean) => void;\n /** Toggle this row's selection. Receives the raw event so a list can range-select. */\n onToggleSelect?: (event?: React.MouseEvent) => void;\n /** How much air the row gets. Vertical only — a full-width row cannot narrow. */\n density?: DataViewsDensity;\n /**\n * Fine-grained size multiplier on top of `density` (1 = base).\n *\n * Applied as `zoom`, so it scales EVERYTHING the row draws — type, gutters,\n * gaps, padding, the checkbox, the grip, the chip and the menu — not just the\n * handful of font sizes it once multiplied.\n */\n scale?: number;\n /** Flush style: a bottom rule instead of an outline. Row-only. */\n divider?: boolean;\n /** This row's id for drag purposes. Inert outside a `DragContainerProvider`. */\n dragId?: string | number;\n /**\n * The record this row is about, read by the list's cell config.\n *\n * Required only when cells are configured — the config's `primary`/`secondary`\n * are functions of the row, so without one there is nothing to render them\n * from and the card falls back to its named slots.\n */\n row?: Record<string, unknown>;\n /**\n * A cell config for a STANDALONE card.\n *\n * Inside a `ListCardGroup` the list's config wins and this is ignored: one\n * declaration of the list's shape is the whole point, and a row permitted to\n * override it could put its columns somewhere no other row has them.\n */\n cells?: readonly ListCardCellConfig<never>[];\n}\n\n\n\n\n/**\n * Which cell config applies, and whether this row resolves its own tracks.\n *\n * The list's config wins over the card's: one declaration of the list's shape is\n * the point, so a row inside a group cannot introduce a column of its own. And\n * the template is standalone-only — inside a group the GROUP owns it and the row\n * is subgrid over it, because a row resolving its own tracks is exactly what\n * stops a list from lining up.\n */\nfunction useResolvedCells(\n props: BaseListCardProps,\n inGroup: boolean,\n): {\n cells: readonly ListCardCellConfig<never>[] | null;\n configured: boolean;\n cellTemplate: string | null;\n} {\n const groupCells = useCellConfig();\n const cells = groupCells ?? props.cells ?? null;\n const configured = cells != null && cells.length > 0 && props.row != null;\n const cellTemplate = configured && !inGroup ? cellRailsTemplate(cellTracks(cells)) : null;\n return { cells, configured, cellTemplate };\n}\n\n\n/**\n * The row's middle: either the list's configured cells, or the named slots.\n *\n * Split out because the branch is the only conditional shape the card has, and\n * inlined it pushed `BaseListCard` past both the line and the complexity gate.\n */\nfunction RowContent({\n card,\n cells,\n configured,\n slot,\n actionable,\n meta,\n}: {\n card: BaseListCardProps;\n cells: readonly ListCardCellConfig<never>[] | null;\n configured: boolean;\n slot: (name: string) => string | undefined;\n actionable: boolean;\n meta: { columns: number; present: boolean };\n}): React.JSX.Element {\n if (configured && cells != null) {\n return (\n <>\n {/* The list's columns, rendered from this row. */}\n <ListCardCells cells={cells} row={card.row as never} />\n {/* THE MENU IS NOT PART OF THE CONFIG and never optional: it is where a\n * row's actions live, and a list that folded it into a cell would have\n * nowhere left to put them. So it brackets the cells on its own rail,\n * exactly as the gutters do at the other end. */}\n <ListCardActions\n actions={actionable ? card.actions : undefined}\n alwaysVisible={card.actionsAlwaysVisible}\n menu={card.menu}\n testId={slot}\n />\n </>\n );\n }\n return (\n <>\n <ListCardCaption\n title={card.title}\n subtitle={card.subtitle}\n href={card.href}\n target={card.target}\n testId={slot(\"title\")}\n />\n <ListCardMeta meta={card.meta} metaSlot={card.metaSlot} trailingRule={card.value != null} />\n <ListCardTail\n value={card.value}\n separated={meta.present}\n actions={actionable ? card.actions : undefined}\n actionsAlwaysVisible={card.actionsAlwaysVisible}\n menu={card.menu}\n testId={slot}\n />\n </>\n );\n}\n\n/**\n * The revealed body, and the rule that separates it from the summary.\n *\n * `gridColumn: 1 / -1` so it spans every rail: the summary's columns are the\n * LIST's, and nothing about them should constrain a detail area whose design\n * belongs to the consumer.\n *\n * Collapse rather than an unmount, so the body animates open and keeps its own\n * state between peeks — a consumer putting a form or a scrolled table in here\n * would otherwise have it reset on every toggle. `unmountOnExit` is deliberately\n * NOT set: fifty closed rows pay for fifty hidden subtrees, which is the trade\n * taken because the alternative re-runs every consumer's effects per toggle.\n */\nfunction ExpandableBody({\n disclosure,\n padY,\n pad,\n children,\n}: {\n disclosure: { expandable: boolean; expanded: boolean; regionId: string };\n padY: number;\n pad: number;\n children: ReactNode;\n}): React.JSX.Element {\n if (!disclosure.expandable) return <></>;\n return (\n <Box sx={{ gridColumn: \"1 / -1\", minWidth: 0 }}>\n <Collapse in={disclosure.expanded} timeout={150}>\n <Box\n id={disclosure.regionId}\n role=\"region\"\n sx={{\n minWidth: 0,\n // `padY`, not a fraction of the horizontal padding. The card's own\n // `py` wraps the summary AND the body, so once the body is in flow\n // the summary has no bottom padding of its own — at `comfortable`\n // the row visibly lost the height it had while closed.\n mt: padY,\n pt: padY,\n // A RULE BETWEEN SUMMARY AND BODY, bled through the row's horizontal\n // padding so it spans the card edge to edge. Inset, it reads as a\n // border around the content rather than a division of the card.\n borderTop: 1,\n borderColor: \"divider\",\n mx: -pad,\n px: pad,\n }}\n >\n {children}\n </Box>\n </Collapse>\n </Box>\n );\n}\n\nexport function BaseListCard(props: BaseListCardProps): React.JSX.Element {\n const { selected = false, onClick } = props;\n const shell = useRowShell(props);\n const { actionable, selectable, slot, drag, reserve, pad, padY, acts } = shell;\n const meta = metaShape(props);\n const disclosure = useDisclosure(props);\n const { cells, configured, cellTemplate } = useResolvedCells(props, shell.group != null);\n\n return (\n <Card\n variant=\"outlined\"\n className={props.className}\n dataTestId={props.testId}\n aria-label={props[\"aria-label\"]}\n aria-disabled={actionable ? undefined : true}\n onContextMenu={props.onContextMenu}\n {...(acts ? actionProps(onClick) : {})}\n {...drag.itemProps}\n // A PLAIN OBJECT: `Card` merges by spreading, so a function sx vanishes.\n sx={rowStyles(props, shell, cellTemplate)}\n >\n {drag.dropEdge != null && <DropIndicator edge={drag.dropEdge} />}\n <DiscloseSlot\n expandable={disclosure.expandable}\n expanded={disclosure.expanded}\n reserve={reserve}\n onToggle={disclosure.toggle}\n controls={disclosure.regionId}\n testId={slot(\"disclose\")}\n />\n <DragSlot drag={drag} reserve={reserve} testId={slot(\"drag\")} />\n <SelectSlot\n selectable={selectable}\n selected={selected}\n reserve={reserve}\n onToggleSelect={props.onToggleSelect}\n testId={slot(\"checkbox\")}\n />\n <Box data-slot=\"leading\" sx={{ display: \"flex\", alignItems: \"center\" }}>\n {props.leading}\n </Box>\n <RowContent card={props} cells={cells} configured={configured} slot={slot} actionable={actionable} meta={meta} />\n <ExpandableBody disclosure={disclosure} padY={padY} pad={pad}>\n {props.children}\n </ExpandableBody>\n </Card>\n );\n}\n\nexport { META_BREAK, STACK_BREAK } from \"./base-list-card-slots\";\n"],"mappings":"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","names":["default"]}
@@ -1 +0,0 @@
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 | 'selectAll'\n | 'clearSelection'\n | 'actions'\n | 'selectionExtra'\n | 'selectAllTestId'\n | 'clearAllTestId'\n | 'edgeAlign'\n | 'selectAllLabel'\n | 'selectAllText'\n | 'clearAllText'\n>;\n\n/** The left cluster: Select All + (when selecting) Clear All / count / actions. */\nfunction SelectionCluster({\n hasSelection,\n selectedCount,\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 <Checkbox\n size=\"small\"\n checked={hasSelection}\n onChange={(event) => (event.target.checked ? selectAll() : clearSelection())}\n data-testid={`${selectAllTestId}-checkbox`}\n inputProps={{ 'aria-label': selectAllLabel }}\n sx={{ p: 0.5, display: { xs: 'inline-flex', md: 'none' } }}\n />\n {hasSelection ? (\n <SelectionState\n selectedCount={selectedCount}\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 clearSelection,\n clearAllTestId,\n clearAllText,\n selectionExtra,\n}: Pick<\n ContentToolbarProps,\n 'selectedCount' | '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 {selectedCount} {selectedCount === 1 ? 'item' : 'items'} selected\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** + an \"N items selected\" count + 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 * 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 selectedCount,\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 selectedCount={selectedCount}\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":[]}