@compose-market/theme 0.0.90 → 0.0.92

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 (61) hide show
  1. package/dist/agents/index.d.ts +2 -2
  2. package/dist/agents/index.d.ts.map +1 -1
  3. package/dist/agents/styles.d.ts +1 -1
  4. package/dist/agents/styles.d.ts.map +1 -1
  5. package/dist/agents/styles.js +168 -5
  6. package/dist/agents/styles.js.map +1 -1
  7. package/dist/app/index.d.ts +1 -1
  8. package/dist/app/index.d.ts.map +1 -1
  9. package/dist/app/styles.d.ts +1 -1
  10. package/dist/app/styles.d.ts.map +1 -1
  11. package/dist/app/styles.js +64 -4
  12. package/dist/app/styles.js.map +1 -1
  13. package/dist/css/agents.css +168 -5
  14. package/dist/css/app.css +64 -4
  15. package/dist/css/dark.css +18 -18
  16. package/dist/css/effects.css +293 -30
  17. package/dist/css/mirror.css +335 -138
  18. package/dist/css/session.css +28 -0
  19. package/dist/css/shell.css +1118 -32
  20. package/dist/css/tokens.css +1 -1
  21. package/dist/css/utilities.css +289 -6
  22. package/dist/effects/styles.d.ts +3 -3
  23. package/dist/effects/styles.d.ts.map +1 -1
  24. package/dist/effects/styles.js +295 -32
  25. package/dist/effects/styles.js.map +1 -1
  26. package/dist/mirror/index.d.ts +39 -6
  27. package/dist/mirror/index.d.ts.map +1 -1
  28. package/dist/mirror/index.js +18 -6
  29. package/dist/mirror/index.js.map +1 -1
  30. package/dist/mirror/styles.d.ts +2 -2
  31. package/dist/mirror/styles.d.ts.map +1 -1
  32. package/dist/mirror/styles.js +336 -139
  33. package/dist/mirror/styles.js.map +1 -1
  34. package/dist/session/index.d.ts +16 -4
  35. package/dist/session/index.d.ts.map +1 -1
  36. package/dist/session/index.js +31 -2
  37. package/dist/session/index.js.map +1 -1
  38. package/dist/session/styles.d.ts +1 -1
  39. package/dist/session/styles.d.ts.map +1 -1
  40. package/dist/session/styles.js +28 -0
  41. package/dist/session/styles.js.map +1 -1
  42. package/dist/shell/index.d.ts +40 -19
  43. package/dist/shell/index.d.ts.map +1 -1
  44. package/dist/shell/index.js +20 -0
  45. package/dist/shell/index.js.map +1 -1
  46. package/dist/shell/styles.d.ts +1 -1
  47. package/dist/shell/styles.d.ts.map +1 -1
  48. package/dist/shell/styles.js +1118 -32
  49. package/dist/shell/styles.js.map +1 -1
  50. package/dist/themes/dark.js +25 -25
  51. package/dist/themes/dark.js.map +1 -1
  52. package/dist/tokens/typography.d.ts +1 -1
  53. package/dist/tokens/typography.js +2 -2
  54. package/dist/tokens/typography.js.map +1 -1
  55. package/dist/utilities/styles.d.ts +2 -2
  56. package/dist/utilities/styles.d.ts.map +1 -1
  57. package/dist/utilities/styles.js +290 -7
  58. package/dist/utilities/styles.js.map +1 -1
  59. package/dist/workflows/index.d.ts +4 -4
  60. package/dist/workflows/index.d.ts.map +1 -1
  61. package/package.json +11 -10
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Cyberpunk Visual Effects - Compose.Market Design System
2
+ * Bioluminescent visual effects - Compose.Market Design System
3
3
  *
4
- * Shared effects used across web and desktop apps.
4
+ * Shared effects used across web/ and mesh/ apps.
5
5
  * Generated from @compose-market/theme.
6
6
  */
7
7
  export const effectsCss = `/**
@@ -11,24 +11,78 @@ export const effectsCss = `/**
11
11
  * DO NOT EDIT – generated from the theme package.
12
12
  */
13
13
 
14
+ :root {
15
+ --cm-bg: #0c1324;
16
+ --cm-bg-deep: #020607;
17
+ --cm-surface: hsl(var(--card) / 0.42);
18
+ --cm-surface-high: hsl(var(--card) / 0.64);
19
+ --cm-cyan: #22d3ee;
20
+ --cm-cyan-hot: #00e5ff;
21
+ --cm-fuchsia: #ae05c6;
22
+ --cm-fuchsia-hot: #fbabff;
23
+ --cm-text: #dce1fb;
24
+ --cm-muted: hsl(var(--muted-foreground) / 0.72);
25
+ --cm-line: hsl(var(--primary) / 0.22);
26
+ --cm-purple-line: hsl(var(--accent) / 0.24);
27
+ --cm-radius: 12px;
28
+ --cm-font-display: var(--font-display), Orbitron, Rajdhani, Inter, ui-sans-serif, system-ui, sans-serif;
29
+ --cm-font-sans: var(--font-sans), Manrope, Rajdhani, Inter, ui-sans-serif, system-ui, sans-serif;
30
+ --cm-font-mono: var(--font-mono), "Fira Code", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
31
+ --cm-glow-cyan: 0 0 18px hsl(var(--primary) / 0.32), 0 0 42px hsl(194 100% 42% / 0.16);
32
+ --cm-glow-fuchsia: 0 0 16px hsl(var(--accent) / 0.32), 0 0 36px hsl(292 85% 38% / 0.18);
33
+ --cm-glow-soft: 0 0 28px hsl(var(--primary) / 0.08);
34
+ }
35
+
14
36
  /* Glass Panel */
15
- .glass-panel {
16
- background: linear-gradient(145deg, hsl(var(--card) / 0.8), hsl(var(--card) / 0.4));
17
- backdrop-filter: blur(12px);
18
- border: 1px solid hsl(var(--border) / 0.5);
37
+ .glass-panel,
38
+ .cm-glass {
39
+ position: relative;
40
+ overflow: hidden;
41
+ border: 1px solid hsl(var(--primary) / 0.18);
42
+ border-radius: var(--cm-radius);
43
+ background:
44
+ linear-gradient(145deg, hsl(226 21% 23% / 0.38), hsl(221 50% 9% / 0.24)),
45
+ radial-gradient(circle at 18% 0%, hsl(var(--primary) / 0.13), transparent 34%),
46
+ hsl(224 36% 13% / 0.28);
19
47
  box-shadow:
20
- 0 4px 24px -1px hsl(0 0% 0% / 0.3),
21
- inset 0 1px 0 hsl(0 0% 100% / 0.05);
48
+ inset 0 1px 0 hsl(0 0% 100% / 0.07),
49
+ inset 0 -1px 0 hsl(var(--primary) / 0.08),
50
+ 0 0 40px hsl(var(--primary) / 0.055);
51
+ backdrop-filter: blur(18px) saturate(1.16);
52
+ }
53
+
54
+ .glass-panel::before,
55
+ .cm-glass::before {
56
+ content: "";
57
+ position: absolute;
58
+ inset: 0;
59
+ pointer-events: none;
60
+ background:
61
+ linear-gradient(120deg, hsl(0 0% 100% / 0.12), transparent 18%),
62
+ radial-gradient(circle at 18% 12%, hsl(var(--primary) / 0.15), transparent 34%),
63
+ radial-gradient(circle at 100% 100%, hsl(var(--accent) / 0.16), transparent 38%);
64
+ opacity: 0.44;
65
+ }
66
+
67
+ .glass-panel > *,
68
+ .cm-glass > * {
69
+ position: relative;
70
+ z-index: 1;
22
71
  }
23
72
 
24
73
  /* Neon Effects */
25
74
  .neon-border {
26
- box-shadow: 0 0 10px -2px hsl(var(--primary) / 0.5);
27
- border-color: hsl(var(--primary) / 0.5);
75
+ border-color: hsl(var(--primary) / 0.42);
76
+ box-shadow:
77
+ inset 0 0 0 1px hsl(0 0% 100% / 0.025),
78
+ 0 0 10px -2px hsl(var(--primary) / 0.5),
79
+ 0 0 34px hsl(var(--primary) / 0.08);
28
80
  }
29
81
 
30
82
  .neon-text {
31
- text-shadow: 0 0 10px hsl(var(--primary) / 0.5);
83
+ text-shadow:
84
+ 0 0 10px hsl(var(--primary) / 0.58),
85
+ 0 0 24px hsl(var(--accent) / 0.16);
32
86
  }
33
87
 
34
88
  .neon-glow {
@@ -37,40 +91,235 @@ export const effectsCss = `/**
37
91
 
38
92
  @keyframes neon-pulse {
39
93
  from {
40
- box-shadow: 0 0 5px hsl(var(--primary) / 0.5),
41
- 0 0 10px hsl(var(--primary) / 0.3),
42
- 0 0 15px hsl(var(--primary) / 0.1);
94
+ opacity: 0.84;
95
+ box-shadow:
96
+ 0 0 5px hsl(var(--primary) / 0.42),
97
+ 0 0 10px hsl(var(--primary) / 0.22),
98
+ 0 0 15px hsl(var(--primary) / 0.08);
43
99
  }
44
100
  to {
45
- box-shadow: 0 0 10px hsl(var(--primary) / 0.6),
46
- 0 0 20px hsl(var(--primary) / 0.4),
47
- 0 0 30px hsl(var(--primary) / 0.2);
101
+ opacity: 1;
102
+ box-shadow:
103
+ 0 0 10px hsl(var(--primary) / 0.56),
104
+ 0 0 20px hsl(var(--primary) / 0.32),
105
+ 0 0 30px hsl(var(--accent) / 0.14);
48
106
  }
49
107
  }
50
108
 
51
109
  /* Background Grid Pattern */
52
- .bg-grid-pattern {
53
- background-size: 40px 40px;
54
- background-image: linear-gradient(to right, hsl(217 33% 17% / 0.3) 1px, transparent 1px),
55
- linear-gradient(to bottom, hsl(217 33% 17% / 0.3) 1px, transparent 1px);
110
+ .bg-grid-pattern,
111
+ .cm-grid {
112
+ background-size: 44px 44px;
113
+ background-image:
114
+ linear-gradient(to right, hsl(var(--primary) / 0.055) 1px, transparent 1px),
115
+ linear-gradient(to bottom, hsl(var(--primary) / 0.045) 1px, transparent 1px),
116
+ radial-gradient(circle at 50% 0%, hsl(var(--primary) / 0.1), transparent 34rem);
56
117
  }
57
118
 
58
119
  /* Scanline Animation */
59
120
  .scanline {
121
+ position: absolute;
122
+ inset-inline: 0;
123
+ top: -100px;
60
124
  width: 100%;
61
125
  height: 100px;
62
126
  z-index: 50;
63
- background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%, hsl(188 95% 43% / 0.05) 50%, rgba(0, 0, 0, 0) 100%);
64
- opacity: 0.1;
65
- position: absolute;
66
- bottom: 100%;
67
- animation: scanline 8s linear infinite;
68
127
  pointer-events: none;
128
+ background: linear-gradient(0deg, transparent 0%, hsl(var(--primary) / 0.06) 50%, transparent 100%);
129
+ opacity: 0.16;
130
+ animation: scanline 8s linear infinite;
131
+ will-change: transform;
69
132
  }
70
133
 
71
134
  @keyframes scanline {
72
- 0% { bottom: 100%; }
73
- 100% { bottom: -100px; }
135
+ 0% { transform: translateY(-100px); }
136
+ 100% { transform: translateY(calc(100vh + 100px)); }
137
+ }
138
+
139
+ @keyframes cm-biopulse {
140
+ 0%, 100% {
141
+ opacity: 0.96;
142
+ box-shadow:
143
+ inset 0 0 26px hsl(var(--primary) / 0.04),
144
+ 0 0 10px hsl(var(--primary) / 0.06);
145
+ }
146
+
147
+ 50% {
148
+ opacity: 1;
149
+ box-shadow:
150
+ inset 0 0 30px hsl(var(--primary) / 0.08),
151
+ 0 0 18px hsl(var(--primary) / 0.14);
152
+ }
153
+ }
154
+
155
+ .cm-cell {
156
+ container-type: inline-size;
157
+ animation: cm-biopulse 2s ease-in-out infinite;
158
+ transition:
159
+ transform 180ms ease,
160
+ border-color 180ms ease,
161
+ box-shadow 180ms ease,
162
+ background-color 180ms ease,
163
+ color 180ms ease;
164
+ will-change: transform;
165
+ }
166
+
167
+ .cm-cell:hover,
168
+ .cm-cell:focus-within,
169
+ .cm-cell[data-state="active"] {
170
+ transform: translateY(-1px);
171
+ border-color: hsl(var(--primary) / 0.78);
172
+ box-shadow:
173
+ inset 0 0 30px hsl(var(--primary) / 0.08),
174
+ 0 0 18px hsl(var(--primary) / 0.34),
175
+ 0 0 38px hsl(194 100% 42% / 0.16);
176
+ }
177
+
178
+ .cm-cell[data-tone="purple"],
179
+ .cm-cell[data-tone="violet"] {
180
+ border-color: hsl(var(--accent) / 0.46);
181
+ box-shadow:
182
+ inset 0 0 26px hsl(var(--accent) / 0.1),
183
+ 0 0 10px hsl(var(--accent) / 0.34);
184
+ }
185
+
186
+ .cm-kicker {
187
+ margin: 0;
188
+ color: var(--cm-cyan-hot);
189
+ font-family: var(--cm-font-mono);
190
+ font-size: clamp(0.62rem, 1vw, 0.82rem);
191
+ font-weight: 800;
192
+ letter-spacing: 0;
193
+ line-height: 1.2;
194
+ text-transform: uppercase;
195
+ text-shadow: var(--cm-glow-cyan);
196
+ }
197
+
198
+ .cm-display {
199
+ margin: 0;
200
+ color: var(--cm-text);
201
+ font-family: var(--cm-font-display);
202
+ font-weight: 950;
203
+ letter-spacing: 0;
204
+ line-height: 0.9;
205
+ text-transform: uppercase;
206
+ text-shadow:
207
+ 0 0 12px hsl(0 0% 100% / 0.34),
208
+ 0 0 26px hsl(var(--primary) / 0.3);
209
+ }
210
+
211
+ .cm-display em {
212
+ color: var(--cm-cyan-hot);
213
+ font-style: normal;
214
+ text-shadow:
215
+ 0 0 12px hsl(var(--primary) / 0.82),
216
+ 0 0 34px hsl(var(--primary) / 0.52),
217
+ 0 0 52px hsl(var(--accent) / 0.24);
218
+ }
219
+
220
+ .cm-copy {
221
+ color: var(--cm-muted);
222
+ font-family: var(--cm-font-sans);
223
+ font-weight: 500;
224
+ line-height: 1.42;
225
+ }
226
+
227
+ .cm-button {
228
+ display: inline-flex;
229
+ min-height: 2.625rem;
230
+ min-width: 0;
231
+ align-items: center;
232
+ justify-content: center;
233
+ gap: 0.5rem;
234
+ border: 1px solid hsl(var(--primary) / 0.42);
235
+ border-radius: 999px;
236
+ padding: 0.78rem 1.05rem;
237
+ color: hsl(var(--foreground));
238
+ font-family: var(--cm-font-mono);
239
+ font-size: clamp(0.64rem, 1.6cqw, 0.74rem);
240
+ font-weight: 900;
241
+ letter-spacing: 0;
242
+ line-height: 1.08;
243
+ text-align: center;
244
+ text-transform: uppercase;
245
+ transition:
246
+ transform 180ms ease,
247
+ border-color 180ms ease,
248
+ background 180ms ease,
249
+ box-shadow 180ms ease,
250
+ color 180ms ease;
251
+ }
252
+
253
+ .cm-button:hover,
254
+ .cm-button:focus-visible {
255
+ transform: translateY(-1px);
256
+ outline: none;
257
+ }
258
+
259
+ .cm-button-primary,
260
+ .primary {
261
+ border-color: hsl(var(--primary) / 0.9);
262
+ background: linear-gradient(135deg, #8aebff, #22d3ee);
263
+ color: #031314;
264
+ box-shadow: var(--cm-glow-cyan);
265
+ }
266
+
267
+ .cm-button-primary:hover,
268
+ .cm-button-primary:focus-visible,
269
+ .primary:hover,
270
+ .primary:focus-visible {
271
+ box-shadow:
272
+ 0 0 18px hsl(var(--primary) / 0.44),
273
+ 0 0 42px hsl(var(--primary) / 0.2);
274
+ }
275
+
276
+ .cm-button-secondary,
277
+ .secondary {
278
+ border-color: hsl(var(--primary) / 0.2);
279
+ background: hsl(221 50% 9% / 0.36);
280
+ color: var(--cm-cyan-hot);
281
+ box-shadow: inset 0 0 22px hsl(var(--primary) / 0.08);
282
+ backdrop-filter: blur(14px);
283
+ }
284
+
285
+ .cm-button-secondary:hover,
286
+ .cm-button-secondary:focus-visible,
287
+ .secondary:hover,
288
+ .secondary:focus-visible {
289
+ border-color: hsl(var(--primary) / 0.72);
290
+ background: hsl(var(--primary) / 0.1);
291
+ box-shadow: var(--cm-glow-cyan);
292
+ }
293
+
294
+ .cm-chip {
295
+ display: inline-flex;
296
+ align-items: center;
297
+ border: 1px solid hsl(var(--primary) / 0.18);
298
+ border-radius: 999px;
299
+ background: hsl(var(--background) / 0.42);
300
+ color: hsl(var(--foreground) / 0.72);
301
+ padding: 0.36rem 0.58rem;
302
+ font-family: var(--cm-font-mono);
303
+ font-size: 0.64rem;
304
+ font-weight: 800;
305
+ line-height: 1;
306
+ text-transform: uppercase;
307
+ backdrop-filter: blur(12px);
308
+ }
309
+
310
+ .cm-icon {
311
+ display: inline-grid;
312
+ width: 2.45rem;
313
+ height: 2.45rem;
314
+ place-items: center;
315
+ border: 1px solid hsl(var(--primary) / 0.28);
316
+ border-radius: var(--cm-radius);
317
+ background: hsl(var(--primary) / 0.08);
318
+ color: var(--cm-cyan-hot);
319
+ font-family: var(--cm-font-mono);
320
+ font-size: 0.8rem;
321
+ font-weight: 900;
322
+ box-shadow: inset 0 0 20px hsl(var(--primary) / 0.1);
74
323
  }
75
324
 
76
325
  /* Glitch Border Effect */
@@ -192,14 +441,28 @@ export const effectsCss = `/**
192
441
 
193
442
  /* Partner Badge Scanline Animation */
194
443
  @keyframes partner-scanline {
195
- 0% { transform: translateY(-100px); }
196
- 100% { transform: translateY(calc(100vh + 100px)); }
444
+ 0% { transform: translate3d(0, -100px, 0); }
445
+ 100% { transform: translate3d(0, calc(100vh + 100px), 0); }
197
446
  }
198
447
 
199
448
  /* Shimmer Animation */
200
449
  @keyframes shimmer {
201
- 0% { transform: translateX(-100%); }
202
- 100% { transform: translateX(100%); }
450
+ 0% { transform: translate3d(-100%, 0, 0); }
451
+ 100% { transform: translate3d(100%, 0, 0); }
452
+ }
453
+
454
+ @media (prefers-reduced-motion: reduce) {
455
+ .neon-glow,
456
+ .scanline,
457
+ .cm-cell {
458
+ animation-duration: 0.01ms !important;
459
+ animation-iteration-count: 1 !important;
460
+ }
461
+
462
+ .cm-cell,
463
+ .cm-button {
464
+ transition-duration: 0.01ms !important;
465
+ }
203
466
  }
204
467
  `;
205
468
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/effects/styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqMzB,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/effects/styles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4czB,CAAC"}
@@ -1,8 +1,41 @@
1
- /**
2
- * Mirror Module
3
- *
4
- * CSS class-name constants for the MirrorPane component pattern.
5
- * No React components — these are CSS-only shared classes.
6
- */
1
+ import * as React from "react";
7
2
  export { mirrorStyles } from "./styles";
3
+ export interface ComposeMirrorTab {
4
+ id: string;
5
+ label: React.ReactNode;
6
+ icon?: React.ReactNode;
7
+ tone?: "cyan" | "fuchsia";
8
+ }
9
+ export interface ComposeMirrorBadge {
10
+ label: React.ReactNode;
11
+ tone?: "neutral" | "cyan" | "fuchsia" | "green" | "warning" | "danger";
12
+ }
13
+ export interface ComposeMirrorPaneProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
14
+ title?: React.ReactNode;
15
+ subtitle?: React.ReactNode;
16
+ icon?: React.ReactNode;
17
+ tabs?: ComposeMirrorTab[];
18
+ activeTab?: string;
19
+ onTabChange?: (tab: string) => void;
20
+ badges?: ComposeMirrorBadge[];
21
+ empty?: boolean;
22
+ emptyIcon?: React.ReactNode;
23
+ emptyText?: React.ReactNode;
24
+ footer?: React.ReactNode;
25
+ }
26
+ export declare function ComposeMirrorPane({ className, title, subtitle, icon, tabs, activeTab, onTabChange, badges, empty, emptyIcon, emptyText, footer, children, ...props }: ComposeMirrorPaneProps): React.JSX.Element;
27
+ export interface ComposeMirrorSectionProps extends React.HTMLAttributes<HTMLDivElement> {
28
+ label?: React.ReactNode;
29
+ compact?: boolean;
30
+ }
31
+ export declare function ComposeMirrorSection({ className, label, compact, children, ...props }: ComposeMirrorSectionProps): React.JSX.Element;
32
+ export interface ComposeMirrorRowProps extends React.HTMLAttributes<HTMLDivElement> {
33
+ label: React.ReactNode;
34
+ value: React.ReactNode;
35
+ }
36
+ export declare function ComposeMirrorRow({ className, label, value, ...props }: ComposeMirrorRowProps): React.JSX.Element;
37
+ export interface ComposeMirrorPricingProps extends React.HTMLAttributes<HTMLDivElement> {
38
+ unit?: React.ReactNode;
39
+ }
40
+ export declare function ComposeMirrorPricing({ className, unit, children, ...props }: ComposeMirrorPricingProps): React.JSX.Element;
8
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mirror/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mirror/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;CACxE;AAED,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IACjG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAMD,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,IAAS,EACT,SAAS,EACT,WAAW,EACX,MAAW,EACX,KAAa,EACb,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,sBAAsB,qBA4DxB;AAED,MAAM,WAAW,yBAA0B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,yBAAyB,qBAUvH;AAED,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACjF,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,qBAO5F;AAED,MAAM,WAAW,yBAA0B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,yBAAyB,qBAOtG"}
@@ -1,8 +1,20 @@
1
- /**
2
- * Mirror Module
3
- *
4
- * CSS class-name constants for the MirrorPane component pattern.
5
- * No React components — these are CSS-only shared classes.
6
- */
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { cx } from "../internal/cx";
7
3
  export { mirrorStyles } from "./styles";
4
+ function badgeTone(value) {
5
+ return value || "neutral";
6
+ }
7
+ export function ComposeMirrorPane({ className, title, subtitle, icon, tabs = [], activeTab, onTabChange, badges = [], empty = false, emptyIcon, emptyText, footer, children, ...props }) {
8
+ const content = empty ? (_jsxs("div", { className: "cm-mirror-pane__empty", children: [emptyIcon ? _jsx("div", { className: "cm-mirror-pane__empty-icon", children: emptyIcon }) : null, emptyText ? _jsx("p", { className: "cm-mirror-pane__empty-text", children: emptyText }) : null] })) : (_jsxs(_Fragment, { children: [(title || subtitle || icon || badges.length > 0) ? (_jsxs("div", { className: "cm-mirror-pane__model-header", children: [icon ? _jsx("div", { className: "cm-mirror-pane__model-icon-box", children: icon }) : null, _jsxs("div", { className: "cm-mirror-pane__model-copy", children: [title ? (_jsxs("div", { className: "cm-mirror-pane__model-name-row", children: [_jsx("h3", { className: "cm-mirror-pane__model-name", children: title }), badges.length > 0 ? (_jsx("span", { className: "cm-mirror-pane__model-types", children: badges.map((badge, index) => (_jsx("span", { className: "cm-mirror-pane__badge", "data-tone": badgeTone(badge.tone), children: badge.label }, index))) })) : null] })) : null, subtitle ? _jsx("p", { className: "cm-mirror-pane__model-provider", children: subtitle }) : null] })] })) : null, children] }));
9
+ return (_jsxs("div", { className: cx("cm-mirror-pane", className), ...props, children: [tabs.length > 0 ? (_jsx("div", { className: "cm-mirror-pane__toolbar", children: tabs.map((tab) => (_jsxs("button", { type: "button", className: cx("cm-mirror-pane__toolbar-btn", activeTab === tab.id && `cm-mirror-pane__toolbar-btn--active-${tab.tone || "cyan"}`), onClick: () => onTabChange?.(tab.id), "aria-pressed": activeTab === tab.id, "aria-label": typeof tab.label === "string" ? tab.label : undefined, children: [tab.icon, _jsx("span", { className: "cm-mirror-pane__toolbar-label", children: tab.label })] }, tab.id))) })) : null, _jsx("div", { className: "cm-mirror-pane__body", children: content }), footer ? _jsx("div", { className: "cm-mirror-pane__footer", children: footer }) : null] }));
10
+ }
11
+ export function ComposeMirrorSection({ className, label, compact = true, children, ...props }) {
12
+ return (_jsxs("section", { className: cx("cm-mirror-pane__section", compact && "cm-mirror-pane__section--compact", className), ...props, children: [label ? _jsx("span", { className: "cm-mirror-pane__section-label", children: label }) : null, children] }));
13
+ }
14
+ export function ComposeMirrorRow({ className, label, value, ...props }) {
15
+ return (_jsxs("div", { className: cx("cm-mirror-pane__kv-row", className), ...props, children: [_jsx("span", { className: "cm-mirror-pane__kv-label", children: label }), _jsx("span", { className: "cm-mirror-pane__kv-value", children: value })] }));
16
+ }
17
+ export function ComposeMirrorPricing({ className, unit, children, ...props }) {
18
+ return (_jsxs("div", { className: cx("cm-mirror-pane__pricing-compact", className), ...props, children: [_jsx("div", { className: "cm-mirror-pane__pricing-entries", children: children }), unit ? _jsx("span", { className: "cm-mirror-pane__pricing-unit", children: unit }) : null] }));
19
+ }
8
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mirror/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mirror/index.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Mirror Pane Styles
3
3
  *
4
- * BEM CSS for the MirrorPane component pattern (model info panel).
4
+ * Shared BEM CSS for model/detail panes.
5
5
  */
6
- export declare const mirrorStyles = "\n/* \u2500\u2500 Mirror Pane \u2500\u2500 */\n.cm-mirror-pane {\n display: flex;\n flex-direction: column;\n border: 1px solid hsl(var(--primary) / 0.3);\n border-radius: 8px;\n background: hsl(var(--card));\n overflow: hidden;\n height: 100%;\n}\n\n/* Toolbar (icon tabs) */\n.cm-mirror-pane__toolbar {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 8px;\n border-bottom: 1px solid hsl(var(--sidebar-border));\n background: hsl(var(--background) / 0.3);\n}\n\n.cm-mirror-pane__toolbar-btn {\n padding: 8px;\n border-radius: 6px;\n border: none;\n background: transparent;\n color: hsl(var(--muted-foreground));\n cursor: pointer;\n transition: color 0.15s ease, background 0.15s ease;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.cm-mirror-pane__toolbar-btn:hover {\n color: hsl(var(--foreground));\n background: hsl(var(--muted));\n}\n\n.cm-mirror-pane__toolbar-btn--active-cyan {\n background: hsl(var(--primary) / 0.2);\n color: hsl(var(--primary));\n}\n\n.cm-mirror-pane__toolbar-btn--active-fuchsia {\n background: hsl(var(--accent) / 0.2);\n color: hsl(var(--accent));\n}\n\n/* Body */\n.cm-mirror-pane__body {\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n overflow-y: auto;\n}\n\n@media (min-width: 640px) {\n .cm-mirror-pane__body {\n padding: 16px;\n }\n}\n\n@media (min-width: 768px) {\n .cm-mirror-pane__body {\n padding: 20px;\n }\n}\n\n/* Model identity */\n.cm-mirror-pane__model-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.cm-mirror-pane__model-icon-box {\n padding: 8px;\n background: hsl(var(--primary) / 0.1);\n border: 1px solid hsl(var(--primary) / 0.3);\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.cm-mirror-pane__model-copy {\n min-width: 0;\n flex: 1;\n}\n\n.cm-mirror-pane__model-name {\n font-weight: 600;\n color: hsl(var(--foreground));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n}\n\n@media (min-width: 768px) {\n .cm-mirror-pane__model-name {\n font-size: 16px;\n }\n}\n\n.cm-mirror-pane__model-provider {\n font-size: 12px;\n color: hsl(var(--muted-foreground));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Section panel */\n.cm-mirror-pane__section {\n border-radius: 2px;\n border: 1px solid hsl(var(--sidebar-border));\n background: hsl(var(--background) / 0.3);\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.cm-mirror-pane__section-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: hsl(var(--muted-foreground));\n}\n\n/* Key-value rows */\n.cm-mirror-pane__kv-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n font-family: var(--font-mono, monospace);\n}\n\n.cm-mirror-pane__kv-label {\n color: hsl(var(--muted-foreground));\n}\n\n.cm-mirror-pane__kv-value {\n color: hsl(var(--foreground));\n text-align: right;\n}\n\n/* Pricing sub-panel */\n.cm-mirror-pane__pricing-block {\n border-radius: 2px;\n border: 1px solid hsl(var(--sidebar-border));\n background: hsl(var(--background) / 0.4);\n padding: 8px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.cm-mirror-pane__pricing-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n\n.cm-mirror-pane__pricing-name {\n font-family: var(--font-mono, monospace);\n color: hsl(var(--primary));\n}\n\n/* Description block */\n.cm-mirror-pane__description {\n border-radius: 2px;\n border: 1px solid hsl(var(--sidebar-border));\n background: hsl(var(--background) / 0.3);\n padding: 12px;\n color: hsl(var(--muted-foreground));\n line-height: 1.6;\n}\n\n/* Settings: tool group */\n.cm-mirror-pane__tool-group {\n border-radius: 2px;\n border: 1px solid hsl(var(--primary) / 0.2);\n background: hsl(var(--primary) / 0.05);\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.cm-mirror-pane__tool-group--fuchsia {\n border-color: hsl(var(--accent) / 0.2);\n background: hsl(var(--accent) / 0.05);\n}\n\n.cm-mirror-pane__tool-group-label {\n font-size: 12px;\n font-family: var(--font-mono, monospace);\n}\n\n.cm-mirror-pane__tool-toggle {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.cm-mirror-pane__tool-toggle-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n}\n\n/* Empty state */\n.cm-mirror-pane__empty {\n padding: 16px 20px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n text-align: center;\n}\n\n.cm-mirror-pane__empty-icon {\n width: 40px;\n height: 40px;\n color: hsl(var(--muted-foreground) / 0.4);\n margin-bottom: 12px;\n}\n\n.cm-mirror-pane__empty-text {\n font-size: 14px;\n color: hsl(var(--muted-foreground) / 0.7);\n}\n\n/* No-params state */\n.cm-mirror-pane__no-params {\n border-radius: 2px;\n border: 1px solid hsl(var(--sidebar-border));\n background: hsl(var(--background) / 0.3);\n padding: 16px;\n font-size: 14px;\n color: hsl(var(--muted-foreground));\n}\n";
6
+ export declare const mirrorStyles = "\n.cm-mirror-pane {\n container-type: inline-size;\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n height: 100%;\n overflow: hidden;\n border: 1px solid hsl(var(--primary) / 0.18);\n border-radius: 16px;\n background:\n linear-gradient(145deg, hsl(226 21% 23% / 0.42), hsl(221 50% 9% / 0.34)),\n radial-gradient(circle at 18% 0%, hsl(var(--primary) / 0.09), transparent 34%),\n hsl(224 36% 13% / 0.24);\n box-shadow:\n inset 0 1px 0 hsl(0 0% 100% / 0.06),\n 0 0 34px hsl(var(--primary) / 0.06);\n color: hsl(var(--foreground));\n font-family: var(--font-sans), sans-serif;\n backdrop-filter: blur(16px) saturate(1.12);\n}\n\n.cm-mirror-pane__toolbar {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: 0.35rem;\n padding: 0.45rem;\n border-bottom: 1px solid hsl(var(--primary) / 0.1);\n background: hsl(221 50% 9% / 0.28);\n}\n\n.cm-mirror-pane__toolbar-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.4rem;\n min-width: 2.2rem;\n min-height: 2.2rem;\n padding: 0 0.62rem;\n border: 1px solid transparent;\n border-radius: 999px;\n background: transparent;\n color: hsl(var(--muted-foreground));\n cursor: pointer;\n font-family: var(--font-mono), monospace;\n font-size: 0.68rem;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n transition:\n transform 160ms ease,\n border-color 180ms ease,\n background-color 180ms ease,\n color 180ms ease,\n box-shadow 180ms ease;\n}\n\n.cm-mirror-pane__toolbar-btn:hover,\n.cm-mirror-pane__toolbar-btn:focus-visible {\n outline: none;\n color: hsl(var(--foreground));\n border-color: hsl(var(--primary) / 0.2);\n background: hsl(var(--primary) / 0.08);\n}\n\n.cm-mirror-pane__toolbar-btn--active-cyan {\n border-color: hsl(var(--primary) / 0.36);\n background: hsl(var(--primary) / 0.12);\n color: hsl(var(--primary));\n box-shadow: 0 0 18px hsl(var(--primary) / 0.12);\n}\n\n.cm-mirror-pane__toolbar-btn--active-fuchsia {\n border-color: hsl(var(--accent) / 0.34);\n background: hsl(var(--accent) / 0.11);\n color: hsl(var(--accent));\n box-shadow: 0 0 18px hsl(var(--accent) / 0.1);\n}\n\n.cm-mirror-pane__toolbar-btn svg {\n width: 1rem;\n height: 1rem;\n}\n\n.cm-mirror-pane__toolbar-label {\n display: none;\n}\n\n@container (min-width: 24rem) {\n .cm-mirror-pane__toolbar-label {\n display: inline;\n }\n}\n\n.cm-mirror-pane__body {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n gap: clamp(0.75rem, 3cqi, 1rem);\n overflow: auto;\n padding: clamp(0.75rem, 3cqi, 1rem);\n}\n\n.cm-mirror-pane__footer {\n flex: 0 0 auto;\n border-top: 1px solid hsl(var(--primary) / 0.1);\n padding: 0.75rem 1rem;\n}\n\n.cm-mirror-pane__empty {\n flex: 1;\n min-height: 14rem;\n display: grid;\n place-items: center;\n align-content: center;\n gap: 0.75rem;\n padding: 1.5rem;\n text-align: center;\n}\n\n.cm-mirror-pane__empty-icon {\n display: inline-flex;\n color: hsl(var(--primary));\n opacity: 0.72;\n}\n\n.cm-mirror-pane__empty-icon svg {\n width: 2.5rem;\n height: 2.5rem;\n}\n\n.cm-mirror-pane__empty-text {\n max-width: 18rem;\n color: hsl(var(--muted-foreground));\n line-height: 1.45;\n}\n\n.cm-mirror-pane__model-header {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n min-width: 0;\n}\n\n.cm-mirror-pane__model-icon-box {\n display: grid;\n width: 2.65rem;\n height: 2.65rem;\n place-items: center;\n flex: 0 0 auto;\n border: 1px solid hsl(var(--primary) / 0.24);\n border-radius: 12px;\n background: hsl(var(--primary) / 0.09);\n color: hsl(var(--primary));\n box-shadow: inset 0 0 18px hsl(var(--primary) / 0.08);\n}\n\n.cm-mirror-pane__model-icon-box svg {\n width: 1.2rem;\n height: 1.2rem;\n}\n\n.cm-mirror-pane__model-copy {\n flex: 1;\n min-width: 0;\n display: grid;\n gap: 0.25rem;\n}\n\n.cm-mirror-pane__model-name-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n min-width: 0;\n flex-wrap: wrap;\n}\n\n.cm-mirror-pane__model-name {\n min-width: 0;\n margin: 0;\n color: hsl(var(--foreground));\n font-family: var(--font-display), sans-serif;\n font-size: clamp(0.98rem, 4cqi, 1.14rem);\n font-weight: 800;\n line-height: 1.08;\n overflow-wrap: anywhere;\n}\n\n.cm-mirror-pane__model-types {\n display: inline-flex;\n align-items: center;\n gap: 0.3rem;\n flex-wrap: wrap;\n}\n\n.cm-mirror-pane__badge {\n display: inline-flex;\n align-items: center;\n min-height: 1.35rem;\n border: 1px solid hsl(var(--primary) / 0.18);\n border-radius: 999px;\n background: hsl(var(--primary) / 0.08);\n color: hsl(var(--primary));\n padding: 0 0.45rem;\n font-family: var(--font-mono), monospace;\n font-size: 0.6rem;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n}\n\n.cm-mirror-pane__badge[data-tone=\"fuchsia\"] {\n border-color: hsl(var(--accent) / 0.24);\n background: hsl(var(--accent) / 0.1);\n color: hsl(var(--accent));\n}\n\n.cm-mirror-pane__badge[data-tone=\"green\"] {\n border-color: hsl(142 71% 45% / 0.28);\n background: hsl(142 71% 45% / 0.1);\n color: hsl(142 71% 55%);\n}\n\n.cm-mirror-pane__badge[data-tone=\"warning\"] {\n border-color: hsl(42 100% 48% / 0.28);\n background: hsl(42 100% 48% / 0.1);\n color: hsl(42 100% 58%);\n}\n\n.cm-mirror-pane__badge[data-tone=\"danger\"] {\n border-color: hsl(var(--destructive) / 0.3);\n background: hsl(var(--destructive) / 0.12);\n color: hsl(var(--destructive));\n}\n\n.cm-mirror-pane__model-provider,\n.cm-mirror-pane__model-id {\n margin: 0;\n color: hsl(var(--muted-foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.72rem;\n line-height: 1.35;\n overflow-wrap: anywhere;\n}\n\n.cm-mirror-pane__model-id {\n color: hsl(var(--primary) / 0.72);\n}\n\n.cm-mirror-pane__description,\n.cm-mirror-pane__description--clamped,\n.cm-mirror-pane__section,\n.cm-mirror-pane__pricing-compact,\n.cm-mirror-pane__pricing-block,\n.cm-mirror-pane__tool-group,\n.cm-mirror-pane__no-params,\n.cm-mirror-pane__text-area,\n.cm-mirror-pane__field {\n border: 1px solid hsl(var(--primary) / 0.12);\n border-radius: 12px;\n background: hsl(221 50% 9% / 0.3);\n}\n\n.cm-mirror-pane__description,\n.cm-mirror-pane__description--clamped {\n padding: 0.75rem;\n color: hsl(var(--muted-foreground));\n line-height: 1.5;\n}\n\n.cm-mirror-pane__section {\n display: flex;\n flex-direction: column;\n gap: 0.6rem;\n min-width: 0;\n}\n\n.cm-mirror-pane__section--compact {\n padding: 0.75rem;\n}\n\n.cm-mirror-pane__section-label,\n.cm-mirror-pane__tool-group-label {\n color: hsl(var(--muted-foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.68rem;\n font-weight: 800;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n}\n\n.cm-mirror-pane__io-row,\n.cm-mirror-pane__kv-row,\n.cm-mirror-pane__pricing-header,\n.cm-mirror-pane__tool-toggle {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.75rem;\n min-width: 0;\n}\n\n.cm-mirror-pane__io-row {\n align-items: flex-start;\n}\n\n.cm-mirror-pane__io-label,\n.cm-mirror-pane__kv-label {\n flex: 0 0 auto;\n color: hsl(var(--muted-foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.7rem;\n}\n\n.cm-mirror-pane__io-badges,\n.cm-mirror-pane__kv-grid,\n.cm-mirror-pane__pricing-entries,\n.cm-mirror-pane__custom-content,\n.cm-mirror-pane__custom-section {\n display: flex;\n flex-direction: column;\n gap: 0.45rem;\n min-width: 0;\n}\n\n.cm-mirror-pane__io-badges {\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.cm-mirror-pane__kv-value {\n min-width: 0;\n color: hsl(var(--foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.74rem;\n text-align: right;\n overflow-wrap: anywhere;\n}\n\n.cm-mirror-pane__pricing-compact,\n.cm-mirror-pane__pricing-block,\n.cm-mirror-pane__tool-group {\n display: flex;\n flex-direction: column;\n gap: 0.45rem;\n padding: 0.62rem 0.7rem;\n}\n\n.cm-mirror-pane__pricing-unit {\n color: hsl(var(--muted-foreground) / 0.72);\n font-family: var(--font-mono), monospace;\n font-size: 0.64rem;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n\n.cm-mirror-pane__pricing-name {\n color: hsl(var(--accent));\n font-family: var(--font-mono), monospace;\n font-weight: 700;\n}\n\n.cm-mirror-pane__tool-group {\n border-color: hsl(var(--primary) / 0.18);\n background: hsl(var(--primary) / 0.05);\n}\n\n.cm-mirror-pane__tool-group--fuchsia {\n border-color: hsl(var(--accent) / 0.18);\n background: hsl(var(--accent) / 0.05);\n}\n\n.cm-mirror-pane__tool-toggle-label {\n display: inline-flex;\n align-items: center;\n gap: 0.42rem;\n min-width: 0;\n color: hsl(var(--foreground));\n}\n\n.cm-mirror-pane__tool-toggle-label svg,\n.cm-mirror-pane__tool-toggle-label-icon {\n width: 1rem;\n height: 1rem;\n flex: 0 0 auto;\n}\n\n.cm-mirror-pane__text-area {\n width: 100%;\n min-height: 7rem;\n padding: 0.72rem;\n color: hsl(var(--foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.78rem;\n resize: vertical;\n}\n\n.cm-mirror-pane__field {\n width: 100%;\n min-height: 2.45rem;\n color: hsl(var(--foreground));\n font-family: var(--font-mono), monospace;\n font-size: 0.78rem;\n}\n\n.cm-mirror-pane__field:focus,\n.cm-mirror-pane__field:focus-visible,\n.cm-mirror-pane__text-area:focus,\n.cm-mirror-pane__text-area:focus-visible {\n outline: none;\n border-color: hsl(var(--primary) / 0.5);\n box-shadow: 0 0 0 1px hsl(var(--primary) / 0.16);\n}\n\n.cm-mirror-pane__param-description,\n.cm-mirror-pane__no-params {\n color: hsl(var(--muted-foreground));\n font-size: 0.78rem;\n line-height: 1.4;\n}\n\n.cm-mirror-pane__no-params {\n padding: 1rem;\n text-align: center;\n}\n\n@container (max-width: 22rem) {\n .cm-mirror-pane__io-row,\n .cm-mirror-pane__kv-row,\n .cm-mirror-pane__pricing-header,\n .cm-mirror-pane__tool-toggle {\n align-items: flex-start;\n flex-direction: column;\n gap: 0.35rem;\n }\n\n .cm-mirror-pane__kv-value {\n text-align: left;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .cm-mirror-pane__toolbar-btn {\n transition-duration: 0.01ms !important;\n }\n}\n";
7
7
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/mirror/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,2pKA2PxB,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/mirror/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,uhUAgcxB,CAAC"}