@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.
Files changed (122) hide show
  1. package/dist/app/FloeRegistryContributions.js +0 -3
  2. package/dist/components/chat/blocks/BlockRenderer.js +1 -1
  3. package/dist/components/chat/blocks/CodeDiffBlock.js +56 -56
  4. package/dist/components/chat/blocks/ImageBlock.js +1 -1
  5. package/dist/components/chat/blocks/ToolCallBlock.js +57 -57
  6. package/dist/components/chat/status/ConnectionStatus.js +10 -10
  7. package/dist/components/deck/DeckCell.js +25 -25
  8. package/dist/components/deck/DeckContextMenu.js +20 -20
  9. package/dist/components/deck/DeckGrid.js +1 -1
  10. package/dist/components/deck/DeckTopBar.js +42 -42
  11. package/dist/components/deck/DropZonePreview.js +6 -6
  12. package/dist/components/deck/LayoutSelector.js +53 -53
  13. package/dist/components/deck/WidgetFrame.js +28 -28
  14. package/dist/components/deck/WidgetPalette.js +31 -31
  15. package/dist/components/deck/WidgetTypeSwitcher.js +31 -31
  16. package/dist/components/file-browser/Breadcrumb.js +27 -27
  17. package/dist/components/file-browser/DirectoryTree.js +15 -15
  18. package/dist/components/file-browser/DragPreview.js +58 -58
  19. package/dist/components/file-browser/FileBrowser.js +17 -17
  20. package/dist/components/file-browser/FileBrowserStatusBar.js +18 -18
  21. package/dist/components/file-browser/FileBrowserToolbar.js +27 -27
  22. package/dist/components/file-browser/FileContextMenu.js +47 -47
  23. package/dist/components/file-browser/FileGridView.js +53 -51
  24. package/dist/components/file-browser/FileItemDecorations.js +30 -27
  25. package/dist/components/file-browser/FileListView.js +114 -114
  26. package/dist/components/icons/ActivityRailIcons.d.ts +30 -0
  27. package/dist/components/icons/ActivityRailIcons.js +68 -0
  28. package/dist/components/icons/index.d.ts +1 -0
  29. package/dist/components/icons/index.js +1357 -1357
  30. package/dist/components/launchpad/Launchpad.js +14 -14
  31. package/dist/components/launchpad/LaunchpadGrid.js +7 -7
  32. package/dist/components/launchpad/LaunchpadItem.js +11 -11
  33. package/dist/components/launchpad/LaunchpadPagination.js +16 -16
  34. package/dist/components/launchpad/LaunchpadSearch.js +9 -9
  35. package/dist/components/layout/ActivityBar.js +61 -63
  36. package/dist/components/layout/DisplayModeSwitcher.d.ts +10 -0
  37. package/dist/components/layout/DisplayModeSwitcher.js +102 -33
  38. package/dist/components/layout/MobileNavigationPanel.js +36 -36
  39. package/dist/components/layout/MobileTabBar.js +39 -39
  40. package/dist/components/layout/Panel.js +16 -16
  41. package/dist/components/layout/ResizeHandle.js +19 -19
  42. package/dist/components/layout/Shell.d.ts +0 -6
  43. package/dist/components/layout/Shell.js +208 -254
  44. package/dist/components/layout/Sidebar.js +37 -36
  45. package/dist/components/layout/SidebarPane.js +19 -19
  46. package/dist/components/layout/ThemeToggle.d.ts +19 -0
  47. package/dist/components/layout/ThemeToggle.js +39 -0
  48. package/dist/components/layout/TopBar.js +16 -16
  49. package/dist/components/layout/TopBarIconButton.js +15 -15
  50. package/dist/components/layout/index.d.ts +1 -1
  51. package/dist/components/loading/LoadingOverlay.js +9 -9
  52. package/dist/components/loading/Skeleton.js +11 -11
  53. package/dist/components/ui/Button.js +44 -36
  54. package/dist/components/ui/Card.d.ts +11 -62
  55. package/dist/components/ui/Card.js +64 -237
  56. package/dist/components/ui/Checkbox.js +79 -79
  57. package/dist/components/ui/CommandPalette.js +56 -55
  58. package/dist/components/ui/Dialog.js +91 -93
  59. package/dist/components/ui/DirectoryInput.js +22 -22
  60. package/dist/components/ui/DirectoryPicker.js +8 -8
  61. package/dist/components/ui/Dropdown.js +89 -87
  62. package/dist/components/ui/FeedbackIndicator.js +57 -57
  63. package/dist/components/ui/FileOpenPicker.js +37 -37
  64. package/dist/components/ui/FileSavePicker.js +41 -41
  65. package/dist/components/ui/FloatingWindow.js +213 -205
  66. package/dist/components/ui/Form.js +76 -76
  67. package/dist/components/ui/HighlightBlock.js +14 -14
  68. package/dist/components/ui/Input.js +106 -109
  69. package/dist/components/ui/Pagination.js +86 -86
  70. package/dist/components/ui/Popover.d.ts +33 -0
  71. package/dist/components/ui/Popover.js +133 -0
  72. package/dist/components/ui/ProcessingIndicator.js +344 -345
  73. package/dist/components/ui/Progress.js +94 -97
  74. package/dist/components/ui/QuoteBlock.js +25 -25
  75. package/dist/components/ui/Radio.js +91 -91
  76. package/dist/components/ui/SegmentedControl.js +24 -24
  77. package/dist/components/ui/Stepper.js +68 -60
  78. package/dist/components/ui/Switch.js +25 -25
  79. package/dist/components/ui/Tabs.js +188 -163
  80. package/dist/components/ui/Tag.js +12 -9
  81. package/dist/components/ui/Tooltip.js +30 -30
  82. package/dist/components/ui/floatingPresence.d.ts +7 -0
  83. package/dist/components/ui/floatingPresence.js +80 -39
  84. package/dist/components/ui/index.d.ts +2 -1
  85. package/dist/components/ui/picker/DirectoryFavorites.js +27 -27
  86. package/dist/components/ui/picker/PickerBase.js +107 -107
  87. package/dist/context/ComponentRegistry.d.ts +0 -8
  88. package/dist/context/ComponentRegistry.js +61 -67
  89. package/dist/context/FloeConfigContext.d.ts +0 -6
  90. package/dist/context/FloeConfigContext.js +9 -15
  91. package/dist/context/NotificationContext.js +4 -4
  92. package/dist/context/ThemeContext.js +71 -70
  93. package/dist/context/index.d.ts +1 -1
  94. package/dist/display-mode.css +2 -45
  95. package/dist/floe.css +205 -43
  96. package/dist/full.js +701 -695
  97. package/dist/icons.js +112 -102
  98. package/dist/language.css +320 -0
  99. package/dist/layout.js +33 -35
  100. package/dist/primitives.css +23 -17
  101. package/dist/standalone.css +1 -0
  102. package/dist/styles/themes/classicSemanticTokens.d.ts +122 -122
  103. package/dist/styles/themes/classicSemanticTokens.js +140 -138
  104. package/dist/styles/themes/index.d.ts +3 -1
  105. package/dist/styles/themes/index.js +10 -10
  106. package/dist/styles/themes/presets.d.ts +2 -2
  107. package/dist/styles/themes/presets.js +34 -34
  108. package/dist/styles/tokens.d.ts +152 -68
  109. package/dist/styles/tokens.js +87 -49
  110. package/dist/styles.css +1 -1
  111. package/dist/surface.css +214 -117
  112. package/dist/themes/dark.css +64 -64
  113. package/dist/themes/light.css +64 -64
  114. package/dist/ui.css +171 -255
  115. package/dist/ui.js +176 -178
  116. package/dist/utils/hotInteraction.d.ts +7 -0
  117. package/dist/utils/hotInteraction.js +12 -12
  118. package/dist/widgets/TerminalWidget.js +28 -28
  119. package/dist/workbench-composition.css +15 -15
  120. package/package.json +1 -1
  121. package/dist/components/layout/BottomBar.d.ts +0 -29
  122. 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 I, ArrowDown as i, ArrowLeft as l, ArrowRight as t, ArrowRightLeft as s, ArrowUp as d, AtSign as C, AwardIcon as h, 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 w, Check as L, CheckCircle as A, CheckIcon as B, ChevronDown as b, ChevronLeft as v, ChevronRight as H, ChevronUp as U, ChevronsUpDown as x, CircleStop as G, Clock as R, 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 Q, CopyIcon as j, Cpu as J, CreditCardIcon as N, 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 io, FileCode as lo, FilePlus as to, FilePlusIcon as so, FileText as Co, Files as ho, 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 wo, GripVertical as Lo, Hash as Ao, HeadphonesIcon as Bo, Heart as bo, HeartIcon as vo, HelpIcon as Ho, Highlighter as Uo, History as xo, Home as Go, HomeIcon as Ro, 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 Qo, LinkIcon as jo, Loader2 as Jo, LoadingIcon as No, 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 ie, MicIcon as le, MicOff as te, Minus as se, MinusIcon as de, MonitorPointer as Ce, Moon as he, 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 we, Pin as Le, PinIcon as Ae, Play as Be, PlayIcon as be, Plus as ve, PlusIcon as He, PowerIcon as Ue, PrinterIcon as xe, Quote as Ge, Refresh as Re, 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 Qe, Settings as je, SettingsIcon as Je, ShareIcon as Ne, 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 In, Sun as ln, SunIcon as tn, Tag as sn, TagIcon as dn, TargetIcon as Cn, Terminal as hn, 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 wn, Video as Ln, VideoIcon as An, Volume as Bn, VolumeIcon as bn, VolumeOff as vn, Wand as Hn, WarningIcon as Un, WifiIcon as xn, WifiOffIcon as Gn, Workflow as Rn, X as En, XCircle as Vn, Zap as On, ZapIcon as Wn } from "./components/icons/index.js";
2
- import { ActualSize as Kn, Clipboard as qn, ExitFullscreen as Xn, Fullscreen as Zn, Keyboard as Qn, Monitor as jn, Scan as Jn, SlidersHorizontal as Nn, Unplug as Yn } from "./components/icons/RemoteControlIcons.js";
3
- import { DockActivity as $n, DockBot as oc, DockCode as ec, DockCpu as nc, DockFileCode as cc, DockFolder as rc, DockGlobe as ac, DockLayers as Ic, DockLayoutDashboard as ic, DockMessageSquare as lc, DockRegion as tc, DockSearch as sc, DockSparkles as dc, DockTerminal as Cc, DockText as hc } from "./components/icons/DockIcons.js";
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 ActualSize,
8
+ Kn as ActivityRailIcons,
9
+ $n as ActualSize,
8
10
  r as AlertCircle,
9
11
  a as AlertTriangle,
10
- I as ArchiveIcon,
11
- i as ArrowDown,
12
- l as ArrowLeft,
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
- C as AtSign,
17
- h as AwardIcon,
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
- w as ChartIcon,
32
- L as Check,
33
- A as CheckCircle,
34
- B as CheckIcon,
35
- b as ChevronDown,
36
- v as ChevronLeft,
37
- H as ChevronRight,
38
- U as ChevronUp,
39
- x as ChevronsUpDown,
40
- G as CircleStop,
41
- qn as Clipboard,
42
- R as Clock,
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
- Q as CopyCheckIcon,
53
- j as CopyIcon,
54
- J as Cpu,
55
- N as CreditCardIcon,
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
- $n as DockActivity,
59
- oc as DockBot,
60
- ec as DockCode,
61
- nc as DockCpu,
62
- cc as DockFileCode,
63
- rc as DockFolder,
64
- ac as DockGlobe,
65
- Ic as DockLayers,
66
- ic as DockLayoutDashboard,
67
- lc as DockMessageSquare,
68
- tc as DockRegion,
69
- sc as DockSearch,
70
- dc as DockSparkles,
71
- Cc as DockTerminal,
72
- hc as DockText,
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
- Xn as ExitFullscreen,
80
+ ec as ExitFullscreen,
79
81
  ro as ExternalLink,
80
82
  ao as Eye,
81
- Io as EyeIcon,
82
- io as EyeOff,
83
- lo as FileCode,
83
+ io as EyeIcon,
84
+ lo as EyeOff,
85
+ Io as FileCode,
84
86
  to as FilePlus,
85
87
  so as FilePlusIcon,
86
- Co as FileText,
87
- ho as Files,
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
- Zn as Fullscreen,
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
- wo as Grid3x3,
103
- Lo as GripVertical,
104
- Ao as Hash,
105
- Bo as HeadphonesIcon,
106
- bo as Heart,
107
- vo as HeartIcon,
108
- Ho as HelpIcon,
109
- Uo as Highlighter,
110
- xo as History,
111
- Go as Home,
112
- Ro as HomeIcon,
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
- Qn as Keyboard,
121
+ cc as Keyboard,
120
122
  qo as Layers,
121
123
  Xo as LayersIcon,
122
124
  Zo as LayoutDashboard,
123
- Qo as Link,
124
- jo as LinkIcon,
125
- Jo as Loader2,
126
- No as LoadingIcon,
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
- Ie as MessageSquare,
137
- ie as Mic,
138
- le as MicIcon,
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
- jn as Monitor,
143
- Ce as MonitorPointer,
144
- he as Moon,
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
- we as PieChart,
159
- Le as Pin,
160
- Ae as PinIcon,
161
- Be as Play,
162
- be as PlayIcon,
163
- ve as Plus,
164
- He as PlusIcon,
165
- Ue as PowerIcon,
166
- xe as PrinterIcon,
167
- Ge as Quote,
168
- Re as Refresh,
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
- Jn as Scan,
185
+ ac as Scan,
176
186
  qe as Search,
177
187
  Xe as SearchIcon,
178
188
  Ze as Send,
179
- Qe as SendIcon,
180
- je as Settings,
181
- Je as SettingsIcon,
182
- Ne as ShareIcon,
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
- Nn as SlidersHorizontal,
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
- In as SuccessIcon,
194
- ln as Sun,
203
+ ln as SuccessIcon,
204
+ In as Sun,
195
205
  tn as SunIcon,
196
206
  sn as Tag,
197
207
  dn as TagIcon,
198
- Cn as TargetIcon,
199
- hn as Terminal,
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
- Yn as Unplug,
220
+ lc as Unplug,
211
221
  Mn as Upload,
212
222
  Tn as UploadIcon,
213
223
  Fn as User,
214
- wn as UserIcon,
215
- Ln as Video,
216
- An as VideoIcon,
217
- Bn as Volume,
218
- bn as VolumeIcon,
219
- vn as VolumeOff,
220
- Hn as Wand,
221
- Un as WarningIcon,
222
- xn as WifiIcon,
223
- Gn as WifiOffIcon,
224
- Rn as Workflow,
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
+ }