anentrypoint-design 0.0.419 → 0.0.421

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anentrypoint-design",
3
- "version": "0.0.419",
3
+ "version": "0.0.421",
4
4
  "description": "247420 design system SDK — webjsx + modified ripple-ui, single-file ESM bundle for reproducible use of the AnEntrypoint design.",
5
5
  "type": "module",
6
6
  "main": "./dist/247420.js",
@@ -85,11 +85,14 @@ body.canvas-host { background: transparent !important; }
85
85
  .app-topbar nav a {
86
86
  color: var(--fg-2);
87
87
  /* Dense desktop chrome (was a 44px pill with 12px 14px pad — marketing-scale
88
- touch target in the top bar). Matches the .app-side a treatment: ~34px,
89
- --r-1 rounded rect, tighter padding. The 44px tap target is restored under
90
- @media(pointer:coarse) (the existing .app-topbar nav a rule further down). */
88
+ touch target in the top bar): --r-1 rounded rect, tighter padding. The 44px
89
+ floor is UNCONDITIONAL, not behind @media(pointer:coarse) switch and
90
+ head-pointer users drive a fine pointer and are never reported as coarse,
91
+ so a coarse-gated floor leaves them a 39px target. Measured live at 1920:
92
+ the gated form rendered 39px with pointer:coarse false. Padding stays dense;
93
+ only the floor moves, so the compact chrome reads unchanged. */
91
94
  padding: var(--space-2) var(--space-2-5);
92
- min-height: 34px;
95
+ min-height: 44px;
93
96
  display: flex;
94
97
  align-items: center;
95
98
  border-radius: var(--r-1);
@@ -181,10 +184,13 @@ body.canvas-host { background: transparent !important; }
181
184
  display: grid; grid-template-columns: 18px 1fr auto;
182
185
  gap: var(--space-2-5); align-items: center;
183
186
  /* Dense rounded-rect nav row (was a 44px pill with 12px 14px padding — tall
184
- and consumer-shaped). A --r-1 rounded rect at ~34px reads as compact app
185
- chrome; the full 44px touch target is restored under pointer:coarse below. */
187
+ and consumer-shaped). A --r-1 rounded rect reads as compact app chrome.
188
+ The 44px floor is UNCONDITIONAL for the same reason as .skip-link's: a
189
+ pointer:coarse gate misses switch and head-pointer users, who report a fine
190
+ pointer. Measured live at 1920 the gated form rendered 39px. Padding is
191
+ unchanged, so the row stays dense — only the floor moves. */
186
192
  padding: var(--space-2) var(--space-2-5);
187
- min-height: 34px;
193
+ min-height: 44px;
188
194
  border-radius: var(--r-1);
189
195
  color: var(--fg-2);
190
196
  margin-bottom: 2px;
@@ -415,7 +415,12 @@ html, body {
415
415
  .app-text-cursor { animation: app-cursor-blink 0.5s step-end infinite; }
416
416
  @keyframes app-cursor-blink { 50% { opacity: 0; } }
417
417
  }
418
- @media (max-width: 1023px) and (min-width: 768px) {
418
+ /* (min-height: 501px): short-landscape windows (<501px tall) in this width
419
+ * band are on the mobile contract, not tablet — see the matching guard on
420
+ * the .wm-root tablet-inset rule below. Without the guard this block showed
421
+ * the side-rail and rail-offset the menubar/taskbar while the mobile band
422
+ * simultaneously tried to lay out rail-less full-screen windows. */
423
+ @media (max-width: 1023px) and (min-width: 768px) and (min-height: 501px) {
419
424
  .os-side-rail { display: flex; }
420
425
  .ds-247420 .wm-root { left: calc(var(--os-rail-w) + env(safe-area-inset-left, 0px)); }
421
426
  .os-menubar { padding-left: calc(var(--os-rail-w) + env(safe-area-inset-left, 0px) + var(--space-2, 8px)); }
@@ -563,8 +568,16 @@ html, body {
563
568
  /* With bars overlaying the wm-root, a maximized window's 34px titlebar would
564
569
  * sit exactly under the 34px menubar (untappable) and its body under the
565
570
  * taskbar; keep maximized windows between the bars on desktop/tablet. The
566
- * mobile band re-asserts its own contract in the responsive layer below. */
567
- @media (min-width: 768px) {
571
+ * mobile band re-asserts its own contract in the responsive layer below.
572
+ * The (min-height: 501px) guard keeps this rule out of the short-landscape
573
+ * mobile band (768-1023 wide AND <500 tall): the mobile .wm-root already
574
+ * carries the bar-inset there, so this between-the-bars geometry used to
575
+ * DOUBLE-inset maximized windows — a restored wm-max window measured
576
+ * y=104/h=240 instead of y=52/h=344 at 782x448 (witnessed live on thebird
577
+ * 2026-07-29). Guarding here (same idiom as the tablet-band rules below)
578
+ * instead of overriding inside the mobile band keeps the !important
579
+ * ratchet flat — no new declaration was needed. */
580
+ @media (min-width: 768px) and (min-height: 501px) {
568
581
  /* LOAD-BEARING !important: wm.css declares `.wm-win.wm-max{top:0!important;
569
582
  * height:100%!important}` (wm.css:137-143). Only another !important can beat
570
583
  * an !important, regardless of specificity. */
@@ -640,6 +653,12 @@ html.ds-247420 { touch-action: pan-x pan-y; overscroll-behavior: none; -webkit-t
640
653
  color: var(--os-fg);
641
654
  min-width: 280px;
642
655
  box-shadow: var(--shadow-overlay);
656
+ /* Uncapped, the switcher grew one row per open window with no bound —
657
+ * witnessed live at 27 windows on a 448px-tall viewport: the overlay
658
+ * measured y=-344 / h=1136, its top rows unreachable above the screen.
659
+ * Cap to the viewport between the bars and scroll the overflow. */
660
+ max-height: calc(100dvh - (2 * var(--os-bar-h, 34px)) - 24px);
661
+ overflow-y: auto;
643
662
  }
644
663
  .ds-247420 .wm-switcher-item {
645
664
  padding: var(--space-2) var(--space-2-75);
@@ -1488,6 +1507,11 @@ html.ds-247420 { touch-action: pan-x pan-y; overscroll-behavior: none; -webkit-t
1488
1507
  border-radius: 0;
1489
1508
  box-shadow: none;
1490
1509
  }
1510
+ /* A maximized window on the mobile band is just the full-screen window the
1511
+ * rule above already describes — the desktop/tablet `.wm-win.wm-max`
1512
+ * between-the-bars rule is kept out of this band by its own
1513
+ * (min-height: 501px) guard (see its comment above), so no override is
1514
+ * needed here and the !important ratchet stays flat. */
1491
1515
  /* titlebar must host a 44px close button -> 44px bar (beats the 34px brand
1492
1516
  * clamp by later source order at equal specificity) */
1493
1517
  .ds-247420 .wm-bar {
@@ -1529,8 +1553,17 @@ html.ds-247420 { touch-action: pan-x pan-y; overscroll-behavior: none; -webkit-t
1529
1553
  * the scoped inset:0; re-asserted here at equal (0,2,0) specificity but later
1530
1554
  * source order, which is enough now that the earlier rule is also scoped.
1531
1555
  * `inset` alone carries the left offset — the separate `left` declaration it
1532
- * used to be paired with was redundant with this shorthand. --- */
1533
- @media (min-width: 768px) and (max-width: 1023px) {
1556
+ * used to be paired with was redundant with this shorthand.
1557
+ * The (min-height: 501px) guard excludes the short-landscape overlap band
1558
+ * (768-1023 wide AND <500 tall): both this query and the mobile band's
1559
+ * (max-height: 500px)+(orientation: landscape) match there, and this rule —
1560
+ * later in source order — used to override the mobile bar-inset, dropping
1561
+ * .wm-root to top:0 so full-screen windows covered the menubar and their
1562
+ * close buttons landed under it occluded and untappable (witnessed live on
1563
+ * thebird at 782x448: elementFromPoint on the chat close button hit
1564
+ * .os-clock, menubar z 601 over window z 102). Short-landscape is the
1565
+ * phone/mobile contract, not tablet. --- */
1566
+ @media (min-width: 768px) and (max-width: 1023px) and (min-height: 501px) {
1534
1567
  .ds-247420 .wm-root {
1535
1568
  inset: 0 0 0 var(--os-rail-w);
1536
1569
  }