anentrypoint-design 0.0.464 → 0.0.466
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/247420.css +125 -22
- package/dist/247420.js +25 -25
- package/package.json +1 -1
- package/src/css/app-shell/base.css +6 -1
- package/src/css/app-shell/files.css +13 -3
- package/src/css/app-shell/hero-content.css +15 -3
- package/src/css/app-shell/kits-appended.css +10 -1
- package/src/css/app-shell/primitives.css +10 -4
- package/src/css/app-shell/states-interactions.css +36 -8
- package/src/css/app-shell/topbar.css +35 -2
- package/src/kits/os/theme.css +1 -0
- package/src/kits/os/wm.css +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anentrypoint-design",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.466",
|
|
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",
|
|
@@ -152,7 +152,12 @@ h4, .t-h4 { font-family: var(--ff-display); font-size: var(--fs-h4); line-height
|
|
|
152
152
|
.t-mega { font-family: var(--ff-display); font-size: var(--fs-mega); line-height: 0.92; letter-spacing: var(--tr-tighter); font-weight: 700; margin: 0; }
|
|
153
153
|
|
|
154
154
|
.t-display { font-family: var(--ff-display); font-weight: 600; letter-spacing: var(--tr-tight); }
|
|
155
|
-
|
|
155
|
+
/* Explicit weight, not relying on inherited normal: --ff-mono's stack (Menlo,
|
|
156
|
+
Consolas, ui-monospace) can resolve to a variable-font fallback on some
|
|
157
|
+
platforms whose default instance isn't the 400 weight, rendering "body ·
|
|
158
|
+
16px regular" visibly bold despite its own label -- pin the weight so the
|
|
159
|
+
sample matches what it claims regardless of which font in the stack loads. */
|
|
160
|
+
.t-mono { font-family: var(--ff-mono); font-weight: 400; }
|
|
156
161
|
.t-body { font-family: var(--ff-body); }
|
|
157
162
|
|
|
158
163
|
/* House small-label voice, in two sizes. Every declaration here is sourced
|
|
@@ -92,7 +92,12 @@
|
|
|
92
92
|
border-color: var(--rule);
|
|
93
93
|
}
|
|
94
94
|
.ds-file-row:active { transform: translateY(1px); }
|
|
95
|
-
|
|
95
|
+
/* file-grid's own header/caption both claim NEVER A BORDER -- border-color
|
|
96
|
+
here silently broke that promise for exactly the row it's meant to call
|
|
97
|
+
out (the row a screenshot/manual test would actually look at). Selected
|
|
98
|
+
state stays legible via the tint alone; border-color stays transparent so
|
|
99
|
+
the base rule's promise holds for every row, active or not. */
|
|
100
|
+
.ds-file-row.active { background: var(--accent-tint); }
|
|
96
101
|
.ds-file-row[data-file-type="dir"] { border-left-width: 3px; border-left-color: var(--accent); }
|
|
97
102
|
.ds-file-row[data-file-type="image"],
|
|
98
103
|
.ds-file-row[data-file-type="video"],
|
|
@@ -427,9 +432,14 @@
|
|
|
427
432
|
}
|
|
428
433
|
.ds-error-banner:hover { background: color-mix(in oklab, var(--warn) 20%, var(--bg)); }
|
|
429
434
|
|
|
430
|
-
/* Dropzone
|
|
435
|
+
/* Dropzone — a tonal target, not a dashed-border affordance (preview/
|
|
436
|
+
dropzone.html's own header/caption both describe this: "NO DASHED
|
|
437
|
+
BORDERS" / "tonal panel that swaps to --panel-select on dragover"). A
|
|
438
|
+
solid hairline plus the idle->dragover background swap is the actual
|
|
439
|
+
design; dashed was this system's OTHER "drop target" vocabulary
|
|
440
|
+
(.panel-docs, kits-appended.css) leaking in here by copy-paste. */
|
|
431
441
|
.ds-dropzone {
|
|
432
|
-
border: var(--bw-rule)
|
|
442
|
+
border: var(--bw-rule) solid var(--rule);
|
|
433
443
|
border-radius: var(--r-3); background: var(--bg);
|
|
434
444
|
transition: border-color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
|
|
435
445
|
}
|
|
@@ -69,7 +69,12 @@
|
|
|
69
69
|
still fits a narrow column, and a 116px ceiling between the two tiers.
|
|
70
70
|
Snapping to either changes the hero's whole optical weight. */
|
|
71
71
|
font-size: clamp(40px, 9cqi, 116px);
|
|
72
|
-
|
|
72
|
+
/* 0.96 let ascenders/descenders visibly touch between wrapped lines at the
|
|
73
|
+
upper end of this clamp (measured on "the creative department of the
|
|
74
|
+
internet" at the 116px ceiling) -- 1.02 keeps the tight, no-air display
|
|
75
|
+
feel this title wants while clearing enough vertical room that letters
|
|
76
|
+
stop colliding. */
|
|
77
|
+
line-height: 1.02; letter-spacing: var(--tr-tighter);
|
|
73
78
|
margin: 0; max-width: 20ch; text-wrap: balance;
|
|
74
79
|
}
|
|
75
80
|
.ds-hero-body {
|
|
@@ -292,11 +297,18 @@ table {
|
|
|
292
297
|
(was 12/14 x 16 => ~43px rows). Density scales the vertical padding. */
|
|
293
298
|
border-radius: var(--r-0); overflow: hidden;
|
|
294
299
|
}
|
|
300
|
+
/* Panel heads / KPI labels / table headers were all identical uppercase-
|
|
301
|
+
tracked-mono weight (600), so a page with several of these side by side
|
|
302
|
+
(a dashboard) reads as one flat volume with no anchor -- the most
|
|
303
|
+
repetitive, least-singular label (a column header, one of many per
|
|
304
|
+
table) drops to a lighter 500 with slightly tighter tracking, keeping the
|
|
305
|
+
system's uppercase-mono voice but giving panel titles (still 600) a real
|
|
306
|
+
step up as the "read this first" tier. */
|
|
295
307
|
table th {
|
|
296
308
|
text-align: left;
|
|
297
309
|
padding: calc(var(--space-2) * var(--density)) var(--space-2-75);
|
|
298
|
-
font-size: var(--fs-tiny); font-weight:
|
|
299
|
-
color: var(--fg-3); text-transform: uppercase; letter-spacing: var(--tr-caps);
|
|
310
|
+
font-size: var(--fs-tiny); font-weight: 500;
|
|
311
|
+
color: var(--fg-3); text-transform: uppercase; letter-spacing: calc(var(--tr-caps) * 0.7);
|
|
300
312
|
background: var(--bg-2);
|
|
301
313
|
}
|
|
302
314
|
/* letter-spacing adds trailing space AFTER the last glyph too, but the table's
|
|
@@ -390,12 +390,21 @@
|
|
|
390
390
|
gap: var(--space-1-75, 6px);
|
|
391
391
|
}
|
|
392
392
|
/* Table() scroll containment — wide tables scroll inside their own box,
|
|
393
|
-
never the page body.
|
|
393
|
+
never the page body. overflow-x:auto alone works but gives no visible cue
|
|
394
|
+
that a table is wider than its box (macOS overlay scrollbars stay hidden
|
|
395
|
+
until an active hover/scroll gesture) -- columns beyond the fold read as
|
|
396
|
+
simply missing rather than reachable. An always-visible thin scrollbar
|
|
397
|
+
track makes the overflow legible without a gesture first. */
|
|
394
398
|
.ds-table-wrap {
|
|
395
399
|
overflow-x: auto;
|
|
396
400
|
-webkit-overflow-scrolling: touch;
|
|
397
401
|
max-width: 100%;
|
|
402
|
+
scrollbar-width: thin;
|
|
403
|
+
scrollbar-color: var(--rule-strong) transparent;
|
|
398
404
|
}
|
|
405
|
+
.ds-table-wrap::-webkit-scrollbar { height: 8px; }
|
|
406
|
+
.ds-table-wrap::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: var(--r-pill, 999px); }
|
|
407
|
+
.ds-table-wrap::-webkit-scrollbar-track { background: transparent; }
|
|
399
408
|
.ds-table-wrap > table { min-width: 100%; }
|
|
400
409
|
/* Sortable column headers (Table's opt-in sortable prop) — a docstudio-cue
|
|
401
410
|
addition: color stays neutral at rest (this is a structural control, not a
|
|
@@ -30,13 +30,19 @@
|
|
|
30
30
|
}
|
|
31
31
|
.btn { background: var(--bg-2); color: var(--fg); border-color: var(--rule); }
|
|
32
32
|
.btn:hover { background: var(--bg-3); color: var(--fg); transform: translateY(-1px); box-shadow: var(--shadow-1); }
|
|
33
|
-
/* Primary CTA — the
|
|
34
|
-
an ink block with
|
|
33
|
+
/* Primary CTA — the brand green as a solid editorial block; hover inverts to
|
|
34
|
+
an ink block with green text, a confident two-tone flip. Uses --green
|
|
35
|
+
(the site's own #247420 identity color, dark-mode-retuned to --green's
|
|
36
|
+
ink-safe #5CBF52 rather than --accent/--acid, which a prior contrast-driven
|
|
37
|
+
restyle deliberately flattened to a neutral gray for --accent's OTHER
|
|
38
|
+
consumers (nav active state, focus rings, etc) -- .btn-primary needed the
|
|
39
|
+
brand color back for click-hierarchy without undoing that restyle
|
|
40
|
+
elsewhere. --on-color (#fff) clears AA on both light and dark --green. */
|
|
35
41
|
.btn-primary {
|
|
36
|
-
background: var(--
|
|
42
|
+
background: var(--green); color: var(--on-color);
|
|
37
43
|
font-weight: 700;
|
|
38
44
|
}
|
|
39
|
-
.btn-primary:hover { background: var(--fg); color: var(--
|
|
45
|
+
.btn-primary:hover { background: var(--fg); color: var(--green); transform: translateY(-1px); box-shadow: var(--shadow-2); }
|
|
40
46
|
.btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 2px var(--fg); }
|
|
41
47
|
.btn-ghost:hover { background: var(--fg); color: var(--bg); transform: translateY(-1px); }
|
|
42
48
|
.btn:active, .btn-primary:active, .btn-ghost:active { transform: translateY(1px); box-shadow: none; }
|
|
@@ -26,10 +26,16 @@ tr.clickable:focus-visible {
|
|
|
26
26
|
:disabled pseudo-class, so a disabled link-styled button relies entirely
|
|
27
27
|
on this class selector for its visual treatment (aria-disabled + tabindex
|
|
28
28
|
are set in JS; this is the paired CSS half). */
|
|
29
|
+
/* opacity:0.6 alone barely separated from an active .btn-primary against a
|
|
30
|
+
busy background -- close enough in dark mode that users clicked disabled
|
|
31
|
+
buttons expecting them to work. grayscale flattens any color signal (no
|
|
32
|
+
more "still looks clickable-green") and the steeper opacity drop reads as
|
|
33
|
+
unmistakably inert at a glance, not just slightly dimmed. */
|
|
29
34
|
.btn:disabled, .btn-primary:disabled, .btn-ghost:disabled,
|
|
30
35
|
.btn.is-disabled, .btn-primary.is-disabled, .btn-ghost.is-disabled,
|
|
31
36
|
button:disabled, [disabled] {
|
|
32
|
-
opacity: 0.
|
|
37
|
+
opacity: 0.45;
|
|
38
|
+
filter: grayscale(60%);
|
|
33
39
|
cursor: not-allowed;
|
|
34
40
|
pointer-events: none;
|
|
35
41
|
}
|
|
@@ -350,7 +356,13 @@ textarea::placeholder {
|
|
|
350
356
|
transform: rotate(-2deg);
|
|
351
357
|
white-space: nowrap;
|
|
352
358
|
}
|
|
353
|
-
|
|
359
|
+
/* border-color previously matched background exactly (var(--ink) on both) --
|
|
360
|
+
same class of bug as the colors-core "paper" swatch: a border drawn in the
|
|
361
|
+
identical color as its own fill is invisible, so the ink-toned stamp was
|
|
362
|
+
the one variant on the page missing its box outline. --paper reads as a
|
|
363
|
+
visible ring against the ink fill (paper-on-ink is this token pair's
|
|
364
|
+
whole reason to exist), matching every other .stamp variant's contrast. */
|
|
365
|
+
.stamp.ink { background: var(--ink); border-color: var(--paper); color: var(--paper); }
|
|
354
366
|
.stamp.acid { background: var(--accent); border-color: var(--accent-ink); color: var(--accent-ink); }
|
|
355
367
|
.stamp.purple { border-color: var(--purple-2); color: var(--purple-2); }
|
|
356
368
|
.stamp.mascot { border-color: var(--mascot); color: var(--mascot-deep); }
|
|
@@ -365,6 +377,11 @@ textarea::placeholder {
|
|
|
365
377
|
border: 2px solid var(--fg);
|
|
366
378
|
border-radius: var(--r-hair);
|
|
367
379
|
background: transparent; color: var(--fg);
|
|
380
|
+
/* .stamp's own caption claims the rubber-stamp motif is "always rotated
|
|
381
|
+
slightly" -- .btn-stamp is the same visual face as an interactive
|
|
382
|
+
<button> (preview/stamps-lore.html's second row) and had no rotation at
|
|
383
|
+
all, breaking that claim for every stamp in that row. */
|
|
384
|
+
transform: rotate(-2deg);
|
|
368
385
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
369
386
|
}
|
|
370
387
|
.btn-stamp:hover { background: var(--panel-hover); }
|
|
@@ -382,11 +399,20 @@ hr.rule, hr.rule-double, hr.rule-dotted {
|
|
|
382
399
|
}
|
|
383
400
|
hr.rule { border-top: 1px solid var(--rule); }
|
|
384
401
|
hr.rule-double { border-top: 4px double var(--rule-strong); }
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
402
|
+
/* 1px was indistinguishable from .rule -- border-style:dotted needs enough
|
|
403
|
+
width to actually draw a gap between dots; below ~2px (esp. at DPRs where
|
|
404
|
+
1px resolves to a sub-pixel value like 0.8px) Chrome collapses it to a
|
|
405
|
+
solid line, which is exactly what preview/rules.html's report caught live. */
|
|
406
|
+
hr.rule-dotted { border-top: 2px dotted var(--rule-strong); }
|
|
407
|
+
|
|
408
|
+
/* Hairline-only text input — no full box, no permanent fill. A single bottom
|
|
409
|
+
rule that thickens to 2px on focus, matching the row/rule zero-border
|
|
410
|
+
aesthetic instead of a browser-default boxed field. A completely flat,
|
|
411
|
+
static hairline reads as a static label rather than an editable control
|
|
412
|
+
at a glance (no cue at rest, nothing on hover) -- the very faint permanent
|
|
413
|
+
wash plus a stronger hover tint below signal "this is a field" without
|
|
414
|
+
reverting to the boxed/filled chrome the hairline design deliberately
|
|
415
|
+
moved away from. */
|
|
390
416
|
.input {
|
|
391
417
|
display: block; width: 100%; box-sizing: border-box;
|
|
392
418
|
/* appearance:none alone is not enough: with color-scheme:dark set on the
|
|
@@ -400,11 +426,13 @@ hr.rule-dotted { border-top: 1px dotted var(--rule-strong); }
|
|
|
400
426
|
color-scheme: normal;
|
|
401
427
|
border: 0; border-bottom: 1px solid var(--rule-strong);
|
|
402
428
|
border-radius: var(--r-0);
|
|
403
|
-
background: transparent;
|
|
429
|
+
background: color-mix(in oklab, var(--fg) 2.5%, transparent);
|
|
404
430
|
box-shadow: none;
|
|
405
431
|
padding: var(--space-2) var(--space-1);
|
|
406
432
|
font: inherit; color: var(--fg);
|
|
433
|
+
transition: background var(--dur-snap) var(--ease), border-color var(--dur-snap) var(--ease);
|
|
407
434
|
}
|
|
435
|
+
.input:hover { background: color-mix(in oklab, var(--fg) 5%, transparent); }
|
|
408
436
|
/* Touch floor for the BASE input. Several specific inputs already carried this
|
|
409
437
|
(ds-file-filter-input, ds-modal-input, ds-term-input) but the primitive every
|
|
410
438
|
form actually uses did not, so a plain field measured 34px under a coarse
|
|
@@ -160,7 +160,20 @@ body.canvas-host { background: transparent !important; }
|
|
|
160
160
|
`minmax(0, 1fr)` — a real height the sidebar can overflow once bins +
|
|
161
161
|
labels + more exceed it. Without this the extra rows were silently chopped
|
|
162
162
|
at the viewport edge with no way to reach them. */
|
|
163
|
-
.app-side-shell
|
|
163
|
+
/* .app-side-shell and .app-main (below) are two INDEPENDENT scroll regions
|
|
164
|
+
side by side -- correct by design (a sidebar nav and a main panel each own
|
|
165
|
+
their own overflow), but with default invisible/overlay OS scrollbars a
|
|
166
|
+
user hovering the boundary has no visual cue which region the wheel will
|
|
167
|
+
scroll, or that there even are two scrollable zones rather than one page
|
|
168
|
+
scroll. Thin always-visible scrollbar tracks make each region's own scroll
|
|
169
|
+
ownership legible without changing the (correct) two-region architecture. */
|
|
170
|
+
.app-side-shell {
|
|
171
|
+
background: var(--bg); overflow-y: auto; min-height: 0;
|
|
172
|
+
scrollbar-width: thin; scrollbar-color: var(--rule-strong) transparent;
|
|
173
|
+
}
|
|
174
|
+
.app-side-shell::-webkit-scrollbar { width: 8px; }
|
|
175
|
+
.app-side-shell::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: var(--r-pill, 999px); }
|
|
176
|
+
.app-side-shell::-webkit-scrollbar-track { background: transparent; }
|
|
164
177
|
.app-body { display: grid; grid-template-columns: var(--sidebar-width) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); align-items: stretch; align-content: stretch; flex: 1; min-height: 0; }
|
|
165
178
|
.app-body.no-side { grid-template-columns: minmax(0, 1fr); }
|
|
166
179
|
/* When there is no sidebar, the empty side-shell must not occupy a grid row,
|
|
@@ -268,6 +281,15 @@ body.canvas-host { background: transparent !important; }
|
|
|
268
281
|
/* Reserve the scrollbar track so routes with/without overflow don't shift
|
|
269
282
|
the layout horizontally when the bar appears. */
|
|
270
283
|
.app-main { scrollbar-gutter: stable; }
|
|
284
|
+
/* Same visible-scroll-ownership rationale as .app-side-shell above -- makes
|
|
285
|
+
this the visually distinct SECOND independent scroll region rather than
|
|
286
|
+
an invisible-scrollbar mystery next to the sidebar. */
|
|
287
|
+
.app-main {
|
|
288
|
+
scrollbar-width: thin; scrollbar-color: var(--rule-strong) transparent;
|
|
289
|
+
}
|
|
290
|
+
.app-main::-webkit-scrollbar { width: 8px; }
|
|
291
|
+
.app-main::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: var(--r-pill, 999px); }
|
|
292
|
+
.app-main::-webkit-scrollbar-track { background: transparent; }
|
|
271
293
|
/* Jump-target anchors clear the inner-scroll top edge (no chrome overlap,
|
|
272
294
|
but a little breathing room when deep-linked within .app-main). */
|
|
273
295
|
.app-main [id] { scroll-margin-top: var(--space-4); }
|
|
@@ -358,5 +380,16 @@ body.canvas-host { background: transparent !important; }
|
|
|
358
380
|
color: var(--fg-3);
|
|
359
381
|
}
|
|
360
382
|
.dateline span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
361
|
-
|
|
383
|
+
/* The spreader itself only ever set flex-basis -- an empty div with no
|
|
384
|
+
background renders as blank space, not the "dotted spreader" the preview
|
|
385
|
+
page's own caption describes. border-bottom (not background-image) keeps
|
|
386
|
+
the dots crisp at 1px without a repeating-gradient banding artifact. */
|
|
387
|
+
.dateline .spread {
|
|
388
|
+
flex: 1 1 auto; min-width: var(--space-3); align-self: stretch;
|
|
389
|
+
display: flex; align-items: center;
|
|
390
|
+
}
|
|
391
|
+
.dateline .spread::after {
|
|
392
|
+
content: ''; flex: 1 1 auto;
|
|
393
|
+
border-bottom: var(--bw-hair, 1px) dotted var(--rule-strong);
|
|
394
|
+
}
|
|
362
395
|
|
package/src/kits/os/theme.css
CHANGED
|
@@ -829,6 +829,7 @@ html.ds-247420 { touch-action: pan-x pan-y; overscroll-behavior: none; -webkit-t
|
|
|
829
829
|
display: flex; align-items: center; justify-content: center;
|
|
830
830
|
pointer-events: none;
|
|
831
831
|
}
|
|
832
|
+
.tb-sess-empty[hidden] { display: none; }
|
|
832
833
|
.tb-sess-empty-card {
|
|
833
834
|
pointer-events: auto;
|
|
834
835
|
background: var(--bg);
|