@adea-ai/ui 0.142.3 → 0.143.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/components/composites/accent-picker/accent-picker.d.ts +28 -0
  2. package/dist/components/composites/accent-picker/accent-picker.d.ts.map +1 -0
  3. package/dist/components/composites/accent-picker/accent-picker.js +97 -0
  4. package/dist/components/composites/accent-picker/accent-picker.js.map +1 -0
  5. package/dist/components/composites/accent-picker/index.d.ts +2 -0
  6. package/dist/components/composites/accent-picker/index.d.ts.map +1 -0
  7. package/dist/components/composites/accent-picker/index.js +2 -0
  8. package/dist/components/composites/icon-picker/icon-picker.d.ts +37 -0
  9. package/dist/components/composites/icon-picker/icon-picker.d.ts.map +1 -0
  10. package/dist/components/composites/icon-picker/icon-picker.js +187 -0
  11. package/dist/components/composites/icon-picker/icon-picker.js.map +1 -0
  12. package/dist/components/composites/icon-picker/image-data-url.d.ts +42 -0
  13. package/dist/components/composites/icon-picker/image-data-url.d.ts.map +1 -0
  14. package/dist/components/composites/icon-picker/image-data-url.js +90 -0
  15. package/dist/components/composites/icon-picker/image-data-url.js.map +1 -0
  16. package/dist/components/composites/icon-picker/index.d.ts +4 -0
  17. package/dist/components/composites/icon-picker/index.d.ts.map +1 -0
  18. package/dist/components/composites/icon-picker/index.js +4 -0
  19. package/dist/components/composites/icon-picker/shell-icons.d.ts +264 -0
  20. package/dist/components/composites/icon-picker/shell-icons.d.ts.map +1 -0
  21. package/dist/components/composites/icon-picker/shell-icons.js +334 -0
  22. package/dist/components/composites/icon-picker/shell-icons.js.map +1 -0
  23. package/dist/components/composites/terminal/terminal.js +2 -2
  24. package/dist/components/composites/terminal/terminal.js.map +1 -1
  25. package/dist/components/composites/workspace-switcher/index.d.ts +2 -0
  26. package/dist/components/composites/workspace-switcher/index.d.ts.map +1 -0
  27. package/dist/components/composites/workspace-switcher/index.js +2 -0
  28. package/dist/components/composites/workspace-switcher/workspace-switcher.d.ts +44 -0
  29. package/dist/components/composites/workspace-switcher/workspace-switcher.d.ts.map +1 -0
  30. package/dist/components/composites/workspace-switcher/workspace-switcher.js +157 -0
  31. package/dist/components/composites/workspace-switcher/workspace-switcher.js.map +1 -0
  32. package/dist/components/layout/shell-rail/index.d.ts +2 -0
  33. package/dist/components/layout/shell-rail/index.d.ts.map +1 -0
  34. package/dist/components/layout/shell-rail/index.js +2 -0
  35. package/dist/components/layout/shell-rail/shell-rail.d.ts +36 -0
  36. package/dist/components/layout/shell-rail/shell-rail.d.ts.map +1 -0
  37. package/dist/components/layout/shell-rail/shell-rail.js +124 -0
  38. package/dist/components/layout/shell-rail/shell-rail.js.map +1 -0
  39. package/dist/components/layout/shell-top-bar/index.d.ts +2 -0
  40. package/dist/components/layout/shell-top-bar/index.d.ts.map +1 -0
  41. package/dist/components/layout/shell-top-bar/index.js +2 -0
  42. package/dist/components/layout/shell-top-bar/shell-top-bar.d.ts +68 -0
  43. package/dist/components/layout/shell-top-bar/shell-top-bar.d.ts.map +1 -0
  44. package/dist/components/layout/shell-top-bar/shell-top-bar.js +135 -0
  45. package/dist/components/layout/shell-top-bar/shell-top-bar.js.map +1 -0
  46. package/dist/components/layout/top-bar/top-bar.d.ts +21 -6
  47. package/dist/components/layout/top-bar/top-bar.d.ts.map +1 -1
  48. package/dist/components/layout/top-bar/top-bar.js +2 -2
  49. package/dist/components/layout/top-bar/top-bar.js.map +1 -1
  50. package/dist/index.d.ts +5 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +8 -1
  53. package/dist/r/accent-picker.json +25 -0
  54. package/dist/r/icon-picker.json +36 -0
  55. package/dist/r/registry.json +137 -0
  56. package/dist/r/shell-rail.json +27 -0
  57. package/dist/r/shell-top-bar.json +23 -0
  58. package/dist/r/src/components/composites/accent-picker/accent-picker.tsx +85 -0
  59. package/dist/r/src/components/composites/accent-picker/index.ts +1 -0
  60. package/dist/r/src/components/composites/icon-picker/icon-picker.tsx +184 -0
  61. package/dist/r/src/components/composites/icon-picker/image-data-url.ts +107 -0
  62. package/dist/r/src/components/composites/icon-picker/index.ts +20 -0
  63. package/dist/r/src/components/composites/icon-picker/shell-icons.ts +166 -0
  64. package/dist/r/src/components/composites/workspace-switcher/index.ts +5 -0
  65. package/dist/r/src/components/composites/workspace-switcher/workspace-switcher.tsx +128 -0
  66. package/dist/r/src/components/layout/shell-rail/index.ts +1 -0
  67. package/dist/r/src/components/layout/shell-rail/shell-rail.tsx +120 -0
  68. package/dist/r/src/components/layout/shell-top-bar/index.ts +1 -0
  69. package/dist/r/src/components/layout/shell-top-bar/shell-top-bar.tsx +185 -0
  70. package/dist/r/src/components/layout/top-bar/top-bar.tsx +27 -8
  71. package/dist/r/workspace-switcher.json +26 -0
  72. package/package.json +1 -1
  73. package/registry.json +137 -0
  74. package/src/components/composites/accent-picker/accent-picker.tsx +85 -0
  75. package/src/components/composites/accent-picker/index.ts +1 -0
  76. package/src/components/composites/icon-picker/icon-picker.tsx +184 -0
  77. package/src/components/composites/icon-picker/image-data-url.ts +107 -0
  78. package/src/components/composites/icon-picker/index.ts +20 -0
  79. package/src/components/composites/icon-picker/shell-icons.ts +166 -0
  80. package/src/components/composites/workspace-switcher/index.ts +5 -0
  81. package/src/components/composites/workspace-switcher/workspace-switcher.tsx +128 -0
  82. package/src/components/layout/shell-rail/index.ts +1 -0
  83. package/src/components/layout/shell-rail/shell-rail.tsx +120 -0
  84. package/src/components/layout/shell-top-bar/index.ts +1 -0
  85. package/src/components/layout/shell-top-bar/shell-top-bar.tsx +185 -0
  86. package/src/components/layout/top-bar/top-bar.tsx +27 -8
  87. package/src/index.ts +5 -0
@@ -0,0 +1,264 @@
1
+ import { type LucideIcon } from 'lucide-solid';
2
+ /**
3
+ * The icons a workspace or a project may choose for itself.
4
+ *
5
+ * A curated set rather than the whole Lucide catalogue, for two reasons the
6
+ * picker depends on: the keys are persisted, so each one is a promise that the
7
+ * glyph keeps existing, and every icon here is imported by name so a consumer's
8
+ * bundle pays for these few dozen glyphs and not for the library.
9
+ *
10
+ * `home`, `box` and `folder` lead the list because they are the defaults the
11
+ * apps already use: Home workspaces carry `home`, other workspaces `box` and
12
+ * projects `folder`. Keys are lowercase kebab-case so they are valid project
13
+ * `iconKey`s as well as workspace logo values.
14
+ */
15
+ export declare const shellIconEntries: readonly [{
16
+ readonly key: 'home';
17
+ readonly label: 'Home';
18
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
19
+ }, {
20
+ readonly key: 'box';
21
+ readonly label: 'Box';
22
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
23
+ }, {
24
+ readonly key: 'folder';
25
+ readonly label: 'Folder';
26
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
27
+ }, {
28
+ readonly key: 'git-folder';
29
+ readonly label: 'Repository';
30
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
31
+ }, {
32
+ readonly key: 'briefcase';
33
+ readonly label: 'Briefcase';
34
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
35
+ }, {
36
+ readonly key: 'building';
37
+ readonly label: 'Building';
38
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
39
+ }, {
40
+ readonly key: 'users';
41
+ readonly label: 'Team';
42
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
43
+ }, {
44
+ readonly key: 'rocket';
45
+ readonly label: 'Rocket';
46
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
47
+ }, {
48
+ readonly key: 'star';
49
+ readonly label: 'Star';
50
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
51
+ }, {
52
+ readonly key: 'heart';
53
+ readonly label: 'Heart';
54
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
55
+ }, {
56
+ readonly key: 'code';
57
+ readonly label: 'Code';
58
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
59
+ }, {
60
+ readonly key: 'terminal';
61
+ readonly label: 'Terminal';
62
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
63
+ }, {
64
+ readonly key: 'cpu';
65
+ readonly label: 'Chip';
66
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
67
+ }, {
68
+ readonly key: 'server';
69
+ readonly label: 'Server';
70
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
71
+ }, {
72
+ readonly key: 'database';
73
+ readonly label: 'Database';
74
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
75
+ }, {
76
+ readonly key: 'cloud';
77
+ readonly label: 'Cloud';
78
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
79
+ }, {
80
+ readonly key: 'globe';
81
+ readonly label: 'Globe';
82
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
83
+ }, {
84
+ readonly key: 'bot';
85
+ readonly label: 'Agent';
86
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
87
+ }, {
88
+ readonly key: 'brain';
89
+ readonly label: 'Brain';
90
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
91
+ }, {
92
+ readonly key: 'sparkles';
93
+ readonly label: 'Sparkles';
94
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
95
+ }, {
96
+ readonly key: 'lightbulb';
97
+ readonly label: 'Idea';
98
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
99
+ }, {
100
+ readonly key: 'flask';
101
+ readonly label: 'Lab';
102
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
103
+ }, {
104
+ readonly key: 'book';
105
+ readonly label: 'Book';
106
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
107
+ }, {
108
+ readonly key: 'graduation';
109
+ readonly label: 'Study';
110
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
111
+ }, {
112
+ readonly key: 'newspaper';
113
+ readonly label: 'News';
114
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
115
+ }, {
116
+ readonly key: 'megaphone';
117
+ readonly label: 'Marketing';
118
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
119
+ }, {
120
+ readonly key: 'chart';
121
+ readonly label: 'Chart';
122
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
123
+ }, {
124
+ readonly key: 'wallet';
125
+ readonly label: 'Finance';
126
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
127
+ }, {
128
+ readonly key: 'cart';
129
+ readonly label: 'Shop';
130
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
131
+ }, {
132
+ readonly key: 'package';
133
+ readonly label: 'Package';
134
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
135
+ }, {
136
+ readonly key: 'layers';
137
+ readonly label: 'Layers';
138
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
139
+ }, {
140
+ readonly key: 'puzzle';
141
+ readonly label: 'Puzzle';
142
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
143
+ }, {
144
+ readonly key: 'shield';
145
+ readonly label: 'Security';
146
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
147
+ }, {
148
+ readonly key: 'key';
149
+ readonly label: 'Key';
150
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
151
+ }, {
152
+ readonly key: 'wrench';
153
+ readonly label: 'Tools';
154
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
155
+ }, {
156
+ readonly key: 'hammer';
157
+ readonly label: 'Build';
158
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
159
+ }, {
160
+ readonly key: 'zap';
161
+ readonly label: 'Bolt';
162
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
163
+ }, {
164
+ readonly key: 'flame';
165
+ readonly label: 'Flame';
166
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
167
+ }, {
168
+ readonly key: 'target';
169
+ readonly label: 'Target';
170
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
171
+ }, {
172
+ readonly key: 'trophy';
173
+ readonly label: 'Trophy';
174
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
175
+ }, {
176
+ readonly key: 'flag';
177
+ readonly label: 'Flag';
178
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
179
+ }, {
180
+ readonly key: 'compass';
181
+ readonly label: 'Compass';
182
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
183
+ }, {
184
+ readonly key: 'map';
185
+ readonly label: 'Map';
186
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
187
+ }, {
188
+ readonly key: 'plane';
189
+ readonly label: 'Travel';
190
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
191
+ }, {
192
+ readonly key: 'anchor';
193
+ readonly label: 'Anchor';
194
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
195
+ }, {
196
+ readonly key: 'mountain';
197
+ readonly label: 'Mountain';
198
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
199
+ }, {
200
+ readonly key: 'leaf';
201
+ readonly label: 'Garden';
202
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
203
+ }, {
204
+ readonly key: 'sun';
205
+ readonly label: 'Sun';
206
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
207
+ }, {
208
+ readonly key: 'moon';
209
+ readonly label: 'Moon';
210
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
211
+ }, {
212
+ readonly key: 'palette';
213
+ readonly label: 'Design';
214
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
215
+ }, {
216
+ readonly key: 'camera';
217
+ readonly label: 'Camera';
218
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
219
+ }, {
220
+ readonly key: 'music';
221
+ readonly label: 'Music';
222
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
223
+ }, {
224
+ readonly key: 'gamepad';
225
+ readonly label: 'Games';
226
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
227
+ }, {
228
+ readonly key: 'coffee';
229
+ readonly label: 'Coffee';
230
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
231
+ }, {
232
+ readonly key: 'utensils';
233
+ readonly label: 'Kitchen';
234
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
235
+ }, {
236
+ readonly key: 'dumbbell';
237
+ readonly label: 'Gym';
238
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
239
+ }, {
240
+ readonly key: 'gem';
241
+ readonly label: 'Gem';
242
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
243
+ }, {
244
+ readonly key: 'messages';
245
+ readonly label: 'Chat';
246
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
247
+ }, {
248
+ readonly key: 'shapes';
249
+ readonly label: 'Shapes';
250
+ readonly icon: (props: import("lucide-solid").LucideProps) => import("solid-js").JSX.Element;
251
+ }];
252
+ export type ShellIconKey = (typeof shellIconEntries)[number]['key'];
253
+ /** Whether a stored string names an icon in the curated set. */
254
+ export declare function isShellIconKey(value: string): value is ShellIconKey;
255
+ /**
256
+ * The glyph for a stored key, or `fallback` when the key is not in the set.
257
+ * Callers pass the fallback their surface wants (a workspace falls back to
258
+ * `box`, a project to `folder`), so an unknown key degrades to the default
259
+ * rather than to an empty tile.
260
+ */
261
+ export declare function resolveShellIcon(key: string | null | undefined, fallback?: ShellIconKey): LucideIcon;
262
+ /** The picker's accessible name for a key. */
263
+ export declare function shellIconLabel(key: string): string;
264
+ //# sourceMappingURL=shell-icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-icons.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/icon-picker/shell-icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAiCL,KAAK,UAAU,EA4BhB,MAAM,cAAc,CAAA;AAErB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;kBACpB,MAAM;oBAAS,MAAM;;;kBACrB,KAAK;oBAAS,KAAK;;;kBACnB,QAAQ;oBAAS,QAAQ;;;kBACzB,YAAY;oBAAS,YAAY;;;kBACjC,WAAW;oBAAS,WAAW;;;kBAC/B,UAAU;oBAAS,UAAU;;;kBAC7B,OAAO;oBAAS,MAAM;;;kBACtB,QAAQ;oBAAS,QAAQ;;;kBACzB,MAAM;oBAAS,MAAM;;;kBACrB,OAAO;oBAAS,OAAO;;;kBACvB,MAAM;oBAAS,MAAM;;;kBACrB,UAAU;oBAAS,UAAU;;;kBAC7B,KAAK;oBAAS,MAAM;;;kBACpB,QAAQ;oBAAS,QAAQ;;;kBACzB,UAAU;oBAAS,UAAU;;;kBAC7B,OAAO;oBAAS,OAAO;;;kBACvB,OAAO;oBAAS,OAAO;;;kBACvB,KAAK;oBAAS,OAAO;;;kBACrB,OAAO;oBAAS,OAAO;;;kBACvB,UAAU;oBAAS,UAAU;;;kBAC7B,WAAW;oBAAS,MAAM;;;kBAC1B,OAAO;oBAAS,KAAK;;;kBACrB,MAAM;oBAAS,MAAM;;;kBACrB,YAAY;oBAAS,OAAO;;;kBAC5B,WAAW;oBAAS,MAAM;;;kBAC1B,WAAW;oBAAS,WAAW;;;kBAC/B,OAAO;oBAAS,OAAO;;;kBACvB,QAAQ;oBAAS,SAAS;;;kBAC1B,MAAM;oBAAS,MAAM;;;kBACrB,SAAS;oBAAS,SAAS;;;kBAC3B,QAAQ;oBAAS,QAAQ;;;kBACzB,QAAQ;oBAAS,QAAQ;;;kBACzB,QAAQ;oBAAS,UAAU;;;kBAC3B,KAAK;oBAAS,KAAK;;;kBACnB,QAAQ;oBAAS,OAAO;;;kBACxB,QAAQ;oBAAS,OAAO;;;kBACxB,KAAK;oBAAS,MAAM;;;kBACpB,OAAO;oBAAS,OAAO;;;kBACvB,QAAQ;oBAAS,QAAQ;;;kBACzB,QAAQ;oBAAS,QAAQ;;;kBACzB,MAAM;oBAAS,MAAM;;;kBACrB,SAAS;oBAAS,SAAS;;;kBAC3B,KAAK;oBAAS,KAAK;;;kBACnB,OAAO;oBAAS,QAAQ;;;kBACxB,QAAQ;oBAAS,QAAQ;;;kBACzB,UAAU;oBAAS,UAAU;;;kBAC7B,MAAM;oBAAS,QAAQ;;;kBACvB,KAAK;oBAAS,KAAK;;;kBACnB,MAAM;oBAAS,MAAM;;;kBACrB,SAAS;oBAAS,QAAQ;;;kBAC1B,QAAQ;oBAAS,QAAQ;;;kBACzB,OAAO;oBAAS,OAAO;;;kBACvB,SAAS;oBAAS,OAAO;;;kBACzB,QAAQ;oBAAS,QAAQ;;;kBACzB,UAAU;oBAAS,SAAS;;;kBAC5B,UAAU;oBAAS,KAAK;;;kBACxB,KAAK;oBAAS,KAAK;;;kBACnB,UAAU;oBAAS,MAAM;;;kBACzB,QAAQ;oBAAS,QAAQ;;EACwD,CAAA;AAE1F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAA;AAMnE,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9B,QAAQ,GAAE,YAAuB,GAChC,UAAU,CAEZ;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,334 @@
1
+ import { Anchor, BookOpen, Bot, Box, Brain, Briefcase, Building2, Camera, ChartColumn, Cloud, Code, Coffee, Compass, Cpu, Database, Dumbbell, Flag, Flame, FlaskConical, Folder, FolderGit2, Gamepad2, Gem, Globe, GraduationCap, Hammer, Heart, House, Key, Layers, Leaf, Lightbulb, Map as Map$1, Megaphone, MessagesSquare, Moon, Mountain, Music, Newspaper, Package, Palette, Plane, Puzzle, Rocket, Server, Shapes, Shield, ShoppingCart, Sparkles, Star, Sun, Target, Terminal, Trophy, Users, Utensils, Wallet, Wrench, Zap } from "lucide-solid";
2
+ //#region src/components/composites/icon-picker/shell-icons.ts
3
+ /**
4
+ * The icons a workspace or a project may choose for itself.
5
+ *
6
+ * A curated set rather than the whole Lucide catalogue, for two reasons the
7
+ * picker depends on: the keys are persisted, so each one is a promise that the
8
+ * glyph keeps existing, and every icon here is imported by name so a consumer's
9
+ * bundle pays for these few dozen glyphs and not for the library.
10
+ *
11
+ * `home`, `box` and `folder` lead the list because they are the defaults the
12
+ * apps already use: Home workspaces carry `home`, other workspaces `box` and
13
+ * projects `folder`. Keys are lowercase kebab-case so they are valid project
14
+ * `iconKey`s as well as workspace logo values.
15
+ */
16
+ var shellIconEntries = [
17
+ {
18
+ key: "home",
19
+ label: "Home",
20
+ icon: House
21
+ },
22
+ {
23
+ key: "box",
24
+ label: "Box",
25
+ icon: Box
26
+ },
27
+ {
28
+ key: "folder",
29
+ label: "Folder",
30
+ icon: Folder
31
+ },
32
+ {
33
+ key: "git-folder",
34
+ label: "Repository",
35
+ icon: FolderGit2
36
+ },
37
+ {
38
+ key: "briefcase",
39
+ label: "Briefcase",
40
+ icon: Briefcase
41
+ },
42
+ {
43
+ key: "building",
44
+ label: "Building",
45
+ icon: Building2
46
+ },
47
+ {
48
+ key: "users",
49
+ label: "Team",
50
+ icon: Users
51
+ },
52
+ {
53
+ key: "rocket",
54
+ label: "Rocket",
55
+ icon: Rocket
56
+ },
57
+ {
58
+ key: "star",
59
+ label: "Star",
60
+ icon: Star
61
+ },
62
+ {
63
+ key: "heart",
64
+ label: "Heart",
65
+ icon: Heart
66
+ },
67
+ {
68
+ key: "code",
69
+ label: "Code",
70
+ icon: Code
71
+ },
72
+ {
73
+ key: "terminal",
74
+ label: "Terminal",
75
+ icon: Terminal
76
+ },
77
+ {
78
+ key: "cpu",
79
+ label: "Chip",
80
+ icon: Cpu
81
+ },
82
+ {
83
+ key: "server",
84
+ label: "Server",
85
+ icon: Server
86
+ },
87
+ {
88
+ key: "database",
89
+ label: "Database",
90
+ icon: Database
91
+ },
92
+ {
93
+ key: "cloud",
94
+ label: "Cloud",
95
+ icon: Cloud
96
+ },
97
+ {
98
+ key: "globe",
99
+ label: "Globe",
100
+ icon: Globe
101
+ },
102
+ {
103
+ key: "bot",
104
+ label: "Agent",
105
+ icon: Bot
106
+ },
107
+ {
108
+ key: "brain",
109
+ label: "Brain",
110
+ icon: Brain
111
+ },
112
+ {
113
+ key: "sparkles",
114
+ label: "Sparkles",
115
+ icon: Sparkles
116
+ },
117
+ {
118
+ key: "lightbulb",
119
+ label: "Idea",
120
+ icon: Lightbulb
121
+ },
122
+ {
123
+ key: "flask",
124
+ label: "Lab",
125
+ icon: FlaskConical
126
+ },
127
+ {
128
+ key: "book",
129
+ label: "Book",
130
+ icon: BookOpen
131
+ },
132
+ {
133
+ key: "graduation",
134
+ label: "Study",
135
+ icon: GraduationCap
136
+ },
137
+ {
138
+ key: "newspaper",
139
+ label: "News",
140
+ icon: Newspaper
141
+ },
142
+ {
143
+ key: "megaphone",
144
+ label: "Marketing",
145
+ icon: Megaphone
146
+ },
147
+ {
148
+ key: "chart",
149
+ label: "Chart",
150
+ icon: ChartColumn
151
+ },
152
+ {
153
+ key: "wallet",
154
+ label: "Finance",
155
+ icon: Wallet
156
+ },
157
+ {
158
+ key: "cart",
159
+ label: "Shop",
160
+ icon: ShoppingCart
161
+ },
162
+ {
163
+ key: "package",
164
+ label: "Package",
165
+ icon: Package
166
+ },
167
+ {
168
+ key: "layers",
169
+ label: "Layers",
170
+ icon: Layers
171
+ },
172
+ {
173
+ key: "puzzle",
174
+ label: "Puzzle",
175
+ icon: Puzzle
176
+ },
177
+ {
178
+ key: "shield",
179
+ label: "Security",
180
+ icon: Shield
181
+ },
182
+ {
183
+ key: "key",
184
+ label: "Key",
185
+ icon: Key
186
+ },
187
+ {
188
+ key: "wrench",
189
+ label: "Tools",
190
+ icon: Wrench
191
+ },
192
+ {
193
+ key: "hammer",
194
+ label: "Build",
195
+ icon: Hammer
196
+ },
197
+ {
198
+ key: "zap",
199
+ label: "Bolt",
200
+ icon: Zap
201
+ },
202
+ {
203
+ key: "flame",
204
+ label: "Flame",
205
+ icon: Flame
206
+ },
207
+ {
208
+ key: "target",
209
+ label: "Target",
210
+ icon: Target
211
+ },
212
+ {
213
+ key: "trophy",
214
+ label: "Trophy",
215
+ icon: Trophy
216
+ },
217
+ {
218
+ key: "flag",
219
+ label: "Flag",
220
+ icon: Flag
221
+ },
222
+ {
223
+ key: "compass",
224
+ label: "Compass",
225
+ icon: Compass
226
+ },
227
+ {
228
+ key: "map",
229
+ label: "Map",
230
+ icon: Map$1
231
+ },
232
+ {
233
+ key: "plane",
234
+ label: "Travel",
235
+ icon: Plane
236
+ },
237
+ {
238
+ key: "anchor",
239
+ label: "Anchor",
240
+ icon: Anchor
241
+ },
242
+ {
243
+ key: "mountain",
244
+ label: "Mountain",
245
+ icon: Mountain
246
+ },
247
+ {
248
+ key: "leaf",
249
+ label: "Garden",
250
+ icon: Leaf
251
+ },
252
+ {
253
+ key: "sun",
254
+ label: "Sun",
255
+ icon: Sun
256
+ },
257
+ {
258
+ key: "moon",
259
+ label: "Moon",
260
+ icon: Moon
261
+ },
262
+ {
263
+ key: "palette",
264
+ label: "Design",
265
+ icon: Palette
266
+ },
267
+ {
268
+ key: "camera",
269
+ label: "Camera",
270
+ icon: Camera
271
+ },
272
+ {
273
+ key: "music",
274
+ label: "Music",
275
+ icon: Music
276
+ },
277
+ {
278
+ key: "gamepad",
279
+ label: "Games",
280
+ icon: Gamepad2
281
+ },
282
+ {
283
+ key: "coffee",
284
+ label: "Coffee",
285
+ icon: Coffee
286
+ },
287
+ {
288
+ key: "utensils",
289
+ label: "Kitchen",
290
+ icon: Utensils
291
+ },
292
+ {
293
+ key: "dumbbell",
294
+ label: "Gym",
295
+ icon: Dumbbell
296
+ },
297
+ {
298
+ key: "gem",
299
+ label: "Gem",
300
+ icon: Gem
301
+ },
302
+ {
303
+ key: "messages",
304
+ label: "Chat",
305
+ icon: MessagesSquare
306
+ },
307
+ {
308
+ key: "shapes",
309
+ label: "Shapes",
310
+ icon: Shapes
311
+ }
312
+ ];
313
+ var shellIconByKey = new Map(shellIconEntries.map((entry) => [entry.key, entry.icon]));
314
+ /** Whether a stored string names an icon in the curated set. */
315
+ function isShellIconKey(value) {
316
+ return shellIconByKey.has(value);
317
+ }
318
+ /**
319
+ * The glyph for a stored key, or `fallback` when the key is not in the set.
320
+ * Callers pass the fallback their surface wants (a workspace falls back to
321
+ * `box`, a project to `folder`), so an unknown key degrades to the default
322
+ * rather than to an empty tile.
323
+ */
324
+ function resolveShellIcon(key, fallback = "folder") {
325
+ return (key ? shellIconByKey.get(key) : void 0) ?? shellIconByKey.get(fallback);
326
+ }
327
+ /** The picker's accessible name for a key. */
328
+ function shellIconLabel(key) {
329
+ return shellIconEntries.find((entry) => entry.key === key)?.label ?? key;
330
+ }
331
+ //#endregion
332
+ export { isShellIconKey, resolveShellIcon, shellIconEntries, shellIconLabel };
333
+
334
+ //# sourceMappingURL=shell-icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-icons.js","names":["MapIcon"],"sources":["../../../../src/components/composites/icon-picker/shell-icons.ts"],"sourcesContent":["import {\n Anchor,\n Bot,\n Box,\n BookOpen,\n Brain,\n Briefcase,\n Building2,\n Camera,\n ChartColumn,\n Cloud,\n Code,\n Coffee,\n Compass,\n Cpu,\n Database,\n Dumbbell,\n Flag,\n Flame,\n FlaskConical,\n Folder,\n FolderGit2,\n Gamepad2,\n Gem,\n Globe,\n GraduationCap,\n Hammer,\n Heart,\n House,\n Key,\n Layers,\n Leaf,\n Lightbulb,\n type LucideIcon,\n Map as MapIcon,\n Megaphone,\n MessagesSquare,\n Moon,\n Mountain,\n Music,\n Newspaper,\n Package,\n Palette,\n Plane,\n Puzzle,\n Rocket,\n Server,\n Shapes,\n Shield,\n ShoppingCart,\n Sparkles,\n Star,\n Sun,\n Target,\n Terminal,\n Trophy,\n Users,\n Utensils,\n Wallet,\n Wrench,\n Zap,\n} from 'lucide-solid'\n\n/**\n * The icons a workspace or a project may choose for itself.\n *\n * A curated set rather than the whole Lucide catalogue, for two reasons the\n * picker depends on: the keys are persisted, so each one is a promise that the\n * glyph keeps existing, and every icon here is imported by name so a consumer's\n * bundle pays for these few dozen glyphs and not for the library.\n *\n * `home`, `box` and `folder` lead the list because they are the defaults the\n * apps already use: Home workspaces carry `home`, other workspaces `box` and\n * projects `folder`. Keys are lowercase kebab-case so they are valid project\n * `iconKey`s as well as workspace logo values.\n */\nexport const shellIconEntries = [\n { key: 'home', label: 'Home', icon: House },\n { key: 'box', label: 'Box', icon: Box },\n { key: 'folder', label: 'Folder', icon: Folder },\n { key: 'git-folder', label: 'Repository', icon: FolderGit2 },\n { key: 'briefcase', label: 'Briefcase', icon: Briefcase },\n { key: 'building', label: 'Building', icon: Building2 },\n { key: 'users', label: 'Team', icon: Users },\n { key: 'rocket', label: 'Rocket', icon: Rocket },\n { key: 'star', label: 'Star', icon: Star },\n { key: 'heart', label: 'Heart', icon: Heart },\n { key: 'code', label: 'Code', icon: Code },\n { key: 'terminal', label: 'Terminal', icon: Terminal },\n { key: 'cpu', label: 'Chip', icon: Cpu },\n { key: 'server', label: 'Server', icon: Server },\n { key: 'database', label: 'Database', icon: Database },\n { key: 'cloud', label: 'Cloud', icon: Cloud },\n { key: 'globe', label: 'Globe', icon: Globe },\n { key: 'bot', label: 'Agent', icon: Bot },\n { key: 'brain', label: 'Brain', icon: Brain },\n { key: 'sparkles', label: 'Sparkles', icon: Sparkles },\n { key: 'lightbulb', label: 'Idea', icon: Lightbulb },\n { key: 'flask', label: 'Lab', icon: FlaskConical },\n { key: 'book', label: 'Book', icon: BookOpen },\n { key: 'graduation', label: 'Study', icon: GraduationCap },\n { key: 'newspaper', label: 'News', icon: Newspaper },\n { key: 'megaphone', label: 'Marketing', icon: Megaphone },\n { key: 'chart', label: 'Chart', icon: ChartColumn },\n { key: 'wallet', label: 'Finance', icon: Wallet },\n { key: 'cart', label: 'Shop', icon: ShoppingCart },\n { key: 'package', label: 'Package', icon: Package },\n { key: 'layers', label: 'Layers', icon: Layers },\n { key: 'puzzle', label: 'Puzzle', icon: Puzzle },\n { key: 'shield', label: 'Security', icon: Shield },\n { key: 'key', label: 'Key', icon: Key },\n { key: 'wrench', label: 'Tools', icon: Wrench },\n { key: 'hammer', label: 'Build', icon: Hammer },\n { key: 'zap', label: 'Bolt', icon: Zap },\n { key: 'flame', label: 'Flame', icon: Flame },\n { key: 'target', label: 'Target', icon: Target },\n { key: 'trophy', label: 'Trophy', icon: Trophy },\n { key: 'flag', label: 'Flag', icon: Flag },\n { key: 'compass', label: 'Compass', icon: Compass },\n { key: 'map', label: 'Map', icon: MapIcon },\n { key: 'plane', label: 'Travel', icon: Plane },\n { key: 'anchor', label: 'Anchor', icon: Anchor },\n { key: 'mountain', label: 'Mountain', icon: Mountain },\n { key: 'leaf', label: 'Garden', icon: Leaf },\n { key: 'sun', label: 'Sun', icon: Sun },\n { key: 'moon', label: 'Moon', icon: Moon },\n { key: 'palette', label: 'Design', icon: Palette },\n { key: 'camera', label: 'Camera', icon: Camera },\n { key: 'music', label: 'Music', icon: Music },\n { key: 'gamepad', label: 'Games', icon: Gamepad2 },\n { key: 'coffee', label: 'Coffee', icon: Coffee },\n { key: 'utensils', label: 'Kitchen', icon: Utensils },\n { key: 'dumbbell', label: 'Gym', icon: Dumbbell },\n { key: 'gem', label: 'Gem', icon: Gem },\n { key: 'messages', label: 'Chat', icon: MessagesSquare },\n { key: 'shapes', label: 'Shapes', icon: Shapes },\n] as const satisfies readonly Readonly<{ key: string; label: string; icon: LucideIcon }>[]\n\nexport type ShellIconKey = (typeof shellIconEntries)[number]['key']\n\nconst shellIconByKey: ReadonlyMap<string, LucideIcon> = new Map(\n shellIconEntries.map((entry) => [entry.key, entry.icon])\n)\n\n/** Whether a stored string names an icon in the curated set. */\nexport function isShellIconKey(value: string): value is ShellIconKey {\n return shellIconByKey.has(value)\n}\n\n/**\n * The glyph for a stored key, or `fallback` when the key is not in the set.\n * Callers pass the fallback their surface wants (a workspace falls back to\n * `box`, a project to `folder`), so an unknown key degrades to the default\n * rather than to an empty tile.\n */\nexport function resolveShellIcon(\n key: string | null | undefined,\n fallback: ShellIconKey = 'folder'\n): LucideIcon {\n return (key ? shellIconByKey.get(key) : undefined) ?? shellIconByKey.get(fallback)!\n}\n\n/** The picker's accessible name for a key. */\nexport function shellIconLabel(key: string): string {\n return shellIconEntries.find((entry) => entry.key === key)?.label ?? key\n}\n"],"mappings":"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"}
@@ -155,7 +155,7 @@ function StatusReadout(props) {
155
155
  return _el$8;
156
156
  })();
157
157
  }
158
- function Terminal(props) {
158
+ function Terminal$1(props) {
159
159
  const [local, rest] = splitProps(props, [
160
160
  "output",
161
161
  "command",
@@ -495,6 +495,6 @@ function Terminal(props) {
495
495
  })();
496
496
  }
497
497
  //#endregion
498
- export { TERMINAL_MAX_LINES, Terminal };
498
+ export { TERMINAL_MAX_LINES, Terminal$1 as Terminal };
499
499
 
500
500
  //# sourceMappingURL=terminal.js.map