@hanzo/ui 8.0.0 → 8.0.1

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 (52) hide show
  1. package/package.json +16 -9
  2. package/src/gui-env.d.ts +27 -0
  3. package/types/data.d.ts +2 -0
  4. package/types/data.d.ts.map +1 -0
  5. package/types/index.d.ts +3 -0
  6. package/types/index.d.ts.map +1 -0
  7. package/types/primitives/bases/data/index.d.ts +2 -0
  8. package/types/primitives/bases/data/index.d.ts.map +1 -0
  9. package/types/product/Charts.d.ts +70 -0
  10. package/types/product/Charts.d.ts.map +1 -0
  11. package/types/product/ComboBox.d.ts +20 -0
  12. package/types/product/ComboBox.d.ts.map +1 -0
  13. package/types/product/DataTable.d.ts +25 -0
  14. package/types/product/DataTable.d.ts.map +1 -0
  15. package/types/product/Donut.d.ts +26 -0
  16. package/types/product/Donut.d.ts.map +1 -0
  17. package/types/product/EmptyState.d.ts +37 -0
  18. package/types/product/EmptyState.d.ts.map +1 -0
  19. package/types/product/FadeIn.d.ts +23 -0
  20. package/types/product/FadeIn.d.ts.map +1 -0
  21. package/types/product/Field.d.ts +46 -0
  22. package/types/product/Field.d.ts.map +1 -0
  23. package/types/product/HanzoMark.d.ts +12 -0
  24. package/types/product/HanzoMark.d.ts.map +1 -0
  25. package/types/product/Metric.d.ts +103 -0
  26. package/types/product/Metric.d.ts.map +1 -0
  27. package/types/product/PageHeader.d.ts +8 -0
  28. package/types/product/PageHeader.d.ts.map +1 -0
  29. package/types/product/PrimaryButton.d.ts +13 -0
  30. package/types/product/PrimaryButton.d.ts.map +1 -0
  31. package/types/product/ProductIcon.d.ts +8 -0
  32. package/types/product/ProductIcon.d.ts.map +1 -0
  33. package/types/product/ProviderLogo.d.ts +13 -0
  34. package/types/product/ProviderLogo.d.ts.map +1 -0
  35. package/types/product/Reorder.d.ts +36 -0
  36. package/types/product/Reorder.d.ts.map +1 -0
  37. package/types/product/SelectMenu.d.ts +23 -0
  38. package/types/product/SelectMenu.d.ts.map +1 -0
  39. package/types/product/SlideOver.d.ts +48 -0
  40. package/types/product/SlideOver.d.ts.map +1 -0
  41. package/types/product/StatusTag.d.ts +4 -0
  42. package/types/product/StatusTag.d.ts.map +1 -0
  43. package/types/product/ThemeToggle.d.ts +2 -0
  44. package/types/product/ThemeToggle.d.ts.map +1 -0
  45. package/types/product/Toast.d.ts +33 -0
  46. package/types/product/Toast.d.ts.map +1 -0
  47. package/types/product/color.d.ts +18 -0
  48. package/types/product/color.d.ts.map +1 -0
  49. package/types/product/combobox/filter.d.ts +28 -0
  50. package/types/product/combobox/filter.d.ts.map +1 -0
  51. package/types/product/index.d.ts +22 -0
  52. package/types/product/index.d.ts.map +1 -0
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.0",
3
+ "version": "8.0.1",
4
4
  "type": "module",
5
- "description": "Hanzo UI the one cross-platform component library on @hanzo/gui. The product/app layer (charts, metrics, page headers, status tags, rich empty states, combobox, slide-over, toasts, drag-reorder, labeled field rows, provider/product marks) + the metadata-driven record layer (@hanzo/data: RecordsView, DataTable, board, typed field editors) + the calm dark-first tokens and motion. Presentational, host-agnostic (data/effects injected), clean-room. Web + native (iOS) + desktop.",
5
+ "description": "Hanzo UI \u2014 the one cross-platform component library on @hanzo/gui. The product/app layer (charts, metrics, page headers, status tags, rich empty states, combobox, slide-over, toasts, drag-reorder, labeled field rows, provider/product marks) + the metadata-driven record layer (@hanzo/data: RecordsView, DataTable, board, typed field editors) + the calm dark-first tokens and motion. Presentational, host-agnostic (data/effects injected), clean-room. Web + native (iOS) + desktop.",
6
6
  "exports": {
7
7
  ".": {
8
- "types": "./src/index.ts",
8
+ "types": "./types/index.d.ts",
9
9
  "default": "./src/index.ts"
10
10
  },
11
11
  "./product": {
12
- "types": "./src/product/index.ts",
12
+ "types": "./types/product/index.d.ts",
13
13
  "default": "./src/product/index.ts"
14
14
  },
15
15
  "./data": {
16
- "types": "./src/data.ts",
16
+ "types": "./types/data.d.ts",
17
17
  "default": "./src/data.ts"
18
18
  },
19
19
  "./primitives/bases/data": {
20
- "types": "./src/primitives/bases/data/index.ts",
20
+ "types": "./types/primitives/bases/data/index.d.ts",
21
21
  "default": "./src/primitives/bases/data/index.ts"
22
22
  },
23
23
  "./styles/motion.css": "./src/styles/hanzo-motion.css",
@@ -25,14 +25,18 @@
25
25
  },
26
26
  "main": "./src/index.ts",
27
27
  "module": "./src/index.ts",
28
- "types": "./src/index.ts",
28
+ "types": "./types/index.d.ts",
29
29
  "sideEffects": [
30
30
  "**/*.css"
31
31
  ],
32
32
  "files": [
33
- "src"
33
+ "src",
34
+ "types"
34
35
  ],
35
36
  "scripts": {
37
+ "build": "tsc -p tsconfig.build.json",
38
+ "clean": "rm -rf types",
39
+ "prepack": "pnpm run build",
36
40
  "tc": "tsc --noEmit",
37
41
  "typecheck": "tsc --noEmit",
38
42
  "test": "vitest run",
@@ -44,12 +48,15 @@
44
48
  "react": ">=19"
45
49
  },
46
50
  "devDependencies": {
47
- "@hanzo/data": "1.2.0",
51
+ "@hanzo/data": "1.2.1",
48
52
  "@hanzo/gui": "7.3.0",
49
53
  "@hanzogui/config": "7.3.0",
54
+ "@hanzogui/core": "7.3.0",
50
55
  "@hanzogui/lucide-icons-2": "7.3.0",
51
56
  "@hanzogui/next-theme": "7.3.0",
57
+ "@hanzogui/web": "7.3.0",
52
58
  "@types/react": "^19.1.10",
59
+ "@types/react-dom": "^19.1.0",
53
60
  "react": "^19.0.0",
54
61
  "react-dom": "^19.0.0",
55
62
  "typescript": "^5.7.2",
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Registers this package's @hanzo/gui config with the type system so the
3
+ * shorthand style props (bg / px / py / items / justify / gap / rounded …) that
4
+ * the components author against resolve to their concrete types DURING THIS
5
+ * PACKAGE'S OWN COMPILATION.
6
+ *
7
+ * Because the resolution happens here, the emitted `.d.ts` (see
8
+ * `tsconfig.build.json`) bakes in the concrete prop types — a consumer type-checks
9
+ * against the compiled declarations and never has to re-declare this augmentation
10
+ * (nor descend into our `.tsx` internals). Ambient + type-only; never emitted.
11
+ *
12
+ * `GuiCustomConfig` is the extension point declared by @hanzogui/web and re-declared
13
+ * by @hanzogui/core; `InferGuiConfig<typeof defaultConfig>` (the return type of
14
+ * `createGui(defaultConfig)`) is the exact config the components are written for.
15
+ */
16
+ import type { createGui } from '@hanzo/gui'
17
+ import type { defaultConfig } from '@hanzogui/config/v5'
18
+
19
+ type Conf = ReturnType<typeof createGui<typeof defaultConfig>>
20
+
21
+ declare module '@hanzogui/web' {
22
+ interface GuiCustomConfig extends Conf {}
23
+ }
24
+
25
+ declare module '@hanzogui/core' {
26
+ interface GuiCustomConfig extends Conf {}
27
+ }
@@ -0,0 +1,2 @@
1
+ export * from '@hanzo/data';
2
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAWA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './product';
2
+ export { tokens, TAG_TONES, tagTone, type TagTone } from '@hanzo/data';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,WAAW,CAAA;AAKzB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from '@hanzo/data';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/bases/data/index.ts"],"names":[],"mappings":"AAYA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Charts — the ONE way the console draws a trend, a series, a share, or a
3
+ * distribution. Dependency-free: inline SVG for the data-dense temporal charts
4
+ * (Sparkline / LineChart / BarChart) and @hanzo/gui primitives for the
5
+ * token-native ones (BarRows, and the Donut's optional legend), so everything
6
+ * themes to the shell.
7
+ *
8
+ * Color is data-driven, not a mode flag: a `Slice` is drawn in its own `color`
9
+ * when it has one (categorical/polychrome — e.g. spend-by-model) and in a
10
+ * monochrome opacity ramp off the foreground token when it doesn't (on-brand —
11
+ * e.g. collections-by-model). One Donut serves both; a consumer that needs a
12
+ * richer legend (amounts, click targets) leaves `legend` off and composes its own.
13
+ *
14
+ * Honest by construction: a Sparkline with fewer than two points renders nothing
15
+ * (no invented trend); Donut / BarRows with no positive value render an em-dash.
16
+ * Callers pass REAL series — these never fabricate data.
17
+ *
18
+ * SVG marks can't read Tamagui tokens, so concrete colors for SVG come from the
19
+ * live theme (`useTheme().<token>.get()` → `var(--token)` on web, stays reactive).
20
+ */
21
+ import { type ReactNode } from 'react';
22
+ /** Distinct hues for categorical series (e.g. spend-by-model donut), dark-tuned. */
23
+ export declare const CHART_PALETTE: string[];
24
+ export declare const CHART_OTHER = "#64748b";
25
+ /** A point on a temporal/sequential axis (LineChart / BarChart). */
26
+ export type ChartPoint = {
27
+ label: string;
28
+ value: number;
29
+ };
30
+ /** A labelled magnitude in a categorical chart (Donut / BarRows). */
31
+ export type Slice = {
32
+ label: string;
33
+ value: number;
34
+ color?: string;
35
+ hint?: string;
36
+ };
37
+ export declare function Sparkline({ values, width, height, color, }: {
38
+ values: number[];
39
+ width?: number;
40
+ height?: number;
41
+ color?: string;
42
+ }): import("react").JSX.Element | null;
43
+ export declare function LineChart({ data, height, color, formatValue, }: {
44
+ data: ChartPoint[];
45
+ height?: number;
46
+ color?: string;
47
+ formatValue?: (v: number) => string;
48
+ }): import("react").JSX.Element;
49
+ export declare function BarChart({ data, height, color, formatValue, }: {
50
+ data: ChartPoint[];
51
+ height?: number;
52
+ color?: string;
53
+ formatValue?: (v: number) => string;
54
+ }): import("react").JSX.Element;
55
+ export declare function Donut({ slices, size, thickness, center, legend, }: {
56
+ slices: Slice[];
57
+ size?: number;
58
+ thickness?: number;
59
+ /** Rendered, centered, inside the ring (a number, a label+sub, anything). */
60
+ center?: ReactNode;
61
+ /**
62
+ * Render a built-in label/percentage legend beside the ring. Off by default so
63
+ * a consumer can compose a richer legend (amounts, click targets) itself.
64
+ */
65
+ legend?: boolean;
66
+ }): import("react").JSX.Element;
67
+ export declare function BarRows({ bars }: {
68
+ bars: Slice[];
69
+ }): import("react").JSX.Element;
70
+ //# sourceMappingURL=Charts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Charts.d.ts","sourceRoot":"","sources":["../../src/product/Charts.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGnE,oFAAoF;AACpF,eAAO,MAAM,aAAa,UASzB,CAAA;AACD,eAAO,MAAM,WAAW,YAAY,CAAA;AAMpC,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzD,qEAAqE;AACrE,MAAM,MAAM,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AA+BnF,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,KAAW,EACX,MAAW,EACX,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,sCAmBA;AA8DD,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,MAAY,EACZ,KAAc,EACd,WAA8B,GAC/B,EAAE;IACD,IAAI,EAAE,UAAU,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CACpC,+BAmDA;AAID,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,MAAY,EACZ,KAAc,EACd,WAA8B,GAC/B,EAAE;IACD,IAAI,EAAE,UAAU,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CACpC,+BA4DA;AAID,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,IAAU,EACV,SAAc,EACd,MAAM,EACN,MAAc,GACf,EAAE;IACD,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,+BAmFA;AAqCD,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,KAAK,EAAE,CAAA;CAAE,+BA0BlD"}
@@ -0,0 +1,20 @@
1
+ import { type ComboOption } from './combobox/filter';
2
+ export type { ComboOption } from './combobox/filter';
3
+ export declare function ComboBox({ value, onChange, options, loading, error, onRetry, placeholder, disabled, emptyText, minWidth, }: {
4
+ value: string;
5
+ onChange: (v: string) => void;
6
+ /** The live option list. Filtered against the typed text. */
7
+ options: ComboOption[];
8
+ /** True while the caller is loading the option list (shows a spinner row). */
9
+ loading?: boolean;
10
+ /** A human message when the option list failed to load (list still typeable). */
11
+ error?: string | null;
12
+ /** Retry the option load (shown next to the error). */
13
+ onRetry?: () => void;
14
+ placeholder?: string;
15
+ disabled?: boolean;
16
+ /** Row shown when the filter matches nothing (the typed value is still usable). */
17
+ emptyText?: string;
18
+ minWidth?: number;
19
+ }): import("react").JSX.Element;
20
+ //# sourceMappingURL=ComboBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboBox.d.ts","sourceRoot":"","sources":["../../src/product/ComboBox.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEnE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,OAAe,EACf,KAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,SAAuD,EACvD,QAAc,GACf,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,6DAA6D;IAC7D,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,+BAmEA"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Generic data table — the shared list primitive for every product module.
3
+ *
4
+ * Rows are typed `<T>`; columns declare a key, header, and optional cell
5
+ * renderer. Built on Hanzo GUI Stacks (shorthand style props per the v5 config)
6
+ * so it adapts across platforms. Loading and empty states are first-class.
7
+ */
8
+ import type { ReactNode } from 'react';
9
+ export type Column<T> = {
10
+ key: string;
11
+ header: string;
12
+ /** Cell renderer; defaults to `String(row[key])`. */
13
+ render?: (row: T) => ReactNode;
14
+ /** Fixed width (px) for the column; otherwise flexes. */
15
+ width?: number;
16
+ };
17
+ export declare function DataTable<T>({ columns, rows, loading, empty, rowKey, onRowPress, }: {
18
+ columns: Column<T>[];
19
+ rows: T[];
20
+ loading?: boolean;
21
+ empty?: string;
22
+ rowKey: (row: T) => string;
23
+ onRowPress?: (row: T) => void;
24
+ }): import("react").JSX.Element;
25
+ //# sourceMappingURL=DataTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../src/product/DataTable.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAA;IAC9B,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAC3B,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAA2B,EAC3B,MAAM,EACN,UAAU,GACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACpB,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;CAC9B,+BA+DA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Donut — a tiny dependency-free SVG ring for a categorical breakdown
3
+ * (e.g. machines by status). Standard library first: no chart dependency for a
4
+ * single ring. It renders ONLY the real segments it is given and returns `null`
5
+ * when the total is zero, so the caller shows an honest empty state instead of an
6
+ * empty circle. Purely presentational — all values come from the caller.
7
+ */
8
+ export type DonutSegment = {
9
+ label: string;
10
+ value: number;
11
+ color: string;
12
+ };
13
+ export declare function Donut({ segments, size, thickness, centerValue, centerLabel, trackColor, valueColor, labelColor, }: {
14
+ segments: DonutSegment[];
15
+ size?: number;
16
+ thickness?: number;
17
+ /** Big number in the middle (e.g. total). */
18
+ centerValue?: string;
19
+ /** Caption under the center value. */
20
+ centerLabel?: string;
21
+ /** Unfilled-ring color (explicit hex so it never depends on theme var names). */
22
+ trackColor?: string;
23
+ valueColor?: string;
24
+ labelColor?: string;
25
+ }): import("react").JSX.Element | null;
26
+ //# sourceMappingURL=Donut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Donut.d.ts","sourceRoot":"","sources":["../../src/product/Donut.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,IAAU,EACV,SAAc,EACd,WAAW,EACX,WAAW,EACX,UAAsB,EACtB,UAAsB,EACtB,UAAsB,GACvB,EAAE;IACD,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,sCAkDA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Rich empty state — the ONE way the console turns a real, honest "nothing here
3
+ * yet" into a helpful onboarding moment (DigitalOcean / Vercel class) instead of
4
+ * a dead screen.
5
+ *
6
+ * It is NOT a fabricated-data fallback: callers render it only when a load
7
+ * genuinely succeeded with zero rows (or a resource has no surface yet). It shows
8
+ * the product icon, a one-line "what this is", a couple of guidance bullets, a
9
+ * single primary call-to-action (Deploy / Create / Connect …) and an optional
10
+ * secondary link (Docs / CLI). Orthogonal to `BackendStateCard` (failures) and
11
+ * `DataTable`'s thin inline empty (in-table) — this is the full-bleed first-run
12
+ * surface a module shows in place of its table.
13
+ */
14
+ import type { ReactElement } from 'react';
15
+ import type { IconLike } from './color';
16
+ /** A single call-to-action — primary (filled) or a secondary/external link. */
17
+ export type EmptyAction = {
18
+ label: string;
19
+ /** In-app navigation / handler. */
20
+ onPress?: () => void;
21
+ /** External URL — opens in a new tab with an external-link affordance. */
22
+ href?: string;
23
+ icon?: ReactElement;
24
+ };
25
+ export declare function EmptyState({ icon: Icon, title, description, bullets, primary, secondary, }: {
26
+ /** Product/section icon — any lucide/Gui icon component (size + optional color). */
27
+ icon: IconLike;
28
+ title: string;
29
+ description: string;
30
+ /** Optional "here's how to get started" guidance bullets. */
31
+ bullets?: string[];
32
+ /** The single high-emphasis action (Deploy / Create / Connect). */
33
+ primary?: EmptyAction;
34
+ /** An optional lower-emphasis action (Docs / CLI / Learn more). */
35
+ secondary?: EmptyAction;
36
+ }): import("react").JSX.Element;
37
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../src/product/EmptyState.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAA;AAIpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,+EAA+E;AAC/E,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB,CAAA;AAOD,wBAAgB,UAAU,CAAC,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE;IACD,oFAAoF;IACpF,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,mEAAmE;IACnE,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,mEAAmE;IACnE,SAAS,CAAC,EAAE,WAAW,CAAA;CACxB,+BAyEA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * FadeIn — the ONE entrance animation for the console.
3
+ *
4
+ * A thin wrapper that applies the shared `.hz-fade-up` keyframe (defined once in
5
+ * globals.css) plus an optional stagger delay, so sections and cards rise in the
6
+ * way the hanzo.ai marketing surface does. Framework-free (no animation driver,
7
+ * no JS observers) so it works under static export and honors
8
+ * `prefers-reduced-motion` (handled in the CSS). Pass `index` to stagger a list
9
+ * (delay = index * step), or `delayMs` for an explicit delay.
10
+ */
11
+ import type { CSSProperties, ReactNode } from 'react';
12
+ export declare function FadeIn({ children, index, step, delayMs, style, }: {
13
+ children: ReactNode;
14
+ /** Position in a list — staggers the entrance by `index * step` ms. */
15
+ index?: number;
16
+ /** Per-index stagger in ms (default 50). */
17
+ step?: number;
18
+ /** Explicit delay in ms; overrides the index-based stagger. */
19
+ delayMs?: number;
20
+ /** Extra styles for the wrapper (e.g. layout/centering). */
21
+ style?: CSSProperties;
22
+ }): import("react").JSX.Element;
23
+ //# sourceMappingURL=FadeIn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FadeIn.d.ts","sourceRoot":"","sources":["../../src/product/FadeIn.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAS,EACT,IAAS,EACT,OAAO,EACP,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB,+BAOA"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Form field primitives — labeled rows over Hanzo GUI inputs.
3
+ *
4
+ * One way to render a labeled control. Every editor field goes through these, so
5
+ * spacing, disabled styling, and the label column stay consistent. Style props
6
+ * use the v5 shorthand set (p/px/items/justify/...).
7
+ */
8
+ import type { ReactNode } from 'react';
9
+ /** Labeled row: fixed label column + flexing control. */
10
+ export declare function FieldRow({ label, children }: {
11
+ label: string;
12
+ children: ReactNode;
13
+ }): import("react").JSX.Element;
14
+ export declare function FieldText({ value, onChange, disabled, secure, placeholder, }: {
15
+ value: string;
16
+ onChange: (v: string) => void;
17
+ disabled?: boolean;
18
+ secure?: boolean;
19
+ placeholder?: string;
20
+ }): import("react").JSX.Element;
21
+ export declare function FieldTextArea({ value, onChange, disabled, rows, }: {
22
+ value: string;
23
+ onChange: (v: string) => void;
24
+ disabled?: boolean;
25
+ rows?: number;
26
+ }): import("react").JSX.Element;
27
+ export declare function FieldSwitch({ checked, onChange, disabled, }: {
28
+ checked: boolean;
29
+ onChange: (v: boolean) => void;
30
+ disabled?: boolean;
31
+ }): import("react").JSX.Element;
32
+ export declare function FieldSelect({ value, options, onChange, disabled, }: {
33
+ value: string;
34
+ options: string[];
35
+ onChange: (v: string) => void;
36
+ disabled?: boolean;
37
+ }): import("react").JSX.Element;
38
+ export declare function FieldSlider({ value, min, max, step, onChange, disabled, }: {
39
+ value: number;
40
+ min: number;
41
+ max: number;
42
+ step: number;
43
+ onChange: (v: number) => void;
44
+ disabled?: boolean;
45
+ }): import("react").JSX.Element;
46
+ //# sourceMappingURL=Field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/product/Field.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AActC,yDAAyD;AACzD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAWnF;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,+BAWA;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,+BAIA;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,+BAMA;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,GACT,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;CACnB,+BAiBA;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,+BAsBA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The Hanzo "H" mark — the canonical brand glyph (same geometry as app/icon.svg).
3
+ *
4
+ * Rendered as inline SVG with `fill: currentColor`, so it inherits the
5
+ * surrounding text color and adapts to the dark/light theme with no per-theme
6
+ * asset. ONE source for the mark across the chrome (sidebar + header).
7
+ */
8
+ export declare function HanzoMark({ size, color }: {
9
+ size?: number;
10
+ color?: string;
11
+ }): import("react").JSX.Element;
12
+ //# sourceMappingURL=HanzoMark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HanzoMark.d.ts","sourceRoot":"","sources":["../../src/product/HanzoMark.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,IAAS,EAAE,KAAsB,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,+BAkBjG"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Console metric primitives — the ONE shared set of stat tiles, panels, legend
3
+ * rows, util bars, and "real action or honest-disabled" buttons that every
4
+ * resource console (GPUs, Kubernetes, Containers, Training, Tasks) renders.
5
+ *
6
+ * These were first written for the GPU surface; promoted here so a sibling
7
+ * product never reaches into `gpus/` for shell chrome (separation of concerns).
8
+ * `gpus/charts.tsx` now re-exports them, so there is exactly one definition.
9
+ *
10
+ * Honest by construction: a `MetricCard` shows the pre-formatted `value` the
11
+ * caller passes (an absent metric is an em-dash, never a fabricated number); a
12
+ * `Sparkline`/`MiniBars` with no real series renders nothing; a `HintButton`
13
+ * with no `onPress` is visibly disabled with a tooltip saying WHY. Inline SVG is
14
+ * the house pattern (see ui/Loader, ui/HanzoMark); style props use the v5
15
+ * shorthand set.
16
+ */
17
+ import type { ReactElement, ReactNode } from 'react';
18
+ /** Distinct, theme-neutral series colors (mid-saturation reads on dark + light). */
19
+ export declare const SERIES: readonly ["#6ea8fe", "#7ee787", "#f0a868", "#c792ea", "#56d4c4", "#e879a6", "#d6c15a", "#8b9bb4"];
20
+ export declare const colorForIndex: (i: number) => string;
21
+ /** Tone for a utilization/temperature value (green calm → red hot). */
22
+ export declare function utilColor(pct: number): string;
23
+ /**
24
+ * A single-series sparkline over real points. Renders nothing meaningful for <2
25
+ * points (the caller shows `—` instead). The y-range is the data's own min/max.
26
+ */
27
+ export declare function Sparkline({ points, width, height, color, }: {
28
+ points: number[];
29
+ width?: number;
30
+ height?: number;
31
+ color?: string;
32
+ }): ReactElement | null;
33
+ /** A small vertical-bar chart (e.g. cost per day). One bar per real datum. */
34
+ export declare function MiniBars({ bars, width, height, color, }: {
35
+ bars: {
36
+ label: string;
37
+ value: number;
38
+ }[];
39
+ width?: number;
40
+ height?: number;
41
+ color?: string;
42
+ }): ReactElement | null;
43
+ /**
44
+ * A thin horizontal bar (0–100). By default the fill tones by value (green→red,
45
+ * for utilization/temperature). Pass a fixed `color` for a neutral meter like
46
+ * training PROGRESS, where a high value is good, not "hot".
47
+ */
48
+ export declare function UtilBar({ value, width, color }: {
49
+ value: number;
50
+ width?: number;
51
+ color?: string;
52
+ }): ReactElement;
53
+ /** A legend row: color swatch + label + value. */
54
+ export declare function LegendDot({ color, label, value }: {
55
+ color: string;
56
+ label: string;
57
+ value?: ReactNode;
58
+ }): import("react").JSX.Element;
59
+ /**
60
+ * One overview metric tile. `value` is pre-formatted by the caller (so an absent
61
+ * metric is an honest `—`, never a fabricated number). The sparkline only appears
62
+ * when the caller has a REAL series; the delta only when a real comparison exists.
63
+ */
64
+ export declare function MetricCard({ icon, label, value, caption, spark, sparkColor, delta, }: {
65
+ icon: ReactElement;
66
+ label: string;
67
+ value: string;
68
+ caption?: string;
69
+ spark?: number[];
70
+ sparkColor?: string;
71
+ delta?: {
72
+ pct: number;
73
+ };
74
+ }): import("react").JSX.Element;
75
+ /**
76
+ * A button that is either a real action (onPress) or HONESTLY disabled with a
77
+ * native tooltip explaining why (the action has no backend yet). One way to
78
+ * render the "real route or honest-disabled" affordance the consoles use.
79
+ */
80
+ export declare function HintButton({ icon, iconAfter, children, onPress, disabled, hint, theme, }: {
81
+ icon?: ReactElement;
82
+ iconAfter?: ReactElement;
83
+ children: ReactNode;
84
+ onPress?: () => void;
85
+ disabled?: boolean;
86
+ /** Native tooltip text (shown on hover) — say WHY it is disabled. */
87
+ hint?: string;
88
+ theme?: 'light';
89
+ }): import("react").JSX.Element;
90
+ /**
91
+ * A titled panel wrapper used across the consoles (chart + list cards). `grow`
92
+ * (default true) sets `flex={1}` so panels SHARE width in a ROW; pass `grow={false}`
93
+ * inside a vertical rail (a column YStack) so each panel sizes to its content and
94
+ * stacks — flex-grow in a column with no fixed height collapses them onto each other.
95
+ */
96
+ export declare function Panel({ title, right, children, minW, grow, }: {
97
+ title: string;
98
+ right?: ReactNode;
99
+ children: ReactNode;
100
+ minW?: number;
101
+ grow?: boolean;
102
+ }): import("react").JSX.Element;
103
+ //# sourceMappingURL=Metric.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metric.d.ts","sourceRoot":"","sources":["../../src/product/Metric.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGpD,oFAAoF;AACpF,eAAO,MAAM,MAAM,mGAAoG,CAAA;AACvH,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,KAAG,MAAmC,CAAA;AAG7E,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,KAAW,EACX,MAAW,EACX,KAAiB,GAClB,EAAE;IACD,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,YAAY,GAAG,IAAI,CAatB;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAW,EACX,MAAW,EACX,KAAiB,GAClB,EAAE;IACD,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,YAAY,GAAG,IAAI,CAiBtB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,KAAW,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAQtH;AAED,kDAAkD;AAClD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,+BAgBrG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,OAAO,EACP,KAAK,EACL,UAAU,EACV,KAAK,GACN,EAAE;IACD,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACxB,+BA8BA;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,KAAK,GACN,EAAE;IACD,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,SAAS,CAAC,EAAE,YAAY,CAAA;IACxB,QAAQ,EAAE,SAAS,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,+BAmBA;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAU,EACV,IAAW,GACZ,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,EAAE,SAAS,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,+BAYA"}
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ /** Section title + optional subtitle and right-aligned actions. */
3
+ export declare function PageHeader({ title, subtitle, actions, }: {
4
+ title: string;
5
+ subtitle?: string;
6
+ actions?: ReactNode;
7
+ }): import("react").JSX.Element;
8
+ //# sourceMappingURL=PageHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../src/product/PageHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB,+BAgBA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Primary button — the one white, high-emphasis action for the console.
3
+ *
4
+ * Monochrome brand: `theme="light"` flips the button to the light theme inside
5
+ * the dark console, giving a white fill with a near-black label and icon — no
6
+ * hue accent. Use it for the single primary action in a view (sign in, save,
7
+ * get started). Secondary and destructive actions use the default neutral
8
+ * `Button`.
9
+ */
10
+ import type { ComponentProps } from 'react';
11
+ import { Button } from '@hanzo/gui';
12
+ export declare function PrimaryButton(props: ComponentProps<typeof Button>): import("react").JSX.Element;
13
+ //# sourceMappingURL=PrimaryButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrimaryButton.d.ts","sourceRoot":"","sources":["../../src/product/PrimaryButton.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnC,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,MAAM,CAAC,+BAEjE"}
@@ -0,0 +1,8 @@
1
+ import { type IconLike } from './color';
2
+ export declare function ProductIcon({ icon: Icon, color, size, }: {
3
+ icon: IconLike;
4
+ /** The product's resolved accent hex (e.g. `#5E6AD2`). Omit for the neutral chip. */
5
+ color?: string;
6
+ size?: number;
7
+ }): import("react").JSX.Element;
8
+ //# sourceMappingURL=ProductIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductIcon.d.ts","sourceRoot":"","sources":["../../src/product/ProductIcon.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEhD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EACL,IAAS,GACV,EAAE;IACD,IAAI,EAAE,QAAQ,CAAA;IACd,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,+BA2BA"}
@@ -0,0 +1,13 @@
1
+ import { Boxes } from '@hanzogui/lucide-icons-2';
2
+ /** 1–2 uppercase initials from a provider name: words→first letters, else first 2 chars. */
3
+ export declare function providerInitials(provider: string): string;
4
+ export declare function ProviderLogo({ provider, size }: {
5
+ provider: string;
6
+ size?: number;
7
+ }): import("react").JSX.Element;
8
+ /** A generic fallback mark for an unspecified provider (used sparingly). */
9
+ export declare function GenericLogo({ size }: {
10
+ size?: number;
11
+ }): import("react").JSX.Element;
12
+ export { Boxes as CustomModelMark };
13
+ //# sourceMappingURL=ProviderLogo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderLogo.d.ts","sourceRoot":"","sources":["../../src/product/ProviderLogo.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,EAAsB,MAAM,0BAA0B,CAAA;AA0CpE,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAqDxF;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAM3D;AAID,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Reorder — a tiny pointer-driven drag-to-reorder list. No dependency: it uses
3
+ * Pointer Events (so it works with mouse AND touch) and CSS transforms, matching
4
+ * the shell's transform-driven motion. Rows are a FIXED height (all pinned rows
5
+ * are), which keeps the "where does it drop?" math exact and pure (`targetIndex`)
6
+ * and the reflow buttery — the lifted row follows the pointer 1:1 while its
7
+ * displaced siblings ease into place.
8
+ *
9
+ * The list is controlled: `onReorder(from, to)` fires once on drop; the parent
10
+ * owns the data (here, the account-backed pins model). `renderItem` gets a
11
+ * `handle` to spread on the drag affordance so the rest of the row stays
12
+ * interactive (tap to open, etc.).
13
+ */
14
+ import { type ReactNode } from 'react';
15
+ /** Final index for a drag: start + rounded rows travelled, clamped. PURE. */
16
+ export declare function targetIndex(from: number, dy: number, rowH: number, count: number): number;
17
+ /** Vertical shift for row `i` during a drag from `from`→`to` (the dragged row
18
+ * follows the pointer; rows between them make room). PURE. */
19
+ export declare function rowShift(i: number, from: number, to: number, dy: number, rowH: number): number;
20
+ export type DragHandle = {
21
+ onPointerDown: (e: {
22
+ clientY?: number;
23
+ pointerId?: number;
24
+ nativeEvent?: {
25
+ clientY?: number;
26
+ };
27
+ }) => void;
28
+ };
29
+ export declare function Reorder<T>({ items, keyOf, rowHeight, onReorder, renderItem, }: {
30
+ items: T[];
31
+ keyOf: (t: T) => string;
32
+ rowHeight?: number;
33
+ onReorder: (from: number, to: number) => void;
34
+ renderItem: (item: T, handle: DragHandle, dragging: boolean) => ReactNode;
35
+ }): import("react").JSX.Element;
36
+ //# sourceMappingURL=Reorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reorder.d.ts","sourceRoot":"","sources":["../../src/product/Reorder.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGrE,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzF;AAED;+DAC+D;AAC/D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9F;AAED,MAAM,MAAM,UAAU,GAAG;IAAE,aAAa,EAAE,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAA;CAAE,CAAA;AAErI,wBAAgB,OAAO,CAAC,CAAC,EAAE,EACzB,KAAK,EACL,KAAK,EACL,SAAc,EACd,SAAS,EACT,UAAU,GACX,EAAE;IACD,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,KAAK,SAAS,CAAA;CAC1E,+BA6DA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * SelectMenu — a compact, reusable dropdown select on @hanzo/gui Popover (the
3
+ * console's proven dropdown idiom, same as OrgSwitcher/ScopeSwitcher). Renders a
4
+ * labelled trigger ("All types", or the chosen option) and a popover list with a
5
+ * check on the active option. Prop-driven + self-contained so it lifts into
6
+ * `@hanzo/ui`. `value === null` is the "all"/unfiltered state.
7
+ */
8
+ import type { ReactElement } from 'react';
9
+ export type SelectOption<T extends string> = {
10
+ key: T;
11
+ label: string;
12
+ };
13
+ export declare function SelectMenu<T extends string>({ options, value, onChange, allLabel, icon, minWidth, }: {
14
+ options: SelectOption<T>[];
15
+ value: T | null;
16
+ onChange: (v: T | null) => void;
17
+ /** Label shown (and first menu row) for the unfiltered `null` state. */
18
+ allLabel?: string;
19
+ /** Optional leading icon in the trigger. */
20
+ icon?: ReactElement;
21
+ minWidth?: number;
22
+ }): import("react").JSX.Element;
23
+ //# sourceMappingURL=SelectMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../src/product/SelectMenu.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAKzC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtE,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAC3C,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,IAAI,EACJ,QAAc,GACf,EAAE;IACD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1B,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACf,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,+BAsCA"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * SlideOver — the ONE right-side (or left) slide-out overlay for the console.
3
+ *
4
+ * It is the single mechanism behind every off-canvas surface: the mobile nav
5
+ * drawer, the item DetailPane, and the account/settings menu. One definition, many
6
+ * mounts (DRY) — so every drawer slides, dims, traps, and closes identically.
7
+ *
8
+ * Smoothness is CSS-transform driven (never a JS layout branch): the panel is
9
+ * ALWAYS mounted and toggles `translateX(0) ↔ translateX(±100%)` via the shared
10
+ * `.hz-slide` class, and the backdrop cross-fades via `.hz-fade`. Because it never
11
+ * unmounts, the EXIT animates too (a `Dialog` that unmounts on close cannot). Both
12
+ * classes are reduced-motion-aware in `globals.css`, so the whole thing snaps
13
+ * instantly for users who ask for that — no bespoke logic here.
14
+ *
15
+ * Responsive by construction: FULL-WIDTH (full-screen) below `lg`, a fixed-width
16
+ * pane at `lg+` (`size`). Uses `100dvh` so the mobile browser chrome never clips it.
17
+ *
18
+ * A11y: `role="dialog" aria-modal`, Escape to close, backdrop click to close, body
19
+ * scroll lock while open (ref-counted so stacked overlays don't fight), and focus
20
+ * moves into the panel on open and returns to the opener on close.
21
+ */
22
+ import { type ReactNode } from 'react';
23
+ import { type IconLike } from './color';
24
+ /** The lg breakpoint (px) — matches the shell's one responsive threshold. */
25
+ declare const LG = 1024;
26
+ export type SlideOverProps = {
27
+ open: boolean;
28
+ onClose: () => void;
29
+ /** Which edge the panel slides from. Default right. */
30
+ side?: 'right' | 'left';
31
+ /** Panel width at lg+ (px). Below lg it is always full-screen. Default 420. */
32
+ size?: number;
33
+ /** Optional header title — when set, SlideOver renders a header + a scroll body. */
34
+ title?: ReactNode;
35
+ /** Optional header icon (tinted with `iconColor`). */
36
+ icon?: IconLike;
37
+ iconColor?: string;
38
+ /** Extra header content, right-aligned before the close button. */
39
+ headerRight?: ReactNode;
40
+ /** Accessible label when no visible title is given. */
41
+ ariaLabel?: string;
42
+ /** z-index for stacking (a pane opened over a drawer passes a higher value). */
43
+ zIndex?: number;
44
+ children: ReactNode;
45
+ };
46
+ export declare function SlideOver({ open, onClose, side, size, title, icon: Icon, iconColor, headerRight, ariaLabel, zIndex, children, }: SlideOverProps): import("react").JSX.Element;
47
+ export { LG as SLIDEOVER_LG };
48
+ //# sourceMappingURL=SlideOver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideOver.d.ts","sourceRoot":"","sources":["../../src/product/SlideOver.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIzD,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEhD,6EAA6E;AAC7E,QAAA,MAAM,EAAE,OAAO,CAAA;AAmBf,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,uDAAuD;IACvD,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACvB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,sDAAsD;IACtD,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,IAAc,EACd,IAAU,EACV,KAAK,EACL,IAAI,EAAE,IAAI,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,MAAa,EACb,QAAQ,GACT,EAAE,cAAc,+BAgHhB;AAED,OAAO,EAAE,EAAE,IAAI,YAAY,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare function StatusTag({ status }: {
2
+ status?: string;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=StatusTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusTag.d.ts","sourceRoot":"","sources":["../../src/product/StatusTag.tsx"],"names":[],"mappings":"AAyCA,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,+BAOxD"}
@@ -0,0 +1,2 @@
1
+ export declare function ThemeToggle(): import("react").JSX.Element;
2
+ //# sourceMappingURL=ThemeToggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../src/product/ThemeToggle.tsx"],"names":[],"mappings":"AAYA,wBAAgB,WAAW,gCAY1B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Toast — the ONE feedback primitive. Every mutation reports through `useToast()`
3
+ * so success/failure looks and behaves the same everywhere. A single provider
4
+ * holds the queue and renders the viewport (portalled top-right); there is no
5
+ * per-call markup. Built from GUI primitives only.
6
+ *
7
+ * Mount `<ToastProvider>` once (the dashboard layout does). Call:
8
+ * const toast = useToast()
9
+ * toast.success('Created my-db')
10
+ * toast.error(err instanceof ApiError ? err.message : 'Failed to create')
11
+ */
12
+ import { type ReactNode } from 'react';
13
+ export type ToastKind = 'success' | 'error' | 'info';
14
+ export type ToastInput = {
15
+ title: string;
16
+ description?: string;
17
+ kind?: ToastKind;
18
+ /** Auto-dismiss after this many ms; 0 keeps it until dismissed. */
19
+ durationMs?: number;
20
+ };
21
+ type ToastApi = {
22
+ toast: (t: ToastInput) => void;
23
+ success: (title: string, description?: string) => void;
24
+ error: (title: string, description?: string) => void;
25
+ info: (title: string, description?: string) => void;
26
+ dismiss: (id: number) => void;
27
+ };
28
+ export declare function ToastProvider({ children }: {
29
+ children: ReactNode;
30
+ }): import("react").JSX.Element;
31
+ export declare function useToast(): ToastApi;
32
+ export {};
33
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,EAAuE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK3G,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B,CAAA;AAyED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAkDlE;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
@@ -0,0 +1,18 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { GetThemeValueForKey } from '@hanzo/gui';
3
+ /**
4
+ * Bridge between raw CSS colors (product hex accents) and Gui's typed `color`
5
+ * prop. Gui types `color` as a theme-token template (`$color12`, …), but ANY CSS
6
+ * color is valid at runtime — so tinting an icon with a product hex needs one
7
+ * sanctioned cast, in ONE place, rather than `as any` scattered around.
8
+ */
9
+ export type IconColor = GetThemeValueForKey<'color'>;
10
+ /** Cast a raw CSS color (e.g. `#5E6AD2`) to Gui's `color` prop type. */
11
+ export declare const asColor: (hex: string) => IconColor;
12
+ /** A lucide/Gui icon component that accepts a size + a (token-or-cast) color —
13
+ * the shape the shell passes around for product/nav icons. */
14
+ export type IconLike = ComponentType<{
15
+ size?: number;
16
+ color?: IconColor;
17
+ }>;
18
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/product/color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;AAEpD,wEAAwE;AACxE,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,SAAwC,CAAA;AAE9E;+DAC+D;AAC/D,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAA"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Combobox option filtering — pure, unit-tested.
3
+ *
4
+ * The ONE matcher the ComboBox uses to narrow a live option list against typed
5
+ * text. Matching is a LITERAL, case-insensitive substring over the option's
6
+ * value + label + hint — NEVER a compiled RegExp of user input (that would be a
7
+ * ReDoS / injection surface; the whole codebase filters with literal `includes`,
8
+ * e.g. marketplace/logic + filterOrgs). Kept dependency-free so it lifts into
9
+ * `@hanzo/ui` alongside the ComboBox.
10
+ */
11
+ /** One option in a combobox list. `value` is what gets committed; label/hint are display. */
12
+ export type ComboOption = {
13
+ /** The value committed to the field when this option is chosen. */
14
+ value: string;
15
+ /** Display label (defaults to `value`). */
16
+ label?: string;
17
+ /** Optional secondary text (e.g. a provider, a description) — also searched. */
18
+ hint?: string;
19
+ };
20
+ /**
21
+ * Filter `options` by `query` — a literal, case-insensitive substring over
22
+ * value/label/hint. An empty/whitespace query returns every option (no filter).
23
+ * PURE. The input is treated as a plain string, never a pattern.
24
+ */
25
+ export declare function filterOptions(options: ComboOption[], query: string): ComboOption[];
26
+ /** True iff `value` exactly matches an option's `value` (case-sensitive). */
27
+ export declare function isKnownOption(options: ComboOption[], value: string): boolean;
28
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/product/combobox/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,6FAA6F;AAC7F,MAAM,MAAM,WAAW,GAAG;IACxB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAIlF;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5E"}
@@ -0,0 +1,22 @@
1
+ export * from './Charts';
2
+ export { SERIES, colorForIndex, utilColor, Sparkline as MetricSparkline, MiniBars, UtilBar, LegendDot, MetricCard, HintButton, Panel, } from './Metric';
3
+ export { Donut as DonutRing, type DonutSegment } from './Donut';
4
+ export { ComboBox } from './ComboBox';
5
+ export * from './combobox/filter';
6
+ export * from './DataTable';
7
+ export * from './EmptyState';
8
+ export * from './FadeIn';
9
+ export * from './Field';
10
+ export * from './HanzoMark';
11
+ export * from './PageHeader';
12
+ export * from './PrimaryButton';
13
+ export * from './ProductIcon';
14
+ export * from './ProviderLogo';
15
+ export * from './Reorder';
16
+ export * from './SelectMenu';
17
+ export * from './SlideOver';
18
+ export * from './StatusTag';
19
+ export * from './ThemeToggle';
20
+ export * from './Toast';
21
+ export * from './color';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAA;AAKxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AAGjC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}