@12-apps/ui 6.24.6 → 6.24.8

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 (131) hide show
  1. package/components-catalog.md +1 -1
  2. package/dist/_internal/components/data-display/CardKit/CardKebab.js +4 -4
  3. package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +4 -4
  4. package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +4 -4
  5. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +19 -19
  6. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +25 -25
  7. package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -4
  8. package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +5 -5
  9. package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +4 -4
  10. package/dist/_internal/components/data-display/DataViews/data-views-columns.js +5 -5
  11. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +5 -5
  12. package/dist/_internal/components/data-display/DataViews/data-views-empty.js +4 -4
  13. package/dist/_internal/components/data-display/DataViews/data-views-export.js +4 -4
  14. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +6 -6
  15. package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +4 -4
  16. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +16 -16
  17. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
  18. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +4 -4
  19. package/dist/_internal/components/data-display/DataViews/data-views-search.js +1 -1
  20. package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +4 -4
  21. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +9 -9
  22. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +7 -7
  23. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +8 -8
  24. package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +4 -4
  25. package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +6 -6
  26. package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +4 -4
  27. package/dist/_internal/components/feedback/index.js +4 -4
  28. package/dist/_internal/components/form/Button/Button.js +3 -3
  29. package/dist/_internal/components/form/Button/Button.metrics.js +3 -1
  30. package/dist/_internal/components/form/Button/Button.styles.js +2 -2
  31. package/dist/_internal/components/form/index.js +3 -3
  32. package/dist/_internal/components/form/total-form/SubmitButton.js +4 -4
  33. package/dist/_internal/components/index.js +5 -5
  34. package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
  35. package/dist/_internal/components/navigation/index.js +4 -4
  36. package/dist/_internal/social-login-button/social-login-button.js +4 -4
  37. package/dist/_internal/user-avatar/user-avatar.js +4 -4
  38. package/dist/{chunk-6JGPPTLX.js → chunk-2GI7ANEL.js} +3 -3
  39. package/dist/{chunk-U2ZDN2AL.js → chunk-2PBGVMM2.js} +2 -2
  40. package/dist/{chunk-ITGG5OKP.js → chunk-5LQ7PKMW.js} +3 -1
  41. package/dist/chunk-5LQ7PKMW.js.map +1 -0
  42. package/dist/{chunk-4T7TXRGM.js → chunk-6ZY5XU4J.js} +3 -3
  43. package/dist/{chunk-CHPZTF34.js → chunk-7KWBGMQC.js} +2 -2
  44. package/dist/{chunk-JT6TERQL.js → chunk-BB2OUERT.js} +2 -2
  45. package/dist/{chunk-XUJG2HFW.js → chunk-BH5BXLGI.js} +2 -2
  46. package/dist/{chunk-NWNSUHEB.js → chunk-CT5K725B.js} +2 -2
  47. package/dist/{chunk-53PDVLRK.js → chunk-E3PUH5IF.js} +3 -3
  48. package/dist/{chunk-LWRMKF7D.js → chunk-FBI6QB3O.js} +6 -6
  49. package/dist/{chunk-ZRPGVHTR.js → chunk-GGI7GM5O.js} +2 -2
  50. package/dist/{chunk-TX5V42AY.js → chunk-HEBQS7QP.js} +3 -3
  51. package/dist/{chunk-A7Q5AQVD.js → chunk-HZVFAGLZ.js} +29 -14
  52. package/dist/chunk-HZVFAGLZ.js.map +1 -0
  53. package/dist/{chunk-BUQ2JUND.js → chunk-JO6BBSGY.js} +2 -2
  54. package/dist/{chunk-4ZV7N5CU.js → chunk-JXPHU3K5.js} +4 -4
  55. package/dist/{chunk-ZXOT3U6U.js → chunk-KFWIOFMS.js} +4 -4
  56. package/dist/{chunk-TW3BXVEU.js → chunk-KMXAPYU2.js} +2 -2
  57. package/dist/{chunk-CJBBGMIA.js → chunk-MNXVXW4T.js} +2 -2
  58. package/dist/{chunk-I3E2QHTH.js → chunk-NLJV4CPF.js} +3 -3
  59. package/dist/{chunk-BPLFM2GL.js → chunk-NYEA7JAI.js} +3 -3
  60. package/dist/{chunk-O6AZDQJJ.js → chunk-OE2ZVL67.js} +2 -2
  61. package/dist/{chunk-4523RYE7.js → chunk-OG2FP6SE.js} +2 -2
  62. package/dist/{chunk-XKV5ZIBG.js → chunk-OGGPQVIG.js} +2 -2
  63. package/dist/{chunk-SQNW22ZZ.js → chunk-OV4WREMW.js} +3 -3
  64. package/dist/{chunk-6LGWJFQK.js → chunk-PFDM2OIP.js} +2 -2
  65. package/dist/{chunk-YTOYMJPM.js → chunk-SLVQ33AN.js} +15 -5
  66. package/dist/chunk-SLVQ33AN.js.map +1 -0
  67. package/dist/{chunk-5OIH36KX.js → chunk-V4FKHLEB.js} +2 -2
  68. package/dist/{chunk-EMMPNB6D.js → chunk-X4Z62ZQY.js} +2 -2
  69. package/dist/{chunk-OP65D4UR.js → chunk-XR6WBW23.js} +2 -2
  70. package/dist/{chunk-4X4KM4ZB.js → chunk-ZZMZF7PZ.js} +2 -2
  71. package/dist/data-display/CardKit.js +5 -5
  72. package/dist/data-display/DataViews.js +25 -25
  73. package/dist/feedback/ConfirmAction.js +4 -4
  74. package/dist/form/Button.js +3 -3
  75. package/dist/form/total-form.js +4 -4
  76. package/dist/native/chunks/{chunk-ZAQ3AZJM.js → chunk-2R2R35C5.js} +2 -2
  77. package/dist/native/chunks/{chunk-ATS7STZJ.js → chunk-WL5LXVCK.js} +1 -1
  78. package/dist/native/chunks/{chunk-ATS7STZJ.js.map → chunk-WL5LXVCK.js.map} +1 -1
  79. package/dist/native/data-display/EmptyState.js +2 -2
  80. package/dist/native/data-display/ErrorState.js +1 -1
  81. package/dist/native/data-display/FleetMap.js +2 -2
  82. package/dist/native/form/Button.js +1 -1
  83. package/dist/navigation/AppHeader.js +4 -4
  84. package/dist/social-login-button.js +4 -4
  85. package/dist/types/components/data-display/DataViews/data-views-search.d.ts.map +1 -1
  86. package/dist/types/components/form/Button/Button.d.ts +7 -3
  87. package/dist/types/components/form/Button/Button.d.ts.map +1 -1
  88. package/dist/types/components/form/Button/Button.metrics.d.ts +25 -0
  89. package/dist/types/components/form/Button/Button.metrics.d.ts.map +1 -1
  90. package/dist/types/components/form/Button/Button.types.d.ts +37 -4
  91. package/dist/types/components/form/Button/Button.types.d.ts.map +1 -1
  92. package/dist/types-native/components/form/Button/Button.metrics.d.ts +25 -0
  93. package/dist/types-native/components/form/Button/Button.metrics.d.ts.map +1 -1
  94. package/dist/user-avatar.js +4 -4
  95. package/package.json +1 -1
  96. package/src/components/data-display/DataViews/data-views-search.tsx +62 -14
  97. package/src/components/form/Button/Button.md +39 -0
  98. package/src/components/form/Button/Button.metrics.ts +26 -0
  99. package/src/components/form/Button/Button.tsx +77 -4
  100. package/src/components/form/Button/Button.types.ts +47 -5
  101. package/dist/chunk-A7Q5AQVD.js.map +0 -1
  102. package/dist/chunk-ITGG5OKP.js.map +0 -1
  103. package/dist/chunk-YTOYMJPM.js.map +0 -1
  104. /package/dist/{chunk-6JGPPTLX.js.map → chunk-2GI7ANEL.js.map} +0 -0
  105. /package/dist/{chunk-U2ZDN2AL.js.map → chunk-2PBGVMM2.js.map} +0 -0
  106. /package/dist/{chunk-4T7TXRGM.js.map → chunk-6ZY5XU4J.js.map} +0 -0
  107. /package/dist/{chunk-CHPZTF34.js.map → chunk-7KWBGMQC.js.map} +0 -0
  108. /package/dist/{chunk-JT6TERQL.js.map → chunk-BB2OUERT.js.map} +0 -0
  109. /package/dist/{chunk-XUJG2HFW.js.map → chunk-BH5BXLGI.js.map} +0 -0
  110. /package/dist/{chunk-NWNSUHEB.js.map → chunk-CT5K725B.js.map} +0 -0
  111. /package/dist/{chunk-53PDVLRK.js.map → chunk-E3PUH5IF.js.map} +0 -0
  112. /package/dist/{chunk-LWRMKF7D.js.map → chunk-FBI6QB3O.js.map} +0 -0
  113. /package/dist/{chunk-ZRPGVHTR.js.map → chunk-GGI7GM5O.js.map} +0 -0
  114. /package/dist/{chunk-TX5V42AY.js.map → chunk-HEBQS7QP.js.map} +0 -0
  115. /package/dist/{chunk-BUQ2JUND.js.map → chunk-JO6BBSGY.js.map} +0 -0
  116. /package/dist/{chunk-4ZV7N5CU.js.map → chunk-JXPHU3K5.js.map} +0 -0
  117. /package/dist/{chunk-ZXOT3U6U.js.map → chunk-KFWIOFMS.js.map} +0 -0
  118. /package/dist/{chunk-TW3BXVEU.js.map → chunk-KMXAPYU2.js.map} +0 -0
  119. /package/dist/{chunk-CJBBGMIA.js.map → chunk-MNXVXW4T.js.map} +0 -0
  120. /package/dist/{chunk-I3E2QHTH.js.map → chunk-NLJV4CPF.js.map} +0 -0
  121. /package/dist/{chunk-BPLFM2GL.js.map → chunk-NYEA7JAI.js.map} +0 -0
  122. /package/dist/{chunk-O6AZDQJJ.js.map → chunk-OE2ZVL67.js.map} +0 -0
  123. /package/dist/{chunk-4523RYE7.js.map → chunk-OG2FP6SE.js.map} +0 -0
  124. /package/dist/{chunk-XKV5ZIBG.js.map → chunk-OGGPQVIG.js.map} +0 -0
  125. /package/dist/{chunk-SQNW22ZZ.js.map → chunk-OV4WREMW.js.map} +0 -0
  126. /package/dist/{chunk-6LGWJFQK.js.map → chunk-PFDM2OIP.js.map} +0 -0
  127. /package/dist/{chunk-5OIH36KX.js.map → chunk-V4FKHLEB.js.map} +0 -0
  128. /package/dist/{chunk-EMMPNB6D.js.map → chunk-X4Z62ZQY.js.map} +0 -0
  129. /package/dist/{chunk-OP65D4UR.js.map → chunk-XR6WBW23.js.map} +0 -0
  130. /package/dist/{chunk-4X4KM4ZB.js.map → chunk-ZZMZF7PZ.js.map} +0 -0
  131. /package/dist/native/chunks/{chunk-ZAQ3AZJM.js.map → chunk-2R2R35C5.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-AIRWM7KK.js";
7
7
  import {
8
8
  Button
9
- } from "./chunk-YTOYMJPM.js";
9
+ } from "./chunk-SLVQ33AN.js";
10
10
  import {
11
11
  Text
12
12
  } from "./chunk-343TTIHD.js";
@@ -74,4 +74,4 @@ export {
74
74
  UserAvatar,
75
75
  UserMenu
76
76
  };
77
- //# sourceMappingURL=chunk-ZRPGVHTR.js.map
77
+ //# sourceMappingURL=chunk-GGI7GM5O.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  useColumnsWithActions,
3
3
  useRenderedColumns
4
- } from "./chunk-TW3BXVEU.js";
4
+ } from "./chunk-KMXAPYU2.js";
5
5
  import {
6
6
  filterRows
7
7
  } from "./chunk-YGQX7BNI.js";
@@ -22,7 +22,7 @@ import {
22
22
  import {
23
23
  computeActiveFilterCount,
24
24
  defaultSortFields
25
- } from "./chunk-U2ZDN2AL.js";
25
+ } from "./chunk-2PBGVMM2.js";
26
26
  import {
27
27
  emptyViewState
28
28
  } from "./chunk-LHHAYZ55.js";
@@ -172,4 +172,4 @@ function useDataViewsState({
172
172
  export {
173
173
  useDataViewsState
174
174
  };
175
- //# sourceMappingURL=chunk-TX5V42AY.js.map
175
+ //# sourceMappingURL=chunk-HEBQS7QP.js.map
@@ -11,32 +11,47 @@ import SearchIcon from "@mui/icons-material/Search";
11
11
  import IconButton from "@mui/material/IconButton/index.js";
12
12
  import InputAdornment from "@mui/material/InputAdornment/index.js";
13
13
  import TextField from "@mui/material/TextField/index.js";
14
- import { useEffect, useRef, useState } from "react";
14
+ import { useCallback, useEffect, useRef, useState } from "react";
15
15
  import { jsx, jsxs } from "react/jsx-runtime";
16
16
  var SEARCH_DEBOUNCE_MS = 350;
17
17
  function boxWidth(fill) {
18
18
  return { flex: 1, minWidth: fill ? 0 : 200, maxWidth: fill ? "none" : 384 };
19
19
  }
20
- function InlineKeyword({
21
- value,
22
- onChange,
23
- testId,
24
- autoFocus,
25
- onEscape,
26
- fill = false
27
- }) {
28
- const copy = useDataViewsCopy();
20
+ function useKeywordDraft(value, onChange) {
29
21
  const [draft, setDraft] = useState(value);
30
22
  const prev = useRef(value);
31
23
  if (prev.current !== value) {
32
24
  prev.current = value;
33
25
  if (draft !== value) setDraft(value);
34
26
  }
27
+ const commit = useRef(onChange);
28
+ useEffect(() => {
29
+ commit.current = onChange;
30
+ });
35
31
  useEffect(() => {
36
32
  if (draft === value) return void 0;
37
- const timer = setTimeout(() => onChange(draft), SEARCH_DEBOUNCE_MS);
33
+ const timer = setTimeout(() => commit.current(draft), SEARCH_DEBOUNCE_MS);
38
34
  return () => clearTimeout(timer);
39
- }, [draft, value, onChange]);
35
+ }, [draft, value]);
36
+ const commitNow = useCallback(
37
+ (typed) => {
38
+ setDraft(typed);
39
+ if (typed !== value) commit.current(typed);
40
+ },
41
+ [value]
42
+ );
43
+ return { draft, setDraft, commitNow };
44
+ }
45
+ function InlineKeyword({
46
+ value,
47
+ onChange,
48
+ testId,
49
+ autoFocus,
50
+ onEscape,
51
+ fill = false
52
+ }) {
53
+ const copy = useDataViewsCopy();
54
+ const { draft, setDraft, commitNow } = useKeywordDraft(value, onChange);
40
55
  return /* @__PURE__ */ jsx(
41
56
  TextField,
42
57
  {
@@ -53,7 +68,7 @@ function InlineKeyword({
53
68
  }
54
69
  if (event.key !== "Enter") return;
55
70
  event.preventDefault();
56
- if (draft !== value) onChange(draft);
71
+ commitNow(event.target instanceof HTMLInputElement ? event.target.value : draft);
57
72
  },
58
73
  placeholder: copy.search.placeholder,
59
74
  inputProps: { "aria-label": copy.search.allColumnsLabel, "data-testid": testId },
@@ -123,4 +138,4 @@ export {
123
138
  InlineKeyword,
124
139
  CollapsedSearch
125
140
  };
126
- //# sourceMappingURL=chunk-A7Q5AQVD.js.map
141
+ //# sourceMappingURL=chunk-HZVFAGLZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/data-display/DataViews/data-views-search.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * THE INLINE BAR'S SEARCH — the one control on the toolbar that cannot be\n * guessed from an icon's position, which is why it is the LAST thing the\n * degradation ladder takes away. See `data-views-overflow.ts`.\n */\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport SearchIcon from \"@mui/icons-material/Search\";\nimport IconButton from \"@mui/material/IconButton/index.js\";\nimport InputAdornment from \"@mui/material/InputAdornment/index.js\";\nimport TextField from \"@mui/material/TextField/index.js\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { Box } from \"../../../mui/Box\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\n\n/** How long the box waits after the last keystroke before it queries. */\nconst SEARCH_DEBOUNCE_MS = 350;\n\n/**\n * How wide the keyword box is allowed to be.\n *\n * The 200px floor is right while the box shares the row: a search you cannot\n * read six characters in is not a search. It is WRONG once the box has been\n * expanded out of its collapsed state on a narrow screen, where the cluster was\n * sized for a magnifier — the floor cannot be met there, so the row scrolled\n * sideways instead (154px of overhang at 320px). In that mode the box shrinks,\n * and if what is left would still be unreadable the bar hands it the whole\n * cluster instead (`searchTakeover`).\n */\nfunction boxWidth(fill: boolean): { flex: number; minWidth: number; maxWidth: number | \"none\" } {\n return { flex: 1, minWidth: fill ? 0 : 200, maxWidth: fill ? \"none\" : 384 };\n}\n\n/**\n * The box's own draft, and the two ways it reaches `onChange`.\n *\n * Extracted from {@link InlineKeyword} so the commit policy reads in one place\n * rather than split across a render body — and because it is where both halves\n * of a defect that lost searches outright had to be fixed.\n *\n * ## The debounce must not be keyed on the handler's identity\n *\n * Every caller builds `onChange` inline — the grid's own bar passes\n * `(value) => c.patch({ search: value })`, rebuilt on each render. Keying the\n * effect on it re-armed the timer on every render, and a busy admin page\n * re-renders more often than every 350ms as its queries land, so the timer\n * never survived to fire and the term was NEVER committed: measured in one\n * adopter as a dead `?q=` on a server-mode grid, where a 15-second loop pressed\n * Enter over and over and the URL never moved. So the handler is read through a\n * ref and the effect depends on `[draft, value]` alone.\n *\n * ## An immediate commit must read the BOX, not the draft\n *\n * A keystroke can land before React has processed the edit before it — a fast\n * typist, and every Playwright `fill()` followed by `press('Enter')`. `draft` is\n * then still the value from before the edit, and comparing THAT to `value` said\n * \"nothing changed\" and dropped the keystroke, leaving the term on screen with\n * an unfiltered list behind it. `commitNow` takes what the caller read off the\n * element and syncs the draft to it, which also keeps the box from being reset\n * to a stale draft by the next render when a host ignores the commit.\n */\nfunction useKeywordDraft(\n value: string,\n onChange: (next: string) => void,\n): { draft: string; setDraft: (next: string) => void; commitNow: (typed: string) => void } {\n const [draft, setDraft] = useState(value);\n const prev = useRef(value);\n // An external change (a saved view, the URL, \"Limpar\") wins over the draft.\n if (prev.current !== value) {\n prev.current = value;\n if (draft !== value) setDraft(value);\n }\n const commit = useRef(onChange);\n useEffect(() => {\n commit.current = onChange;\n });\n useEffect(() => {\n if (draft === value) return undefined;\n const timer = setTimeout(() => commit.current(draft), SEARCH_DEBOUNCE_MS);\n return () => clearTimeout(timer);\n }, [draft, value]);\n const commitNow = useCallback(\n (typed: string) => {\n setDraft(typed);\n if (typed !== value) commit.current(typed);\n },\n [value],\n );\n return { draft, setDraft, commitNow };\n}\n\n/**\n * The bar's keyword box.\n *\n * DEBOUNCED rather than committed on Enter/blur. In server mode every commit is\n * a round trip, and a box that only fires on blur makes the operator press a\n * key they were not told about to see any result at all — they type, nothing\n * happens, and the list looks broken. 350ms is long enough that a word costs\n * one query, short enough to feel like live search.\n *\n * `Escape` clears; the X clears without leaving the box. Both exist because\n * clearing by selecting-and-deleting is three gestures for the most common\n * thing anyone does to a search box.\n */\nexport function InlineKeyword({\n value,\n onChange,\n testId,\n autoFocus,\n onEscape,\n fill = false,\n}: {\n value: string;\n onChange: (value: string) => void;\n testId?: string;\n autoFocus?: boolean;\n /** Called on Escape with the box already empty — the collapsed bar closes it. */\n onEscape?: () => void;\n /** Take whatever width there is, with no minimum — see {@link boxWidth}. */\n fill?: boolean;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n const { draft, setDraft, commitNow } = useKeywordDraft(value, onChange);\n\n return (\n <TextField\n size=\"small\"\n value={draft}\n autoFocus={autoFocus}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n if (draft === \"\") onEscape?.();\n setDraft(\"\");\n return;\n }\n // Enter still commits IMMEDIATELY, ahead of the debounce — someone who\n // presses it has decided, and waiting out the timer reads as a stall.\n if (event.key !== \"Enter\") return;\n event.preventDefault();\n // The BOX, not `draft` — see {@link useKeywordDraft}.\n commitNow(event.target instanceof HTMLInputElement ? event.target.value : draft);\n }}\n placeholder={copy.search.placeholder}\n inputProps={{ \"aria-label\": copy.search.allColumnsLabel, \"data-testid\": testId }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon sx={{ fontSize: 16, color: \"text.secondary\" }} />\n </InputAdornment>\n ),\n endAdornment: draft ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label={copy.search.clear}\n data-testid={testId ? `${testId}-clear` : undefined}\n onClick={() => setDraft(\"\")}\n sx={{ p: 0.25 }}\n >\n <CloseIcon sx={{ fontSize: 14 }} />\n </IconButton>\n </InputAdornment>\n ) : undefined,\n }}\n // Takes the free space and gives it up first — step 3 of the ladder,\n // which needs no flag because flex does it (see `computeSplit`).\n sx={boxWidth(fill)}\n />\n );\n}\n\n/**\n * Step 4 of the ladder: the search as a magnifier.\n *\n * Carries a dot when a search is APPLIED. Collapsing a control that is\n * currently filtering the list, with nothing saying so, is how an operator ends\n * up staring at 3 rows of 214 and reading it as missing data.\n */\nexport function CollapsedSearch({\n active,\n onOpen,\n testId,\n}: {\n active: boolean;\n onOpen: () => void;\n testId?: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy();\n return (\n <IconButton\n size=\"small\"\n onClick={onOpen}\n aria-label={copy.search.open}\n aria-expanded={false}\n data-testid={testId ? `${testId}-collapsed` : undefined}\n sx={{\n position: \"relative\",\n border: 1,\n borderRadius: 1,\n borderColor: active ? \"primary.main\" : \"divider\",\n color: active ? \"primary.main\" : \"text.secondary\",\n bgcolor: active ? \"action.selected\" : \"background.paper\",\n }}\n >\n <SearchIcon sx={{ fontSize: 18 }} />\n {active && (\n <Box\n component=\"span\"\n sx={{\n position: \"absolute\",\n top: 2,\n right: 2,\n width: 6,\n height: 6,\n borderRadius: \"50%\",\n bgcolor: \"primary.main\",\n }}\n />\n )}\n </IconButton>\n );\n}\n\n"],"mappings":"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","names":["default"]}
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-YANLN6HP.js";
7
7
  import {
8
8
  Button
9
- } from "./chunk-YTOYMJPM.js";
9
+ } from "./chunk-SLVQ33AN.js";
10
10
  import {
11
11
  accentFor
12
12
  } from "./chunk-V5IOLAIS.js";
@@ -162,4 +162,4 @@ AppHeaderDetails.displayName = "AppHeaderDetails";
162
162
  export {
163
163
  AppHeaderDetails
164
164
  };
165
- //# sourceMappingURL=chunk-BUQ2JUND.js.map
165
+ //# sourceMappingURL=chunk-JO6BBSGY.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  DataViewsDisplayPanel
3
- } from "./chunk-SQNW22ZZ.js";
3
+ } from "./chunk-OV4WREMW.js";
4
4
  import {
5
5
  DataViewsExportMenu
6
- } from "./chunk-XUJG2HFW.js";
6
+ } from "./chunk-BH5BXLGI.js";
7
7
  import {
8
8
  renderBulkActions
9
- } from "./chunk-U2ZDN2AL.js";
9
+ } from "./chunk-2PBGVMM2.js";
10
10
  import {
11
11
  useDataViewsCopy
12
12
  } from "./chunk-KHG57NAE.js";
@@ -133,4 +133,4 @@ function GridToolbar(props) {
133
133
  export {
134
134
  GridToolbar
135
135
  };
136
- //# sourceMappingURL=chunk-4ZV7N5CU.js.map
136
+ //# sourceMappingURL=chunk-JXPHU3K5.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  DeleteViewDialog
3
- } from "./chunk-4X4KM4ZB.js";
3
+ } from "./chunk-ZZMZF7PZ.js";
4
4
  import {
5
5
  DataViewsGrid
6
- } from "./chunk-53PDVLRK.js";
6
+ } from "./chunk-E3PUH5IF.js";
7
7
  import {
8
8
  viewStateKey
9
9
  } from "./chunk-ZOLAYP2D.js";
10
10
  import {
11
11
  ViewDialogs,
12
12
  ViewMutationErrorAlert
13
- } from "./chunk-4T7TXRGM.js";
13
+ } from "./chunk-6ZY5XU4J.js";
14
14
  import {
15
15
  useSavedViewsController
16
16
  } from "./chunk-HR7YTBR7.js";
@@ -178,4 +178,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
178
178
  export {
179
179
  DataViewsTableBase
180
180
  };
181
- //# sourceMappingURL=chunk-ZXOT3U6U.js.map
181
+ //# sourceMappingURL=chunk-KFWIOFMS.js.map
@@ -2,7 +2,7 @@ import {
2
2
  buildGridColumns,
3
3
  buildRowActionsColumn,
4
4
  isActionsColumn
5
- } from "./chunk-U2ZDN2AL.js";
5
+ } from "./chunk-2PBGVMM2.js";
6
6
 
7
7
  // src/components/data-display/DataViews/data-views-columns.ts
8
8
  import { useMemo } from "react";
@@ -52,4 +52,4 @@ export {
52
52
  useColumnsWithActions,
53
53
  useRenderedColumns
54
54
  };
55
- //# sourceMappingURL=chunk-TW3BXVEU.js.map
55
+ //# sourceMappingURL=chunk-KMXAPYU2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-IDHZHOZW.js";
4
4
  import {
5
5
  Button
6
- } from "./chunk-YTOYMJPM.js";
6
+ } from "./chunk-SLVQ33AN.js";
7
7
 
8
8
  // src/components/data-display/CardKit/CardKebab.tsx
9
9
  import { jsx } from "react/jsx-runtime";
@@ -25,4 +25,4 @@ function CardKebab({
25
25
  export {
26
26
  CardKebab
27
27
  };
28
- //# sourceMappingURL=chunk-CJBBGMIA.js.map
28
+ //# sourceMappingURL=chunk-MNXVXW4T.js.map
@@ -7,14 +7,14 @@ import {
7
7
  } from "./chunk-EJQW2IYW.js";
8
8
  import {
9
9
  MoreFilters
10
- } from "./chunk-6LGWJFQK.js";
10
+ } from "./chunk-PFDM2OIP.js";
11
11
  import {
12
12
  RangePill
13
13
  } from "./chunk-DFLTUI7W.js";
14
14
  import {
15
15
  CollapsedSearch,
16
16
  InlineKeyword
17
- } from "./chunk-A7Q5AQVD.js";
17
+ } from "./chunk-HZVFAGLZ.js";
18
18
 
19
19
  // src/components/data-display/DataViews/data-views-inline-bar.tsx
20
20
  import Box from "@mui/material/Box/index.js";
@@ -220,4 +220,4 @@ function FilterSlots({
220
220
  export {
221
221
  InlineFilterControls
222
222
  };
223
- //# sourceMappingURL=chunk-I3E2QHTH.js.map
223
+ //# sourceMappingURL=chunk-NLJV4CPF.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-E55CJV65.js";
4
4
  import {
5
5
  SelectAllStrip
6
- } from "./chunk-XKV5ZIBG.js";
6
+ } from "./chunk-OGGPQVIG.js";
7
7
  import {
8
8
  ListCardGroup
9
9
  } from "./chunk-CZPU5TW3.js";
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-ZPIMPOHV.js";
17
17
  import {
18
18
  cardGridTracks
19
- } from "./chunk-U2ZDN2AL.js";
19
+ } from "./chunk-2PBGVMM2.js";
20
20
  import {
21
21
  useDataViewsCopy
22
22
  } from "./chunk-KHG57NAE.js";
@@ -264,4 +264,4 @@ function GridMain(props) {
264
264
  export {
265
265
  GridMain
266
266
  };
267
- //# sourceMappingURL=chunk-BPLFM2GL.js.map
267
+ //# sourceMappingURL=chunk-NYEA7JAI.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-6DPAWXZ3.js";
7
7
  import {
8
8
  Button
9
- } from "./chunk-YTOYMJPM.js";
9
+ } from "./chunk-SLVQ33AN.js";
10
10
  import {
11
11
  Text
12
12
  } from "./chunk-343TTIHD.js";
@@ -294,4 +294,4 @@ export {
294
294
  ViewHeader,
295
295
  ViewFooter
296
296
  };
297
- //# sourceMappingURL=chunk-O6AZDQJJ.js.map
297
+ //# sourceMappingURL=chunk-OE2ZVL67.js.map
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-AIRWM7KK.js";
14
14
  import {
15
15
  Button
16
- } from "./chunk-YTOYMJPM.js";
16
+ } from "./chunk-SLVQ33AN.js";
17
17
  import {
18
18
  Text
19
19
  } from "./chunk-343TTIHD.js";
@@ -174,4 +174,4 @@ export {
174
174
  SocialLoginButton,
175
175
  SocialLoginContainer
176
176
  };
177
- //# sourceMappingURL=chunk-4523RYE7.js.map
177
+ //# sourceMappingURL=chunk-OG2FP6SE.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-6DPAWXZ3.js";
7
7
  import {
8
8
  Button
9
- } from "./chunk-YTOYMJPM.js";
9
+ } from "./chunk-SLVQ33AN.js";
10
10
  import {
11
11
  Text
12
12
  } from "./chunk-343TTIHD.js";
@@ -85,4 +85,4 @@ function SelectAllStrip({
85
85
  export {
86
86
  SelectAllStrip
87
87
  };
88
- //# sourceMappingURL=chunk-XKV5ZIBG.js.map
88
+ //# sourceMappingURL=chunk-OGGPQVIG.js.map
@@ -10,7 +10,7 @@ import {
10
10
  ViewFooter,
11
11
  ViewHeader,
12
12
  ViewsList
13
- } from "./chunk-O6AZDQJJ.js";
13
+ } from "./chunk-OE2ZVL67.js";
14
14
  import {
15
15
  useDataViewsCopy
16
16
  } from "./chunk-KHG57NAE.js";
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-6DPAWXZ3.js";
20
20
  import {
21
21
  Button
22
- } from "./chunk-YTOYMJPM.js";
22
+ } from "./chunk-SLVQ33AN.js";
23
23
 
24
24
  // src/components/data-display/DataViews/data-views-display-panel.tsx
25
25
  import KeyboardArrowDownRoundedIcon from "@mui/icons-material/KeyboardArrowDownRounded";
@@ -261,4 +261,4 @@ function DataViewsDisplayPanel({
261
261
  export {
262
262
  DataViewsDisplayPanel
263
263
  };
264
- //# sourceMappingURL=chunk-SQNW22ZZ.js.map
264
+ //# sourceMappingURL=chunk-OV4WREMW.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-6DPAWXZ3.js";
11
11
  import {
12
12
  Button
13
- } from "./chunk-YTOYMJPM.js";
13
+ } from "./chunk-SLVQ33AN.js";
14
14
  import {
15
15
  Text
16
16
  } from "./chunk-343TTIHD.js";
@@ -180,4 +180,4 @@ function MoreFilters({
180
180
  export {
181
181
  MoreFilters
182
182
  };
183
- //# sourceMappingURL=chunk-6LGWJFQK.js.map
183
+ //# sourceMappingURL=chunk-PFDM2OIP.js.map
@@ -4,7 +4,10 @@ import {
4
4
  buttonVariantStyles,
5
5
  getColorFromTheme,
6
6
  iconAlignmentStyles
7
- } from "./chunk-JT6TERQL.js";
7
+ } from "./chunk-BB2OUERT.js";
8
+ import {
9
+ BUTTON_ICON_GLYPH_SIZE
10
+ } from "./chunk-5LQ7PKMW.js";
8
11
  import {
9
12
  resolveButtonProps
10
13
  } from "./chunk-TAMIZE4Q.js";
@@ -42,10 +45,15 @@ var muiVariantFor = (variant) => {
42
45
  if (variant === "outline") return "outlined";
43
46
  return variant === "text" ? "text" : "contained";
44
47
  };
48
+ var muiSizeFor = (size) => {
49
+ if (size === "xs" || size === "sm") return "small";
50
+ return size === "md" ? "medium" : "large";
51
+ };
45
52
  var muiColorFor = (color) => {
46
53
  if (color === "danger") return "error";
47
54
  return color === "neutral" ? "inherit" : color;
48
55
  };
56
+ var ICON_GLYPH_STYLE = { fontSize: BUTTON_ICON_GLYPH_SIZE };
49
57
  function isIconOnly({
50
58
  loading,
51
59
  icon,
@@ -53,7 +61,7 @@ function isIconOnly({
53
61
  }) {
54
62
  return !loading && icon != null && children == null;
55
63
  }
56
- var Button = React.forwardRef(
64
+ var ButtonRoot = React.forwardRef(
57
65
  (rawProps, ref) => {
58
66
  const {
59
67
  variant,
@@ -76,7 +84,7 @@ var Button = React.forwardRef(
76
84
  const ownTestId = resolveTestId(others, "button");
77
85
  const testId = (suffix) => childTestId(others, suffix, "button");
78
86
  const props = withoutTestIdProps(others);
79
- const iconWithTestId = !loading && icon ? /* @__PURE__ */ jsx("span", { "data-testid": testId("icon"), children: icon }) : void 0;
87
+ const iconWithTestId = !loading && icon ? /* @__PURE__ */ jsx("span", { "data-testid": testId("icon"), style: ICON_GLYPH_STYLE, children: icon }) : void 0;
80
88
  const iconOnly = isIconOnly({ loading, icon, children });
81
89
  const mergedClassName = [active ? "active" : "", props.className].filter(Boolean).join(" ") || void 0;
82
90
  return /* @__PURE__ */ jsx(
@@ -85,6 +93,7 @@ var Button = React.forwardRef(
85
93
  ref,
86
94
  variant: muiVariantFor(variant),
87
95
  color: muiColorFor(color),
96
+ size: muiSizeFor(size),
88
97
  customVariant: variant,
89
98
  customColor: color,
90
99
  glow,
@@ -106,9 +115,10 @@ var Button = React.forwardRef(
106
115
  );
107
116
  }
108
117
  );
109
- Button.displayName = "Button";
118
+ ButtonRoot.displayName = "Button";
119
+ var Button = ButtonRoot;
110
120
 
111
121
  export {
112
122
  Button
113
123
  };
114
- //# sourceMappingURL=chunk-YTOYMJPM.js.map
124
+ //# sourceMappingURL=chunk-SLVQ33AN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/Button/Button.tsx"],"sourcesContent":["import MuiButton from '@mui/material/Button/index.js';\nimport CircularProgress from '@mui/material/CircularProgress/index.js';\nimport { styled } from '@mui/material/styles/index.js';\nimport * as React from 'react';\n\nimport { resolveButtonProps } from './Button.helpers';\nimport { BUTTON_ICON_GLYPH_SIZE } from './Button.metrics';\nimport { childTestId, resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport {\n buttonEmphasisStyles,\n buttonVariantStyles,\n getColorFromTheme,\n iconAlignmentStyles,\n buttonSize,\n} from './Button.styles';\nimport type { ButtonComponent, ButtonProps } from './Button.types';\n\nconst StyledButton = styled(MuiButton, {\n shouldForwardProp: (prop) =>\n ['glow', 'pulse', 'loading', 'customVariant', 'customColor', 'ripple'].indexOf(\n prop as string,\n ) === -1,\n})<{\n customVariant?: string;\n customColor?: string;\n glow?: boolean;\n pulse?: boolean;\n ripple?: boolean;\n}>(({ theme, customVariant, customColor = 'primary', glow, pulse }) => {\n const colorPalette = getColorFromTheme(theme, customColor);\n\n return {\n textTransform: 'none',\n fontWeight: 500,\n borderRadius: theme.spacing(1),\n transition: 'all 0.3s ease',\n position: 'relative',\n overflow: 'hidden',\n ...iconAlignmentStyles(theme),\n ...buttonVariantStyles(theme, customVariant, colorPalette, customColor),\n ...buttonEmphasisStyles(colorPalette, glow, pulse),\n };\n});\n\n/** Our six variants collapse onto MUI's three; only outline and text differ. */\nconst muiVariantFor = (variant?: string): 'outlined' | 'text' | 'contained' => {\n if (variant === 'outline') return 'outlined';\n return variant === 'text' ? 'text' : 'contained';\n};\n\ntype MuiButtonColor = 'inherit' | 'primary' | 'secondary' | 'success' | 'warning' | 'info' | 'error';\n\n/**\n * Our five sizes collapse onto MUI's three, so the rendered class NAMES the\n * size the button actually is (12-74).\n *\n * It was never forwarded, so every button — `xs` through `xl` — carried\n * `MuiButton-sizeMedium`. The pixels were right (they come from `buttonSize`'s\n * `sx`, which still decides them) but the DOM said \"medium\" about a large\n * button: a test could never assert the size, and devtools lied to whoever\n * opened them.\n *\n * MUI's own size styles are padding, font-size and the icon glyph. The first\n * two are overridden by that same `sx`; the third is pinned by\n * `BUTTON_ICON_GLYPH_SIZE`, so forwarding this moves nothing on screen.\n */\nconst muiSizeFor = (size: NonNullable<ButtonProps['size']>): 'small' | 'medium' | 'large' => {\n if (size === 'xs' || size === 'sm') return 'small';\n return size === 'md' ? 'medium' : 'large';\n};\n\n/** `danger` and `neutral` are ours; the rest are MUI's own names already. */\nconst muiColorFor = (color: NonNullable<ButtonProps['color']>): MuiButtonColor => {\n if (color === 'danger') return 'error';\n return color === 'neutral' ? 'inherit' : color;\n};\n\n/**\n * The icon slot's font-size, pinned on the wrapper this component already owns\n * (12-74).\n *\n * MUI writes 18/20/22 there off its own `size`, and that prop is now forwarded,\n * so a glyph that takes its size by INHERITANCE would start moving with the\n * button — measured at 18px on `xs` and 22px on `lg` against the 20px every\n * size has always drawn. See {@link BUTTON_ICON_GLYPH_SIZE} for what that does\n * and does not reach.\n *\n * Written as an inline style rather than a selector in `sx` because MUI's own\n * rule sits on the start/end-icon span itself. Beating it from the root means\n * winning a specificity contest at a distance — true in a browser, but not\n * something a test can hold, since jsdom resolves `getComputedStyle` by\n * document order and never by specificity. Inline wins both, and it sits on the\n * one element we already render for this glyph.\n *\n * A number, not `px()`: React writes `font-size: 20px`, which is exactly the\n * declaration MUI was emitting before.\n */\nconst ICON_GLYPH_STYLE = { fontSize: BUTTON_ICON_GLYPH_SIZE } as const;\n\n/**\n * An icon and nothing else — the shape that should render square.\n *\n * A separate predicate rather than three clauses inline: the component function\n * is already at the complexity ceiling, and \"what counts as an icon button\" is\n * a rule worth naming anyway. `loading` disqualifies, because a spinner\n * replaces the children and would otherwise make every loading button square.\n */\nfunction isIconOnly({\n loading,\n icon,\n children,\n}: Pick<ButtonProps, 'loading' | 'icon' | 'children'>): boolean {\n return !loading && icon != null && children == null;\n}\n\n/**\n * The design system's button.\n *\n * Typed as an `OverridableComponent` (12-70) rather than a plain `forwardRef`,\n * which is how MUI models a component that can render as something else. The\n * practical difference is one line at a call site:\n *\n * ```tsx\n * <Button component={Link} to=\"/account/compras/42\">Acompanhar pedido</Button>\n * ```\n *\n * `to` is typed here because the generic carries the target component's own\n * props through. A plain `component?: React.ElementType` — what this was —\n * accepts the component and throws its props away, so `to` typechecked\n * nowhere even though it arrived intact at runtime. A host wanting a router\n * navigation painted as a button had to choose between a type assertion and\n * losing the `href`; both were shipped, and both are the reason this ticket\n * exists.\n */\nconst ButtonRoot = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (rawProps, ref) => {\n const {\n variant,\n color,\n size,\n loading,\n icon,\n iconPosition,\n glow,\n pulse,\n ripple,\n active,\n children,\n disabled,\n onClick,\n onFocus,\n onBlur,\n ...others\n } = resolveButtonProps(rawProps);\n // Every spelling of the test id the shared contract allows, mapped to the\n // one the DOM reads; the native Button does the same in reverse.\n const ownTestId = resolveTestId(others, 'button');\n const testId = (suffix: string) => childTestId(others, suffix, 'button');\n const props = withoutTestIdProps(others);\n\n // Wrap icon with testId if provided\n const iconWithTestId =\n !loading && icon ? (\n <span data-testid={testId('icon')} style={ICON_GLYPH_STYLE}>\n {icon}\n </span>\n ) : undefined;\n\n // Only an icon, so the button is a square rather than a 64px slab.\n const iconOnly = isIconOnly({ loading, icon, children });\n\n const mergedClassName =\n [active ? 'active' : '', props.className].filter(Boolean).join(' ') || undefined;\n\n return (\n <StyledButton\n ref={ref}\n variant={muiVariantFor(variant)}\n color={muiColorFor(color)}\n size={muiSizeFor(size)}\n customVariant={variant}\n customColor={color}\n glow={glow}\n pulse={pulse}\n ripple={ripple}\n disabled={disabled || loading}\n disableRipple={!ripple}\n startIcon={iconPosition === 'left' ? iconWithTestId : undefined}\n endIcon={iconPosition === 'right' ? iconWithTestId : undefined}\n onClick={onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n sx={buttonSize(size, iconOnly)}\n data-testid={ownTestId}\n {...props}\n className={mergedClassName}\n >\n {loading ? (\n <CircularProgress size={16} color=\"inherit\" data-testid={testId('loading')} />\n ) : (\n children\n )}\n </StyledButton>\n );\n },\n);\n\nButtonRoot.displayName = 'Button';\n\n/**\n * The cast is what publishes the generic — `forwardRef` cannot express\n * \"renders as C, and takes C's props\" on its own, so MUI's own components do\n * exactly this. `ButtonRoot` above is the implementation and is not exported.\n */\nexport const Button = ButtonRoot as ButtonComponent;\n"],"mappings":"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","names":[]}
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-6DPAWXZ3.js";
7
7
  import {
8
8
  Button
9
- } from "./chunk-YTOYMJPM.js";
9
+ } from "./chunk-SLVQ33AN.js";
10
10
  import {
11
11
  Text
12
12
  } from "./chunk-343TTIHD.js";
@@ -77,4 +77,4 @@ function DataViewsEmpty({
77
77
  export {
78
78
  DataViewsEmpty
79
79
  };
80
- //# sourceMappingURL=chunk-5OIH36KX.js.map
80
+ //# sourceMappingURL=chunk-V4FKHLEB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  GridToolbar
3
- } from "./chunk-4ZV7N5CU.js";
3
+ } from "./chunk-JXPHU3K5.js";
4
4
 
5
5
  // src/components/data-display/DataViews/data-views-shell-toolbar.tsx
6
6
  import { jsx } from "react/jsx-runtime";
@@ -64,4 +64,4 @@ function ShellToolbar({
64
64
  export {
65
65
  ShellToolbar
66
66
  };
67
- //# sourceMappingURL=chunk-EMMPNB6D.js.map
67
+ //# sourceMappingURL=chunk-X4Z62ZQY.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-4XK6JQ4D.js";
4
4
  import {
5
5
  Button
6
- } from "./chunk-YTOYMJPM.js";
6
+ } from "./chunk-SLVQ33AN.js";
7
7
 
8
8
  // src/components/form/total-form/SubmitButton.tsx
9
9
  import { jsx } from "react/jsx-runtime";
@@ -29,4 +29,4 @@ function SubmitButton({
29
29
  export {
30
30
  SubmitButton
31
31
  };
32
- //# sourceMappingURL=chunk-OP65D4UR.js.map
32
+ //# sourceMappingURL=chunk-XR6WBW23.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-WEBEOBN5.js";
11
11
  import {
12
12
  Button
13
- } from "./chunk-YTOYMJPM.js";
13
+ } from "./chunk-SLVQ33AN.js";
14
14
  import {
15
15
  Text
16
16
  } from "./chunk-343TTIHD.js";
@@ -69,4 +69,4 @@ function DeleteViewDialog({
69
69
  export {
70
70
  DeleteViewDialog
71
71
  };
72
- //# sourceMappingURL=chunk-4X4KM4ZB.js.map
72
+ //# sourceMappingURL=chunk-ZZMZF7PZ.js.map
@@ -17,14 +17,14 @@ import {
17
17
  } from "../chunk-SYJMI2NP.js";
18
18
  import {
19
19
  CardKebab
20
- } from "../chunk-CJBBGMIA.js";
20
+ } from "../chunk-MNXVXW4T.js";
21
21
  import {
22
22
  useRowConfirm
23
23
  } from "../chunk-3T2I6BYA.js";
24
24
  import "../chunk-WVML3ENZ.js";
25
25
  import "../chunk-IDHZHOZW.js";
26
26
  import "../chunk-XCBQXSTR.js";
27
- import "../chunk-NWNSUHEB.js";
27
+ import "../chunk-CT5K725B.js";
28
28
  import "../chunk-HJOABXKN.js";
29
29
  import "../chunk-3P4THDBM.js";
30
30
  import "../chunk-QQS3GQYS.js";
@@ -38,9 +38,9 @@ import "../chunk-BWB2MVWP.js";
38
38
  import "../chunk-TXKZEKJN.js";
39
39
  import "../chunk-6DPAWXZ3.js";
40
40
  import "../chunk-BA4RHQ3B.js";
41
- import "../chunk-YTOYMJPM.js";
42
- import "../chunk-JT6TERQL.js";
43
- import "../chunk-ITGG5OKP.js";
41
+ import "../chunk-SLVQ33AN.js";
42
+ import "../chunk-BB2OUERT.js";
43
+ import "../chunk-5LQ7PKMW.js";
44
44
  import "../chunk-TAMIZE4Q.js";
45
45
  import "../chunk-TYJR4GOF.js";
46
46
  import "../chunk-NQN5Z36J.js";