@hanzo/ui 8.0.7 → 8.0.11

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 (227) hide show
  1. package/dist/ThemeToggleNext-7727UR5W.js +4 -0
  2. package/dist/ThemeToggleNext-7727UR5W.js.map +1 -0
  3. package/dist/ThemeToggleNext-ICB5KL5J.cjs +19 -0
  4. package/dist/ThemeToggleNext-ICB5KL5J.cjs.map +1 -0
  5. package/dist/billing.cjs +15 -0
  6. package/dist/billing.cjs.map +1 -0
  7. package/{types → dist}/billing.d.ts +0 -1
  8. package/dist/billing.js +4 -0
  9. package/dist/billing.js.map +1 -0
  10. package/dist/canvas.cjs +15 -0
  11. package/dist/canvas.cjs.map +1 -0
  12. package/dist/canvas.d.ts +1 -0
  13. package/dist/canvas.js +4 -0
  14. package/dist/canvas.js.map +1 -0
  15. package/{types → dist}/cd/layout.d.ts +0 -1
  16. package/{types → dist}/cd/status.d.ts +0 -1
  17. package/{types → dist}/cd/time.d.ts +0 -1
  18. package/{types → dist}/cd/types.d.ts +0 -1
  19. package/dist/chunk-42CU5GSF.js +98 -0
  20. package/dist/chunk-42CU5GSF.js.map +1 -0
  21. package/dist/chunk-M2ILMK44.cjs +2104 -0
  22. package/dist/chunk-M2ILMK44.cjs.map +1 -0
  23. package/dist/chunk-YBXVUV7P.cjs +103 -0
  24. package/dist/chunk-YBXVUV7P.cjs.map +1 -0
  25. package/dist/chunk-YSURJUOA.js +2035 -0
  26. package/dist/chunk-YSURJUOA.js.map +1 -0
  27. package/dist/dashboard.cjs +15 -0
  28. package/dist/dashboard.cjs.map +1 -0
  29. package/dist/dashboard.d.ts +1 -0
  30. package/dist/dashboard.js +4 -0
  31. package/dist/dashboard.js.map +1 -0
  32. package/dist/data.cjs +15 -0
  33. package/dist/data.cjs.map +1 -0
  34. package/dist/data.d.ts +1 -0
  35. package/dist/data.js +4 -0
  36. package/dist/data.js.map +1 -0
  37. package/dist/gitops.cjs +15 -0
  38. package/dist/gitops.cjs.map +1 -0
  39. package/dist/gitops.d.ts +1 -0
  40. package/dist/gitops.js +4 -0
  41. package/dist/gitops.js.map +1 -0
  42. package/dist/index.cjs +299 -0
  43. package/dist/index.cjs.map +1 -0
  44. package/{types → dist}/index.d.ts +0 -1
  45. package/dist/index.js +6 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/network.cjs +15 -0
  48. package/dist/network.cjs.map +1 -0
  49. package/{types → dist}/network.d.ts +0 -1
  50. package/dist/network.js +4 -0
  51. package/dist/network.js.map +1 -0
  52. package/dist/oss/blueprint.d.ts +37 -0
  53. package/dist/oss/catalog.d.ts +67 -0
  54. package/dist/oss.cjs +190 -0
  55. package/dist/oss.cjs.map +1 -0
  56. package/dist/oss.d.ts +2 -0
  57. package/dist/oss.js +180 -0
  58. package/dist/oss.js.map +1 -0
  59. package/dist/primitives/bases/data/index.cjs +15 -0
  60. package/dist/primitives/bases/data/index.cjs.map +1 -0
  61. package/dist/primitives/bases/data/index.d.ts +1 -0
  62. package/dist/primitives/bases/data/index.js +4 -0
  63. package/dist/primitives/bases/data/index.js.map +1 -0
  64. package/{types → dist}/product/AppHeader.d.ts +0 -1
  65. package/{types → dist}/product/BrandMark.d.ts +0 -1
  66. package/{types → dist}/product/Charts.d.ts +0 -1
  67. package/{types → dist}/product/ComboBox.d.ts +0 -1
  68. package/{types → dist}/product/DataTable.d.ts +0 -1
  69. package/{types → dist}/product/Donut.d.ts +0 -1
  70. package/{types → dist}/product/EmptyState.d.ts +0 -1
  71. package/{types → dist}/product/FadeIn.d.ts +0 -1
  72. package/{types → dist}/product/Field.d.ts +0 -1
  73. package/{types → dist}/product/HanzoMark.d.ts +0 -1
  74. package/{types → dist}/product/Metric.d.ts +0 -1
  75. package/dist/product/OrgMark.d.ts +21 -0
  76. package/{types → dist}/product/OrgSwitcher.d.ts +8 -2
  77. package/{types → dist}/product/PageHeader.d.ts +0 -1
  78. package/{types → dist}/product/PrimaryButton.d.ts +0 -1
  79. package/{types → dist}/product/ProductIcon.d.ts +0 -1
  80. package/{types → dist}/product/ProviderLogo.d.ts +0 -1
  81. package/{types → dist}/product/Reorder.d.ts +0 -1
  82. package/{types → dist}/product/SelectMenu.d.ts +6 -8
  83. package/{types → dist}/product/SlideOver.d.ts +0 -1
  84. package/{types → dist}/product/StatusTag.d.ts +0 -1
  85. package/{types → dist}/product/ThemeToggle.d.ts +0 -1
  86. package/{types → dist}/product/ThemeToggleNext.d.ts +0 -1
  87. package/{types → dist}/product/Toast.d.ts +0 -1
  88. package/{types → dist}/product/color.d.ts +0 -1
  89. package/{types → dist}/product/combobox/filter.d.ts +0 -1
  90. package/dist/product/index.cjs +286 -0
  91. package/dist/product/index.cjs.map +1 -0
  92. package/{types → dist}/product/index.d.ts +1 -1
  93. package/dist/product/index.js +5 -0
  94. package/dist/product/index.js.map +1 -0
  95. package/{types → dist}/product/menu/ContextMenu.d.ts +3 -6
  96. package/dist/product/menu/DropdownMenu.d.ts +29 -0
  97. package/dist/product/menu/FloatingMenu.d.ts +36 -0
  98. package/{types → dist}/product/menu/index.d.ts +1 -1
  99. package/{types → dist}/product/menu/items.d.ts +0 -1
  100. package/{types → dist}/product/menu/portal-theme.d.ts +0 -1
  101. package/{types → dist}/product/menu/roving.d.ts +0 -1
  102. package/{types → dist}/product/scope.d.ts +0 -1
  103. package/{types → dist}/product/surfaces.data.d.ts +0 -1
  104. package/dist/telemetry.cjs +15 -0
  105. package/dist/telemetry.cjs.map +1 -0
  106. package/dist/telemetry.d.ts +1 -0
  107. package/dist/telemetry.js +4 -0
  108. package/dist/telemetry.js.map +1 -0
  109. package/dist/usage.cjs +15 -0
  110. package/dist/usage.cjs.map +1 -0
  111. package/dist/usage.d.ts +1 -0
  112. package/dist/usage.js +4 -0
  113. package/dist/usage.js.map +1 -0
  114. package/dist/wallet.cjs +15 -0
  115. package/dist/wallet.cjs.map +1 -0
  116. package/{types → dist}/wallet.d.ts +0 -1
  117. package/dist/wallet.js +4 -0
  118. package/dist/wallet.js.map +1 -0
  119. package/package.json +69 -34
  120. package/src/billing.ts +0 -9
  121. package/src/canvas.ts +0 -11
  122. package/src/cd/layout.ts +0 -184
  123. package/src/cd/status.ts +0 -158
  124. package/src/cd/time.ts +0 -52
  125. package/src/cd/types.ts +0 -318
  126. package/src/dashboard.ts +0 -8
  127. package/src/data.ts +0 -12
  128. package/src/gitops.ts +0 -5
  129. package/src/gui-env.d.ts +0 -27
  130. package/src/index.ts +0 -22
  131. package/src/network.ts +0 -11
  132. package/src/primitives/bases/data/index.ts +0 -13
  133. package/src/product/AppHeader.tsx +0 -183
  134. package/src/product/BrandMark.tsx +0 -27
  135. package/src/product/Charts.tsx +0 -471
  136. package/src/product/ComboBox.tsx +0 -127
  137. package/src/product/DataTable.tsx +0 -99
  138. package/src/product/Donut.tsx +0 -83
  139. package/src/product/EmptyState.tsx +0 -129
  140. package/src/product/FadeIn.tsx +0 -38
  141. package/src/product/Field.tsx +0 -160
  142. package/src/product/HanzoMark.tsx +0 -31
  143. package/src/product/Metric.tsx +0 -253
  144. package/src/product/OrgSwitcher.tsx +0 -332
  145. package/src/product/PageHeader.tsx +0 -31
  146. package/src/product/PrimaryButton.tsx +0 -17
  147. package/src/product/ProductIcon.tsx +0 -61
  148. package/src/product/ProviderLogo.tsx +0 -137
  149. package/src/product/Reorder.test.ts +0 -41
  150. package/src/product/Reorder.tsx +0 -110
  151. package/src/product/SelectMenu.tsx +0 -80
  152. package/src/product/SlideOver.tsx +0 -197
  153. package/src/product/StatusTag.tsx +0 -49
  154. package/src/product/ThemeToggle.tsx +0 -135
  155. package/src/product/ThemeToggleNext.tsx +0 -27
  156. package/src/product/Toast.tsx +0 -166
  157. package/src/product/color.ts +0 -17
  158. package/src/product/combobox/filter.test.ts +0 -51
  159. package/src/product/combobox/filter.ts +0 -39
  160. package/src/product/index.ts +0 -76
  161. package/src/product/menu/ContextMenu.tsx +0 -114
  162. package/src/product/menu/DropdownMenu.tsx +0 -76
  163. package/src/product/menu/index.ts +0 -15
  164. package/src/product/menu/items.tsx +0 -230
  165. package/src/product/menu/portal-theme.tsx +0 -33
  166. package/src/product/menu/roving.ts +0 -34
  167. package/src/product/scope.test.ts +0 -92
  168. package/src/product/scope.ts +0 -123
  169. package/src/product/surfaces.data.ts +0 -42
  170. package/src/usage.ts +0 -8
  171. package/src/wallet.ts +0 -11
  172. package/types/billing.d.ts.map +0 -1
  173. package/types/canvas.d.ts +0 -2
  174. package/types/canvas.d.ts.map +0 -1
  175. package/types/cd/layout.d.ts.map +0 -1
  176. package/types/cd/status.d.ts.map +0 -1
  177. package/types/cd/time.d.ts.map +0 -1
  178. package/types/cd/types.d.ts.map +0 -1
  179. package/types/dashboard.d.ts +0 -2
  180. package/types/dashboard.d.ts.map +0 -1
  181. package/types/data.d.ts +0 -2
  182. package/types/data.d.ts.map +0 -1
  183. package/types/gitops.d.ts +0 -2
  184. package/types/gitops.d.ts.map +0 -1
  185. package/types/index.d.ts.map +0 -1
  186. package/types/network.d.ts.map +0 -1
  187. package/types/primitives/bases/data/index.d.ts +0 -2
  188. package/types/primitives/bases/data/index.d.ts.map +0 -1
  189. package/types/product/AppHeader.d.ts.map +0 -1
  190. package/types/product/BrandMark.d.ts.map +0 -1
  191. package/types/product/Charts.d.ts.map +0 -1
  192. package/types/product/ComboBox.d.ts.map +0 -1
  193. package/types/product/DataTable.d.ts.map +0 -1
  194. package/types/product/Donut.d.ts.map +0 -1
  195. package/types/product/EmptyState.d.ts.map +0 -1
  196. package/types/product/FadeIn.d.ts.map +0 -1
  197. package/types/product/Field.d.ts.map +0 -1
  198. package/types/product/HanzoMark.d.ts.map +0 -1
  199. package/types/product/Metric.d.ts.map +0 -1
  200. package/types/product/OrgSwitcher.d.ts.map +0 -1
  201. package/types/product/PageHeader.d.ts.map +0 -1
  202. package/types/product/PrimaryButton.d.ts.map +0 -1
  203. package/types/product/ProductIcon.d.ts.map +0 -1
  204. package/types/product/ProviderLogo.d.ts.map +0 -1
  205. package/types/product/Reorder.d.ts.map +0 -1
  206. package/types/product/SelectMenu.d.ts.map +0 -1
  207. package/types/product/SlideOver.d.ts.map +0 -1
  208. package/types/product/StatusTag.d.ts.map +0 -1
  209. package/types/product/ThemeToggle.d.ts.map +0 -1
  210. package/types/product/ThemeToggleNext.d.ts.map +0 -1
  211. package/types/product/Toast.d.ts.map +0 -1
  212. package/types/product/color.d.ts.map +0 -1
  213. package/types/product/combobox/filter.d.ts.map +0 -1
  214. package/types/product/index.d.ts.map +0 -1
  215. package/types/product/menu/ContextMenu.d.ts.map +0 -1
  216. package/types/product/menu/DropdownMenu.d.ts +0 -34
  217. package/types/product/menu/DropdownMenu.d.ts.map +0 -1
  218. package/types/product/menu/index.d.ts.map +0 -1
  219. package/types/product/menu/items.d.ts.map +0 -1
  220. package/types/product/menu/portal-theme.d.ts.map +0 -1
  221. package/types/product/menu/roving.d.ts.map +0 -1
  222. package/types/product/scope.d.ts.map +0 -1
  223. package/types/product/surfaces.data.d.ts.map +0 -1
  224. package/types/usage.d.ts +0 -2
  225. package/types/usage.d.ts.map +0 -1
  226. package/types/wallet.d.ts.map +0 -1
  227. /package/{src → dist}/styles/hanzo-motion.css +0 -0
package/src/cd/types.ts DELETED
@@ -1,318 +0,0 @@
1
- /**
2
- * @hanzo/ui/cd — the Hanzo CD (continuous-delivery) data contract.
3
- *
4
- * This is the FE↔BE handshake for the `/v1/gitops` API. Every component in this
5
- * module is presentational and data-prop-driven: a host console fetches these
6
- * rows (via the injected `GitopsClient`) and hands them to the views. The shapes
7
- * live in ONE place so the pure folds (status → tone, tree → graph, diff → hunks)
8
- * are unit-tested in isolation and the visual components never reach into a data
9
- * layer.
10
- *
11
- * The vocabulary mirrors a GitOps engine's model (health/sync verdicts, the
12
- * owner-reference resource graph, operation phases) so a backend that projects a
13
- * cluster's live state maps onto it directly, but the names are engine-neutral.
14
- *
15
- * Attribution: the information design of these views is a derivative port of the
16
- * Argo CD web UI (Apache-2.0). See ./NOTICE.
17
- */
18
-
19
- // ──────────────────────────────────────────────────────────────────────────────
20
- // Status vocabularies — small, glanceable, closed unions.
21
- // ──────────────────────────────────────────────────────────────────────────────
22
-
23
- /**
24
- * A resource/application health verdict. `Unknown` is honest — a missing signal
25
- * is never guessed up to `Healthy`.
26
- */
27
- export type HealthStatus =
28
- | 'Healthy'
29
- | 'Progressing'
30
- | 'Degraded'
31
- | 'Suspended'
32
- | 'Missing'
33
- | 'Unknown'
34
-
35
- /** Whether live state matches the desired (Git) state. */
36
- export type SyncStatus = 'Synced' | 'OutOfSync' | 'Unknown'
37
-
38
- /** The phase of an in-flight sync/rollback operation. */
39
- export type OperationPhase =
40
- | 'Running'
41
- | 'Terminating'
42
- | 'Failed'
43
- | 'Error'
44
- | 'Succeeded'
45
- | 'Pending'
46
-
47
- /** A pod's lifecycle phase (drives the pod-status dot). */
48
- export type PodPhase = 'Pending' | 'Running' | 'Succeeded' | 'Failed' | 'Unknown'
49
-
50
- /** Per-resource result code within a sync operation. */
51
- export type SyncResultCode = 'Synced' | 'Pruned' | 'SyncFailed' | 'Unknown'
52
-
53
- // ──────────────────────────────────────────────────────────────────────────────
54
- // Resource graph — the owner-reference tree of live cluster objects.
55
- // ──────────────────────────────────────────────────────────────────────────────
56
-
57
- /** A group/version/kind/namespace/name coordinate for a cluster object. */
58
- export interface ResourceRef {
59
- /** Stable unique id (k8s uid, or a synthesized `group/kind/ns/name`). */
60
- uid: string
61
- group: string
62
- version: string
63
- kind: string
64
- namespace: string
65
- name: string
66
- }
67
-
68
- /** A labelled datum shown as a chip on a node / in the summary (e.g. `Revision: 3`). */
69
- export interface InfoItem {
70
- name: string
71
- value: string
72
- }
73
-
74
- /** Ingress/service surface of a networked resource (Service, Ingress). */
75
- export interface ResourceNetworking {
76
- /** Objects this resource routes to (Service → Pods, Ingress → Service). */
77
- targetRefs?: ResourceRef[]
78
- labels?: Record<string, string>
79
- /** Externally reachable URLs (a domain's live site). */
80
- externalURLs?: string[]
81
- ingress?: { hostname?: string; ip?: string }[]
82
- }
83
-
84
- /**
85
- * One node of the live resource graph. Ownership is expressed by `parentRefs`
86
- * (an object may have several owners); the graph is the transitive closure of
87
- * those edges rooted at the application. Pure data — no React, no back-refs.
88
- */
89
- export interface ResourceNode extends ResourceRef {
90
- /** The object(s) that own this one — the edges of the graph. */
91
- parentRefs?: ResourceRef[]
92
- /** Health verdict for this object, when the engine computes one. */
93
- health?: { status: HealthStatus; message?: string }
94
- /** Sync verdict for this object (managed objects only). */
95
- status?: SyncStatus
96
- /** Glanceable facts shown as chips (revision, replicas, image tag, …). */
97
- info?: InfoItem[]
98
- networkingInfo?: ResourceNetworking
99
- images?: string[]
100
- createdAt?: string
101
- /** True for hook/sync-operation objects; `resourceVersion` for freshness. */
102
- hook?: boolean
103
- resourceVersion?: string
104
- /** Present on Pod nodes — drives pod-specific rendering. */
105
- podInfo?: PodInfo
106
- }
107
-
108
- /** Extra facts a Pod node carries (containers, phase, restarts, node/host). */
109
- export interface PodInfo {
110
- phase: PodPhase
111
- /** Reason string when the phase alone is ambiguous (CrashLoopBackOff, …). */
112
- reason?: string
113
- ready?: string // e.g. "2/3"
114
- restarts?: number
115
- node?: string
116
- age?: string
117
- }
118
-
119
- /**
120
- * The full resource graph for an application: the managed nodes plus any
121
- * orphaned objects (live in the app's namespace but not owned by it).
122
- */
123
- export interface ResourceTree {
124
- nodes: ResourceNode[]
125
- orphanedNodes?: ResourceNode[]
126
- }
127
-
128
- // ──────────────────────────────────────────────────────────────────────────────
129
- // Application — the deployable unit the list shows and the detail drills into.
130
- // ──────────────────────────────────────────────────────────────────────────────
131
-
132
- /** Where an application's desired state comes from (a Git repo path @ revision). */
133
- export interface AppSource {
134
- repoURL: string
135
- path?: string
136
- targetRevision?: string
137
- chart?: string
138
- }
139
-
140
- /** The destination cluster + namespace an application deploys to. */
141
- export interface AppDestination {
142
- server?: string
143
- name?: string
144
- namespace: string
145
- }
146
-
147
- /** Revision metadata resolved from the source repo (for the status panel). */
148
- export interface RevisionMetadata {
149
- revision: string
150
- author?: string
151
- date?: string
152
- message?: string
153
- tags?: string[]
154
- }
155
-
156
- /**
157
- * A summary of one application — the shape the list/tiles render. Enough to draw
158
- * a row without fetching the tree.
159
- */
160
- export interface AppSummary {
161
- name: string
162
- namespace?: string
163
- project?: string
164
- health: HealthStatus
165
- sync: SyncStatus
166
- /** Short revision (sha/tag) currently reconciled. */
167
- revision?: string
168
- source?: AppSource
169
- destination?: AppDestination
170
- /** Epoch ms of the last successful sync (rendered relative). */
171
- lastSyncedAt?: number
172
- /** Phase of an in-flight operation, when one is running. */
173
- operationPhase?: OperationPhase
174
- /** Rollup counts of managed resources by health, for the tile mini-bar. */
175
- resourceCounts?: Partial<Record<HealthStatus, number>>
176
- labels?: Record<string, string>
177
- }
178
-
179
- /** A single sync/deploy in the history (for the rollback list). */
180
- export interface DeployRevision {
181
- /** Monotonic history id — the handle passed to `rollback`. */
182
- id: number
183
- revision: string
184
- deployedAt?: number
185
- source?: AppSource
186
- metadata?: RevisionMetadata
187
- }
188
-
189
- /** The result of (or progress of) the most recent sync/rollback operation. */
190
- export interface OperationState {
191
- phase: OperationPhase
192
- message?: string
193
- startedAt?: number
194
- finishedAt?: number
195
- /** The revision the operation targeted. */
196
- revision?: string
197
- /** Per-resource results (kind/name → code + message). */
198
- syncResult?: {
199
- ref: ResourceRef
200
- result: SyncResultCode
201
- message?: string
202
- hookPhase?: string
203
- }[]
204
- }
205
-
206
- /**
207
- * The full application detail — everything the status panel + controls need
208
- * beyond the tree. Returned by `getApp`.
209
- */
210
- export interface AppDetail extends AppSummary {
211
- /** Resolved metadata for the reconciled revision. */
212
- revisionMetadata?: RevisionMetadata
213
- /** Deploy/rollout history, newest last (matches engine ordering). */
214
- history?: DeployRevision[]
215
- /** In-flight or last-completed operation. */
216
- operationState?: OperationState
217
- /** Free-form conditions/warnings surfaced by the engine. */
218
- conditions?: { type: string; message: string; lastTransitionTime?: string }[]
219
- }
220
-
221
- // ──────────────────────────────────────────────────────────────────────────────
222
- // Node detail — manifest + events + logs for the drawer.
223
- // ──────────────────────────────────────────────────────────────────────────────
224
-
225
- /** A k8s-style event row shown in the node drawer's Events tab. */
226
- export interface ResourceEvent {
227
- reason: string
228
- message: string
229
- type?: 'Normal' | 'Warning'
230
- count?: number
231
- firstSeen?: string
232
- lastSeen?: string
233
- source?: string
234
- }
235
-
236
- /** One log line (optionally tagged with its container + a parsed timestamp). */
237
- export interface LogEntry {
238
- content: string
239
- timestamp?: string
240
- container?: string
241
- /** True for stderr — rendered in the warn tone. */
242
- err?: boolean
243
- }
244
-
245
- /**
246
- * Everything the node drawer needs for a single resource: the live manifest
247
- * (YAML), recent events, a recent-logs snapshot (pods), and the desired/live
248
- * pair for the inline diff. Returned by `getResource`.
249
- */
250
- export interface ResourceDetail {
251
- ref: ResourceRef
252
- health?: { status: HealthStatus; message?: string }
253
- syncStatus?: SyncStatus
254
- /** Live manifest as YAML (or JSON) text. */
255
- liveManifest?: string
256
- /** Desired manifest as YAML text — enables the drawer's inline diff. */
257
- desiredManifest?: string
258
- events?: ResourceEvent[]
259
- /** Recent log lines for a pod/container (a snapshot; streaming is optional). */
260
- logs?: LogEntry[]
261
- /** Container names, when the resource is a Pod (drives the log selector). */
262
- containers?: string[]
263
- info?: InfoItem[]
264
- }
265
-
266
- // ──────────────────────────────────────────────────────────────────────────────
267
- // Diff — desired vs live for the whole application.
268
- // ──────────────────────────────────────────────────────────────────────────────
269
-
270
- /** One resource's desired/live manifest pair for the application diff view. */
271
- export interface ResourceDiff {
272
- ref: ResourceRef
273
- /** Sync verdict for this resource (drives the section pill). */
274
- status?: SyncStatus
275
- desired?: string
276
- live?: string
277
- /** True when the resource is unmanaged/hook (rendered muted). */
278
- hook?: boolean
279
- }
280
-
281
- /** The full application diff payload. Returned by `getDiff`. */
282
- export interface AppDiff {
283
- items: ResourceDiff[]
284
- }
285
-
286
- // ──────────────────────────────────────────────────────────────────────────────
287
- // Mutations — sync + rollback request bodies.
288
- // ──────────────────────────────────────────────────────────────────────────────
289
-
290
- /** Body for `POST /v1/gitops/{name}/sync`. */
291
- export interface SyncRequest {
292
- /** Target revision; omit to sync to the source's configured revision. */
293
- revision?: string
294
- /** Prune resources that no longer exist in the desired state. */
295
- prune?: boolean
296
- /** Server-side dry-run (compute the plan without applying). */
297
- dryRun?: boolean
298
- /** Restrict the sync to specific resources (default: all). */
299
- resources?: ResourceRef[]
300
- }
301
-
302
- /** Body for `POST /v1/gitops/{name}/rollback`. */
303
- export interface RollbackRequest {
304
- /** The history id (from `DeployRevision.id`) to roll back to. */
305
- id: number
306
- prune?: boolean
307
- dryRun?: boolean
308
- }
309
-
310
- /** The response to a sync/rollback — the operation the engine kicked off. */
311
- export interface OperationResponse {
312
- operationState: OperationState
313
- }
314
-
315
- /** The apps-list response: `GET /v1/gitops`. */
316
- export interface AppListResponse {
317
- items: AppSummary[]
318
- }
package/src/dashboard.ts DELETED
@@ -1,8 +0,0 @@
1
- // @hanzo/ui/dashboard — the console dashboard kit (landing + deploy pipeline +
2
- // composable overview primitives + charts/motion layer), re-exported from its
3
- // home package @hanzo/dashboard. Thin subpath:
4
- //
5
- // import { ... } from '@hanzo/ui/dashboard'
6
- //
7
- // Optional peer — only pulled when the subpath is used.
8
- export * from '@hanzo/dashboard'
package/src/data.ts DELETED
@@ -1,12 +0,0 @@
1
- // @hanzo/ui/data — the metadata-driven record layer.
2
- //
3
- // RecordsView, DataTable, BoardView, RecordDetail/RecordForm, the typed field
4
- // editors (select/relation/calendar/file/JSON/boolean…), the field registry, the
5
- // pure sort/filter/search/group/view logic, and the tokens. The source of truth
6
- // is @hanzo/data (pkg/data) — this is the canonical @hanzo/ui entry point for it,
7
- // so an app depends on ONE package (@hanzo/ui) for both the product layer and the
8
- // record layer. Do NOT re-implement anything here; add it upstream in @hanzo/data
9
- // and it flows through.
10
- //
11
- // import { RecordsView, DataTable, registerField } from '@hanzo/ui/data'
12
- export * from '@hanzo/data'
package/src/gitops.ts DELETED
@@ -1,5 +0,0 @@
1
- // @hanzo/ui/gitops — the CD/GitOps surface, re-exported from its home package
2
- // @hanzo/gitops (an Apache-2.0 clean-room port of the Argo CD UI). Kept as a thin
3
- // subpath so a console can `import { GitopsAppList, GitopsAppTree, GitopsNodeInfo,
4
- // HealthBadge, ... } from '@hanzo/ui/gitops'` while the code lives in one place.
5
- export * from '@hanzo/gitops'
package/src/gui-env.d.ts DELETED
@@ -1,27 +0,0 @@
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
- }
package/src/index.ts DELETED
@@ -1,22 +0,0 @@
1
- // @hanzo/ui — the one Hanzo component library, on @hanzo/gui.
2
- //
3
- // import { PageHeader, Sparkline, EmptyState, tokens } from '@hanzo/ui' // product + tokens
4
- // import { RecordsView, DataTable, registerField } from '@hanzo/ui/data' // metadata record layer
5
- //
6
- // Two orthogonal concerns, ONE package, zero duplication:
7
- // • the product/app component layer (this barrel — charts, metrics, headers,
8
- // status tags, empty states, combobox, slide-over, toasts, reorder, fields), and
9
- // • the metadata-driven record layer (the `./data` subpath — RecordsView and the
10
- // typed field editors, whose source of truth is @hanzo/data).
11
- // Both cross-platform (web + native + desktop), presentational, host-agnostic
12
- // (data + effects injected), clean-room. The two layers each own a `DataTable`
13
- // (product = generic typed <T> list; data = field-driven record grid); keeping the
14
- // record layer on the `./data` subpath keeps each name unambiguous.
15
-
16
- // Product/app component layer.
17
- export * from './product'
18
-
19
- // Design tokens — the calm, dark-first zinc-on-black identity (surface, text,
20
- // accent, tag tones). One source of truth (@hanzo/data's theme), surfaced here
21
- // for convenience so `import { tokens } from '@hanzo/ui'` works.
22
- export { tokens, TAG_TONES, tagTone, type TagTone } from '@hanzo/data'
package/src/network.ts DELETED
@@ -1,11 +0,0 @@
1
- // @hanzo/ui/network — the ONE network selector, re-exported from its home module
2
- // @hanzo/ui-shadcn/network. `NetworkSwitcher` renders the selected environment
3
- // and a menu of configured networks + a custom-endpoint form, backed by the
4
- // shared selected-network store; `configureNetworks` swaps the network set so a
5
- // downstream brand can white-label it. Thin subpath:
6
- //
7
- // import { NetworkSwitcher, useNetwork, configureNetworks, HANZO_NETWORKS,
8
- // type Network } from '@hanzo/ui/network'
9
- //
10
- // Optional peer — only pulled when the subpath is used.
11
- export * from '@hanzo/ui-shadcn/network'
@@ -1,13 +0,0 @@
1
- // @hanzo/ui/primitives/bases/data — the Hanzo Base data-app layer.
2
- //
3
- // Source of truth: the `@hanzo/data` workspace package (~/work/hanzo/hanzoai/ui/
4
- // pkg/data). This file is a passthrough re-export so consumers of @hanzo/ui can
5
- // pull the metadata-driven record views (RecordsView, DataTable, BoardView,
6
- // RecordDetail, field editors) without depending on @hanzo/data directly — the
7
- // same convention the `gui` base uses for `hanzogui`. Subpath resolution makes
8
- // `@hanzo/ui/primitives/bases/data` equivalent to `@hanzo/data`.
9
- //
10
- // Do NOT re-implement components here. Add them upstream in pkg/data and let them
11
- // flow through this re-export.
12
-
13
- export * from '@hanzo/data'
@@ -1,183 +0,0 @@
1
- 'use client'
2
-
3
- /**
4
- * AppHeader — the shared shell header every Hanzo surface renders: the brand
5
- * mark top-left (from @hanzo/logo, white-label via `wordmark`/`brand`), an
6
- * org/project slot (usually `<OrgSwitcher/>`), an app switcher listing the
7
- * Hanzo surfaces (modeled on the console's AppLauncher), and an identity menu
8
- * (Profile · Theme · Team settings · Billing · Sign out).
9
- *
10
- * Host-agnostic: every action is an injected handler; a row renders only when
11
- * its handler is provided (honest — no dead menu items). Mobile-first: fluid
12
- * flex + truncation, the wordmark collapse is the brand motion itself.
13
- */
14
- import { useState, type ReactNode } from 'react'
15
- import { Button, Popover, Separator, Text, XStack, YStack } from '@hanzo/gui'
16
- import { AppWindow, Bot, CreditCard, Grip, LayoutGrid, LogOut, MessageCircle, Settings2, Sparkles, UserRound, Users } from '@hanzogui/lucide-icons-2'
17
-
18
- import { BrandMark } from './BrandMark'
19
- import { ThemeToggle } from './ThemeToggle'
20
- import { otherSurfaces, type Surface, type SurfaceId } from './surfaces.data'
21
-
22
- /** The per-surface glyph — keyed by `Surface.id`, so each surface reads distinctly. */
23
- const SURFACE_ICON = {
24
- ai: Sparkles,
25
- console: LayoutGrid,
26
- app: AppWindow,
27
- chat: MessageCircle,
28
- bot: Bot,
29
- team: Users,
30
- billing: CreditCard,
31
- } as const satisfies Record<SurfaceId, unknown>
32
-
33
- const openHref = (href: string) => {
34
- if (typeof window !== 'undefined') window.open(href, '_blank', 'noopener')
35
- }
36
-
37
- function MenuRow({ icon, label, onPress }: { icon: ReactNode; label: string; onPress: () => void }) {
38
- return (
39
- <XStack onPress={onPress} cursor="pointer" items="center" gap="$2.5" px="$2" py="$2" rounded="$3" hoverStyle={{ bg: '$color5' }}>
40
- {icon}
41
- <Text fontSize="$2" color="$color12">
42
- {label}
43
- </Text>
44
- </XStack>
45
- )
46
- }
47
-
48
- export type AppHeaderProps = {
49
- /** Brand slot — defaults to the animated `<BrandMark/>`. */
50
- brand?: ReactNode
51
- /** White-label wordmark for the default brand mark. */
52
- wordmark?: string
53
- /** Brand press (usually "go home"). */
54
- onBrand?: () => void
55
- /** Org/project slot — usually `<OrgSwitcher/>` (+ a project switcher). */
56
- org?: ReactNode
57
- /** Free slot between the org slot and the right cluster. */
58
- children?: ReactNode
59
- /** The surface this header renders on — omitted from the switcher (no self-link). */
60
- current?: SurfaceId
61
- /** App-switcher surfaces; defaults to every surface but `current`. [] hides it. */
62
- surfaces?: Surface[]
63
- /** Open a surface — default `window.open` (new tab). */
64
- open?: (surface: Surface) => void
65
- /** Identity-menu trigger label (the signed-in user's name/email). */
66
- user?: string
67
- /** Replace the whole identity menu content. */
68
- menu?: ReactNode
69
- /** Theme row content — default `<ThemeToggle/>`; null hides the row. */
70
- theme?: ReactNode
71
- onProfile?: () => void
72
- onTeam?: () => void
73
- onBilling?: () => void
74
- onSignOut?: () => void
75
- }
76
-
77
- export function AppHeader({
78
- brand,
79
- wordmark = 'Hanzo',
80
- onBrand,
81
- org,
82
- children,
83
- current,
84
- surfaces,
85
- open,
86
- user,
87
- menu,
88
- theme,
89
- onProfile,
90
- onTeam,
91
- onBilling,
92
- onSignOut,
93
- }: AppHeaderProps) {
94
- const [appsOpen, setAppsOpen] = useState(false)
95
- const [menuOpen, setMenuOpen] = useState(false)
96
- const items = surfaces ?? otherSurfaces(current)
97
- const launch = (s: Surface) => {
98
- setAppsOpen(false)
99
- if (open) open(s)
100
- else openHref(s.href)
101
- }
102
-
103
- return (
104
- <XStack items="center" gap="$2" px="$3" height={52} borderBottomWidth={1} borderColor="$borderColor" bg="$background">
105
- <XStack items="center" cursor={onBrand ? 'pointer' : undefined} onPress={onBrand}>
106
- {brand ?? <BrandMark wordmark={wordmark} />}
107
- </XStack>
108
-
109
- {org ? (
110
- <XStack items="center" minW={0}>
111
- {org}
112
- </XStack>
113
- ) : null}
114
-
115
- <XStack flex={1} items="center" minW={0}>
116
- {children}
117
- </XStack>
118
-
119
- {items.length > 0 ? (
120
- <Popover open={appsOpen} onOpenChange={setAppsOpen} placement="bottom-end">
121
- <Popover.Trigger asChild>
122
- <Button size="$2" chromeless icon={<Grip size={16} />} aria-label="Apps" />
123
- </Popover.Trigger>
124
- <Popover.Content bordered elevate p="$2" width={230} bg="$color2" borderColor="$borderColor">
125
- <YStack gap="$1">
126
- {items.map((s) => {
127
- const Icon = SURFACE_ICON[s.id]
128
- return (
129
- <XStack key={s.id} onPress={() => launch(s)} cursor="pointer" items="center" gap="$2.5" px="$2" py="$2" rounded="$3" hoverStyle={{ bg: '$color5' }}>
130
- <Icon size={16} />
131
- <Text flex={1} fontSize="$2" fontWeight="600" color="$color12">
132
- {s.label}
133
- </Text>
134
- {s.hint ? (
135
- <Text fontSize="$1" color="$color10">
136
- {s.hint}
137
- </Text>
138
- ) : null}
139
- </XStack>
140
- )
141
- })}
142
- </YStack>
143
- </Popover.Content>
144
- </Popover>
145
- ) : null}
146
-
147
- <Popover open={menuOpen} onOpenChange={setMenuOpen} placement="bottom-end">
148
- <Popover.Trigger asChild>
149
- <Button size="$2" chromeless icon={<UserRound size={16} />} aria-label="Account">
150
- {user ? (
151
- <Text fontSize="$2" color="$color12" numberOfLines={1} maxW={140}>
152
- {user}
153
- </Text>
154
- ) : null}
155
- </Button>
156
- </Popover.Trigger>
157
- <Popover.Content bordered elevate p="$2" width={220} bg="$color2" borderColor="$borderColor">
158
- {menu ?? (
159
- <YStack gap="$1">
160
- {onProfile ? <MenuRow icon={<UserRound size={15} />} label="Profile" onPress={() => (setMenuOpen(false), onProfile())} /> : null}
161
- {theme !== null ? (
162
- <XStack items="center" gap="$2.5" px="$2" py="$1" rounded="$3">
163
- <Text flex={1} fontSize="$2" color="$color12">
164
- Theme
165
- </Text>
166
- {theme ?? <ThemeToggle />}
167
- </XStack>
168
- ) : null}
169
- {onTeam ? <MenuRow icon={<Settings2 size={15} />} label="Team settings" onPress={() => (setMenuOpen(false), onTeam())} /> : null}
170
- {onBilling ? <MenuRow icon={<CreditCard size={15} />} label="Billing" onPress={() => (setMenuOpen(false), onBilling())} /> : null}
171
- {onSignOut ? (
172
- <>
173
- <Separator borderColor="$borderColor" my="$1" />
174
- <MenuRow icon={<LogOut size={15} />} label="Sign out" onPress={() => (setMenuOpen(false), onSignOut())} />
175
- </>
176
- ) : null}
177
- </YStack>
178
- )}
179
- </Popover.Content>
180
- </Popover>
181
- </XStack>
182
- )
183
- }
@@ -1,27 +0,0 @@
1
- 'use client'
2
-
3
- /**
4
- * BrandMark — the canonical brand lockup for an app header, from @hanzo/logo
5
- * (the ONE home of the mark geometry + motion). Animated by default: intro
6
- * flip + idle breathing + a wordmark that slides in, holds, then collapses
7
- * (returns on hover). Pure CSS, reduced-motion-safe; the mark inherits
8
- * `currentColor` so it themes for free. White-label via `wordmark`.
9
- */
10
- import { HanzoLogo } from '@hanzo/logo/react'
11
-
12
- import { HanzoMark } from './HanzoMark'
13
-
14
- export function BrandMark({
15
- size = 20,
16
- wordmark = 'Hanzo',
17
- animated = true,
18
- }: {
19
- size?: number
20
- /** Wordmark text (white-label): "Hanzo", "Lux", "Zoo", … */
21
- wordmark?: string
22
- /** false = the static mark alone (no motion shell, no wordmark). */
23
- animated?: boolean
24
- }) {
25
- if (!animated) return <HanzoMark size={size} />
26
- return <HanzoLogo animated size={size} wordmark={wordmark} />
27
- }