@hanzo/ui 8.0.11 → 8.0.12

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 (165) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/backends/gui/index.d.ts +2 -0
  3. package/dist/backends/shadcn/aspect-ratio.d.ts +4 -0
  4. package/dist/backends/shadcn/avatar.d.ts +6 -0
  5. package/dist/backends/shadcn/badge.d.ts +9 -0
  6. package/dist/backends/shadcn/button.d.ts +19 -0
  7. package/dist/backends/shadcn/card.d.ts +9 -0
  8. package/dist/backends/shadcn/checkbox.d.ts +9 -0
  9. package/dist/backends/shadcn/collapsible.d.ts +5 -0
  10. package/dist/backends/shadcn/command.d.ts +80 -0
  11. package/dist/backends/shadcn/dialog.d.ts +15 -0
  12. package/dist/backends/shadcn/dropdown-menu.d.ts +34 -0
  13. package/dist/backends/shadcn/index.d.ts +23 -0
  14. package/dist/backends/shadcn/input.d.ts +11 -0
  15. package/dist/backends/shadcn/label.d.ts +4 -0
  16. package/dist/backends/shadcn/popover.d.ts +7 -0
  17. package/dist/backends/shadcn/progress.d.ts +4 -0
  18. package/dist/backends/shadcn/scroll-area.d.ts +5 -0
  19. package/dist/backends/shadcn/select.d.ts +13 -0
  20. package/dist/backends/shadcn/separator.d.ts +4 -0
  21. package/dist/backends/shadcn/slider.d.ts +4 -0
  22. package/dist/backends/shadcn/switch.d.ts +4 -0
  23. package/dist/backends/shadcn/tabs.d.ts +7 -0
  24. package/dist/backends/shadcn/textarea.d.ts +4 -0
  25. package/dist/backends/shadcn/toaster.d.ts +10 -0
  26. package/dist/backends/shadcn/tooltip.d.ts +7 -0
  27. package/dist/backends/shadcn/utils.d.ts +8 -0
  28. package/dist/components.d.ts +1 -0
  29. package/dist/core/cn.d.ts +11 -0
  30. package/dist/core/fonts.d.ts +26 -0
  31. package/dist/core/index.d.ts +3 -0
  32. package/dist/core/tokens.d.ts +16 -0
  33. package/dist/index.cjs +1138 -291
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +1017 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/models/ModelSelector.d.ts +23 -0
  39. package/dist/models/catalog.d.ts +53 -0
  40. package/dist/models/index.d.ts +5 -0
  41. package/dist/models/types.d.ts +39 -0
  42. package/dist/primitives/AspectRatio.d.ts +1 -0
  43. package/dist/primitives/Avatar.d.ts +1 -0
  44. package/dist/primitives/AvatarFallback.d.ts +1 -0
  45. package/dist/primitives/AvatarImage.d.ts +1 -0
  46. package/dist/primitives/Badge.d.ts +1 -0
  47. package/dist/primitives/Button.d.ts +1 -0
  48. package/dist/primitives/Card.d.ts +1 -0
  49. package/dist/primitives/CardAction.d.ts +1 -0
  50. package/dist/primitives/CardContent.d.ts +1 -0
  51. package/dist/primitives/CardDescription.d.ts +1 -0
  52. package/dist/primitives/CardFooter.d.ts +1 -0
  53. package/dist/primitives/CardHeader.d.ts +1 -0
  54. package/dist/primitives/CardTitle.d.ts +1 -0
  55. package/dist/primitives/Checkbox.d.ts +1 -0
  56. package/dist/primitives/Collapsible.d.ts +1 -0
  57. package/dist/primitives/CollapsibleContent.d.ts +1 -0
  58. package/dist/primitives/CollapsibleTrigger.d.ts +1 -0
  59. package/dist/primitives/Command.d.ts +1 -0
  60. package/dist/primitives/CommandDialog.d.ts +1 -0
  61. package/dist/primitives/CommandEmpty.d.ts +1 -0
  62. package/dist/primitives/CommandGroup.d.ts +1 -0
  63. package/dist/primitives/CommandInput.d.ts +1 -0
  64. package/dist/primitives/CommandItem.d.ts +1 -0
  65. package/dist/primitives/CommandList.d.ts +1 -0
  66. package/dist/primitives/CommandSeparator.d.ts +1 -0
  67. package/dist/primitives/CommandShortcut.d.ts +1 -0
  68. package/dist/primitives/Dialog.d.ts +1 -0
  69. package/dist/primitives/DialogClose.d.ts +1 -0
  70. package/dist/primitives/DialogContent.d.ts +1 -0
  71. package/dist/primitives/DialogDescription.d.ts +1 -0
  72. package/dist/primitives/DialogFooter.d.ts +1 -0
  73. package/dist/primitives/DialogHeader.d.ts +1 -0
  74. package/dist/primitives/DialogOverlay.d.ts +1 -0
  75. package/dist/primitives/DialogPortal.d.ts +1 -0
  76. package/dist/primitives/DialogTitle.d.ts +1 -0
  77. package/dist/primitives/DialogTrigger.d.ts +1 -0
  78. package/dist/primitives/DropdownMenu.d.ts +1 -0
  79. package/dist/primitives/DropdownMenuCheckboxItem.d.ts +1 -0
  80. package/dist/primitives/DropdownMenuContent.d.ts +1 -0
  81. package/dist/primitives/DropdownMenuGroup.d.ts +1 -0
  82. package/dist/primitives/DropdownMenuItem.d.ts +1 -0
  83. package/dist/primitives/DropdownMenuLabel.d.ts +1 -0
  84. package/dist/primitives/DropdownMenuPortal.d.ts +1 -0
  85. package/dist/primitives/DropdownMenuRadioGroup.d.ts +1 -0
  86. package/dist/primitives/DropdownMenuRadioItem.d.ts +1 -0
  87. package/dist/primitives/DropdownMenuSeparator.d.ts +1 -0
  88. package/dist/primitives/DropdownMenuShortcut.d.ts +1 -0
  89. package/dist/primitives/DropdownMenuSub.d.ts +1 -0
  90. package/dist/primitives/DropdownMenuSubContent.d.ts +1 -0
  91. package/dist/primitives/DropdownMenuSubTrigger.d.ts +1 -0
  92. package/dist/primitives/DropdownMenuTrigger.d.ts +1 -0
  93. package/dist/primitives/Input.d.ts +1 -0
  94. package/dist/primitives/Label.d.ts +1 -0
  95. package/dist/primitives/Popover.d.ts +1 -0
  96. package/dist/primitives/PopoverAnchor.d.ts +1 -0
  97. package/dist/primitives/PopoverContent.d.ts +1 -0
  98. package/dist/primitives/PopoverTrigger.d.ts +1 -0
  99. package/dist/primitives/Progress.d.ts +1 -0
  100. package/dist/primitives/ScrollArea.d.ts +1 -0
  101. package/dist/primitives/ScrollBar.d.ts +1 -0
  102. package/dist/primitives/Select.d.ts +1 -0
  103. package/dist/primitives/SelectContent.d.ts +1 -0
  104. package/dist/primitives/SelectGroup.d.ts +1 -0
  105. package/dist/primitives/SelectItem.d.ts +1 -0
  106. package/dist/primitives/SelectLabel.d.ts +1 -0
  107. package/dist/primitives/SelectScrollDownButton.d.ts +1 -0
  108. package/dist/primitives/SelectScrollUpButton.d.ts +1 -0
  109. package/dist/primitives/SelectSeparator.d.ts +1 -0
  110. package/dist/primitives/SelectTrigger.d.ts +1 -0
  111. package/dist/primitives/SelectValue.d.ts +1 -0
  112. package/dist/primitives/Separator.d.ts +1 -0
  113. package/dist/primitives/Slider.d.ts +1 -0
  114. package/dist/primitives/Switch.d.ts +1 -0
  115. package/dist/primitives/Tabs.d.ts +1 -0
  116. package/dist/primitives/TabsContent.d.ts +1 -0
  117. package/dist/primitives/TabsList.d.ts +1 -0
  118. package/dist/primitives/TabsTrigger.d.ts +1 -0
  119. package/dist/primitives/Textarea.d.ts +1 -0
  120. package/dist/primitives/Toaster.d.ts +1 -0
  121. package/dist/primitives/Tooltip.d.ts +1 -0
  122. package/dist/primitives/TooltipContent.d.ts +1 -0
  123. package/dist/primitives/TooltipProvider.d.ts +1 -0
  124. package/dist/primitives/TooltipTrigger.d.ts +1 -0
  125. package/dist/primitives/badgeVariants.d.ts +1 -0
  126. package/dist/primitives/buttonVariants.d.ts +1 -0
  127. package/dist/primitives/index.d.ts +1 -0
  128. package/dist/primitives/toast.d.ts +1 -0
  129. package/dist/product/AnimatedLogo.d.ts +47 -0
  130. package/dist/product/BackendState.d.ts +42 -0
  131. package/dist/product/Charts.d.ts +4 -0
  132. package/dist/product/CommerceResource.d.ts +32 -0
  133. package/dist/product/ConfirmDelete.d.ts +8 -0
  134. package/dist/product/DataTable.d.ts +30 -2
  135. package/dist/product/Field.d.ts +7 -2
  136. package/dist/product/Filters.d.ts +29 -0
  137. package/dist/product/PrimaryButton.d.ts +5 -0
  138. package/dist/product/SiteFooter.d.ts +28 -0
  139. package/dist/product/SiteNav.d.ts +60 -0
  140. package/dist/product/accent.d.ts +33 -0
  141. package/dist/product/animatedLogo.logic.d.ts +52 -0
  142. package/dist/product/brand.d.ts +45 -0
  143. package/dist/product/host.d.ts +21 -0
  144. package/dist/product/index.cjs +3205 -265
  145. package/dist/product/index.cjs.map +1 -1
  146. package/dist/product/index.d.ts +11 -0
  147. package/dist/product/index.js +3103 -1
  148. package/dist/product/index.js.map +1 -1
  149. package/dist/product/social/CampaignCard.d.ts +13 -0
  150. package/dist/product/social/ChannelBadge.d.ts +12 -0
  151. package/dist/product/social/PostAgenda.d.ts +5 -0
  152. package/dist/product/social/PostCard.d.ts +15 -0
  153. package/dist/product/social/PostComposer.d.ts +24 -0
  154. package/dist/product/social/ProviderReadinessList.d.ts +10 -0
  155. package/dist/product/social/SocialSummaryBar.d.ts +9 -0
  156. package/dist/product/social/ViewToggle.d.ts +5 -0
  157. package/dist/product/social/format.d.ts +16 -0
  158. package/dist/product/social/index.d.ts +9 -0
  159. package/dist/product/surfaces.data.d.ts +1 -0
  160. package/dist/styles/hanzo-motion.css +52 -0
  161. package/package.json +94 -20
  162. package/dist/chunk-M2ILMK44.cjs +0 -2104
  163. package/dist/chunk-M2ILMK44.cjs.map +0 -1
  164. package/dist/chunk-YSURJUOA.js +0 -2035
  165. package/dist/chunk-YSURJUOA.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ export type Campaign = {
2
+ id: string;
3
+ name: string;
4
+ channel: string;
5
+ status: string;
6
+ objective?: string;
7
+ /** minor units (cents) */
8
+ budget: number;
9
+ spend: number;
10
+ };
11
+ export declare function CampaignCard({ campaign }: {
12
+ campaign: Campaign;
13
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export type Channel = 'x' | 'facebook' | 'instagram' | 'linkedin' | 'tiktok' | 'youtube' | 'threads';
2
+ /**
3
+ * A known network, or whatever string the server sent. The badge renders unknown
4
+ * values through the `x` fallback below, so the type says what it really accepts —
5
+ * callers keep autocomplete without having to narrow a `string` field first.
6
+ */
7
+ export type ChannelLike = Channel | (string & {});
8
+ export declare function ChannelBadge({ channel, showLabel, size, }: {
9
+ channel: ChannelLike;
10
+ showLabel?: boolean;
11
+ size?: number;
12
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import type { Post } from './PostCard';
2
+ export declare function PostAgenda({ posts, onOpen }: {
3
+ posts: Post[];
4
+ onOpen: (p: Post) => void;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { type ChannelLike } from './ChannelBadge';
2
+ export type Post = {
3
+ id: string;
4
+ content: string;
5
+ channel: ChannelLike;
6
+ status: string;
7
+ /** unix seconds; 0/undefined = not scheduled */
8
+ scheduleAt?: number;
9
+ media?: string[];
10
+ };
11
+ export declare function PostCard({ post, onEdit, onDelete, }: {
12
+ post: Post;
13
+ onEdit?: (p: Post) => void;
14
+ onDelete?: (p: Post) => void;
15
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import type { ProviderCapability } from './ProviderReadinessList';
2
+ /** Compose intents → the (status, scheduleAt) the backend stores. */
3
+ export declare const COMPOSE_MODES: readonly ["draft", "schedule", "now"];
4
+ export type ComposeMode = (typeof COMPOSE_MODES)[number];
5
+ /** The writable fields of a new post — what the intent above encodes. */
6
+ export type PostDraft = {
7
+ content: string;
8
+ channel: string;
9
+ status: string;
10
+ /** unix seconds; 0 = not scheduled / publish now */
11
+ scheduleAt: number;
12
+ };
13
+ export declare function PostComposer({ channels, providers, onSubmit, }: {
14
+ /** The networks offered, in order; the first is the default. */
15
+ channels: string[];
16
+ /** Live publish-readiness, used to warn before a publish that cannot succeed. */
17
+ providers: ProviderCapability[];
18
+ /**
19
+ * Persist the draft. Resolve `null` when it landed — the host then swaps this
20
+ * panel out — or a message to surface, which keeps the panel open and editable.
21
+ * Total by contract: the host classifies its own failures rather than throwing.
22
+ */
23
+ onSubmit: (draft: PostDraft, mode: ComposeMode) => Promise<string | null>;
24
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ /** One network's readiness, as reported by the server. */
2
+ export type ProviderCapability = {
3
+ provider: string;
4
+ credentialsConfigured: boolean;
5
+ /** The env vars still missing — shown verbatim, never summarized away. */
6
+ missingCredentials: string[];
7
+ };
8
+ export declare function ProviderReadinessList({ providers }: {
9
+ providers: ProviderCapability[];
10
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ export type SocialSummary = {
2
+ posts: number;
3
+ scheduled: number;
4
+ published: number;
5
+ accounts: number;
6
+ };
7
+ export declare function SocialSummaryBar({ summary }: {
8
+ summary: SocialSummary;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export type PostView = 'list' | 'calendar';
2
+ export declare function ViewToggle({ view, onChange, }: {
3
+ view: PostView;
4
+ onChange: (v: PostView) => void;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The ONE place a post's schedule time and body are formatted, bucketed by day,
3
+ * and parsed. Pure (no React, no host) so the agenda, the table cells and the
4
+ * composer all read the same clock. Extracted from Hanzo Social.
5
+ */
6
+ /** Unix seconds → a short local timestamp, or '—' when unset (0). */
7
+ export declare function formatPostTime(unix: number): string;
8
+ /** Unix seconds → a day bucket key + label for the agenda (calendar) view. */
9
+ export declare function postDayBucket(unix: number): {
10
+ key: string;
11
+ label: string;
12
+ };
13
+ /** Truncate a post body for a table cell / agenda card. */
14
+ export declare function postPreview(s: string): string;
15
+ /** Parse a user-typed datetime (ISO or local) into unix seconds; invalid → 0. */
16
+ export declare function parsePostTime(dt: string): number;
@@ -0,0 +1,9 @@
1
+ export * from './ChannelBadge';
2
+ export * from './CampaignCard';
3
+ export * from './PostCard';
4
+ export * from './PostAgenda';
5
+ export * from './PostComposer';
6
+ export * from './ProviderReadinessList';
7
+ export * from './SocialSummaryBar';
8
+ export * from './ViewToggle';
9
+ export * from './format';
@@ -1,3 +1,4 @@
1
+ /** The seven surfaces this shell's app switcher offers. */
1
2
  export type SurfaceId = 'ai' | 'console' | 'app' | 'chat' | 'bot' | 'team' | 'billing';
2
3
  /** One Hanzo surface the app switcher offers. */
3
4
  export type Surface = {
@@ -134,3 +134,55 @@
134
134
  animation: none;
135
135
  }
136
136
  }
137
+
138
+ /* ── Typography + surface classes the product layer's components reference ──────
139
+ DataTable/Metric typeset numeric cells with `hz-mono`/`hz-tnum`; ComboBox and
140
+ SelectMenu paint their popovers with `hz-paper hz-menu-in`; DataTable rows use
141
+ `hz-row`. They travel WITH the components (this is the package's one stylesheet)
142
+ so any host that imports `@hanzo/ui/styles/motion.css` renders them correctly.
143
+ The elevation/ring variables fall back to sane values, so a host that defines its
144
+ own `--hz-*` theme tokens (the console does) still wins. */
145
+
146
+ .hz-tnum {
147
+ font-variant-numeric: tabular-nums;
148
+ font-feature-settings: 'tnum' 1;
149
+ }
150
+
151
+ /* Data/numeric face — Geist Mono + tabular figures for metric values, prices, IDs
152
+ and counts, so numbers read as precise, column-aligned data. */
153
+ .hz-mono {
154
+ font-family: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
155
+ font-variant-numeric: tabular-nums;
156
+ font-feature-settings: 'tnum' 1;
157
+ letter-spacing: -0.01em;
158
+ }
159
+
160
+ .hz-paper {
161
+ box-shadow: var(--hz-ring, inset 0 0 0 1px rgba(255, 255, 255, 0.08)),
162
+ var(--hz-paper-highlight, inset 0 1px 0 0 rgba(255, 255, 255, 0.05)),
163
+ var(--hz-elevation-3, 0 8px 24px rgba(0, 0, 0, 0.36));
164
+ }
165
+
166
+ @keyframes hz-menu-in {
167
+ from {
168
+ opacity: 0;
169
+ }
170
+ to {
171
+ opacity: 1;
172
+ }
173
+ }
174
+
175
+ .hz-menu-in {
176
+ animation: hz-menu-in 140ms ease-out both;
177
+ will-change: opacity;
178
+ }
179
+
180
+ .hz-row {
181
+ transition: background-color 140ms ease-out;
182
+ }
183
+
184
+ @media (prefers-reduced-motion: reduce) {
185
+ .hz-menu-in {
186
+ animation: none;
187
+ }
188
+ }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.11",
3
+ "version": "8.0.12",
4
4
  "type": "module",
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.",
5
+ "description": "Hanzo UI the one canonical, backend-flexible component library on @hanzo/gui + @hanzo/tokens. A shared design core (Hanzo dark-first tokens, Geist Sans/Mono typography) with per-backend implementations: the shadcn-compatible web surface (Radix + Tailwind, the API apps import) and the @hanzo/gui product layer (cross-platform web + native + desktop). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {
7
7
  ".": {
8
8
  "types": "./dist/index.d.ts",
@@ -10,6 +10,36 @@
10
10
  "require": "./dist/index.cjs",
11
11
  "default": "./dist/index.js"
12
12
  },
13
+ "./shadcn": {
14
+ "types": "./src/backends/shadcn/index.ts",
15
+ "default": "./src/backends/shadcn/index.ts"
16
+ },
17
+ "./gui": {
18
+ "types": "./src/backends/gui/index.ts",
19
+ "default": "./src/backends/gui/index.ts"
20
+ },
21
+ "./svelte": {
22
+ "svelte": "./src/backends/svelte/index.ts",
23
+ "types": "./src/backends/svelte/index.ts",
24
+ "default": "./src/backends/svelte/index.ts"
25
+ },
26
+ "./components": {
27
+ "types": "./src/components.ts",
28
+ "default": "./src/components.ts"
29
+ },
30
+ "./models": {
31
+ "types": "./src/models/index.ts",
32
+ "default": "./src/models/index.ts"
33
+ },
34
+ "./core": {
35
+ "types": "./src/core/index.ts",
36
+ "default": "./src/core/index.ts"
37
+ },
38
+ "./tokens": {
39
+ "types": "./src/core/tokens.ts",
40
+ "default": "./src/core/tokens.ts"
41
+ },
42
+ "./theme.css": "./src/theme.css",
13
43
  "./product": {
14
44
  "types": "./dist/product/index.d.ts",
15
45
  "import": "./dist/product/index.js",
@@ -22,12 +52,20 @@
22
52
  "require": "./dist/data.cjs",
23
53
  "default": "./dist/data.js"
24
54
  },
55
+ "./primitives": {
56
+ "types": "./src/primitives/index.ts",
57
+ "default": "./src/primitives/index.ts"
58
+ },
25
59
  "./primitives/bases/data": {
26
60
  "types": "./dist/primitives/bases/data/index.d.ts",
27
61
  "import": "./dist/primitives/bases/data/index.js",
28
62
  "require": "./dist/primitives/bases/data/index.cjs",
29
63
  "default": "./dist/primitives/bases/data/index.js"
30
64
  },
65
+ "./primitives/*": {
66
+ "types": "./src/primitives/*.tsx",
67
+ "default": "./src/primitives/*.tsx"
68
+ },
31
69
  "./gitops": {
32
70
  "types": "./dist/gitops.d.ts",
33
71
  "import": "./dist/gitops.js",
@@ -94,14 +132,35 @@
94
132
  "files": [
95
133
  "dist"
96
134
  ],
97
- "scripts": {
98
- "build": "tsup && tsc -p tsconfig.build.json && mkdir -p dist/styles && cp src/styles/hanzo-motion.css dist/styles/hanzo-motion.css && node scripts/add-use-client.mjs",
99
- "clean": "rm -rf dist types",
100
- "prepack": "pnpm run build",
101
- "tc": "tsc --noEmit",
102
- "typecheck": "tsc --noEmit",
103
- "test": "vitest run",
104
- "test:watch": "vitest"
135
+ "dependencies": {
136
+ "@hanzo/logo": "^1.0.13",
137
+ "@hanzogui/telemetry": "^0.1.0",
138
+ "@radix-ui/react-aspect-ratio": "^1.1.8",
139
+ "@radix-ui/react-avatar": "^1.1.11",
140
+ "@radix-ui/react-checkbox": "^1.3.3",
141
+ "@radix-ui/react-collapsible": "^1.1.12",
142
+ "@radix-ui/react-dialog": "^1.1.15",
143
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
144
+ "@radix-ui/react-icons": "^1.3.2",
145
+ "@radix-ui/react-label": "^2.1.8",
146
+ "@radix-ui/react-popover": "^1.1.15",
147
+ "@radix-ui/react-progress": "^1.1.8",
148
+ "@radix-ui/react-scroll-area": "^1.2.10",
149
+ "@radix-ui/react-select": "^2.2.6",
150
+ "@radix-ui/react-separator": "^1.1.8",
151
+ "@radix-ui/react-slider": "^1.3.6",
152
+ "@radix-ui/react-slot": "^1.2.4",
153
+ "@radix-ui/react-switch": "^1.2.6",
154
+ "@radix-ui/react-tabs": "^1.1.13",
155
+ "@radix-ui/react-tooltip": "^1.2.8",
156
+ "class-variance-authority": "^0.7.1",
157
+ "clsx": "^2.1.1",
158
+ "cmdk": "^1.1.1",
159
+ "lucide-react": ">=0.456.0",
160
+ "sonner": "^2.0.7",
161
+ "tailwind-merge": "^3.5.0",
162
+ "@hanzo/products": "0.2.0",
163
+ "@hanzo/tokens": "1.0.0"
105
164
  },
106
165
  "peerDependencies": {
107
166
  "@hanzo/canvas": ">=0.1.0",
@@ -111,10 +170,17 @@
111
170
  "@hanzo/gui": ">=7.2.2",
112
171
  "@hanzo/ui-shadcn": ">=5.7.0",
113
172
  "@hanzo/usage": ">=0.1.0",
173
+ "@hanzogui/lucide-icons-2": ">=7.3.0",
114
174
  "@hanzogui/next-theme": ">=7.3.0",
115
- "react": ">=19"
175
+ "next-themes": ">=0.2.1",
176
+ "react": ">=19",
177
+ "react-dom": ">=19",
178
+ "svelte": ">=5"
116
179
  },
117
180
  "peerDependenciesMeta": {
181
+ "svelte": {
182
+ "optional": true
183
+ },
118
184
  "@hanzo/canvas": {
119
185
  "optional": true
120
186
  },
@@ -132,16 +198,14 @@
132
198
  },
133
199
  "@hanzogui/next-theme": {
134
200
  "optional": true
201
+ },
202
+ "next-themes": {
203
+ "optional": true
135
204
  }
136
205
  },
137
206
  "devDependencies": {
138
- "@hanzo/canvas": "workspace:*",
139
- "@hanzo/dashboard": "workspace:*",
140
207
  "@hanzo/data": "1.2.1",
141
- "@hanzo/gitops": "workspace:*",
142
208
  "@hanzo/gui": "7.3.0",
143
- "@hanzo/ui-shadcn": "workspace:*",
144
- "@hanzo/usage": "^0.1.6",
145
209
  "@hanzogui/config": "7.3.0",
146
210
  "@hanzogui/core": "7.3.0",
147
211
  "@hanzogui/lucide-icons-2": "7.3.0",
@@ -149,8 +213,11 @@
149
213
  "@hanzogui/web": "7.3.0",
150
214
  "@types/react": "^19.1.10",
151
215
  "@types/react-dom": "^19.1.0",
216
+ "next-themes": "^0.4.6",
152
217
  "react": "^19.0.0",
153
218
  "react-dom": "^19.0.0",
219
+ "svelte": "^4.2.20",
220
+ "svelte-check": "^3.8.6",
154
221
  "typescript": "^5.7.2",
155
222
  "vitest": "^4.1.8",
156
223
  "react-native-web": "^0.21.2",
@@ -161,8 +228,15 @@
161
228
  },
162
229
  "license": "BSD-3-Clause",
163
230
  "author": "Hanzo AI <dev@hanzo.ai>",
164
- "dependencies": {
165
- "@hanzo/logo": "^1.0.13",
166
- "@hanzogui/telemetry": "^0.1.0"
231
+ "scripts": {
232
+ "build": "tsup && tsc -p tsconfig.build.json && mkdir -p dist/styles && cp src/styles/hanzo-motion.css dist/styles/hanzo-motion.css && node scripts/add-use-client.mjs",
233
+ "clean": "rm -rf dist types",
234
+ "gen:primitives": "node scripts/gen-primitives.mjs",
235
+ "tc": "tsc --noEmit",
236
+ "typecheck": "tsc --noEmit",
237
+ "typecheck:ui": "tsc -p tsconfig.check.json",
238
+ "check:svelte": "svelte-check --tsconfig ./tsconfig.svelte.json",
239
+ "test": "vitest run",
240
+ "test:watch": "vitest"
167
241
  }
168
- }
242
+ }