@floegence/floe-webapp-core 0.86.60 → 0.86.63
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/app/FloeRegistryContributions.js +0 -3
- package/dist/components/chat/blocks/BlockRenderer.js +1 -1
- package/dist/components/chat/blocks/CodeDiffBlock.js +56 -56
- package/dist/components/chat/blocks/ImageBlock.js +1 -1
- package/dist/components/chat/blocks/ToolCallBlock.js +57 -57
- package/dist/components/chat/status/ConnectionStatus.js +10 -10
- package/dist/components/deck/DeckCell.js +25 -25
- package/dist/components/deck/DeckContextMenu.js +20 -20
- package/dist/components/deck/DeckGrid.js +1 -1
- package/dist/components/deck/DeckTopBar.js +42 -42
- package/dist/components/deck/DropZonePreview.js +6 -6
- package/dist/components/deck/LayoutSelector.js +53 -53
- package/dist/components/deck/WidgetFrame.js +28 -28
- package/dist/components/deck/WidgetPalette.js +31 -31
- package/dist/components/deck/WidgetTypeSwitcher.js +31 -31
- package/dist/components/file-browser/Breadcrumb.js +27 -27
- package/dist/components/file-browser/DirectoryTree.js +15 -15
- package/dist/components/file-browser/DragPreview.js +58 -58
- package/dist/components/file-browser/FileBrowser.js +17 -17
- package/dist/components/file-browser/FileBrowserStatusBar.js +18 -18
- package/dist/components/file-browser/FileBrowserToolbar.js +27 -27
- package/dist/components/file-browser/FileContextMenu.js +47 -47
- package/dist/components/file-browser/FileGridView.js +53 -51
- package/dist/components/file-browser/FileItemDecorations.js +30 -27
- package/dist/components/file-browser/FileListView.js +114 -114
- package/dist/components/icons/ActivityRailIcons.d.ts +30 -0
- package/dist/components/icons/ActivityRailIcons.js +68 -0
- package/dist/components/icons/index.d.ts +1 -0
- package/dist/components/icons/index.js +1357 -1357
- package/dist/components/launchpad/Launchpad.js +14 -14
- package/dist/components/launchpad/LaunchpadGrid.js +7 -7
- package/dist/components/launchpad/LaunchpadItem.js +11 -11
- package/dist/components/launchpad/LaunchpadPagination.js +16 -16
- package/dist/components/launchpad/LaunchpadSearch.js +9 -9
- package/dist/components/layout/ActivityBar.js +61 -63
- package/dist/components/layout/DisplayModeSwitcher.d.ts +10 -0
- package/dist/components/layout/DisplayModeSwitcher.js +102 -33
- package/dist/components/layout/MobileNavigationPanel.js +36 -36
- package/dist/components/layout/MobileTabBar.js +39 -39
- package/dist/components/layout/Panel.js +16 -16
- package/dist/components/layout/ResizeHandle.js +19 -19
- package/dist/components/layout/Shell.d.ts +0 -6
- package/dist/components/layout/Shell.js +208 -254
- package/dist/components/layout/Sidebar.js +37 -36
- package/dist/components/layout/SidebarPane.js +19 -19
- package/dist/components/layout/ThemeToggle.d.ts +19 -0
- package/dist/components/layout/ThemeToggle.js +39 -0
- package/dist/components/layout/TopBar.js +16 -16
- package/dist/components/layout/TopBarIconButton.js +15 -15
- package/dist/components/layout/index.d.ts +1 -1
- package/dist/components/loading/LoadingOverlay.js +9 -9
- package/dist/components/loading/Skeleton.js +11 -11
- package/dist/components/ui/Button.js +44 -36
- package/dist/components/ui/Card.d.ts +11 -62
- package/dist/components/ui/Card.js +64 -237
- package/dist/components/ui/Checkbox.js +79 -79
- package/dist/components/ui/CommandPalette.js +56 -55
- package/dist/components/ui/Dialog.js +91 -93
- package/dist/components/ui/DirectoryInput.js +22 -22
- package/dist/components/ui/DirectoryPicker.js +8 -8
- package/dist/components/ui/Dropdown.js +89 -87
- package/dist/components/ui/FeedbackIndicator.js +57 -57
- package/dist/components/ui/FileOpenPicker.js +37 -37
- package/dist/components/ui/FileSavePicker.js +41 -41
- package/dist/components/ui/FloatingWindow.js +213 -205
- package/dist/components/ui/Form.js +76 -76
- package/dist/components/ui/HighlightBlock.js +14 -14
- package/dist/components/ui/Input.js +106 -109
- package/dist/components/ui/Pagination.js +86 -86
- package/dist/components/ui/Popover.d.ts +33 -0
- package/dist/components/ui/Popover.js +133 -0
- package/dist/components/ui/ProcessingIndicator.js +344 -345
- package/dist/components/ui/Progress.js +94 -97
- package/dist/components/ui/QuoteBlock.js +25 -25
- package/dist/components/ui/Radio.js +91 -91
- package/dist/components/ui/SegmentedControl.js +24 -24
- package/dist/components/ui/Stepper.js +68 -60
- package/dist/components/ui/Switch.js +25 -25
- package/dist/components/ui/Tabs.js +188 -163
- package/dist/components/ui/Tag.js +12 -9
- package/dist/components/ui/Tooltip.js +30 -30
- package/dist/components/ui/floatingPresence.d.ts +7 -0
- package/dist/components/ui/floatingPresence.js +80 -39
- package/dist/components/ui/index.d.ts +2 -1
- package/dist/components/ui/picker/DirectoryFavorites.js +27 -27
- package/dist/components/ui/picker/PickerBase.js +107 -107
- package/dist/context/ComponentRegistry.d.ts +0 -8
- package/dist/context/ComponentRegistry.js +61 -67
- package/dist/context/FloeConfigContext.d.ts +0 -6
- package/dist/context/FloeConfigContext.js +9 -15
- package/dist/context/NotificationContext.js +4 -4
- package/dist/context/ThemeContext.js +71 -70
- package/dist/context/index.d.ts +1 -1
- package/dist/display-mode.css +2 -45
- package/dist/floe.css +205 -43
- package/dist/full.js +701 -695
- package/dist/icons.js +112 -102
- package/dist/language.css +320 -0
- package/dist/layout.js +33 -35
- package/dist/primitives.css +23 -17
- package/dist/standalone.css +1 -0
- package/dist/styles/themes/classicSemanticTokens.d.ts +122 -122
- package/dist/styles/themes/classicSemanticTokens.js +140 -138
- package/dist/styles/themes/index.d.ts +3 -1
- package/dist/styles/themes/index.js +10 -10
- package/dist/styles/themes/presets.d.ts +2 -2
- package/dist/styles/themes/presets.js +34 -34
- package/dist/styles/tokens.d.ts +152 -68
- package/dist/styles/tokens.js +87 -49
- package/dist/styles.css +1 -1
- package/dist/surface.css +214 -117
- package/dist/themes/dark.css +64 -64
- package/dist/themes/light.css +64 -64
- package/dist/ui.css +171 -255
- package/dist/ui.js +176 -178
- package/dist/utils/hotInteraction.d.ts +7 -0
- package/dist/utils/hotInteraction.js +12 -12
- package/dist/widgets/TerminalWidget.js +28 -28
- package/dist/workbench-composition.css +15 -15
- package/package.json +1 -1
- package/dist/components/layout/BottomBar.d.ts +0 -29
- package/dist/components/layout/BottomBar.js +0 -70
package/dist/icons.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import { Activity as n, ActivityIcon as c, AlertCircle as r, AlertTriangle as a, ArchiveIcon as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { Activity as n, ActivityIcon as c, AlertCircle as r, AlertTriangle as a, ArchiveIcon as i, ArrowDown as l, ArrowLeft as I, ArrowRight as t, ArrowRightLeft as s, ArrowUp as d, AtSign as h, AwardIcon as C, BarChart as k, BatteryIcon as p, Bell as u, BellIcon as S, Bookmark as g, BookmarkIcon as D, Bot as P, BotIcon as f, BugIcon as m, Calendar as y, CalendarIcon as M, Camera as T, CameraIcon as F, ChartIcon as R, Check as w, CheckCircle as L, CheckIcon as A, ChevronDown as v, ChevronLeft as B, ChevronRight as b, ChevronUp as x, ChevronsUpDown as H, CircleStop as U, Clock as G, ClockIcon as E, CloseIcon as V, Cloud as O, CloudIcon as W, Code as z, CodeIcon as K, CompassIcon as q, Copy as X, CopyCheck as Z, CopyCheckIcon as N, CopyIcon as Q, Cpu as j, CreditCardIcon as J, Database as Y, DatabaseIcon as _, DollarIcon as $, Download as oo, DownloadIcon as eo, EditIcon as no, ErrorIcon as co, ExternalLink as ro, Eye as ao, EyeIcon as io, EyeOff as lo, FileCode as Io, FilePlus as to, FilePlusIcon as so, FileText as ho, Files as Co, Filter as ko, FilterIcon as po, FireIcon as uo, Folder as So, FolderOpen as go, FolderPlus as Do, FolderPlusIcon as Po, GiftIcon as fo, GitBranch as mo, GitBranchIcon as yo, Globe as Mo, GlobeIcon as To, Grid as Fo, Grid3x3 as Ro, GripVertical as wo, Hash as Lo, HeadphonesIcon as Ao, Heart as vo, HeartIcon as Bo, HelpIcon as bo, Highlighter as xo, History as Ho, Home as Uo, HomeIcon as Go, Image as Eo, ImageIcon as Vo, Info as Oo, InfoIcon as Wo, Key as zo, KeyIcon as Ko, Layers as qo, LayersIcon as Xo, LayoutDashboard as Zo, Link as No, LinkIcon as Qo, Loader2 as jo, LoadingIcon as Jo, Lock as Yo, LockIcon as _o, MagicIcon as $o, Mail as oe, MailIcon as ee, MapPinIcon as ne, Maximize as ce, Menu as re, MessageIcon as ae, MessageSquare as ie, Mic as le, MicIcon as Ie, MicOff as te, Minus as se, MinusIcon as de, MonitorPointer as he, Moon as Ce, MoonIcon as ke, MoreHorizontal as pe, MoreVertical as ue, MuteIcon as Se, Package as ge, PackageIcon as De, Paperclip as Pe, Paste as fe, PasteIcon as me, Pause as ye, PauseIcon as Me, Pencil as Te, Phone as Fe, PieChart as Re, Pin as we, PinIcon as Le, Play as Ae, PlayIcon as ve, Plus as Be, PlusIcon as be, PowerIcon as xe, PrinterIcon as He, Quote as Ue, Refresh as Ge, RefreshIcon as Ee, Region as Ve, Restore as Oe, RocketIcon as We, Save as ze, SaveIcon as Ke, Search as qe, SearchIcon as Xe, Send as Ze, SendIcon as Ne, Settings as Qe, SettingsIcon as je, ShareIcon as Je, Shield as Ye, ShieldCheck as _e, ShieldIcon as $e, SparkleIcon as on, Sparkles as en, Star as nn, StarIcon as cn, Stop as rn, StopFilled as an, SuccessIcon as ln, Sun as In, SunIcon as tn, Tag as sn, TagIcon as dn, TargetIcon as hn, Terminal as Cn, TerminalIcon as kn, TextTool as pn, ThumbsDownIcon as un, ThumbsUpIcon as Sn, Timer as gn, Trash as Dn, TrashIcon as Pn, TrendingDown as fn, TrendingUp as mn, Unlock as yn, Upload as Mn, UploadIcon as Tn, User as Fn, UserIcon as Rn, Video as wn, VideoIcon as Ln, Volume as An, VolumeIcon as vn, VolumeOff as Bn, Wand as bn, WarningIcon as xn, WifiIcon as Hn, WifiOffIcon as Un, Workflow as Gn, X as En, XCircle as Vn, Zap as On, ZapIcon as Wn } from "./components/icons/index.js";
|
|
2
|
+
import { ActivityRailIcons as Kn, RailChat as qn, RailDesignTokens as Xn, RailFiles as Zn, RailLaunchpad as Nn, RailNotes as Qn, RailSearch as jn, RailSettings as Jn, RailShowcase as Yn } from "./components/icons/ActivityRailIcons.js";
|
|
3
|
+
import { ActualSize as $n, Clipboard as oc, ExitFullscreen as ec, Fullscreen as nc, Keyboard as cc, Monitor as rc, Scan as ac, SlidersHorizontal as ic, Unplug as lc } from "./components/icons/RemoteControlIcons.js";
|
|
4
|
+
import { DockActivity as tc, DockBot as sc, DockCode as dc, DockCpu as hc, DockFileCode as Cc, DockFolder as kc, DockGlobe as pc, DockLayers as uc, DockLayoutDashboard as Sc, DockMessageSquare as gc, DockRegion as Dc, DockSearch as Pc, DockSparkles as fc, DockTerminal as mc, DockText as yc } from "./components/icons/DockIcons.js";
|
|
4
5
|
export {
|
|
5
6
|
n as Activity,
|
|
6
7
|
c as ActivityIcon,
|
|
7
|
-
Kn as
|
|
8
|
+
Kn as ActivityRailIcons,
|
|
9
|
+
$n as ActualSize,
|
|
8
10
|
r as AlertCircle,
|
|
9
11
|
a as AlertTriangle,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
i as ArchiveIcon,
|
|
13
|
+
l as ArrowDown,
|
|
14
|
+
I as ArrowLeft,
|
|
13
15
|
t as ArrowRight,
|
|
14
16
|
s as ArrowRightLeft,
|
|
15
17
|
d as ArrowUp,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
h as AtSign,
|
|
19
|
+
C as AwardIcon,
|
|
18
20
|
k as BarChart,
|
|
19
21
|
p as BatteryIcon,
|
|
20
22
|
u as Bell,
|
|
@@ -28,18 +30,18 @@ export {
|
|
|
28
30
|
M as CalendarIcon,
|
|
29
31
|
T as Camera,
|
|
30
32
|
F as CameraIcon,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
R as ChartIcon,
|
|
34
|
+
w as Check,
|
|
35
|
+
L as CheckCircle,
|
|
36
|
+
A as CheckIcon,
|
|
37
|
+
v as ChevronDown,
|
|
38
|
+
B as ChevronLeft,
|
|
39
|
+
b as ChevronRight,
|
|
40
|
+
x as ChevronUp,
|
|
41
|
+
H as ChevronsUpDown,
|
|
42
|
+
U as CircleStop,
|
|
43
|
+
oc as Clipboard,
|
|
44
|
+
G as Clock,
|
|
43
45
|
E as ClockIcon,
|
|
44
46
|
V as CloseIcon,
|
|
45
47
|
O as Cloud,
|
|
@@ -49,42 +51,42 @@ export {
|
|
|
49
51
|
q as CompassIcon,
|
|
50
52
|
X as Copy,
|
|
51
53
|
Z as CopyCheck,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
N as CopyCheckIcon,
|
|
55
|
+
Q as CopyIcon,
|
|
56
|
+
j as Cpu,
|
|
57
|
+
J as CreditCardIcon,
|
|
56
58
|
Y as Database,
|
|
57
59
|
_ as DatabaseIcon,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
60
|
+
tc as DockActivity,
|
|
61
|
+
sc as DockBot,
|
|
62
|
+
dc as DockCode,
|
|
63
|
+
hc as DockCpu,
|
|
64
|
+
Cc as DockFileCode,
|
|
65
|
+
kc as DockFolder,
|
|
66
|
+
pc as DockGlobe,
|
|
67
|
+
uc as DockLayers,
|
|
68
|
+
Sc as DockLayoutDashboard,
|
|
69
|
+
gc as DockMessageSquare,
|
|
70
|
+
Dc as DockRegion,
|
|
71
|
+
Pc as DockSearch,
|
|
72
|
+
fc as DockSparkles,
|
|
73
|
+
mc as DockTerminal,
|
|
74
|
+
yc as DockText,
|
|
73
75
|
$ as DollarIcon,
|
|
74
76
|
oo as Download,
|
|
75
77
|
eo as DownloadIcon,
|
|
76
78
|
no as EditIcon,
|
|
77
79
|
co as ErrorIcon,
|
|
78
|
-
|
|
80
|
+
ec as ExitFullscreen,
|
|
79
81
|
ro as ExternalLink,
|
|
80
82
|
ao as Eye,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
io as EyeIcon,
|
|
84
|
+
lo as EyeOff,
|
|
85
|
+
Io as FileCode,
|
|
84
86
|
to as FilePlus,
|
|
85
87
|
so as FilePlusIcon,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
ho as FileText,
|
|
89
|
+
Co as Files,
|
|
88
90
|
ko as Filter,
|
|
89
91
|
po as FilterIcon,
|
|
90
92
|
uo as FireIcon,
|
|
@@ -92,38 +94,38 @@ export {
|
|
|
92
94
|
go as FolderOpen,
|
|
93
95
|
Do as FolderPlus,
|
|
94
96
|
Po as FolderPlusIcon,
|
|
95
|
-
|
|
97
|
+
nc as Fullscreen,
|
|
96
98
|
fo as GiftIcon,
|
|
97
99
|
mo as GitBranch,
|
|
98
100
|
yo as GitBranchIcon,
|
|
99
101
|
Mo as Globe,
|
|
100
102
|
To as GlobeIcon,
|
|
101
103
|
Fo as Grid,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
104
|
+
Ro as Grid3x3,
|
|
105
|
+
wo as GripVertical,
|
|
106
|
+
Lo as Hash,
|
|
107
|
+
Ao as HeadphonesIcon,
|
|
108
|
+
vo as Heart,
|
|
109
|
+
Bo as HeartIcon,
|
|
110
|
+
bo as HelpIcon,
|
|
111
|
+
xo as Highlighter,
|
|
112
|
+
Ho as History,
|
|
113
|
+
Uo as Home,
|
|
114
|
+
Go as HomeIcon,
|
|
113
115
|
Eo as Image,
|
|
114
116
|
Vo as ImageIcon,
|
|
115
117
|
Oo as Info,
|
|
116
118
|
Wo as InfoIcon,
|
|
117
119
|
zo as Key,
|
|
118
120
|
Ko as KeyIcon,
|
|
119
|
-
|
|
121
|
+
cc as Keyboard,
|
|
120
122
|
qo as Layers,
|
|
121
123
|
Xo as LayersIcon,
|
|
122
124
|
Zo as LayoutDashboard,
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
No as Link,
|
|
126
|
+
Qo as LinkIcon,
|
|
127
|
+
jo as Loader2,
|
|
128
|
+
Jo as LoadingIcon,
|
|
127
129
|
Yo as Lock,
|
|
128
130
|
_o as LockIcon,
|
|
129
131
|
$o as MagicIcon,
|
|
@@ -133,15 +135,15 @@ export {
|
|
|
133
135
|
ce as Maximize,
|
|
134
136
|
re as Menu,
|
|
135
137
|
ae as MessageIcon,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
ie as MessageSquare,
|
|
139
|
+
le as Mic,
|
|
140
|
+
Ie as MicIcon,
|
|
139
141
|
te as MicOff,
|
|
140
142
|
se as Minus,
|
|
141
143
|
de as MinusIcon,
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
rc as Monitor,
|
|
145
|
+
he as MonitorPointer,
|
|
146
|
+
Ce as Moon,
|
|
145
147
|
ke as MoonIcon,
|
|
146
148
|
pe as MoreHorizontal,
|
|
147
149
|
ue as MoreVertical,
|
|
@@ -155,48 +157,56 @@ export {
|
|
|
155
157
|
Me as PauseIcon,
|
|
156
158
|
Te as Pencil,
|
|
157
159
|
Fe as Phone,
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
160
|
+
Re as PieChart,
|
|
161
|
+
we as Pin,
|
|
162
|
+
Le as PinIcon,
|
|
163
|
+
Ae as Play,
|
|
164
|
+
ve as PlayIcon,
|
|
165
|
+
Be as Plus,
|
|
166
|
+
be as PlusIcon,
|
|
167
|
+
xe as PowerIcon,
|
|
168
|
+
He as PrinterIcon,
|
|
169
|
+
Ue as Quote,
|
|
170
|
+
qn as RailChat,
|
|
171
|
+
Xn as RailDesignTokens,
|
|
172
|
+
Zn as RailFiles,
|
|
173
|
+
Nn as RailLaunchpad,
|
|
174
|
+
Qn as RailNotes,
|
|
175
|
+
jn as RailSearch,
|
|
176
|
+
Jn as RailSettings,
|
|
177
|
+
Yn as RailShowcase,
|
|
178
|
+
Ge as Refresh,
|
|
169
179
|
Ee as RefreshIcon,
|
|
170
180
|
Ve as Region,
|
|
171
181
|
Oe as Restore,
|
|
172
182
|
We as RocketIcon,
|
|
173
183
|
ze as Save,
|
|
174
184
|
Ke as SaveIcon,
|
|
175
|
-
|
|
185
|
+
ac as Scan,
|
|
176
186
|
qe as Search,
|
|
177
187
|
Xe as SearchIcon,
|
|
178
188
|
Ze as Send,
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
189
|
+
Ne as SendIcon,
|
|
190
|
+
Qe as Settings,
|
|
191
|
+
je as SettingsIcon,
|
|
192
|
+
Je as ShareIcon,
|
|
183
193
|
Ye as Shield,
|
|
184
194
|
_e as ShieldCheck,
|
|
185
195
|
$e as ShieldIcon,
|
|
186
|
-
|
|
196
|
+
ic as SlidersHorizontal,
|
|
187
197
|
on as SparkleIcon,
|
|
188
198
|
en as Sparkles,
|
|
189
199
|
nn as Star,
|
|
190
200
|
cn as StarIcon,
|
|
191
201
|
rn as Stop,
|
|
192
202
|
an as StopFilled,
|
|
193
|
-
|
|
194
|
-
|
|
203
|
+
ln as SuccessIcon,
|
|
204
|
+
In as Sun,
|
|
195
205
|
tn as SunIcon,
|
|
196
206
|
sn as Tag,
|
|
197
207
|
dn as TagIcon,
|
|
198
|
-
|
|
199
|
-
|
|
208
|
+
hn as TargetIcon,
|
|
209
|
+
Cn as Terminal,
|
|
200
210
|
kn as TerminalIcon,
|
|
201
211
|
pn as TextTool,
|
|
202
212
|
un as ThumbsDownIcon,
|
|
@@ -207,21 +217,21 @@ export {
|
|
|
207
217
|
fn as TrendingDown,
|
|
208
218
|
mn as TrendingUp,
|
|
209
219
|
yn as Unlock,
|
|
210
|
-
|
|
220
|
+
lc as Unplug,
|
|
211
221
|
Mn as Upload,
|
|
212
222
|
Tn as UploadIcon,
|
|
213
223
|
Fn as User,
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
224
|
+
Rn as UserIcon,
|
|
225
|
+
wn as Video,
|
|
226
|
+
Ln as VideoIcon,
|
|
227
|
+
An as Volume,
|
|
228
|
+
vn as VolumeIcon,
|
|
229
|
+
Bn as VolumeOff,
|
|
230
|
+
bn as Wand,
|
|
231
|
+
xn as WarningIcon,
|
|
232
|
+
Hn as WifiIcon,
|
|
233
|
+
Un as WifiOffIcon,
|
|
234
|
+
Gn as Workflow,
|
|
225
235
|
En as X,
|
|
226
236
|
Vn as XCircle,
|
|
227
237
|
On as Zap,
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Floe visual language — the single source of truth for planes, ink, state and
|
|
3
|
+
* elevation. Every component recipe derives from this file; nothing here is a
|
|
4
|
+
* component. A theme only supplies the six base colors, and the rest of the
|
|
5
|
+
* ladder is derived from them, so every preset inherits the same system.
|
|
6
|
+
*
|
|
7
|
+
* Four ideas carry the whole language:
|
|
8
|
+
*
|
|
9
|
+
* 1. Depth is a fill step, not a line. Planes separate by a few percent of ink;
|
|
10
|
+
* a hairline appears only where two planes would otherwise land on the same
|
|
11
|
+
* value. Cards therefore carry no border at rest.
|
|
12
|
+
* 2. One state ramp. Hover, press and selection are all percentages of ink —
|
|
13
|
+
* the same three alphas everywhere, so a row, a tab and a menu item respond
|
|
14
|
+
* with one gesture. Brand color never means "hovered".
|
|
15
|
+
* 3. Corners are concentric. A child radius is its parent's radius minus the
|
|
16
|
+
* gap between them, so nested groups never show a mismatched curve.
|
|
17
|
+
* 4. Motion is decisive. Short, decelerating, color-and-transform only.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
:root,
|
|
21
|
+
[data-floe-theme] {
|
|
22
|
+
/* ---------------------------------------------------------------------
|
|
23
|
+
* Planes — four steps of depth. `plane` is the page ground, `surface` is a
|
|
24
|
+
* content plane sitting on it, `well` is recessed into a surface (fields,
|
|
25
|
+
* code, rails, track backgrounds), `float` is lifted above everything with
|
|
26
|
+
* a real shadow. Values are derived so a preset only has to pick its canvas.
|
|
27
|
+
* ------------------------------------------------------------------- */
|
|
28
|
+
--floe-plane: var(--background);
|
|
29
|
+
--floe-plane-raised: var(--card);
|
|
30
|
+
--floe-plane-float: var(--popover);
|
|
31
|
+
--floe-well: color-mix(in srgb, var(--foreground) 4.5%, var(--card));
|
|
32
|
+
--floe-well-strong: color-mix(in srgb, var(--foreground) 7%, var(--card));
|
|
33
|
+
--floe-well-on-plane: color-mix(in srgb, var(--foreground) 4%, var(--background));
|
|
34
|
+
|
|
35
|
+
/* ---------------------------------------------------------------------
|
|
36
|
+
* Ink — a four-step reading ramp. `ink` is body, `ink-soft` secondary copy,
|
|
37
|
+
* `ink-quiet` metadata and icons that sit outside the reading path,
|
|
38
|
+
* `ink-ghost` placeholders and disabled. Never invent a fifth grey.
|
|
39
|
+
* ------------------------------------------------------------------- */
|
|
40
|
+
--floe-ink: var(--foreground);
|
|
41
|
+
--floe-ink-soft: var(--muted-foreground);
|
|
42
|
+
--floe-ink-quiet: color-mix(in srgb, var(--foreground) 62%, var(--background));
|
|
43
|
+
--floe-ink-ghost: color-mix(in srgb, var(--foreground) 44%, var(--background));
|
|
44
|
+
|
|
45
|
+
/* ---------------------------------------------------------------------
|
|
46
|
+
* Hairlines — one width (1px), three strengths. `line` separates equal-value
|
|
47
|
+
* planes, `line-strong` marks an editable boundary that must stay findable,
|
|
48
|
+
* `line-quiet` is a divider inside dense content.
|
|
49
|
+
* ------------------------------------------------------------------- */
|
|
50
|
+
--floe-line: color-mix(in srgb, var(--foreground) 9%, transparent);
|
|
51
|
+
--floe-line-strong: color-mix(in srgb, var(--foreground) 18%, transparent);
|
|
52
|
+
--floe-line-quiet: color-mix(in srgb, var(--foreground) 5.5%, transparent);
|
|
53
|
+
--floe-line-inverse: color-mix(in srgb, var(--primary-foreground) 16%, transparent);
|
|
54
|
+
|
|
55
|
+
/* ---------------------------------------------------------------------
|
|
56
|
+
* Fields — a well with a whisper of an edge. The fill (not a line) says
|
|
57
|
+
* "you can type here"; the edge exists so the well has a boundary at all,
|
|
58
|
+
* and it brightens on hover, then more on focus.
|
|
59
|
+
*
|
|
60
|
+
* The edge is calibrated against the field's own fill, not the card, since
|
|
61
|
+
* that is the pair that decides whether a boundary is visible. 22% ink is
|
|
62
|
+
* the lowest value where every preset lands inside the quiet band this
|
|
63
|
+
* repository already uses for idle fields (1.25–2:1, set for porcelain-dark
|
|
64
|
+
* in b80c3e8): it measures 1.26 at the narrowest (solarized-light) and 1.76
|
|
65
|
+
* at the widest (forest). 16% left ten presets below 1.25, and in the dark
|
|
66
|
+
* presets it collapsed onto the fill entirely.
|
|
67
|
+
*
|
|
68
|
+
* The resting edge is deliberately below the 3:1 of a hit-area boundary:
|
|
69
|
+
* the well fill, the visible label and the field's own text identify the
|
|
70
|
+
* control, and `--ring` carries the 3:1 focus boundary. A labelled text
|
|
71
|
+
* field is what WCAG 1.4.11 excepts; the check that guards this file
|
|
72
|
+
* enforces the band rather than letting the edge disappear.
|
|
73
|
+
* ------------------------------------------------------------------- */
|
|
74
|
+
--floe-field-fill: var(--floe-well);
|
|
75
|
+
--floe-field-fill-hover: var(--floe-well-strong);
|
|
76
|
+
--floe-field-edge: color-mix(in srgb, var(--foreground) 22%, var(--card));
|
|
77
|
+
--floe-field-edge-hover: color-mix(in srgb, var(--foreground) 32%, var(--card));
|
|
78
|
+
--floe-field-placeholder: color-mix(in srgb, var(--foreground) 42%, var(--background));
|
|
79
|
+
/* An unchecked box or switch has no fill of its own, so its boundary *is*
|
|
80
|
+
* the control and must clear 3:1 against every plane it can sit on. */
|
|
81
|
+
--floe-control-edge: color-mix(in srgb, var(--foreground) 50%, var(--card));
|
|
82
|
+
--floe-control-edge-hover: color-mix(in srgb, var(--foreground) 66%, var(--card));
|
|
83
|
+
|
|
84
|
+
/* ---------------------------------------------------------------------
|
|
85
|
+
* State — the only hover/press/selection values in the system. They are
|
|
86
|
+
* translucent so they compose over any plane without a second palette.
|
|
87
|
+
* ------------------------------------------------------------------- */
|
|
88
|
+
--floe-state-hover: color-mix(in srgb, var(--foreground) 5.5%, transparent);
|
|
89
|
+
--floe-state-press: color-mix(in srgb, var(--foreground) 9%, transparent);
|
|
90
|
+
--floe-state-selected: color-mix(in srgb, var(--primary) 8%, transparent);
|
|
91
|
+
--floe-state-selected-strong: color-mix(in srgb, var(--primary) 12%, transparent);
|
|
92
|
+
--floe-state-on-inverse-hover: color-mix(in srgb, var(--primary-foreground) 12%, transparent);
|
|
93
|
+
|
|
94
|
+
/* Accent — jade is the one chromatic voice: focus, selection and positive
|
|
95
|
+
* emphasis. It is never used for a resting surface. */
|
|
96
|
+
--floe-accent-ink: var(--ring);
|
|
97
|
+
--floe-accent-soft: color-mix(in srgb, var(--ring) 12%, transparent);
|
|
98
|
+
--floe-accent-line: color-mix(in srgb, var(--ring) 34%, transparent);
|
|
99
|
+
|
|
100
|
+
/* ---------------------------------------------------------------------
|
|
101
|
+
* Elevation — three steps, used sparingly. Resting cards get `none`; the
|
|
102
|
+
* hairline + fill step already separate them. `raised` is for interactive
|
|
103
|
+
* cards on hover, `float` for popovers, menus, dialogs and windows.
|
|
104
|
+
* ------------------------------------------------------------------- */
|
|
105
|
+
--floe-elevation-raised:
|
|
106
|
+
0 1px 2px -1px color-mix(in srgb, #000 8%, transparent),
|
|
107
|
+
0 1px 1px -0.5px color-mix(in srgb, #000 5%, transparent);
|
|
108
|
+
--floe-elevation-float:
|
|
109
|
+
0 12px 32px -8px color-mix(in srgb, #000 18%, transparent),
|
|
110
|
+
0 4px 10px -4px color-mix(in srgb, #000 10%, transparent),
|
|
111
|
+
0 1px 2px -1px color-mix(in srgb, #000 8%, transparent);
|
|
112
|
+
--floe-elevation-float-strong:
|
|
113
|
+
0 24px 56px -12px color-mix(in srgb, #000 26%, transparent),
|
|
114
|
+
0 8px 20px -8px color-mix(in srgb, #000 14%, transparent),
|
|
115
|
+
0 1px 2px -1px color-mix(in srgb, #000 8%, transparent);
|
|
116
|
+
|
|
117
|
+
/* ---------------------------------------------------------------------
|
|
118
|
+
* Shape — concentric ladder. sm 6 · md 8 · control 10 · group 12 ·
|
|
119
|
+
* card 16 · panel 20 · float 20. A 10px control inside a 16px card with
|
|
120
|
+
* 8px padding lands on 8px, which is md: the curve stays parallel.
|
|
121
|
+
* ------------------------------------------------------------------- */
|
|
122
|
+
--floe-radius-xs: 0.25rem;
|
|
123
|
+
--floe-radius-sm: 0.375rem;
|
|
124
|
+
--floe-radius-md: 0.5rem;
|
|
125
|
+
--floe-radius-control: 0.625rem;
|
|
126
|
+
--floe-radius-field: 0.625rem;
|
|
127
|
+
--floe-radius-group: 0.75rem;
|
|
128
|
+
--floe-radius-card: 1rem;
|
|
129
|
+
--floe-radius-panel: 1.25rem;
|
|
130
|
+
--floe-radius-floating: 1.25rem;
|
|
131
|
+
|
|
132
|
+
/* ---------------------------------------------------------------------
|
|
133
|
+
* Density — one control scale, one row scale. sm 28 · md 32 · lg 36.
|
|
134
|
+
* Rows sit at 30 so a list of rows reads calmer than a toolbar.
|
|
135
|
+
* ------------------------------------------------------------------- */
|
|
136
|
+
--floe-control-height-xs: 1.5rem;
|
|
137
|
+
--floe-control-height-sm: 1.75rem;
|
|
138
|
+
--floe-control-height-md: 2rem;
|
|
139
|
+
--floe-control-height-lg: 2.25rem;
|
|
140
|
+
--floe-control-padding-sm: 0.5rem;
|
|
141
|
+
--floe-control-padding-md: 0.625rem;
|
|
142
|
+
--floe-control-padding-lg: 0.875rem;
|
|
143
|
+
--floe-row-height: 1.875rem;
|
|
144
|
+
--floe-row-height-compact: 1.625rem;
|
|
145
|
+
|
|
146
|
+
/* ---------------------------------------------------------------------
|
|
147
|
+
* Box rhythm — five paddings and three gaps. A control pad keeps a 10px
|
|
148
|
+
* radius concentric inside a 12px group; a card pad is the gutter that
|
|
149
|
+
* makes a plane read as an object rather than a rectangle.
|
|
150
|
+
* ------------------------------------------------------------------- */
|
|
151
|
+
--floe-pad-tight: 0.375rem;
|
|
152
|
+
--floe-pad-control: 0.5rem;
|
|
153
|
+
--floe-pad-group: 0.75rem;
|
|
154
|
+
--floe-pad-card: 0.875rem;
|
|
155
|
+
--floe-pad-panel: 1rem;
|
|
156
|
+
--floe-gap-inline: 0.25rem;
|
|
157
|
+
--floe-gap-control: 0.375rem;
|
|
158
|
+
--floe-gap-group: 0.75rem;
|
|
159
|
+
--floe-gap-section: 1.25rem;
|
|
160
|
+
|
|
161
|
+
/* ---------------------------------------------------------------------
|
|
162
|
+
* Type — 11 caption · 12 supporting · 13 control and body · 16 heading.
|
|
163
|
+
* One step per role; no component picks its own size.
|
|
164
|
+
* ------------------------------------------------------------------- */
|
|
165
|
+
--floe-type-caption: 0.6875rem;
|
|
166
|
+
--floe-type-supporting: 0.75rem;
|
|
167
|
+
--floe-type-control: 0.8125rem;
|
|
168
|
+
--floe-type-body: 0.8125rem;
|
|
169
|
+
--floe-type-heading: 1rem;
|
|
170
|
+
--floe-type-heading-sm: 0.9375rem;
|
|
171
|
+
--floe-type-display: 1.375rem;
|
|
172
|
+
/* Below caption. Only decorative chips that must fit inside an 8-10px
|
|
173
|
+
* badge belong here — never running text, metadata or a control label. */
|
|
174
|
+
--floe-type-micro: 0.5rem;
|
|
175
|
+
--floe-type-nano: 0.4375rem;
|
|
176
|
+
--floe-line-caption: 0.9375rem;
|
|
177
|
+
--floe-line-control: 1.25rem;
|
|
178
|
+
--floe-line-body: 1.375rem;
|
|
179
|
+
--floe-line-heading: 1.375rem;
|
|
180
|
+
|
|
181
|
+
/* ---------------------------------------------------------------------
|
|
182
|
+
* Motion — one decelerating curve and one settle curve. Nothing bounces
|
|
183
|
+
* except a deliberate spring for a control that changes shape.
|
|
184
|
+
* ------------------------------------------------------------------- */
|
|
185
|
+
--floe-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
186
|
+
--floe-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
|
187
|
+
--floe-ease-spring: cubic-bezier(0.34, 1.35, 0.64, 1);
|
|
188
|
+
--floe-duration-instant: 90ms;
|
|
189
|
+
--floe-duration-fast: 140ms;
|
|
190
|
+
--floe-duration-base: 200ms;
|
|
191
|
+
--floe-duration-slow: 280ms;
|
|
192
|
+
--floe-duration-float: 240ms;
|
|
193
|
+
--floe-hover-lift: -1px;
|
|
194
|
+
--floe-press-scale: 0.985;
|
|
195
|
+
--floe-hover-lift-strong: -2px;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/*
|
|
199
|
+
* The interaction primitives. Components compose these instead of writing
|
|
200
|
+
* their own hover recipes, which is what kept the old set inconsistent.
|
|
201
|
+
*/
|
|
202
|
+
|
|
203
|
+
/* Every interactive surface moves through the same transition set. */
|
|
204
|
+
[data-floe-interactive] {
|
|
205
|
+
transition:
|
|
206
|
+
background-color var(--floe-duration-fast) var(--floe-ease-out),
|
|
207
|
+
border-color var(--floe-duration-fast) var(--floe-ease-out),
|
|
208
|
+
color var(--floe-duration-fast) var(--floe-ease-out),
|
|
209
|
+
box-shadow var(--floe-duration-base) var(--floe-ease-out),
|
|
210
|
+
transform var(--floe-duration-fast) var(--floe-ease-out);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* Rows, tabs, menu items: fill is transparent, so the state layer composes
|
|
214
|
+
* over whatever plane hosts them. A control that declares a surface part owns
|
|
215
|
+
* its own face (surface.css) and keeps the state layer off its fill, so a
|
|
216
|
+
* selected tab is not repainted by the generic selection tint. */
|
|
217
|
+
[data-floe-interactive]:where(
|
|
218
|
+
[data-floe-interactive='row'],
|
|
219
|
+
[data-floe-interactive='item']
|
|
220
|
+
):not([data-floe-surface-part]):hover {
|
|
221
|
+
background-color: var(--floe-state-hover);
|
|
222
|
+
color: var(--floe-ink);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
[data-floe-interactive]:where(
|
|
226
|
+
[data-floe-interactive='row'],
|
|
227
|
+
[data-floe-interactive='item']
|
|
228
|
+
):not([data-floe-surface-part]):active {
|
|
229
|
+
background-color: var(--floe-state-press);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
[data-floe-interactive]:not([data-floe-surface-part]):where(
|
|
233
|
+
[aria-selected='true'],
|
|
234
|
+
[data-selected='true']
|
|
235
|
+
) {
|
|
236
|
+
background-color: var(--floe-state-selected);
|
|
237
|
+
color: var(--floe-ink);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Icon buttons rise a single step of ink on hover, in addition to the fill. */
|
|
241
|
+
[data-floe-interactive='icon']:hover {
|
|
242
|
+
color: var(--floe-ink);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* Pressible controls settle rather than travel. */
|
|
246
|
+
[data-floe-interactive='press']:active {
|
|
247
|
+
transform: scale(var(--floe-press-scale));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Clickable planes rise one step and take the first elevation. A card is not a
|
|
251
|
+
* control: it travels instead of settling, and the shadow says it detached from
|
|
252
|
+
* the canvas rather than competing with the fill step. */
|
|
253
|
+
[data-floe-interactive='lift']:hover {
|
|
254
|
+
transform: translateY(var(--floe-hover-lift));
|
|
255
|
+
box-shadow: var(--floe-elevation-raised);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/*
|
|
259
|
+
* The field surface. One recipe for every editable boundary — text inputs,
|
|
260
|
+
* textareas, compound number/select fields, dropdown triggers and directory
|
|
261
|
+
* pickers — so a form never mixes two field looks. It is a filled well with a
|
|
262
|
+
* whisper edge, not a box: the fill carries the affordance, the edge only
|
|
263
|
+
* gives the well an end, and focus brightens the edge (see input-focus.css,
|
|
264
|
+
* which owns the color-only focus contract).
|
|
265
|
+
*/
|
|
266
|
+
@layer components {
|
|
267
|
+
.floe-field {
|
|
268
|
+
border: 1px solid var(--floe-field-edge);
|
|
269
|
+
border-radius: var(--floe-radius-field);
|
|
270
|
+
background-color: var(--floe-field-fill);
|
|
271
|
+
color: var(--floe-ink);
|
|
272
|
+
transition:
|
|
273
|
+
background-color var(--floe-duration-fast) var(--floe-ease-out),
|
|
274
|
+
border-color var(--floe-duration-fast) var(--floe-ease-out);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.floe-field:hover:not(:disabled):not([aria-disabled='true']) {
|
|
278
|
+
border-color: var(--floe-field-edge-hover);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.floe-field::placeholder {
|
|
282
|
+
color: var(--floe-field-placeholder);
|
|
283
|
+
opacity: 1;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.floe-field[aria-invalid='true'] {
|
|
287
|
+
border-color: color-mix(in srgb, var(--error) 62%, var(--card));
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.floe-field:disabled,
|
|
291
|
+
.floe-field[aria-disabled='true'] {
|
|
292
|
+
background-color: var(--floe-plane);
|
|
293
|
+
border-color: var(--floe-line);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
@media (prefers-reduced-motion: reduce) {
|
|
298
|
+
[data-floe-interactive] {
|
|
299
|
+
transition-duration: 1ms;
|
|
300
|
+
}
|
|
301
|
+
[data-floe-interactive='press']:active {
|
|
302
|
+
transform: none;
|
|
303
|
+
}
|
|
304
|
+
[data-floe-interactive='lift']:hover {
|
|
305
|
+
transform: none;
|
|
306
|
+
box-shadow: none;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
@media (forced-colors: active) {
|
|
311
|
+
:root,
|
|
312
|
+
[data-floe-theme] {
|
|
313
|
+
--floe-line: CanvasText;
|
|
314
|
+
--floe-line-strong: CanvasText;
|
|
315
|
+
--floe-state-hover: Highlight;
|
|
316
|
+
--floe-state-selected: Highlight;
|
|
317
|
+
--floe-elevation-float: none;
|
|
318
|
+
--floe-elevation-float-strong: none;
|
|
319
|
+
}
|
|
320
|
+
}
|