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.
- package/README.md +22 -2
- package/app-shell.css +24 -4782
- package/colors_and_type.css +43 -0
- package/dist/247420.css +74 -3
- package/dist/247420.js +16 -16
- package/package.json +14 -8
- package/src/bootstrap.js +10 -1
- package/src/components/chat-message-parts.js +355 -0
- package/src/components/chat.js +23 -320
- package/src/components/data-density.js +15 -10
- package/src/components/files-modals.js +14 -2
- package/src/components/files.js +5 -1
- package/src/components/freddie/helpers.js +46 -8
- package/src/css/app-shell/base.css +157 -0
- package/src/css/app-shell/catalog-theme.css +144 -0
- package/src/css/app-shell/chat-basic.css +12 -0
- package/src/css/app-shell/chat-polish.css +459 -0
- package/src/css/app-shell/data-density.css +150 -0
- package/src/css/app-shell/files.css +709 -0
- package/src/css/app-shell/hero-content.css +407 -0
- package/src/css/app-shell/kits-appended.css +361 -0
- package/src/css/app-shell/loading-alerts.css +120 -0
- package/src/css/app-shell/panel-row.css +177 -0
- package/src/css/app-shell/primitives.css +197 -0
- package/src/css/app-shell/responsive.css +266 -0
- package/src/css/app-shell/responsive2-workspace.css +465 -0
- package/src/css/app-shell/row-print.css +75 -0
- package/src/css/app-shell/sidebar-misc.css +79 -0
- package/src/css/app-shell/states-interactions.css +696 -0
- package/src/css/app-shell/topbar.css +319 -0
- package/src/deck-stage.js +6 -4
- package/src/highlight.js +20 -4
- package/src/index.js +15 -5
- package/src/kits/os/freddie/pages-chat.js +1 -1
- package/src/kits/os/freddie/pages-core.js +1 -1
- package/src/kits/os/freddie/pages-os.js +1 -1
- package/src/kits/os/freddie/pages-tools.js +1 -1
- package/src/kits/os/wm.js +38 -0
- package/src/kits/slides/deck-stage-overlay.js +68 -0
- package/src/kits/slides/deck-stage-state.js +81 -0
- package/src/kits/slides/deck-stage-style.js +117 -0
- package/src/kits/slides/deck-stage.js +167 -0
- package/src/kits/slides/index.js +5 -0
- package/src/markdown.js +89 -11
- 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
|
+
|