@jazzmind/busibox-app 3.0.50 → 3.0.52

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 (37) hide show
  1. package/dist/components/auth/SessionProvider.d.ts.map +1 -1
  2. package/dist/components/auth/SessionProvider.js +16 -3
  3. package/dist/components/auth/SessionProvider.js.map +1 -1
  4. package/dist/components/shared/AppIcon.d.ts +3 -8
  5. package/dist/components/shared/AppIcon.d.ts.map +1 -1
  6. package/dist/components/shared/AppIcon.js +22 -16
  7. package/dist/components/shared/AppIcon.js.map +1 -1
  8. package/dist/contexts/CustomizationContext.d.ts.map +1 -1
  9. package/dist/contexts/CustomizationContext.js +34 -2
  10. package/dist/contexts/CustomizationContext.js.map +1 -1
  11. package/dist/lib/agent/agent-service-client.d.ts +9 -0
  12. package/dist/lib/agent/agent-service-client.d.ts.map +1 -1
  13. package/dist/lib/agent/agent-service-client.js.map +1 -1
  14. package/dist/lib/authz/passkey.d.ts +5 -4
  15. package/dist/lib/authz/passkey.d.ts.map +1 -1
  16. package/dist/lib/authz/passkey.js +92 -63
  17. package/dist/lib/authz/passkey.js.map +1 -1
  18. package/dist/lib/authz/sso-generator.d.ts +2 -0
  19. package/dist/lib/authz/sso-generator.d.ts.map +1 -1
  20. package/dist/lib/authz/sso-generator.js +2 -0
  21. package/dist/lib/authz/sso-generator.js.map +1 -1
  22. package/dist/lib/authz/sso-route-handler.d.ts.map +1 -1
  23. package/dist/lib/authz/sso-route-handler.js +17 -0
  24. package/dist/lib/authz/sso-route-handler.js.map +1 -1
  25. package/dist/lib/deploy/app-permissions.d.ts +2 -0
  26. package/dist/lib/deploy/app-permissions.d.ts.map +1 -1
  27. package/dist/lib/deploy/app-permissions.js +2 -0
  28. package/dist/lib/deploy/app-permissions.js.map +1 -1
  29. package/dist/lib/deploy/github-manifest.d.ts +1 -1
  30. package/dist/lib/deploy/github-manifest.d.ts.map +1 -1
  31. package/dist/lib/deploy/github-manifest.js +7 -4
  32. package/dist/lib/deploy/github-manifest.js.map +1 -1
  33. package/dist/lib/icons.d.ts +45 -12
  34. package/dist/lib/icons.d.ts.map +1 -1
  35. package/dist/lib/icons.js +386 -191
  36. package/dist/lib/icons.js.map +1 -1
  37. package/package.json +1 -1
package/dist/lib/icons.js CHANGED
@@ -1,212 +1,407 @@
1
1
  /**
2
2
  * Icon Library
3
3
  *
4
- * Curated collection of SVG icons for applications.
5
- * Icons are embedded as strings to avoid external dependencies.
4
+ * Uses lucide-react icons. Icon names are PascalCase lucide icon names
5
+ * (e.g., "Video", "MessageCircle", "BarChart3").
6
+ *
7
+ * A curated subset is exposed for the icon picker with categories.
8
+ * All 1600+ lucide icons can be used by name even if not in the curated list.
9
+ *
10
+ * Legacy icon names (lowercase, from the original custom SVG set) are
11
+ * mapped to their lucide equivalents for backward compatibility.
12
+ */
13
+ import { icons as lucideIcons } from 'lucide-react';
14
+ /**
15
+ * Maps legacy custom SVG icon names to their lucide equivalents.
6
16
  */
7
- export const ICONS = [
17
+ const LEGACY_ICON_MAP = {
18
+ video: 'Video',
19
+ library: 'Library',
20
+ chat: 'MessageCircle',
21
+ code: 'Code',
22
+ database: 'Database',
23
+ analytics: 'BarChart3',
24
+ settings: 'Settings',
25
+ users: 'Users',
26
+ calendar: 'Calendar',
27
+ email: 'Mail',
28
+ documents: 'FileText',
29
+ images: 'Image',
30
+ music: 'Music',
31
+ search: 'Search',
32
+ security: 'Lock',
33
+ cloud: 'Cloud',
34
+ mobile: 'Smartphone',
35
+ desktop: 'Monitor',
36
+ globe: 'Globe',
37
+ rocket: 'Rocket',
38
+ star: 'Star',
39
+ heart: 'Heart',
40
+ shield: 'ShieldCheck',
41
+ bell: 'Bell',
42
+ briefcase: 'Briefcase',
43
+ chart: 'BarChart',
44
+ clipboard: 'ClipboardList',
45
+ command: 'Terminal',
46
+ cpu: 'Cpu',
47
+ grid: 'LayoutGrid',
48
+ };
49
+ /**
50
+ * Resolves a potentially-legacy icon name to a lucide PascalCase name.
51
+ */
52
+ export function resolveLucideIconName(name) {
53
+ return LEGACY_ICON_MAP[name] || name;
54
+ }
55
+ /**
56
+ * Check if a lucide icon exists by name.
57
+ */
58
+ export function isValidIcon(name) {
59
+ const resolved = resolveLucideIconName(name);
60
+ return resolved in lucideIcons;
61
+ }
62
+ /**
63
+ * Get the lucide icon component by name. Returns undefined if not found.
64
+ */
65
+ export function getLucideIcon(name) {
66
+ const resolved = resolveLucideIconName(name);
67
+ return lucideIcons[resolved] ?? undefined;
68
+ }
69
+ // ---------------------------------------------------------------------------
70
+ // Curated icon list for the picker (organized by category)
71
+ // ---------------------------------------------------------------------------
72
+ export const CURATED_ICONS = [
73
+ // AI & Machine Learning
74
+ { name: 'Brain', label: 'Brain', category: 'ai' },
75
+ { name: 'BrainCircuit', label: 'Brain Circuit', category: 'ai' },
76
+ { name: 'BrainCog', label: 'Brain Cog', category: 'ai' },
77
+ { name: 'Bot', label: 'Bot', category: 'ai' },
78
+ { name: 'BotMessageSquare', label: 'Bot Chat', category: 'ai' },
79
+ { name: 'Sparkles', label: 'Sparkles', category: 'ai' },
80
+ { name: 'Wand2', label: 'Magic Wand', category: 'ai' },
81
+ { name: 'Cpu', label: 'CPU', category: 'ai' },
82
+ { name: 'CircuitBoard', label: 'Circuit Board', category: 'ai' },
83
+ { name: 'Workflow', label: 'Workflow', category: 'ai' },
84
+ { name: 'Network', label: 'Network', category: 'ai' },
85
+ { name: 'Orbit', label: 'Orbit', category: 'ai' },
86
+ { name: 'Atom', label: 'Atom', category: 'ai' },
87
+ { name: 'Lightbulb', label: 'Lightbulb', category: 'ai' },
88
+ // General
89
+ { name: 'Home', label: 'Home', category: 'general' },
90
+ { name: 'Search', label: 'Search', category: 'general' },
91
+ { name: 'Settings', label: 'Settings', category: 'general' },
92
+ { name: 'Bell', label: 'Bell', category: 'general' },
93
+ { name: 'Globe', label: 'Globe', category: 'general' },
94
+ { name: 'LayoutGrid', label: 'Grid', category: 'general' },
95
+ { name: 'LayoutDashboard', label: 'Dashboard', category: 'general' },
96
+ { name: 'Bookmark', label: 'Bookmark', category: 'general' },
97
+ { name: 'Tag', label: 'Tag', category: 'general' },
98
+ { name: 'Tags', label: 'Tags', category: 'general' },
99
+ { name: 'Star', label: 'Star', category: 'general' },
100
+ { name: 'Heart', label: 'Heart', category: 'general' },
101
+ { name: 'ThumbsUp', label: 'Thumbs Up', category: 'general' },
102
+ { name: 'Pin', label: 'Pin', category: 'general' },
103
+ { name: 'Flag', label: 'Flag', category: 'general' },
104
+ { name: 'Award', label: 'Award', category: 'general' },
105
+ { name: 'Trophy', label: 'Trophy', category: 'general' },
106
+ { name: 'Zap', label: 'Zap', category: 'general' },
107
+ { name: 'Rocket', label: 'Rocket', category: 'general' },
108
+ { name: 'Eye', label: 'Eye', category: 'general' },
109
+ { name: 'Clock', label: 'Clock', category: 'general' },
110
+ { name: 'Timer', label: 'Timer', category: 'general' },
111
+ { name: 'MapPin', label: 'Map Pin', category: 'general' },
112
+ { name: 'Map', label: 'Map', category: 'general' },
113
+ { name: 'Navigation', label: 'Navigation', category: 'general' },
114
+ { name: 'Compass', label: 'Compass', category: 'general' },
115
+ { name: 'Link', label: 'Link', category: 'general' },
116
+ { name: 'ExternalLink', label: 'External Link', category: 'general' },
117
+ { name: 'QrCode', label: 'QR Code', category: 'general' },
118
+ { name: 'ScanLine', label: 'Scan', category: 'general' },
119
+ { name: 'Smartphone', label: 'Smartphone', category: 'general' },
120
+ { name: 'Monitor', label: 'Monitor', category: 'general' },
121
+ { name: 'Laptop', label: 'Laptop', category: 'general' },
122
+ { name: 'Tablet', label: 'Tablet', category: 'general' },
123
+ { name: 'Watch', label: 'Watch', category: 'general' },
124
+ { name: 'Plug', label: 'Plug', category: 'general' },
125
+ { name: 'Power', label: 'Power', category: 'general' },
126
+ { name: 'Battery', label: 'Battery', category: 'general' },
127
+ { name: 'Wifi', label: 'WiFi', category: 'general' },
128
+ { name: 'Bluetooth', label: 'Bluetooth', category: 'general' },
8
129
  // Media
9
- {
10
- name: 'video',
11
- label: 'Video',
12
- category: 'media',
13
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" /></svg>',
14
- },
15
- {
16
- name: 'music',
17
- label: 'Music',
18
- category: 'media',
19
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3" /></svg>',
20
- },
21
- {
22
- name: 'images',
23
- label: 'Images',
24
- category: 'media',
25
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" /></svg>',
26
- },
130
+ { name: 'Video', label: 'Video', category: 'media' },
131
+ { name: 'Camera', label: 'Camera', category: 'media' },
132
+ { name: 'Image', label: 'Image', category: 'media' },
133
+ { name: 'Images', label: 'Images', category: 'media' },
134
+ { name: 'Film', label: 'Film', category: 'media' },
135
+ { name: 'Music', label: 'Music', category: 'media' },
136
+ { name: 'Music2', label: 'Music 2', category: 'media' },
137
+ { name: 'Headphones', label: 'Headphones', category: 'media' },
138
+ { name: 'Mic', label: 'Microphone', category: 'media' },
139
+ { name: 'Volume2', label: 'Volume', category: 'media' },
140
+ { name: 'Radio', label: 'Radio', category: 'media' },
141
+ { name: 'Tv', label: 'TV', category: 'media' },
142
+ { name: 'Play', label: 'Play', category: 'media' },
143
+ { name: 'Youtube', label: 'YouTube', category: 'media' },
144
+ { name: 'Podcast', label: 'Podcast', category: 'media' },
145
+ { name: 'Clapperboard', label: 'Clapperboard', category: 'media' },
146
+ { name: 'Aperture', label: 'Aperture', category: 'media' },
147
+ { name: 'Focus', label: 'Focus', category: 'media' },
27
148
  // Productivity
28
- {
29
- name: 'library',
30
- label: 'Library',
31
- category: 'productivity',
32
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 14v3m4-3v3m4-3v3M3 21h18M3 10h18M3 7l9-4 9 4M4 10h16v11H4V10z" /></svg>',
33
- },
34
- {
35
- name: 'documents',
36
- label: 'Documents',
37
- category: 'productivity',
38
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" /></svg>',
39
- },
40
- {
41
- name: 'calendar',
42
- label: 'Calendar',
43
- category: 'productivity',
44
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" /></svg>',
45
- },
46
- {
47
- name: 'clipboard',
48
- label: 'Clipboard',
49
- category: 'productivity',
50
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" /></svg>',
51
- },
149
+ { name: 'Library', label: 'Library', category: 'productivity' },
150
+ { name: 'FileText', label: 'Document', category: 'productivity' },
151
+ { name: 'Files', label: 'Files', category: 'productivity' },
152
+ { name: 'FolderOpen', label: 'Folder Open', category: 'productivity' },
153
+ { name: 'Folder', label: 'Folder', category: 'productivity' },
154
+ { name: 'Calendar', label: 'Calendar', category: 'productivity' },
155
+ { name: 'CalendarDays', label: 'Calendar Days', category: 'productivity' },
156
+ { name: 'ClipboardList', label: 'Clipboard List', category: 'productivity' },
157
+ { name: 'ClipboardCheck', label: 'Clipboard Check', category: 'productivity' },
158
+ { name: 'ListChecks', label: 'Checklist', category: 'productivity' },
159
+ { name: 'ListTodo', label: 'Todo List', category: 'productivity' },
160
+ { name: 'CheckSquare', label: 'Check Square', category: 'productivity' },
161
+ { name: 'StickyNote', label: 'Sticky Note', category: 'productivity' },
162
+ { name: 'NotebookPen', label: 'Notebook', category: 'productivity' },
163
+ { name: 'PenTool', label: 'Pen Tool', category: 'productivity' },
164
+ { name: 'Pencil', label: 'Pencil', category: 'productivity' },
165
+ { name: 'Eraser', label: 'Eraser', category: 'productivity' },
166
+ { name: 'Printer', label: 'Printer', category: 'productivity' },
167
+ { name: 'Archive', label: 'Archive', category: 'productivity' },
168
+ { name: 'Inbox', label: 'Inbox', category: 'productivity' },
169
+ { name: 'Package', label: 'Package', category: 'productivity' },
170
+ { name: 'Kanban', label: 'Kanban', category: 'productivity' },
171
+ { name: 'GanttChart', label: 'Gantt Chart', category: 'productivity' },
172
+ { name: 'Table', label: 'Table', category: 'productivity' },
173
+ { name: 'Sheet', label: 'Spreadsheet', category: 'productivity' },
174
+ { name: 'Presentation', label: 'Presentation', category: 'productivity' },
175
+ { name: 'BookOpen', label: 'Book Open', category: 'productivity' },
176
+ { name: 'BookMarked', label: 'Bookmarked', category: 'productivity' },
177
+ { name: 'GraduationCap', label: 'Education', category: 'productivity' },
52
178
  // Tech
53
- {
54
- name: 'chat',
55
- label: 'Chat',
56
- category: 'tech',
57
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z" /></svg>',
58
- },
59
- {
60
- name: 'code',
61
- label: 'Code',
62
- category: 'tech',
63
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" /></svg>',
64
- },
65
- {
66
- name: 'database',
67
- label: 'Database',
68
- category: 'tech',
69
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4" /></svg>',
70
- },
71
- {
72
- name: 'cloud',
73
- label: 'Cloud',
74
- category: 'tech',
75
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 15a4 4 0 004 4h9a5 5 0 10-.1-9.999 5.002 5.002 0 10-9.78 2.096A4.001 4.001 0 003 15z" /></svg>',
76
- },
77
- {
78
- name: 'cpu',
79
- label: 'CPU',
80
- category: 'tech',
81
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z" /></svg>',
82
- },
83
- {
84
- name: 'command',
85
- label: 'Command',
86
- category: 'tech',
87
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" /></svg>',
88
- },
89
- // General
90
- {
91
- name: 'email',
92
- label: 'Email',
93
- category: 'general',
94
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" /></svg>',
95
- },
96
- {
97
- name: 'search',
98
- label: 'Search',
99
- category: 'general',
100
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /></svg>',
101
- },
102
- {
103
- name: 'settings',
104
- label: 'Settings',
105
- category: 'general',
106
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" /><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" /></svg>',
107
- },
108
- {
109
- name: 'users',
110
- label: 'Users',
111
- category: 'general',
112
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" /></svg>',
113
- },
114
- {
115
- name: 'security',
116
- label: 'Security',
117
- category: 'general',
118
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" /></svg>',
119
- },
120
- {
121
- name: 'bell',
122
- label: 'Notifications',
123
- category: 'general',
124
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" /></svg>',
125
- },
126
- {
127
- name: 'globe',
128
- label: 'Globe',
129
- category: 'general',
130
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>',
131
- },
132
- {
133
- name: 'mobile',
134
- label: 'Mobile',
135
- category: 'general',
136
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z" /></svg>',
137
- },
138
- {
139
- name: 'desktop',
140
- label: 'Desktop',
141
- category: 'general',
142
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" /></svg>',
143
- },
144
- {
145
- name: 'grid',
146
- label: 'Grid',
147
- category: 'general',
148
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2V6zM14 6a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2V6zM4 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2H6a2 2 0 01-2-2v-2zM14 16a2 2 0 012-2h2a2 2 0 012 2v2a2 2 0 01-2 2h-2a2 2 0 01-2-2v-2z" /></svg>',
149
- },
179
+ { name: 'Code', label: 'Code', category: 'tech' },
180
+ { name: 'Code2', label: 'Code 2', category: 'tech' },
181
+ { name: 'Terminal', label: 'Terminal', category: 'tech' },
182
+ { name: 'Database', label: 'Database', category: 'tech' },
183
+ { name: 'Server', label: 'Server', category: 'tech' },
184
+ { name: 'Cloud', label: 'Cloud', category: 'tech' },
185
+ { name: 'CloudCog', label: 'Cloud Cog', category: 'tech' },
186
+ { name: 'Container', label: 'Container', category: 'tech' },
187
+ { name: 'HardDrive', label: 'Hard Drive', category: 'tech' },
188
+ { name: 'Bug', label: 'Bug', category: 'tech' },
189
+ { name: 'GitBranch', label: 'Git Branch', category: 'tech' },
190
+ { name: 'GitPullRequest', label: 'Pull Request', category: 'tech' },
191
+ { name: 'Github', label: 'GitHub', category: 'tech' },
192
+ { name: 'Globe', label: 'Web', category: 'tech' },
193
+ { name: 'Blocks', label: 'Blocks', category: 'tech' },
194
+ { name: 'Puzzle', label: 'Puzzle', category: 'tech' },
195
+ { name: 'Layers', label: 'Layers', category: 'tech' },
196
+ { name: 'Box', label: 'Box', category: 'tech' },
197
+ { name: 'Boxes', label: 'Boxes', category: 'tech' },
198
+ { name: 'Webhook', label: 'Webhook', category: 'tech' },
199
+ { name: 'Cog', label: 'Cog', category: 'tech' },
200
+ { name: 'Wrench', label: 'Wrench', category: 'tech' },
201
+ { name: 'Hammer', label: 'Hammer', category: 'tech' },
202
+ { name: 'Construction', label: 'Construction', category: 'tech' },
203
+ { name: 'Cable', label: 'Cable', category: 'tech' },
204
+ { name: 'Radio', label: 'Radio', category: 'tech' },
205
+ { name: 'Radar', label: 'Radar', category: 'tech' },
206
+ { name: 'Satellite', label: 'Satellite', category: 'tech' },
207
+ { name: 'SatelliteDish', label: 'Satellite Dish', category: 'tech' },
150
208
  // Business
151
- {
152
- name: 'briefcase',
153
- label: 'Briefcase',
154
- category: 'business',
155
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2 2v2m4 6h.01M5 20h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" /></svg>',
156
- },
157
- {
158
- name: 'chart',
159
- label: 'Chart',
160
- category: 'business',
161
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" /></svg>',
162
- },
163
- {
164
- name: 'analytics',
165
- label: 'Analytics',
166
- category: 'business',
167
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 8v8m-4-5v5m-4-2v2m-2 4h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" /></svg>',
168
- },
169
- {
170
- name: 'rocket',
171
- label: 'Rocket',
172
- category: 'business',
173
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" /></svg>',
174
- },
175
- {
176
- name: 'star',
177
- label: 'Star',
178
- category: 'business',
179
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z" /></svg>',
180
- },
181
- {
182
- name: 'heart',
183
- label: 'Heart',
184
- category: 'business',
185
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z" /></svg>',
186
- },
187
- {
188
- name: 'shield',
189
- label: 'Shield',
190
- category: 'business',
191
- svg: '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" /></svg>',
192
- },
209
+ { name: 'Briefcase', label: 'Briefcase', category: 'business' },
210
+ { name: 'Building', label: 'Building', category: 'business' },
211
+ { name: 'Building2', label: 'Office', category: 'business' },
212
+ { name: 'Store', label: 'Store', category: 'business' },
213
+ { name: 'ShoppingCart', label: 'Shopping Cart', category: 'business' },
214
+ { name: 'ShoppingBag', label: 'Shopping Bag', category: 'business' },
215
+ { name: 'CreditCard', label: 'Credit Card', category: 'business' },
216
+ { name: 'Receipt', label: 'Receipt', category: 'business' },
217
+ { name: 'Handshake', label: 'Handshake', category: 'business' },
218
+ { name: 'Target', label: 'Target', category: 'business' },
219
+ { name: 'TrendingUp', label: 'Trending Up', category: 'business' },
220
+ { name: 'TrendingDown', label: 'Trending Down', category: 'business' },
221
+ { name: 'BarChart', label: 'Bar Chart', category: 'business' },
222
+ { name: 'BarChart3', label: 'Analytics', category: 'business' },
223
+ { name: 'PieChart', label: 'Pie Chart', category: 'business' },
224
+ { name: 'LineChart', label: 'Line Chart', category: 'business' },
225
+ { name: 'AreaChart', label: 'Area Chart', category: 'business' },
226
+ { name: 'Activity', label: 'Activity', category: 'business' },
227
+ { name: 'Gauge', label: 'Gauge', category: 'business' },
228
+ { name: 'Scale', label: 'Scale', category: 'business' },
229
+ { name: 'Landmark', label: 'Landmark', category: 'business' },
230
+ { name: 'Megaphone', label: 'Megaphone', category: 'business' },
231
+ { name: 'BadgeDollarSign', label: 'Badge Dollar', category: 'business' },
232
+ { name: 'Banknote', label: 'Banknote', category: 'business' },
233
+ { name: 'Coins', label: 'Coins', category: 'business' },
234
+ // Communication
235
+ { name: 'MessageCircle', label: 'Chat', category: 'communication' },
236
+ { name: 'MessageSquare', label: 'Message', category: 'communication' },
237
+ { name: 'MessagesSquare', label: 'Messages', category: 'communication' },
238
+ { name: 'Mail', label: 'Email', category: 'communication' },
239
+ { name: 'MailOpen', label: 'Mail Open', category: 'communication' },
240
+ { name: 'Send', label: 'Send', category: 'communication' },
241
+ { name: 'Phone', label: 'Phone', category: 'communication' },
242
+ { name: 'PhoneCall', label: 'Phone Call', category: 'communication' },
243
+ { name: 'AtSign', label: 'At Sign', category: 'communication' },
244
+ { name: 'Hash', label: 'Hash', category: 'communication' },
245
+ { name: 'Share2', label: 'Share', category: 'communication' },
246
+ { name: 'Forward', label: 'Forward', category: 'communication' },
247
+ { name: 'Reply', label: 'Reply', category: 'communication' },
248
+ { name: 'Rss', label: 'RSS', category: 'communication' },
249
+ // Finance
250
+ { name: 'DollarSign', label: 'Dollar', category: 'finance' },
251
+ { name: 'Euro', label: 'Euro', category: 'finance' },
252
+ { name: 'PoundSterling', label: 'Pound', category: 'finance' },
253
+ { name: 'Wallet', label: 'Wallet', category: 'finance' },
254
+ { name: 'Landmark', label: 'Bank', category: 'finance' },
255
+ { name: 'Calculator', label: 'Calculator', category: 'finance' },
256
+ { name: 'Percent', label: 'Percent', category: 'finance' },
257
+ { name: 'ArrowUpDown', label: 'Exchange', category: 'finance' },
258
+ { name: 'Receipt', label: 'Invoice', category: 'finance' },
259
+ // Creative
260
+ { name: 'Palette', label: 'Palette', category: 'creative' },
261
+ { name: 'Paintbrush', label: 'Paintbrush', category: 'creative' },
262
+ { name: 'PaintBucket', label: 'Paint Bucket', category: 'creative' },
263
+ { name: 'Brush', label: 'Brush', category: 'creative' },
264
+ { name: 'Scissors', label: 'Scissors', category: 'creative' },
265
+ { name: 'Ruler', label: 'Ruler', category: 'creative' },
266
+ { name: 'Figma', label: 'Design', category: 'creative' },
267
+ { name: 'Pipette', label: 'Color Picker', category: 'creative' },
268
+ { name: 'Shapes', label: 'Shapes', category: 'creative' },
269
+ { name: 'PenLine', label: 'Pen', category: 'creative' },
270
+ { name: 'Type', label: 'Typography', category: 'creative' },
271
+ { name: 'Sparkle', label: 'Sparkle', category: 'creative' },
272
+ // Files & Storage
273
+ { name: 'File', label: 'File', category: 'files' },
274
+ { name: 'FileText', label: 'Text File', category: 'files' },
275
+ { name: 'FileImage', label: 'Image File', category: 'files' },
276
+ { name: 'FileVideo', label: 'Video File', category: 'files' },
277
+ { name: 'FileAudio', label: 'Audio File', category: 'files' },
278
+ { name: 'FileCode', label: 'Code File', category: 'files' },
279
+ { name: 'FileSpreadsheet', label: 'Spreadsheet', category: 'files' },
280
+ { name: 'FileArchive', label: 'Archive', category: 'files' },
281
+ { name: 'Download', label: 'Download', category: 'files' },
282
+ { name: 'Upload', label: 'Upload', category: 'files' },
283
+ { name: 'FolderTree', label: 'Folder Tree', category: 'files' },
284
+ { name: 'FolderGit', label: 'Repo', category: 'files' },
285
+ { name: 'HardDrive', label: 'Storage', category: 'files' },
286
+ { name: 'DatabaseZap', label: 'Database Zap', category: 'files' },
287
+ // People & Social
288
+ { name: 'User', label: 'User', category: 'social' },
289
+ { name: 'Users', label: 'Users', category: 'social' },
290
+ { name: 'UserPlus', label: 'Add User', category: 'social' },
291
+ { name: 'UserCog', label: 'User Settings', category: 'social' },
292
+ { name: 'Contact', label: 'Contact', category: 'social' },
293
+ { name: 'PersonStanding', label: 'Person', category: 'social' },
294
+ { name: 'Group', label: 'Group', category: 'social' },
295
+ { name: 'Crown', label: 'Crown', category: 'social' },
296
+ { name: 'BadgeCheck', label: 'Verified', category: 'social' },
297
+ // Science & Education
298
+ { name: 'Microscope', label: 'Microscope', category: 'science' },
299
+ { name: 'FlaskConical', label: 'Flask', category: 'science' },
300
+ { name: 'TestTube2', label: 'Test Tube', category: 'science' },
301
+ { name: 'Dna', label: 'DNA', category: 'science' },
302
+ { name: 'Beaker', label: 'Beaker', category: 'science' },
303
+ { name: 'Calculator', label: 'Calculator', category: 'science' },
304
+ { name: 'Telescope', label: 'Telescope', category: 'science' },
305
+ // Health
306
+ { name: 'HeartPulse', label: 'Heart Pulse', category: 'health' },
307
+ { name: 'Stethoscope', label: 'Stethoscope', category: 'health' },
308
+ { name: 'Pill', label: 'Pill', category: 'health' },
309
+ { name: 'Syringe', label: 'Syringe', category: 'health' },
310
+ { name: 'Cross', label: 'Medical', category: 'health' },
311
+ { name: 'Thermometer', label: 'Thermometer', category: 'health' },
312
+ { name: 'Baby', label: 'Baby', category: 'health' },
313
+ { name: 'Accessibility', label: 'Accessibility', category: 'health' },
314
+ // Transport
315
+ { name: 'Car', label: 'Car', category: 'transport' },
316
+ { name: 'Truck', label: 'Truck', category: 'transport' },
317
+ { name: 'Ship', label: 'Ship', category: 'transport' },
318
+ { name: 'Plane', label: 'Plane', category: 'transport' },
319
+ { name: 'Train', label: 'Train', category: 'transport' },
320
+ { name: 'Bike', label: 'Bike', category: 'transport' },
321
+ { name: 'Anchor', label: 'Anchor', category: 'transport' },
322
+ { name: 'Navigation', label: 'Navigation', category: 'transport' },
323
+ { name: 'Compass', label: 'Compass', category: 'transport' },
324
+ { name: 'Milestone', label: 'Milestone', category: 'transport' },
325
+ // Nature
326
+ { name: 'Leaf', label: 'Leaf', category: 'nature' },
327
+ { name: 'Trees', label: 'Trees', category: 'nature' },
328
+ { name: 'Flower2', label: 'Flower', category: 'nature' },
329
+ { name: 'Sun', label: 'Sun', category: 'nature' },
330
+ { name: 'Moon', label: 'Moon', category: 'nature' },
331
+ { name: 'CloudSun', label: 'Weather', category: 'nature' },
332
+ { name: 'Snowflake', label: 'Snowflake', category: 'nature' },
333
+ { name: 'Droplets', label: 'Water', category: 'nature' },
334
+ { name: 'Mountain', label: 'Mountain', category: 'nature' },
335
+ { name: 'Waves', label: 'Waves', category: 'nature' },
336
+ { name: 'Wind', label: 'Wind', category: 'nature' },
337
+ { name: 'Flame', label: 'Flame', category: 'nature' },
338
+ // Security / Status
339
+ { name: 'Lock', label: 'Lock', category: 'status' },
340
+ { name: 'Unlock', label: 'Unlock', category: 'status' },
341
+ { name: 'ShieldCheck', label: 'Shield Check', category: 'status' },
342
+ { name: 'Shield', label: 'Shield', category: 'status' },
343
+ { name: 'ShieldAlert', label: 'Shield Alert', category: 'status' },
344
+ { name: 'Key', label: 'Key', category: 'status' },
345
+ { name: 'KeyRound', label: 'Key Round', category: 'status' },
346
+ { name: 'Fingerprint', label: 'Fingerprint', category: 'status' },
347
+ { name: 'ScanFace', label: 'Face ID', category: 'status' },
348
+ { name: 'AlertTriangle', label: 'Warning', category: 'status' },
349
+ { name: 'AlertCircle', label: 'Alert', category: 'status' },
350
+ { name: 'CheckCircle', label: 'Success', category: 'status' },
351
+ { name: 'XCircle', label: 'Error', category: 'status' },
352
+ { name: 'Info', label: 'Info', category: 'status' },
353
+ { name: 'HelpCircle', label: 'Help', category: 'status' },
193
354
  ];
194
355
  /**
195
- * Get icon by name
356
+ * All available lucide icon names (for search in the icon picker).
196
357
  */
197
- export function getIcon(name) {
198
- return ICONS.find((icon) => icon.name === name);
358
+ export function getAllLucideIconNames() {
359
+ return Object.keys(lucideIcons);
360
+ }
361
+ /**
362
+ * Get the curated icon list for the picker.
363
+ */
364
+ export function getCuratedIcons() {
365
+ return CURATED_ICONS;
199
366
  }
200
367
  /**
201
- * Get icons by category
368
+ * Get curated icons filtered by category.
202
369
  */
203
370
  export function getIconsByCategory(category) {
204
- return ICONS.filter((icon) => icon.category === category);
371
+ return CURATED_ICONS.filter((icon) => icon.category === category);
205
372
  }
206
373
  /**
207
- * Get all icon categories
374
+ * Get all categories that have curated icons.
208
375
  */
209
376
  export function getCategories() {
210
- return ['general', 'media', 'productivity', 'tech', 'business'];
377
+ const cats = new Set(CURATED_ICONS.map((i) => i.category));
378
+ return Array.from(cats);
379
+ }
380
+ // ---------------------------------------------------------------------------
381
+ // Backward-compatible exports
382
+ // ---------------------------------------------------------------------------
383
+ /**
384
+ * @deprecated Use CURATED_ICONS instead.
385
+ */
386
+ export const ICONS = CURATED_ICONS;
387
+ /**
388
+ * @deprecated Use getLucideIcon() instead.
389
+ * Returns a compat object with name/label/category/svg for legacy consumers.
390
+ */
391
+ export function getIcon(name) {
392
+ const resolved = resolveLucideIconName(name);
393
+ const icon = CURATED_ICONS.find((i) => i.name === resolved);
394
+ if (!icon)
395
+ return undefined;
396
+ const LucideComponent = getLucideIcon(resolved);
397
+ if (!LucideComponent)
398
+ return undefined;
399
+ // For legacy consumers that need SVG strings, we won't generate them.
400
+ // Return a placeholder so existing code doesn't break, but AppIcon should
401
+ // be used for rendering.
402
+ return {
403
+ ...icon,
404
+ svg: '',
405
+ };
211
406
  }
212
407
  //# sourceMappingURL=icons.js.map