@hanzo/ui 8.0.66 → 8.0.68

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 (177) hide show
  1. package/dist/backends/gui/accordion.cjs +69 -0
  2. package/dist/backends/gui/accordion.d.ts +57 -0
  3. package/dist/backends/gui/accordion.d.ts.map +1 -0
  4. package/dist/backends/gui/accordion.js +64 -0
  5. package/dist/backends/gui/accordion.js.map +1 -0
  6. package/dist/backends/gui/alert-dialog.cjs +91 -0
  7. package/dist/backends/gui/alert-dialog.d.ts +77 -0
  8. package/dist/backends/gui/alert-dialog.d.ts.map +1 -0
  9. package/dist/backends/gui/alert-dialog.js +79 -0
  10. package/dist/backends/gui/alert-dialog.js.map +1 -0
  11. package/dist/backends/gui/context-menu.cjs +189 -0
  12. package/dist/backends/gui/context-menu.d.ts +116 -0
  13. package/dist/backends/gui/context-menu.d.ts.map +1 -0
  14. package/dist/backends/gui/context-menu.js +140 -0
  15. package/dist/backends/gui/context-menu.js.map +1 -0
  16. package/dist/backends/gui/dropdown-menu.d.ts +1 -1
  17. package/dist/backends/gui/hover-card.cjs +76 -0
  18. package/dist/backends/gui/hover-card.d.ts +57 -0
  19. package/dist/backends/gui/hover-card.d.ts.map +1 -0
  20. package/dist/backends/gui/hover-card.js +72 -0
  21. package/dist/backends/gui/hover-card.js.map +1 -0
  22. package/dist/backends/gui/index.cjs +53 -3
  23. package/dist/backends/gui/index.d.ts +7 -1
  24. package/dist/backends/gui/index.d.ts.map +1 -1
  25. package/dist/backends/gui/index.js +12 -1
  26. package/dist/backends/gui/index.js.map +1 -1
  27. package/dist/backends/gui/layout.cjs +3 -2
  28. package/dist/backends/gui/layout.d.ts +1 -1
  29. package/dist/backends/gui/layout.d.ts.map +1 -1
  30. package/dist/backends/gui/layout.js +2 -2
  31. package/dist/backends/gui/layout.js.map +1 -1
  32. package/dist/backends/gui/radio-group.cjs +47 -0
  33. package/dist/backends/gui/radio-group.d.ts +36 -0
  34. package/dist/backends/gui/radio-group.d.ts.map +1 -0
  35. package/dist/backends/gui/radio-group.js +44 -0
  36. package/dist/backends/gui/radio-group.js.map +1 -0
  37. package/dist/backends/gui/toggle-group.cjs +114 -0
  38. package/dist/backends/gui/toggle-group.d.ts +57 -0
  39. package/dist/backends/gui/toggle-group.d.ts.map +1 -0
  40. package/dist/backends/gui/toggle-group.js +112 -0
  41. package/dist/backends/gui/toggle-group.js.map +1 -0
  42. package/dist/gallery.cjs +2 -2
  43. package/dist/gallery.d.ts.map +1 -1
  44. package/dist/gallery.js +3 -3
  45. package/dist/gallery.js.map +1 -1
  46. package/dist/glass.css +117 -0
  47. package/dist/index.cjs +57 -1
  48. package/dist/index.d.ts +3 -2
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +18 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/primitives/Accordion.cjs +8 -0
  53. package/dist/primitives/Accordion.d.ts +2 -0
  54. package/dist/primitives/Accordion.d.ts.map +1 -0
  55. package/dist/primitives/Accordion.js +5 -0
  56. package/dist/primitives/Accordion.js.map +1 -0
  57. package/dist/primitives/AccordionContent.cjs +8 -0
  58. package/dist/primitives/AccordionContent.d.ts +2 -0
  59. package/dist/primitives/AccordionContent.d.ts.map +1 -0
  60. package/dist/primitives/AccordionContent.js +5 -0
  61. package/dist/primitives/AccordionContent.js.map +1 -0
  62. package/dist/primitives/AccordionItem.cjs +8 -0
  63. package/dist/primitives/AccordionItem.d.ts +2 -0
  64. package/dist/primitives/AccordionItem.d.ts.map +1 -0
  65. package/dist/primitives/AccordionItem.js +5 -0
  66. package/dist/primitives/AccordionItem.js.map +1 -0
  67. package/dist/primitives/AccordionTrigger.cjs +8 -0
  68. package/dist/primitives/AccordionTrigger.d.ts +2 -0
  69. package/dist/primitives/AccordionTrigger.d.ts.map +1 -0
  70. package/dist/primitives/AccordionTrigger.js +5 -0
  71. package/dist/primitives/AccordionTrigger.js.map +1 -0
  72. package/dist/primitives/AlertDialog.cjs +8 -0
  73. package/dist/primitives/AlertDialog.d.ts +2 -0
  74. package/dist/primitives/AlertDialog.d.ts.map +1 -0
  75. package/dist/primitives/AlertDialog.js +5 -0
  76. package/dist/primitives/AlertDialog.js.map +1 -0
  77. package/dist/primitives/AlertDialogAction.cjs +8 -0
  78. package/dist/primitives/AlertDialogAction.d.ts +2 -0
  79. package/dist/primitives/AlertDialogAction.d.ts.map +1 -0
  80. package/dist/primitives/AlertDialogAction.js +5 -0
  81. package/dist/primitives/AlertDialogAction.js.map +1 -0
  82. package/dist/primitives/AlertDialogCancel.cjs +8 -0
  83. package/dist/primitives/AlertDialogCancel.d.ts +2 -0
  84. package/dist/primitives/AlertDialogCancel.d.ts.map +1 -0
  85. package/dist/primitives/AlertDialogCancel.js +5 -0
  86. package/dist/primitives/AlertDialogCancel.js.map +1 -0
  87. package/dist/primitives/AlertDialogContent.cjs +8 -0
  88. package/dist/primitives/AlertDialogContent.d.ts +2 -0
  89. package/dist/primitives/AlertDialogContent.d.ts.map +1 -0
  90. package/dist/primitives/AlertDialogContent.js +5 -0
  91. package/dist/primitives/AlertDialogContent.js.map +1 -0
  92. package/dist/primitives/AlertDialogDescription.cjs +8 -0
  93. package/dist/primitives/AlertDialogDescription.d.ts +2 -0
  94. package/dist/primitives/AlertDialogDescription.d.ts.map +1 -0
  95. package/dist/primitives/AlertDialogDescription.js +5 -0
  96. package/dist/primitives/AlertDialogDescription.js.map +1 -0
  97. package/dist/primitives/AlertDialogFooter.cjs +8 -0
  98. package/dist/primitives/AlertDialogFooter.d.ts +2 -0
  99. package/dist/primitives/AlertDialogFooter.d.ts.map +1 -0
  100. package/dist/primitives/AlertDialogFooter.js +5 -0
  101. package/dist/primitives/AlertDialogFooter.js.map +1 -0
  102. package/dist/primitives/AlertDialogHeader.cjs +8 -0
  103. package/dist/primitives/AlertDialogHeader.d.ts +2 -0
  104. package/dist/primitives/AlertDialogHeader.d.ts.map +1 -0
  105. package/dist/primitives/AlertDialogHeader.js +5 -0
  106. package/dist/primitives/AlertDialogHeader.js.map +1 -0
  107. package/dist/primitives/AlertDialogOverlay.cjs +8 -0
  108. package/dist/primitives/AlertDialogOverlay.d.ts +2 -0
  109. package/dist/primitives/AlertDialogOverlay.d.ts.map +1 -0
  110. package/dist/primitives/AlertDialogOverlay.js +5 -0
  111. package/dist/primitives/AlertDialogOverlay.js.map +1 -0
  112. package/dist/primitives/AlertDialogPortal.cjs +8 -0
  113. package/dist/primitives/AlertDialogPortal.d.ts +2 -0
  114. package/dist/primitives/AlertDialogPortal.d.ts.map +1 -0
  115. package/dist/primitives/AlertDialogPortal.js +5 -0
  116. package/dist/primitives/AlertDialogPortal.js.map +1 -0
  117. package/dist/primitives/AlertDialogTitle.cjs +8 -0
  118. package/dist/primitives/AlertDialogTitle.d.ts +2 -0
  119. package/dist/primitives/AlertDialogTitle.d.ts.map +1 -0
  120. package/dist/primitives/AlertDialogTitle.js +5 -0
  121. package/dist/primitives/AlertDialogTitle.js.map +1 -0
  122. package/dist/primitives/AlertDialogTrigger.cjs +8 -0
  123. package/dist/primitives/AlertDialogTrigger.d.ts +2 -0
  124. package/dist/primitives/AlertDialogTrigger.d.ts.map +1 -0
  125. package/dist/primitives/AlertDialogTrigger.js +5 -0
  126. package/dist/primitives/AlertDialogTrigger.js.map +1 -0
  127. package/dist/primitives/Anchor.cjs +8 -0
  128. package/dist/primitives/Anchor.d.ts +2 -0
  129. package/dist/primitives/Anchor.d.ts.map +1 -0
  130. package/dist/primitives/Anchor.js +5 -0
  131. package/dist/primitives/Anchor.js.map +1 -0
  132. package/dist/primitives/HoverCard.cjs +8 -0
  133. package/dist/primitives/HoverCard.d.ts +2 -0
  134. package/dist/primitives/HoverCard.d.ts.map +1 -0
  135. package/dist/primitives/HoverCard.js +5 -0
  136. package/dist/primitives/HoverCard.js.map +1 -0
  137. package/dist/primitives/HoverCardContent.cjs +8 -0
  138. package/dist/primitives/HoverCardContent.d.ts +2 -0
  139. package/dist/primitives/HoverCardContent.d.ts.map +1 -0
  140. package/dist/primitives/HoverCardContent.js +5 -0
  141. package/dist/primitives/HoverCardContent.js.map +1 -0
  142. package/dist/primitives/HoverCardTrigger.cjs +8 -0
  143. package/dist/primitives/HoverCardTrigger.d.ts +2 -0
  144. package/dist/primitives/HoverCardTrigger.d.ts.map +1 -0
  145. package/dist/primitives/HoverCardTrigger.js +5 -0
  146. package/dist/primitives/HoverCardTrigger.js.map +1 -0
  147. package/dist/primitives/RadioGroup.cjs +8 -0
  148. package/dist/primitives/RadioGroup.d.ts +2 -0
  149. package/dist/primitives/RadioGroup.d.ts.map +1 -0
  150. package/dist/primitives/RadioGroup.js +5 -0
  151. package/dist/primitives/RadioGroup.js.map +1 -0
  152. package/dist/primitives/RadioGroupItem.cjs +8 -0
  153. package/dist/primitives/RadioGroupItem.d.ts +2 -0
  154. package/dist/primitives/RadioGroupItem.d.ts.map +1 -0
  155. package/dist/primitives/RadioGroupItem.js +5 -0
  156. package/dist/primitives/RadioGroupItem.js.map +1 -0
  157. package/dist/primitives/ToggleGroup.cjs +8 -0
  158. package/dist/primitives/ToggleGroup.d.ts +2 -0
  159. package/dist/primitives/ToggleGroup.d.ts.map +1 -0
  160. package/dist/primitives/ToggleGroup.js +5 -0
  161. package/dist/primitives/ToggleGroup.js.map +1 -0
  162. package/dist/primitives/ToggleGroupItem.cjs +8 -0
  163. package/dist/primitives/ToggleGroupItem.d.ts +2 -0
  164. package/dist/primitives/ToggleGroupItem.d.ts.map +1 -0
  165. package/dist/primitives/ToggleGroupItem.js +5 -0
  166. package/dist/primitives/ToggleGroupItem.js.map +1 -0
  167. package/dist/product/Field.cjs +8 -3
  168. package/dist/product/Field.d.ts.map +1 -1
  169. package/dist/product/Field.js +8 -3
  170. package/dist/product/Field.js.map +1 -1
  171. package/dist/product/PrimaryButton.cjs +12 -0
  172. package/dist/product/PrimaryButton.d.ts.map +1 -1
  173. package/dist/product/PrimaryButton.js +12 -0
  174. package/dist/product/PrimaryButton.js.map +1 -1
  175. package/dist/styles.css +167 -0
  176. package/dist/theme.css +117 -0
  177. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -1274,6 +1274,123 @@
1274
1274
  border-top: 1px solid var(--borderColor, var(--border));
1275
1275
  }
1276
1276
 
1277
+ /* ── The composer prism — the ONE ring on any Hanzo surface ──────────────────
1278
+ The composer is where you talk to Hanzo, so it is the thing that should look
1279
+ alive, and it earns that with MOTION and LIGHT rather than hue. Every other
1280
+ pixel of chrome stays monochrome; there is no second exemption, and the two
1281
+ attempts to grant one (a violet ring, then a full-wheel rainbow) each made
1282
+ the surface wearing it the only colour in the product.
1283
+
1284
+ THIS LIVES HERE BECAUSE IT WAS DECLARED TWICE AND DRIFTED. hanzo.chat's
1285
+ client/src/style.css and hanzo.app's assets/globals.css each carried a copy,
1286
+ each calling itself "the ONE prism on any Hanzo surface". chat fixed the ring
1287
+ to be a rim; hanzo.app's copy kept drawing a filled DISC and never got the
1288
+ fix — invisible until a glass panel sat in it, at which point the whole
1289
+ spectrum washed up through the composer's interior. chat also quieted the
1290
+ halo (0.5 with a pulse -> 0.22, no pulse); hanzo.app kept the loud one. Two
1291
+ copies of one look is how that happens, and neither app could see the other
1292
+ was wrong.
1293
+
1294
+ Structure: `.hz-composer` is a 1.5px-padded host; its direct child is the
1295
+ panel. ::before is the ring, ::after the halo. Both are MASKED to exclude the
1296
+ panel's footprint, so the ring is a rim BY CONSTRUCTION and the panel is free
1297
+ to be any material — opaque, glass, anything. The stops are declared once and
1298
+ read by both, because duplicated they drift on the first palette change and
1299
+ nobody notices which half moved. */
1300
+
1301
+ /* `@property` is what lets a conic angle animate. Where it is unsupported the
1302
+ ring is simply static, which is a fine floor. */
1303
+ @property --hz-angle {
1304
+ syntax: "<angle>";
1305
+ initial-value: 0deg;
1306
+ inherits: false;
1307
+ }
1308
+
1309
+ :root {
1310
+ /* One sweep, closing on the stop it opened with — a conic gradient whose
1311
+ first and last stop differ shows a hard seam. */
1312
+ --hz-spectrum: rgba(8, 148, 255, 0.45), rgba(201, 89, 221, 0.48),
1313
+ rgba(255, 46, 84, 0.4), rgba(255, 144, 4, 0.4), rgba(8, 148, 255, 0.45);
1314
+ }
1315
+
1316
+ @keyframes hzComposerSpin {
1317
+ to {
1318
+ --hz-angle: 360deg;
1319
+ }
1320
+ }
1321
+
1322
+ .hz-composer {
1323
+ position: relative;
1324
+ isolation: isolate;
1325
+ padding: 1.5px;
1326
+ }
1327
+
1328
+ /* The ring DRAWS A RING. `padding` is its thickness; the two-layer mask keeps
1329
+ paint outside it — `content-box` is the hole, the full box the plate, and
1330
+ `exclude` leaves the lip. */
1331
+ .hz-composer::before {
1332
+ content: "";
1333
+ position: absolute;
1334
+ inset: 0;
1335
+ padding: 1.5px;
1336
+ border-radius: inherit;
1337
+ background: conic-gradient(from var(--hz-angle), var(--hz-spectrum));
1338
+ animation: hzComposerSpin 10s linear infinite;
1339
+ -webkit-mask:
1340
+ linear-gradient(#000 0 0) content-box,
1341
+ linear-gradient(#000 0 0);
1342
+ mask:
1343
+ linear-gradient(#000 0 0) content-box,
1344
+ linear-gradient(#000 0 0);
1345
+ mask-composite: exclude;
1346
+ /* After the standard shorthand: WebKit aliases `mask` onto `-webkit-mask`, so
1347
+ declaring this first lets the shorthand reset it to `source-over` — the
1348
+ filled disc again, on exactly the browsers too old to have `mask-composite`
1349
+ at all. */
1350
+ -webkit-mask-composite: xor;
1351
+ z-index: 0;
1352
+ pointer-events: none;
1353
+ }
1354
+
1355
+ /* The halo lights the air AROUND the box and nothing behind it. */
1356
+ .hz-composer::after {
1357
+ content: "";
1358
+ position: absolute;
1359
+ inset: -6px;
1360
+ padding: 6px;
1361
+ /* Concentric with the box, NOT `inherit`: the halo lives 6px outside, so an
1362
+ inherited corner on this larger box curves too tight and reads as a second,
1363
+ mismatched rounding just outside the panel. */
1364
+ border-radius: calc(1.5rem + 6px);
1365
+ background: conic-gradient(from var(--hz-angle), var(--hz-spectrum));
1366
+ filter: blur(16px);
1367
+ opacity: 0.22;
1368
+ animation: hzComposerSpin 10s linear infinite;
1369
+ -webkit-mask:
1370
+ linear-gradient(#000 0 0) content-box,
1371
+ linear-gradient(#000 0 0);
1372
+ mask:
1373
+ linear-gradient(#000 0 0) content-box,
1374
+ linear-gradient(#000 0 0);
1375
+ mask-composite: exclude;
1376
+ -webkit-mask-composite: xor;
1377
+ z-index: -1;
1378
+ pointer-events: none;
1379
+ }
1380
+
1381
+ /* The panel sits above ring and halo. */
1382
+ .hz-composer > * {
1383
+ position: relative;
1384
+ z-index: 1;
1385
+ }
1386
+
1387
+ @media (prefers-reduced-motion: reduce) {
1388
+ .hz-composer::before,
1389
+ .hz-composer::after {
1390
+ animation: none;
1391
+ }
1392
+ }
1393
+
1277
1394
  /* @hanzo/ui motion primitives — the calm, restrained animation vocabulary the
1278
1395
  Hanzo surfaces share. One place defines the easing; components apply the class.
1279
1396
  `className` forwards to the underlying DOM node on web, so the browser
@@ -2135,11 +2252,21 @@
2135
2252
  :root ._bbrr-c-radius-4{border-bottom-right-radius:var(--c-radius-4);}
2136
2253
  :root ._bbrr-c-radius-6{border-bottom-right-radius:var(--c-radius-6);}
2137
2254
  :root ._bbs-solid._bbs-solid{border-bottom-style:solid;}
2255
+ :root:root:root ._bg-0active-background:active{background-color:var(--background) !important;}
2256
+ :root:root:root ._bg-0active-backgroundF3405682:active{background-color:var(--backgroundFocus) !important;}
2138
2257
  :root:root:root ._bg-0active-backgroundP3496915:active{background-color:var(--backgroundPress) !important;}
2258
+ :root:root:root ._bg-0active-color3:active{background-color:var(--color3) !important;}
2259
+ :root:root:root:root ._bg-0focus-backgroundH3423444:focus{background-color:var(--backgroundHover) !important;}
2260
+ :root:root:root:root ._bg-0focus-color3:focus{background-color:var(--color3) !important;}
2139
2261
  :root:root:root:root ._bg-0focus-color4:focus{background-color:var(--color4) !important;}
2262
+ :root:root:root:root ._bg-0focus-color5:focus{background-color:var(--color5) !important;}
2263
+ :root:root:root:root ._bg-0focus-color6:focus{background-color:var(--color6) !important;}
2264
+ @media (hover) {:root:root ._bg-0hover-background:hover{background-color:var(--background) !important;}}
2140
2265
  @media (hover) {:root:root ._bg-0hover-backgroundH3423444:hover{background-color:var(--backgroundHover) !important;}}
2266
+ @media (hover) {:root:root ._bg-0hover-color2:hover{background-color:var(--color2) !important;}}
2141
2267
  @media (hover) {:root:root ._bg-0hover-color3:hover{background-color:var(--color3) !important;}}
2142
2268
  @media (hover) {:root:root ._bg-0hover-color4:hover{background-color:var(--color4) !important;}}
2269
+ @media (hover) {:root:root ._bg-0hover-color5:hover{background-color:var(--color5) !important;}}
2143
2270
  @media (hover) {:root:root ._bg-0hover-color6:hover{background-color:var(--color6) !important;}}
2144
2271
  :root ._bg-background{background-color:var(--background);}
2145
2272
  :root ._bg-backgroundA94988999{background-color:var(--backgroundActive);}
@@ -2149,14 +2276,20 @@
2149
2276
  :root ._bg-color3{background-color:var(--color3);}
2150
2277
  :root ._bg-color4{background-color:var(--color4);}
2151
2278
  :root ._bg-color5{background-color:var(--color5);}
2279
+ :root ._bg-color6{background-color:var(--color6);}
2152
2280
  :root ._bg-red9{background-color:var(--red9);}
2153
2281
  :root ._bg-transparent{background-color:transparent;}
2154
2282
  :root ._bls-solid._bls-solid{border-left-style:solid;}
2283
+ :root:root:root ._borderBottomColor-0active-borderColor._borderBottomColor-0active-borderColor:active{border-bottom-color:var(--borderColor) !important;}
2284
+ :root:root:root ._borderBottomColor-0active-borderColor68052152._borderBottomColor-0active-borderColor68052152:active{border-bottom-color:var(--borderColorFocus) !important;}
2155
2285
  :root:root:root ._borderBottomColor-0active-borderColor69916956._borderBottomColor-0active-borderColor69916956:active{border-bottom-color:var(--borderColorHover) !important;}
2156
2286
  :root:root:root ._borderBottomColor-0active-borderColor77378595._borderBottomColor-0active-borderColor77378595:active{border-bottom-color:var(--borderColorPress) !important;}
2157
2287
  :root:root:root:root ._borderBottomColor-0focus-borderColor68052152._borderBottomColor-0focus-borderColor68052152:focus{border-bottom-color:var(--borderColorFocus) !important;}
2288
+ :root:root:root:root ._borderBottomColor-0focus-borderColor69916956._borderBottomColor-0focus-borderColor69916956:focus{border-bottom-color:var(--borderColorHover) !important;}
2158
2289
  :root:root:root:root ._borderBottomColor-0focus-color06._borderBottomColor-0focus-color06:focus{border-bottom-color:var(--color06) !important;}
2290
+ :root:root:root:root ._borderBottomColor-0focus-color7._borderBottomColor-0focus-color7:focus{border-bottom-color:var(--color7) !important;}
2159
2291
  :root:root:root:root ._borderBottomColor-0focus-color8._borderBottomColor-0focus-color8:focus{border-bottom-color:var(--color8) !important;}
2292
+ @media (hover) {:root:root ._borderBottomColor-0hover-borderColor._borderBottomColor-0hover-borderColor:hover{border-bottom-color:var(--borderColor) !important;}}
2160
2293
  @media (hover) {:root:root ._borderBottomColor-0hover-borderColor69916956._borderBottomColor-0hover-borderColor69916956:hover{border-bottom-color:var(--borderColorHover) !important;}}
2161
2294
  @media (hover) {:root:root ._borderBottomColor-0hover-color6._borderBottomColor-0hover-color6:hover{border-bottom-color:var(--color6) !important;}}
2162
2295
  @media (hover) {:root:root ._borderBottomColor-0hover-color7._borderBottomColor-0hover-color7:hover{border-bottom-color:var(--color7) !important;}}
@@ -2165,14 +2298,20 @@
2165
2298
  :root ._borderBottomColor-borderColor._borderBottomColor-borderColor{border-bottom-color:var(--borderColor);}
2166
2299
  :root ._borderBottomColor-color12._borderBottomColor-color12{border-bottom-color:var(--color12);}
2167
2300
  :root ._borderBottomColor-color6._borderBottomColor-color6{border-bottom-color:var(--color6);}
2301
+ :root ._borderBottomColor-color7._borderBottomColor-color7{border-bottom-color:var(--color7);}
2168
2302
  :root ._borderBottomColor-transparent._borderBottomColor-transparent{border-bottom-color:transparent;}
2169
2303
  :root ._borderBottomWidth-0px._borderBottomWidth-0px{border-bottom-width:0px;}
2170
2304
  :root ._borderBottomWidth-1px._borderBottomWidth-1px{border-bottom-width:1px;}
2305
+ :root:root:root ._borderLeftColor-0active-borderColor._borderLeftColor-0active-borderColor:active{border-left-color:var(--borderColor) !important;}
2306
+ :root:root:root ._borderLeftColor-0active-borderColor68052152._borderLeftColor-0active-borderColor68052152:active{border-left-color:var(--borderColorFocus) !important;}
2171
2307
  :root:root:root ._borderLeftColor-0active-borderColor69916956._borderLeftColor-0active-borderColor69916956:active{border-left-color:var(--borderColorHover) !important;}
2172
2308
  :root:root:root ._borderLeftColor-0active-borderColor77378595._borderLeftColor-0active-borderColor77378595:active{border-left-color:var(--borderColorPress) !important;}
2173
2309
  :root:root:root:root ._borderLeftColor-0focus-borderColor68052152._borderLeftColor-0focus-borderColor68052152:focus{border-left-color:var(--borderColorFocus) !important;}
2310
+ :root:root:root:root ._borderLeftColor-0focus-borderColor69916956._borderLeftColor-0focus-borderColor69916956:focus{border-left-color:var(--borderColorHover) !important;}
2174
2311
  :root:root:root:root ._borderLeftColor-0focus-color06._borderLeftColor-0focus-color06:focus{border-left-color:var(--color06) !important;}
2312
+ :root:root:root:root ._borderLeftColor-0focus-color7._borderLeftColor-0focus-color7:focus{border-left-color:var(--color7) !important;}
2175
2313
  :root:root:root:root ._borderLeftColor-0focus-color8._borderLeftColor-0focus-color8:focus{border-left-color:var(--color8) !important;}
2314
+ @media (hover) {:root:root ._borderLeftColor-0hover-borderColor._borderLeftColor-0hover-borderColor:hover{border-left-color:var(--borderColor) !important;}}
2176
2315
  @media (hover) {:root:root ._borderLeftColor-0hover-borderColor69916956._borderLeftColor-0hover-borderColor69916956:hover{border-left-color:var(--borderColorHover) !important;}}
2177
2316
  @media (hover) {:root:root ._borderLeftColor-0hover-color6._borderLeftColor-0hover-color6:hover{border-left-color:var(--color6) !important;}}
2178
2317
  @media (hover) {:root:root ._borderLeftColor-0hover-color7._borderLeftColor-0hover-color7:hover{border-left-color:var(--color7) !important;}}
@@ -2181,14 +2320,20 @@
2181
2320
  :root ._borderLeftColor-borderColor._borderLeftColor-borderColor{border-left-color:var(--borderColor);}
2182
2321
  :root ._borderLeftColor-color12._borderLeftColor-color12{border-left-color:var(--color12);}
2183
2322
  :root ._borderLeftColor-color6._borderLeftColor-color6{border-left-color:var(--color6);}
2323
+ :root ._borderLeftColor-color7._borderLeftColor-color7{border-left-color:var(--color7);}
2184
2324
  :root ._borderLeftColor-transparent._borderLeftColor-transparent{border-left-color:transparent;}
2185
2325
  :root ._borderLeftWidth-0px._borderLeftWidth-0px{border-left-width:0px;}
2186
2326
  :root ._borderLeftWidth-1px._borderLeftWidth-1px{border-left-width:1px;}
2327
+ :root:root:root ._brc-0active-borderColor._brc-0active-borderColor:active{border-right-color:var(--borderColor) !important;}
2328
+ :root:root:root ._brc-0active-borderColor68052152._brc-0active-borderColor68052152:active{border-right-color:var(--borderColorFocus) !important;}
2187
2329
  :root:root:root ._brc-0active-borderColor69916956._brc-0active-borderColor69916956:active{border-right-color:var(--borderColorHover) !important;}
2188
2330
  :root:root:root ._brc-0active-borderColor77378595._brc-0active-borderColor77378595:active{border-right-color:var(--borderColorPress) !important;}
2189
2331
  :root:root:root:root ._brc-0focus-borderColor68052152._brc-0focus-borderColor68052152:focus{border-right-color:var(--borderColorFocus) !important;}
2332
+ :root:root:root:root ._brc-0focus-borderColor69916956._brc-0focus-borderColor69916956:focus{border-right-color:var(--borderColorHover) !important;}
2190
2333
  :root:root:root:root ._brc-0focus-color06._brc-0focus-color06:focus{border-right-color:var(--color06) !important;}
2334
+ :root:root:root:root ._brc-0focus-color7._brc-0focus-color7:focus{border-right-color:var(--color7) !important;}
2191
2335
  :root:root:root:root ._brc-0focus-color8._brc-0focus-color8:focus{border-right-color:var(--color8) !important;}
2336
+ @media (hover) {:root:root ._brc-0hover-borderColor._brc-0hover-borderColor:hover{border-right-color:var(--borderColor) !important;}}
2192
2337
  @media (hover) {:root:root ._brc-0hover-borderColor69916956._brc-0hover-borderColor69916956:hover{border-right-color:var(--borderColorHover) !important;}}
2193
2338
  @media (hover) {:root:root ._brc-0hover-color6._brc-0hover-color6:hover{border-right-color:var(--color6) !important;}}
2194
2339
  @media (hover) {:root:root ._brc-0hover-color7._brc-0hover-color7:hover{border-right-color:var(--color7) !important;}}
@@ -2197,15 +2342,21 @@
2197
2342
  :root ._brc-borderColor._brc-borderColor{border-right-color:var(--borderColor);}
2198
2343
  :root ._brc-color12._brc-color12{border-right-color:var(--color12);}
2199
2344
  :root ._brc-color6._brc-color6{border-right-color:var(--color6);}
2345
+ :root ._brc-color7._brc-color7{border-right-color:var(--color7);}
2200
2346
  :root ._brc-transparent._brc-transparent{border-right-color:transparent;}
2201
2347
  :root ._brs-solid._brs-solid{border-right-style:solid;}
2202
2348
  :root ._brw-0px._brw-0px{border-right-width:0px;}
2203
2349
  :root ._brw-1px._brw-1px{border-right-width:1px;}
2350
+ :root:root:root ._btc-0active-borderColor._btc-0active-borderColor:active{border-top-color:var(--borderColor) !important;}
2351
+ :root:root:root ._btc-0active-borderColor68052152._btc-0active-borderColor68052152:active{border-top-color:var(--borderColorFocus) !important;}
2204
2352
  :root:root:root ._btc-0active-borderColor69916956._btc-0active-borderColor69916956:active{border-top-color:var(--borderColorHover) !important;}
2205
2353
  :root:root:root ._btc-0active-borderColor77378595._btc-0active-borderColor77378595:active{border-top-color:var(--borderColorPress) !important;}
2206
2354
  :root:root:root:root ._btc-0focus-borderColor68052152._btc-0focus-borderColor68052152:focus{border-top-color:var(--borderColorFocus) !important;}
2355
+ :root:root:root:root ._btc-0focus-borderColor69916956._btc-0focus-borderColor69916956:focus{border-top-color:var(--borderColorHover) !important;}
2207
2356
  :root:root:root:root ._btc-0focus-color06._btc-0focus-color06:focus{border-top-color:var(--color06) !important;}
2357
+ :root:root:root:root ._btc-0focus-color7._btc-0focus-color7:focus{border-top-color:var(--color7) !important;}
2208
2358
  :root:root:root:root ._btc-0focus-color8._btc-0focus-color8:focus{border-top-color:var(--color8) !important;}
2359
+ @media (hover) {:root:root ._btc-0hover-borderColor._btc-0hover-borderColor:hover{border-top-color:var(--borderColor) !important;}}
2209
2360
  @media (hover) {:root:root ._btc-0hover-borderColor69916956._btc-0hover-borderColor69916956:hover{border-top-color:var(--borderColorHover) !important;}}
2210
2361
  @media (hover) {:root:root ._btc-0hover-color6._btc-0hover-color6:hover{border-top-color:var(--color6) !important;}}
2211
2362
  @media (hover) {:root:root ._btc-0hover-color7._btc-0hover-color7:hover{border-top-color:var(--color7) !important;}}
@@ -2214,6 +2365,7 @@
2214
2365
  :root ._btc-borderColor._btc-borderColor{border-top-color:var(--borderColor);}
2215
2366
  :root ._btc-color12._btc-color12{border-top-color:var(--color12);}
2216
2367
  :root ._btc-color6._btc-color6{border-top-color:var(--color6);}
2368
+ :root ._btc-color7._btc-color7{border-top-color:var(--color7);}
2217
2369
  :root ._btc-transparent._btc-transparent{border-top-color:transparent;}
2218
2370
  :root ._btlr-100000px{border-top-left-radius:100000px;}
2219
2371
  :root ._btlr-1000px{border-top-left-radius:1000px;}
@@ -2247,6 +2399,7 @@
2247
2399
  :root ._cur-col-resize{cursor:col-resize;}
2248
2400
  :root ._cur-default{cursor:default;}
2249
2401
  :root ._cur-inherit{cursor:inherit;}
2402
+ :root ._cur-not-allowed{cursor:not-allowed;}
2250
2403
  :root ._cur-pointer{cursor:pointer;}
2251
2404
  :root ._direction-ltr{direction:ltr;}
2252
2405
  :root ._dsp-flex{display:flex;}
@@ -2269,6 +2422,7 @@
2269
2422
  :root ._fwr-nowrap{flex-wrap:nowrap;}
2270
2423
  :root ._gap-24px{gap:24px;}
2271
2424
  :root ._gap-2px{gap:2px;}
2425
+ :root ._gap-c-space-1{gap:var(--c-space-1);}
2272
2426
  :root ._gap-c-space-1--53{gap:var(--c-space-1--5);}
2273
2427
  :root ._gap-c-space-2{gap:var(--c-space-2);}
2274
2428
  :root ._grow-0{flex-grow:0;}
@@ -2280,6 +2434,7 @@
2280
2434
  :root ._height-20px{height:20px;}
2281
2435
  :root ._height-32px{height:32px;}
2282
2436
  :root ._height-36px{height:36px;}
2437
+ :root ._height-40px{height:40px;}
2283
2438
  :root ._height-44px{height:44px;}
2284
2439
  :root ._height-60px{height:60px;}
2285
2440
  :root ._height-6px{height:6px;}
@@ -2316,6 +2471,7 @@
2316
2471
  :root ._maxW-16px{max-width:16px;}
2317
2472
  :root ._maxW-32px{max-width:32px;}
2318
2473
  :root ._maxW-600px{max-width:600px;}
2474
+ :root ._mb-0px{margin-bottom:0px;}
2319
2475
  :root ._minH-16px{min-height:16px;}
2320
2476
  :root ._minH-20px{min-height:20px;}
2321
2477
  :root ._minH-24px{min-height:24px;}
@@ -2330,10 +2486,14 @@
2330
2486
  :root ._minW-32px{min-width:32px;}
2331
2487
  :root ._minW-36px{min-width:36px;}
2332
2488
  :root ._minW-40px{min-width:40px;}
2489
+ :root ._ml-0px{margin-left:0px;}
2333
2490
  :root ._ml-auto{margin-left:auto;}
2491
+ :root ._mr-0px{margin-right:0px;}
2334
2492
  :root ._mt--24px{margin-top:-24px;}
2493
+ :root ._mt-0px{margin-top:0px;}
2335
2494
  :root ._o-0{opacity:0;}
2336
2495
  :root ._o-0--5{opacity:0.5;}
2496
+ :root ._o-0--6{opacity:0.6;}
2337
2497
  @media (hover) {:root:root ._o-0hover-0--8:hover{opacity:0.8 !important;}}
2338
2498
  @media (hover) {:root:root ._o-0hover-0--9:hover{opacity:0.9 !important;}}
2339
2499
  :root ._o-1{opacity:1;}
@@ -2358,6 +2518,7 @@
2358
2518
  :root ._pb-c-space-1{padding-bottom:var(--c-space-1);}
2359
2519
  :root ._pb-c-space-1--53{padding-bottom:var(--c-space-1--5);}
2360
2520
  :root ._pb-c-space-11{padding-bottom:var(--c-space-11);}
2521
+ :root ._pb-c-space-2{padding-bottom:var(--c-space-2);}
2361
2522
  :root ._pb-c-space-2--53{padding-bottom:var(--c-space-2--5);}
2362
2523
  :root ._pb-c-space-3{padding-bottom:var(--c-space-3);}
2363
2524
  :root ._pb-c-space-4{padding-bottom:var(--c-space-4);}
@@ -2405,12 +2566,14 @@
2405
2566
  :root ._pt-c-space-1{padding-top:var(--c-space-1);}
2406
2567
  :root ._pt-c-space-1--53{padding-top:var(--c-space-1--5);}
2407
2568
  :root ._pt-c-space-11{padding-top:var(--c-space-11);}
2569
+ :root ._pt-c-space-2{padding-top:var(--c-space-2);}
2408
2570
  :root ._pt-c-space-2--53{padding-top:var(--c-space-2--5);}
2409
2571
  :root ._pt-c-space-3{padding-top:var(--c-space-3);}
2410
2572
  :root ._pt-c-space-4{padding-top:var(--c-space-4);}
2411
2573
  :root ._r-0px{right:0px;}
2412
2574
  :root ._r-12px{right:12px;}
2413
2575
  :root ._r-6037{right:60%;}
2576
+ :root ._select-auto{user-select:auto;-webkit-user-select:auto;}
2414
2577
  :root ._select-none{user-select:none;-webkit-user-select:none;}
2415
2578
  :root ._self-center{align-self:center;}
2416
2579
  :root ._self-flex-end{align-self:flex-end;}
@@ -2422,6 +2585,8 @@
2422
2585
  :root ._t-5037{top:50%;}
2423
2586
  @media (hover) {:root:root ._td-0hover-underline:hover{text-decoration-line:underline !important;}}
2424
2587
  :root ._textOverflow-ellipsis{text-overflow:ellipsis;}
2588
+ :root ._tr-rotate0deg1281{transform:rotate(0deg);}
2589
+ :root ._tr-rotate180de41674{transform:rotate(180deg);}
2425
2590
  :root ._tr-translateX-38656452{transform:translateX(-80%);}
2426
2591
  :root ._tr-translateX01303033{transform:translateX(0px);}
2427
2592
  :root ._tr-translateY-162820732{transform:translateY(-8px) translateX(-7.2px);}
@@ -2437,7 +2602,9 @@
2437
2602
  :root ._width-32px{width:32px;}
2438
2603
  :root ._width-36px{width:36px;}
2439
2604
  :root ._width-4px{width:4px;}
2605
+ :root ._width-8px{width:8px;}
2440
2606
  :root ._width-auto{width:auto;}
2607
+ :root ._ws-normal{white-space:normal;}
2441
2608
  :root ._ws-nowrap{white-space:nowrap;}
2442
2609
  :root ._ws-pre-wrap{white-space:pre-wrap;}
2443
2610
  :root ._z-0{z-index:0;}
package/dist/theme.css CHANGED
@@ -1271,3 +1271,120 @@
1271
1271
  [data-slot="rows"] > * + * {
1272
1272
  border-top: 1px solid var(--borderColor, var(--border));
1273
1273
  }
1274
+
1275
+ /* ── The composer prism — the ONE ring on any Hanzo surface ──────────────────
1276
+ The composer is where you talk to Hanzo, so it is the thing that should look
1277
+ alive, and it earns that with MOTION and LIGHT rather than hue. Every other
1278
+ pixel of chrome stays monochrome; there is no second exemption, and the two
1279
+ attempts to grant one (a violet ring, then a full-wheel rainbow) each made
1280
+ the surface wearing it the only colour in the product.
1281
+
1282
+ THIS LIVES HERE BECAUSE IT WAS DECLARED TWICE AND DRIFTED. hanzo.chat's
1283
+ client/src/style.css and hanzo.app's assets/globals.css each carried a copy,
1284
+ each calling itself "the ONE prism on any Hanzo surface". chat fixed the ring
1285
+ to be a rim; hanzo.app's copy kept drawing a filled DISC and never got the
1286
+ fix — invisible until a glass panel sat in it, at which point the whole
1287
+ spectrum washed up through the composer's interior. chat also quieted the
1288
+ halo (0.5 with a pulse -> 0.22, no pulse); hanzo.app kept the loud one. Two
1289
+ copies of one look is how that happens, and neither app could see the other
1290
+ was wrong.
1291
+
1292
+ Structure: `.hz-composer` is a 1.5px-padded host; its direct child is the
1293
+ panel. ::before is the ring, ::after the halo. Both are MASKED to exclude the
1294
+ panel's footprint, so the ring is a rim BY CONSTRUCTION and the panel is free
1295
+ to be any material — opaque, glass, anything. The stops are declared once and
1296
+ read by both, because duplicated they drift on the first palette change and
1297
+ nobody notices which half moved. */
1298
+
1299
+ /* `@property` is what lets a conic angle animate. Where it is unsupported the
1300
+ ring is simply static, which is a fine floor. */
1301
+ @property --hz-angle {
1302
+ syntax: "<angle>";
1303
+ initial-value: 0deg;
1304
+ inherits: false;
1305
+ }
1306
+
1307
+ :root {
1308
+ /* One sweep, closing on the stop it opened with — a conic gradient whose
1309
+ first and last stop differ shows a hard seam. */
1310
+ --hz-spectrum: rgba(8, 148, 255, 0.45), rgba(201, 89, 221, 0.48),
1311
+ rgba(255, 46, 84, 0.4), rgba(255, 144, 4, 0.4), rgba(8, 148, 255, 0.45);
1312
+ }
1313
+
1314
+ @keyframes hzComposerSpin {
1315
+ to {
1316
+ --hz-angle: 360deg;
1317
+ }
1318
+ }
1319
+
1320
+ .hz-composer {
1321
+ position: relative;
1322
+ isolation: isolate;
1323
+ padding: 1.5px;
1324
+ }
1325
+
1326
+ /* The ring DRAWS A RING. `padding` is its thickness; the two-layer mask keeps
1327
+ paint outside it — `content-box` is the hole, the full box the plate, and
1328
+ `exclude` leaves the lip. */
1329
+ .hz-composer::before {
1330
+ content: "";
1331
+ position: absolute;
1332
+ inset: 0;
1333
+ padding: 1.5px;
1334
+ border-radius: inherit;
1335
+ background: conic-gradient(from var(--hz-angle), var(--hz-spectrum));
1336
+ animation: hzComposerSpin 10s linear infinite;
1337
+ -webkit-mask:
1338
+ linear-gradient(#000 0 0) content-box,
1339
+ linear-gradient(#000 0 0);
1340
+ mask:
1341
+ linear-gradient(#000 0 0) content-box,
1342
+ linear-gradient(#000 0 0);
1343
+ mask-composite: exclude;
1344
+ /* After the standard shorthand: WebKit aliases `mask` onto `-webkit-mask`, so
1345
+ declaring this first lets the shorthand reset it to `source-over` — the
1346
+ filled disc again, on exactly the browsers too old to have `mask-composite`
1347
+ at all. */
1348
+ -webkit-mask-composite: xor;
1349
+ z-index: 0;
1350
+ pointer-events: none;
1351
+ }
1352
+
1353
+ /* The halo lights the air AROUND the box and nothing behind it. */
1354
+ .hz-composer::after {
1355
+ content: "";
1356
+ position: absolute;
1357
+ inset: -6px;
1358
+ padding: 6px;
1359
+ /* Concentric with the box, NOT `inherit`: the halo lives 6px outside, so an
1360
+ inherited corner on this larger box curves too tight and reads as a second,
1361
+ mismatched rounding just outside the panel. */
1362
+ border-radius: calc(1.5rem + 6px);
1363
+ background: conic-gradient(from var(--hz-angle), var(--hz-spectrum));
1364
+ filter: blur(16px);
1365
+ opacity: 0.22;
1366
+ animation: hzComposerSpin 10s linear infinite;
1367
+ -webkit-mask:
1368
+ linear-gradient(#000 0 0) content-box,
1369
+ linear-gradient(#000 0 0);
1370
+ mask:
1371
+ linear-gradient(#000 0 0) content-box,
1372
+ linear-gradient(#000 0 0);
1373
+ mask-composite: exclude;
1374
+ -webkit-mask-composite: xor;
1375
+ z-index: -1;
1376
+ pointer-events: none;
1377
+ }
1378
+
1379
+ /* The panel sits above ring and halo. */
1380
+ .hz-composer > * {
1381
+ position: relative;
1382
+ z-index: 1;
1383
+ }
1384
+
1385
+ @media (prefers-reduced-motion: reduce) {
1386
+ .hz-composer::before,
1387
+ .hz-composer::after {
1388
+ animation: none;
1389
+ }
1390
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.66",
3
+ "version": "8.0.68",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {