anentrypoint-design 0.0.322 → 0.0.324

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.
Files changed (45) hide show
  1. package/README.md +22 -2
  2. package/app-shell.css +24 -4782
  3. package/colors_and_type.css +43 -0
  4. package/dist/247420.css +74 -3
  5. package/dist/247420.js +16 -16
  6. package/package.json +14 -8
  7. package/src/bootstrap.js +10 -1
  8. package/src/components/chat-message-parts.js +355 -0
  9. package/src/components/chat.js +23 -320
  10. package/src/components/data-density.js +15 -10
  11. package/src/components/files-modals.js +14 -2
  12. package/src/components/files.js +5 -1
  13. package/src/components/freddie/helpers.js +46 -8
  14. package/src/css/app-shell/base.css +157 -0
  15. package/src/css/app-shell/catalog-theme.css +144 -0
  16. package/src/css/app-shell/chat-basic.css +12 -0
  17. package/src/css/app-shell/chat-polish.css +459 -0
  18. package/src/css/app-shell/data-density.css +150 -0
  19. package/src/css/app-shell/files.css +709 -0
  20. package/src/css/app-shell/hero-content.css +407 -0
  21. package/src/css/app-shell/kits-appended.css +361 -0
  22. package/src/css/app-shell/loading-alerts.css +120 -0
  23. package/src/css/app-shell/panel-row.css +177 -0
  24. package/src/css/app-shell/primitives.css +197 -0
  25. package/src/css/app-shell/responsive.css +266 -0
  26. package/src/css/app-shell/responsive2-workspace.css +465 -0
  27. package/src/css/app-shell/row-print.css +75 -0
  28. package/src/css/app-shell/sidebar-misc.css +79 -0
  29. package/src/css/app-shell/states-interactions.css +696 -0
  30. package/src/css/app-shell/topbar.css +319 -0
  31. package/src/deck-stage.js +6 -4
  32. package/src/highlight.js +20 -4
  33. package/src/index.js +15 -5
  34. package/src/kits/os/freddie/pages-chat.js +1 -1
  35. package/src/kits/os/freddie/pages-core.js +1 -1
  36. package/src/kits/os/freddie/pages-os.js +1 -1
  37. package/src/kits/os/freddie/pages-tools.js +1 -1
  38. package/src/kits/os/wm.js +38 -0
  39. package/src/kits/slides/deck-stage-overlay.js +68 -0
  40. package/src/kits/slides/deck-stage-state.js +81 -0
  41. package/src/kits/slides/deck-stage-style.js +117 -0
  42. package/src/kits/slides/deck-stage.js +167 -0
  43. package/src/kits/slides/index.js +5 -0
  44. package/src/markdown.js +89 -11
  45. package/src/kits/os/freddie/helpers.js +0 -33
@@ -0,0 +1,157 @@
1
+ /* ============================================================
2
+ 247420 design system — component sheet
3
+ "Acid Editorial": system-font display + body + mono, no custom web fonts.
4
+ Confident hierarchy, asymmetric grid tension, print texture over glow,
5
+ one electric lead accent. Indicator rails over hairlines.
6
+ ============================================================ */
7
+
8
+ /* ============================================================
9
+ Base
10
+ ============================================================ */
11
+ * { box-sizing: border-box; }
12
+ html, body { margin: 0; padding: 0; }
13
+ button, input, select, textarea { font: inherit; }
14
+
15
+ /* ============================================================
16
+ Accessibility — Skip Link
17
+ ============================================================ */
18
+ .skip-link {
19
+ position: absolute;
20
+ top: -40px;
21
+ left: 0;
22
+ background: var(--accent);
23
+ color: var(--accent-fg);
24
+ padding: 8px 16px;
25
+ text-decoration: none;
26
+ z-index: 100;
27
+ border-radius: var(--r-pill);
28
+ font-weight: 600;
29
+ font-size: var(--fs-sm);
30
+ }
31
+ .skip-link:focus {
32
+ top: 10px;
33
+ outline: var(--focus-w) solid var(--focus-color);
34
+ outline-offset: var(--focus-offset);
35
+ }
36
+ body {
37
+ background: var(--bg);
38
+ color: var(--fg);
39
+ font-family: var(--ff-body);
40
+ font-size: var(--fs-body);
41
+ line-height: var(--lh-base);
42
+ -webkit-font-smoothing: antialiased;
43
+ text-rendering: optimizeLegibility;
44
+ }
45
+ /* Light (paper, the default theme) needs a stronger accent share than dark to
46
+ clear a visible selection tint against --bg-2 -- the dark-theme value (24%)
47
+ read too weak on paper. Dark/ink keeps its existing 24% mix, restored below
48
+ in the ink/dark + auto-dark blocks (mirrors the --danger/--flame pattern of
49
+ scoping a value per theme rather than sharing one across both). */
50
+ ::selection { background: color-mix(in oklab, var(--accent) 46%, var(--bg-2)); color: var(--fg); }
51
+
52
+ /* Every root has a CQ container so fluid type can resolve to a meaningful inline-size. */
53
+ .app, .ds-stage {
54
+ container-type: inline-size;
55
+ overflow-x: clip;
56
+ min-width: 0;
57
+ }
58
+ .app * { min-width: 0; }
59
+
60
+ /* ============================================================
61
+ Typography
62
+ ============================================================ */
63
+ h1, .t-h1 { font-family: var(--ff-display); font-size: var(--fs-h1); line-height: var(--lh-snug); letter-spacing: var(--tr-tight); font-weight: 600; margin: 0; }
64
+ h2, .t-h2 { font-family: var(--ff-display); font-size: var(--fs-h2); line-height: var(--lh-snug); letter-spacing: var(--tr-tight); font-weight: 600; margin: 0; }
65
+ h3, .t-h3 { font-family: var(--ff-display); font-size: var(--fs-h3); line-height: var(--lh-snug); letter-spacing: -0.01em; font-weight: 600; margin: 0; }
66
+ h4, .t-h4 { font-family: var(--ff-display); font-size: var(--fs-h4); line-height: var(--lh-snug); font-weight: 600; margin: 0; }
67
+
68
+ /* App/chrome typescale opt-in: compact heading ceiling for application UIs. */
69
+ [data-typescale="app"] h1, [data-typescale="app"] .t-h1 { font-size: var(--fs-h1-app); line-height: 1.15; }
70
+ [data-typescale="app"] h2, [data-typescale="app"] .t-h2 { font-size: var(--fs-h2-app); }
71
+ [data-typescale="app"] h3, [data-typescale="app"] .t-h3 { font-size: var(--fs-h3-app); }
72
+ [data-typescale="app"] h4, [data-typescale="app"] .t-h4 { font-size: var(--fs-h4-app); }
73
+
74
+ .t-hero { font-family: var(--ff-display); font-size: var(--fs-hero); line-height: var(--lh-tight); letter-spacing: var(--tr-tighter); font-weight: 700; margin: 0; }
75
+ .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; }
76
+
77
+ .t-display { font-family: var(--ff-display); font-weight: 600; letter-spacing: var(--tr-tight); }
78
+ .t-mono { font-family: var(--ff-mono); }
79
+ .t-body { font-family: var(--ff-body); }
80
+
81
+ .t-label { font-family: var(--ff-mono); font-size: var(--fs-tiny); text-transform: uppercase; letter-spacing: var(--tr-label); font-weight: 500; }
82
+ .t-micro { font-family: var(--ff-mono); font-size: var(--fs-micro); text-transform: uppercase; letter-spacing: var(--tr-label); color: var(--fg-3); }
83
+ .t-meta { font-family: var(--ff-body); font-size: var(--fs-sm); color: var(--fg-3); }
84
+
85
+ .lede, .t-lede {
86
+ font-family: var(--ff-body); font-size: var(--fs-xl);
87
+ line-height: var(--lh-tall); max-width: 38ch; font-weight: 400; color: var(--fg-2);
88
+ margin: 0;
89
+ }
90
+
91
+ .eyebrow {
92
+ font-family: var(--ff-mono);
93
+ font-size: var(--fs-tiny);
94
+ font-weight: 600;
95
+ letter-spacing: var(--tr-label);
96
+ text-transform: uppercase;
97
+ color: var(--accent-ink);
98
+ display: inline-flex; align-items: center; gap: 12px;
99
+ }
100
+ /* Editorial kicker mark — a short solid ink rule, the print-byline tell. */
101
+ .eyebrow::before {
102
+ content: '';
103
+ width: 28px; height: 3px; background: currentColor;
104
+ }
105
+
106
+ .ds-prose {
107
+ font-family: var(--ff-body);
108
+ font-size: var(--fs-lg);
109
+ line-height: var(--lh-long);
110
+ max-width: var(--measure);
111
+ text-wrap: pretty;
112
+ }
113
+ .ds-prose p { margin: 0 0 var(--space-4); }
114
+ .ds-prose h1 { font-size: clamp(34px, 5.4cqi, 64px); margin-bottom: var(--space-3); }
115
+ .ds-prose h2 { margin: var(--space-6) 0 var(--space-3); }
116
+ .ds-prose h3 { margin: var(--space-5) 0 var(--space-2); font-size: var(--fs-lg); font-weight: 600; }
117
+
118
+ .dim { color: var(--fg-3); }
119
+
120
+ /* Links */
121
+ a { color: inherit; text-decoration: none; }
122
+ a.ds-link-accent, .ds-prose a {
123
+ color: var(--accent-ink);
124
+ text-decoration: underline;
125
+ text-underline-offset: 4px;
126
+ text-decoration-thickness: 2px;
127
+ }
128
+ a.ds-link-accent:hover, .ds-prose a:hover {
129
+ background: var(--accent); color: var(--accent-fg); text-decoration-color: transparent;
130
+ }
131
+
132
+ kbd {
133
+ font-family: var(--ff-mono); font-size: 0.85em;
134
+ background: var(--bg-2); padding: 2px 6px; border-radius: var(--r-1);
135
+ }
136
+
137
+ code {
138
+ font-family: var(--ff-mono); font-size: 0.92em;
139
+ background: var(--bg-2); padding: 0.15em 0.5em; border-radius: var(--r-1);
140
+ }
141
+
142
+ pre {
143
+ font-family: var(--ff-mono);
144
+ background: var(--panel-bg);
145
+ color: var(--panel-text, inherit);
146
+ padding: var(--space-5);
147
+ overflow-x: auto;
148
+ line-height: 1.55;
149
+ font-size: var(--fs-sm);
150
+ margin: 0;
151
+ border-radius: var(--r-3);
152
+ }
153
+ pre .k { color: var(--code-str-alt, var(--mascot)); }
154
+ pre .s { color: var(--code-string, var(--green)); }
155
+ pre .c { color: var(--fg-3); }
156
+ pre .n { color: var(--code-num); }
157
+
@@ -0,0 +1,144 @@
1
+
2
+ /* ============================================================
3
+ Catalog / demo shell — a shared, compact framing for the preview/*.html
4
+ component galleries, so each preview stops hand-rolling its own <style>
5
+ (body padding, section margins, demo boxes). Mirrors webgeist's dense
6
+ catalog: a 240px sticky sidebar + capped main + a hairline-bordered,
7
+ flex-wrapping .ds-demo cell that packs variants inline and reflows.
8
+ ============================================================ */
9
+ .ds-catalog { display: flex; min-height: 100vh; gap: 0; }
10
+ .ds-catalog-side {
11
+ width: 240px; flex-shrink: 0;
12
+ border-right: var(--bw-hair) solid var(--rule);
13
+ padding: var(--space-3);
14
+ position: sticky; top: 0; height: 100vh; overflow-y: auto;
15
+ }
16
+ .ds-catalog-side h1 { font-size: var(--fs-lg); margin: 0 0 var(--space-1); }
17
+ .ds-catalog-side .subtitle { font-size: var(--fs-micro); color: var(--fg-3); margin: 0 0 var(--space-4); }
18
+ .ds-catalog-side nav h4 {
19
+ font-size: var(--fs-micro); text-transform: uppercase; letter-spacing: var(--tr-label);
20
+ color: var(--fg-3); margin: var(--space-3) 0 var(--space-1);
21
+ }
22
+ .ds-catalog-side nav a {
23
+ display: block; padding: var(--space-half) 0; font-size: var(--fs-tiny);
24
+ color: var(--fg-2); text-decoration: none;
25
+ }
26
+ .ds-catalog-side nav a:hover { color: var(--accent-ink); }
27
+ .ds-catalog-main { flex: 1; padding: var(--space-5); max-width: var(--measure-wide); min-width: 0; }
28
+ .ds-catalog-section { margin-bottom: var(--space-5); padding-top: var(--space-3); border-top: var(--bw-hair) solid var(--rule); }
29
+ .ds-catalog-section > h2 { font-size: var(--fs-h3-app); margin: 0 0 var(--space-3); }
30
+
31
+ /* The gallery cell: a hairline-bordered, flex-wrapping bin that packs a
32
+ component's variants inline and reflows — the signature "showcase" frame. */
33
+ .ds-demo {
34
+ border: var(--bw-hair) solid var(--rule);
35
+ border-radius: var(--r-1);
36
+ padding: var(--space-3);
37
+ display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
38
+ background: var(--bg);
39
+ }
40
+ .ds-demo + .ds-demo { margin-top: var(--space-2-75); }
41
+ .ds-demo-label { font-size: var(--fs-xs); font-weight: 500; margin: 0 0 var(--space-1); }
42
+ .ds-demo-desc { font-size: var(--fs-tiny); color: var(--fg-3); margin: 0 0 var(--space-2); }
43
+
44
+ @media (max-width: 768px) {
45
+ .ds-catalog { flex-direction: column; }
46
+ .ds-catalog-side { width: 100%; height: auto; position: static; border-right: 0; border-bottom: var(--bw-hair) solid var(--rule); }
47
+ .ds-catalog-main { padding: var(--space-3); }
48
+ }
49
+
50
+ /* -- File browser UX affordances ---------------------------- */
51
+ /* Toolbar filter input — compact search box. */
52
+ .ds-filter-input {
53
+ width: clamp(120px, 22vw, 220px);
54
+ padding: 7px 12px;
55
+ background: var(--bg-2); border: var(--bw-hair) solid var(--rule);
56
+ border-radius: var(--r-pill); color: var(--fg);
57
+ font-family: inherit; font-size: var(--fs-xs);
58
+ }
59
+ .ds-filter-input:focus-visible { outline: none; box-shadow: var(--focus-ring-inset); }
60
+
61
+ /* Loading skeleton: FileSkeleton renders `.ds-file-grid.ds-file-skeleton` with
62
+ `.ds-file-row.ds-file-row-skeleton` rows whose inner `.ds-skel` children shimmer
63
+ (via .ds-skel::after). The container therefore inherits the .ds-file-grid layout
64
+ and must NOT be a single 48px gradient bar (that collapsed every row and double-
65
+ shimmered). The dead .ds-file-grid-loading rule + unused ds-skeleton-shimmer
66
+ keyframe were removed; only the inner .ds-skel children animate. */
67
+
68
+ /* Drag-to-move drop target highlight on a directory row. */
69
+ .ds-file-row.ds-drop-target {
70
+ border-color: var(--accent);
71
+ background: var(--accent-tint);
72
+ box-shadow: inset 0 0 0 1px var(--accent);
73
+ }
74
+ .ds-file-row[draggable="true"] { cursor: grab; }
75
+ .ds-file-row[draggable="true"]:active { cursor: grabbing; }
76
+
77
+ /* (A stale duplicate multi-select block used to live here: an absolute-overlay
78
+ .ds-file-check hidden until hover, plus .ds-file-check.on / .ds-file-row.selected
79
+ / .ds-bulk-bar rules NO component ever emits. Being later in source at equal
80
+ specificity it clobbered the real in-flow checkbox at ~1243 - the shipped
81
+ multi-select rendered invisible-until-hover with clipped brackets. The live
82
+ rules are the earlier block; only the still-load-bearing bits remain below.) */
83
+ .ds-file-row { position: relative; }
84
+ /* Touch / coarse-pointer devices have no hover — keep the per-row action
85
+ buttons (rename/delete/download) visible so the file manager is fully
86
+ reachable without a pointer (e.g. an iPad in landscape). */
87
+ @media (hover: none), (pointer: coarse) {
88
+ .ds-file-actions { opacity: 1; }
89
+ }
90
+
91
+ /* Keyboard-shortcuts hint — compact two-column legend. */
92
+ .ds-shortcuts-hint {
93
+ display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
94
+ gap: 4px var(--space-3);
95
+ padding: var(--space-3) var(--space-4);
96
+ background: var(--bg-2); border: var(--bw-hair) solid var(--rule);
97
+ border-radius: var(--r-2); font-size: var(--fs-xs);
98
+ }
99
+ .ds-shortcut-row { display: flex; align-items: center; gap: var(--space-2); }
100
+ .ds-shortcuts-hint .ds-kbd-label { flex: 1 1 auto; opacity: .85; }
101
+ .ds-shortcuts-hint .ds-kbd { white-space: normal; max-width: 100%; }
102
+ .ds-kbd-caps { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
103
+ .ds-kbd-sep { color: var(--fg-3); font-size: var(--fs-micro); padding: 0 2px; }
104
+ .ds-kbd {
105
+ display: inline-block; min-width: 0;
106
+ padding: 2px 7px; border-radius: var(--r-0);
107
+ background: var(--bg); border: var(--bw-hair) solid var(--rule);
108
+ border-bottom-width: 2px;
109
+ font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-2);
110
+ white-space: nowrap;
111
+ }
112
+
113
+ /* ============================================================
114
+ Theme toggle (segmented + compact) — bound to src/theme.js
115
+ ============================================================ */
116
+ .ds-segmented {
117
+ display: inline-flex; gap: 0; padding: 2px;
118
+ background: var(--bg-2); border-radius: var(--r-pill);
119
+ font-family: var(--ff-mono); font-size: var(--fs-xs);
120
+ }
121
+ .ds-segmented .ds-seg-btn {
122
+ background: transparent; border: 0; color: var(--fg-3);
123
+ padding: 4px 12px; border-radius: var(--r-pill); cursor: pointer;
124
+ display: inline-flex; align-items: center; gap: 6px;
125
+ transition: color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
126
+ }
127
+ .ds-segmented .ds-seg-btn:hover { color: var(--fg); }
128
+ .ds-segmented .ds-seg-btn:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
129
+ .ds-segmented .ds-seg-btn.is-on {
130
+ background: var(--bg); color: var(--fg);
131
+ box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule);
132
+ }
133
+ .ds-theme-toggle.btn {
134
+ font-family: var(--ff-mono); font-size: var(--fs-xs);
135
+ display: inline-flex; align-items: center; gap: 6px;
136
+ }
137
+ /* CSS-drawn half-disc mark on the compact theme toggle: keeps the control
138
+ legible when its text label is hidden (icon-only rail strip). */
139
+ .ds-theme-disc {
140
+ flex: 0 0 auto; width: 14px; height: 14px; border-radius: 50%;
141
+ border: var(--bw-hair) solid var(--fg-3);
142
+ background: linear-gradient(90deg, var(--fg-3) 0 50%, transparent 50% 100%);
143
+ }
144
+
@@ -0,0 +1,12 @@
1
+
2
+ /* ============================================================
3
+ Chat — minimal styles (placeholder for full chat surface)
4
+ ============================================================ */
5
+ .ds-chat { display: flex; flex-direction: column; gap: 12px; padding: var(--space-4); }
6
+ .ds-chat-msg { padding: 12px 18px; background: var(--bg-2); border-radius: var(--r-3); max-width: min(90vw, 36em); }
7
+ .ds-chat-msg.user { background: var(--accent-tint); color: var(--fg); align-self: flex-end; }
8
+ .ds-chat-md { font-size: var(--fs-sm); line-height: 1.6; }
9
+ .ds-chat-composer { display: flex; gap: 8px; padding: var(--space-4); }
10
+ .ds-chat-composer input { flex: 1; padding: 13px 18px; background: var(--bg-2); border: 0; border-radius: var(--r-pill); font-family: inherit; font-size: var(--fs-sm); color: var(--fg); }
11
+ .ds-chat-composer input:focus-visible { box-shadow: var(--focus-ring-inset); }
12
+