gridsmith-ui 0.1.0 → 0.2.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.
|
@@ -1,5 +1,4 @@
|
|
|
1
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
2
|
import { jsx } from 'react/jsx-runtime';
|
|
4
3
|
|
|
5
4
|
// ../../showcase/src/lib/icons.tsx
|
|
@@ -24,63 +23,62 @@ function buildExtendedMap(mod, aliases, opts) {
|
|
|
24
23
|
Object.assign(map, aliases);
|
|
25
24
|
return map;
|
|
26
25
|
}
|
|
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
26
|
var packCache = /* @__PURE__ */ new Map();
|
|
79
|
-
packCache.set("lucide", lucideAliases);
|
|
80
27
|
var fullyLoaded = /* @__PURE__ */ new Set();
|
|
81
28
|
async function loadLucide() {
|
|
82
|
-
const
|
|
83
|
-
|
|
29
|
+
const L = await import('lucide-react');
|
|
30
|
+
const aliases = {
|
|
31
|
+
"home": L.Home,
|
|
32
|
+
"folder": L.FolderKanban,
|
|
33
|
+
"chart": L.BarChart3,
|
|
34
|
+
"settings": L.Settings,
|
|
35
|
+
"chevron-right": L.ChevronRight,
|
|
36
|
+
"close": L.X,
|
|
37
|
+
"plus": L.Plus,
|
|
38
|
+
"search": L.Search,
|
|
39
|
+
"bell": L.Bell,
|
|
40
|
+
"user": L.User,
|
|
41
|
+
"check": L.Check,
|
|
42
|
+
"warning": L.AlertTriangle,
|
|
43
|
+
"info": L.Info,
|
|
44
|
+
"error": L.AlertCircle,
|
|
45
|
+
"clock": L.Clock,
|
|
46
|
+
"calendar": L.CalendarDays,
|
|
47
|
+
"bold": L.Bold,
|
|
48
|
+
"italic": L.Italic,
|
|
49
|
+
"underline": L.Underline,
|
|
50
|
+
"strikethrough": L.Strikethrough,
|
|
51
|
+
"align-left": L.AlignLeft,
|
|
52
|
+
"align-center": L.AlignCenter,
|
|
53
|
+
"align-right": L.AlignRight,
|
|
54
|
+
"list": L.List,
|
|
55
|
+
"list-ordered": L.ListOrdered,
|
|
56
|
+
"list-checks": L.ListChecks,
|
|
57
|
+
"link": L.Link,
|
|
58
|
+
"image": L.Image,
|
|
59
|
+
"table": L.Table,
|
|
60
|
+
"code": L.Code,
|
|
61
|
+
"quote": L.Quote,
|
|
62
|
+
"minus": L.Minus,
|
|
63
|
+
"superscript": L.Superscript,
|
|
64
|
+
"subscript": L.Subscript,
|
|
65
|
+
"highlight": L.Highlighter,
|
|
66
|
+
"type": L.Type,
|
|
67
|
+
"chevron-up": L.ChevronUp,
|
|
68
|
+
"chevron-down": L.ChevronDown,
|
|
69
|
+
"trash": L.Trash2,
|
|
70
|
+
"undo": L.Undo2,
|
|
71
|
+
"redo": L.Redo2,
|
|
72
|
+
"arrow-left": L.ArrowLeft,
|
|
73
|
+
"grip-vertical": L.GripVertical,
|
|
74
|
+
"mic": L.Mic,
|
|
75
|
+
"paperclip": L.Paperclip,
|
|
76
|
+
"send": L.Send,
|
|
77
|
+
"log-out": L.LogOut,
|
|
78
|
+
"edit": L.Pencil,
|
|
79
|
+
"menu": L.Menu
|
|
80
|
+
};
|
|
81
|
+
return buildExtendedMap(L, aliases);
|
|
84
82
|
}
|
|
85
83
|
async function loadPhosphor() {
|
|
86
84
|
const P = await import('@phosphor-icons/react');
|
|
@@ -310,6 +308,9 @@ var packLoaders = {
|
|
|
310
308
|
feather: loadFeather
|
|
311
309
|
};
|
|
312
310
|
var IconCtx = createContext({ pack: "lucide", weight: 1.5 });
|
|
311
|
+
function IconProvider({ pack, weight, children }) {
|
|
312
|
+
return /* @__PURE__ */ jsx(IconCtx.Provider, { value: { pack, weight }, children });
|
|
313
|
+
}
|
|
313
314
|
function useIconMap(pack) {
|
|
314
315
|
const [map, setMap] = useState(packCache.get(pack) ?? null);
|
|
315
316
|
useEffect(() => {
|
|
@@ -358,6 +359,6 @@ function Icon({ name, size = 16, className }) {
|
|
|
358
359
|
return /* @__PURE__ */ jsx(Comp, { size, strokeWidth: weight, className });
|
|
359
360
|
}
|
|
360
361
|
|
|
361
|
-
export { Icon };
|
|
362
|
-
//# sourceMappingURL=chunk-
|
|
363
|
-
//# sourceMappingURL=chunk-
|
|
362
|
+
export { Icon, IconProvider };
|
|
363
|
+
//# sourceMappingURL=chunk-OGIR65SM.js.map
|
|
364
|
+
//# sourceMappingURL=chunk-OGIR65SM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../showcase/src/lib/icons.tsx"],"names":[],"mappings":"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","file":"chunk-OGIR65SM.js","sourcesContent":["import { createContext, useContext, useState, useEffect, type ReactNode, type ComponentType } from \"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/* ── Pack loading ─────────────────────────────────────────────── */\n\nconst packCache = new Map<IconPack, IconMap>();\n\nconst fullyLoaded = new Set<IconPack>();\n\nasync function loadLucide(): Promise<IconMap> {\n const L = await import(\"lucide-react\");\n const aliases: IconMap = {\n \"home\": L.Home, \"folder\": L.FolderKanban, \"chart\": L.BarChart3, \"settings\": L.Settings,\n \"chevron-right\": L.ChevronRight, \"close\": L.X, \"plus\": L.Plus, \"search\": L.Search,\n \"bell\": L.Bell, \"user\": L.User, \"check\": L.Check, \"warning\": L.AlertTriangle,\n \"info\": L.Info, \"error\": L.AlertCircle, \"clock\": L.Clock, \"calendar\": L.CalendarDays,\n \"bold\": L.Bold, \"italic\": L.Italic, \"underline\": L.Underline, \"strikethrough\": L.Strikethrough,\n \"align-left\": L.AlignLeft, \"align-center\": L.AlignCenter, \"align-right\": L.AlignRight,\n \"list\": L.List, \"list-ordered\": L.ListOrdered, \"list-checks\": L.ListChecks,\n \"link\": L.Link, \"image\": L.Image, \"table\": L.Table, \"code\": L.Code,\n \"quote\": L.Quote, \"minus\": L.Minus, \"superscript\": L.Superscript, \"subscript\": L.Subscript,\n \"highlight\": L.Highlighter, \"type\": L.Type, \"chevron-up\": L.ChevronUp, \"chevron-down\": L.ChevronDown,\n \"trash\": L.Trash2, \"undo\": L.Undo2, \"redo\": L.Redo2,\n \"arrow-left\": L.ArrowLeft, \"grip-vertical\": L.GripVertical,\n \"mic\": L.Mic, \"paperclip\": L.Paperclip, \"send\": L.Send,\n \"log-out\": L.LogOut, \"edit\": L.Pencil, \"menu\": L.Menu,\n };\n return buildExtendedMap(L as unknown as Record<string, unknown>, aliases);\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"]}
|
package/dist/icons.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
2
3
|
|
|
3
4
|
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
|
/**
|
|
@@ -7,10 +8,16 @@ type CuratedIconName = "home" | "folder" | "chart" | "settings" | "chevron-right
|
|
|
7
8
|
* active pack's native exports (e.g. "clipboard-copy" → Lucide's ClipboardCopy).
|
|
8
9
|
*/
|
|
9
10
|
type IconName = CuratedIconName | (string & {});
|
|
11
|
+
type IconPack = "lucide" | "phosphor" | "heroicons" | "tabler" | "feather";
|
|
12
|
+
declare function IconProvider({ pack, weight, children }: {
|
|
13
|
+
pack: IconPack;
|
|
14
|
+
weight: number;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}): react_jsx_runtime.JSX.Element;
|
|
10
17
|
declare function Icon({ name, size, className }: {
|
|
11
18
|
name: IconName;
|
|
12
19
|
size?: number;
|
|
13
20
|
className?: string;
|
|
14
21
|
}): react_jsx_runtime.JSX.Element | null;
|
|
15
22
|
|
|
16
|
-
export { Icon, type IconName };
|
|
23
|
+
export { Icon, type IconName, type IconPack, IconProvider };
|
package/dist/icons.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cn, GLASS_BACKDROP, lockBodyScroll, unlockBodyScroll, GLASS_OVERLAY, GLASS_DROPDOWN, GLASS_SURFACE } from './chunk-5XIPPVH7.js';
|
|
2
|
-
import { Icon } from './chunk-
|
|
2
|
+
import { Icon } from './chunk-OGIR65SM.js';
|
|
3
3
|
import { __commonJS, __toESM } from './chunk-5WRI5ZAA.js';
|
|
4
4
|
import * as React6 from 'react';
|
|
5
5
|
import React6__default, { createContext, forwardRef, useState, useCallback, useRef, useId, useContext, useMemo, useEffect, createElement, Fragment as Fragment$1, useLayoutEffect, isValidElement, cloneElement, useDebugValue, memo, useReducer, useSyncExternalStore as useSyncExternalStore$1, useImperativeHandle } from 'react';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
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"]}
|