gridsmith-ui 0.6.0 → 0.6.1
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/dist/{chunk-XUBVMRIE.js → chunk-GX6O72IV.js} +7 -7
- package/dist/chunk-GX6O72IV.js.map +1 -0
- package/dist/{chunk-4SDKQDYV.js → chunk-UYGTAVKR.js} +3 -3
- package/dist/{chunk-4SDKQDYV.js.map → chunk-UYGTAVKR.js.map} +1 -1
- package/dist/data-grid.js +1 -1
- package/dist/editor.js +1 -1
- package/dist/{feather-V32UNIQL.js → feather-U45EQTAU.js} +4 -3
- package/dist/feather-U45EQTAU.js.map +1 -0
- package/dist/{heroicons-CA5OQ76O.js → heroicons-D3G7QU45.js} +4 -3
- package/dist/heroicons-D3G7QU45.js.map +1 -0
- package/dist/icons.d.ts +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.js +63 -21
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +2 -2
- package/dist/{lucide-AILUUOAJ.js → lucide-OGUV44TQ.js} +4 -3
- package/dist/lucide-OGUV44TQ.js.map +1 -0
- package/dist/{phosphor-A4JOBGMT.js → phosphor-QG2ZMEMZ.js} +4 -3
- package/dist/phosphor-QG2ZMEMZ.js.map +1 -0
- package/dist/resizable.js +1 -1
- package/dist/{tabler-TVOR6AFM.js → tabler-MW2HN55L.js} +4 -3
- package/dist/tabler-MW2HN55L.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-XUBVMRIE.js.map +0 -1
- package/dist/feather-V32UNIQL.js.map +0 -1
- package/dist/heroicons-CA5OQ76O.js.map +0 -1
- package/dist/lucide-AILUUOAJ.js.map +0 -1
- package/dist/phosphor-A4JOBGMT.js.map +0 -1
- package/dist/tabler-TVOR6AFM.js.map +0 -1
|
@@ -37,32 +37,32 @@ async function loadPack(pack) {
|
|
|
37
37
|
try {
|
|
38
38
|
switch (pack) {
|
|
39
39
|
case "lucide":
|
|
40
|
-
mod = await import('./lucide-
|
|
40
|
+
mod = await import('./lucide-OGUV44TQ.js');
|
|
41
41
|
break;
|
|
42
42
|
case "phosphor":
|
|
43
43
|
try {
|
|
44
|
-
mod = await import('./phosphor-
|
|
44
|
+
mod = await import('./phosphor-QG2ZMEMZ.js');
|
|
45
45
|
} catch {
|
|
46
46
|
throw new Error("gridsmith-ui: @phosphor-icons/react is not installed. Run: npm install @phosphor-icons/react");
|
|
47
47
|
}
|
|
48
48
|
break;
|
|
49
49
|
case "heroicons":
|
|
50
50
|
try {
|
|
51
|
-
mod = await import('./heroicons-
|
|
51
|
+
mod = await import('./heroicons-D3G7QU45.js');
|
|
52
52
|
} catch {
|
|
53
53
|
throw new Error("gridsmith-ui: @heroicons/react is not installed. Run: npm install @heroicons/react");
|
|
54
54
|
}
|
|
55
55
|
break;
|
|
56
56
|
case "tabler":
|
|
57
57
|
try {
|
|
58
|
-
mod = await import('./tabler-
|
|
58
|
+
mod = await import('./tabler-MW2HN55L.js');
|
|
59
59
|
} catch {
|
|
60
60
|
throw new Error("gridsmith-ui: @tabler/icons-react is not installed. Run: npm install @tabler/icons-react");
|
|
61
61
|
}
|
|
62
62
|
break;
|
|
63
63
|
case "feather":
|
|
64
64
|
try {
|
|
65
|
-
mod = await import('./feather-
|
|
65
|
+
mod = await import('./feather-U45EQTAU.js');
|
|
66
66
|
} catch {
|
|
67
67
|
throw new Error("gridsmith-ui: react-icons is not installed. Run: npm install react-icons");
|
|
68
68
|
}
|
|
@@ -145,5 +145,5 @@ function Icon({ name, size = 16, className }) {
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
export { Icon, IconProvider, preloadPack };
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
149
|
-
//# sourceMappingURL=chunk-
|
|
148
|
+
//# sourceMappingURL=chunk-GX6O72IV.js.map
|
|
149
|
+
//# sourceMappingURL=chunk-GX6O72IV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../showcase/src/lib/icons.tsx"],"names":[],"mappings":"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","file":"chunk-GX6O72IV.js","sourcesContent":["import { createContext, useContext, useEffect, useSyncExternalStore, type ReactNode, type ComponentType } from \"react\";\n\n/* ── Types ────────────────────────────────────────────────────── */\n\n/**\n * Runtime list of curated icon names. The CuratedIconName type derives from\n * this array, so adding a name here extends autocomplete automatically.\n * Every name must have an alias (or auto-kebab match) in ALL five packs —\n * icon-completeness.test.tsx enforces this.\n */\nexport const CURATED_ICON_NAMES = [\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\", \"more-horizontal\",\n \"star\", \"bookmark\", \"download\", \"upload\",\n] as const;\n\ntype CuratedIconName = (typeof CURATED_ICON_NAMES)[number];\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/* ── External store ──────────────────────────────────────────── */\n\ntype Subscriber = () => void;\nconst subscribers = new Set<Subscriber>();\nfunction notifySubscribers() {\n subscribers.forEach((fn) => fn());\n}\nfunction subscribe(cb: Subscriber): () => void {\n subscribers.add(cb);\n return () => { subscribers.delete(cb); };\n}\n\nconst curatedCache = new Map<IconPack, IconMap>();\nconst extendedCache = new Map<IconPack, IconMap>();\n\nfunction useCuratedMap(pack: IconPack): IconMap | null {\n return useSyncExternalStore(\n subscribe,\n () => curatedCache.get(pack) ?? null,\n () => null,\n );\n}\n\nfunction useExtendedMap(pack: IconPack): IconMap | null {\n return useSyncExternalStore(\n subscribe,\n () => extendedCache.get(pack) ?? null,\n () => null,\n );\n}\n\n/* ── Pack loading ────────────────────────────────────────────────\n Each pack is isolated in its own file under ./icon-packs/.\n Only the active pack's module is dynamically imported at runtime,\n so bundlers won't resolve unused pack dependencies at build time.\n\n Loading is two-phase:\n 1. Curated map (50 static named imports) — available as soon as\n the pack chunk loads, cached and notified immediately.\n 2. Extended map (full barrel import + kebab-case iteration) —\n loaded in the background, cached and notified when ready. */\n\nconst loadingPacks = new Set<IconPack>();\nconst failedPacks = new Set<IconPack>();\n\ntype PackModule = {\n loadCurated(): IconMap;\n loadExtended(): Promise<IconMap>;\n};\n\nasync function loadPack(pack: IconPack): Promise<void> {\n if (curatedCache.has(pack) || loadingPacks.has(pack) || failedPacks.has(pack)) return;\n loadingPacks.add(pack);\n\n let mod: PackModule;\n try {\n switch (pack) {\n case \"lucide\":\n mod = await import(\"./icon-packs/lucide\");\n break;\n case \"phosphor\":\n try { mod = await import(\"./icon-packs/phosphor\"); }\n catch { throw new Error(\"gridsmith-ui: @phosphor-icons/react is not installed. Run: npm install @phosphor-icons/react\"); }\n break;\n case \"heroicons\":\n try { mod = await import(\"./icon-packs/heroicons\"); }\n catch { throw new Error(\"gridsmith-ui: @heroicons/react is not installed. Run: npm install @heroicons/react\"); }\n break;\n case \"tabler\":\n try { mod = await import(\"./icon-packs/tabler\"); }\n catch { throw new Error(\"gridsmith-ui: @tabler/icons-react is not installed. Run: npm install @tabler/icons-react\"); }\n break;\n case \"feather\":\n try { mod = await import(\"./icon-packs/feather\"); }\n catch { throw new Error(\"gridsmith-ui: react-icons is not installed. Run: npm install react-icons\"); }\n break;\n }\n } catch (err) {\n loadingPacks.delete(pack);\n failedPacks.add(pack);\n console.error(err instanceof Error ? err.message : err);\n return;\n }\n\n curatedCache.set(pack, mod!.loadCurated());\n notifySubscribers();\n\n mod!.loadExtended().then((extended) => {\n extendedCache.set(pack, extended);\n notifySubscribers();\n }).catch(() => {\n // Extended map failed (e.g. network error loading the full barrel).\n // Curated icons still work; extended names will not resolve.\n });\n}\n\n/** Exported for the icon-completeness test — not part of the public API. */\nexport const packLoaders: Record<IconPack, {\n curated: () => Promise<IconMap>;\n extended: () => Promise<IconMap>;\n}> = {\n lucide: { curated: () => import(\"./icon-packs/lucide\").then((m) => m.loadCurated()), extended: () => import(\"./icon-packs/lucide\").then((m) => m.loadExtended()) },\n phosphor: { curated: () => import(\"./icon-packs/phosphor\").then((m) => m.loadCurated()), extended: () => import(\"./icon-packs/phosphor\").then((m) => m.loadExtended()) },\n heroicons: { curated: () => import(\"./icon-packs/heroicons\").then((m) => m.loadCurated()), extended: () => import(\"./icon-packs/heroicons\").then((m) => m.loadExtended()) },\n tabler: { curated: () => import(\"./icon-packs/tabler\").then((m) => m.loadCurated()), extended: () => import(\"./icon-packs/tabler\").then((m) => m.loadExtended()) },\n feather: { curated: () => import(\"./icon-packs/feather\").then((m) => m.loadCurated()), extended: () => import(\"./icon-packs/feather\").then((m) => m.loadExtended()) },\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 useEffect(() => {\n loadPack(pack);\n if (pack !== \"lucide\") loadPack(\"lucide\");\n }, [pack]);\n\n return <IconCtx.Provider value={{ pack, weight }}>{children}</IconCtx.Provider>;\n}\n\n/**\n * Start loading a pack's icon chunk before React mounts. Call this in your\n * app's entry point (e.g. main.tsx) for the fastest possible cold start:\n *\n * import { preloadPack } from 'gridsmith-ui/icons'\n * preloadPack('lucide')\n */\nexport function preloadPack(pack: IconPack): void {\n loadPack(pack);\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\n const curatedMap = useCuratedMap(pack);\n const extendedMap = useExtendedMap(pack);\n const lucideCurated = useCuratedMap(\"lucide\");\n const lucideExtended = useExtendedMap(\"lucide\");\n\n // Ensure the active pack is loading (covers cases where Icon mounts\n // before IconProvider's useEffect fires, e.g. during SSR hydration)\n if (!curatedCache.has(pack) && !loadingPacks.has(pack)) {\n loadPack(pack);\n }\n\n let Comp: IconComponent | undefined | null = null;\n let renderPack: IconPack = pack;\n\n // Tier 1: curated map (available once pack chunk has loaded)\n if (curatedMap) {\n Comp = curatedMap[name];\n }\n\n // Tier 2: extended map (available after barrel import completes)\n if (!Comp && extendedMap) {\n Comp = extendedMap[name];\n }\n\n // Tier 3: lucide fallback (curated first, then extended)\n if (!Comp && pack !== \"lucide\") {\n const fallback = lucideCurated?.[name] ?? lucideExtended?.[name];\n if (fallback) {\n Comp = fallback;\n renderPack = \"lucide\";\n }\n }\n\n if (!Comp) {\n const allMapsLoaded = curatedMap && extendedMap &&\n (pack === \"lucide\" || (lucideCurated && lucideExtended));\n if (allMapsLoaded) return null;\n return <span style={{ display: \"inline-block\", width: size, height: size }} className={className} />;\n }\n\n if (renderPack === \"phosphor\") {\n return <Comp size={size} weight={getPhosphorWeight(weight)} className={className} />;\n }\n\n if (renderPack === \"heroicons\") {\n return <Comp className={className} style={{ width: size, height: size, strokeWidth: weight }} />;\n }\n\n if (renderPack === \"tabler\") {\n return <Comp size={size} stroke={weight} className={className} />;\n }\n\n if (renderPack === \"feather\") {\n return <Comp size={size} className={className} strokeWidth={weight} />;\n }\n\n return <Comp size={size} strokeWidth={weight} className={className} />;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useTextOverflow, Tooltip } from './chunk-CHNY75QI.js';
|
|
2
|
-
import { Icon } from './chunk-
|
|
2
|
+
import { Icon } from './chunk-GX6O72IV.js';
|
|
3
3
|
import { cn } from './chunk-IUBWNDUK.js';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -89,5 +89,5 @@ function Badge({ variant = "default", size = "md", color, iconLeft, iconRight, m
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
export { Badge };
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-UYGTAVKR.js.map
|
|
93
|
+
//# sourceMappingURL=chunk-UYGTAVKR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../showcase/src/components/Badge.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../../../showcase/src/components/Badge.tsx"],"names":[],"mappings":"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","file":"chunk-UYGTAVKR.js","sourcesContent":["import { cn } from \"../lib/utils\";\nimport { Icon, type IconName } from \"../lib/icons\";\nimport { Tooltip } from \"./Tooltip\";\nimport { useTextOverflow } from \"../lib/use-text-overflow\";\nimport type { ReactNode } from \"react\";\n\nexport type BadgeVariant =\n | \"default\"\n | \"neutral\"\n | \"subtle\"\n | \"success\"\n | \"success-soft\"\n | \"warning\"\n | \"warning-soft\"\n | \"error\"\n | \"error-soft\"\n | \"outline\";\n\nexport type BadgeSize = \"xs\" | \"sm\" | \"md\";\nexport type BadgePaletteColor = 1 | 2 | 3 | 4 | 5;\n\nconst variantStyles: Record<BadgeVariant, string> = {\n default: \"bg-[var(--ds-accent-primary)] [background-image:var(--ds-gradient)] text-[var(--ds-text-on-primary)]\",\n neutral: \"bg-[var(--ds-text-muted)]/[0.12] text-[var(--ds-text-secondary)]\",\n subtle: \"bg-[var(--ds-bg-muted)] text-[var(--ds-text-secondary)]\",\n success: \"bg-[var(--ds-status-success)] text-[var(--ds-text-on-primary)]\",\n \"success-soft\": \"bg-[var(--ds-status-success-bg)] text-[var(--ds-status-success)] border-[length:var(--ds-border-width)] border-[var(--ds-status-success)]/[0.2]\",\n warning: \"bg-[var(--ds-status-warning)] text-[var(--ds-text-on-primary)]\",\n \"warning-soft\": \"bg-[var(--ds-status-warning-bg)] text-[var(--ds-status-warning-text)] border-[length:var(--ds-border-width)] border-[var(--ds-status-warning)]/[0.2]\",\n error: \"bg-[var(--ds-status-error)] text-[var(--ds-text-on-primary)]\",\n \"error-soft\": \"bg-[var(--ds-status-error-bg)] text-[var(--ds-status-error)] border-[length:var(--ds-border-width)] border-[var(--ds-status-error)]/[0.2]\",\n outline: \"bg-transparent text-[var(--ds-text-primary)] border-[length:var(--ds-border-width)] border-[var(--ds-border-default)]\",\n};\n\nconst sizeStyles: Record<BadgeSize, string> = {\n xs: \"px-ds-1.5 py-[1px] text-[length:10px] gap-[3px]\",\n sm: \"px-ds-2 py-ds-0.5 text-[length:var(--ds-font-size-xs)] gap-ds-1\",\n md: \"px-ds-2.5 py-ds-0.5 text-[length:var(--ds-font-size-xs)] gap-ds-1\",\n};\n\nconst iconSizes: Record<BadgeSize, number> = {\n xs: 10,\n sm: 12,\n md: 12,\n};\n\ntype PaletteStyleFn = (n: BadgePaletteColor) => string;\n\nconst paletteByVariant: Record<string, PaletteStyleFn> = {\n default: (n) => paletteDefault[n],\n neutral: (n) => paletteSubtle[n],\n subtle: (n) => paletteSubtle[n],\n outline: (n) => paletteOutline[n],\n};\n\nconst paletteDefault: Record<BadgePaletteColor, string> = {\n 1: \"bg-[var(--ds-palette-1-bold)] text-[var(--ds-text-on-primary)]\",\n 2: \"bg-[var(--ds-palette-2-bold)] text-[var(--ds-text-on-primary)]\",\n 3: \"bg-[var(--ds-palette-3-bold)] text-[var(--ds-text-on-primary)]\",\n 4: \"bg-[var(--ds-palette-4-bold)] text-[var(--ds-text-on-primary)]\",\n 5: \"bg-[var(--ds-palette-5-bold)] text-[var(--ds-text-on-primary)]\",\n};\n\nconst paletteSubtle: Record<BadgePaletteColor, string> = {\n 1: \"bg-[var(--ds-palette-1-bg)] text-[var(--ds-palette-1-text)]\",\n 2: \"bg-[var(--ds-palette-2-bg)] text-[var(--ds-palette-2-text)]\",\n 3: \"bg-[var(--ds-palette-3-bg)] text-[var(--ds-palette-3-text)]\",\n 4: \"bg-[var(--ds-palette-4-bg)] text-[var(--ds-palette-4-text)]\",\n 5: \"bg-[var(--ds-palette-5-bg)] text-[var(--ds-palette-5-text)]\",\n};\n\nconst paletteOutline: Record<BadgePaletteColor, string> = {\n 1: \"bg-transparent text-[var(--ds-palette-1-bold)] border-[length:var(--ds-border-width)] border-[var(--ds-palette-1-bold)]\",\n 2: \"bg-transparent text-[var(--ds-palette-2-bold)] border-[length:var(--ds-border-width)] border-[var(--ds-palette-2-bold)]\",\n 3: \"bg-transparent text-[var(--ds-palette-3-bold)] border-[length:var(--ds-border-width)] border-[var(--ds-palette-3-bold)]\",\n 4: \"bg-transparent text-[var(--ds-palette-4-bold)] border-[length:var(--ds-border-width)] border-[var(--ds-palette-4-bold)]\",\n 5: \"bg-transparent text-[var(--ds-palette-5-bold)] border-[length:var(--ds-border-width)] border-[var(--ds-palette-5-bold)]\",\n};\n\nfunction getPaletteClasses(color: BadgePaletteColor, variant: BadgeVariant): string {\n const styleFn = paletteByVariant[variant] ?? paletteByVariant.default;\n return styleFn(color);\n}\n\ninterface BadgeProps {\n variant?: BadgeVariant;\n size?: BadgeSize;\n /** Palette colour (1-5). Overrides variant colour with decorative palette tokens. */\n color?: BadgePaletteColor;\n /** Icon to show before the label */\n iconLeft?: IconName;\n /** Icon to show after the label */\n iconRight?: IconName;\n /** Max width before truncation (e.g. \"120px\", \"16ch\"). Shows tooltip when truncated. */\n maxWidth?: string;\n className?: string;\n children?: ReactNode;\n}\n\nexport function Badge({ variant = \"default\", size = \"md\", color, iconLeft, iconRight, maxWidth, className, children }: BadgeProps) {\n const { ref: truncRef, isTruncated } = useTextOverflow({ lines: 1, disabled: !maxWidth });\n const iconSize = iconSizes[size];\n const isIconOnly = (iconLeft || iconRight) && !children;\n\n const colorClasses = color\n ? getPaletteClasses(color, variant)\n : variantStyles[variant];\n\n const badge = (\n <span\n className={cn(\n \"inline-flex items-center font-medium max-w-full whitespace-nowrap\",\n \"rounded-[var(--ds-radius-full)]\",\n sizeStyles[size],\n isIconOnly && size === \"xs\" && \"px-[3px]\",\n isIconOnly && size === \"sm\" && \"px-ds-1\",\n isIconOnly && size === \"md\" && \"px-ds-1.5\",\n colorClasses,\n className\n )}\n style={maxWidth ? { maxWidth } : undefined}\n >\n {iconLeft && <Icon name={iconLeft} size={iconSize} className=\"shrink-0\" />}\n {maxWidth ? (\n <span ref={truncRef} className=\"truncate\">{children}</span>\n ) : (\n children\n )}\n {iconRight && <Icon name={iconRight} size={iconSize} className=\"shrink-0\" />}\n </span>\n );\n\n if (isTruncated) {\n return <Tooltip content={children}>{badge}</Tooltip>;\n }\n return badge;\n}\n"]}
|
package/dist/data-grid.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useBreakpoint } from './chunk-DPF6776I.js';
|
|
2
2
|
import { useTextOverflow, Tooltip } from './chunk-CHNY75QI.js';
|
|
3
|
-
import { Icon } from './chunk-
|
|
3
|
+
import { Icon } from './chunk-GX6O72IV.js';
|
|
4
4
|
import { cn } from './chunk-IUBWNDUK.js';
|
|
5
5
|
import { useState, useMemo, useCallback } from 'react';
|
|
6
6
|
import { useReactTable, getPaginationRowModel, getSortedRowModel, getCoreRowModel, flexRender } from '@tanstack/react-table';
|
package/dist/editor.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useBreakpoint } from './chunk-DPF6776I.js';
|
|
2
|
-
import { Icon } from './chunk-
|
|
2
|
+
import { Icon } from './chunk-GX6O72IV.js';
|
|
3
3
|
import { cn } from './chunk-IUBWNDUK.js';
|
|
4
4
|
import { useState, useEffect, useRef, useCallback } from 'react';
|
|
5
5
|
import { useEditor, EditorContent } from '@tiptap/react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { buildExtendedMap } from './chunk-GYVBRUO2.js';
|
|
2
|
-
import { FiUpload, FiDownload, FiBookmark, FiStar, FiMenu, FiEdit2, FiLogOut, FiSend, FiPaperclip, FiMic, FiMoreVertical, FiArrowLeft, FiRotateCw, FiRotateCcw, FiTrash2, FiChevronDown, FiChevronUp, FiType, FiMinus, FiMessageSquare, FiCode, FiGrid, FiImage, FiLink, FiCheckSquare, FiList, FiAlignRight, FiAlignCenter, FiAlignLeft, FiSlash, FiUnderline, FiItalic, FiBold, FiCalendar, FiClock, FiAlertCircle, FiInfo, FiAlertTriangle, FiCheck, FiUser, FiBell, FiSearch, FiPlus, FiX, FiChevronRight, FiSettings, FiBarChart2, FiFolder, FiHome } from 'react-icons/fi';
|
|
2
|
+
import { FiUpload, FiDownload, FiBookmark, FiStar, FiMoreHorizontal, FiMenu, FiEdit2, FiLogOut, FiSend, FiPaperclip, FiMic, FiMoreVertical, FiArrowLeft, FiRotateCw, FiRotateCcw, FiTrash2, FiChevronDown, FiChevronUp, FiType, FiMinus, FiMessageSquare, FiCode, FiGrid, FiImage, FiLink, FiCheckSquare, FiList, FiAlignRight, FiAlignCenter, FiAlignLeft, FiSlash, FiUnderline, FiItalic, FiBold, FiCalendar, FiClock, FiAlertCircle, FiInfo, FiAlertTriangle, FiCheck, FiUser, FiBell, FiSearch, FiPlus, FiX, FiChevronRight, FiSettings, FiBarChart2, FiFolder, FiHome } from 'react-icons/fi';
|
|
3
3
|
|
|
4
4
|
var curated = {
|
|
5
5
|
"home": FiHome,
|
|
@@ -51,6 +51,7 @@ var curated = {
|
|
|
51
51
|
"log-out": FiLogOut,
|
|
52
52
|
"edit": FiEdit2,
|
|
53
53
|
"menu": FiMenu,
|
|
54
|
+
"more-horizontal": FiMoreHorizontal,
|
|
54
55
|
"star": FiStar,
|
|
55
56
|
"bookmark": FiBookmark,
|
|
56
57
|
"download": FiDownload,
|
|
@@ -67,5 +68,5 @@ async function loadExtended() {
|
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
export { loadCurated, loadExtended };
|
|
70
|
-
//# sourceMappingURL=feather-
|
|
71
|
-
//# sourceMappingURL=feather-
|
|
71
|
+
//# sourceMappingURL=feather-U45EQTAU.js.map
|
|
72
|
+
//# sourceMappingURL=feather-U45EQTAU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../showcase/src/lib/icon-packs/feather.ts"],"names":[],"mappings":";;;AAuBA,IAAM,OAAA,GAAmB;AAAA,EACvB,MAAA,EAAQ,MAAA;AAAA,EAAQ,QAAA,EAAU,QAAA;AAAA,EAAU,OAAA,EAAS,WAAA;AAAA,EAAa,UAAA,EAAY,UAAA;AAAA,EACtE,eAAA,EAAiB,cAAA;AAAA,EAAgB,OAAA,EAAS,GAAA;AAAA,EAAK,MAAA,EAAQ,MAAA;AAAA,EAAQ,QAAA,EAAU,QAAA;AAAA,EACzE,MAAA,EAAQ,MAAA;AAAA,EAAQ,MAAA,EAAQ,MAAA;AAAA,EAAQ,OAAA,EAAS,OAAA;AAAA,EAAS,SAAA,EAAW,eAAA;AAAA,EAC7D,MAAA,EAAQ,MAAA;AAAA,EAAQ,OAAA,EAAS,aAAA;AAAA,EAAe,OAAA,EAAS,OAAA;AAAA,EAAS,UAAA,EAAY,UAAA;AAAA,EACtE,MAAA,EAAQ,MAAA;AAAA,EAAQ,QAAA,EAAU,QAAA;AAAA,EAAU,WAAA,EAAa,WAAA;AAAA,EAAa,eAAA,EAAiB,OAAA;AAAA,EAC/E,YAAA,EAAc,WAAA;AAAA,EAAa,cAAA,EAAgB,aAAA;AAAA,EAAe,aAAA,EAAe,YAAA;AAAA,EACzE,MAAA,EAAQ,MAAA;AAAA,EAAQ,cAAA,EAAgB,MAAA;AAAA,EAAQ,aAAA,EAAe,aAAA;AAAA,EACvD,MAAA,EAAQ,MAAA;AAAA,EAAQ,OAAA,EAAS,OAAA;AAAA,EAAS,OAAA,EAAS,MAAA;AAAA,EAAQ,MAAA,EAAQ,MAAA;AAAA,EAC3D,OAAA,EAAS,eAAA;AAAA,EAAiB,OAAA,EAAS,OAAA;AAAA,EAAS,aAAA,EAAe,WAAA;AAAA,EAC3D,WAAA,EAAa,aAAA;AAAA,EAAe,WAAA,EAAa,OAAA;AAAA,EAAS,MAAA,EAAQ,MAAA;AAAA,EAC1D,YAAA,EAAc,WAAA;AAAA,EAAa,cAAA,EAAgB,aAAA;AAAA,EAAe,OAAA,EAAS,QAAA;AAAA,EACnE,MAAA,EAAQ,WAAA;AAAA,EAAa,MAAA,EAAQ,UAAA;AAAA,EAC7B,YAAA,EAAc,WAAA;AAAA,EAAa,eAAA,EAAiB,cAAA;AAAA,EAC5C,KAAA,EAAO,KAAA;AAAA,EAAO,WAAA,EAAa,WAAA;AAAA,EAAa,MAAA,EAAQ,MAAA;AAAA,EAChD,SAAA,EAAW,QAAA;AAAA,EAAU,MAAA,EAAQ,OAAA;AAAA,EAAS,MAAA,EAAQ,MAAA;AAAA,EAAQ,iBAAA,EAAmB,gBAAA;AAAA,EACzE,MAAA,EAAQ,MAAA;AAAA,EAAQ,UAAA,EAAY,UAAA;AAAA,EAC5B,UAAA,EAAY,UAAA;AAAA,EAAY,QAAA,EAAU;AACpC,CAAA;AAEO,SAAS,WAAA,GAAuB;AACrC,EAAA,OAAO,OAAA;AACT;AAEA,eAAsB,YAAA,GAAiC;AACrD,EAAA,MAAM,CAAA,GAAI,MAAM,OAAO,gBAAgB,CAAA;AACvC,EAAA,MAAM,QAAA,GAAW,iBAAiB,CAAA,EAAyC,IAAI,EAAE,WAAA,EAAa,MAAM,CAAA;AACpG,EAAA,MAAA,CAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAC/B,EAAA,OAAO,QAAA;AACT","file":"feather-U45EQTAU.js","sourcesContent":["import type { IconMap } from './types'\nimport { buildExtendedMap } from './utils'\nimport {\n FiHome, FiFolder, FiBarChart2, FiSettings,\n FiChevronRight, FiX, FiPlus, FiSearch,\n FiBell, FiUser, FiCheck, FiAlertTriangle,\n FiInfo, FiAlertCircle, FiClock, FiCalendar,\n FiBold, FiItalic, FiUnderline, FiSlash,\n FiAlignLeft, FiAlignCenter, FiAlignRight,\n FiList, FiCheckSquare,\n FiLink, FiImage, FiGrid, FiCode,\n FiMessageSquare, FiMinus, FiChevronUp,\n FiChevronDown, FiEdit2, FiType,\n FiTrash2,\n FiRotateCcw, FiRotateCw,\n FiArrowLeft, FiMoreVertical,\n FiMic, FiPaperclip, FiSend,\n FiLogOut, FiMenu,\n FiStar, FiBookmark,\n FiDownload, FiUpload,\n FiMoreHorizontal,\n} from \"react-icons/fi\"\n\nconst curated: IconMap = {\n \"home\": FiHome, \"folder\": FiFolder, \"chart\": FiBarChart2, \"settings\": FiSettings,\n \"chevron-right\": FiChevronRight, \"close\": FiX, \"plus\": FiPlus, \"search\": FiSearch,\n \"bell\": FiBell, \"user\": FiUser, \"check\": FiCheck, \"warning\": FiAlertTriangle,\n \"info\": FiInfo, \"error\": FiAlertCircle, \"clock\": FiClock, \"calendar\": FiCalendar,\n \"bold\": FiBold, \"italic\": FiItalic, \"underline\": FiUnderline, \"strikethrough\": FiSlash,\n \"align-left\": FiAlignLeft, \"align-center\": FiAlignCenter, \"align-right\": FiAlignRight,\n \"list\": FiList, \"list-ordered\": FiList, \"list-checks\": FiCheckSquare,\n \"link\": FiLink, \"image\": FiImage, \"table\": FiGrid, \"code\": FiCode,\n \"quote\": FiMessageSquare, \"minus\": FiMinus, \"superscript\": FiChevronUp,\n \"subscript\": FiChevronDown, \"highlight\": FiEdit2, \"type\": FiType,\n \"chevron-up\": FiChevronUp, \"chevron-down\": FiChevronDown, \"trash\": FiTrash2,\n \"undo\": FiRotateCcw, \"redo\": FiRotateCw,\n \"arrow-left\": FiArrowLeft, \"grip-vertical\": FiMoreVertical,\n \"mic\": FiMic, \"paperclip\": FiPaperclip, \"send\": FiSend,\n \"log-out\": FiLogOut, \"edit\": FiEdit2, \"menu\": FiMenu, \"more-horizontal\": FiMoreHorizontal,\n \"star\": FiStar, \"bookmark\": FiBookmark,\n \"download\": FiDownload, \"upload\": FiUpload,\n}\n\nexport function loadCurated(): IconMap {\n return curated\n}\n\nexport async function loadExtended(): Promise<IconMap> {\n const F = await import(\"react-icons/fi\")\n const extended = buildExtendedMap(F as unknown as Record<string, unknown>, {}, { stripPrefix: \"Fi\" })\n Object.assign(extended, curated)\n return extended\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { buildExtendedMap } from './chunk-GYVBRUO2.js';
|
|
2
|
-
import { ArrowUpTrayIcon, ArrowDownTrayIcon, BookmarkIcon, StarIcon, Bars3Icon, PencilIcon, ArrowRightStartOnRectangleIcon, PaperAirplaneIcon, PaperClipIcon, MicrophoneIcon, Bars2Icon, ArrowLeftIcon, ArrowUturnRightIcon, ArrowUturnLeftIcon, TrashIcon, ChevronDownIcon, ChevronUpIcon, LanguageIcon, PaintBrushIcon, H2Icon, H1Icon, MinusIcon, ChatBubbleBottomCenterTextIcon, CodeBracketIcon, TableCellsIcon, PhotoIcon, LinkIcon, ClipboardDocumentCheckIcon, NumberedListIcon, ListBulletIcon, Bars3BottomRightIcon, Bars3BottomLeftIcon, StrikethroughIcon, UnderlineIcon, ItalicIcon, BoldIcon, CalendarDaysIcon, ClockIcon, ExclamationCircleIcon, InformationCircleIcon, ExclamationTriangleIcon, CheckIcon, UserIcon, BellIcon, MagnifyingGlassIcon, PlusIcon, XMarkIcon, ChevronRightIcon, Cog6ToothIcon, ChartBarIcon, FolderIcon, HomeIcon } from '@heroicons/react/24/outline';
|
|
2
|
+
import { ArrowUpTrayIcon, ArrowDownTrayIcon, BookmarkIcon, StarIcon, EllipsisHorizontalIcon, Bars3Icon, PencilIcon, ArrowRightStartOnRectangleIcon, PaperAirplaneIcon, PaperClipIcon, MicrophoneIcon, Bars2Icon, ArrowLeftIcon, ArrowUturnRightIcon, ArrowUturnLeftIcon, TrashIcon, ChevronDownIcon, ChevronUpIcon, LanguageIcon, PaintBrushIcon, H2Icon, H1Icon, MinusIcon, ChatBubbleBottomCenterTextIcon, CodeBracketIcon, TableCellsIcon, PhotoIcon, LinkIcon, ClipboardDocumentCheckIcon, NumberedListIcon, ListBulletIcon, Bars3BottomRightIcon, Bars3BottomLeftIcon, StrikethroughIcon, UnderlineIcon, ItalicIcon, BoldIcon, CalendarDaysIcon, ClockIcon, ExclamationCircleIcon, InformationCircleIcon, ExclamationTriangleIcon, CheckIcon, UserIcon, BellIcon, MagnifyingGlassIcon, PlusIcon, XMarkIcon, ChevronRightIcon, Cog6ToothIcon, ChartBarIcon, FolderIcon, HomeIcon } from '@heroicons/react/24/outline';
|
|
3
3
|
|
|
4
4
|
var curated = {
|
|
5
5
|
"home": HomeIcon,
|
|
@@ -51,6 +51,7 @@ var curated = {
|
|
|
51
51
|
"log-out": ArrowRightStartOnRectangleIcon,
|
|
52
52
|
"edit": PencilIcon,
|
|
53
53
|
"menu": Bars3Icon,
|
|
54
|
+
"more-horizontal": EllipsisHorizontalIcon,
|
|
54
55
|
"star": StarIcon,
|
|
55
56
|
"bookmark": BookmarkIcon,
|
|
56
57
|
"download": ArrowDownTrayIcon,
|
|
@@ -67,5 +68,5 @@ async function loadExtended() {
|
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
export { loadCurated, loadExtended };
|
|
70
|
-
//# sourceMappingURL=heroicons-
|
|
71
|
-
//# sourceMappingURL=heroicons-
|
|
71
|
+
//# sourceMappingURL=heroicons-D3G7QU45.js.map
|
|
72
|
+
//# sourceMappingURL=heroicons-D3G7QU45.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../showcase/src/lib/icon-packs/heroicons.ts"],"names":[],"mappings":";;;AA4BA,IAAM,OAAA,GAAmB;AAAA,EACvB,MAAA,EAAQ,QAAA;AAAA,EAAU,QAAA,EAAU,UAAA;AAAA,EAAY,OAAA,EAAS,YAAA;AAAA,EACjD,UAAA,EAAY,aAAA;AAAA,EAAe,eAAA,EAAiB,gBAAA;AAAA,EAC5C,OAAA,EAAS,SAAA;AAAA,EAAW,MAAA,EAAQ,QAAA;AAAA,EAAU,QAAA,EAAU,mBAAA;AAAA,EAChD,MAAA,EAAQ,QAAA;AAAA,EAAU,MAAA,EAAQ,QAAA;AAAA,EAAU,OAAA,EAAS,SAAA;AAAA,EAC7C,SAAA,EAAW,uBAAA;AAAA,EAAyB,MAAA,EAAQ,qBAAA;AAAA,EAC5C,OAAA,EAAS,qBAAA;AAAA,EAAuB,OAAA,EAAS,SAAA;AAAA,EAAW,UAAA,EAAY,gBAAA;AAAA,EAChE,MAAA,EAAQ,QAAA;AAAA,EAAU,QAAA,EAAU,UAAA;AAAA,EAAY,WAAA,EAAa,aAAA;AAAA,EACrD,eAAA,EAAiB,iBAAA;AAAA,EAAmB,YAAA,EAAc,mBAAA;AAAA,EAClD,cAAA,EAAgB,SAAA;AAAA,EAAW,aAAA,EAAe,oBAAA;AAAA,EAC1C,MAAA,EAAQ,cAAA;AAAA,EAAgB,cAAA,EAAgB,gBAAA;AAAA,EACxC,aAAA,EAAe,0BAAA;AAAA,EAA4B,MAAA,EAAQ,QAAA;AAAA,EACnD,OAAA,EAAS,SAAA;AAAA,EAAW,OAAA,EAAS,cAAA;AAAA,EAAgB,MAAA,EAAQ,eAAA;AAAA,EACrD,OAAA,EAAS,8BAAA;AAAA,EAAgC,OAAA,EAAS,SAAA;AAAA,EAClD,aAAA,EAAe,MAAA;AAAA,EAAQ,WAAA,EAAa,MAAA;AAAA,EACpC,WAAA,EAAa,cAAA;AAAA,EAAgB,MAAA,EAAQ,YAAA;AAAA,EACrC,YAAA,EAAc,aAAA;AAAA,EAAe,cAAA,EAAgB,eAAA;AAAA,EAAiB,OAAA,EAAS,SAAA;AAAA,EACvE,MAAA,EAAQ,kBAAA;AAAA,EAAoB,MAAA,EAAQ,mBAAA;AAAA,EACpC,YAAA,EAAc,aAAA;AAAA,EAAe,eAAA,EAAiB,SAAA;AAAA,EAC9C,KAAA,EAAO,cAAA;AAAA,EAAgB,WAAA,EAAa,aAAA;AAAA,EAAe,MAAA,EAAQ,iBAAA;AAAA,EAC3D,SAAA,EAAW,8BAAA;AAAA,EAAgC,MAAA,EAAQ,UAAA;AAAA,EAAY,MAAA,EAAQ,SAAA;AAAA,EAAW,iBAAA,EAAmB,sBAAA;AAAA,EACrG,MAAA,EAAQ,QAAA;AAAA,EAAU,UAAA,EAAY,YAAA;AAAA,EAC9B,UAAA,EAAY,iBAAA;AAAA,EAAmB,QAAA,EAAU;AAC3C,CAAA;AAEO,SAAS,WAAA,GAAuB;AACrC,EAAA,OAAO,OAAA;AACT;AAEA,eAAsB,YAAA,GAAiC;AACrD,EAAA,MAAM,CAAA,GAAI,MAAM,OAAO,6BAA6B,CAAA;AACpD,EAAA,MAAM,QAAA,GAAW,iBAAiB,CAAA,EAAyC,IAAI,EAAE,WAAA,EAAa,QAAQ,CAAA;AACtG,EAAA,MAAA,CAAO,MAAA,CAAO,UAAU,OAAO,CAAA;AAC/B,EAAA,OAAO,QAAA;AACT","file":"heroicons-D3G7QU45.js","sourcesContent":["import type { IconMap } from './types'\nimport { buildExtendedMap } from './utils'\nimport {\n HomeIcon, FolderIcon, ChartBarIcon,\n Cog6ToothIcon, ChevronRightIcon,\n XMarkIcon, PlusIcon, MagnifyingGlassIcon,\n BellIcon, UserIcon, CheckIcon,\n ExclamationTriangleIcon, InformationCircleIcon,\n ExclamationCircleIcon, ClockIcon, CalendarDaysIcon,\n BoldIcon, ItalicIcon, UnderlineIcon,\n StrikethroughIcon, Bars3BottomLeftIcon,\n Bars3Icon, Bars3BottomRightIcon,\n ListBulletIcon, NumberedListIcon,\n ClipboardDocumentCheckIcon, LinkIcon,\n PhotoIcon, TableCellsIcon, CodeBracketIcon,\n ChatBubbleBottomCenterTextIcon, MinusIcon,\n H1Icon, H2Icon,\n PaintBrushIcon, LanguageIcon,\n ChevronUpIcon, ChevronDownIcon, TrashIcon,\n ArrowUturnLeftIcon, ArrowUturnRightIcon,\n ArrowLeftIcon, Bars2Icon,\n MicrophoneIcon, PaperClipIcon, PaperAirplaneIcon,\n ArrowRightStartOnRectangleIcon, PencilIcon,\n StarIcon, BookmarkIcon,\n ArrowDownTrayIcon, ArrowUpTrayIcon,\n EllipsisHorizontalIcon,\n} from \"@heroicons/react/24/outline\"\n\nconst curated: IconMap = {\n \"home\": HomeIcon, \"folder\": FolderIcon, \"chart\": ChartBarIcon,\n \"settings\": Cog6ToothIcon, \"chevron-right\": ChevronRightIcon,\n \"close\": XMarkIcon, \"plus\": PlusIcon, \"search\": MagnifyingGlassIcon,\n \"bell\": BellIcon, \"user\": UserIcon, \"check\": CheckIcon,\n \"warning\": ExclamationTriangleIcon, \"info\": InformationCircleIcon,\n \"error\": ExclamationCircleIcon, \"clock\": ClockIcon, \"calendar\": CalendarDaysIcon,\n \"bold\": BoldIcon, \"italic\": ItalicIcon, \"underline\": UnderlineIcon,\n \"strikethrough\": StrikethroughIcon, \"align-left\": Bars3BottomLeftIcon,\n \"align-center\": Bars3Icon, \"align-right\": Bars3BottomRightIcon,\n \"list\": ListBulletIcon, \"list-ordered\": NumberedListIcon,\n \"list-checks\": ClipboardDocumentCheckIcon, \"link\": LinkIcon,\n \"image\": PhotoIcon, \"table\": TableCellsIcon, \"code\": CodeBracketIcon,\n \"quote\": ChatBubbleBottomCenterTextIcon, \"minus\": MinusIcon,\n \"superscript\": H1Icon, \"subscript\": H2Icon,\n \"highlight\": PaintBrushIcon, \"type\": LanguageIcon,\n \"chevron-up\": ChevronUpIcon, \"chevron-down\": ChevronDownIcon, \"trash\": TrashIcon,\n \"undo\": ArrowUturnLeftIcon, \"redo\": ArrowUturnRightIcon,\n \"arrow-left\": ArrowLeftIcon, \"grip-vertical\": Bars2Icon,\n \"mic\": MicrophoneIcon, \"paperclip\": PaperClipIcon, \"send\": PaperAirplaneIcon,\n \"log-out\": ArrowRightStartOnRectangleIcon, \"edit\": PencilIcon, \"menu\": Bars3Icon, \"more-horizontal\": EllipsisHorizontalIcon,\n \"star\": StarIcon, \"bookmark\": BookmarkIcon,\n \"download\": ArrowDownTrayIcon, \"upload\": ArrowUpTrayIcon,\n}\n\nexport function loadCurated(): IconMap {\n return curated\n}\n\nexport async function loadExtended(): Promise<IconMap> {\n const H = await import(\"@heroicons/react/24/outline\")\n const extended = buildExtendedMap(H as unknown as Record<string, unknown>, {}, { stripSuffix: \"Icon\" })\n Object.assign(extended, curated)\n return extended\n}\n"]}
|
package/dist/icons.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { ReactNode } from 'react';
|
|
|
7
7
|
* Every name must have an alias (or auto-kebab match) in ALL five packs —
|
|
8
8
|
* icon-completeness.test.tsx enforces this.
|
|
9
9
|
*/
|
|
10
|
-
declare const CURATED_ICON_NAMES: readonly ["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", "star", "bookmark", "download", "upload"];
|
|
10
|
+
declare const CURATED_ICON_NAMES: readonly ["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", "more-horizontal", "star", "bookmark", "download", "upload"];
|
|
11
11
|
type CuratedIconName = (typeof CURATED_ICON_NAMES)[number];
|
|
12
12
|
/**
|
|
13
13
|
* Curated names provide autocomplete and work identically across all 5 packs.
|
package/dist/icons.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Skeleton } from './chunk-OUYJXVLQ.js';
|
|
2
2
|
export { Skeleton } from './chunk-OUYJXVLQ.js';
|
|
3
|
-
import { Badge } from './chunk-
|
|
4
|
-
export { Badge } from './chunk-
|
|
3
|
+
import { Badge } from './chunk-UYGTAVKR.js';
|
|
4
|
+
export { Badge } from './chunk-UYGTAVKR.js';
|
|
5
5
|
import { useBreakpoint } from './chunk-DPF6776I.js';
|
|
6
6
|
export { BreakpointWidthProvider, useBreakpoint } from './chunk-DPF6776I.js';
|
|
7
7
|
import { Tooltip, useTextOverflow, usePosition, Slot } from './chunk-CHNY75QI.js';
|
|
8
8
|
export { Tooltip, useTextOverflow } from './chunk-CHNY75QI.js';
|
|
9
|
-
import { Icon } from './chunk-
|
|
9
|
+
import { Icon } from './chunk-GX6O72IV.js';
|
|
10
10
|
import { cn, GLASS_SURFACE, GLASS_BACKDROP, GLASS_DROPDOWN, lockBodyScroll, unlockBodyScroll, GLASS_OVERLAY } from './chunk-IUBWNDUK.js';
|
|
11
11
|
import { createContext, forwardRef, useContext, useState, useRef, useEffect, useCallback, useId, isValidElement, cloneElement, useMemo, Children, Fragment as Fragment$1, useLayoutEffect } from 'react';
|
|
12
12
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -81,6 +81,7 @@ var Button = forwardRef(function Button2({ variant = "default", size: sizeProp,
|
|
|
81
81
|
"button",
|
|
82
82
|
{
|
|
83
83
|
ref,
|
|
84
|
+
"data-variant": variant,
|
|
84
85
|
className: cn(
|
|
85
86
|
"relative inline-flex items-center justify-center gap-ds-2 whitespace-nowrap font-medium",
|
|
86
87
|
isLink ? cn(
|
|
@@ -598,12 +599,13 @@ function Dropdown({
|
|
|
598
599
|
focusOption(current < 0 ? els.length - 1 : current - 1);
|
|
599
600
|
return;
|
|
600
601
|
}
|
|
601
|
-
|
|
602
|
+
const inSearch = document.activeElement === searchRef.current;
|
|
603
|
+
if (e.key === "Home" && !inSearch) {
|
|
602
604
|
e.preventDefault();
|
|
603
605
|
focusOption(0);
|
|
604
606
|
return;
|
|
605
607
|
}
|
|
606
|
-
if (e.key === "End") {
|
|
608
|
+
if (e.key === "End" && !inSearch) {
|
|
607
609
|
e.preventDefault();
|
|
608
610
|
focusOption(els.length - 1);
|
|
609
611
|
return;
|
|
@@ -1152,6 +1154,38 @@ function RadioGroup({ value, onChange, options, orientation = "vertical", classN
|
|
|
1152
1154
|
)
|
|
1153
1155
|
] });
|
|
1154
1156
|
}
|
|
1157
|
+
var FOCUSABLE = 'a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])';
|
|
1158
|
+
var FIELD = "input, select, textarea, [contenteditable='true']";
|
|
1159
|
+
var SAFE_BUTTON = 'button:not([data-variant="destructive"])';
|
|
1160
|
+
var OVERLAY_CLOSE_ATTR = "data-overlay-close";
|
|
1161
|
+
function focusInitial(root, opts = {}) {
|
|
1162
|
+
if (!root) return false;
|
|
1163
|
+
const all = Array.from(root.querySelectorAll(FOCUSABLE));
|
|
1164
|
+
if (!all.length) return false;
|
|
1165
|
+
const candidates = all.filter((el) => !el.hasAttribute(OVERLAY_CLOSE_ATTR));
|
|
1166
|
+
if (opts.destructive) {
|
|
1167
|
+
const safe = candidates.find((el) => el.matches(SAFE_BUTTON));
|
|
1168
|
+
if (safe) {
|
|
1169
|
+
safe.focus();
|
|
1170
|
+
return true;
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
const target = candidates.find((el) => el.matches(FIELD)) ?? candidates[0] ?? all[0];
|
|
1174
|
+
target.focus();
|
|
1175
|
+
return true;
|
|
1176
|
+
}
|
|
1177
|
+
function useReturnFocus(open) {
|
|
1178
|
+
const triggerRef = useRef(null);
|
|
1179
|
+
useEffect(() => {
|
|
1180
|
+
if (open) {
|
|
1181
|
+
triggerRef.current = document.activeElement;
|
|
1182
|
+
return;
|
|
1183
|
+
}
|
|
1184
|
+
const el = triggerRef.current;
|
|
1185
|
+
triggerRef.current = null;
|
|
1186
|
+
if (el && el.isConnected && typeof el.focus === "function") el.focus();
|
|
1187
|
+
}, [open]);
|
|
1188
|
+
}
|
|
1155
1189
|
var DAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
1156
1190
|
var MONTHS = [
|
|
1157
1191
|
"January",
|
|
@@ -1214,6 +1248,10 @@ function DatePicker({ value, onChange, placeholder = "Pick a date", disabled, cl
|
|
|
1214
1248
|
const nextMonth = () => setViewDate(new Date(year, month + 1, 1));
|
|
1215
1249
|
const startOf = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
1216
1250
|
const isDisabledDay = (d) => !!min && d < startOf(min) || !!max && d > startOf(max);
|
|
1251
|
+
useReturnFocus(open);
|
|
1252
|
+
useEffect(() => {
|
|
1253
|
+
if (open) requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
1254
|
+
}, [open]);
|
|
1217
1255
|
const selectDay = (day) => {
|
|
1218
1256
|
const d = new Date(year, month, day);
|
|
1219
1257
|
if (isDisabledDay(d)) return;
|
|
@@ -1589,6 +1627,10 @@ function DateRangePicker({
|
|
|
1589
1627
|
const pos = usePosition(triggerRef, panelRef, open, { side: "bottom", align: "start", offset: 4, flip: true });
|
|
1590
1628
|
const today = useMemo(() => startOfDay(/* @__PURE__ */ new Date()), []);
|
|
1591
1629
|
const dayNames = getOrderedDayNamesShort(weekStartsOn);
|
|
1630
|
+
useReturnFocus(open);
|
|
1631
|
+
useEffect(() => {
|
|
1632
|
+
if (open) requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
1633
|
+
}, [open]);
|
|
1592
1634
|
useEffect(() => {
|
|
1593
1635
|
if (!open) return;
|
|
1594
1636
|
const onMouse = (e) => {
|
|
@@ -7776,7 +7818,7 @@ function Popover({ open, onOpenChange, trigger, children, side = "bottom", align
|
|
|
7776
7818
|
};
|
|
7777
7819
|
}, [open, onOpenChange]);
|
|
7778
7820
|
useEffect(() => {
|
|
7779
|
-
if (open) floatingRef.current
|
|
7821
|
+
if (open) focusInitial(floatingRef.current);
|
|
7780
7822
|
}, [open]);
|
|
7781
7823
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7782
7824
|
/* @__PURE__ */ jsx(
|
|
@@ -9910,11 +9952,12 @@ function Drawer({ open, onClose, position = "right", width = "400px", title, chi
|
|
|
9910
9952
|
if (!container) unlockBodyScroll();
|
|
9911
9953
|
};
|
|
9912
9954
|
}, [open, container]);
|
|
9955
|
+
useReturnFocus(open);
|
|
9913
9956
|
useEffect(() => {
|
|
9914
|
-
if (!open) return;
|
|
9915
|
-
const
|
|
9916
|
-
|
|
9917
|
-
}, [open]);
|
|
9957
|
+
if (!open || !mounted) return;
|
|
9958
|
+
const raf = requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
9959
|
+
return () => cancelAnimationFrame(raf);
|
|
9960
|
+
}, [open, mounted]);
|
|
9918
9961
|
if (!mounted) return null;
|
|
9919
9962
|
const slide = slideClasses[position];
|
|
9920
9963
|
const isHorizontal = position === "left" || position === "right";
|
|
@@ -9984,6 +10027,7 @@ function Drawer({ open, onClose, position = "right", width = "400px", title, chi
|
|
|
9984
10027
|
"button",
|
|
9985
10028
|
{
|
|
9986
10029
|
onClick: onClose,
|
|
10030
|
+
...{ [OVERLAY_CLOSE_ATTR]: "" },
|
|
9987
10031
|
className: "text-[var(--ds-text-muted)] hover:text-[var(--ds-text-primary)] transition-colors cursor-pointer",
|
|
9988
10032
|
"aria-label": "Close",
|
|
9989
10033
|
children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 18 })
|
|
@@ -10552,7 +10596,6 @@ var sizeClasses = {
|
|
|
10552
10596
|
xl: "max-w-4xl",
|
|
10553
10597
|
full: "max-w-[calc(100vw-2rem)]"
|
|
10554
10598
|
};
|
|
10555
|
-
var FOCUSABLE = 'a[href], button:not(:disabled), input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"])';
|
|
10556
10599
|
function Dialog({ open, onClose, title, description, children, footer, variant = "default", size = "md", alert = false, container, onSubmit }) {
|
|
10557
10600
|
const titleId = useId();
|
|
10558
10601
|
const descriptionId = useId();
|
|
@@ -10584,14 +10627,7 @@ function Dialog({ open, onClose, title, description, children, footer, variant =
|
|
|
10584
10627
|
if (!open) return;
|
|
10585
10628
|
triggerRef.current = document.activeElement;
|
|
10586
10629
|
requestAnimationFrame(() => {
|
|
10587
|
-
|
|
10588
|
-
if (focusable?.length) {
|
|
10589
|
-
if (variant === "destructive" && focusable.length > 1) {
|
|
10590
|
-
focusable[focusable.length - 1].focus();
|
|
10591
|
-
} else {
|
|
10592
|
-
focusable[0].focus();
|
|
10593
|
-
}
|
|
10594
|
-
}
|
|
10630
|
+
focusInitial(dialogRef.current, { destructive: variant === "destructive" });
|
|
10595
10631
|
});
|
|
10596
10632
|
}, [open, variant]);
|
|
10597
10633
|
useEffect(() => {
|
|
@@ -10662,6 +10698,7 @@ function Dialog({ open, onClose, title, description, children, footer, variant =
|
|
|
10662
10698
|
{
|
|
10663
10699
|
type: "button",
|
|
10664
10700
|
onClick: onClose,
|
|
10701
|
+
...{ [OVERLAY_CLOSE_ATTR]: "" },
|
|
10665
10702
|
className: "absolute right-4 top-4 text-[var(--ds-text-muted)] hover:text-[var(--ds-text-primary)] transition-colors cursor-pointer",
|
|
10666
10703
|
"aria-label": "Close",
|
|
10667
10704
|
children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 18 })
|
|
@@ -11070,6 +11107,12 @@ function Sheet({ open, onClose, title, children, footer, snapPoints = [0.5, 0.92
|
|
|
11070
11107
|
function handleTransitionEnd() {
|
|
11071
11108
|
if (!open) setMounted(false);
|
|
11072
11109
|
}
|
|
11110
|
+
useReturnFocus(open);
|
|
11111
|
+
useEffect(() => {
|
|
11112
|
+
if (!open || !mounted) return;
|
|
11113
|
+
const raf = requestAnimationFrame(() => focusInitial(panelRef.current));
|
|
11114
|
+
return () => cancelAnimationFrame(raf);
|
|
11115
|
+
}, [open, mounted]);
|
|
11073
11116
|
useEffect(() => {
|
|
11074
11117
|
if (!open) return;
|
|
11075
11118
|
const onKeyDown = (e) => {
|
|
@@ -11182,6 +11225,7 @@ function Sheet({ open, onClose, title, children, footer, snapPoints = [0.5, 0.92
|
|
|
11182
11225
|
"button",
|
|
11183
11226
|
{
|
|
11184
11227
|
onClick: onClose,
|
|
11228
|
+
...{ [OVERLAY_CLOSE_ATTR]: "" },
|
|
11185
11229
|
className: "text-[var(--ds-text-muted)] hover:text-[var(--ds-text-primary)] transition-colors cursor-pointer",
|
|
11186
11230
|
"aria-label": "Close",
|
|
11187
11231
|
children: /* @__PURE__ */ jsx(Icon, { name: "close", size: 18 })
|
|
@@ -11953,8 +11997,6 @@ var toastSeq = 0;
|
|
|
11953
11997
|
function ToastProvider({ children, maxVisible = 3, position = "bottom-right", duration = 3e3, mode, pauseOnHover = true }) {
|
|
11954
11998
|
const [queue, setQueue] = useState([]);
|
|
11955
11999
|
const isMobile = useBreakpoint("sm");
|
|
11956
|
-
const queueRef = useRef(queue);
|
|
11957
|
-
queueRef.current = queue;
|
|
11958
12000
|
const dismiss = useCallback((id) => {
|
|
11959
12001
|
setQueue((q) => q.filter((t) => t.id !== id));
|
|
11960
12002
|
}, []);
|