anentrypoint-design 0.0.391 → 0.0.393

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.391",
3
+ "version": "0.0.393",
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",
@@ -38,7 +38,24 @@ export function Table({ headers = [], rows = [], onRowClick, emptyText = 'nothin
38
38
  h('span', { class: 'ds-table-sort-label' }, hd),
39
39
  isActive ? Icon(sortDir === 'desc' ? 'chevron-down' : 'chevron-up', { size: 12 }) : null));
40
40
  };
41
- return h('div', { class: wrapClass }, h('table', {},
41
+ // The wrapper is an `overflow-x: auto` scroll container, so when a table is
42
+ // wider than its box the only way to reach the clipped columns is by
43
+ // scrolling. A mouse/touch user can drag it; a keyboard-only user cannot
44
+ // reach it at all unless the container itself is focusable — that is
45
+ // WCAG 2.1.1 Keyboard, and axe's `scrollable-region-focusable`. tabindex="0"
46
+ // puts it in the tab order and arrow keys then scroll it natively.
47
+ // A bare focusable div with no role/name is itself a violation, so it is
48
+ // labelled and given the `group` role: `region` would inject an
49
+ // unconditional landmark into every page that renders a Table.
50
+ // NOTE this fires only when the table actually overflows, which is
51
+ // viewport-dependent — it reproduces at 1024x768 but not at 1280x900,
52
+ // which is why it surfaced only in CI's viewport.
53
+ return h('div', {
54
+ class: wrapClass,
55
+ tabindex: '0',
56
+ role: 'group',
57
+ 'aria-label': 'table, scrollable',
58
+ }, h('table', {},
42
59
  h('thead', {}, h('tr', {}, ...headers.map((hd, i) => thFor(hd, i)))),
43
60
  h('tbody', {}, ...rows.map((row, i) => h('tr', {
44
61
  key: i,
@@ -630,10 +630,15 @@
630
630
  background: color-mix(in oklab, var(--flame) 12%, var(--bg));
631
631
  color: var(--flame); font-size: var(--fs-xs);
632
632
  }
633
+ /* --ink, not --on-color: --on-color is a fixed #fff, which reads fine on a dark
634
+ fill but measures 3.07:1 on --warn (#FF5A52, a light red) -- below the 4.5:1
635
+ floor. --ink on the same fill measures 6.27:1. Same principle as the
636
+ --accent/--accent-ink split the token layer documents: a light saturated fill
637
+ takes the dark text tone. Measured in a live browser. */
633
638
  .btn-primary.danger {
634
639
  background: var(--warn);
635
640
  border-color: var(--warn);
636
- color: var(--on-color);
641
+ color: var(--ink);
637
642
  }
638
643
  .btn-primary.danger:hover { filter: brightness(0.92); border-color: var(--warn); }
639
644
 
@@ -536,12 +536,23 @@
536
536
  /* --- terminal kit ------------------------------------------ */
537
537
  .ds-section-pad-sm { padding: var(--space-2); }
538
538
  .ds-kit-head-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); flex-wrap: wrap; }
539
- .ds-cli-cmt .cmd { color: var(--fg-3); }
540
- .ds-cli-out .cmd { color: var(--fg-2); }
541
- .ds-cli-ok .prompt, .ds-cli-ok .cmd { color: var(--accent-ink); }
542
- .ds-cli-warn .prompt, .ds-cli-warn .cmd { color: var(--mascot-deep); }
543
- .ds-cli-log .prompt { color: var(--fg-3); }
544
- .ds-cli-log .cmd { color: var(--fg-2); font-family: var(--ff-mono); }
539
+ /* `.cli` (hero-content.css) is an ALWAYS-INK card: it sets a var(--ink)
540
+ background with var(--paper) text in every theme, by design. So its text
541
+ tones must be ink-surface tones, NOT the theme-relative fg / accent-ink /
542
+ mascot-deep ramps. Those resolve to the PAPER tier under a light theme and
543
+ paint dark text on this permanently dark card: --fg-3 lands at 2.48:1,
544
+ --fg-2 at 1.18:1, --mascot-deep at 3.13:1 all failing AA, and all
545
+ invisible on a machine whose browser defaults to a dark color-scheme.
546
+ The tones below are theme-independent and measured on --ink:
547
+ --paper-3-dark 9.35:1, --paper-2 13.26:1, --acid 15.88:1, and the dark
548
+ mascot tone 6.67:1. Same FILL-vs-TEXT discipline --accent/--accent-ink
549
+ draws, applied to a surface that never follows the theme. */
550
+ .ds-cli-cmt .cmd { color: var(--paper-3-dark); }
551
+ .ds-cli-out .cmd { color: var(--paper-2); }
552
+ .ds-cli-ok .prompt, .ds-cli-ok .cmd { color: var(--acid); }
553
+ .ds-cli-warn .prompt, .ds-cli-warn .cmd { color: var(--mascot-on-ink); }
554
+ .ds-cli-log .prompt { color: var(--paper-3-dark); }
555
+ .ds-cli-log .cmd { color: var(--paper-2); font-family: var(--ff-mono); }
545
556
  .ds-term-body { padding: var(--space-2-75) var(--space-3-5); display: flex; flex-direction: column; gap: var(--space-1); background: var(--bg-2); border-radius: var(--r-1); }
546
557
  .ds-term-body--tall { min-height: 280px; }
547
558
  .ds-term-input-row { margin-top: var(--space-1-75); }