@hanzo/ui 8.0.60 → 8.0.62

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 (113) hide show
  1. package/dist/backends/gui/input.cjs +4 -3
  2. package/dist/backends/gui/input.d.ts +10 -2
  3. package/dist/backends/gui/input.d.ts.map +1 -1
  4. package/dist/backends/gui/input.js +4 -3
  5. package/dist/backends/gui/input.js.map +1 -1
  6. package/dist/backends/gui/mask.cjs +20 -0
  7. package/dist/backends/gui/mask.d.ts +17 -0
  8. package/dist/backends/gui/mask.d.ts.map +1 -0
  9. package/dist/backends/gui/mask.js +17 -0
  10. package/dist/backends/gui/mask.js.map +1 -0
  11. package/dist/chat/Code.cjs +1 -1
  12. package/dist/chat/Code.d.ts.map +1 -1
  13. package/dist/chat/Code.js +1 -1
  14. package/dist/chat/Code.js.map +1 -1
  15. package/dist/core/css.cjs +114 -0
  16. package/dist/core/css.d.ts +46 -0
  17. package/dist/core/css.d.ts.map +1 -0
  18. package/dist/core/css.js +112 -0
  19. package/dist/core/css.js.map +1 -0
  20. package/dist/product/CopyButton.cjs +16 -2
  21. package/dist/product/CopyButton.d.ts +30 -3
  22. package/dist/product/CopyButton.d.ts.map +1 -1
  23. package/dist/product/CopyButton.js +18 -4
  24. package/dist/product/CopyButton.js.map +1 -1
  25. package/dist/product/DataTable.cjs +4 -4
  26. package/dist/product/DataTable.js +4 -4
  27. package/dist/product/DataTable.js.map +1 -1
  28. package/dist/product/FadeIn.cjs +1 -1
  29. package/dist/product/FadeIn.js +1 -1
  30. package/dist/product/FadeIn.js.map +1 -1
  31. package/dist/product/Field.cjs +3 -3
  32. package/dist/product/Field.d.ts +21 -1
  33. package/dist/product/Field.d.ts.map +1 -1
  34. package/dist/product/Field.js +3 -3
  35. package/dist/product/Field.js.map +1 -1
  36. package/dist/product/Fieldset.cjs +10 -2
  37. package/dist/product/Fieldset.d.ts +12 -1
  38. package/dist/product/Fieldset.d.ts.map +1 -1
  39. package/dist/product/Fieldset.js +10 -2
  40. package/dist/product/Fieldset.js.map +1 -1
  41. package/dist/product/Metric.cjs +7 -4
  42. package/dist/product/Metric.d.ts +8 -1
  43. package/dist/product/Metric.d.ts.map +1 -1
  44. package/dist/product/Metric.js +7 -4
  45. package/dist/product/Metric.js.map +1 -1
  46. package/dist/product/Pagination.cjs +9 -49
  47. package/dist/product/Pagination.d.ts +2 -10
  48. package/dist/product/Pagination.d.ts.map +1 -1
  49. package/dist/product/Pagination.js +6 -46
  50. package/dist/product/Pagination.js.map +1 -1
  51. package/dist/product/Reorder.cjs +1 -1
  52. package/dist/product/Reorder.js +1 -1
  53. package/dist/product/Reorder.js.map +1 -1
  54. package/dist/product/SecretInput.cjs +3 -13
  55. package/dist/product/SecretInput.d.ts +2 -11
  56. package/dist/product/SecretInput.d.ts.map +1 -1
  57. package/dist/product/SecretInput.js +6 -11
  58. package/dist/product/SecretInput.js.map +1 -1
  59. package/dist/product/SlideOver.cjs +2 -2
  60. package/dist/product/SlideOver.js +2 -2
  61. package/dist/product/SlideOver.js.map +1 -1
  62. package/dist/product/StatusTag.cjs +10 -39
  63. package/dist/product/StatusTag.d.ts +6 -2
  64. package/dist/product/StatusTag.d.ts.map +1 -1
  65. package/dist/product/StatusTag.js +10 -39
  66. package/dist/product/StatusTag.js.map +1 -1
  67. package/dist/product/UserMenu.cjs +4 -10
  68. package/dist/product/UserMenu.d.ts +2 -3
  69. package/dist/product/UserMenu.d.ts.map +1 -1
  70. package/dist/product/UserMenu.js +5 -8
  71. package/dist/product/UserMenu.js.map +1 -1
  72. package/dist/product/animatedLogo.logic.cjs +1 -1
  73. package/dist/product/animatedLogo.logic.js +1 -1
  74. package/dist/product/brand.cjs +1 -1
  75. package/dist/product/brand.js +1 -1
  76. package/dist/product/combobox/filter.cjs +1 -1
  77. package/dist/product/combobox/filter.js +1 -1
  78. package/dist/product/index.cjs +14 -3
  79. package/dist/product/index.d.ts +1 -1
  80. package/dist/product/index.d.ts.map +1 -1
  81. package/dist/product/index.js +13 -1
  82. package/dist/product/index.js.map +1 -1
  83. package/dist/product/name.cjs +17 -0
  84. package/dist/product/name.d.ts +10 -0
  85. package/dist/product/name.d.ts.map +1 -0
  86. package/dist/product/name.js +15 -0
  87. package/dist/product/name.js.map +1 -0
  88. package/dist/product/pages.cjs +57 -0
  89. package/dist/product/pages.d.ts +28 -0
  90. package/dist/product/pages.d.ts.map +1 -0
  91. package/dist/product/pages.js +54 -0
  92. package/dist/product/pages.js.map +1 -0
  93. package/dist/product/pure.cjs +63 -0
  94. package/dist/product/pure.d.ts +9 -0
  95. package/dist/product/pure.d.ts.map +1 -0
  96. package/dist/product/pure.js +38 -0
  97. package/dist/product/pure.js.map +1 -0
  98. package/dist/product/scope.cjs +1 -1
  99. package/dist/product/scope.js +1 -1
  100. package/dist/product/social/SocialResource.cjs +1 -1
  101. package/dist/product/social/SocialResource.js +1 -1
  102. package/dist/product/social/SocialResource.js.map +1 -1
  103. package/dist/product/social/SocialSummaryBar.cjs +1 -1
  104. package/dist/product/social/SocialSummaryBar.js +1 -1
  105. package/dist/product/social/SocialSummaryBar.js.map +1 -1
  106. package/dist/product/tone.cjs +105 -0
  107. package/dist/product/tone.d.ts +52 -0
  108. package/dist/product/tone.d.ts.map +1 -0
  109. package/dist/product/tone.js +102 -0
  110. package/dist/product/tone.js.map +1 -0
  111. package/dist/styles/motion.css +52 -17
  112. package/dist/styles.css +53 -18
  113. package/package.json +35 -7
@@ -8,7 +8,7 @@ const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
8
8
  const instrument_1 = require("./instrument.cjs");
9
9
  /** Skeleton rows in the real column layout — an honest "loading", never a void. */
10
10
  function SkeletonRows({ columns, count = 6 }) {
11
- return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { children: Array.from({ length: count }).map((_, r) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", children: columns.map((c, i) => ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, items: c.align === 'right' ? 'flex-end' : 'flex-start', children: (0, jsx_runtime_1.jsx)("div", { className: "skeleton", style: { height: 12, borderRadius: 6, width: `${[62, 40, 54, 34, 48][(i + r) % 5]}%` }, "aria-hidden": true }) }, c.key))) }, r))) }));
11
+ return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { children: Array.from({ length: count }).map((_, r) => ((0, jsx_runtime_1.jsx)(gui_1.XStack, { py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", children: columns.map((c, i) => ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, items: c.align === 'right' ? 'flex-end' : 'flex-start', children: (0, jsx_runtime_1.jsx)("div", { className: "hz-skeleton", style: { height: 12, borderRadius: 6, width: `${[62, 40, 54, 34, 48][(i + r) % 5]}%` }, "aria-hidden": true }) }, c.key))) }, r))) }));
12
12
  }
13
13
  function DataTable({ columns, rows, loading, empty = 'Nothing here yet.', rowKey, onRowPress, isRowExpanded, renderExpanded, sort, onSortChange, }) {
14
14
  // Every table in the fleet reports the same two interactions with no app code.
@@ -31,10 +31,10 @@ function DataTable({ columns, rows, loading, empty = 'Nothing here yet.', rowKey
31
31
  track({ component: 'DataTable', action: 'sort', id: c.key, value: sort?.key === c.key && sort?.dir === 'asc' ? 'desc' : 'asc' });
32
32
  onSortChange?.(c.key);
33
33
  }
34
- : undefined, children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", fontWeight: "500", color: active ? '$color12' : '$color10', text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'tnum' : undefined, children: c.header }), Caret ? (0, jsx_runtime_1.jsx)(Caret, { size: 12, color: active ? '$color12' : '$color9' }) : null] }, c.key));
34
+ : undefined, children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", fontWeight: "500", color: active ? '$color12' : '$color10', text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'hz-tnum' : undefined, children: c.header }), Caret ? (0, jsx_runtime_1.jsx)(Caret, { size: 12, color: active ? '$color12' : '$color9' }) : null] }, c.key));
35
35
  }) }), loading ? ((0, jsx_runtime_1.jsx)(SkeletonRows, { columns: columns })) : rows.length > 0 ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { children: rows.map((row) => {
36
36
  const expanded = (isRowExpanded?.(row) ?? false) && !!renderExpanded;
37
- return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { children: [(0, jsx_runtime_1.jsx)(gui_1.XStack, { className: "row", py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", bg: expanded ? '$color2' : undefined, hoverStyle: onRowPress ? { bg: '$color2' } : undefined, cursor: onRowPress ? 'pointer' : undefined, onPress: onRowPress
37
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { children: [(0, jsx_runtime_1.jsx)(gui_1.XStack, { className: "hz-row", py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", bg: expanded ? '$color2' : undefined, hoverStyle: onRowPress ? { bg: '$color2' } : undefined, cursor: onRowPress ? 'pointer' : undefined, onPress: onRowPress
38
38
  ? () => {
39
39
  track({ component: 'DataTable', action: 'select', id: rowKey(row), value: rows.length });
40
40
  onRowPress(row);
@@ -49,7 +49,7 @@ function DataTable({ columns, rows, loading, empty = 'Nothing here yet.', rowKey
49
49
  // and always picks up the numeric mono/align styling. Element
50
50
  // renders (Text/badges/cells) pass through untouched.
51
51
  const cell = c.render ? c.render(row) : String(row[c.key] ?? '');
52
- return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, justify: "center", items: c.align === 'right' ? 'flex-end' : 'flex-start', children: typeof cell === 'string' || typeof cell === 'number' ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", numberOfLines: 1, color: "$color12", text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'mono' : undefined, children: cell })) : (cell) }, c.key));
52
+ return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, justify: "center", items: c.align === 'right' ? 'flex-end' : 'flex-start', children: typeof cell === 'string' || typeof cell === 'number' ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", numberOfLines: 1, color: "$color12", text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'hz-mono' : undefined, children: cell })) : (cell) }, c.key));
53
53
  }) }), expanded && renderExpanded ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { borderTopWidth: 1, borderColor: "$borderColor", bg: "$color1", children: renderExpanded(row) })) : null] }, rowKey(row)));
54
54
  }) })) : null] }) }), !loading && rows.length === 0 ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { py: "$8", px: "$4", items: "center", gap: "$1", borderTopWidth: 1, borderColor: "$borderColor", children: (0, jsx_runtime_1.jsx)(gui_1.Text, { color: "$color10", fontSize: "$3", text: "center", children: empty }) })) : null] }));
55
55
  }
@@ -5,7 +5,7 @@ import { ChevronDown, ChevronsUpDown, ChevronUp } from '@hanzogui/lucide-icons-2
5
5
  import { useEmit } from './instrument.js';
6
6
  /** Skeleton rows in the real column layout — an honest "loading", never a void. */
7
7
  function SkeletonRows({ columns, count = 6 }) {
8
- return (_jsx(YStack, { children: Array.from({ length: count }).map((_, r) => (_jsx(XStack, { py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", children: columns.map((c, i) => (_jsx(YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, items: c.align === 'right' ? 'flex-end' : 'flex-start', children: _jsx("div", { className: "skeleton", style: { height: 12, borderRadius: 6, width: `${[62, 40, 54, 34, 48][(i + r) % 5]}%` }, "aria-hidden": true }) }, c.key))) }, r))) }));
8
+ return (_jsx(YStack, { children: Array.from({ length: count }).map((_, r) => (_jsx(XStack, { py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", children: columns.map((c, i) => (_jsx(YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, items: c.align === 'right' ? 'flex-end' : 'flex-start', children: _jsx("div", { className: "hz-skeleton", style: { height: 12, borderRadius: 6, width: `${[62, 40, 54, 34, 48][(i + r) % 5]}%` }, "aria-hidden": true }) }, c.key))) }, r))) }));
9
9
  }
10
10
  export function DataTable({ columns, rows, loading, empty = 'Nothing here yet.', rowKey, onRowPress, isRowExpanded, renderExpanded, sort, onSortChange, }) {
11
11
  // Every table in the fleet reports the same two interactions with no app code.
@@ -28,10 +28,10 @@ export function DataTable({ columns, rows, loading, empty = 'Nothing here yet.',
28
28
  track({ component: 'DataTable', action: 'sort', id: c.key, value: sort?.key === c.key && sort?.dir === 'asc' ? 'desc' : 'asc' });
29
29
  onSortChange?.(c.key);
30
30
  }
31
- : undefined, children: [_jsx(Text, { fontSize: "$1", fontWeight: "500", color: active ? '$color12' : '$color10', text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'tnum' : undefined, children: c.header }), Caret ? _jsx(Caret, { size: 12, color: active ? '$color12' : '$color9' }) : null] }, c.key));
31
+ : undefined, children: [_jsx(Text, { fontSize: "$1", fontWeight: "500", color: active ? '$color12' : '$color10', text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'hz-tnum' : undefined, children: c.header }), Caret ? _jsx(Caret, { size: 12, color: active ? '$color12' : '$color9' }) : null] }, c.key));
32
32
  }) }), loading ? (_jsx(SkeletonRows, { columns: columns })) : rows.length > 0 ? (_jsx(YStack, { children: rows.map((row) => {
33
33
  const expanded = (isRowExpanded?.(row) ?? false) && !!renderExpanded;
34
- return (_jsxs(YStack, { children: [_jsx(XStack, { className: "row", py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", bg: expanded ? '$color2' : undefined, hoverStyle: onRowPress ? { bg: '$color2' } : undefined, cursor: onRowPress ? 'pointer' : undefined, onPress: onRowPress
34
+ return (_jsxs(YStack, { children: [_jsx(XStack, { className: "hz-row", py: "$2.5", px: "$3", gap: "$3", borderTopWidth: 1, borderColor: "$borderColor", items: "center", bg: expanded ? '$color2' : undefined, hoverStyle: onRowPress ? { bg: '$color2' } : undefined, cursor: onRowPress ? 'pointer' : undefined, onPress: onRowPress
35
35
  ? () => {
36
36
  track({ component: 'DataTable', action: 'select', id: rowKey(row), value: rows.length });
37
37
  onRowPress(row);
@@ -46,7 +46,7 @@ export function DataTable({ columns, rows, loading, empty = 'Nothing here yet.',
46
46
  // and always picks up the numeric mono/align styling. Element
47
47
  // renders (Text/badges/cells) pass through untouched.
48
48
  const cell = c.render ? c.render(row) : String(row[c.key] ?? '');
49
- return (_jsx(YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, justify: "center", items: c.align === 'right' ? 'flex-end' : 'flex-start', children: typeof cell === 'string' || typeof cell === 'number' ? (_jsx(Text, { fontSize: "$3", numberOfLines: 1, color: "$color12", text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'mono' : undefined, children: cell })) : (cell) }, c.key));
49
+ return (_jsx(YStack, { width: c.width, flex: c.width ? undefined : 1, minW: c.width ? undefined : FLEX_MIN_COL_W, justify: "center", items: c.align === 'right' ? 'flex-end' : 'flex-start', children: typeof cell === 'string' || typeof cell === 'number' ? (_jsx(Text, { fontSize: "$3", numberOfLines: 1, color: "$color12", text: c.align === 'right' ? 'right' : 'left', className: c.mono ? 'hz-mono' : undefined, children: cell })) : (cell) }, c.key));
50
50
  }) }), expanded && renderExpanded ? (_jsx(YStack, { borderTopWidth: 1, borderColor: "$borderColor", bg: "$color1", children: renderExpanded(row) })) : null] }, rowKey(row)));
51
51
  }) })) : null] }) }), !loading && rows.length === 0 ? (_jsx(YStack, { py: "$8", px: "$4", items: "center", gap: "$1", borderTopWidth: 1, borderColor: "$borderColor", children: _jsx(Text, { color: "$color10", fontSize: "$3", text: "center", children: empty }) })) : null] }));
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../src/product/DataTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../src/product/DataTable.tsx"],"names":[],"mappings":"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"}
@@ -5,5 +5,5 @@ exports.FadeIn = FadeIn;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  function FadeIn({ children, index = 0, step = 50, delayMs, style, }) {
7
7
  const delay = delayMs ?? index * step;
8
- return ((0, jsx_runtime_1.jsx)("div", { className: "fade-up", style: { animationDelay: `${delay}ms`, ...style }, children: children }));
8
+ return ((0, jsx_runtime_1.jsx)("div", { className: "hz-fade-up", style: { animationDelay: `${delay}ms`, ...style }, children: children }));
9
9
  }
@@ -2,6 +2,6 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  export function FadeIn({ children, index = 0, step = 50, delayMs, style, }) {
4
4
  const delay = delayMs ?? index * step;
5
- return (_jsx("div", { className: "fade-up", style: { animationDelay: `${delay}ms`, ...style }, children: children }));
5
+ return (_jsx("div", { className: "hz-fade-up", style: { animationDelay: `${delay}ms`, ...style }, children: children }));
6
6
  }
7
7
  //# sourceMappingURL=FadeIn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FadeIn.js","sourceRoot":"","sources":["../../src/product/FadeIn.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAcZ,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,IAAI,GAAG,EAAE,EACT,OAAO,EACP,KAAK,GAWN;IACC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,CAAA;IACrC,OAAO,CACL,cAAK,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,EAAE,cAAc,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,YACvE,QAAQ,GACL,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"FadeIn.js","sourceRoot":"","sources":["../../src/product/FadeIn.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAcZ,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,IAAI,GAAG,EAAE,EACT,OAAO,EACP,KAAK,GAWN;IACC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,CAAA;IACrC,OAAO,CACL,cAAK,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,cAAc,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,YAC1E,QAAQ,GACL,CACP,CAAA;AACH,CAAC"}
@@ -18,7 +18,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
18
18
  const react_1 = require("react");
19
19
  const gui_1 = require("@hanzo/gui");
20
20
  const instrument_1 = require("./instrument.cjs");
21
- const SecretInput_1 = require("./SecretInput.cjs");
21
+ const mask_1 = require("../backends/gui/mask.cjs");
22
22
  // The label the caller ALREADY typed on the FieldRow becomes the analytics name —
23
23
  // so an app never labels a field twice and no field reports as "unnamed".
24
24
  const FieldNameContext = (0, react_1.createContext)(undefined);
@@ -37,12 +37,12 @@ function useFieldTrack(component) {
37
37
  function FieldRow({ label, children }) {
38
38
  return ((0, jsx_runtime_1.jsx)(FieldNameContext.Provider, { value: label, children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$3", items: "flex-start", flexWrap: "wrap", children: [(0, jsx_runtime_1.jsx)(gui_1.Label, { width: "100%", pt: "$2", color: "$color11", fontSize: "$3", "$md": { width: 180 }, children: label }), (0, jsx_runtime_1.jsx)(gui_1.YStack, { flex: 1, minW: 0, "$md": { minW: 240 }, children: children })] }) }));
39
39
  }
40
- function FieldText({ value, onChange, disabled, secure, placeholder, }) {
40
+ function FieldText({ value, onChange, disabled, secure, placeholder, autoComplete, id, }) {
41
41
  const track = useFieldTrack('FieldText');
42
42
  return ((0, jsx_runtime_1.jsx)(gui_1.Input, { value: value, onChangeText: (v) => {
43
43
  track({ action: 'change', value: secure ? 0 : (0, instrument_1.textSize)(v) });
44
44
  onChange(v);
45
- }, disabled: disabled, ...(0, SecretInput_1.masked)(Boolean(secure)), placeholder: placeholder, autoCapitalize: "none" }));
45
+ }, disabled: disabled, ...(0, mask_1.masked)(Boolean(secure)), placeholder: placeholder, autoComplete: autoComplete, id: id, autoCapitalize: "none" }));
46
46
  }
47
47
  function FieldTextArea({ value, onChange, disabled, rows = 6, }) {
48
48
  const track = useFieldTrack('FieldTextArea');
@@ -15,12 +15,32 @@ export declare function FieldRow({ label, children }: {
15
15
  label: string;
16
16
  children: ReactNode;
17
17
  }): import("react/jsx-runtime").JSX.Element;
18
- export declare function FieldText({ value, onChange, disabled, secure, placeholder, }: {
18
+ export declare function FieldText({ value, onChange, disabled, secure, placeholder, autoComplete, id, }: {
19
19
  value: string;
20
20
  onChange: (v: string) => void;
21
21
  disabled?: boolean;
22
22
  secure?: boolean;
23
23
  placeholder?: string;
24
+ /**
25
+ * What the browser may fill this with — "email", "current-password",
26
+ * "one-time-code", or "off". A sign-in form built out of these rows could not
27
+ * say it, so password managers had nothing to go on: they either filled
28
+ * nothing or filled the wrong row, and every surface that cared dropped back
29
+ * to a raw `<input>` to get the one attribute.
30
+ */
31
+ autoComplete?: string;
32
+ /**
33
+ * The field's DOM id — what an external `<label for>` points at, and the
34
+ * second thing autofill reads after `autoComplete`.
35
+ *
36
+ * There is deliberately no `name`. `name` is @hanzo/gui's OWN prop (it names a
37
+ * styled component and a theme) and it is consumed before it can reach the
38
+ * DOM — measured, not assumed. Accepting one here would type-check, render
39
+ * nothing, and leave a caller believing their form posts a field it does not.
40
+ * `autoComplete` is the attribute that actually drives autofill; these rows
41
+ * are controlled React fields, so nothing depends on a native form post.
42
+ */
43
+ id?: string;
24
44
  }): import("react/jsx-runtime").JSX.Element;
25
45
  export declare function FieldTextArea({ value, onChange, disabled, rows, }: {
26
46
  value: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/product/Field.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AA2BrF;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAanF;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,2CAkBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,2CAaA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CAeA;AA0CD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAuB,GACxB,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,2CA4BA;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CA0BA"}
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/product/Field.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AA2BrF;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAanF;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,YAAY,EACZ,EAAE,GACH,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;OAUG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,2CAoBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,2CAaA;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CAeA;AA0CD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAuB,GACxB,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,2CA4BA;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,2CA0BA"}
@@ -10,7 +10,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  import { createContext, useContext } from 'react';
11
11
  import { Input, Label, Switch, TextArea, Slider, Text, XStack, YStack, } from '@hanzo/gui';
12
12
  import { textSize, useEmit } from './instrument.js';
13
- import { masked } from './SecretInput.js';
13
+ import { masked } from '../backends/gui/mask.js';
14
14
  // The label the caller ALREADY typed on the FieldRow becomes the analytics name —
15
15
  // so an app never labels a field twice and no field reports as "unnamed".
16
16
  const FieldNameContext = createContext(undefined);
@@ -29,12 +29,12 @@ function useFieldTrack(component) {
29
29
  export function FieldRow({ label, children }) {
30
30
  return (_jsx(FieldNameContext.Provider, { value: label, children: _jsxs(XStack, { gap: "$3", items: "flex-start", flexWrap: "wrap", children: [_jsx(Label, { width: "100%", pt: "$2", color: "$color11", fontSize: "$3", "$md": { width: 180 }, children: label }), _jsx(YStack, { flex: 1, minW: 0, "$md": { minW: 240 }, children: children })] }) }));
31
31
  }
32
- export function FieldText({ value, onChange, disabled, secure, placeholder, }) {
32
+ export function FieldText({ value, onChange, disabled, secure, placeholder, autoComplete, id, }) {
33
33
  const track = useFieldTrack('FieldText');
34
34
  return (_jsx(Input, { value: value, onChangeText: (v) => {
35
35
  track({ action: 'change', value: secure ? 0 : textSize(v) });
36
36
  onChange(v);
37
- }, disabled: disabled, ...masked(Boolean(secure)), placeholder: placeholder, autoCapitalize: "none" }));
37
+ }, disabled: disabled, ...masked(Boolean(secure)), placeholder: placeholder, autoComplete: autoComplete, id: id, autoCapitalize: "none" }));
38
38
  }
39
39
  export function FieldTextArea({ value, onChange, disabled, rows = 6, }) {
40
40
  const track = useFieldTrack('FieldTextArea');
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/product/Field.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/product/Field.tsx"],"names":[],"mappings":"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"}
@@ -4,9 +4,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Fieldset = Fieldset;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const gui_1 = require("@hanzo/gui");
7
- function Fieldset({ title, icon, description, action, danger, children }) {
7
+ function Fieldset({ title, icon, description, action, danger, grow = false, minW = 280, children, }) {
8
8
  const edge = danger ? '$red9' : '$borderColor';
9
- return ((0, jsx_runtime_1.jsxs)(gui_1.YStack, { width: "100%", p: "$4", gap: "$3", rounded: "$4", borderWidth: 1, borderColor: edge, bg: "$color2", children: [title || action ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", justify: "space-between", flexWrap: "wrap", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", flex: 1, minW: 0, children: [icon, title ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "500", color: danger ? '$red10' : '$color12', children: title })) : null] }), action] })) : null, description ? (
9
+ return ((0, jsx_runtime_1.jsxs)(gui_1.YStack
10
+ // Full width when it owns the line; flexing with a floor when it shares
11
+ // one. Setting both `width: 100%` and `flex: 1` makes the group overflow
12
+ // its row by its own gap, so it is one or the other.
13
+ , {
14
+ // Full width when it owns the line; flexing with a floor when it shares
15
+ // one. Setting both `width: 100%` and `flex: 1` makes the group overflow
16
+ // its row by its own gap, so it is one or the other.
17
+ width: grow ? undefined : '100%', flex: grow ? 1 : undefined, minW: grow ? minW : 0, p: "$4", gap: "$3", rounded: "$4", borderWidth: 1, borderColor: edge, bg: "$color2", children: [title || action ? ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", justify: "space-between", flexWrap: "wrap", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", flex: 1, minW: 0, children: [icon, title ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "500", color: danger ? '$red10' : '$color12', children: title })) : null] }), action] })) : null, description ? (
10
18
  // Sits under the legend, not beside it: a description that shares the
11
19
  // line with the title competes with it and wraps first on a phone.
12
20
  (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", children: description })) : null, (0, jsx_runtime_1.jsx)(gui_1.YStack, { gap: "$3", children: children })] }));
@@ -29,7 +29,18 @@ export type FieldsetProps = {
29
29
  action?: ReactNode;
30
30
  /** The destructive register — irreversible actions only. */
31
31
  danger?: boolean;
32
+ /**
33
+ * Share the width of a ROW of groups instead of taking all of it. Default
34
+ * false, which is the settings page: one group per line, full width.
35
+ *
36
+ * A settings page is a column, but a settings TAB is often two — "Profile"
37
+ * beside "Password", "Region" beside "Limits" — and a group with no way to
38
+ * flex forced every such layout to wrap the group in a sizing box of its own.
39
+ */
40
+ grow?: boolean;
41
+ /** Floor for the group's width when it is sharing a row. Default 280. */
42
+ minW?: number;
32
43
  children: ReactNode;
33
44
  };
34
- export declare function Fieldset({ title, icon, description, action, danger, children }: FieldsetProps): import("react/jsx-runtime").JSX.Element;
45
+ export declare function Fieldset({ title, icon, description, action, danger, grow, minW, children, }: FieldsetProps): import("react/jsx-runtime").JSX.Element;
35
46
  //# sourceMappingURL=Fieldset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fieldset.d.ts","sourceRoot":"","sources":["../../src/product/Fieldset.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,MAAM,MAAM,aAAa,GAAG;IAC1B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAqC7F"}
1
+ {"version":3,"file":"Fieldset.d.ts","sourceRoot":"","sources":["../../src/product/Fieldset.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,MAAM,MAAM,aAAa,GAAG;IAC1B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,WAAW,EACX,MAAM,EACN,MAAM,EACN,IAAY,EACZ,IAAU,EACV,QAAQ,GACT,EAAE,aAAa,2CA0Cf"}
@@ -1,9 +1,17 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Text, XStack, YStack } from '@hanzo/gui';
4
- export function Fieldset({ title, icon, description, action, danger, children }) {
4
+ export function Fieldset({ title, icon, description, action, danger, grow = false, minW = 280, children, }) {
5
5
  const edge = danger ? '$red9' : '$borderColor';
6
- return (_jsxs(YStack, { width: "100%", p: "$4", gap: "$3", rounded: "$4", borderWidth: 1, borderColor: edge, bg: "$color2", children: [title || action ? (_jsxs(XStack, { items: "center", gap: "$2", justify: "space-between", flexWrap: "wrap", children: [_jsxs(XStack, { items: "center", gap: "$2", flex: 1, minW: 0, children: [icon, title ? (_jsx(Text, { fontSize: "$3", fontWeight: "500", color: danger ? '$red10' : '$color12', children: title })) : null] }), action] })) : null, description ? (
6
+ return (_jsxs(YStack
7
+ // Full width when it owns the line; flexing with a floor when it shares
8
+ // one. Setting both `width: 100%` and `flex: 1` makes the group overflow
9
+ // its row by its own gap, so it is one or the other.
10
+ , {
11
+ // Full width when it owns the line; flexing with a floor when it shares
12
+ // one. Setting both `width: 100%` and `flex: 1` makes the group overflow
13
+ // its row by its own gap, so it is one or the other.
14
+ width: grow ? undefined : '100%', flex: grow ? 1 : undefined, minW: grow ? minW : 0, p: "$4", gap: "$3", rounded: "$4", borderWidth: 1, borderColor: edge, bg: "$color2", children: [title || action ? (_jsxs(XStack, { items: "center", gap: "$2", justify: "space-between", flexWrap: "wrap", children: [_jsxs(XStack, { items: "center", gap: "$2", flex: 1, minW: 0, children: [icon, title ? (_jsx(Text, { fontSize: "$3", fontWeight: "500", color: danger ? '$red10' : '$color12', children: title })) : null] }), action] })) : null, description ? (
7
15
  // Sits under the legend, not beside it: a description that shares the
8
16
  // line with the title competes with it and wraps first on a phone.
9
17
  _jsx(Text, { fontSize: "$2", color: "$color11", children: description })) : null, _jsx(YStack, { gap: "$3", children: children })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"Fieldset.js","sourceRoot":"","sources":["../../src/product/Fieldset.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAsBZ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAgBjD,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAiB;IAC5F,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAA;IAC9C,OAAO,CACL,MAAC,MAAM,IACL,KAAK,EAAC,MAAM,EACZ,CAAC,EAAC,IAAI,EACN,GAAG,EAAC,IAAI,EACR,OAAO,EAAC,IAAI,EACZ,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,IAAI,EACjB,EAAE,EAAC,SAAS,aAEX,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CACjB,MAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,OAAO,EAAC,eAAe,EAAC,QAAQ,EAAC,MAAM,aACrE,MAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,aAC7C,IAAI,EACJ,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,YACvE,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,IACD,EACR,MAAM,IACA,CACV,CAAC,CAAC,CAAC,IAAI,EAEP,WAAW,CAAC,CAAC,CAAC;YACb,sEAAsE;YACtE,mEAAmE;YACnE,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,UAAU,YACjC,WAAW,GACP,CACR,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,MAAM,IAAC,GAAG,EAAC,IAAI,YAAE,QAAQ,GAAU,IAC7B,CACV,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Fieldset.js","sourceRoot":"","sources":["../../src/product/Fieldset.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAsBZ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AA2BjD,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,WAAW,EACX,MAAM,EACN,MAAM,EACN,IAAI,GAAG,KAAK,EACZ,IAAI,GAAG,GAAG,EACV,QAAQ,GACM;IACd,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAA;IAC9C,OAAO,CACL,MAAC,MAAM;IACL,wEAAwE;IACxE,yEAAyE;IACzE,qDAAqD;;QAFrD,wEAAwE;QACxE,yEAAyE;QACzE,qDAAqD;QACrD,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAChC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EACrB,CAAC,EAAC,IAAI,EACN,GAAG,EAAC,IAAI,EACR,OAAO,EAAC,IAAI,EACZ,WAAW,EAAE,CAAC,EACd,WAAW,EAAE,IAAI,EACjB,EAAE,EAAC,SAAS,aAEX,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CACjB,MAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,OAAO,EAAC,eAAe,EAAC,QAAQ,EAAC,MAAM,aACrE,MAAC,MAAM,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,aAC7C,IAAI,EACJ,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,YACvE,KAAK,GACD,CACR,CAAC,CAAC,CAAC,IAAI,IACD,EACR,MAAM,IACA,CACV,CAAC,CAAC,CAAC,IAAI,EAEP,WAAW,CAAC,CAAC,CAAC;YACb,sEAAsE;YACtE,mEAAmE;YACnE,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,UAAU,YACjC,WAAW,GACP,CACR,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,MAAM,IAAC,GAAG,EAAC,IAAI,YAAE,QAAQ,GAAU,IAC7B,CACV,CAAA;AACH,CAAC"}
@@ -63,7 +63,7 @@ function UtilBar({ value, width = 120, color }) {
63
63
  }
64
64
  /** A legend row: color swatch + label + value. */
65
65
  function LegendDot({ color, label, value }) {
66
- return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", justify: "space-between", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { width: 10, height: 10, rounded: "$1", bg: color }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", children: label })] }), value != null ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color12", fontWeight: "500", className: "mono", children: value })) : null] }));
66
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", justify: "space-between", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { width: 10, height: 10, rounded: "$1", bg: color }), (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", children: label })] }), value != null ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color12", fontWeight: "500", className: "hz-mono", children: value })) : null] }));
67
67
  }
68
68
  /**
69
69
  * One overview metric tile. `value` is pre-formatted by the caller (so an absent
@@ -72,7 +72,7 @@ function LegendDot({ color, label, value }) {
72
72
  */
73
73
  function MetricCard({ icon, label, value, caption, spark, sparkColor, delta, }) {
74
74
  const up = delta ? delta.pct >= 0 : false;
75
- return ((0, jsx_runtime_1.jsxs)(gui_1.Card, { p: "$3.5", gap: "$2", borderWidth: 1, borderColor: "$borderColor", flex: 1, minW: 172, children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", justify: "space-between", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", children: [icon, (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", fontWeight: "500", children: label })] }), delta ? ((0, jsx_runtime_1.jsxs)(gui_1.Text, { fontSize: "$1", color: up ? '#7ee787' : '#e5534b', children: [up ? '▲' : '▼', " ", Math.abs(delta.pct), "%"] })) : null] }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "flex-end", justify: "space-between", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$8", fontWeight: "500", color: "$color12", numberOfLines: 1, className: "mono", children: value }), spark && spark.length >= 2 ? (0, jsx_runtime_1.jsx)(Sparkline, { points: spark, color: sparkColor ?? exports.SERIES[0] }) : null] }), caption ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$color10", numberOfLines: 1, children: caption })) : null] }));
75
+ return ((0, jsx_runtime_1.jsxs)(gui_1.Card, { p: "$3.5", gap: "$2", borderWidth: 1, borderColor: "$borderColor", flex: 1, minW: 172, children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", justify: "space-between", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", children: [icon, (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", fontWeight: "500", children: label })] }), delta ? ((0, jsx_runtime_1.jsxs)(gui_1.Text, { fontSize: "$1", color: up ? '#7ee787' : '#e5534b', children: [up ? '▲' : '▼', " ", Math.abs(delta.pct), "%"] })) : null] }), (0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "flex-end", justify: "space-between", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$8", fontWeight: "500", color: "$color12", numberOfLines: 1, className: "hz-mono", children: value }), spark && spark.length >= 2 ? (0, jsx_runtime_1.jsx)(Sparkline, { points: spark, color: sparkColor ?? exports.SERIES[0] }) : null] }), caption ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$1", color: "$color10", numberOfLines: 1, children: caption })) : null] }));
76
76
  }
77
77
  /**
78
78
  * A button that is either a real action (onPress) or HONESTLY disabled with a
@@ -91,6 +91,9 @@ function HintButton({ icon, iconAfter, children, onPress, disabled, hint, theme,
91
91
  * inside a vertical rail (a column YStack) so each panel sizes to its content and
92
92
  * stacks — flex-grow in a column with no fixed height collapses them onto each other.
93
93
  */
94
- function Panel({ title, right, children, minW = 280, grow = true, }) {
95
- return ((0, jsx_runtime_1.jsxs)(gui_1.Card, { p: "$4", gap: "$3", borderWidth: 1, borderColor: "$borderColor", flex: grow ? 1 : undefined, minW: minW, width: grow ? undefined : '100%', children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "space-between", gap: "$2", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$4", fontWeight: "500", color: "$color12", children: title }), right] }), children] }));
94
+ function Panel({ title, icon, description, right, children, minW = 280, grow = true, }) {
95
+ return ((0, jsx_runtime_1.jsxs)(gui_1.Card, { p: "$4", gap: "$3", borderWidth: 1, borderColor: "$borderColor", flex: grow ? 1 : undefined, minW: minW, width: grow ? undefined : '100%', children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "space-between", gap: "$2", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", flex: 1, minW: 0, children: [icon, (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$4", fontWeight: "500", color: "$color12", children: title })] }), right] }), description ? (
96
+ // Under the title, not beside it: a description sharing the line with a
97
+ // right-hand control is the first thing to wrap on a phone.
98
+ (0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", children: description })) : null, children] }));
96
99
  }
@@ -93,8 +93,15 @@ export declare function HintButton({ icon, iconAfter, children, onPress, disable
93
93
  * inside a vertical rail (a column YStack) so each panel sizes to its content and
94
94
  * stacks — flex-grow in a column with no fixed height collapses them onto each other.
95
95
  */
96
- export declare function Panel({ title, right, children, minW, grow, }: {
96
+ export declare function Panel({ title, icon, description, right, children, minW, grow, }: {
97
97
  title: string;
98
+ /** Glyph before the title, at the title's own size. Names the panel's subject
99
+ * at a glance in a wall of them. */
100
+ icon?: ReactNode;
101
+ /** One line under the title saying what the panel shows — units, window,
102
+ * source. A number is not self-describing, and the caption every console
103
+ * wanted was being smuggled in as the first child. */
104
+ description?: string;
98
105
  right?: ReactNode;
99
106
  children: ReactNode;
100
107
  minW?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"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"}
@@ -51,7 +51,7 @@ export function UtilBar({ value, width = 120, color }) {
51
51
  }
52
52
  /** A legend row: color swatch + label + value. */
53
53
  export function LegendDot({ color, label, value }) {
54
- return (_jsxs(XStack, { items: "center", gap: "$2", justify: "space-between", children: [_jsxs(XStack, { items: "center", gap: "$2", children: [_jsx(YStack, { width: 10, height: 10, rounded: "$1", bg: color }), _jsx(Text, { fontSize: "$2", color: "$color11", children: label })] }), value != null ? (_jsx(Text, { fontSize: "$2", color: "$color12", fontWeight: "500", className: "mono", children: value })) : null] }));
54
+ return (_jsxs(XStack, { items: "center", gap: "$2", justify: "space-between", children: [_jsxs(XStack, { items: "center", gap: "$2", children: [_jsx(YStack, { width: 10, height: 10, rounded: "$1", bg: color }), _jsx(Text, { fontSize: "$2", color: "$color11", children: label })] }), value != null ? (_jsx(Text, { fontSize: "$2", color: "$color12", fontWeight: "500", className: "hz-mono", children: value })) : null] }));
55
55
  }
56
56
  /**
57
57
  * One overview metric tile. `value` is pre-formatted by the caller (so an absent
@@ -60,7 +60,7 @@ export function LegendDot({ color, label, value }) {
60
60
  */
61
61
  export function MetricCard({ icon, label, value, caption, spark, sparkColor, delta, }) {
62
62
  const up = delta ? delta.pct >= 0 : false;
63
- return (_jsxs(Card, { p: "$3.5", gap: "$2", borderWidth: 1, borderColor: "$borderColor", flex: 1, minW: 172, children: [_jsxs(XStack, { items: "center", gap: "$2", justify: "space-between", children: [_jsxs(XStack, { items: "center", gap: "$2", children: [icon, _jsx(Text, { fontSize: "$2", color: "$color11", fontWeight: "500", children: label })] }), delta ? (_jsxs(Text, { fontSize: "$1", color: up ? '#7ee787' : '#e5534b', children: [up ? '▲' : '▼', " ", Math.abs(delta.pct), "%"] })) : null] }), _jsxs(XStack, { items: "flex-end", justify: "space-between", gap: "$2", children: [_jsx(Text, { fontSize: "$8", fontWeight: "500", color: "$color12", numberOfLines: 1, className: "mono", children: value }), spark && spark.length >= 2 ? _jsx(Sparkline, { points: spark, color: sparkColor ?? SERIES[0] }) : null] }), caption ? (_jsx(Text, { fontSize: "$1", color: "$color10", numberOfLines: 1, children: caption })) : null] }));
63
+ return (_jsxs(Card, { p: "$3.5", gap: "$2", borderWidth: 1, borderColor: "$borderColor", flex: 1, minW: 172, children: [_jsxs(XStack, { items: "center", gap: "$2", justify: "space-between", children: [_jsxs(XStack, { items: "center", gap: "$2", children: [icon, _jsx(Text, { fontSize: "$2", color: "$color11", fontWeight: "500", children: label })] }), delta ? (_jsxs(Text, { fontSize: "$1", color: up ? '#7ee787' : '#e5534b', children: [up ? '▲' : '▼', " ", Math.abs(delta.pct), "%"] })) : null] }), _jsxs(XStack, { items: "flex-end", justify: "space-between", gap: "$2", children: [_jsx(Text, { fontSize: "$8", fontWeight: "500", color: "$color12", numberOfLines: 1, className: "hz-mono", children: value }), spark && spark.length >= 2 ? _jsx(Sparkline, { points: spark, color: sparkColor ?? SERIES[0] }) : null] }), caption ? (_jsx(Text, { fontSize: "$1", color: "$color10", numberOfLines: 1, children: caption })) : null] }));
64
64
  }
65
65
  /**
66
66
  * A button that is either a real action (onPress) or HONESTLY disabled with a
@@ -79,7 +79,10 @@ export function HintButton({ icon, iconAfter, children, onPress, disabled, hint,
79
79
  * inside a vertical rail (a column YStack) so each panel sizes to its content and
80
80
  * stacks — flex-grow in a column with no fixed height collapses them onto each other.
81
81
  */
82
- export function Panel({ title, right, children, minW = 280, grow = true, }) {
83
- return (_jsxs(Card, { p: "$4", gap: "$3", borderWidth: 1, borderColor: "$borderColor", flex: grow ? 1 : undefined, minW: minW, width: grow ? undefined : '100%', children: [_jsxs(XStack, { items: "center", justify: "space-between", gap: "$2", children: [_jsx(Text, { fontSize: "$4", fontWeight: "500", color: "$color12", children: title }), right] }), children] }));
82
+ export function Panel({ title, icon, description, right, children, minW = 280, grow = true, }) {
83
+ return (_jsxs(Card, { p: "$4", gap: "$3", borderWidth: 1, borderColor: "$borderColor", flex: grow ? 1 : undefined, minW: minW, width: grow ? undefined : '100%', children: [_jsxs(XStack, { items: "center", justify: "space-between", gap: "$2", children: [_jsxs(XStack, { items: "center", gap: "$2", flex: 1, minW: 0, children: [icon, _jsx(Text, { fontSize: "$4", fontWeight: "500", color: "$color12", children: title })] }), right] }), description ? (
84
+ // Under the title, not beside it: a description sharing the line with a
85
+ // right-hand control is the first thing to wrap on a phone.
86
+ _jsx(Text, { fontSize: "$2", color: "$color11", children: description })) : null, children] }));
84
87
  }
85
88
  //# sourceMappingURL=Metric.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Metric.js","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"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"}
@@ -1,63 +1,23 @@
1
1
  'use client';"use strict";
2
2
  'use client';
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.GAP = void 0;
5
- exports.pages = pages;
4
+ exports.pages = exports.GAP = void 0;
6
5
  exports.Pagination = Pagination;
7
6
  const jsx_runtime_1 = require("react/jsx-runtime");
8
7
  /**
9
8
  * Pagination — page N of M, and the way to the others.
10
9
  *
11
- * Four implementations across the fleet (chat, the console's observability
12
- * pager, and billing twice in two spellings, in one repo), each with its own
13
- * rule for what happens when there are eighty pages. `pages` is that rule,
14
- * written once and testable without a browser: a fixed-width run of page numbers
15
- * around the current one, with ellipses standing in for what was skipped and the
16
- * first and last page always reachable.
17
- *
18
- * Fixed width is the requirement. A control that grows with the page count
19
- * reflows the row it sits in every time you page, which is how a "next" button
20
- * ends up under the cursor that was pressing "previous".
10
+ * The RULE it pages by a fixed-width run of page numbers with ellipses
11
+ * standing in for what was skipped is `pages`, and it lives in `./pages`
12
+ * because it needs no browser. Re-exported here so the product barrel still
13
+ * carries it; `@hanzo/ui/product/pure` is the door that costs no gui runtime.
21
14
  */
22
15
  const gui_1 = require("@hanzo/gui");
23
16
  const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
24
17
  const instrument_1 = require("./instrument.cjs");
25
- /** A gap in the run. Rendered as an ellipsis; never selectable. */
26
- exports.GAP = '…';
27
- /**
28
- * The page numbers to show for `page` of `count`, 1-based.
29
- *
30
- * `around` is how many neighbours flank the current page (default 1 → at most
31
- * 7 slots: first, gap, p-1, p, p+1, gap, last). Returns every page when they
32
- * all fit, so a short list never grows an ellipsis it does not need.
33
- */
34
- function pages(page, count, around = 1) {
35
- if (count <= 0)
36
- return [];
37
- const width = around * 2 + 5; // first + gap + run + gap + last
38
- if (count <= width)
39
- return Array.from({ length: count }, (_, i) => i + 1);
40
- const current = Math.min(Math.max(page, 1), count);
41
- // First and last are always present, so the middle carries `width - 2` slots
42
- // and each end that needs no ellipsis spends that slot on another page
43
- // instead. Solving for the run that way is what keeps the total constant;
44
- // clamping the run with Math.max/min alone lets it shrink near the edges, and
45
- // then the control changes width as you page.
46
- const middle = width - 2;
47
- const nearStart = current <= around + 2;
48
- const nearEnd = current >= count - around - 1;
49
- const start = nearStart ? 2 : nearEnd ? count - middle + 1 : current - around;
50
- const end = nearStart ? middle : nearEnd ? count - 1 : current + around;
51
- const out = [1];
52
- if (!nearStart)
53
- out.push(exports.GAP);
54
- for (let p = start; p <= end; p++)
55
- out.push(p);
56
- if (!nearEnd)
57
- out.push(exports.GAP);
58
- out.push(count);
59
- return out;
60
- }
18
+ const pages_1 = require("./pages.cjs");
19
+ Object.defineProperty(exports, "GAP", { enumerable: true, get: function () { return pages_1.GAP; } });
20
+ Object.defineProperty(exports, "pages", { enumerable: true, get: function () { return pages_1.pages; } });
61
21
  function Pagination({ page, count, onChange, around = 1 }) {
62
22
  const track = (0, instrument_1.useEmit)();
63
23
  if (count <= 1)
@@ -68,5 +28,5 @@ function Pagination({ page, count, onChange, around = 1 }) {
68
28
  track({ component: 'Pagination', action: 'select', value: to });
69
29
  onChange(to);
70
30
  };
71
- return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "center", gap: "$1", flexWrap: "wrap", children: [(0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", chromeless: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronLeft, { size: 15 }), onPress: () => go(page - 1), disabled: page <= 1, "aria-label": "Previous page" }), pages(page, count, around).map((slot, i) => slot === exports.GAP ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { px: "$1.5", fontSize: "$2", color: "$color10", "aria-hidden": true, children: exports.GAP }, `gap-${i}`)) : ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", chromeless: slot !== page, onPress: () => go(slot), "aria-label": `Page ${slot}`, "aria-current": slot === page ? 'page' : undefined, bg: slot === page ? '$color4' : undefined, children: String(slot) }, slot))), (0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", chromeless: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronRight, { size: 15 }), onPress: () => go(page + 1), disabled: page >= count, "aria-label": "Next page" })] }));
31
+ return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", justify: "center", gap: "$1", flexWrap: "wrap", children: [(0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", chromeless: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronLeft, { size: 15 }), onPress: () => go(page - 1), disabled: page <= 1, "aria-label": "Previous page" }), (0, pages_1.pages)(page, count, around).map((slot, i) => slot === pages_1.GAP ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { px: "$1.5", fontSize: "$2", color: "$color10", "aria-hidden": true, children: pages_1.GAP }, `gap-${i}`)) : ((0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", chromeless: slot !== page, onPress: () => go(slot), "aria-label": `Page ${slot}`, "aria-current": slot === page ? 'page' : undefined, bg: slot === page ? '$color4' : undefined, children: String(slot) }, slot))), (0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$2", chromeless: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.ChevronRight, { size: 15 }), onPress: () => go(page + 1), disabled: page >= count, "aria-label": "Next page" })] }));
72
32
  }
@@ -1,13 +1,5 @@
1
- /** A gap in the run. Rendered as an ellipsis; never selectable. */
2
- export declare const GAP: "\u2026";
3
- /**
4
- * The page numbers to show for `page` of `count`, 1-based.
5
- *
6
- * `around` is how many neighbours flank the current page (default 1 → at most
7
- * 7 slots: first, gap, p-1, p, p+1, gap, last). Returns every page when they
8
- * all fit, so a short list never grows an ellipsis it does not need.
9
- */
10
- export declare function pages(page: number, count: number, around?: number): (number | typeof GAP)[];
1
+ import { GAP, pages } from './pages.js';
2
+ export { GAP, pages };
11
3
  export type PaginationProps = {
12
4
  /** Current page, 1-based. */
13
5
  page: number;