@hanzo/ui 8.0.77 → 8.0.82

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.
package/dist/theme.css CHANGED
@@ -588,6 +588,51 @@
588
588
  --shadow-lg:0 10px 15px -3px rgb(0 0 0 / .55), 0 4px 6px -4px rgb(0 0 0 / .55);
589
589
  --shadow-xl:0 20px 25px -5px rgb(0 0 0 / .60), 0 8px 10px -6px rgb(0 0 0 / .60);
590
590
  --shadow-2xl:var(--shadow-floating);
591
+
592
+ /* ——— the paper ——— */
593
+ /* Depth carries STATE, not decoration: which sheet is the workspace, which is
594
+ the tool in use, which one opened. Reach for a level before a border — if
595
+ two surfaces need separating, RAISE one rather than outline both, and a
596
+ surface that is already raised does not also need a box drawn round it.
597
+
598
+ A level is a tint AND the light on it, published as a pair, because the
599
+ alternative — every component composing its own `--edge-highlight,
600
+ --shadow-*` — is how two panels on one screen end up lit from two
601
+ directions. Every rung here is pure vertical: a 1px inset line along the
602
+ top edge, a drop straight down. One origin, above and slightly in front.
603
+
604
+ The tints are the surface recipes rather than new values, so sheets stack
605
+ the way paper does: each is an alpha-white wash, one laid on another lands
606
+ a step lighter, and the stack converges on #262626 instead of blowing out.
607
+
608
+ Nothing here is restated in `.light`, deliberately: every part defers to a
609
+ token that already flips, so the ramp inverts with the theme for free. */
610
+ --sheet-0:var(--surface-page); /* the workspace ground */
611
+ --sheet-1:var(--surface-card); /* an active tool */
612
+ --sheet-2:var(--surface-card-emphasis); /* what opened, or what is inside */
613
+ /* The drops are spelled out rather than read from the t-shirt ramp above, and
614
+ that is the whole reason this ladder can be shared. `--shadow-sm` is a name
615
+ this package does not own — @hanzo/brand declares the same names at :root
616
+ with white-canvas alphas, and load order decides who wins — so a rung built
617
+ on one is a rung somebody else can flatten. `--shadow-sheet-*` is ours
618
+ alone, which is what lets @hanzo/ui's `.elevation-*` read it instead of
619
+ keeping a private copy. The numbers ARE rung 1 and rung 2 of the ramp; if
620
+ one moves, move both. `--edge-highlight` stays deferred: it is role-named,
621
+ uncollided, and its `.light` zeroing is what makes one value work on both
622
+ canvases. */
623
+ --shadow-sheet-1:var(--edge-highlight),0 1px 2px 0 rgb(0 0 0 / .40);
624
+ --shadow-sheet-2:var(--edge-highlight),0 10px 15px -3px rgb(0 0 0 / .55),0 4px 6px -4px rgb(0 0 0 / .55);
625
+
626
+ /* The fold — a corner turned back, and the one mark that means THIS OPENS.
627
+ Ornament nowhere: a sheet that does not expand does not wear one.
628
+ It is a background-image, so it costs no element and no pseudo-element —
629
+ paint it on the sheet itself and square that corner
630
+ (`border-bottom-right-radius:0`), because a folded corner is not round.
631
+ The flap catches the light like every other surface; the crease is the
632
+ hairline; both defer, so both invert. */
633
+ --fold:12px;
634
+ --fold-face:linear-gradient(315deg,var(--glass-strong) 0,var(--glass-strong) calc(var(--fold) - 1px),var(--border-strong) calc(var(--fold) - 1px),var(--border-strong) var(--fold),transparent var(--fold)); /* @kind color */
635
+
591
636
  /* Ambient hero glow — a single white radial, blurred 120px, low opacity. */
592
637
  --glow-hero:radial-gradient(circle,rgb(255 255 255 / .12) 0%,transparent 68%); /* @kind color */
593
638
  --glow-hero-blur:120px;
@@ -620,6 +665,11 @@
620
665
  costs nothing. */
621
666
  .light, :root.t_light, .t_light{
622
667
  --shadow-floating:0 24px 60px -16px rgb(0 0 0 / .18);
668
+ /* On white the drop does all of it, so the paper rungs are restated here even
669
+ though check 4 does not demand it — their white is inside --edge-highlight,
670
+ which flips underneath. Rung 1 and rung 2 of the light ramp, same as dark. */
671
+ --shadow-sheet-1:var(--edge-highlight),0 1px 2px 0 rgb(0 0 0 / .06);
672
+ --shadow-sheet-2:var(--edge-highlight),0 10px 15px -3px rgb(0 0 0 / .09),0 4px 6px -4px rgb(0 0 0 / .07);
623
673
  --shadow-inset-hairline:inset 0 0 0 1px rgb(0 0 0 / .10);
624
674
  --edge-highlight:inset 0 0 0 0 transparent;
625
675
  --bloom:0 6px 20px -4px rgb(0 0 0 / .18);
@@ -1327,6 +1377,31 @@
1327
1377
  var(--glass-shadow-3) !important;
1328
1378
  }
1329
1379
 
1380
+ /* ── The fold — the one mark that means an item opens ────────────────────────
1381
+ A corner turned back, painted onto the sheet itself. It is a class and not a
1382
+ pair of style props because gui compiles those into atomic classes and a
1383
+ background-image is not one of the properties it maps; and because a fold has
1384
+ exactly one spelling, so the call site should not be able to invent a second
1385
+ one. `--fold-face` is @hanzo/design's, with the dark value inline so a host
1386
+ that took this sheet without the token layer still gets a corner rather than
1387
+ a silently-dropped declaration.
1388
+
1389
+ The corner is SQUARED, not rounded: a folded corner is a straight crease, and
1390
+ a rounded one under a triangle reads as a rendering fault. That is also why
1391
+ this carries !important — the radius it has to beat is a compiled style prop.
1392
+
1393
+ Spend it only where the thing expands. A fold on a surface that opens nothing
1394
+ is a chevron that never turns. */
1395
+ .fold {
1396
+ background-image: var(--fold-face,
1397
+ linear-gradient(315deg,
1398
+ rgb(255 255 255 / .08) 0, rgb(255 255 255 / .08) 11px,
1399
+ rgb(255 255 255 / .16) 11px, rgb(255 255 255 / .16) 12px,
1400
+ transparent 12px)) !important;
1401
+ background-repeat: no-repeat !important;
1402
+ border-bottom-right-radius: 0 !important;
1403
+ }
1404
+
1330
1405
  /* ── The scrim ──────────────────────────────────────────────────────────────
1331
1406
  The dim that makes a floating panel read as floating rather than as more
1332
1407
  page. gui's overlay dims TWICE — a translucent ground under a further
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.0.77",
3
+ "version": "8.0.82",
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": {
@@ -188,7 +188,7 @@
188
188
  ],
189
189
  "dependencies": {
190
190
  "@hanzo/appearance": "^0.1.4",
191
- "@hanzo/design": "^0.5.1",
191
+ "@hanzo/design": "^0.5.3",
192
192
  "@hanzo/logo": "^1.0.13",
193
193
  "@hanzo/products": "^0.2.0",
194
194
  "@hanzogui/lucide-icons-2": "^8.1.0",