gridsmith-ui 0.1.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.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # gridsmith-ui
2
+
3
+ 77 React components with a CSS custom property theming engine.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install gridsmith-ui
9
+ ```
10
+
11
+ ### Icon packs (optional)
12
+
13
+ The `Icon` component uses `lucide-react` by default. Other packs are loaded on demand — install only what you need:
14
+
15
+ ```bash
16
+ # Default (recommended)
17
+ npm install lucide-react
18
+
19
+ # Alternative packs
20
+ npm install @phosphor-icons/react # phosphor
21
+ npm install @heroicons/react # heroicons
22
+ npm install @tabler/icons-react # tabler
23
+ npm install react-icons # feather (via react-icons)
24
+ ```
25
+
26
+ ## Setup
27
+
28
+ Import the design tokens and Tailwind bindings in your CSS entry point:
29
+
30
+ ```css
31
+ @import "tailwindcss";
32
+ @import "gridsmith-ui/roots.css";
33
+ @import "gridsmith-ui/tokens.css";
34
+ @import "gridsmith-ui/tailwind.css";
35
+ ```
36
+
37
+ - **roots.css** — the CSS custom property engine (L1 roots, L2 derived scales, L3 semantics)
38
+ - **tokens.css** — default Precision Minimal preset values (optional: use `generate-tokens.ts` to customise)
39
+ - **tailwind.css** — maps `--ds-*` tokens to Tailwind utilities (`p-ds-4`, `text-2xs`, `opacity-disabled`)
40
+
41
+ ## Usage
42
+
43
+ ```tsx
44
+ import { Button, Card, Input } from "gridsmith-ui";
45
+ import { Icon, IconProvider } from "gridsmith-ui/icons";
46
+ import { cn } from "gridsmith-ui/utils";
47
+ ```
48
+
49
+ ### Theming
50
+
51
+ Override any `--ds-*` CSS custom property on `:root` or a wrapper element. All derived scales update reactively.
52
+
53
+ ```css
54
+ :root {
55
+ --ds-hue-primary: 220;
56
+ --ds-radius-base: 6px;
57
+ --ds-space-unit: 4px;
58
+ }
59
+ ```
60
+
61
+ ### Icon packs
62
+
63
+ Wrap your app in `<IconProvider>` to select a pack:
64
+
65
+ ```tsx
66
+ <IconProvider pack="phosphor" weight={1.5}>
67
+ <App />
68
+ </IconProvider>
69
+ ```
70
+
71
+ ## Peer dependencies
72
+
73
+ | Package | Required |
74
+ |---------|----------|
75
+ | `react` / `react-dom` | Yes (^18 or ^19) |
76
+ | `lucide-react` | Optional (default icon pack) |
77
+ | `@phosphor-icons/react` | Optional |
78
+ | `@heroicons/react` | Optional |
79
+ | `@tabler/icons-react` | Optional |
80
+ | `react-icons` | Optional |
81
+
82
+ ## License
83
+
84
+ MIT
@@ -0,0 +1,29 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+
27
+ export { __commonJS, __toESM };
28
+ //# sourceMappingURL=chunk-5WRI5ZAA.js.map
29
+ //# sourceMappingURL=chunk-5WRI5ZAA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-5WRI5ZAA.js"}
@@ -0,0 +1,21 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+
4
+ // ../../showcase/src/lib/utils.ts
5
+ function cn(...inputs) {
6
+ return twMerge(clsx(inputs));
7
+ }
8
+ var GLASS_BACKDROP = "[backdrop-filter:var(--ds-glass-filter)] [-webkit-backdrop-filter:var(--ds-glass-filter)]";
9
+ var GLASS_SURFACE = `${GLASS_BACKDROP} shadow-[var(--ds-shadow-card),var(--ds-glass-inset)]`;
10
+ var GLASS_OVERLAY = `${GLASS_BACKDROP} shadow-[var(--ds-shadow-modal),var(--ds-glass-inset)]`;
11
+ var GLASS_DROPDOWN = `${GLASS_BACKDROP} shadow-[var(--ds-shadow-dropdown),var(--ds-glass-inset)]`;
12
+ function lockBodyScroll() {
13
+ document.body.style.overflow = "hidden";
14
+ }
15
+ function unlockBodyScroll() {
16
+ document.body.style.overflow = "";
17
+ }
18
+
19
+ export { GLASS_BACKDROP, GLASS_DROPDOWN, GLASS_OVERLAY, GLASS_SURFACE, cn, lockBodyScroll, unlockBodyScroll };
20
+ //# sourceMappingURL=chunk-5XIPPVH7.js.map
21
+ //# sourceMappingURL=chunk-5XIPPVH7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../showcase/src/lib/utils.ts"],"names":[],"mappings":";;;;AAGO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;AAEO,IAAM,cAAA,GAAiB;AAEvB,IAAM,aAAA,GAAgB,GAAG,cAAc,CAAA,qDAAA;AAEvC,IAAM,aAAA,GAAgB,GAAG,cAAc,CAAA,sDAAA;AAEvC,IAAM,cAAA,GAAiB,GAAG,cAAc,CAAA,yDAAA;AAExC,SAAS,cAAA,GAAiB;AAC/B,EAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AACjC;AAEO,SAAS,gBAAA,GAAmB;AACjC,EAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,EAAA;AACjC","file":"chunk-5XIPPVH7.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n\nexport const GLASS_BACKDROP = \"[backdrop-filter:var(--ds-glass-filter)] [-webkit-backdrop-filter:var(--ds-glass-filter)]\";\n\nexport const GLASS_SURFACE = `${GLASS_BACKDROP} shadow-[var(--ds-shadow-card),var(--ds-glass-inset)]`;\n\nexport const GLASS_OVERLAY = `${GLASS_BACKDROP} shadow-[var(--ds-shadow-modal),var(--ds-glass-inset)]`;\n\nexport const GLASS_DROPDOWN = `${GLASS_BACKDROP} shadow-[var(--ds-shadow-dropdown),var(--ds-glass-inset)]`;\n\nexport function lockBodyScroll() {\n document.body.style.overflow = \"hidden\";\n}\n\nexport function unlockBodyScroll() {\n document.body.style.overflow = \"\";\n}\n"]}
@@ -0,0 +1,363 @@
1
+ import { createContext, useContext, useState, useEffect } from 'react';
2
+ import { Menu, Pencil, LogOut, Send, Paperclip, Mic, GripVertical, ArrowLeft, Redo2, Undo2, Trash2, ChevronDown, ChevronUp, Type, Highlighter, Subscript, Superscript, Minus, Quote, Code, Table, Image, Link, ListChecks, ListOrdered, List, AlignRight, AlignCenter, AlignLeft, Strikethrough, Underline, Italic, Bold, CalendarDays, Clock, AlertCircle, Info, AlertTriangle, Check, User, Bell, Search, Plus, X, ChevronRight, Settings, BarChart3, FolderKanban, Home } from 'lucide-react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ // ../../showcase/src/lib/icons.tsx
6
+ function pascalToKebab(s) {
7
+ return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2").replace(/([a-zA-Z])(\d)/g, "$1-$2").replace(/(\d)([a-zA-Z])/g, "$1-$2").toLowerCase();
8
+ }
9
+ function buildExtendedMap(mod, aliases, opts) {
10
+ const map = {};
11
+ for (const [exportName, value] of Object.entries(mod)) {
12
+ if (typeof value !== "function") continue;
13
+ if (!exportName[0] || exportName[0] !== exportName[0].toUpperCase()) continue;
14
+ let name = exportName;
15
+ if (opts?.stripPrefix && name.startsWith(opts.stripPrefix)) {
16
+ name = name.slice(opts.stripPrefix.length);
17
+ }
18
+ if (opts?.stripSuffix && name.endsWith(opts.stripSuffix)) {
19
+ name = name.slice(0, -opts.stripSuffix.length);
20
+ }
21
+ if (!name) continue;
22
+ map[pascalToKebab(name)] = value;
23
+ }
24
+ Object.assign(map, aliases);
25
+ return map;
26
+ }
27
+ var lucideAliases = {
28
+ "home": Home,
29
+ "folder": FolderKanban,
30
+ "chart": BarChart3,
31
+ "settings": Settings,
32
+ "chevron-right": ChevronRight,
33
+ "close": X,
34
+ "plus": Plus,
35
+ "search": Search,
36
+ "bell": Bell,
37
+ "user": User,
38
+ "check": Check,
39
+ "warning": AlertTriangle,
40
+ "info": Info,
41
+ "error": AlertCircle,
42
+ "clock": Clock,
43
+ "calendar": CalendarDays,
44
+ "bold": Bold,
45
+ "italic": Italic,
46
+ "underline": Underline,
47
+ "strikethrough": Strikethrough,
48
+ "align-left": AlignLeft,
49
+ "align-center": AlignCenter,
50
+ "align-right": AlignRight,
51
+ "list": List,
52
+ "list-ordered": ListOrdered,
53
+ "list-checks": ListChecks,
54
+ "link": Link,
55
+ "image": Image,
56
+ "table": Table,
57
+ "code": Code,
58
+ "quote": Quote,
59
+ "minus": Minus,
60
+ "superscript": Superscript,
61
+ "subscript": Subscript,
62
+ "highlight": Highlighter,
63
+ "type": Type,
64
+ "chevron-up": ChevronUp,
65
+ "chevron-down": ChevronDown,
66
+ "trash": Trash2,
67
+ "undo": Undo2,
68
+ "redo": Redo2,
69
+ "arrow-left": ArrowLeft,
70
+ "grip-vertical": GripVertical,
71
+ "mic": Mic,
72
+ "paperclip": Paperclip,
73
+ "send": Send,
74
+ "log-out": LogOut,
75
+ "edit": Pencil,
76
+ "menu": Menu
77
+ };
78
+ var packCache = /* @__PURE__ */ new Map();
79
+ packCache.set("lucide", lucideAliases);
80
+ var fullyLoaded = /* @__PURE__ */ new Set();
81
+ async function loadLucide() {
82
+ const mod = await import('lucide-react');
83
+ return buildExtendedMap(mod, lucideAliases);
84
+ }
85
+ async function loadPhosphor() {
86
+ const P = await import('@phosphor-icons/react');
87
+ const aliases = {
88
+ "home": P.House,
89
+ "folder": P.FolderSimple,
90
+ "chart": P.ChartBar,
91
+ "settings": P.Gear,
92
+ "chevron-right": P.CaretRight,
93
+ "close": P.X,
94
+ "plus": P.Plus,
95
+ "search": P.MagnifyingGlass,
96
+ "bell": P.Bell,
97
+ "user": P.User,
98
+ "check": P.Check,
99
+ "warning": P.Warning,
100
+ "info": P.Info,
101
+ "error": P.WarningCircle,
102
+ "clock": P.Clock,
103
+ "calendar": P.CalendarBlank,
104
+ "bold": P.TextB,
105
+ "italic": P.TextItalic,
106
+ "underline": P.TextUnderline,
107
+ "strikethrough": P.TextStrikethrough,
108
+ "align-left": P.TextAlignLeft,
109
+ "align-center": P.TextAlignCenter,
110
+ "align-right": P.TextAlignRight,
111
+ "list": P.ListBullets,
112
+ "list-ordered": P.ListNumbers,
113
+ "list-checks": P.ListChecks,
114
+ "link": P.Link,
115
+ "image": P.Image,
116
+ "table": P.Table,
117
+ "code": P.Code,
118
+ "quote": P.Quotes,
119
+ "minus": P.Minus,
120
+ "superscript": P.TextSuperscript,
121
+ "subscript": P.TextSubscript,
122
+ "highlight": P.Highlighter,
123
+ "type": P.TextT,
124
+ "chevron-up": P.CaretUp,
125
+ "chevron-down": P.CaretDown,
126
+ "trash": P.Trash,
127
+ "undo": P.ArrowCounterClockwise,
128
+ "redo": P.ArrowClockwise,
129
+ "arrow-left": P.ArrowLeft,
130
+ "grip-vertical": P.DotsSixVertical,
131
+ "mic": P.Microphone,
132
+ "paperclip": P.Paperclip,
133
+ "send": P.PaperPlaneTilt,
134
+ "log-out": P.SignOut,
135
+ "edit": P.PencilSimple,
136
+ "menu": P.List
137
+ };
138
+ return buildExtendedMap(P, aliases);
139
+ }
140
+ async function loadHeroicons() {
141
+ const H = await import('@heroicons/react/24/outline');
142
+ const aliases = {
143
+ "home": H.HomeIcon,
144
+ "folder": H.FolderIcon,
145
+ "chart": H.ChartBarIcon,
146
+ "settings": H.Cog6ToothIcon,
147
+ "chevron-right": H.ChevronRightIcon,
148
+ "close": H.XMarkIcon,
149
+ "plus": H.PlusIcon,
150
+ "search": H.MagnifyingGlassIcon,
151
+ "bell": H.BellIcon,
152
+ "user": H.UserIcon,
153
+ "check": H.CheckIcon,
154
+ "warning": H.ExclamationTriangleIcon,
155
+ "info": H.InformationCircleIcon,
156
+ "error": H.ExclamationCircleIcon,
157
+ "clock": H.ClockIcon,
158
+ "calendar": H.CalendarDaysIcon,
159
+ "bold": H.BoldIcon,
160
+ "italic": H.ItalicIcon,
161
+ "underline": H.UnderlineIcon,
162
+ "strikethrough": H.StrikethroughIcon,
163
+ "align-left": H.Bars3BottomLeftIcon,
164
+ "align-center": H.Bars3Icon,
165
+ "align-right": H.Bars3BottomRightIcon,
166
+ "list": H.ListBulletIcon,
167
+ "list-ordered": H.NumberedListIcon,
168
+ "list-checks": H.ClipboardDocumentCheckIcon,
169
+ "link": H.LinkIcon,
170
+ "image": H.PhotoIcon,
171
+ "table": H.TableCellsIcon,
172
+ "code": H.CodeBracketIcon,
173
+ "quote": H.ChatBubbleBottomCenterTextIcon,
174
+ "minus": H.MinusIcon,
175
+ "superscript": H.H1Icon,
176
+ "subscript": H.H2Icon,
177
+ "highlight": H.PaintBrushIcon,
178
+ "type": H.LanguageIcon,
179
+ "chevron-up": H.ChevronUpIcon,
180
+ "chevron-down": H.ChevronDownIcon,
181
+ "trash": H.TrashIcon,
182
+ "undo": H.ArrowUturnLeftIcon,
183
+ "redo": H.ArrowUturnRightIcon,
184
+ "arrow-left": H.ArrowLeftIcon,
185
+ "grip-vertical": H.Bars2Icon,
186
+ "mic": H.MicrophoneIcon,
187
+ "paperclip": H.PaperClipIcon,
188
+ "send": H.PaperAirplaneIcon,
189
+ "log-out": H.ArrowRightStartOnRectangleIcon,
190
+ "edit": H.PencilIcon,
191
+ "menu": H.Bars3Icon
192
+ };
193
+ return buildExtendedMap(H, aliases, { stripSuffix: "Icon" });
194
+ }
195
+ async function loadTabler() {
196
+ const T = await import('@tabler/icons-react');
197
+ const aliases = {
198
+ "home": T.IconHome,
199
+ "folder": T.IconFolder,
200
+ "chart": T.IconChartBar,
201
+ "settings": T.IconSettings,
202
+ "chevron-right": T.IconChevronRight,
203
+ "close": T.IconX,
204
+ "plus": T.IconPlus,
205
+ "search": T.IconSearch,
206
+ "bell": T.IconBell,
207
+ "user": T.IconUser,
208
+ "check": T.IconCheck,
209
+ "warning": T.IconAlertTriangle,
210
+ "info": T.IconInfoCircle,
211
+ "error": T.IconAlertCircle,
212
+ "clock": T.IconClock,
213
+ "calendar": T.IconCalendar,
214
+ "bold": T.IconBold,
215
+ "italic": T.IconItalic,
216
+ "underline": T.IconUnderline,
217
+ "strikethrough": T.IconStrikethrough,
218
+ "align-left": T.IconAlignLeft,
219
+ "align-center": T.IconAlignCenter,
220
+ "align-right": T.IconAlignRight,
221
+ "list": T.IconList,
222
+ "list-ordered": T.IconListNumbers,
223
+ "list-checks": T.IconListCheck,
224
+ "link": T.IconLink,
225
+ "image": T.IconPhoto,
226
+ "table": T.IconTable,
227
+ "code": T.IconCode,
228
+ "quote": T.IconQuote,
229
+ "minus": T.IconMinus,
230
+ "superscript": T.IconSuperscript,
231
+ "subscript": T.IconSubscript,
232
+ "highlight": T.IconHighlight,
233
+ "type": T.IconTypography,
234
+ "chevron-up": T.IconChevronUp,
235
+ "chevron-down": T.IconChevronDown,
236
+ "trash": T.IconTrash,
237
+ "undo": T.IconArrowBackUp,
238
+ "redo": T.IconArrowForwardUp,
239
+ "arrow-left": T.IconArrowLeft,
240
+ "grip-vertical": T.IconGripVertical,
241
+ "mic": T.IconMicrophone,
242
+ "paperclip": T.IconPaperclip,
243
+ "send": T.IconSend,
244
+ "log-out": T.IconLogout,
245
+ "edit": T.IconPencil,
246
+ "menu": T.IconMenu2
247
+ };
248
+ return buildExtendedMap(T, aliases, { stripPrefix: "Icon" });
249
+ }
250
+ async function loadFeather() {
251
+ const F = await import('react-icons/fi');
252
+ const aliases = {
253
+ "home": F.FiHome,
254
+ "folder": F.FiFolder,
255
+ "chart": F.FiBarChart2,
256
+ "settings": F.FiSettings,
257
+ "chevron-right": F.FiChevronRight,
258
+ "close": F.FiX,
259
+ "plus": F.FiPlus,
260
+ "search": F.FiSearch,
261
+ "bell": F.FiBell,
262
+ "user": F.FiUser,
263
+ "check": F.FiCheck,
264
+ "warning": F.FiAlertTriangle,
265
+ "info": F.FiInfo,
266
+ "error": F.FiAlertCircle,
267
+ "clock": F.FiClock,
268
+ "calendar": F.FiCalendar,
269
+ "bold": F.FiBold,
270
+ "italic": F.FiItalic,
271
+ "underline": F.FiUnderline,
272
+ "strikethrough": F.FiSlash,
273
+ "align-left": F.FiAlignLeft,
274
+ "align-center": F.FiAlignCenter,
275
+ "align-right": F.FiAlignRight,
276
+ "list": F.FiList,
277
+ "list-ordered": F.FiList,
278
+ "list-checks": F.FiCheckSquare,
279
+ "link": F.FiLink,
280
+ "image": F.FiImage,
281
+ "table": F.FiGrid,
282
+ "code": F.FiCode,
283
+ "quote": F.FiMessageSquare,
284
+ "minus": F.FiMinus,
285
+ "superscript": F.FiChevronUp,
286
+ "subscript": F.FiChevronDown,
287
+ "highlight": F.FiEdit2,
288
+ "type": F.FiType,
289
+ "chevron-up": F.FiChevronUp,
290
+ "chevron-down": F.FiChevronDown,
291
+ "trash": F.FiTrash2,
292
+ "undo": F.FiRotateCcw,
293
+ "redo": F.FiRotateCw,
294
+ "arrow-left": F.FiArrowLeft,
295
+ "grip-vertical": F.FiMoreVertical,
296
+ "mic": F.FiMic,
297
+ "paperclip": F.FiPaperclip,
298
+ "send": F.FiSend,
299
+ "log-out": F.FiLogOut,
300
+ "edit": F.FiEdit2,
301
+ "menu": F.FiMenu
302
+ };
303
+ return buildExtendedMap(F, aliases, { stripPrefix: "Fi" });
304
+ }
305
+ var packLoaders = {
306
+ lucide: loadLucide,
307
+ phosphor: loadPhosphor,
308
+ heroicons: loadHeroicons,
309
+ tabler: loadTabler,
310
+ feather: loadFeather
311
+ };
312
+ var IconCtx = createContext({ pack: "lucide", weight: 1.5 });
313
+ function useIconMap(pack) {
314
+ const [map, setMap] = useState(packCache.get(pack) ?? null);
315
+ useEffect(() => {
316
+ if (fullyLoaded.has(pack)) {
317
+ const cached = packCache.get(pack);
318
+ if (cached) setMap(cached);
319
+ return;
320
+ }
321
+ let cancelled = false;
322
+ packLoaders[pack]().then((loaded) => {
323
+ packCache.set(pack, loaded);
324
+ fullyLoaded.add(pack);
325
+ if (!cancelled) setMap(loaded);
326
+ });
327
+ return () => {
328
+ cancelled = true;
329
+ };
330
+ }, [pack]);
331
+ return map;
332
+ }
333
+ function getPhosphorWeight(numericWeight) {
334
+ if (numericWeight <= 0.75) return "thin";
335
+ if (numericWeight <= 1.25) return "light";
336
+ if (numericWeight <= 1.75) return "regular";
337
+ if (numericWeight <= 2.25) return "bold";
338
+ return "fill";
339
+ }
340
+ function Icon({ name, size = 16, className }) {
341
+ const { pack, weight } = useContext(IconCtx);
342
+ const map = useIconMap(pack);
343
+ if (!map) return null;
344
+ const Comp = map[name];
345
+ if (!Comp) return null;
346
+ if (pack === "phosphor") {
347
+ return /* @__PURE__ */ jsx(Comp, { size, weight: getPhosphorWeight(weight), className });
348
+ }
349
+ if (pack === "heroicons") {
350
+ return /* @__PURE__ */ jsx(Comp, { className, style: { width: size, height: size, strokeWidth: weight } });
351
+ }
352
+ if (pack === "tabler") {
353
+ return /* @__PURE__ */ jsx(Comp, { size, stroke: weight, className });
354
+ }
355
+ if (pack === "feather") {
356
+ return /* @__PURE__ */ jsx(Comp, { size, className, strokeWidth: weight });
357
+ }
358
+ return /* @__PURE__ */ jsx(Comp, { size, strokeWidth: weight, className });
359
+ }
360
+
361
+ export { Icon };
362
+ //# sourceMappingURL=chunk-HHOMQPRO.js.map
363
+ //# sourceMappingURL=chunk-HHOMQPRO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../showcase/src/lib/icons.tsx"],"names":["LHome","LFolder","LChart","LSettings","LChevronRight","LX","LPlus","LSearch","LBell","LUser","LCheck","LAlertTriangle","LInfo","LAlertCircle","LClock","LCalendar","LBold","LItalic","LUnderline","LStrikethrough","LAlignLeft","LAlignCenter","LAlignRight","LList","LListOrdered","LListChecks","LLink","LImage","LTable","LCode","LQuote","LMinus","LSuperscript","LSubscript","LHighlighter","LType","LChevronUp","LChevronDown","LTrash","LUndo","LRedo","LArrowLeft","LGripVertical","LMic","LPaperclip","LSend","LLogOut","LPencil","LMenu"],"mappings":"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","file":"chunk-HHOMQPRO.js","sourcesContent":["import { createContext, useContext, useState, useEffect, type ReactNode, type ComponentType } from \"react\";\nimport {\n Home as LHome, FolderKanban as LFolder, BarChart3 as LChart,\n Settings as LSettings, ChevronRight as LChevronRight, X as LX,\n Plus as LPlus, Search as LSearch, Bell as LBell, User as LUser,\n Check as LCheck, AlertTriangle as LAlertTriangle, Info as LInfo,\n AlertCircle as LAlertCircle, Clock as LClock, CalendarDays as LCalendar,\n Bold as LBold, Italic as LItalic, Underline as LUnderline,\n Strikethrough as LStrikethrough, AlignLeft as LAlignLeft,\n AlignCenter as LAlignCenter, AlignRight as LAlignRight,\n List as LList, ListOrdered as LListOrdered, ListChecks as LListChecks,\n Link as LLink, Image as LImage, Table as LTable, Code as LCode,\n Quote as LQuote, Minus as LMinus, Superscript as LSuperscript,\n Subscript as LSubscript, Highlighter as LHighlighter, Type as LType,\n ChevronUp as LChevronUp, ChevronDown as LChevronDown, Trash2 as LTrash,\n Undo2 as LUndo, Redo2 as LRedo,\n ArrowLeft as LArrowLeft, GripVertical as LGripVertical,\n Mic as LMic, Paperclip as LPaperclip, Send as LSend,\n LogOut as LLogOut, Pencil as LPencil, Menu as LMenu,\n} from \"lucide-react\";\n\n/* ── Types ────────────────────────────────────────────────────── */\n\ntype CuratedIconName =\n | \"home\" | \"folder\" | \"chart\" | \"settings\"\n | \"chevron-right\" | \"close\" | \"plus\" | \"search\"\n | \"bell\" | \"user\" | \"check\" | \"warning\" | \"info\" | \"error\"\n | \"clock\" | \"calendar\"\n | \"bold\" | \"italic\" | \"underline\" | \"strikethrough\"\n | \"align-left\" | \"align-center\" | \"align-right\"\n | \"list\" | \"list-ordered\" | \"list-checks\"\n | \"link\" | \"image\" | \"table\" | \"code\" | \"quote\" | \"minus\"\n | \"superscript\" | \"subscript\" | \"highlight\" | \"type\"\n | \"chevron-up\" | \"chevron-down\" | \"trash\"\n | \"undo\" | \"redo\"\n | \"arrow-left\" | \"grip-vertical\"\n | \"mic\" | \"paperclip\" | \"send\"\n | \"log-out\" | \"edit\" | \"menu\";\n\n/**\n * Curated names provide autocomplete and work identically across all 5 packs.\n * Any kebab-case string is also accepted — it resolves directly against the\n * active pack's native exports (e.g. \"clipboard-copy\" → Lucide's ClipboardCopy).\n */\nexport type IconName = CuratedIconName | (string & {});\n\nexport type IconPack = \"lucide\" | \"phosphor\" | \"heroicons\" | \"tabler\" | \"feather\";\n\ntype IconComponent = ComponentType<Record<string, unknown>>;\ntype IconMap = Record<string, IconComponent>;\n\n/* ── Helpers ───────────────────────────────────────────────────── */\n\nfunction pascalToKebab(s: string): string {\n return s\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z])([A-Z][a-z])/g, \"$1-$2\")\n .replace(/([a-zA-Z])(\\d)/g, \"$1-$2\")\n .replace(/(\\d)([a-zA-Z])/g, \"$1-$2\")\n .toLowerCase();\n}\n\n/**\n * Build an extended icon map from a pack module's exports.\n * Each PascalCase function export is converted to a kebab-case entry.\n * Pack prefixes/suffixes (Icon*, *Icon, Fi*) are stripped before conversion.\n * Curated aliases always take precedence over auto-generated names.\n */\nfunction buildExtendedMap(\n mod: Record<string, unknown>,\n aliases: IconMap,\n opts?: { stripPrefix?: string; stripSuffix?: string },\n): IconMap {\n const map: IconMap = {};\n\n for (const [exportName, value] of Object.entries(mod)) {\n if (typeof value !== \"function\") continue;\n if (!exportName[0] || exportName[0] !== exportName[0].toUpperCase()) continue;\n\n let name = exportName;\n if (opts?.stripPrefix && name.startsWith(opts.stripPrefix)) {\n name = name.slice(opts.stripPrefix.length);\n }\n if (opts?.stripSuffix && name.endsWith(opts.stripSuffix)) {\n name = name.slice(0, -opts.stripSuffix.length);\n }\n if (!name) continue;\n\n map[pascalToKebab(name)] = value as IconComponent;\n }\n\n Object.assign(map, aliases);\n return map;\n}\n\n/* ── Curated alias map (Lucide static imports — available immediately) ── */\n\nconst lucideAliases: IconMap = {\n \"home\": LHome, \"folder\": LFolder, \"chart\": LChart, \"settings\": LSettings,\n \"chevron-right\": LChevronRight, \"close\": LX, \"plus\": LPlus, \"search\": LSearch,\n \"bell\": LBell, \"user\": LUser, \"check\": LCheck, \"warning\": LAlertTriangle,\n \"info\": LInfo, \"error\": LAlertCircle, \"clock\": LClock, \"calendar\": LCalendar,\n \"bold\": LBold, \"italic\": LItalic, \"underline\": LUnderline, \"strikethrough\": LStrikethrough,\n \"align-left\": LAlignLeft, \"align-center\": LAlignCenter, \"align-right\": LAlignRight,\n \"list\": LList, \"list-ordered\": LListOrdered, \"list-checks\": LListChecks,\n \"link\": LLink, \"image\": LImage, \"table\": LTable, \"code\": LCode,\n \"quote\": LQuote, \"minus\": LMinus, \"superscript\": LSuperscript, \"subscript\": LSubscript,\n \"highlight\": LHighlighter, \"type\": LType, \"chevron-up\": LChevronUp, \"chevron-down\": LChevronDown,\n \"trash\": LTrash, \"undo\": LUndo, \"redo\": LRedo,\n \"arrow-left\": LArrowLeft, \"grip-vertical\": LGripVertical,\n \"mic\": LMic, \"paperclip\": LPaperclip, \"send\": LSend,\n \"log-out\": LLogOut, \"edit\": LPencil, \"menu\": LMenu,\n};\n\n/* ── Pack loading ─────────────────────────────────────────────── */\n\nconst packCache = new Map<IconPack, IconMap>();\npackCache.set(\"lucide\", lucideAliases);\n\nconst fullyLoaded = new Set<IconPack>();\n\nasync function loadLucide(): Promise<IconMap> {\n const mod = await import(\"lucide-react\");\n return buildExtendedMap(mod as unknown as Record<string, unknown>, lucideAliases);\n}\n\nasync function loadPhosphor(): Promise<IconMap> {\n const P = await import(\"@phosphor-icons/react\");\n const aliases: IconMap = {\n \"home\": P.House, \"folder\": P.FolderSimple, \"chart\": P.ChartBar,\n \"settings\": P.Gear, \"chevron-right\": P.CaretRight, \"close\": P.X,\n \"plus\": P.Plus, \"search\": P.MagnifyingGlass, \"bell\": P.Bell, \"user\": P.User,\n \"check\": P.Check, \"warning\": P.Warning, \"info\": P.Info,\n \"error\": P.WarningCircle, \"clock\": P.Clock, \"calendar\": P.CalendarBlank,\n \"bold\": P.TextB, \"italic\": P.TextItalic, \"underline\": P.TextUnderline,\n \"strikethrough\": P.TextStrikethrough, \"align-left\": P.TextAlignLeft,\n \"align-center\": P.TextAlignCenter, \"align-right\": P.TextAlignRight,\n \"list\": P.ListBullets, \"list-ordered\": P.ListNumbers, \"list-checks\": P.ListChecks,\n \"link\": P.Link, \"image\": P.Image, \"table\": P.Table, \"code\": P.Code,\n \"quote\": P.Quotes, \"minus\": P.Minus, \"superscript\": P.TextSuperscript,\n \"subscript\": P.TextSubscript, \"highlight\": P.Highlighter, \"type\": P.TextT,\n \"chevron-up\": P.CaretUp, \"chevron-down\": P.CaretDown, \"trash\": P.Trash,\n \"undo\": P.ArrowCounterClockwise, \"redo\": P.ArrowClockwise,\n \"arrow-left\": P.ArrowLeft, \"grip-vertical\": P.DotsSixVertical,\n \"mic\": P.Microphone, \"paperclip\": P.Paperclip, \"send\": P.PaperPlaneTilt,\n \"log-out\": P.SignOut, \"edit\": P.PencilSimple, \"menu\": P.List,\n };\n return buildExtendedMap(P as unknown as Record<string, unknown>, aliases);\n}\n\nasync function loadHeroicons(): Promise<IconMap> {\n const H = await import(\"@heroicons/react/24/outline\");\n const aliases: IconMap = {\n \"home\": H.HomeIcon, \"folder\": H.FolderIcon, \"chart\": H.ChartBarIcon,\n \"settings\": H.Cog6ToothIcon, \"chevron-right\": H.ChevronRightIcon,\n \"close\": H.XMarkIcon, \"plus\": H.PlusIcon, \"search\": H.MagnifyingGlassIcon,\n \"bell\": H.BellIcon, \"user\": H.UserIcon, \"check\": H.CheckIcon,\n \"warning\": H.ExclamationTriangleIcon, \"info\": H.InformationCircleIcon,\n \"error\": H.ExclamationCircleIcon, \"clock\": H.ClockIcon, \"calendar\": H.CalendarDaysIcon,\n \"bold\": H.BoldIcon, \"italic\": H.ItalicIcon, \"underline\": H.UnderlineIcon,\n \"strikethrough\": H.StrikethroughIcon, \"align-left\": H.Bars3BottomLeftIcon,\n \"align-center\": H.Bars3Icon, \"align-right\": H.Bars3BottomRightIcon,\n \"list\": H.ListBulletIcon, \"list-ordered\": H.NumberedListIcon,\n \"list-checks\": H.ClipboardDocumentCheckIcon, \"link\": H.LinkIcon,\n \"image\": H.PhotoIcon, \"table\": H.TableCellsIcon, \"code\": H.CodeBracketIcon,\n \"quote\": H.ChatBubbleBottomCenterTextIcon, \"minus\": H.MinusIcon,\n \"superscript\": H.H1Icon, \"subscript\": H.H2Icon,\n \"highlight\": H.PaintBrushIcon, \"type\": H.LanguageIcon,\n \"chevron-up\": H.ChevronUpIcon, \"chevron-down\": H.ChevronDownIcon, \"trash\": H.TrashIcon,\n \"undo\": H.ArrowUturnLeftIcon, \"redo\": H.ArrowUturnRightIcon,\n \"arrow-left\": H.ArrowLeftIcon, \"grip-vertical\": H.Bars2Icon,\n \"mic\": H.MicrophoneIcon, \"paperclip\": H.PaperClipIcon, \"send\": H.PaperAirplaneIcon,\n \"log-out\": H.ArrowRightStartOnRectangleIcon, \"edit\": H.PencilIcon, \"menu\": H.Bars3Icon,\n };\n return buildExtendedMap(H as unknown as Record<string, unknown>, aliases, { stripSuffix: \"Icon\" });\n}\n\nasync function loadTabler(): Promise<IconMap> {\n const T = await import(\"@tabler/icons-react\");\n const aliases: IconMap = {\n \"home\": T.IconHome, \"folder\": T.IconFolder, \"chart\": T.IconChartBar,\n \"settings\": T.IconSettings, \"chevron-right\": T.IconChevronRight,\n \"close\": T.IconX, \"plus\": T.IconPlus, \"search\": T.IconSearch,\n \"bell\": T.IconBell, \"user\": T.IconUser, \"check\": T.IconCheck,\n \"warning\": T.IconAlertTriangle, \"info\": T.IconInfoCircle,\n \"error\": T.IconAlertCircle, \"clock\": T.IconClock, \"calendar\": T.IconCalendar,\n \"bold\": T.IconBold, \"italic\": T.IconItalic, \"underline\": T.IconUnderline,\n \"strikethrough\": T.IconStrikethrough, \"align-left\": T.IconAlignLeft,\n \"align-center\": T.IconAlignCenter, \"align-right\": T.IconAlignRight,\n \"list\": T.IconList, \"list-ordered\": T.IconListNumbers, \"list-checks\": T.IconListCheck,\n \"link\": T.IconLink, \"image\": T.IconPhoto, \"table\": T.IconTable, \"code\": T.IconCode,\n \"quote\": T.IconQuote, \"minus\": T.IconMinus, \"superscript\": T.IconSuperscript,\n \"subscript\": T.IconSubscript, \"highlight\": T.IconHighlight, \"type\": T.IconTypography,\n \"chevron-up\": T.IconChevronUp, \"chevron-down\": T.IconChevronDown, \"trash\": T.IconTrash,\n \"undo\": T.IconArrowBackUp, \"redo\": T.IconArrowForwardUp,\n \"arrow-left\": T.IconArrowLeft, \"grip-vertical\": T.IconGripVertical,\n \"mic\": T.IconMicrophone, \"paperclip\": T.IconPaperclip, \"send\": T.IconSend,\n \"log-out\": T.IconLogout, \"edit\": T.IconPencil, \"menu\": T.IconMenu2,\n };\n return buildExtendedMap(T as unknown as Record<string, unknown>, aliases, { stripPrefix: \"Icon\" });\n}\n\nasync function loadFeather(): Promise<IconMap> {\n const F = await import(\"react-icons/fi\");\n const aliases: IconMap = {\n \"home\": F.FiHome, \"folder\": F.FiFolder, \"chart\": F.FiBarChart2, \"settings\": F.FiSettings,\n \"chevron-right\": F.FiChevronRight, \"close\": F.FiX, \"plus\": F.FiPlus, \"search\": F.FiSearch,\n \"bell\": F.FiBell, \"user\": F.FiUser, \"check\": F.FiCheck, \"warning\": F.FiAlertTriangle,\n \"info\": F.FiInfo, \"error\": F.FiAlertCircle, \"clock\": F.FiClock, \"calendar\": F.FiCalendar,\n \"bold\": F.FiBold, \"italic\": F.FiItalic, \"underline\": F.FiUnderline, \"strikethrough\": F.FiSlash,\n \"align-left\": F.FiAlignLeft, \"align-center\": F.FiAlignCenter, \"align-right\": F.FiAlignRight,\n \"list\": F.FiList, \"list-ordered\": F.FiList, \"list-checks\": F.FiCheckSquare,\n \"link\": F.FiLink, \"image\": F.FiImage, \"table\": F.FiGrid, \"code\": F.FiCode,\n \"quote\": F.FiMessageSquare, \"minus\": F.FiMinus, \"superscript\": F.FiChevronUp,\n \"subscript\": F.FiChevronDown, \"highlight\": F.FiEdit2, \"type\": F.FiType,\n \"chevron-up\": F.FiChevronUp, \"chevron-down\": F.FiChevronDown, \"trash\": F.FiTrash2,\n \"undo\": F.FiRotateCcw, \"redo\": F.FiRotateCw,\n \"arrow-left\": F.FiArrowLeft, \"grip-vertical\": F.FiMoreVertical,\n \"mic\": F.FiMic, \"paperclip\": F.FiPaperclip, \"send\": F.FiSend,\n \"log-out\": F.FiLogOut, \"edit\": F.FiEdit2, \"menu\": F.FiMenu,\n };\n return buildExtendedMap(F as unknown as Record<string, unknown>, aliases, { stripPrefix: \"Fi\" });\n}\n\nconst packLoaders: Record<IconPack, () => Promise<IconMap>> = {\n lucide: loadLucide,\n phosphor: loadPhosphor,\n heroicons: loadHeroicons,\n tabler: loadTabler,\n feather: loadFeather,\n};\n\n/* ── Context ──────────────────────────────────────────────────── */\n\ninterface IconContextValue {\n pack: IconPack;\n weight: number;\n}\n\nconst IconCtx = createContext<IconContextValue>({ pack: \"lucide\", weight: 1.5 });\n\nexport function IconProvider({ pack, weight, children }: { pack: IconPack; weight: number; children: ReactNode }) {\n return <IconCtx.Provider value={{ pack, weight }}>{children}</IconCtx.Provider>;\n}\n\n/* ── Hook ─────────────────────────────────────────────────────── */\n\nfunction useIconMap(pack: IconPack): IconMap | null {\n const [map, setMap] = useState<IconMap | null>(packCache.get(pack) ?? null);\n\n useEffect(() => {\n if (fullyLoaded.has(pack)) {\n const cached = packCache.get(pack);\n if (cached) setMap(cached);\n return;\n }\n\n let cancelled = false;\n packLoaders[pack]().then((loaded) => {\n packCache.set(pack, loaded);\n fullyLoaded.add(pack);\n if (!cancelled) setMap(loaded);\n });\n return () => { cancelled = true; };\n }, [pack]);\n\n return map;\n}\n\n/* ── Phosphor weight mapping ──────────────────────────────────── */\n\nfunction getPhosphorWeight(numericWeight: number): \"thin\" | \"light\" | \"regular\" | \"bold\" | \"fill\" | \"duotone\" {\n if (numericWeight <= 0.75) return \"thin\";\n if (numericWeight <= 1.25) return \"light\";\n if (numericWeight <= 1.75) return \"regular\";\n if (numericWeight <= 2.25) return \"bold\";\n return \"fill\";\n}\n\n/* ── Icon component ───────────────────────────────────────────── */\n\nexport function Icon({ name, size = 16, className }: { name: IconName; size?: number; className?: string }) {\n const { pack, weight } = useContext(IconCtx);\n const map = useIconMap(pack);\n if (!map) return null;\n const Comp = map[name];\n if (!Comp) return null;\n\n if (pack === \"phosphor\") {\n return <Comp size={size} weight={getPhosphorWeight(weight)} className={className} />;\n }\n\n if (pack === \"heroicons\") {\n return <Comp className={className} style={{ width: size, height: size, strokeWidth: weight }} />;\n }\n\n if (pack === \"tabler\") {\n return <Comp size={size} stroke={weight} className={className} />;\n }\n\n if (pack === \"feather\") {\n return <Comp size={size} className={className} strokeWidth={weight} />;\n }\n\n return <Comp size={size} strokeWidth={weight} className={className} />;\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type CuratedIconName = "home" | "folder" | "chart" | "settings" | "chevron-right" | "close" | "plus" | "search" | "bell" | "user" | "check" | "warning" | "info" | "error" | "clock" | "calendar" | "bold" | "italic" | "underline" | "strikethrough" | "align-left" | "align-center" | "align-right" | "list" | "list-ordered" | "list-checks" | "link" | "image" | "table" | "code" | "quote" | "minus" | "superscript" | "subscript" | "highlight" | "type" | "chevron-up" | "chevron-down" | "trash" | "undo" | "redo" | "arrow-left" | "grip-vertical" | "mic" | "paperclip" | "send" | "log-out" | "edit" | "menu";
4
+ /**
5
+ * Curated names provide autocomplete and work identically across all 5 packs.
6
+ * Any kebab-case string is also accepted — it resolves directly against the
7
+ * active pack's native exports (e.g. "clipboard-copy" → Lucide's ClipboardCopy).
8
+ */
9
+ type IconName = CuratedIconName | (string & {});
10
+ declare function Icon({ name, size, className }: {
11
+ name: IconName;
12
+ size?: number;
13
+ className?: string;
14
+ }): react_jsx_runtime.JSX.Element | null;
15
+
16
+ export { Icon, type IconName };
package/dist/icons.js ADDED
@@ -0,0 +1,4 @@
1
+ export { Icon } from './chunk-HHOMQPRO.js';
2
+ import './chunk-5WRI5ZAA.js';
3
+ //# sourceMappingURL=icons.js.map
4
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"icons.js"}