anentrypoint-design 0.0.449 → 0.0.451

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/README.md CHANGED
@@ -6,7 +6,7 @@ filename `dist/247420.js`/`dist/247420.css` and in a few package.json fields;
6
6
  the published npm package name is `anentrypoint-design`. Both names refer to
7
7
  the same single system.)
8
8
 
9
- Acid Editorial: one electric lime lead on near-black ink or warm newsprint paper, system-font stack (no web-font request), monospace only on real code, tonal surfaces over borders, indicator rails for color-coded separation, asymmetric grid tension, print texture over glow.
9
+ shadcn-neutral: a grayscale accent system on paper or near-black ink, system-font stack (no web-font request), monospace only on real code, tonal surfaces over borders, indicator rails for color-coded separation, centered layout, print texture inert (kept for a future opt-in).
10
10
 
11
11
  we fart in its general direction.
12
12
 
@@ -1,7 +1,9 @@
1
1
  /* ============================================================
2
2
  247420 design system — colors + type
3
- "Acid Editorial": confident display type, ink-on-paper with one
4
- electric lead, print texture over glow. Scope-prefixed at build time.
3
+ shadcn-neutral (2026-07-30 restyle): confident display type, ink-on-paper
4
+ with a grayscale accent, print texture inert. RESTYLED from the prior
5
+ "Acid Editorial" warm-paper/electric-lime identity -- see the RESTYLED
6
+ notes below for the token-by-token detail. Scope-prefixed at build time.
5
7
  Source-of-truth tokens. Component sheet lives in app-shell.css.
6
8
  ============================================================ */
7
9
 
package/dist/247420.css CHANGED
@@ -2,8 +2,10 @@
2
2
  /* colors_and_type.css */
3
3
  /* ============================================================
4
4
  247420 design system — colors + type
5
- "Acid Editorial": confident display type, ink-on-paper with one
6
- electric lead, print texture over glow. Scope-prefixed at build time.
5
+ shadcn-neutral (2026-07-30 restyle): confident display type, ink-on-paper
6
+ with a grayscale accent, print texture inert. RESTYLED from the prior
7
+ "Acid Editorial" warm-paper/electric-lime identity -- see the RESTYLED
8
+ notes below for the token-by-token detail. Scope-prefixed at build time.
7
9
  Source-of-truth tokens. Component sheet lives in app-shell.css.
8
10
  ============================================================ */
9
11
 
@@ -1871,30 +1873,46 @@
1871
1873
  /* A row with no leading code/index drops the empty first column so the title
1872
1874
  takes the full width instead of wrapping in the narrow code gutter. */
1873
1875
  .ds-247420 .row.row-nocode { grid-template-columns: minmax(0, 1fr) auto; }
1874
- /* Template-rendered index/example rows (site/theme.mjs "why design" +
1875
- "live examples" panels, via panelNode()/examplesNode() in
1876
- src/page-html/client-script.js) never emit a leading ".code" span for
1877
- these entries (no `code` field on the "features" items), so their actual
1878
- children are title + an inline ".meta.dim" description + a trailing
1879
- ".ds-row-arrow" three items, but with no ".code" as the first child the
1880
- base 3-track .row grid (minmax(80px,12ch) / minmax(0,1fr) / auto) still
1881
- places the FIRST item (the title) into the narrow 12ch leading track
1882
- meant for a code index, not the 1fr track. ".ds-row-arrow" also had no
1883
- rule at all, and ".meta" is nowrap by default, so on longer descriptions
1884
- ("…never borders", "…--fs-* tokens") the un-wrapped text overflows its
1885
- cramped column straight into the arrow's box. Rows carrying both a dim
1886
- meta description and an arrow get their own two-row template instead:
1887
- title + arrow share row 1, the description drops to its own full-width
1888
- row 2 and wraps normally matching how every other multi-line row
1889
- pattern in this file (.ds-row-detail) already gets a dedicated line. */
1876
+ /* Template-rendered index/example rows (site/theme.mjs panels, via
1877
+ panelNode()/examplesNode() in src/page-html/client-script.js) share one
1878
+ row template across every panel-driven section on the homepage "ui
1879
+ kits", "previews", "file browser", "web components", "public api", "why
1880
+ design", "live examples". Every one of those rows carries an inline
1881
+ ".meta.dim" description and a trailing ".ds-row-arrow"; some ALSO carry a
1882
+ leading ".code" span (file_browser/web_components/api_exports items have
1883
+ a `code` field, "why design"/"live examples" items do not) the
1884
+ selector below has to handle both shapes as ONE template, not two.
1885
+ Un-augmented, the base 3-track .row grid (minmax(80px,12ch) /
1886
+ minmax(0,1fr) / auto) either crams the title into the narrow 12ch code
1887
+ gutter (no-code rows) or, worse, auto-places an EXPLICIT-grid orphan:
1888
+ once .title/.ds-row-arrow/.meta.dim below are pinned to explicit
1889
+ grid-column/grid-row, a .code span left on `auto` placement can't share
1890
+ row 1 with .title (already occupying column 1) and gets pushed into a
1891
+ phantom row 3, rendering as a stray floating "fb"/"wc"/"api" line under
1892
+ the description — the exact bug this rule exists to prevent, previously
1893
+ left unfixed for the has-code case. Rows carrying a dim meta description
1894
+ and an arrow always get the two-row template: code + title + arrow share
1895
+ row 1 (code first, in its own narrow track), the description drops to
1896
+ its own full-width row 2 and wraps normally — matching how every other
1897
+ multi-line row pattern in this file (.ds-row-detail) already gets a
1898
+ dedicated line. */
1890
1899
  .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow) {
1891
- grid-template-columns: minmax(0, 1fr) auto;
1900
+ grid-template-columns: minmax(80px, 12ch) minmax(0, 1fr) auto;
1892
1901
  grid-template-rows: auto auto;
1893
1902
  row-gap: var(--space-1);
1894
1903
  }
1895
- .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow) .title { grid-column: 1; grid-row: 1; }
1896
- .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow) .ds-row-arrow { grid-column: 2; grid-row: 1; }
1904
+ .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow) .code { grid-column: 1; grid-row: 1; }
1905
+ .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow) .title { grid-column: 2; grid-row: 1; }
1906
+ .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow) .ds-row-arrow { grid-column: 3; grid-row: 1; }
1897
1907
  .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow) .meta.dim { grid-column: 1 / -1; grid-row: 2; }
1908
+ /* No-code rows ("why design", "live examples") drop the empty leading
1909
+ gutter so the title starts flush left instead of leaving a dead 12ch
1910
+ column — same fix .row-nocode already applies to the base template. */
1911
+ .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow):not(:has(.code)) {
1912
+ grid-template-columns: minmax(0, 1fr) auto;
1913
+ }
1914
+ .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow):not(:has(.code)) .title { grid-column: 1; }
1915
+ .ds-247420 .row:has(.meta.dim):has(.ds-row-arrow):not(:has(.code)) .ds-row-arrow { grid-column: 2; }
1898
1916
  .ds-247420 .row .meta.dim {
1899
1917
  white-space: normal;
1900
1918
  min-width: 0;
@@ -1969,21 +1987,37 @@
1969
1987
  specific to the retired Acid Editorial identity. All child classes/markup
1970
1988
  are UNCHANGED (no JS component edit needed) -- only the grid arrangement
1971
1989
  and each part's own layout (aside becomes a full-width card below the body
1972
- instead of a right-column card) changed. Centered text, capped measure. */
1990
+ instead of a right-column card) changed. Centered text, capped measure.
1991
+
1992
+ DE-CENTERED 2026-07-31: the flex-stack architecture from the restyle above
1993
+ is kept as-is (still a single-column stack, still the oversized display
1994
+ lead, still the full-width aside card) -- this is NOT a revert to the old
1995
+ two-column grid. What changed is alignment only: `align-items: center` /
1996
+ `text-align: center` read as the textbook dead-centered "AI portfolio"
1997
+ hero the moment the oversized display type is involved, regardless of
1998
+ architecture. Swapping to flex-start + left text-align, plus a
1999
+ --space-6 left inset inside the unchanged --stage-wide container, pushes
2000
+ the whole block toward the left edge so the oversized title crops against
2001
+ real whitespace on the right instead of sitting symmetric in the middle --
2002
+ editorial tension from a one-axis asymmetry, no grid architecture
2003
+ reintroduced. */
1973
2004
  .ds-247420 .ds-hero {
1974
2005
  padding: var(--space-9) 0 var(--space-8);
1975
- display: flex; flex-direction: column; align-items: center;
2006
+ display: flex; flex-direction: column; align-items: flex-start;
1976
2007
  gap: var(--space-5);
1977
2008
  max-width: var(--stage-wide);
1978
- text-align: center;
2009
+ margin-inline-start: 0;
2010
+ padding-inline-start: var(--space-6);
2011
+ text-align: left;
1979
2012
  position: relative; isolation: isolate;
1980
2013
  }
1981
- .ds-247420 .ds-hero-head { display: grid; gap: var(--space-3); justify-items: center; }
1982
- .ds-247420 .ds-hero-body { margin-inline: auto; }
2014
+ .ds-247420 .ds-hero-head { display: grid; gap: var(--space-3); justify-items: start; }
2015
+ .ds-247420 .ds-hero-body { margin-inline: 0; }
1983
2016
  /* The stat/badge/CTA cluster now sits as a full-width card BELOW the body
1984
- copy, centered, rather than a right-offset column -- still carries its own
1985
- visual weight via the top accent bar (rotated from the former left spine)
1986
- so it still reads as a deliberate block, not an afterthought. */
2017
+ copy, left-aligned with the rest of the stack, rather than a right-offset
2018
+ column -- still carries its own visual weight via the top accent bar
2019
+ (rotated from the former left spine) so it still reads as a deliberate
2020
+ block, not an afterthought. */
1987
2021
  .ds-247420 .ds-hero-aside {
1988
2022
  position: relative; isolation: isolate;
1989
2023
  width: 100%; max-width: 46ch;
@@ -2015,23 +2049,23 @@
2015
2049
  Snapping to either changes the hero's whole optical weight. */
2016
2050
  font-size: clamp(40px, 9cqi, 116px);
2017
2051
  line-height: 0.96; letter-spacing: var(--tr-tighter);
2018
- margin: 0 auto; max-width: 20ch; text-wrap: balance;
2052
+ margin: 0; max-width: 20ch; text-wrap: balance;
2019
2053
  }
2020
2054
  .ds-247420 .ds-hero-body {
2021
2055
  font-family: var(--ff-body); font-size: var(--fs-xl);
2022
- line-height: 1.45; margin: 0 auto; max-width: 46ch;
2056
+ line-height: 1.45; margin: 0; max-width: 46ch;
2023
2057
  color: var(--fg-2);
2024
2058
  }
2025
2059
  /* The lead phrase in the title — printed in the electric lead, not glowing. */
2026
2060
  .ds-247420 .ds-hero-accent { color: var(--accent-ink); font-weight: 700; }
2027
2061
  .ds-247420 .ds-hero-actions {
2028
2062
  display: flex; gap: var(--space-2, 10px); flex-wrap: wrap;
2029
- justify-content: center; margin-top: var(--space-hair, 4px);
2063
+ justify-content: flex-start; margin-top: var(--space-hair, 4px);
2030
2064
  }
2031
2065
  /* Below this width the aside card's own internal rhythm (stat rows still
2032
2066
  stacked vertically at full width) is already correct for a narrow column —
2033
2067
  no separate breakpoint override needed now that .ds-hero is always a
2034
- single-column centered stack at every width. */
2068
+ single-column left-aligned stack at every width. */
2035
2069
  @container (max-width: 900px) {
2036
2070
  .ds-247420 .ds-hero { padding: var(--space-7) 0 var(--space-6); }
2037
2071
  }
@@ -2041,6 +2075,21 @@
2041
2075
  Section grouping
2042
2076
  ============================================================ */
2043
2077
  .ds-247420 .ds-section { margin: var(--space-8) 0; }
2078
+ /* A .ds-section's own margin-top exists so a BARE first section (no element
2079
+ above it inside .app-main/.ds-app-surface) still gets the --space-8 lead
2080
+ from something. But .app-main and .ds-tier are flex/grid containers, where
2081
+ sibling margins never collapse -- so once ANY preceding sibling supplies
2082
+ its own trailing space (a .panel's --space-4 bottom margin, or a prior
2083
+ .ds-section's own --space-8 bottom margin), that top margin stacks ON TOP
2084
+ of it instead of coordinating into one gap: measured live, two adjacent
2085
+ .ds-section elements sat 192px apart (96 + 96) instead of 96, and a .panel
2086
+ followed by a .ds-section sat ~136px apart instead of the intended single
2087
+ gap. Zeroing the top margin on every NON-first .ds-section collapses the
2088
+ pair back to one coordinated gap, supplied by whichever side already
2089
+ carries it (the preceding sibling's own bottom margin, or the .ds-section's
2090
+ trailing margin below) -- same "gap is owned by one side only" pattern as
2091
+ .ds-panel-gap + .ds-panel-gap / .row + .row elsewhere in this file. */
2092
+ .ds-247420 * + .ds-section { margin-top: 0; }
2044
2093
  /* Compact section (e.g. a PageHeader used as a page's first element): no large
2045
2094
  leading margin, modest trailing margin — top-aligns without consumer overrides. */
2046
2095
  .ds-247420 .ds-section-compact { margin-top: 0; margin-bottom: var(--space-4); }
@@ -6456,7 +6505,21 @@
6456
6505
  it leaves a lone thread column growing to 1400px+ with no other use of
6457
6506
  the extra width. This wrapper adds a persistent "thread info" rail once
6458
6507
  there is room to spare, instead of just widening the message column. */
6459
- .ds-247420 .ds-chat-layout { display: flex; flex-direction: column; flex: 1; min-height: 0; gap: var(--space-3); }
6508
+ /* min-height is a floor, not the intended size — .chat-kit-page's flex-column
6509
+ splits leftover height between this (flex:1 1 0%, "leftover") and the
6510
+ pattern-notes panel below it (flex:0 1 auto, i.e. sized to its own content
6511
+ first). On a short viewport the panel's natural content height can consume
6512
+ the entire column budget, squeezing this flex-basis:0% sibling to a real,
6513
+ rendered, fully-populated-with-messages 0px — the thread is never empty,
6514
+ it is invisible. Inside .chat itself, .chat-head and .chat-composer are
6515
+ also flex:0-ish naturally-sized siblings of .chat-thread (flex:1 1 0%,
6516
+ chat-polish.css), so the floor has to clear their combined natural height
6517
+ (~55px head + ~78px composer, chrome + gap) with real room left for the
6518
+ thread to still show at least a couple of message bubbles rather than
6519
+ collapsing to a sliver between them — 30vh was not enough on a short
6520
+ viewport. It still grows past this floor via flex:1 whenever the column
6521
+ has room. */
6522
+ .ds-247420 .ds-chat-layout { display: flex; flex-direction: column; flex: 1; min-height: max(30vh, 420px); gap: var(--space-3); }
6460
6523
  .ds-247420 .ds-chat-layout > .chat { min-width: 0; }
6461
6524
  .ds-247420 .ds-chat-detail { display: none; }
6462
6525
  @media (min-width: 1100px) {
@@ -6692,6 +6755,67 @@
6692
6755
  }
6693
6756
  .ds-247420 .ds-pattern-notes strong { color: var(--fg); font-weight: 600; }
6694
6757
 
6758
+ /* .panel.panel-docs — documentation/annotation chrome, visibly different from
6759
+ the plain .panel the real interface renders in. aicat stacks its "about
6760
+ this kit" caption directly under the live chat surface; identical card
6761
+ chrome on both made the meta-explanation read as part of the product
6762
+ instead of a caption about it. Dashed border reuses the .ds-dropzone
6763
+ affordance vocabulary (a dashed edge already reads as "not solid content"
6764
+ in this system) and the tint is a quiet, low-saturation wash rather than
6765
+ an accent color, so it never competes with real accent-toned UI state. */
6766
+ .ds-247420 .panel.panel-docs {
6767
+ border-style: dashed;
6768
+ border-color: var(--rule-strong);
6769
+ background: color-mix(in oklab, var(--fg) 4%, var(--bg-2));
6770
+ box-shadow: none;
6771
+ }
6772
+ .ds-247420 .panel.panel-docs .panel-title {
6773
+ color: var(--fg-3);
6774
+ font-family: var(--ff-mono);
6775
+ font-size: var(--fs-xs);
6776
+ letter-spacing: 0.02em;
6777
+ text-transform: uppercase;
6778
+ }
6779
+ .ds-247420 .panel.panel-docs .panel-title::before {
6780
+ content: 'docs · ';
6781
+ color: var(--fg-3);
6782
+ }
6783
+
6784
+ /* .ds-kit-controls — collapsed-by-default dev/demo toggle drawer. Reference
6785
+ state-toggle pills (ready/loading/empty/error and similar) are scaffolding
6786
+ for exercising a kit's other states, not live content; sitting exposed in
6787
+ the flow next to real content made them read as leftover dev debris. A
6788
+ native <details>/<summary> disclosure needs no bespoke open/close state or
6789
+ JS and is keyboard/AT-operable for free — closed by default, opens on
6790
+ click or Enter/Space on the summary. */
6791
+ .ds-247420 .ds-kit-controls {
6792
+ border: var(--bw-hair) dashed var(--rule);
6793
+ border-radius: var(--r-2);
6794
+ margin: 0 0 var(--space-4);
6795
+ background: var(--bg);
6796
+ }
6797
+ .ds-247420 .ds-kit-controls summary {
6798
+ cursor: pointer;
6799
+ padding: var(--space-2) var(--space-3);
6800
+ font-family: var(--ff-mono);
6801
+ font-size: var(--fs-xs);
6802
+ color: var(--fg-3);
6803
+ list-style: none;
6804
+ }
6805
+ .ds-247420 .ds-kit-controls summary::-webkit-details-marker { display: none; }
6806
+ .ds-247420 .ds-kit-controls summary::before { content: '[+] '; }
6807
+ .ds-247420 .ds-kit-controls[open] summary::before { content: '[-] '; }
6808
+ .ds-247420 .ds-kit-controls summary:focus-visible {
6809
+ outline: var(--focus-w) solid var(--focus-color);
6810
+ outline-offset: var(--focus-offset);
6811
+ }
6812
+ .ds-247420 .ds-kit-controls-body {
6813
+ padding: 0 var(--space-3) var(--space-3);
6814
+ display: flex;
6815
+ flex-direction: column;
6816
+ gap: var(--space-2);
6817
+ }
6818
+
6695
6819
  /* Swatch cell wrapper (system_primer pairs it with .ds-swatch-col, which owns
6696
6820
  the column/gap). This adds only what the wrapper itself needs: a minimum-zero
6697
6821
  track so long token names ellipsize inside the grid instead of widening it. */
@@ -12387,6 +12511,14 @@
12387
12511
  font: var(--fs-tiny, 12px)/1 var(--ff-mono, monospace);
12388
12512
  color: var(--panel-text-3, var(--fg-3));
12389
12513
  white-space: nowrap;
12514
+ /* Sits on the ::before/::after rule line, which otherwise draws straight
12515
+ through the label text. Background must match the label's containing
12516
+ card (.panel uses --panel-1, falling back to --bg-2) so the line reads
12517
+ as visually broken around the label rather than crossing it. */
12518
+ background: var(--panel-1, var(--bg-2));
12519
+ padding: 0 var(--space-1-5, 5px);
12520
+ position: relative;
12521
+ z-index: var(--z-raised);
12390
12522
  }
12391
12523
  /* PermissionMenu (ov-perm) — roving-tabindex menuitemcheckbox rows +
12392
12524
  approve-all/revoke-all actions, styled to match the sibling Dropdown menu. */