@runtypelabs/persona 2.3.1 → 3.1.0
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 +222 -5
- package/dist/index.cjs +42 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +832 -571
- package/dist/index.d.ts +832 -571
- package/dist/index.global.js +88 -88
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +42 -42
- package/dist/index.js.map +1 -1
- package/dist/widget.css +257 -67
- package/package.json +2 -4
- package/src/components/artifact-card.ts +39 -5
- package/src/components/artifact-pane.ts +68 -127
- package/src/components/composer-builder.ts +3 -23
- package/src/components/header-builder.ts +29 -34
- package/src/components/header-layouts.ts +109 -41
- package/src/components/launcher.ts +10 -7
- package/src/components/message-bubble.ts +7 -11
- package/src/components/panel.ts +4 -4
- package/src/defaults.ts +22 -93
- package/src/index.ts +20 -7
- package/src/presets.ts +66 -51
- package/src/runtime/host-layout.test.ts +333 -0
- package/src/runtime/host-layout.ts +346 -27
- package/src/runtime/init.test.ts +113 -8
- package/src/runtime/init.ts +1 -1
- package/src/styles/widget.css +257 -67
- package/src/types/theme.ts +76 -0
- package/src/types.ts +86 -97
- package/src/ui.docked.test.ts +203 -7
- package/src/ui.ts +125 -92
- package/src/utils/artifact-gate.ts +1 -1
- package/src/utils/buttons.ts +417 -0
- package/src/utils/code-generators.test.ts +43 -7
- package/src/utils/code-generators.ts +9 -25
- package/src/utils/deep-merge.ts +26 -0
- package/src/utils/dock.ts +18 -5
- package/src/utils/dropdown.ts +178 -0
- package/src/utils/theme.test.ts +90 -15
- package/src/utils/theme.ts +20 -46
- package/src/utils/tokens.ts +108 -11
- package/src/styles/tailwind.css +0 -20
- package/src/utils/migration.ts +0 -220
package/src/styles/widget.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
[data-persona-root] {
|
|
2
2
|
all: initial;
|
|
3
3
|
font-family: var(--persona-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", sans-serif);
|
|
4
4
|
font-size: var(--persona-font-size, 1rem);
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
--persona-md-blockquote-text-color: var(--persona-muted, #6b7280);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
[data-persona-root] * {
|
|
21
21
|
box-sizing: border-box;
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
/* Widget CSS Variables - scoped to widget root to avoid polluting global namespace */
|
|
97
|
-
|
|
97
|
+
[data-persona-root] {
|
|
98
98
|
--persona-radius-sm: 0.125rem;
|
|
99
99
|
--persona-radius-md: 0.375rem;
|
|
100
100
|
--persona-radius-lg: 0.5rem;
|
|
@@ -1165,37 +1165,37 @@
|
|
|
1165
1165
|
border-color: var(--persona-message-assistant-border, var(--persona-border, #e5e7eb));
|
|
1166
1166
|
}
|
|
1167
1167
|
|
|
1168
|
-
|
|
1168
|
+
[data-persona-root] .vanilla-message-assistant-bubble.persona-shadow-sm {
|
|
1169
1169
|
box-shadow: var(--persona-message-assistant-shadow, 0 1px 2px 0 rgb(0 0 0 / 0.05));
|
|
1170
1170
|
}
|
|
1171
1171
|
|
|
1172
|
-
|
|
1172
|
+
[data-persona-root] .vanilla-message-user-bubble.persona-shadow-sm {
|
|
1173
1173
|
box-shadow: var(--persona-message-user-shadow, 0 5px 15px rgba(15, 23, 42, 0.08));
|
|
1174
1174
|
}
|
|
1175
1175
|
|
|
1176
|
-
|
|
1176
|
+
[data-persona-root] .vanilla-tool-bubble.persona-shadow-sm {
|
|
1177
1177
|
box-shadow: var(--persona-tool-bubble-shadow, 0 5px 15px rgba(15, 23, 42, 0.08));
|
|
1178
1178
|
}
|
|
1179
1179
|
|
|
1180
|
-
|
|
1180
|
+
[data-persona-root] .vanilla-reasoning-bubble.persona-shadow-sm {
|
|
1181
1181
|
box-shadow: var(--persona-reasoning-bubble-shadow, 0 5px 15px rgba(15, 23, 42, 0.08));
|
|
1182
1182
|
}
|
|
1183
1183
|
|
|
1184
1184
|
/* Artifact markdown (no .vanilla-message-bubble wrapper) */
|
|
1185
|
-
|
|
1185
|
+
[data-persona-root] .persona-markdown-bubble {
|
|
1186
1186
|
color: var(--persona-text, #111827);
|
|
1187
1187
|
font-family: var(--persona-md-prose-font-family, inherit);
|
|
1188
1188
|
}
|
|
1189
1189
|
|
|
1190
|
-
|
|
1190
|
+
[data-persona-root] .persona-markdown-bubble p {
|
|
1191
1191
|
margin: 0 0 1.5em;
|
|
1192
1192
|
}
|
|
1193
1193
|
|
|
1194
|
-
|
|
1194
|
+
[data-persona-root] .persona-markdown-bubble p:last-child {
|
|
1195
1195
|
margin-bottom: 0;
|
|
1196
1196
|
}
|
|
1197
1197
|
|
|
1198
|
-
|
|
1198
|
+
[data-persona-root] .persona-markdown-bubble code:not(pre code) {
|
|
1199
1199
|
background-color: var(--persona-md-inline-code-bg);
|
|
1200
1200
|
color: var(--persona-md-inline-code-color, inherit);
|
|
1201
1201
|
padding: var(--persona-md-inline-code-padding);
|
|
@@ -1203,12 +1203,12 @@
|
|
|
1203
1203
|
font-size: var(--persona-md-inline-code-font-size);
|
|
1204
1204
|
}
|
|
1205
1205
|
|
|
1206
|
-
|
|
1206
|
+
[data-persona-root] .persona-markdown-bubble a {
|
|
1207
1207
|
color: var(--persona-md-link-color, var(--persona-accent, #3b82f6));
|
|
1208
1208
|
text-decoration: underline;
|
|
1209
1209
|
}
|
|
1210
1210
|
|
|
1211
|
-
|
|
1211
|
+
[data-persona-root] .persona-markdown-bubble pre {
|
|
1212
1212
|
background-color: var(--persona-md-code-block-bg);
|
|
1213
1213
|
border: 1px solid var(--persona-md-code-block-border-color);
|
|
1214
1214
|
border-radius: var(--persona-radius-md, 0.375rem);
|
|
@@ -1243,7 +1243,7 @@
|
|
|
1243
1243
|
text-decoration: underline;
|
|
1244
1244
|
}
|
|
1245
1245
|
|
|
1246
|
-
|
|
1246
|
+
[data-persona-root] .vanilla-message-assistant-bubble a {
|
|
1247
1247
|
color: var(--persona-md-link-color, var(--persona-accent, #3b82f6));
|
|
1248
1248
|
}
|
|
1249
1249
|
|
|
@@ -1328,7 +1328,7 @@
|
|
|
1328
1328
|
Markdown Header Styles
|
|
1329
1329
|
============================================ */
|
|
1330
1330
|
.vanilla-message-bubble h1,
|
|
1331
|
-
|
|
1331
|
+
[data-persona-root] .persona-markdown-bubble h1 {
|
|
1332
1332
|
font-size: var(--persona-md-h1-size);
|
|
1333
1333
|
font-weight: var(--persona-md-h1-weight);
|
|
1334
1334
|
margin: var(--persona-md-h1-margin);
|
|
@@ -1337,7 +1337,7 @@
|
|
|
1337
1337
|
}
|
|
1338
1338
|
|
|
1339
1339
|
.vanilla-message-bubble h2,
|
|
1340
|
-
|
|
1340
|
+
[data-persona-root] .persona-markdown-bubble h2 {
|
|
1341
1341
|
font-size: var(--persona-md-h2-size);
|
|
1342
1342
|
font-weight: var(--persona-md-h2-weight);
|
|
1343
1343
|
margin: var(--persona-md-h2-margin);
|
|
@@ -1346,7 +1346,7 @@
|
|
|
1346
1346
|
}
|
|
1347
1347
|
|
|
1348
1348
|
.vanilla-message-bubble h3,
|
|
1349
|
-
|
|
1349
|
+
[data-persona-root] .persona-markdown-bubble h3 {
|
|
1350
1350
|
font-size: var(--persona-md-h3-size);
|
|
1351
1351
|
font-weight: var(--persona-md-h3-weight);
|
|
1352
1352
|
margin: var(--persona-md-h3-margin);
|
|
@@ -1355,7 +1355,7 @@
|
|
|
1355
1355
|
}
|
|
1356
1356
|
|
|
1357
1357
|
.vanilla-message-bubble h4,
|
|
1358
|
-
|
|
1358
|
+
[data-persona-root] .persona-markdown-bubble h4 {
|
|
1359
1359
|
font-size: var(--persona-md-h4-size);
|
|
1360
1360
|
font-weight: var(--persona-md-h4-weight);
|
|
1361
1361
|
margin: var(--persona-md-h4-margin);
|
|
@@ -1364,7 +1364,7 @@
|
|
|
1364
1364
|
}
|
|
1365
1365
|
|
|
1366
1366
|
.vanilla-message-bubble h5,
|
|
1367
|
-
|
|
1367
|
+
[data-persona-root] .persona-markdown-bubble h5 {
|
|
1368
1368
|
font-size: var(--persona-md-h5-size);
|
|
1369
1369
|
font-weight: var(--persona-md-h5-weight);
|
|
1370
1370
|
margin: var(--persona-md-h5-margin);
|
|
@@ -1373,7 +1373,7 @@
|
|
|
1373
1373
|
}
|
|
1374
1374
|
|
|
1375
1375
|
.vanilla-message-bubble h6,
|
|
1376
|
-
|
|
1376
|
+
[data-persona-root] .persona-markdown-bubble h6 {
|
|
1377
1377
|
font-size: var(--persona-md-h6-size);
|
|
1378
1378
|
font-weight: var(--persona-md-h6-weight);
|
|
1379
1379
|
margin: var(--persona-md-h6-margin);
|
|
@@ -2040,12 +2040,12 @@
|
|
|
2040
2040
|
Visibility (Tailwind parity — prefix persona-)
|
|
2041
2041
|
Shipped widget.css is hand-maintained; these utilities are used in TS but not generated by Tailwind at build time.
|
|
2042
2042
|
============================================ */
|
|
2043
|
-
|
|
2043
|
+
[data-persona-root] .persona-hidden {
|
|
2044
2044
|
display: none !important;
|
|
2045
2045
|
}
|
|
2046
2046
|
|
|
2047
2047
|
@media (min-width: 768px) {
|
|
2048
|
-
|
|
2048
|
+
[data-persona-root] .md\:persona-hidden {
|
|
2049
2049
|
display: none !important;
|
|
2050
2050
|
}
|
|
2051
2051
|
}
|
|
@@ -2055,35 +2055,35 @@
|
|
|
2055
2055
|
Vars set from TS: --persona-artifact-split-gap, --persona-artifact-pane-width,
|
|
2056
2056
|
--persona-artifact-pane-max-width, --persona-artifact-pane-min-width
|
|
2057
2057
|
============================================ */
|
|
2058
|
-
|
|
2058
|
+
[data-persona-root] .persona-artifact-split-root {
|
|
2059
2059
|
gap: var(--persona-artifact-split-gap, 0.5rem);
|
|
2060
2060
|
}
|
|
2061
2061
|
|
|
2062
2062
|
/* Document toolbar preset — optional layout vars: --persona-artifact-doc-toolbar-icon-color, etc. */
|
|
2063
|
-
|
|
2063
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn {
|
|
2064
2064
|
display: inline-flex;
|
|
2065
2065
|
align-items: center;
|
|
2066
2066
|
justify-content: center;
|
|
2067
2067
|
padding: var(--persona-artifact-toolbar-icon-padding, 0.25rem);
|
|
2068
2068
|
border-radius: var(--persona-artifact-toolbar-icon-radius, var(--persona-radius-md, 0.375rem));
|
|
2069
2069
|
border: var(--persona-artifact-toolbar-icon-border, 1px solid var(--persona-border, #e5e7eb));
|
|
2070
|
-
background: var(--persona-surface, #ffffff);
|
|
2070
|
+
background: var(--persona-artifact-toolbar-icon-bg, var(--persona-surface, #ffffff));
|
|
2071
2071
|
color: var(--persona-artifact-doc-toolbar-icon-color, var(--persona-text, #111827));
|
|
2072
2072
|
cursor: pointer;
|
|
2073
2073
|
line-height: 1;
|
|
2074
2074
|
}
|
|
2075
2075
|
|
|
2076
|
-
|
|
2076
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn:hover {
|
|
2077
2077
|
color: var(--persona-artifact-toolbar-icon-hover-color, inherit);
|
|
2078
2078
|
background: var(--persona-artifact-toolbar-icon-hover-bg, var(--persona-container, #f3f4f6));
|
|
2079
2079
|
}
|
|
2080
2080
|
|
|
2081
|
-
|
|
2081
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-icon-btn[aria-pressed="true"] {
|
|
2082
2082
|
background: var(--persona-artifact-doc-toggle-active-bg, var(--persona-container, #f3f4f6));
|
|
2083
2083
|
border-color: var(--persona-artifact-doc-toggle-active-border, var(--persona-border, #e5e7eb));
|
|
2084
2084
|
}
|
|
2085
2085
|
|
|
2086
|
-
|
|
2086
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-copy-btn {
|
|
2087
2087
|
display: inline-flex;
|
|
2088
2088
|
align-items: center;
|
|
2089
2089
|
gap: 0.35rem;
|
|
@@ -2097,45 +2097,227 @@
|
|
|
2097
2097
|
line-height: 1.25;
|
|
2098
2098
|
}
|
|
2099
2099
|
|
|
2100
|
-
|
|
2100
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-copy-btn:hover {
|
|
2101
2101
|
background: var(--persona-artifact-toolbar-icon-hover-bg, var(--persona-container, #f3f4f6));
|
|
2102
2102
|
}
|
|
2103
2103
|
|
|
2104
|
-
|
|
2104
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-doc-copy-label {
|
|
2105
2105
|
font-weight: 500;
|
|
2106
2106
|
}
|
|
2107
2107
|
|
|
2108
|
-
/* Copy menu dropdown theming */
|
|
2109
|
-
#persona-root .persona-artifact-doc-copy-menu {
|
|
2110
|
-
background: var(--persona-artifact-toolbar-copy-menu-bg, var(--persona-surface, #fff));
|
|
2111
|
-
border: var(--persona-artifact-toolbar-copy-menu-border, 1px solid var(--persona-border, #e5e7eb));
|
|
2112
|
-
box-shadow: var(--persona-artifact-toolbar-copy-menu-shadow, 0 4px 6px -1px rgba(0,0,0,.1));
|
|
2113
|
-
border-radius: var(--persona-artifact-toolbar-copy-menu-radius, 0.375rem);
|
|
2114
|
-
}
|
|
2115
|
-
|
|
2116
|
-
#persona-root .persona-artifact-doc-copy-menu button:hover {
|
|
2117
|
-
background: var(--persona-artifact-toolbar-copy-menu-item-hover-bg, var(--persona-container, #f3f4f6));
|
|
2118
|
-
}
|
|
2119
|
-
|
|
2120
2108
|
/* Artifact tab theming */
|
|
2121
|
-
|
|
2109
|
+
[data-persona-root] .persona-artifact-tab {
|
|
2122
2110
|
background: var(--persona-artifact-tab-bg, transparent);
|
|
2123
2111
|
border-radius: var(--persona-artifact-tab-radius, 0.5rem);
|
|
2124
2112
|
color: var(--persona-artifact-tab-color, inherit);
|
|
2125
2113
|
}
|
|
2126
2114
|
|
|
2127
|
-
|
|
2115
|
+
[data-persona-root] .persona-artifact-tab.persona-bg-persona-container {
|
|
2128
2116
|
background: var(--persona-artifact-tab-active-bg, var(--persona-container, #f3f4f6));
|
|
2129
2117
|
border-color: var(--persona-artifact-tab-active-border, var(--persona-border, #e5e7eb));
|
|
2130
2118
|
}
|
|
2131
2119
|
|
|
2132
2120
|
/* Artifact toolbar background theming */
|
|
2133
|
-
|
|
2121
|
+
[data-persona-root] .persona-artifact-toolbar {
|
|
2134
2122
|
background: var(--persona-artifact-toolbar-bg, var(--persona-surface, #fff));
|
|
2135
2123
|
}
|
|
2136
2124
|
|
|
2125
|
+
/* Toggle group gap */
|
|
2126
|
+
[data-persona-root] .persona-artifact-toggle-group {
|
|
2127
|
+
gap: var(--persona-artifact-toolbar-toggle-group-gap, 0.25rem);
|
|
2128
|
+
}
|
|
2129
|
+
|
|
2130
|
+
/* Toggle button border-radius (view/code buttons) */
|
|
2131
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-view-btn,
|
|
2132
|
+
[data-persona-root] .persona-artifact-toolbar-document .persona-artifact-code-btn {
|
|
2133
|
+
border-radius: var(--persona-artifact-toolbar-toggle-radius, var(--persona-artifact-toolbar-icon-radius, var(--persona-radius-md, 0.375rem)));
|
|
2134
|
+
}
|
|
2135
|
+
|
|
2136
|
+
/* Tab hover */
|
|
2137
|
+
[data-persona-root] .persona-artifact-tab:hover {
|
|
2138
|
+
background: var(--persona-artifact-tab-hover-bg, var(--persona-container, #f3f4f6));
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
/* Tab list container */
|
|
2142
|
+
[data-persona-root] .persona-artifact-list {
|
|
2143
|
+
background: var(--persona-artifact-tab-list-bg, transparent);
|
|
2144
|
+
border-bottom-color: var(--persona-artifact-tab-list-border-color, var(--persona-border, #e5e7eb));
|
|
2145
|
+
padding: var(--persona-artifact-tab-list-padding, 0.5rem);
|
|
2146
|
+
}
|
|
2147
|
+
|
|
2148
|
+
/* Toolbar border override */
|
|
2149
|
+
[data-persona-root] .persona-artifact-toolbar-document {
|
|
2150
|
+
border-bottom: var(--persona-artifact-toolbar-border, 1px solid var(--persona-border, #e5e7eb));
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
/* ── Composable button utilities ── */
|
|
2154
|
+
|
|
2155
|
+
/* Icon button — base for all icon-only buttons created by createIconButton() */
|
|
2156
|
+
[data-persona-root] .persona-icon-btn {
|
|
2157
|
+
display: inline-flex;
|
|
2158
|
+
align-items: center;
|
|
2159
|
+
justify-content: center;
|
|
2160
|
+
padding: var(--persona-icon-btn-padding, 0.25rem);
|
|
2161
|
+
border-radius: var(--persona-icon-btn-radius, var(--persona-radius-md, 0.375rem));
|
|
2162
|
+
border: var(--persona-icon-btn-border, 1px solid var(--persona-border, #e5e7eb));
|
|
2163
|
+
background: var(--persona-icon-btn-bg, var(--persona-surface, #ffffff));
|
|
2164
|
+
color: var(--persona-icon-btn-color, var(--persona-text, #111827));
|
|
2165
|
+
cursor: pointer;
|
|
2166
|
+
line-height: 1;
|
|
2167
|
+
transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
[data-persona-root] .persona-icon-btn:hover {
|
|
2171
|
+
background: var(--persona-icon-btn-hover-bg, var(--persona-container, #f3f4f6));
|
|
2172
|
+
color: var(--persona-icon-btn-hover-color, inherit);
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
[data-persona-root] .persona-icon-btn:focus-visible {
|
|
2176
|
+
outline: 2px solid var(--persona-accent, #3b82f6);
|
|
2177
|
+
outline-offset: 2px;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
[data-persona-root] .persona-icon-btn[aria-pressed="true"] {
|
|
2181
|
+
background: var(--persona-icon-btn-active-bg, var(--persona-container, #f3f4f6));
|
|
2182
|
+
border-color: var(--persona-icon-btn-active-border, var(--persona-border, #e5e7eb));
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
/* Label button — icon + text button created by createLabelButton() */
|
|
2186
|
+
[data-persona-root] .persona-label-btn {
|
|
2187
|
+
display: inline-flex;
|
|
2188
|
+
align-items: center;
|
|
2189
|
+
gap: var(--persona-label-btn-gap, 0.35rem);
|
|
2190
|
+
padding: var(--persona-label-btn-padding, 0.25rem 0.5rem);
|
|
2191
|
+
border-radius: var(--persona-label-btn-radius, var(--persona-radius-md, 0.375rem));
|
|
2192
|
+
border: var(--persona-label-btn-border, 1px solid var(--persona-border, #e5e7eb));
|
|
2193
|
+
background: var(--persona-label-btn-bg, var(--persona-surface, #ffffff));
|
|
2194
|
+
color: var(--persona-label-btn-color, var(--persona-text, #111827));
|
|
2195
|
+
cursor: pointer;
|
|
2196
|
+
font-size: var(--persona-label-btn-font-size, 0.75rem);
|
|
2197
|
+
font-weight: 500;
|
|
2198
|
+
line-height: 1.25;
|
|
2199
|
+
white-space: nowrap;
|
|
2200
|
+
transition: background-color 0.15s ease, color 0.15s ease;
|
|
2201
|
+
}
|
|
2202
|
+
|
|
2203
|
+
[data-persona-root] .persona-label-btn:hover {
|
|
2204
|
+
background: var(--persona-label-btn-hover-bg, var(--persona-container, #f3f4f6));
|
|
2205
|
+
}
|
|
2206
|
+
|
|
2207
|
+
[data-persona-root] .persona-label-btn:focus-visible {
|
|
2208
|
+
outline: 2px solid var(--persona-accent, #3b82f6);
|
|
2209
|
+
outline-offset: 2px;
|
|
2210
|
+
}
|
|
2211
|
+
|
|
2212
|
+
[data-persona-root] .persona-label-btn--sm {
|
|
2213
|
+
padding: var(--persona-label-btn-padding, 0.25rem 0.5rem);
|
|
2214
|
+
font-size: var(--persona-label-btn-font-size, 0.75rem);
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
[data-persona-root] .persona-label-btn--md {
|
|
2218
|
+
padding: 0.375rem 0.75rem;
|
|
2219
|
+
font-size: 0.8125rem;
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2222
|
+
[data-persona-root] .persona-label-btn--primary {
|
|
2223
|
+
background: var(--persona-primary, #3b82f6);
|
|
2224
|
+
color: var(--persona-text-inverse, #ffffff);
|
|
2225
|
+
border-color: transparent;
|
|
2226
|
+
}
|
|
2227
|
+
|
|
2228
|
+
[data-persona-root] .persona-label-btn--primary:hover {
|
|
2229
|
+
opacity: 0.9;
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2232
|
+
[data-persona-root] .persona-label-btn--destructive {
|
|
2233
|
+
color: var(--persona-label-btn-destructive-color, #ef4444);
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
[data-persona-root] .persona-label-btn--ghost {
|
|
2237
|
+
border: none;
|
|
2238
|
+
background: transparent;
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
[data-persona-root] .persona-label-btn--ghost:hover {
|
|
2242
|
+
background: var(--persona-label-btn-hover-bg, var(--persona-container, #f3f4f6));
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2245
|
+
/* Toggle group — mutually exclusive button set created by createToggleGroup() */
|
|
2246
|
+
[data-persona-root] .persona-toggle-group {
|
|
2247
|
+
display: inline-flex;
|
|
2248
|
+
gap: var(--persona-toggle-group-gap, 0);
|
|
2249
|
+
}
|
|
2250
|
+
|
|
2251
|
+
[data-persona-root] .persona-toggle-group > .persona-icon-btn {
|
|
2252
|
+
border-radius: 0;
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
[data-persona-root] .persona-toggle-group > .persona-icon-btn:first-child {
|
|
2256
|
+
border-top-left-radius: var(--persona-toggle-group-radius, var(--persona-icon-btn-radius, var(--persona-radius-md, 0.375rem)));
|
|
2257
|
+
border-bottom-left-radius: var(--persona-toggle-group-radius, var(--persona-icon-btn-radius, var(--persona-radius-md, 0.375rem)));
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
[data-persona-root] .persona-toggle-group > .persona-icon-btn:last-child {
|
|
2261
|
+
border-top-right-radius: var(--persona-toggle-group-radius, var(--persona-icon-btn-radius, var(--persona-radius-md, 0.375rem)));
|
|
2262
|
+
border-bottom-right-radius: var(--persona-toggle-group-radius, var(--persona-icon-btn-radius, var(--persona-radius-md, 0.375rem)));
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
/* Combo button — label + chevron with dropdown */
|
|
2266
|
+
[data-persona-root] .persona-combo-btn {
|
|
2267
|
+
font-size: var(--persona-combo-btn-font-size, 0.8125rem);
|
|
2268
|
+
font-weight: var(--persona-combo-btn-font-weight, 600);
|
|
2269
|
+
color: var(--persona-combo-btn-color, var(--persona-text, #111827));
|
|
2270
|
+
user-select: none;
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
[data-persona-root] .persona-combo-btn-label {
|
|
2274
|
+
white-space: nowrap;
|
|
2275
|
+
overflow: hidden;
|
|
2276
|
+
text-overflow: ellipsis;
|
|
2277
|
+
}
|
|
2278
|
+
|
|
2279
|
+
/* Dropdown menu utility */
|
|
2280
|
+
[data-persona-root] .persona-dropdown-menu {
|
|
2281
|
+
z-index: 100;
|
|
2282
|
+
min-width: 160px;
|
|
2283
|
+
background: var(--persona-dropdown-bg, var(--persona-surface, #fff));
|
|
2284
|
+
border: var(--persona-dropdown-border, 1px solid var(--persona-border, #e5e7eb));
|
|
2285
|
+
border-radius: var(--persona-dropdown-radius, 0.625rem);
|
|
2286
|
+
padding: 0.25rem 0;
|
|
2287
|
+
box-shadow: var(--persona-dropdown-shadow, 0 4px 16px rgba(0,0,0,0.12));
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
[data-persona-root] .persona-dropdown-menu button {
|
|
2291
|
+
display: flex;
|
|
2292
|
+
align-items: center;
|
|
2293
|
+
gap: 0.625rem;
|
|
2294
|
+
width: 100%;
|
|
2295
|
+
padding: 0.5rem 0.875rem;
|
|
2296
|
+
border: none;
|
|
2297
|
+
background: transparent;
|
|
2298
|
+
color: var(--persona-dropdown-item-color, var(--persona-text, #1f2937));
|
|
2299
|
+
font-size: 0.8125rem;
|
|
2300
|
+
cursor: pointer;
|
|
2301
|
+
text-align: left;
|
|
2302
|
+
white-space: nowrap;
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
[data-persona-root] .persona-dropdown-menu button:hover {
|
|
2306
|
+
background: var(--persona-dropdown-item-hover-bg, var(--persona-container, #f3f4f6));
|
|
2307
|
+
}
|
|
2308
|
+
|
|
2309
|
+
[data-persona-root] .persona-dropdown-menu button[data-destructive] {
|
|
2310
|
+
color: var(--persona-dropdown-destructive-color, #ef4444);
|
|
2311
|
+
}
|
|
2312
|
+
|
|
2313
|
+
[data-persona-root] .persona-dropdown-menu hr {
|
|
2314
|
+
border: none;
|
|
2315
|
+
border-top: 1px solid var(--persona-dropdown-hr, var(--persona-border, #e5e7eb));
|
|
2316
|
+
margin: 0.25rem 0;
|
|
2317
|
+
}
|
|
2318
|
+
|
|
2137
2319
|
/* Draggable split handle (desktop split only; hidden in drawer / narrow host / small viewport) */
|
|
2138
|
-
|
|
2320
|
+
[data-persona-root] .persona-artifact-split-handle {
|
|
2139
2321
|
width: 6px;
|
|
2140
2322
|
flex-shrink: 0;
|
|
2141
2323
|
cursor: col-resize;
|
|
@@ -2148,24 +2330,24 @@
|
|
|
2148
2330
|
box-sizing: border-box;
|
|
2149
2331
|
}
|
|
2150
2332
|
|
|
2151
|
-
|
|
2152
|
-
|
|
2333
|
+
[data-persona-root] .persona-artifact-split-handle:hover,
|
|
2334
|
+
[data-persona-root] .persona-artifact-split-handle:focus-visible {
|
|
2153
2335
|
background: color-mix(in srgb, var(--persona-border, #e5e7eb) 55%, transparent);
|
|
2154
2336
|
outline: none;
|
|
2155
2337
|
}
|
|
2156
2338
|
|
|
2157
|
-
|
|
2339
|
+
[data-persona-root].persona-artifact-narrow-host .persona-artifact-split-handle {
|
|
2158
2340
|
display: none !important;
|
|
2159
2341
|
}
|
|
2160
2342
|
|
|
2161
2343
|
@media (max-width: 640px) {
|
|
2162
|
-
|
|
2344
|
+
[data-persona-root] .persona-artifact-split-handle {
|
|
2163
2345
|
display: none !important;
|
|
2164
2346
|
}
|
|
2165
2347
|
}
|
|
2166
2348
|
|
|
2167
2349
|
@media (min-width: 641px) {
|
|
2168
|
-
|
|
2350
|
+
[data-persona-root] .persona-artifact-pane {
|
|
2169
2351
|
width: var(--persona-artifact-pane-width, 40%);
|
|
2170
2352
|
max-width: var(--persona-artifact-pane-max-width, 28rem);
|
|
2171
2353
|
min-width: var(--persona-artifact-pane-min-width, 0);
|
|
@@ -2175,43 +2357,51 @@
|
|
|
2175
2357
|
}
|
|
2176
2358
|
|
|
2177
2359
|
/* paneBorderRadius — works on any paneAppearance; overflow clips content to rounded shape */
|
|
2178
|
-
|
|
2360
|
+
[data-persona-root] .persona-artifact-pane {
|
|
2179
2361
|
border-radius: var(--persona-artifact-pane-radius, 0);
|
|
2180
2362
|
overflow: hidden;
|
|
2181
|
-
|
|
2363
|
+
/* Layout paneBackground → theme components.artifact.pane.background → semantic surface */
|
|
2364
|
+
background-color: var(
|
|
2365
|
+
--persona-artifact-pane-bg,
|
|
2366
|
+
var(--persona-components-artifact-pane-background, var(--persona-surface, #ffffff))
|
|
2367
|
+
);
|
|
2182
2368
|
}
|
|
2183
2369
|
|
|
2184
2370
|
/* paneAppearance: 'seamless' — flush with chat, no border/shadow/gap */
|
|
2185
2371
|
/* `position: relative` for resizer overlay; gap 0; positioning is applied in ui.ts */
|
|
2186
|
-
|
|
2372
|
+
[data-persona-root].persona-artifact-appearance-seamless .persona-artifact-split-root {
|
|
2187
2373
|
position: relative;
|
|
2188
2374
|
gap: 0 !important;
|
|
2189
2375
|
}
|
|
2190
2376
|
|
|
2191
|
-
|
|
2377
|
+
[data-persona-root].persona-artifact-appearance-seamless .persona-artifact-pane {
|
|
2192
2378
|
border-left-width: 0 !important;
|
|
2193
2379
|
border-left-color: transparent !important;
|
|
2194
2380
|
box-shadow: none !important;
|
|
2195
|
-
|
|
2381
|
+
/* Same token chain; final fallback stays container for flush split chrome */
|
|
2382
|
+
background-color: var(
|
|
2383
|
+
--persona-artifact-pane-bg,
|
|
2384
|
+
var(--persona-components-artifact-pane-background, var(--persona-container, #f8fafc))
|
|
2385
|
+
);
|
|
2196
2386
|
}
|
|
2197
2387
|
|
|
2198
2388
|
/* layout.paneBorder / paneBorderLeft — theme overrides (after appearance defaults) */
|
|
2199
|
-
|
|
2389
|
+
[data-persona-root].persona-artifact-border-full .persona-artifact-pane {
|
|
2200
2390
|
border: var(--persona-artifact-pane-border) !important;
|
|
2201
2391
|
}
|
|
2202
2392
|
|
|
2203
|
-
|
|
2393
|
+
[data-persona-root].persona-artifact-border-left .persona-artifact-pane {
|
|
2204
2394
|
border-top: none !important;
|
|
2205
2395
|
border-right: none !important;
|
|
2206
2396
|
border-bottom: none !important;
|
|
2207
2397
|
border-left: var(--persona-artifact-pane-border-left) !important;
|
|
2208
2398
|
}
|
|
2209
2399
|
|
|
2210
|
-
|
|
2400
|
+
[data-persona-root].persona-artifact-appearance-seamless.persona-artifact-border-left .persona-artifact-pane {
|
|
2211
2401
|
border-left: var(--persona-artifact-pane-border-left) !important;
|
|
2212
2402
|
}
|
|
2213
2403
|
|
|
2214
|
-
|
|
2404
|
+
[data-persona-root].persona-artifact-appearance-seamless.persona-artifact-border-full .persona-artifact-pane {
|
|
2215
2405
|
border: var(--persona-artifact-pane-border) !important;
|
|
2216
2406
|
}
|
|
2217
2407
|
|
|
@@ -2220,12 +2410,12 @@
|
|
|
2220
2410
|
* Main chat card (.persona-widget-container) loses inner-right rounding; artifact gains matching outer-right.
|
|
2221
2411
|
*/
|
|
2222
2412
|
@media (min-width: 641px) {
|
|
2223
|
-
|
|
2413
|
+
[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-unified-split .persona-widget-container {
|
|
2224
2414
|
border-top-right-radius: 0 !important;
|
|
2225
2415
|
border-bottom-right-radius: 0 !important;
|
|
2226
2416
|
}
|
|
2227
2417
|
|
|
2228
|
-
|
|
2418
|
+
[data-persona-root]:not(.persona-artifact-narrow-host).persona-artifact-unified-split .persona-artifact-pane {
|
|
2229
2419
|
border-top-left-radius: 0 !important;
|
|
2230
2420
|
border-bottom-left-radius: 0 !important;
|
|
2231
2421
|
border-top-right-radius: var(--persona-artifact-unified-outer-radius, var(--persona-radius-lg, 1rem)) !important;
|
|
@@ -2235,14 +2425,14 @@
|
|
|
2235
2425
|
}
|
|
2236
2426
|
|
|
2237
2427
|
/* Narrow floating panel: drawer inside panel (class toggled by JS from panel width) */
|
|
2238
|
-
|
|
2428
|
+
[data-persona-root].persona-artifact-narrow-host .persona-artifact-backdrop {
|
|
2239
2429
|
position: absolute !important;
|
|
2240
2430
|
inset: 0 !important;
|
|
2241
2431
|
z-index: 55 !important;
|
|
2242
2432
|
}
|
|
2243
2433
|
|
|
2244
2434
|
@media (min-width: 641px) {
|
|
2245
|
-
|
|
2435
|
+
[data-persona-root].persona-artifact-narrow-host .persona-artifact-pane {
|
|
2246
2436
|
position: absolute;
|
|
2247
2437
|
top: 0;
|
|
2248
2438
|
right: 0;
|
|
@@ -2254,13 +2444,13 @@
|
|
|
2254
2444
|
transition: transform 0.2s ease;
|
|
2255
2445
|
box-shadow: -4px 0 24px rgba(0, 0, 0, 0.12);
|
|
2256
2446
|
}
|
|
2257
|
-
|
|
2447
|
+
[data-persona-root].persona-artifact-narrow-host .persona-artifact-pane.persona-artifact-drawer-open {
|
|
2258
2448
|
transform: translateX(0);
|
|
2259
2449
|
}
|
|
2260
2450
|
}
|
|
2261
2451
|
|
|
2262
2452
|
@media (max-width: 640px) {
|
|
2263
|
-
|
|
2453
|
+
[data-persona-root] .persona-artifact-pane {
|
|
2264
2454
|
position: fixed;
|
|
2265
2455
|
top: 0;
|
|
2266
2456
|
right: 0;
|
|
@@ -2271,7 +2461,7 @@
|
|
|
2271
2461
|
transition: transform 0.2s ease;
|
|
2272
2462
|
box-shadow: -4px 0 24px rgba(0, 0, 0, 0.12);
|
|
2273
2463
|
}
|
|
2274
|
-
|
|
2464
|
+
[data-persona-root] .persona-artifact-pane.persona-artifact-drawer-open {
|
|
2275
2465
|
transform: translateX(0);
|
|
2276
2466
|
}
|
|
2277
2467
|
}
|