gridsmith-ui 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/charts.js +2 -2
  2. package/dist/{chunk-XUBVMRIE.js → chunk-GX6O72IV.js} +7 -7
  3. package/dist/chunk-GX6O72IV.js.map +1 -0
  4. package/dist/{chunk-OUYJXVLQ.js → chunk-QGBG72OB.js} +3 -3
  5. package/dist/{chunk-OUYJXVLQ.js.map → chunk-QGBG72OB.js.map} +1 -1
  6. package/dist/{chunk-CHNY75QI.js → chunk-R5QGJURZ.js} +3 -3
  7. package/dist/{chunk-CHNY75QI.js.map → chunk-R5QGJURZ.js.map} +1 -1
  8. package/dist/{chunk-IUBWNDUK.js → chunk-TTZSZNJ6.js} +7 -3
  9. package/dist/chunk-TTZSZNJ6.js.map +1 -0
  10. package/dist/{chunk-4SDKQDYV.js → chunk-TYU2LQGK.js} +5 -5
  11. package/dist/{chunk-4SDKQDYV.js.map → chunk-TYU2LQGK.js.map} +1 -1
  12. package/dist/data-grid.js +3 -3
  13. package/dist/editor.js +6 -6
  14. package/dist/editor.js.map +1 -1
  15. package/dist/{feather-V32UNIQL.js → feather-U45EQTAU.js} +4 -3
  16. package/dist/feather-U45EQTAU.js.map +1 -0
  17. package/dist/{heroicons-CA5OQ76O.js → heroicons-D3G7QU45.js} +4 -3
  18. package/dist/heroicons-D3G7QU45.js.map +1 -0
  19. package/dist/icons.d.ts +1 -1
  20. package/dist/icons.js +1 -1
  21. package/dist/index.js +92 -49
  22. package/dist/index.js.map +1 -1
  23. package/dist/kanban.js +4 -4
  24. package/dist/{lucide-AILUUOAJ.js → lucide-OGUV44TQ.js} +4 -3
  25. package/dist/lucide-OGUV44TQ.js.map +1 -0
  26. package/dist/{phosphor-A4JOBGMT.js → phosphor-QG2ZMEMZ.js} +4 -3
  27. package/dist/phosphor-QG2ZMEMZ.js.map +1 -0
  28. package/dist/resizable.js +3 -3
  29. package/dist/resizable.js.map +1 -1
  30. package/dist/roots.css +4 -3
  31. package/dist/{tabler-TVOR6AFM.js → tabler-MW2HN55L.js} +4 -3
  32. package/dist/tabler-MW2HN55L.js.map +1 -0
  33. package/dist/tokens.css +3 -2
  34. package/dist/utils.d.ts +5 -1
  35. package/dist/utils.js +1 -1
  36. package/dist/virtualized.js +1 -1
  37. package/dist-static/tokens.css +3 -2
  38. package/package.json +1 -1
  39. package/dist/chunk-IUBWNDUK.js.map +0 -1
  40. package/dist/chunk-XUBVMRIE.js.map +0 -1
  41. package/dist/feather-V32UNIQL.js.map +0 -1
  42. package/dist/heroicons-CA5OQ76O.js.map +0 -1
  43. package/dist/lucide-AILUUOAJ.js.map +0 -1
  44. package/dist/phosphor-A4JOBGMT.js.map +0 -1
  45. package/dist/tabler-TVOR6AFM.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../showcase/src/components/RichTextEditor.tsx"],"names":[],"mappings":"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","file":"editor.js","sourcesContent":["import { useState, useCallback, useRef, useEffect, type Ref } from \"react\";\nimport { useEditor, EditorContent, type Editor } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport Image from \"@tiptap/extension-image\";\nimport { Table } from \"@tiptap/extension-table\";\nimport { TableRow } from \"@tiptap/extension-table-row\";\nimport { TableCell } from \"@tiptap/extension-table-cell\";\nimport { TableHeader } from \"@tiptap/extension-table-header\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport CodeBlockLowlight from \"@tiptap/extension-code-block-lowlight\";\nimport Underline from \"@tiptap/extension-underline\";\nimport { TextStyle, FontSize } from \"@tiptap/extension-text-style\";\nimport Color from \"@tiptap/extension-color\";\nimport Highlight from \"@tiptap/extension-highlight\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport Subscript from \"@tiptap/extension-subscript\";\nimport Superscript from \"@tiptap/extension-superscript\";\nimport FontFamily from \"@tiptap/extension-font-family\";\nimport { all, createLowlight } from \"lowlight\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../lib/icons\";\nimport { useBreakpoint } from \"../lib/use-breakpoint\";\n\nconst lowlight = createLowlight(all);\n\nexport type ToolbarGroup =\n | \"blockType\"\n | \"fontFamily\"\n | \"textSize\"\n | \"formatting\"\n | \"colors\"\n | \"alignment\"\n | \"lists\"\n | \"blocks\"\n | \"insert\"\n | \"extras\"\n | \"history\";\n\nconst DEFAULT_TOOLBAR: ToolbarGroup[] = [\n \"blockType\", \"fontFamily\", \"textSize\",\n \"formatting\", \"colors\", \"alignment\",\n \"lists\", \"blocks\", \"insert\", \"extras\", \"history\",\n];\n\nconst MINIMAL_TOOLBAR: ToolbarGroup[] = [\n \"formatting\", \"lists\", \"insert\", \"history\",\n];\n\nexport interface RichTextEditorProps {\n content?: string;\n placeholder?: string;\n onChange?: (html: string) => void;\n editable?: boolean;\n toolbar?: ToolbarGroup[] | \"full\" | \"minimal\";\n className?: string;\n ref?: Ref<HTMLDivElement>;\n /** Accessible name for the editable area. Default \"Rich text editor\". */\n label?: string;\n}\n\nexport function RichTextEditor({\n content = \"\",\n placeholder = \"Start writing...\",\n onChange,\n editable = true,\n toolbar = \"full\",\n className,\n ref, label = \"Rich text editor\" }: RichTextEditorProps) {\n const resolvedToolbar = toolbar === \"full\" ? DEFAULT_TOOLBAR : toolbar === \"minimal\" ? MINIMAL_TOOLBAR : toolbar;\n const editor = useEditor({\n extensions: [\n StarterKit.configure({ codeBlock: false }),\n Link.configure({ openOnClick: false, HTMLAttributes: { class: \"rte-link\" } }),\n Image.configure({ inline: false, allowBase64: true }),\n CodeBlockLowlight.configure({ lowlight }),\n Table.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n Placeholder.configure({ placeholder }),\n Underline,\n TextStyle,\n FontSize,\n Color,\n Highlight.configure({ multicolor: true }),\n TextAlign.configure({ types: [\"heading\", \"paragraph\"] }),\n TaskList,\n TaskItem.configure({ nested: true }),\n Subscript,\n Superscript,\n FontFamily,\n ],\n content,\n editable,\n // Setting attributes replaces tiptap's defaults, so restore role=\"textbox\" alongside the name.\n editorProps: { attributes: { role: \"textbox\", \"aria-label\": label, \"aria-multiline\": \"true\" } },\n onUpdate: ({ editor: e }) => onChange?.(e.getHTML()),\n });\n\n if (!editor) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col rounded-[var(--ds-radius-md)] overflow-hidden\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-default)]\",\n \"bg-[var(--ds-bg-surface)]\",\n className,\n )}\n >\n {editable && <Toolbar editor={editor} groups={resolvedToolbar} />}\n\n <EditorContent\n editor={editor}\n className={cn(\n \"rte-content\",\n \"flex-1 overflow-y-auto px-ds-4 py-ds-3\",\n \"text-sm text-[var(--ds-text-primary)]\",\n \"focus-within:outline-none\",\n )}\n />\n </div>\n );\n}\n\n/* ── Toolbar ──────────────────────────────────────────────────────── */\n\nconst TEXT_COLORS = [\n { label: \"Default\", value: \"\" },\n { label: \"Red\", value: \"#ef4444\" },\n { label: \"Orange\", value: \"#f97316\" },\n { label: \"Yellow\", value: \"#eab308\" },\n { label: \"Green\", value: \"#22c55e\" },\n { label: \"Blue\", value: \"#3b82f6\" },\n { label: \"Purple\", value: \"#a855f7\" },\n { label: \"Pink\", value: \"#ec4899\" },\n];\n\nconst HIGHLIGHT_COLORS = [\n { label: \"None\", value: \"\" },\n { label: \"Yellow\", value: \"#fef08a\" },\n { label: \"Green\", value: \"#bbf7d0\" },\n { label: \"Blue\", value: \"#bfdbfe\" },\n { label: \"Pink\", value: \"#fbcfe8\" },\n { label: \"Orange\", value: \"#fed7aa\" },\n { label: \"Purple\", value: \"#e9d5ff\" },\n];\n\nconst FONT_FAMILIES = [\n { label: \"Default\", value: \"\" },\n { label: \"Sans\", value: \"var(--ds-font-sans)\" },\n { label: \"Mono\", value: \"var(--ds-font-mono)\" },\n { label: \"Display\", value: \"var(--ds-font-display)\" },\n { label: \"Serif\", value: \"Georgia, serif\" },\n];\n\nconst TEXT_SIZES = [\n { label: \"Small\", value: \"0.85em\" },\n { label: \"Normal\", value: \"\" },\n { label: \"Large\", value: \"1.2em\" },\n { label: \"Huge\", value: \"1.5em\" },\n];\n\nfunction Toolbar({ editor, groups }: { editor: Editor; groups: ToolbarGroup[] }) {\n const [, forceUpdate] = useState(0);\n const isMobile = useBreakpoint(\"sm\");\n\n useEffect(() => {\n const handler = () => forceUpdate((n) => n + 1);\n editor.on(\"selectionUpdate\", handler);\n editor.on(\"transaction\", handler);\n return () => {\n editor.off(\"selectionUpdate\", handler);\n editor.off(\"transaction\", handler);\n };\n }, [editor]);\n\n const inTable = editor.isActive(\"table\");\n const has = (g: ToolbarGroup) => groups.includes(g);\n\n const groupElements: React.ReactNode[] = [];\n\n if (has(\"blockType\")) groupElements.push(<BlockTypeSelect key=\"blockType\" editor={editor} />);\n if (has(\"fontFamily\")) groupElements.push(<FontFamilySelect key=\"fontFamily\" editor={editor} />);\n if (has(\"textSize\")) groupElements.push(<TextSizeControls key=\"textSize\" editor={editor} />);\n\n if (has(\"formatting\")) {\n groupElements.push(\n <ToolGroup key=\"formatting\">\n <ToolBtn active={editor.isActive(\"bold\")} onClick={() => editor.chain().focus().toggleBold().run()} title=\"Bold (Ctrl+B)\">\n <Icon name=\"bold\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"italic\")} onClick={() => editor.chain().focus().toggleItalic().run()} title=\"Italic (Ctrl+I)\">\n <Icon name=\"italic\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"underline\")} onClick={() => editor.chain().focus().toggleUnderline().run()} title=\"Underline (Ctrl+U)\">\n <Icon name=\"underline\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"strike\")} onClick={() => editor.chain().focus().toggleStrike().run()} title=\"Strikethrough\">\n <Icon name=\"strikethrough\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"colors\")) {\n groupElements.push(\n <ToolGroup key=\"colors\">\n <ColorPicker\n colors={TEXT_COLORS}\n activeColor={editor.getAttributes(\"textStyle\").color ?? \"\"}\n onSelect={(c) => c ? editor.chain().focus().setColor(c).run() : editor.chain().focus().unsetColor().run()}\n title=\"Text color\"\n icon={<Icon name=\"type\" size={16} />}\n />\n <ColorPicker\n colors={HIGHLIGHT_COLORS}\n activeColor={editor.getAttributes(\"highlight\").color ?? \"\"}\n onSelect={(c) => c ? editor.chain().focus().toggleHighlight({ color: c }).run() : editor.chain().focus().unsetHighlight().run()}\n title=\"Highlight\"\n icon={<Icon name=\"highlight\" size={16} />}\n />\n </ToolGroup>\n );\n }\n\n if (has(\"alignment\")) {\n groupElements.push(\n <ToolGroup key=\"alignment\">\n <ToolBtn active={editor.isActive({ textAlign: \"left\" })} onClick={() => editor.chain().focus().setTextAlign(\"left\").run()} title=\"Align left\">\n <Icon name=\"align-left\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive({ textAlign: \"center\" })} onClick={() => editor.chain().focus().setTextAlign(\"center\").run()} title=\"Align center\">\n <Icon name=\"align-center\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive({ textAlign: \"right\" })} onClick={() => editor.chain().focus().setTextAlign(\"right\").run()} title=\"Align right\">\n <Icon name=\"align-right\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"lists\")) {\n groupElements.push(\n <ToolGroup key=\"lists\">\n <ToolBtn active={editor.isActive(\"bulletList\")} onClick={() => editor.chain().focus().toggleBulletList().run()} title=\"Bullet list\">\n <Icon name=\"list\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"orderedList\")} onClick={() => editor.chain().focus().toggleOrderedList().run()} title=\"Ordered list\">\n <Icon name=\"list-ordered\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"taskList\")} onClick={() => editor.chain().focus().toggleTaskList().run()} title=\"Task list\">\n <Icon name=\"list-checks\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"blocks\")) {\n groupElements.push(\n <ToolGroup key=\"blocks\">\n <ToolBtn active={editor.isActive(\"blockquote\")} onClick={() => editor.chain().focus().toggleBlockquote().run()} title=\"Blockquote\">\n <Icon name=\"quote\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"codeBlock\")} onClick={() => editor.chain().focus().toggleCodeBlock().run()} title=\"Code block\">\n <Icon name=\"code\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"insert\")) {\n groupElements.push(\n <ToolGroup key=\"insert\">\n <LinkPopover editor={editor} />\n <ImagePopover editor={editor} />\n <ToolBtn onClick={() => editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()} disabled={inTable} title=\"Insert table\">\n <Icon name=\"table\" size={16} />\n </ToolBtn>\n <ToolBtn onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal rule\">\n <Icon name=\"minus\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"extras\")) {\n groupElements.push(\n <ToolGroup key=\"extras\">\n <ToolBtn active={editor.isActive(\"code\")} onClick={() => editor.chain().focus().toggleCode().run()} title=\"Inline code\">\n <Icon name=\"code\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"superscript\")} onClick={() => editor.chain().focus().toggleSuperscript().run()} title=\"Superscript\">\n <Icon name=\"superscript\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"subscript\")} onClick={() => editor.chain().focus().toggleSubscript().run()} title=\"Subscript\">\n <Icon name=\"subscript\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"history\")) {\n groupElements.push(\n <ToolGroup key=\"history\">\n <ToolBtn onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo (Ctrl+Z)\">\n <Icon name=\"undo\" size={16} />\n </ToolBtn>\n <ToolBtn onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo (Ctrl+Shift+Z)\">\n <Icon name=\"redo\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n const withDividers = groupElements.reduce<React.ReactNode[]>((acc, el, i) => {\n if (i > 0) acc.push(<Divider key={`d-${i}`} />);\n acc.push(el);\n return acc;\n }, []);\n\n return (\n <div className=\"border-b-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] bg-[var(--ds-bg-muted)]\">\n <div\n className={cn(\n \"flex items-center gap-ds-0.5 px-ds-2 py-ds-1\",\n isMobile ? \"overflow-x-auto flex-nowrap scrollbar-none\" : \"flex-wrap\",\n )}\n >\n {withDividers}\n </div>\n\n {inTable && (\n <div className={cn(\n \"flex items-center gap-ds-0.5 px-ds-2 py-ds-1 border-t-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n isMobile && \"overflow-x-auto flex-nowrap scrollbar-none\",\n )}>\n <span className=\"text-2xs text-[var(--ds-text-muted)] uppercase tracking-wider mr-ds-1 shrink-0\">Table</span>\n <TableOpBtn onClick={() => editor.chain().focus().addRowAfter().run()} label=\"+ Row\" />\n <TableOpBtn onClick={() => editor.chain().focus().addColumnAfter().run()} label=\"+ Col\" />\n <Divider />\n <TableOpBtn onClick={() => editor.chain().focus().deleteRow().run()} label=\"− Row\" />\n <TableOpBtn onClick={() => editor.chain().focus().deleteColumn().run()} label=\"− Col\" />\n <Divider />\n <TableOpBtn onClick={() => editor.chain().focus().mergeCells().run()} label=\"Merge\" />\n <TableOpBtn onClick={() => editor.chain().focus().splitCell().run()} label=\"Split\" />\n <Divider />\n <ToolBtn onClick={() => editor.chain().focus().deleteTable().run()} title=\"Delete table\"><Icon name=\"trash\" size={14} /></ToolBtn>\n </div>\n )}\n </div>\n );\n}\n\n/* ── Block type select (paragraph / headings) ─────────────────────── */\n\nfunction BlockTypeSelect({ editor }: { editor: Editor }) {\n const value = editor.isActive(\"heading\", { level: 1 }) ? \"h1\"\n : editor.isActive(\"heading\", { level: 2 }) ? \"h2\"\n : editor.isActive(\"heading\", { level: 3 }) ? \"h3\"\n : \"p\";\n\n return (\n <select\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === \"p\") editor.chain().focus().setParagraph().run();\n else if (v === \"h1\") editor.chain().focus().toggleHeading({ level: 1 }).run();\n else if (v === \"h2\") editor.chain().focus().toggleHeading({ level: 2 }).run();\n else if (v === \"h3\") editor.chain().focus().toggleHeading({ level: 3 }).run();\n }}\n title=\"Block type\"\n aria-label=\"Block type\"\n className={cn(\n \"h-7 px-ds-1.5 text-xs rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-transparent text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)]\",\n \"border-none outline-none\",\n \"focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n <option value=\"p\">Paragraph</option>\n <option value=\"h1\">Heading 1</option>\n <option value=\"h2\">Heading 2</option>\n <option value=\"h3\">Heading 3</option>\n </select>\n );\n}\n\n/* ── Text size increase/decrease ──────────────────────────────────── */\n\nfunction TextSizeControls({ editor }: { editor: Editor }) {\n const current = editor.getAttributes(\"textStyle\").fontSize ?? \"\";\n const idx = TEXT_SIZES.findIndex((s) => s.value === current);\n const currentIdx = idx === -1 ? 1 : idx;\n\n const decrease = () => {\n const next = Math.max(0, currentIdx - 1);\n const v = TEXT_SIZES[next].value;\n v ? editor.chain().focus().setFontSize(v).run() : editor.chain().focus().unsetFontSize().run();\n };\n\n const increase = () => {\n const next = Math.min(TEXT_SIZES.length - 1, currentIdx + 1);\n const v = TEXT_SIZES[next].value;\n v ? editor.chain().focus().setFontSize(v).run() : editor.chain().focus().unsetFontSize().run();\n };\n\n return (\n <ToolGroup>\n <ToolBtn onClick={decrease} disabled={currentIdx <= 0} title={`Decrease text size (${TEXT_SIZES[Math.max(0, currentIdx - 1)]?.label})`}>\n <span className=\"text-2xs font-bold leading-none select-none\">A</span>\n </ToolBtn>\n <ToolBtn onClick={increase} disabled={currentIdx >= TEXT_SIZES.length - 1} title={`Increase text size (${TEXT_SIZES[Math.min(TEXT_SIZES.length - 1, currentIdx + 1)]?.label})`}>\n <span className=\"text-base font-bold leading-none select-none\">A</span>\n </ToolBtn>\n </ToolGroup>\n );\n}\n\n/* ── Color picker popover ─────────────────────────────────────────── */\n\nfunction ColorPicker({\n colors,\n activeColor,\n onSelect,\n title,\n icon,\n}: {\n colors: { label: string; value: string }[];\n activeColor: string;\n onSelect: (color: string) => void;\n title: string;\n icon: React.ReactNode;\n}) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n const close = useCallback(() => setOpen(false), []);\n\n useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => { if (!ref.current?.contains(e.target as Node)) close(); };\n const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onClick);\n document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onClick); document.removeEventListener(\"keydown\", onKey); };\n }, [open, close]);\n\n return (\n <div ref={ref} className=\"relative\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n title={title}\n className={cn(\n \"flex flex-col items-center justify-center w-7 h-7 rounded-[var(--ds-radius-sm)] transition-colors cursor-pointer\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n open\n ? \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\"\n : \"text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)] hover:text-[var(--ds-text-primary)]\",\n )}\n >\n {icon}\n {activeColor && (\n <span className=\"w-3.5 h-0.5 rounded-[var(--ds-radius-full)] -mt-ds-0.5\" style={{ backgroundColor: activeColor }} />\n )}\n </button>\n\n {open && (\n <div className=\"absolute top-full left-0 mt-ds-1 z-[var(--ds-z-popover)] p-ds-1.5 rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-default)] bg-[var(--ds-bg-surface-elevated)] shadow-[var(--ds-shadow-dropdown)] flex gap-ds-1 flex-wrap w-[140px]\">\n {colors.map((c) => (\n <button\n key={c.label}\n type=\"button\"\n title={c.label}\n onClick={() => { onSelect(c.value); close(); }}\n className={cn(\n \"w-6 h-6 rounded-[var(--ds-radius-sm)] border-[2px] transition-all cursor-pointer\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n activeColor === c.value ? \"border-[var(--ds-accent-primary)] scale-110\" : \"border-transparent hover:scale-110\",\n )}\n style={{ backgroundColor: c.value || \"var(--ds-text-primary)\" }}\n >\n {!c.value && <span className=\"block w-full h-full rounded-[calc(var(--ds-radius-sm)-2px)] bg-[var(--ds-bg-surface)] relative after:absolute after:inset-0 after:rounded-[inherit] after:bg-gradient-to-br after:from-transparent after:to-[var(--ds-text-muted)] after:opacity-30\" />}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n/* ── Link popover ─────────────────────────────────────────────────── */\n\nfunction LinkPopover({ editor }: { editor: Editor }) {\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState(\"\");\n const ref = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const close = useCallback(() => { setOpen(false); setUrl(\"\"); }, []);\n\n const toggle = useCallback(() => {\n if (editor.isActive(\"link\")) {\n editor.chain().focus().unsetLink().run();\n return;\n }\n const existing = editor.getAttributes(\"link\").href ?? \"\";\n setUrl(existing);\n setOpen((o) => !o);\n }, [editor]);\n\n useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => { if (!ref.current?.contains(e.target as Node)) close(); };\n const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onClick);\n document.addEventListener(\"keydown\", onKey);\n requestAnimationFrame(() => inputRef.current?.focus());\n return () => { document.removeEventListener(\"mousedown\", onClick); document.removeEventListener(\"keydown\", onKey); };\n }, [open, close]);\n\n const apply = () => {\n if (url) editor.chain().focus().setLink({ href: url }).run();\n close();\n };\n\n return (\n <div ref={ref} className=\"relative\">\n <ToolBtn active={editor.isActive(\"link\")} onClick={toggle} title=\"Link\">\n <Icon name=\"link\" size={16} />\n </ToolBtn>\n\n {open && (\n <div className=\"absolute top-full left-0 mt-ds-1 z-[var(--ds-z-popover)] p-ds-1.5 rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] bg-[var(--ds-bg-surface-elevated)] shadow-[var(--ds-shadow-dropdown)] flex items-center gap-ds-1 w-[240px]\">\n <input\n ref={inputRef}\n type=\"url\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\") apply(); }}\n placeholder=\"https://...\"\n className={cn(\n \"flex-1 h-6 px-ds-2 text-xs rounded-[var(--ds-radius-sm)]\",\n \"bg-transparent text-[var(--ds-text-primary)] placeholder:text-[var(--ds-text-muted)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--ds-input-focus-ring)]\",\n )}\n />\n <button\n type=\"button\"\n onClick={apply}\n className={cn(\n \"shrink-0 h-6 px-ds-2 text-xs font-medium rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\",\n \"hover:opacity-90 transition-opacity\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n Apply\n </button>\n </div>\n )}\n </div>\n );\n}\n\n/* ── Image popover ────────────────────────────────────────────────── */\n\nfunction ImagePopover({ editor }: { editor: Editor }) {\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState(\"\");\n const [alt, setAlt] = useState(\"\");\n const ref = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const close = useCallback(() => { setOpen(false); setUrl(\"\"); setAlt(\"\"); }, []);\n\n useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => { if (!ref.current?.contains(e.target as Node)) close(); };\n const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onClick);\n document.addEventListener(\"keydown\", onKey);\n requestAnimationFrame(() => inputRef.current?.focus());\n return () => { document.removeEventListener(\"mousedown\", onClick); document.removeEventListener(\"keydown\", onKey); };\n }, [open, close]);\n\n const insert = () => {\n if (url) editor.chain().focus().setImage({ src: url, alt: alt || undefined }).run();\n close();\n };\n\n return (\n <div ref={ref} className=\"relative\">\n <ToolBtn onClick={() => setOpen((o) => !o)} title=\"Image\">\n <Icon name=\"image\" size={16} />\n </ToolBtn>\n\n {open && (\n <div className=\"absolute top-full left-0 mt-ds-1 z-[var(--ds-z-popover)] p-ds-1.5 rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] bg-[var(--ds-bg-surface-elevated)] shadow-[var(--ds-shadow-dropdown)] flex flex-col gap-ds-1 w-[240px]\">\n <input\n ref={inputRef}\n type=\"url\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n placeholder=\"Image URL\"\n className={cn(\n \"h-6 px-ds-2 text-xs rounded-[var(--ds-radius-sm)]\",\n \"bg-transparent text-[var(--ds-text-primary)] placeholder:text-[var(--ds-text-muted)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--ds-input-focus-ring)]\",\n )}\n />\n <div className=\"flex items-center gap-ds-1\">\n <input\n type=\"text\"\n value={alt}\n onChange={(e) => setAlt(e.target.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\") insert(); }}\n placeholder=\"Alt text (optional)\"\n className={cn(\n \"flex-1 h-6 px-ds-2 text-xs rounded-[var(--ds-radius-sm)]\",\n \"bg-transparent text-[var(--ds-text-primary)] placeholder:text-[var(--ds-text-muted)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[var(--ds-input-focus-ring)]\",\n )}\n />\n <button\n type=\"button\"\n onClick={insert}\n className={cn(\n \"shrink-0 h-6 px-ds-2 text-xs font-medium rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\",\n \"hover:opacity-90 transition-opacity\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n Insert\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* ── Font family select ───────────────────────────────────────────── */\n\nfunction FontFamilySelect({ editor }: { editor: Editor }) {\n const current = editor.getAttributes(\"textStyle\").fontFamily ?? \"\";\n\n return (\n <select\n value={current}\n onChange={(e) => {\n const v = e.target.value;\n v ? editor.chain().focus().setFontFamily(v).run() : editor.chain().focus().unsetFontFamily().run();\n }}\n title=\"Font family\"\n aria-label=\"Font family\"\n className={cn(\n \"h-7 px-ds-1.5 text-xs rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-transparent text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)]\",\n \"border-none outline-none\",\n \"focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n {FONT_FAMILIES.map((f) => (\n <option key={f.label} value={f.value}>{f.label}</option>\n ))}\n </select>\n );\n}\n\n/* ── Shared toolbar helpers ───────────────────────────────────────── */\n\nfunction ToolGroup({ children }: { children: React.ReactNode }) {\n return <div className=\"flex items-center gap-ds-0.5\">{children}</div>;\n}\n\nfunction Divider() {\n return <div className=\"w-px h-5 mx-ds-1 bg-[var(--ds-border-subtle)]\" />;\n}\n\nfunction TableOpBtn({ onClick, label }: { onClick: () => void; label: string }) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n title={label}\n className={cn(\n \"h-6 px-ds-1.5 text-2xs font-medium rounded-[var(--ds-radius-sm)] transition-colors cursor-pointer whitespace-nowrap\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n \"text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)] hover:text-[var(--ds-text-primary)]\",\n )}\n >\n {label}\n </button>\n );\n}\n\nfunction ToolBtn({ active, disabled, onClick, title, children }: { active?: boolean; disabled?: boolean; onClick: () => void; title: string; children: React.ReactNode }) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n title={title}\n className={cn(\n \"flex items-center justify-center w-7 h-7 rounded-[var(--ds-radius-sm)] transition-colors cursor-pointer\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n active\n ? \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\"\n : \"text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)] hover:text-[var(--ds-text-primary)]\",\n disabled && \"opacity-disabled pointer-events-none\",\n )}\n >\n {children}\n </button>\n );\n}\n\n"]}
1
+ {"version":3,"sources":["../../../showcase/src/components/RichTextEditor.tsx"],"names":[],"mappings":"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","file":"editor.js","sourcesContent":["import { useState, useCallback, useRef, useEffect, type Ref } from \"react\";\nimport { useEditor, EditorContent, type Editor } from \"@tiptap/react\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport Image from \"@tiptap/extension-image\";\nimport { Table } from \"@tiptap/extension-table\";\nimport { TableRow } from \"@tiptap/extension-table-row\";\nimport { TableCell } from \"@tiptap/extension-table-cell\";\nimport { TableHeader } from \"@tiptap/extension-table-header\";\nimport Placeholder from \"@tiptap/extension-placeholder\";\nimport CodeBlockLowlight from \"@tiptap/extension-code-block-lowlight\";\nimport Underline from \"@tiptap/extension-underline\";\nimport { TextStyle, FontSize } from \"@tiptap/extension-text-style\";\nimport Color from \"@tiptap/extension-color\";\nimport Highlight from \"@tiptap/extension-highlight\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport Subscript from \"@tiptap/extension-subscript\";\nimport Superscript from \"@tiptap/extension-superscript\";\nimport FontFamily from \"@tiptap/extension-font-family\";\nimport { all, createLowlight } from \"lowlight\";\nimport { cn, ACTIVE_RING, FOCUS_RING } from \"../lib/utils\";\nimport { Icon } from \"../lib/icons\";\nimport { useBreakpoint } from \"../lib/use-breakpoint\";\n\nconst lowlight = createLowlight(all);\n\nexport type ToolbarGroup =\n | \"blockType\"\n | \"fontFamily\"\n | \"textSize\"\n | \"formatting\"\n | \"colors\"\n | \"alignment\"\n | \"lists\"\n | \"blocks\"\n | \"insert\"\n | \"extras\"\n | \"history\";\n\nconst DEFAULT_TOOLBAR: ToolbarGroup[] = [\n \"blockType\", \"fontFamily\", \"textSize\",\n \"formatting\", \"colors\", \"alignment\",\n \"lists\", \"blocks\", \"insert\", \"extras\", \"history\",\n];\n\nconst MINIMAL_TOOLBAR: ToolbarGroup[] = [\n \"formatting\", \"lists\", \"insert\", \"history\",\n];\n\nexport interface RichTextEditorProps {\n content?: string;\n placeholder?: string;\n onChange?: (html: string) => void;\n editable?: boolean;\n toolbar?: ToolbarGroup[] | \"full\" | \"minimal\";\n className?: string;\n ref?: Ref<HTMLDivElement>;\n /** Accessible name for the editable area. Default \"Rich text editor\". */\n label?: string;\n}\n\nexport function RichTextEditor({\n content = \"\",\n placeholder = \"Start writing...\",\n onChange,\n editable = true,\n toolbar = \"full\",\n className,\n ref, label = \"Rich text editor\" }: RichTextEditorProps) {\n const resolvedToolbar = toolbar === \"full\" ? DEFAULT_TOOLBAR : toolbar === \"minimal\" ? MINIMAL_TOOLBAR : toolbar;\n const editor = useEditor({\n extensions: [\n StarterKit.configure({ codeBlock: false }),\n Link.configure({ openOnClick: false, HTMLAttributes: { class: \"rte-link\" } }),\n Image.configure({ inline: false, allowBase64: true }),\n CodeBlockLowlight.configure({ lowlight }),\n Table.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n Placeholder.configure({ placeholder }),\n Underline,\n TextStyle,\n FontSize,\n Color,\n Highlight.configure({ multicolor: true }),\n TextAlign.configure({ types: [\"heading\", \"paragraph\"] }),\n TaskList,\n TaskItem.configure({ nested: true }),\n Subscript,\n Superscript,\n FontFamily,\n ],\n content,\n editable,\n // Setting attributes replaces tiptap's defaults, so restore role=\"textbox\" alongside the name.\n editorProps: { attributes: { role: \"textbox\", \"aria-label\": label, \"aria-multiline\": \"true\" } },\n onUpdate: ({ editor: e }) => onChange?.(e.getHTML()),\n });\n\n if (!editor) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col rounded-[var(--ds-radius-md)] overflow-hidden\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-default)]\",\n \"bg-[var(--ds-bg-surface)]\",\n className,\n )}\n >\n {editable && <Toolbar editor={editor} groups={resolvedToolbar} />}\n\n <EditorContent\n editor={editor}\n className={cn(\n \"rte-content\",\n \"flex-1 overflow-y-auto px-ds-4 py-ds-3\",\n \"text-sm text-[var(--ds-text-primary)]\",\n \"focus-within:outline-none\",\n )}\n />\n </div>\n );\n}\n\n/* ── Toolbar ──────────────────────────────────────────────────────── */\n\nconst TEXT_COLORS = [\n { label: \"Default\", value: \"\" },\n { label: \"Red\", value: \"#ef4444\" },\n { label: \"Orange\", value: \"#f97316\" },\n { label: \"Yellow\", value: \"#eab308\" },\n { label: \"Green\", value: \"#22c55e\" },\n { label: \"Blue\", value: \"#3b82f6\" },\n { label: \"Purple\", value: \"#a855f7\" },\n { label: \"Pink\", value: \"#ec4899\" },\n];\n\nconst HIGHLIGHT_COLORS = [\n { label: \"None\", value: \"\" },\n { label: \"Yellow\", value: \"#fef08a\" },\n { label: \"Green\", value: \"#bbf7d0\" },\n { label: \"Blue\", value: \"#bfdbfe\" },\n { label: \"Pink\", value: \"#fbcfe8\" },\n { label: \"Orange\", value: \"#fed7aa\" },\n { label: \"Purple\", value: \"#e9d5ff\" },\n];\n\nconst FONT_FAMILIES = [\n { label: \"Default\", value: \"\" },\n { label: \"Sans\", value: \"var(--ds-font-sans)\" },\n { label: \"Mono\", value: \"var(--ds-font-mono)\" },\n { label: \"Display\", value: \"var(--ds-font-display)\" },\n { label: \"Serif\", value: \"Georgia, serif\" },\n];\n\nconst TEXT_SIZES = [\n { label: \"Small\", value: \"0.85em\" },\n { label: \"Normal\", value: \"\" },\n { label: \"Large\", value: \"1.2em\" },\n { label: \"Huge\", value: \"1.5em\" },\n];\n\nfunction Toolbar({ editor, groups }: { editor: Editor; groups: ToolbarGroup[] }) {\n const [, forceUpdate] = useState(0);\n const isMobile = useBreakpoint(\"sm\");\n\n useEffect(() => {\n const handler = () => forceUpdate((n) => n + 1);\n editor.on(\"selectionUpdate\", handler);\n editor.on(\"transaction\", handler);\n return () => {\n editor.off(\"selectionUpdate\", handler);\n editor.off(\"transaction\", handler);\n };\n }, [editor]);\n\n const inTable = editor.isActive(\"table\");\n const has = (g: ToolbarGroup) => groups.includes(g);\n\n const groupElements: React.ReactNode[] = [];\n\n if (has(\"blockType\")) groupElements.push(<BlockTypeSelect key=\"blockType\" editor={editor} />);\n if (has(\"fontFamily\")) groupElements.push(<FontFamilySelect key=\"fontFamily\" editor={editor} />);\n if (has(\"textSize\")) groupElements.push(<TextSizeControls key=\"textSize\" editor={editor} />);\n\n if (has(\"formatting\")) {\n groupElements.push(\n <ToolGroup key=\"formatting\">\n <ToolBtn active={editor.isActive(\"bold\")} onClick={() => editor.chain().focus().toggleBold().run()} title=\"Bold (Ctrl+B)\">\n <Icon name=\"bold\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"italic\")} onClick={() => editor.chain().focus().toggleItalic().run()} title=\"Italic (Ctrl+I)\">\n <Icon name=\"italic\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"underline\")} onClick={() => editor.chain().focus().toggleUnderline().run()} title=\"Underline (Ctrl+U)\">\n <Icon name=\"underline\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"strike\")} onClick={() => editor.chain().focus().toggleStrike().run()} title=\"Strikethrough\">\n <Icon name=\"strikethrough\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"colors\")) {\n groupElements.push(\n <ToolGroup key=\"colors\">\n <ColorPicker\n colors={TEXT_COLORS}\n activeColor={editor.getAttributes(\"textStyle\").color ?? \"\"}\n onSelect={(c) => c ? editor.chain().focus().setColor(c).run() : editor.chain().focus().unsetColor().run()}\n title=\"Text color\"\n icon={<Icon name=\"type\" size={16} />}\n />\n <ColorPicker\n colors={HIGHLIGHT_COLORS}\n activeColor={editor.getAttributes(\"highlight\").color ?? \"\"}\n onSelect={(c) => c ? editor.chain().focus().toggleHighlight({ color: c }).run() : editor.chain().focus().unsetHighlight().run()}\n title=\"Highlight\"\n icon={<Icon name=\"highlight\" size={16} />}\n />\n </ToolGroup>\n );\n }\n\n if (has(\"alignment\")) {\n groupElements.push(\n <ToolGroup key=\"alignment\">\n <ToolBtn active={editor.isActive({ textAlign: \"left\" })} onClick={() => editor.chain().focus().setTextAlign(\"left\").run()} title=\"Align left\">\n <Icon name=\"align-left\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive({ textAlign: \"center\" })} onClick={() => editor.chain().focus().setTextAlign(\"center\").run()} title=\"Align center\">\n <Icon name=\"align-center\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive({ textAlign: \"right\" })} onClick={() => editor.chain().focus().setTextAlign(\"right\").run()} title=\"Align right\">\n <Icon name=\"align-right\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"lists\")) {\n groupElements.push(\n <ToolGroup key=\"lists\">\n <ToolBtn active={editor.isActive(\"bulletList\")} onClick={() => editor.chain().focus().toggleBulletList().run()} title=\"Bullet list\">\n <Icon name=\"list\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"orderedList\")} onClick={() => editor.chain().focus().toggleOrderedList().run()} title=\"Ordered list\">\n <Icon name=\"list-ordered\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"taskList\")} onClick={() => editor.chain().focus().toggleTaskList().run()} title=\"Task list\">\n <Icon name=\"list-checks\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"blocks\")) {\n groupElements.push(\n <ToolGroup key=\"blocks\">\n <ToolBtn active={editor.isActive(\"blockquote\")} onClick={() => editor.chain().focus().toggleBlockquote().run()} title=\"Blockquote\">\n <Icon name=\"quote\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"codeBlock\")} onClick={() => editor.chain().focus().toggleCodeBlock().run()} title=\"Code block\">\n <Icon name=\"code\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"insert\")) {\n groupElements.push(\n <ToolGroup key=\"insert\">\n <LinkPopover editor={editor} />\n <ImagePopover editor={editor} />\n <ToolBtn onClick={() => editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run()} disabled={inTable} title=\"Insert table\">\n <Icon name=\"table\" size={16} />\n </ToolBtn>\n <ToolBtn onClick={() => editor.chain().focus().setHorizontalRule().run()} title=\"Horizontal rule\">\n <Icon name=\"minus\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"extras\")) {\n groupElements.push(\n <ToolGroup key=\"extras\">\n <ToolBtn active={editor.isActive(\"code\")} onClick={() => editor.chain().focus().toggleCode().run()} title=\"Inline code\">\n <Icon name=\"code\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"superscript\")} onClick={() => editor.chain().focus().toggleSuperscript().run()} title=\"Superscript\">\n <Icon name=\"superscript\" size={16} />\n </ToolBtn>\n <ToolBtn active={editor.isActive(\"subscript\")} onClick={() => editor.chain().focus().toggleSubscript().run()} title=\"Subscript\">\n <Icon name=\"subscript\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n if (has(\"history\")) {\n groupElements.push(\n <ToolGroup key=\"history\">\n <ToolBtn onClick={() => editor.chain().focus().undo().run()} disabled={!editor.can().undo()} title=\"Undo (Ctrl+Z)\">\n <Icon name=\"undo\" size={16} />\n </ToolBtn>\n <ToolBtn onClick={() => editor.chain().focus().redo().run()} disabled={!editor.can().redo()} title=\"Redo (Ctrl+Shift+Z)\">\n <Icon name=\"redo\" size={16} />\n </ToolBtn>\n </ToolGroup>\n );\n }\n\n const withDividers = groupElements.reduce<React.ReactNode[]>((acc, el, i) => {\n if (i > 0) acc.push(<Divider key={`d-${i}`} />);\n acc.push(el);\n return acc;\n }, []);\n\n return (\n <div className=\"border-b-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] bg-[var(--ds-bg-muted)]\">\n <div\n className={cn(\n \"flex items-center gap-ds-0.5 px-ds-2 py-ds-1\",\n isMobile ? \"overflow-x-auto flex-nowrap scrollbar-none\" : \"flex-wrap\",\n )}\n >\n {withDividers}\n </div>\n\n {inTable && (\n <div className={cn(\n \"flex items-center gap-ds-0.5 px-ds-2 py-ds-1 border-t-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n isMobile && \"overflow-x-auto flex-nowrap scrollbar-none\",\n )}>\n <span className=\"text-2xs text-[var(--ds-text-muted)] uppercase tracking-wider mr-ds-1 shrink-0\">Table</span>\n <TableOpBtn onClick={() => editor.chain().focus().addRowAfter().run()} label=\"+ Row\" />\n <TableOpBtn onClick={() => editor.chain().focus().addColumnAfter().run()} label=\"+ Col\" />\n <Divider />\n <TableOpBtn onClick={() => editor.chain().focus().deleteRow().run()} label=\"− Row\" />\n <TableOpBtn onClick={() => editor.chain().focus().deleteColumn().run()} label=\"− Col\" />\n <Divider />\n <TableOpBtn onClick={() => editor.chain().focus().mergeCells().run()} label=\"Merge\" />\n <TableOpBtn onClick={() => editor.chain().focus().splitCell().run()} label=\"Split\" />\n <Divider />\n <ToolBtn onClick={() => editor.chain().focus().deleteTable().run()} title=\"Delete table\"><Icon name=\"trash\" size={14} /></ToolBtn>\n </div>\n )}\n </div>\n );\n}\n\n/* ── Block type select (paragraph / headings) ─────────────────────── */\n\nfunction BlockTypeSelect({ editor }: { editor: Editor }) {\n const value = editor.isActive(\"heading\", { level: 1 }) ? \"h1\"\n : editor.isActive(\"heading\", { level: 2 }) ? \"h2\"\n : editor.isActive(\"heading\", { level: 3 }) ? \"h3\"\n : \"p\";\n\n return (\n <select\n value={value}\n onChange={(e) => {\n const v = e.target.value;\n if (v === \"p\") editor.chain().focus().setParagraph().run();\n else if (v === \"h1\") editor.chain().focus().toggleHeading({ level: 1 }).run();\n else if (v === \"h2\") editor.chain().focus().toggleHeading({ level: 2 }).run();\n else if (v === \"h3\") editor.chain().focus().toggleHeading({ level: 3 }).run();\n }}\n title=\"Block type\"\n aria-label=\"Block type\"\n className={cn(\n \"h-7 px-ds-1.5 text-xs rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-transparent text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)]\",\n \"border-none outline-none\",\n \"focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n <option value=\"p\">Paragraph</option>\n <option value=\"h1\">Heading 1</option>\n <option value=\"h2\">Heading 2</option>\n <option value=\"h3\">Heading 3</option>\n </select>\n );\n}\n\n/* ── Text size increase/decrease ──────────────────────────────────── */\n\nfunction TextSizeControls({ editor }: { editor: Editor }) {\n const current = editor.getAttributes(\"textStyle\").fontSize ?? \"\";\n const idx = TEXT_SIZES.findIndex((s) => s.value === current);\n const currentIdx = idx === -1 ? 1 : idx;\n\n const decrease = () => {\n const next = Math.max(0, currentIdx - 1);\n const v = TEXT_SIZES[next].value;\n v ? editor.chain().focus().setFontSize(v).run() : editor.chain().focus().unsetFontSize().run();\n };\n\n const increase = () => {\n const next = Math.min(TEXT_SIZES.length - 1, currentIdx + 1);\n const v = TEXT_SIZES[next].value;\n v ? editor.chain().focus().setFontSize(v).run() : editor.chain().focus().unsetFontSize().run();\n };\n\n return (\n <ToolGroup>\n <ToolBtn onClick={decrease} disabled={currentIdx <= 0} title={`Decrease text size (${TEXT_SIZES[Math.max(0, currentIdx - 1)]?.label})`}>\n <span className=\"text-2xs font-bold leading-none select-none\">A</span>\n </ToolBtn>\n <ToolBtn onClick={increase} disabled={currentIdx >= TEXT_SIZES.length - 1} title={`Increase text size (${TEXT_SIZES[Math.min(TEXT_SIZES.length - 1, currentIdx + 1)]?.label})`}>\n <span className=\"text-base font-bold leading-none select-none\">A</span>\n </ToolBtn>\n </ToolGroup>\n );\n}\n\n/* ── Color picker popover ─────────────────────────────────────────── */\n\nfunction ColorPicker({\n colors,\n activeColor,\n onSelect,\n title,\n icon,\n}: {\n colors: { label: string; value: string }[];\n activeColor: string;\n onSelect: (color: string) => void;\n title: string;\n icon: React.ReactNode;\n}) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n const close = useCallback(() => setOpen(false), []);\n\n useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => { if (!ref.current?.contains(e.target as Node)) close(); };\n const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onClick);\n document.addEventListener(\"keydown\", onKey);\n return () => { document.removeEventListener(\"mousedown\", onClick); document.removeEventListener(\"keydown\", onKey); };\n }, [open, close]);\n\n return (\n <div ref={ref} className=\"relative\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n title={title}\n className={cn(\n \"flex flex-col items-center justify-center w-7 h-7 rounded-[var(--ds-radius-sm)] transition-colors cursor-pointer\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n open\n ? \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\"\n : \"text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)] hover:text-[var(--ds-text-primary)]\",\n )}\n >\n {icon}\n {activeColor && (\n <span className=\"w-3.5 h-0.5 rounded-[var(--ds-radius-full)] -mt-ds-0.5\" style={{ backgroundColor: activeColor }} />\n )}\n </button>\n\n {open && (\n <div className=\"absolute top-full left-0 mt-ds-1 z-[var(--ds-z-popover)] p-ds-1.5 rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-default)] bg-[var(--ds-bg-surface-elevated)] shadow-[var(--ds-shadow-dropdown)] flex gap-ds-1 flex-wrap w-[140px]\">\n {colors.map((c) => (\n <button\n key={c.label}\n type=\"button\"\n title={c.label}\n onClick={() => { onSelect(c.value); close(); }}\n className={cn(\n \"w-6 h-6 rounded-[var(--ds-radius-sm)] border-[2px] transition-all cursor-pointer\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n activeColor === c.value ? `${ACTIVE_RING} scale-110` : \"border-transparent hover:scale-110\",\n )}\n style={{ backgroundColor: c.value || \"var(--ds-text-primary)\" }}\n >\n {!c.value && <span className=\"block w-full h-full rounded-[calc(var(--ds-radius-sm)-2px)] bg-[var(--ds-bg-surface)] relative after:absolute after:inset-0 after:rounded-[inherit] after:bg-gradient-to-br after:from-transparent after:to-[var(--ds-text-muted)] after:opacity-30\" />}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n/* ── Link popover ─────────────────────────────────────────────────── */\n\nfunction LinkPopover({ editor }: { editor: Editor }) {\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState(\"\");\n const ref = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const close = useCallback(() => { setOpen(false); setUrl(\"\"); }, []);\n\n const toggle = useCallback(() => {\n if (editor.isActive(\"link\")) {\n editor.chain().focus().unsetLink().run();\n return;\n }\n const existing = editor.getAttributes(\"link\").href ?? \"\";\n setUrl(existing);\n setOpen((o) => !o);\n }, [editor]);\n\n useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => { if (!ref.current?.contains(e.target as Node)) close(); };\n const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onClick);\n document.addEventListener(\"keydown\", onKey);\n requestAnimationFrame(() => inputRef.current?.focus());\n return () => { document.removeEventListener(\"mousedown\", onClick); document.removeEventListener(\"keydown\", onKey); };\n }, [open, close]);\n\n const apply = () => {\n if (url) editor.chain().focus().setLink({ href: url }).run();\n close();\n };\n\n return (\n <div ref={ref} className=\"relative\">\n <ToolBtn active={editor.isActive(\"link\")} onClick={toggle} title=\"Link\">\n <Icon name=\"link\" size={16} />\n </ToolBtn>\n\n {open && (\n <div className=\"absolute top-full left-0 mt-ds-1 z-[var(--ds-z-popover)] p-ds-1.5 rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] bg-[var(--ds-bg-surface-elevated)] shadow-[var(--ds-shadow-dropdown)] flex items-center gap-ds-1 w-[240px]\">\n <input\n ref={inputRef}\n type=\"url\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\") apply(); }}\n placeholder=\"https://...\"\n className={cn(\n \"flex-1 h-6 px-ds-2 text-xs rounded-[var(--ds-radius-sm)]\",\n \"bg-transparent text-[var(--ds-text-primary)] placeholder:text-[var(--ds-text-muted)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n FOCUS_RING,\n )}\n />\n <button\n type=\"button\"\n onClick={apply}\n className={cn(\n \"shrink-0 h-6 px-ds-2 text-xs font-medium rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\",\n \"hover:opacity-90 transition-opacity\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n Apply\n </button>\n </div>\n )}\n </div>\n );\n}\n\n/* ── Image popover ────────────────────────────────────────────────── */\n\nfunction ImagePopover({ editor }: { editor: Editor }) {\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState(\"\");\n const [alt, setAlt] = useState(\"\");\n const ref = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const close = useCallback(() => { setOpen(false); setUrl(\"\"); setAlt(\"\"); }, []);\n\n useEffect(() => {\n if (!open) return;\n const onClick = (e: MouseEvent) => { if (!ref.current?.contains(e.target as Node)) close(); };\n const onKey = (e: KeyboardEvent) => { if (e.key === \"Escape\") close(); };\n document.addEventListener(\"mousedown\", onClick);\n document.addEventListener(\"keydown\", onKey);\n requestAnimationFrame(() => inputRef.current?.focus());\n return () => { document.removeEventListener(\"mousedown\", onClick); document.removeEventListener(\"keydown\", onKey); };\n }, [open, close]);\n\n const insert = () => {\n if (url) editor.chain().focus().setImage({ src: url, alt: alt || undefined }).run();\n close();\n };\n\n return (\n <div ref={ref} className=\"relative\">\n <ToolBtn onClick={() => setOpen((o) => !o)} title=\"Image\">\n <Icon name=\"image\" size={16} />\n </ToolBtn>\n\n {open && (\n <div className=\"absolute top-full left-0 mt-ds-1 z-[var(--ds-z-popover)] p-ds-1.5 rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)] bg-[var(--ds-bg-surface-elevated)] shadow-[var(--ds-shadow-dropdown)] flex flex-col gap-ds-1 w-[240px]\">\n <input\n ref={inputRef}\n type=\"url\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n placeholder=\"Image URL\"\n className={cn(\n \"h-6 px-ds-2 text-xs rounded-[var(--ds-radius-sm)]\",\n \"bg-transparent text-[var(--ds-text-primary)] placeholder:text-[var(--ds-text-muted)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n FOCUS_RING,\n )}\n />\n <div className=\"flex items-center gap-ds-1\">\n <input\n type=\"text\"\n value={alt}\n onChange={(e) => setAlt(e.target.value)}\n onKeyDown={(e) => { if (e.key === \"Enter\") insert(); }}\n placeholder=\"Alt text (optional)\"\n className={cn(\n \"flex-1 h-6 px-ds-2 text-xs rounded-[var(--ds-radius-sm)]\",\n \"bg-transparent text-[var(--ds-text-primary)] placeholder:text-[var(--ds-text-muted)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n FOCUS_RING,\n )}\n />\n <button\n type=\"button\"\n onClick={insert}\n className={cn(\n \"shrink-0 h-6 px-ds-2 text-xs font-medium rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\",\n \"hover:opacity-90 transition-opacity\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n Insert\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/* ── Font family select ───────────────────────────────────────────── */\n\nfunction FontFamilySelect({ editor }: { editor: Editor }) {\n const current = editor.getAttributes(\"textStyle\").fontFamily ?? \"\";\n\n return (\n <select\n value={current}\n onChange={(e) => {\n const v = e.target.value;\n v ? editor.chain().focus().setFontFamily(v).run() : editor.chain().focus().unsetFontFamily().run();\n }}\n title=\"Font family\"\n aria-label=\"Font family\"\n className={cn(\n \"h-7 px-ds-1.5 text-xs rounded-[var(--ds-radius-sm)] cursor-pointer\",\n \"bg-transparent text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)]\",\n \"border-none outline-none\",\n \"focus-visible:shadow-[var(--ds-shadow-focus)]\",\n )}\n >\n {FONT_FAMILIES.map((f) => (\n <option key={f.label} value={f.value}>{f.label}</option>\n ))}\n </select>\n );\n}\n\n/* ── Shared toolbar helpers ───────────────────────────────────────── */\n\nfunction ToolGroup({ children }: { children: React.ReactNode }) {\n return <div className=\"flex items-center gap-ds-0.5\">{children}</div>;\n}\n\nfunction Divider() {\n return <div className=\"w-px h-5 mx-ds-1 bg-[var(--ds-border-subtle)]\" />;\n}\n\nfunction TableOpBtn({ onClick, label }: { onClick: () => void; label: string }) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n title={label}\n className={cn(\n \"h-6 px-ds-1.5 text-2xs font-medium rounded-[var(--ds-radius-sm)] transition-colors cursor-pointer whitespace-nowrap\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n \"text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)] hover:text-[var(--ds-text-primary)]\",\n )}\n >\n {label}\n </button>\n );\n}\n\nfunction ToolBtn({ active, disabled, onClick, title, children }: { active?: boolean; disabled?: boolean; onClick: () => void; title: string; children: React.ReactNode }) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n title={title}\n className={cn(\n \"flex items-center justify-center w-7 h-7 rounded-[var(--ds-radius-sm)] transition-colors cursor-pointer\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n active\n ? \"bg-[var(--ds-accent-primary)] text-[var(--ds-text-on-primary)]\"\n : \"text-[var(--ds-text-secondary)] hover:bg-[var(--ds-bg-surface)] hover:text-[var(--ds-text-primary)]\",\n disabled && \"opacity-disabled pointer-events-none\",\n )}\n >\n {children}\n </button>\n );\n}\n\n"]}
@@ -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-V32UNIQL.js.map
71
- //# sourceMappingURL=feather-V32UNIQL.js.map
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-CA5OQ76O.js.map
71
- //# sourceMappingURL=heroicons-CA5OQ76O.js.map
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
@@ -1,3 +1,3 @@
1
- export { Icon, IconProvider, preloadPack } from './chunk-XUBVMRIE.js';
1
+ export { Icon, IconProvider, preloadPack } from './chunk-GX6O72IV.js';
2
2
  //# sourceMappingURL=icons.js.map
3
3
  //# sourceMappingURL=icons.js.map