@floegence/floe-webapp-core 0.52.13 → 0.53.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/chat/ChatProvider.js +31 -30
- package/dist/components/chat/hooks/useAttachments.js +27 -26
- package/dist/components/chat/hooks/useCodeDiff.js +24 -23
- package/dist/components/chat/hooks/useCodeHighlight.js +21 -20
- package/dist/components/chat/hooks/useMarkdown.js +27 -26
- package/dist/components/chat/hooks/useMermaid.js +21 -20
- package/dist/components/layout/BottomBar.js +22 -22
- package/dist/components/layout/TopBar.js +7 -7
- package/dist/components/ui/Button.js +1 -1
- package/dist/components/ui/Card.js +1 -1
- package/dist/components/ui/Checkbox.js +69 -69
- package/dist/components/ui/CommandPalette.js +29 -30
- package/dist/components/ui/Dialog.js +1 -1
- package/dist/components/ui/Dropdown.js +36 -38
- package/dist/components/ui/FloatingWindow.js +2 -3
- package/dist/components/ui/Input.js +3 -3
- package/dist/components/ui/Radio.js +26 -26
- package/dist/components/ui/SegmentedControl.js +6 -6
- package/dist/components/ui/Tabs.js +43 -43
- package/dist/components/ui/floatingPresence.js +1 -1
- package/dist/components/workbench/workbenchHelpers.js +96 -96
- package/dist/context/ThemeContext.js +75 -65
- package/dist/floe.css +27 -55
- package/dist/full.js +61 -59
- package/dist/index.js +26 -24
- package/dist/styles/themes/classicSemanticTokens.d.ts +142 -0
- package/dist/styles/themes/classicSemanticTokens.js +100 -94
- package/dist/styles/themes/presets.d.ts +3 -1
- package/dist/styles/themes/presets.js +126 -63
- package/dist/styles/tokens.d.ts +252 -252
- package/dist/styles/tokens.js +165 -164
- package/dist/styles.css +1 -1
- package/dist/surface.css +17 -42
- package/dist/themes/dark.css +41 -95
- package/dist/themes/light.css +43 -95
- package/dist/themes/shell-presets.generated.css +146 -4
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/secureRandom.d.ts +2 -0
- package/dist/utils/secureRandom.js +11 -0
- package/dist/utils/secureRandom.test.d.ts +1 -0
- package/package.json +1 -1
package/dist/surface.css
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
/* Preblend quiet seams onto the carrying background. Opaque borders avoid an
|
|
14
14
|
* extra blending path when native editors repaint their text and caret. */
|
|
15
15
|
:root {
|
|
16
|
-
--floe-surface-edge: color-mix(in srgb, var(--
|
|
17
|
-
--floe-surface-divider: color-mix(in srgb, var(--
|
|
16
|
+
--floe-surface-edge: color-mix(in srgb, var(--foreground) 11.5%, var(--background));
|
|
17
|
+
--floe-surface-divider: color-mix(in srgb, var(--foreground) 8.5%, var(--background));
|
|
18
18
|
--floe-surface-highlight: rgb(255 255 255 / 50%);
|
|
19
19
|
--floe-surface-shade: rgb(0 0 0 / 12%);
|
|
20
20
|
}
|
|
@@ -23,15 +23,9 @@
|
|
|
23
23
|
* quiet seams; material and existing fills carry the grouping. High contrast
|
|
24
24
|
* retains the original boundaries. Explicit rich Card variants stay independent. */
|
|
25
25
|
@media (forced-colors: none) {
|
|
26
|
-
:root[data-floe-surface-style='soft-neumorphic']:not([data-floe-shell-theme='hc-light']) {
|
|
27
|
-
/* A uniform muted border keeps focus readable without a bright frame.
|
|
28
|
-
* Different colors per edge force a costlier native-editor raster path. */
|
|
29
|
-
--floe-input-focus-color: color-mix(in srgb, var(--muted-foreground) 88%, var(--card));
|
|
30
|
-
}
|
|
31
26
|
:where(:root[data-floe-surface-style='soft-neumorphic']:not([data-floe-shell-theme='hc-light']))
|
|
32
27
|
:is(
|
|
33
28
|
.border-border,
|
|
34
|
-
.border-input,
|
|
35
29
|
[class~='border-border/40'],
|
|
36
30
|
[data-floe-surface],
|
|
37
31
|
.workbench-hud,
|
|
@@ -40,6 +34,9 @@
|
|
|
40
34
|
):not(
|
|
41
35
|
:where(
|
|
42
36
|
[aria-invalid='true'],
|
|
37
|
+
.border-input,
|
|
38
|
+
[data-floe-input-surface],
|
|
39
|
+
[data-floe-input-surface] *,
|
|
43
40
|
[data-floe-surface-part='tab'],
|
|
44
41
|
[data-floe-card-variant]:not([data-floe-card-variant='default'])
|
|
45
42
|
)
|
|
@@ -92,7 +89,9 @@
|
|
|
92
89
|
}
|
|
93
90
|
}
|
|
94
91
|
:root.dark {
|
|
95
|
-
--floe-surface-highlight:
|
|
92
|
+
--floe-surface-highlight: transparent;
|
|
93
|
+
--floe-surface-shadow-raised: 0 0 transparent;
|
|
94
|
+
--floe-surface-shadow-inset: 0 0 transparent;
|
|
96
95
|
--floe-surface-shade: rgb(0 0 0 / 20%);
|
|
97
96
|
}
|
|
98
97
|
|
|
@@ -132,10 +131,9 @@
|
|
|
132
131
|
[data-floe-surface-style='soft-neumorphic'] [data-floe-surface='floating'] {
|
|
133
132
|
--floe-surface-decoration: var(
|
|
134
133
|
--floe-surface-shadow-floating,
|
|
135
|
-
|
|
136
|
-
inset 0 1px 1px var(--floe-surface-highlight)
|
|
134
|
+
var(--floe-window-shadow)
|
|
137
135
|
);
|
|
138
|
-
background-color: var(--
|
|
136
|
+
background-color: var(--popover);
|
|
139
137
|
-webkit-backdrop-filter: none;
|
|
140
138
|
backdrop-filter: none;
|
|
141
139
|
}
|
|
@@ -284,17 +282,17 @@
|
|
|
284
282
|
[data-floe-surface-part='choice']:not([data-floe-selected='true']):hover:not(
|
|
285
283
|
:has(:disabled)
|
|
286
284
|
) {
|
|
287
|
-
background-color: color-mix(in srgb, var(--
|
|
285
|
+
background-color: color-mix(in srgb, var(--foreground) 4%, var(--card));
|
|
288
286
|
}
|
|
289
287
|
& [data-floe-surface-part='choice'][data-floe-selected='true'] {
|
|
290
|
-
background-color:
|
|
288
|
+
background-color: var(--accent);
|
|
291
289
|
}
|
|
292
290
|
& [data-floe-choice-variant='button'][data-floe-selected='true'] {
|
|
293
291
|
color: var(--foreground);
|
|
294
292
|
}
|
|
295
293
|
& [data-floe-surface-part='segment'][aria-checked='true'],
|
|
296
294
|
& [data-floe-surface-part='tab'][aria-selected='true'] {
|
|
297
|
-
background-color:
|
|
295
|
+
background-color: var(--accent);
|
|
298
296
|
color: var(--foreground);
|
|
299
297
|
}
|
|
300
298
|
& [data-floe-surface-part='segment'][aria-checked='false'] {
|
|
@@ -380,19 +378,10 @@
|
|
|
380
378
|
box-shadow: var(--floe-surface-decoration);
|
|
381
379
|
}
|
|
382
380
|
}
|
|
383
|
-
:where(
|
|
384
|
-
:root.dark[data-floe-surface-style='soft-neumorphic']:not([data-floe-shell-theme='hc-light'])
|
|
385
|
-
) {
|
|
386
|
-
/* A solid carrying plane avoids repainting a large gradient behind editors. */
|
|
387
|
-
& [data-floe-card-variant='default'][data-floe-surface='raised'] {
|
|
388
|
-
background-color: color-mix(in srgb, var(--card) 98%, white);
|
|
389
|
-
}
|
|
390
|
-
& [data-floe-surface='floating']:not(.workbench-widget) {
|
|
391
|
-
background-color: color-mix(in srgb, var(--card) 94%, white);
|
|
392
|
-
}
|
|
381
|
+
:where(:root[data-floe-surface-style='soft-neumorphic']:not([data-floe-shell-theme='hc-light'])) {
|
|
393
382
|
& [data-floe-input-surface],
|
|
394
|
-
& :is(input, textarea)[data-floe-surface='inset'] {
|
|
395
|
-
background-color: color-mix(in srgb, var(--card)
|
|
383
|
+
& :is(input, textarea, select)[data-floe-surface='inset'] {
|
|
384
|
+
background-color: color-mix(in srgb, var(--card) 50%, var(--background));
|
|
396
385
|
}
|
|
397
386
|
}
|
|
398
387
|
}
|
|
@@ -409,7 +398,7 @@
|
|
|
409
398
|
@media (forced-colors: none) {
|
|
410
399
|
:root[data-floe-surface-style='soft-neumorphic']:not([data-floe-shell-theme='hc-light'])
|
|
411
400
|
[data-floe-floating-window-surface='true'][data-floe-surface='floating'] {
|
|
412
|
-
--floe-window-radius:
|
|
401
|
+
--floe-window-radius: var(--floe-radius-floating);
|
|
413
402
|
background: var(--floe-window-background);
|
|
414
403
|
color: var(--floe-window-foreground);
|
|
415
404
|
--muted-foreground: var(--floe-window-muted-foreground);
|
|
@@ -426,20 +415,6 @@
|
|
|
426
415
|
transition: none;
|
|
427
416
|
border-radius: calc(var(--floe-window-radius) - 1px) calc(var(--floe-window-radius) - 1px) 0 0;
|
|
428
417
|
}
|
|
429
|
-
& [data-floe-floating-window-titlebar='true']::before {
|
|
430
|
-
content: '';
|
|
431
|
-
position: absolute;
|
|
432
|
-
inset: 0 14px auto;
|
|
433
|
-
height: 1px;
|
|
434
|
-
background: linear-gradient(
|
|
435
|
-
90deg,
|
|
436
|
-
transparent,
|
|
437
|
-
color-mix(in srgb, var(--ring) 42%, transparent) 50%,
|
|
438
|
-
transparent
|
|
439
|
-
);
|
|
440
|
-
opacity: 0.72;
|
|
441
|
-
pointer-events: none;
|
|
442
|
-
}
|
|
443
418
|
&[data-floe-floating-window-state='inactive'] > [data-floe-floating-window-titlebar='true'] {
|
|
444
419
|
background: color-mix(in srgb, var(--floe-window-titlebar-background) 50%, var(--floe-window-background));
|
|
445
420
|
background-image: none;
|
package/dist/themes/dark.css
CHANGED
|
@@ -1,127 +1,73 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* Generated from classicSemanticTokens.ts. Do not edit by hand. */
|
|
2
2
|
.dark {
|
|
3
3
|
color-scheme: dark;
|
|
4
|
-
|
|
5
|
-
/* Independent non-modal window material. */
|
|
6
|
-
--floe-window-background: color-mix(in srgb, var(--card) 90%, white);
|
|
4
|
+
--floe-window-background: var(--popover);
|
|
7
5
|
--floe-window-foreground: var(--foreground);
|
|
8
6
|
--floe-window-muted-foreground: color-mix(in srgb, var(--muted-foreground) 72%, var(--foreground));
|
|
9
|
-
--floe-window-titlebar-background:
|
|
7
|
+
--floe-window-titlebar-background: var(--popover);
|
|
10
8
|
--floe-window-border: color-mix(in srgb, var(--floe-window-background) 88%, var(--foreground));
|
|
11
9
|
--floe-window-shadow: 0 1px 3px rgb(0 0 0 / 30%), 0 12px 28px -8px rgb(0 0 0 / 32%);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
--
|
|
24
|
-
--
|
|
25
|
-
|
|
26
|
-
/* Muted — hover/inactive fill, one step above card */
|
|
27
|
-
--muted: hsl(220 16% 16%);
|
|
28
|
-
--muted-foreground: hsl(215 16% 56%);
|
|
29
|
-
|
|
30
|
-
/* Accent — selected/active fill, one step above muted */
|
|
31
|
-
--accent: hsl(220 14% 19%);
|
|
32
|
-
--accent-foreground: hsl(210 20% 98%);
|
|
33
|
-
|
|
34
|
-
/* Border */
|
|
35
|
-
--border: hsl(220 16% 20%);
|
|
36
|
-
--input: hsl(220 18% 15%);
|
|
37
|
-
--ring: hsl(215 25% 70%);
|
|
38
|
-
/* chrome-border: hairline seams between shell chrome panels */
|
|
39
|
-
--chrome-border: hsl(220 16% 13%);
|
|
40
|
-
/* glow: dedicated accent color for glow/bloom effects.
|
|
41
|
-
--primary in dark mode is near-white (hsl 210 20% 98%), which creates
|
|
42
|
-
an overpowering white bloom when used as a glow source. This token
|
|
43
|
-
maps to a specific blue that reads as luminous without burning. */
|
|
44
|
-
--glow: hsl(217 65% 52%);
|
|
10
|
+
--background: #202223;
|
|
11
|
+
--foreground: #e5e6e2;
|
|
12
|
+
--primary: #bccbb8;
|
|
13
|
+
--primary-foreground: #20291f;
|
|
14
|
+
--secondary: #303435;
|
|
15
|
+
--secondary-foreground: #b8bdb8;
|
|
16
|
+
--muted: #343738;
|
|
17
|
+
--muted-foreground: #9da4a0;
|
|
18
|
+
--accent: #353a38;
|
|
19
|
+
--accent-foreground: #e5e6e2;
|
|
20
|
+
--border: #3e4142;
|
|
21
|
+
--input: #6d7571;
|
|
22
|
+
--ring: #acbdb3;
|
|
23
|
+
--chrome-border: #292c2b;
|
|
45
24
|
--top-bar-border: var(--chrome-border);
|
|
46
25
|
--activity-bar-border: var(--chrome-border);
|
|
47
26
|
--bottom-bar-border: var(--chrome-border);
|
|
48
27
|
--terminal-panel-border: var(--chrome-border);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
--
|
|
52
|
-
--
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
--
|
|
56
|
-
--
|
|
57
|
-
|
|
58
|
-
/* Status colors */
|
|
59
|
-
--success: oklch(0.72 0.19 150);
|
|
60
|
-
--success-foreground: hsl(222 30% 10%);
|
|
61
|
-
--warning: oklch(0.82 0.16 80);
|
|
62
|
-
--warning-foreground: hsl(222 30% 10%);
|
|
28
|
+
--card: #282b2c;
|
|
29
|
+
--card-foreground: #e5e6e2;
|
|
30
|
+
--popover: #2b2e2f;
|
|
31
|
+
--popover-foreground: #e5e6e2;
|
|
32
|
+
--success: #a1b69e;
|
|
33
|
+
--success-foreground: #20291f;
|
|
34
|
+
--warning: #c8af84;
|
|
35
|
+
--warning-foreground: #20291f;
|
|
63
36
|
--error: oklch(0.7 0.22 25);
|
|
64
|
-
--error-foreground:
|
|
37
|
+
--error-foreground: #202223;
|
|
65
38
|
--info: oklch(0.7 0.15 250);
|
|
66
|
-
--info-foreground:
|
|
67
|
-
|
|
68
|
-
/* Highlight block accents - deeper than shared status tokens */
|
|
39
|
+
--info-foreground: #202223;
|
|
69
40
|
--highlight-block-info-accent: oklch(0.62 0.12 240);
|
|
70
41
|
--highlight-block-warning-accent: oklch(0.7 0.14 65);
|
|
71
42
|
--highlight-block-success-accent: oklch(0.62 0.12 155);
|
|
72
43
|
--highlight-block-error-accent: oklch(0.6 0.14 25);
|
|
73
44
|
--highlight-block-note-accent: oklch(0.62 0.14 285);
|
|
74
45
|
--highlight-block-tip-accent: oklch(0.6 0.1 175);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
--sidebar:
|
|
78
|
-
--sidebar-foreground:
|
|
79
|
-
--sidebar-
|
|
80
|
-
--sidebar-
|
|
81
|
-
--sidebar-
|
|
82
|
-
--sidebar-
|
|
83
|
-
--
|
|
84
|
-
--
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
--activity-bar:
|
|
88
|
-
--activity-bar-foreground: hsl(215 16% 50%);
|
|
89
|
-
--activity-bar-foreground-active: hsl(210 20% 96%);
|
|
90
|
-
--activity-bar-badge: hsl(217 80% 55%);
|
|
91
|
-
--activity-bar-badge-foreground: hsl(0 0% 100%);
|
|
92
|
-
|
|
93
|
-
/* Terminal */
|
|
46
|
+
--sidebar: #1b1d1e;
|
|
47
|
+
--sidebar-foreground: #e5e6e2;
|
|
48
|
+
--sidebar-primary: #bccbb8;
|
|
49
|
+
--sidebar-primary-foreground: #20291f;
|
|
50
|
+
--sidebar-accent: #353a38;
|
|
51
|
+
--sidebar-accent-foreground: #e5e6e2;
|
|
52
|
+
--sidebar-border: #292c2b;
|
|
53
|
+
--sidebar-ring: #acbdb3;
|
|
54
|
+
--activity-bar: #17191a;
|
|
55
|
+
--activity-bar-foreground: #9da4a0;
|
|
56
|
+
--activity-bar-foreground-active: #e5e6e2;
|
|
57
|
+
--activity-bar-badge: #bccbb8;
|
|
58
|
+
--activity-bar-badge-foreground: #20291f;
|
|
94
59
|
--terminal-background: hsl(222 32% 7%);
|
|
95
60
|
--terminal-foreground: hsl(210 15% 92%);
|
|
96
|
-
|
|
97
|
-
/* Chart colors */
|
|
98
61
|
--chart-1: hsl(210 20% 98%);
|
|
99
62
|
--chart-2: hsl(215 20% 60%);
|
|
100
63
|
--chart-3: oklch(0.7 0.15 250);
|
|
101
64
|
--chart-4: oklch(0.72 0.19 150);
|
|
102
65
|
--chart-5: oklch(0.82 0.16 80);
|
|
103
|
-
|
|
104
|
-
/* ============================================
|
|
105
|
-
Selection Colors
|
|
106
|
-
============================================
|
|
107
|
-
Design notes:
|
|
108
|
-
1. Default selection: blue background + white text
|
|
109
|
-
2. Selection on primary backgrounds: must contrast with the primary color
|
|
110
|
-
- In dark theme, --primary is near-white, so we use a darker selection (deep blue)
|
|
111
|
-
3. Code selection: fixed bright blue, since code blocks always use a dark background
|
|
112
|
-
*/
|
|
113
|
-
|
|
114
|
-
/* Default selection */
|
|
115
66
|
--selection-bg: hsl(215 70% 50%);
|
|
116
67
|
--selection-fg: hsl(0 0% 100%);
|
|
117
|
-
|
|
118
|
-
/* Selection on primary backgrounds
|
|
119
|
-
In dark theme, primary is near-white (hsl(210 20% 98%)),
|
|
120
|
-
so we use a darker selection to keep contrast. */
|
|
121
68
|
--selection-on-primary-bg: hsl(215 80% 35%);
|
|
122
69
|
--selection-on-primary-fg: hsl(0 0% 100%);
|
|
123
|
-
|
|
124
|
-
/* Code-block selection (code blocks use a dark background: #0d1117) */
|
|
125
70
|
--selection-code-bg: hsl(212 100% 67%);
|
|
126
71
|
--selection-code-fg: hsl(220 20% 8%);
|
|
72
|
+
--glow: hsl(217 65% 52%);
|
|
127
73
|
}
|
package/dist/themes/light.css
CHANGED
|
@@ -1,126 +1,74 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* Generated from classicSemanticTokens.ts. Do not edit by hand. */
|
|
2
2
|
:root,
|
|
3
3
|
.light {
|
|
4
4
|
color-scheme: light;
|
|
5
|
-
|
|
6
|
-
/* Independent non-modal window material. */
|
|
7
|
-
--floe-window-background: color-mix(in srgb, var(--card) 35%, white);
|
|
5
|
+
--floe-window-background: var(--popover);
|
|
8
6
|
--floe-window-foreground: var(--foreground);
|
|
9
7
|
--floe-window-muted-foreground: var(--muted-foreground);
|
|
10
|
-
--floe-window-titlebar-background:
|
|
8
|
+
--floe-window-titlebar-background: var(--popover);
|
|
11
9
|
--floe-window-border: color-mix(in srgb, var(--floe-window-background) 88%, var(--foreground));
|
|
12
10
|
--floe-window-shadow: 0 1px 3px rgb(0 0 0 / 14%), 0 12px 28px -8px rgb(0 0 0 / 18%);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
--
|
|
25
|
-
--
|
|
26
|
-
|
|
27
|
-
/* Muted - Warm gray */
|
|
28
|
-
--muted: hsl(36 15% 94%);
|
|
29
|
-
--muted-foreground: hsl(215 16% 42%);
|
|
30
|
-
|
|
31
|
-
/* Accent - Subtle warm highlight, darker than sidebar for visible hover/active fills */
|
|
32
|
-
--accent: hsl(34 9% 85%);
|
|
33
|
-
--accent-foreground: hsl(214 26% 17%);
|
|
34
|
-
|
|
35
|
-
/* Border - Warm gray */
|
|
36
|
-
--border: hsl(35 13% 82%);
|
|
37
|
-
--input: hsl(37 15% 76%);
|
|
38
|
-
--ring: hsl(214 26% 17%);
|
|
39
|
-
--chrome-border: hsl(33 11% 84%);
|
|
11
|
+
--background: #f8f7f2;
|
|
12
|
+
--foreground: #303a34;
|
|
13
|
+
--primary: #465a43;
|
|
14
|
+
--primary-foreground: #f8faf5;
|
|
15
|
+
--secondary: #eeefe8;
|
|
16
|
+
--secondary-foreground: #545f56;
|
|
17
|
+
--muted: #e9ece3;
|
|
18
|
+
--muted-foreground: #5e695c;
|
|
19
|
+
--accent: #e0e7da;
|
|
20
|
+
--accent-foreground: #303a34;
|
|
21
|
+
--border: #d4d8cd;
|
|
22
|
+
--input: #858e80;
|
|
23
|
+
--ring: #56694f;
|
|
24
|
+
--chrome-border: #dedfd7;
|
|
40
25
|
--top-bar-border: var(--chrome-border);
|
|
41
26
|
--activity-bar-border: var(--chrome-border);
|
|
42
27
|
--bottom-bar-border: var(--chrome-border);
|
|
43
28
|
--terminal-panel-border: var(--chrome-border);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
--
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
--
|
|
50
|
-
--
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
--
|
|
54
|
-
--
|
|
55
|
-
|
|
56
|
-
/* Status colors */
|
|
57
|
-
--success: oklch(0.68 0.16 150);
|
|
58
|
-
--success-foreground: hsl(0 0% 100%);
|
|
59
|
-
--warning: hsl(38 92% 50%);
|
|
60
|
-
--warning-foreground: hsl(214 26% 17%);
|
|
61
|
-
--error: oklch(0.65 0.2 25);
|
|
62
|
-
--error-foreground: hsl(0 0% 100%);
|
|
63
|
-
--info: hsl(217 91% 60%);
|
|
64
|
-
--info-foreground: hsl(0 0% 100%);
|
|
65
|
-
|
|
66
|
-
/* Highlight block accents - deeper than shared status tokens */
|
|
29
|
+
--card: #fcfbf7;
|
|
30
|
+
--card-foreground: #303a34;
|
|
31
|
+
--popover: #fffefa;
|
|
32
|
+
--popover-foreground: #303a34;
|
|
33
|
+
--success: #496744;
|
|
34
|
+
--success-foreground: #f8faf5;
|
|
35
|
+
--warning: #856828;
|
|
36
|
+
--warning-foreground: #fffefa;
|
|
37
|
+
--error: #b74744;
|
|
38
|
+
--error-foreground: #fffefa;
|
|
39
|
+
--info: #2671d9;
|
|
40
|
+
--info-foreground: #fffefa;
|
|
67
41
|
--highlight-block-info-accent: oklch(0.52 0.14 245);
|
|
68
42
|
--highlight-block-warning-accent: oklch(0.62 0.16 65);
|
|
69
43
|
--highlight-block-success-accent: oklch(0.55 0.14 155);
|
|
70
44
|
--highlight-block-error-accent: oklch(0.55 0.16 25);
|
|
71
45
|
--highlight-block-note-accent: oklch(0.52 0.16 285);
|
|
72
46
|
--highlight-block-tip-accent: oklch(0.52 0.12 175);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
--sidebar:
|
|
76
|
-
--sidebar-foreground:
|
|
77
|
-
--sidebar-
|
|
78
|
-
--sidebar-
|
|
79
|
-
--sidebar-
|
|
80
|
-
--sidebar-
|
|
81
|
-
--
|
|
82
|
-
--
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
--activity-bar: hsl(34 11% 90%);
|
|
87
|
-
--activity-bar-foreground: hsl(215 14% 46%);
|
|
88
|
-
--activity-bar-foreground-active: hsl(214 26% 17%);
|
|
89
|
-
--activity-bar-badge: hsl(214 26% 17%);
|
|
90
|
-
--activity-bar-badge-foreground: hsl(36 100% 99%);
|
|
91
|
-
|
|
92
|
-
/* Terminal */
|
|
47
|
+
--sidebar: #efeee7;
|
|
48
|
+
--sidebar-foreground: #303a34;
|
|
49
|
+
--sidebar-primary: #465a43;
|
|
50
|
+
--sidebar-primary-foreground: #f8faf5;
|
|
51
|
+
--sidebar-accent: #e0e7da;
|
|
52
|
+
--sidebar-accent-foreground: #303a34;
|
|
53
|
+
--sidebar-border: #dedfd7;
|
|
54
|
+
--sidebar-ring: #56694f;
|
|
55
|
+
--activity-bar: #eeede6;
|
|
56
|
+
--activity-bar-foreground: #5e695c;
|
|
57
|
+
--activity-bar-foreground-active: #303a34;
|
|
58
|
+
--activity-bar-badge: #465a43;
|
|
59
|
+
--activity-bar-badge-foreground: #f8faf5;
|
|
93
60
|
--terminal-background: hsl(214 26% 17%);
|
|
94
61
|
--terminal-foreground: hsl(0 0% 92%);
|
|
95
|
-
|
|
96
|
-
/* Chart colors */
|
|
97
62
|
--chart-1: hsl(214 26% 17%);
|
|
98
63
|
--chart-2: hsl(215 16% 42%);
|
|
99
64
|
--chart-3: hsl(217 91% 60%);
|
|
100
65
|
--chart-4: oklch(0.68 0.16 150);
|
|
101
66
|
--chart-5: hsl(38 92% 50%);
|
|
102
|
-
|
|
103
|
-
/* ============================================
|
|
104
|
-
Selection Colors
|
|
105
|
-
============================================
|
|
106
|
-
Design notes:
|
|
107
|
-
1. Default selection: blue background + white text (works for most cases)
|
|
108
|
-
2. Selection on primary backgrounds: must contrast with the primary color
|
|
109
|
-
- In light theme, --primary is dark, so we use a bright highlight (yellow)
|
|
110
|
-
3. Code selection: fixed bright blue, since code blocks always use a dark background
|
|
111
|
-
*/
|
|
112
|
-
|
|
113
|
-
/* Default selection */
|
|
114
67
|
--selection-bg: hsl(217 91% 60%);
|
|
115
68
|
--selection-fg: hsl(0 0% 100%);
|
|
116
|
-
|
|
117
|
-
/* Selection on primary backgrounds
|
|
118
|
-
In light theme, primary is dark (hsl(214 26% 17%)),
|
|
119
|
-
so we use a warm amber selection to keep contrast. */
|
|
120
69
|
--selection-on-primary-bg: hsl(38 92% 50%);
|
|
121
70
|
--selection-on-primary-fg: hsl(214 26% 17%);
|
|
122
|
-
|
|
123
|
-
/* Code-block selection (code blocks use a dark background: #0d1117) */
|
|
124
71
|
--selection-code-bg: hsl(212 100% 67%);
|
|
125
72
|
--selection-code-fg: hsl(220 20% 8%);
|
|
73
|
+
--glow: #465a43;
|
|
126
74
|
}
|
|
@@ -1433,7 +1433,7 @@
|
|
|
1433
1433
|
--secondary: #2c2c30;
|
|
1434
1434
|
--secondary-foreground: #e0e0e4;
|
|
1435
1435
|
--muted: #2c2c30;
|
|
1436
|
-
--muted-foreground: #
|
|
1436
|
+
--muted-foreground: #93939b;
|
|
1437
1437
|
--accent: #2c2c30;
|
|
1438
1438
|
--accent-foreground: #e0e0e4;
|
|
1439
1439
|
--border: #323236;
|
|
@@ -1471,7 +1471,7 @@
|
|
|
1471
1471
|
--sidebar-border: #323236;
|
|
1472
1472
|
--sidebar-ring: #e0e0e4;
|
|
1473
1473
|
--activity-bar: #141416;
|
|
1474
|
-
--activity-bar-foreground: #
|
|
1474
|
+
--activity-bar-foreground: #93939b;
|
|
1475
1475
|
--activity-bar-foreground-active: #e0e0e4;
|
|
1476
1476
|
--activity-bar-badge: #e0e0e4;
|
|
1477
1477
|
--activity-bar-badge-foreground: #1a1a1c;
|
|
@@ -1509,7 +1509,7 @@
|
|
|
1509
1509
|
--accent-foreground: #f2f2f7;
|
|
1510
1510
|
--border: #38383a;
|
|
1511
1511
|
--input: #888888;
|
|
1512
|
-
--ring: #
|
|
1512
|
+
--ring: #0a84ff;
|
|
1513
1513
|
--chrome-border: #38383a;
|
|
1514
1514
|
--top-bar-border: #38383a;
|
|
1515
1515
|
--activity-bar-border: #38383a;
|
|
@@ -1540,7 +1540,7 @@
|
|
|
1540
1540
|
--sidebar-accent: #3a3a3c;
|
|
1541
1541
|
--sidebar-accent-foreground: #f2f2f7;
|
|
1542
1542
|
--sidebar-border: #38383a;
|
|
1543
|
-
--sidebar-ring: #
|
|
1543
|
+
--sidebar-ring: #0a84ff;
|
|
1544
1544
|
--activity-bar: #242426;
|
|
1545
1545
|
--activity-bar-foreground: #aeaeb2;
|
|
1546
1546
|
--activity-bar-foreground-active: #f2f2f7;
|
|
@@ -1561,3 +1561,145 @@
|
|
|
1561
1561
|
--selection-code-fg: #08111d;
|
|
1562
1562
|
--glow: #0070e0;
|
|
1563
1563
|
}
|
|
1564
|
+
:root[data-floe-shell-theme='porcelain-light'] {
|
|
1565
|
+
--floe-window-background: color-mix(in srgb, var(--card) 35%, white);
|
|
1566
|
+
--floe-window-foreground: var(--foreground);
|
|
1567
|
+
--floe-window-muted-foreground: var(--muted-foreground);
|
|
1568
|
+
--floe-window-titlebar-background: color-mix(in srgb, var(--floe-window-background) 92%, var(--foreground));
|
|
1569
|
+
--floe-window-border: color-mix(in srgb, var(--floe-window-background) 88%, var(--foreground));
|
|
1570
|
+
--floe-window-shadow: 0 1px 3px rgb(0 0 0 / 14%), 0 12px 28px -8px rgb(0 0 0 / 18%);
|
|
1571
|
+
--background: #f4f1ed;
|
|
1572
|
+
--foreground: #202a37;
|
|
1573
|
+
--primary: #202a37;
|
|
1574
|
+
--primary-foreground: #fffdfa;
|
|
1575
|
+
--secondary: #f1efec;
|
|
1576
|
+
--secondary-foreground: #202a37;
|
|
1577
|
+
--muted: #f1efec;
|
|
1578
|
+
--muted-foreground: #576579;
|
|
1579
|
+
--accent: #e4e1dd;
|
|
1580
|
+
--accent-foreground: #202a37;
|
|
1581
|
+
--border: #d8d3cc;
|
|
1582
|
+
--input: #828891;
|
|
1583
|
+
--ring: #202a37;
|
|
1584
|
+
--chrome-border: #d8d3cc;
|
|
1585
|
+
--top-bar-border: #d8d3cc;
|
|
1586
|
+
--activity-bar-border: #d8d3cc;
|
|
1587
|
+
--bottom-bar-border: #d8d3cc;
|
|
1588
|
+
--terminal-panel-border: #d8d3cc;
|
|
1589
|
+
--card: #fffdfa;
|
|
1590
|
+
--card-foreground: #202a37;
|
|
1591
|
+
--popover: #fffdfa;
|
|
1592
|
+
--popover-foreground: #202a37;
|
|
1593
|
+
--success: #287a4b;
|
|
1594
|
+
--success-foreground: #ffffff;
|
|
1595
|
+
--warning: #835800;
|
|
1596
|
+
--warning-foreground: #ffffff;
|
|
1597
|
+
--error: #b42318;
|
|
1598
|
+
--error-foreground: #ffffff;
|
|
1599
|
+
--info: #245b9b;
|
|
1600
|
+
--info-foreground: #ffffff;
|
|
1601
|
+
--highlight-block-info-accent: #245b9b;
|
|
1602
|
+
--highlight-block-warning-accent: #835800;
|
|
1603
|
+
--highlight-block-success-accent: #287a4b;
|
|
1604
|
+
--highlight-block-error-accent: #b42318;
|
|
1605
|
+
--highlight-block-note-accent: #6847a0;
|
|
1606
|
+
--highlight-block-tip-accent: #1e6f73;
|
|
1607
|
+
--sidebar: #eeece9;
|
|
1608
|
+
--sidebar-foreground: #202a37;
|
|
1609
|
+
--sidebar-primary: #202a37;
|
|
1610
|
+
--sidebar-primary-foreground: #fffdfa;
|
|
1611
|
+
--sidebar-accent: #e4e1dd;
|
|
1612
|
+
--sidebar-accent-foreground: #202a37;
|
|
1613
|
+
--sidebar-border: #d8d3cc;
|
|
1614
|
+
--sidebar-ring: #202a37;
|
|
1615
|
+
--activity-bar: #eeece9;
|
|
1616
|
+
--activity-bar-foreground: #576579;
|
|
1617
|
+
--activity-bar-foreground-active: #202a37;
|
|
1618
|
+
--activity-bar-badge: #202a37;
|
|
1619
|
+
--activity-bar-badge-foreground: #fffdfa;
|
|
1620
|
+
--terminal-background: #202a37;
|
|
1621
|
+
--terminal-foreground: #ebebeb;
|
|
1622
|
+
--chart-1: #202a37;
|
|
1623
|
+
--chart-2: #5a687c;
|
|
1624
|
+
--chart-3: #2671d9;
|
|
1625
|
+
--chart-4: #287a4b;
|
|
1626
|
+
--chart-5: #835800;
|
|
1627
|
+
--selection-bg: #2671d9;
|
|
1628
|
+
--selection-fg: #ffffff;
|
|
1629
|
+
--selection-on-primary-bg: #f4c95d;
|
|
1630
|
+
--selection-on-primary-fg: #243447;
|
|
1631
|
+
--selection-code-bg: #58a6ff;
|
|
1632
|
+
--selection-code-fg: #08111d;
|
|
1633
|
+
--glow: #202a37;
|
|
1634
|
+
}
|
|
1635
|
+
:root[data-floe-shell-theme='porcelain-dark'] {
|
|
1636
|
+
--floe-window-background: color-mix(in srgb, var(--card) 90%, white);
|
|
1637
|
+
--floe-window-foreground: var(--foreground);
|
|
1638
|
+
--floe-window-muted-foreground: color-mix(in srgb, var(--muted-foreground) 72%, var(--foreground));
|
|
1639
|
+
--floe-window-titlebar-background: color-mix(in srgb, var(--floe-window-background) 95%, white);
|
|
1640
|
+
--floe-window-border: color-mix(in srgb, var(--floe-window-background) 88%, var(--foreground));
|
|
1641
|
+
--floe-window-shadow: 0 1px 3px rgb(0 0 0 / 30%), 0 12px 28px -8px rgb(0 0 0 / 32%);
|
|
1642
|
+
--background: #20242a;
|
|
1643
|
+
--foreground: #e6e3dd;
|
|
1644
|
+
--primary: #bcc8d5;
|
|
1645
|
+
--primary-foreground: #202a37;
|
|
1646
|
+
--secondary: #343a43;
|
|
1647
|
+
--secondary-foreground: #e6e3dd;
|
|
1648
|
+
--muted: #343a43;
|
|
1649
|
+
--muted-foreground: #a2abb8;
|
|
1650
|
+
--accent: #343a43;
|
|
1651
|
+
--accent-foreground: #e6e3dd;
|
|
1652
|
+
--border: #3e444d;
|
|
1653
|
+
--input: #7a8491;
|
|
1654
|
+
--ring: #a8bcd0;
|
|
1655
|
+
--chrome-border: #3e444d;
|
|
1656
|
+
--top-bar-border: #3e444d;
|
|
1657
|
+
--activity-bar-border: #3e444d;
|
|
1658
|
+
--bottom-bar-border: #3e444d;
|
|
1659
|
+
--terminal-panel-border: #3e444d;
|
|
1660
|
+
--card: #292e35;
|
|
1661
|
+
--card-foreground: #e6e3dd;
|
|
1662
|
+
--popover: #292e35;
|
|
1663
|
+
--popover-foreground: #e6e3dd;
|
|
1664
|
+
--success: #72d39c;
|
|
1665
|
+
--success-foreground: #07160e;
|
|
1666
|
+
--warning: #f0c36a;
|
|
1667
|
+
--warning-foreground: #1b1405;
|
|
1668
|
+
--error: #ff8a82;
|
|
1669
|
+
--error-foreground: #210706;
|
|
1670
|
+
--info: #79b8ff;
|
|
1671
|
+
--info-foreground: #061321;
|
|
1672
|
+
--highlight-block-info-accent: #79b8ff;
|
|
1673
|
+
--highlight-block-warning-accent: #f0c36a;
|
|
1674
|
+
--highlight-block-success-accent: #72d39c;
|
|
1675
|
+
--highlight-block-error-accent: #ff8a82;
|
|
1676
|
+
--highlight-block-note-accent: #c19be8;
|
|
1677
|
+
--highlight-block-tip-accent: #71c8c0;
|
|
1678
|
+
--sidebar: #1c2026;
|
|
1679
|
+
--sidebar-foreground: #e6e3dd;
|
|
1680
|
+
--sidebar-primary: #bcc8d5;
|
|
1681
|
+
--sidebar-primary-foreground: #202a37;
|
|
1682
|
+
--sidebar-accent: #343a43;
|
|
1683
|
+
--sidebar-accent-foreground: #e6e3dd;
|
|
1684
|
+
--sidebar-border: #3e444d;
|
|
1685
|
+
--sidebar-ring: #a8bcd0;
|
|
1686
|
+
--activity-bar: #1c2026;
|
|
1687
|
+
--activity-bar-foreground: #a2abb8;
|
|
1688
|
+
--activity-bar-foreground-active: #e6e3dd;
|
|
1689
|
+
--activity-bar-badge: #bcc8d5;
|
|
1690
|
+
--activity-bar-badge-foreground: #202a37;
|
|
1691
|
+
--terminal-background: #181c22;
|
|
1692
|
+
--terminal-foreground: #e6e3dd;
|
|
1693
|
+
--chart-1: #bcc8d5;
|
|
1694
|
+
--chart-2: #79b8ff;
|
|
1695
|
+
--chart-3: #c19be8;
|
|
1696
|
+
--chart-4: #72d39c;
|
|
1697
|
+
--chart-5: #f0c36a;
|
|
1698
|
+
--selection-bg: #3b6592;
|
|
1699
|
+
--selection-fg: #ffffff;
|
|
1700
|
+
--selection-on-primary-bg: #20242a;
|
|
1701
|
+
--selection-on-primary-fg: #e6e3dd;
|
|
1702
|
+
--selection-code-bg: #58a6ff;
|
|
1703
|
+
--selection-code-fg: #08111d;
|
|
1704
|
+
--glow: #3b6592;
|
|
1705
|
+
}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function a() {
|
|
2
|
+
if (typeof globalThis.crypto?.getRandomValues != "function")
|
|
3
|
+
throw new Error("Cryptographically secure random values are unavailable");
|
|
4
|
+
const e = globalThis.crypto.getRandomValues(new Uint8Array(16));
|
|
5
|
+
e[6] = e[6] & 15 | 64, e[8] = e[8] & 63 | 128;
|
|
6
|
+
const r = Array.from(e, (o) => o.toString(16).padStart(2, "0")).join("");
|
|
7
|
+
return `${r.slice(0, 8)}-${r.slice(8, 12)}-${r.slice(12, 16)}-${r.slice(16, 20)}-${r.slice(20)}`;
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
a as secureRandomUUID
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|