gridsmith-ui 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/charts.js +2 -2
  2. package/dist/chat.d.ts +12 -0
  3. package/dist/chat.js +94 -0
  4. package/dist/chat.js.map +1 -0
  5. package/dist/{chunk-TTZSZNJ6.js → chunk-4KVFH5KC.js} +7 -3
  6. package/dist/chunk-4KVFH5KC.js.map +1 -0
  7. package/dist/chunk-G6KC5YNY.js +156 -0
  8. package/dist/chunk-G6KC5YNY.js.map +1 -0
  9. package/dist/{chunk-QGBG72OB.js → chunk-M3AARGLI.js} +3 -3
  10. package/dist/{chunk-QGBG72OB.js.map → chunk-M3AARGLI.js.map} +1 -1
  11. package/dist/{chunk-GYVBRUO2.js → chunk-NRHIYS5W.js} +14 -3
  12. package/dist/chunk-NRHIYS5W.js.map +1 -0
  13. package/dist/{chunk-6UZZYWTY.js → chunk-QVNGQ64Q.js} +5 -5
  14. package/dist/{chunk-6UZZYWTY.js.map → chunk-QVNGQ64Q.js.map} +1 -1
  15. package/dist/{chunk-DDKCQVKO.js → chunk-RLNIRPOH.js} +67 -22
  16. package/dist/chunk-RLNIRPOH.js.map +1 -0
  17. package/dist/chunk-RLUK575N.js +136 -0
  18. package/dist/chunk-RLUK575N.js.map +1 -0
  19. package/dist/chunk-WH2FUFAC.js +14 -0
  20. package/dist/chunk-WH2FUFAC.js.map +1 -0
  21. package/dist/{chunk-GX6O72IV.js → chunk-X4CNZFWC.js} +20 -28
  22. package/dist/chunk-X4CNZFWC.js.map +1 -0
  23. package/dist/data-grid.js +4 -3
  24. package/dist/data-grid.js.map +1 -1
  25. package/dist/editor.js +17 -13
  26. package/dist/editor.js.map +1 -1
  27. package/dist/feather-B65FI6CY.js +76 -0
  28. package/dist/feather-B65FI6CY.js.map +1 -0
  29. package/dist/heroicons-DIR7PXCR.js +76 -0
  30. package/dist/heroicons-DIR7PXCR.js.map +1 -0
  31. package/dist/icons.d.ts +1 -1
  32. package/dist/icons.js +1 -1
  33. package/dist/index.d.ts +522 -21
  34. package/dist/index.js +4938 -3510
  35. package/dist/index.js.map +1 -1
  36. package/dist/kanban.js +5 -4
  37. package/dist/kanban.js.map +1 -1
  38. package/dist/lucide-JH2R3TFV.js +76 -0
  39. package/dist/lucide-JH2R3TFV.js.map +1 -0
  40. package/dist/phosphor-HCVUMVT5.js +76 -0
  41. package/dist/phosphor-HCVUMVT5.js.map +1 -0
  42. package/dist/resizable.js +2 -2
  43. package/dist/roots.css +97 -22
  44. package/dist/tabler-HHIXSM73.js +76 -0
  45. package/dist/tabler-HHIXSM73.js.map +1 -0
  46. package/dist/tokens.css +14 -7
  47. package/dist/utils.js +1 -1
  48. package/dist/virtualized.js +1 -1
  49. package/dist-static/tokens.css +14 -7
  50. package/package.json +15 -3
  51. package/dist/chunk-DDKCQVKO.js.map +0 -1
  52. package/dist/chunk-GX6O72IV.js.map +0 -1
  53. package/dist/chunk-GYVBRUO2.js.map +0 -1
  54. package/dist/chunk-TTZSZNJ6.js.map +0 -1
  55. package/dist/feather-U45EQTAU.js +0 -72
  56. package/dist/feather-U45EQTAU.js.map +0 -1
  57. package/dist/heroicons-D3G7QU45.js +0 -72
  58. package/dist/heroicons-D3G7QU45.js.map +0 -1
  59. package/dist/lucide-OGUV44TQ.js +0 -72
  60. package/dist/lucide-OGUV44TQ.js.map +0 -1
  61. package/dist/phosphor-QG2ZMEMZ.js +0 -72
  62. package/dist/phosphor-QG2ZMEMZ.js.map +0 -1
  63. package/dist/tabler-MW2HN55L.js +0 -72
  64. package/dist/tabler-MW2HN55L.js.map +0 -1
package/dist/kanban.js CHANGED
@@ -1,7 +1,8 @@
1
- import { Badge } from './chunk-6UZZYWTY.js';
2
- import { useTextOverflow, Tooltip } from './chunk-DDKCQVKO.js';
3
- import { Icon } from './chunk-GX6O72IV.js';
4
- import { cn } from './chunk-TTZSZNJ6.js';
1
+ import { Badge } from './chunk-QVNGQ64Q.js';
2
+ import { useTextOverflow, Tooltip } from './chunk-RLNIRPOH.js';
3
+ import './chunk-WH2FUFAC.js';
4
+ import { Icon } from './chunk-X4CNZFWC.js';
5
+ import { cn } from './chunk-4KVFH5KC.js';
5
6
  import { useState } from 'react';
6
7
  import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, closestCorners, DragOverlay } from '@dnd-kit/core';
7
8
  import { sortableKeyboardCoordinates, SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../showcase/src/components/KanbanBoard.tsx"],"names":[],"mappings":"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","file":"kanban.js","sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport {\n DndContext,\n closestCorners,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragOverEvent,\n DragOverlay,\n type DragStartEvent,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n useSortable,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../lib/icons\";\nimport { Tooltip } from \"./Tooltip\";\nimport { useTextOverflow } from \"../lib/use-text-overflow\";\nimport { Badge } from \"./Badge\";\n\nexport interface KanbanCard {\n id: string;\n title: string;\n description?: string;\n tags?: string[];\n avatar?: string;\n}\n\nexport interface KanbanColumn {\n id: string;\n title: string;\n cards: KanbanCard[];\n color?: string;\n}\n\nexport interface KanbanBoardProps {\n columns: KanbanColumn[];\n onColumnsChange?: (columns: KanbanColumn[]) => void;\n renderCard?: (card: KanbanCard) => ReactNode;\n className?: string;\n}\n\nfunction SortableCard({\n card,\n renderCard,\n}: {\n card: KanbanCard;\n renderCard?: (card: KanbanCard) => ReactNode;\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: card.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n className={cn(\n \"rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n \"bg-[var(--ds-bg-surface)] p-ds-3 cursor-grab active:cursor-grabbing\",\n \"shadow-[var(--ds-shadow-button)]\",\n \"transition-shadow duration-[var(--ds-transition-speed)]\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n isDragging && \"opacity-30 scale-[1.02]\",\n )}\n >\n {renderCard ? (\n renderCard(card)\n ) : (\n <DefaultCard card={card} />\n )}\n </div>\n );\n}\n\nfunction ClampedDescription({ children }: { children: string }) {\n const { ref, isTruncated } = useTextOverflow({ lines: 2 });\n const el = <p ref={ref} className=\"text-xs text-[var(--ds-text-secondary)] line-clamp-2\">{children}</p>;\n if (!isTruncated) return el;\n return <Tooltip content={children}>{el}</Tooltip>;\n}\n\nfunction TruncTitle({ children }: { children: string }) {\n const { ref, isTruncated } = useTextOverflow({ lines: 1 });\n const el = <p ref={ref} className=\"text-sm font-medium text-[var(--ds-text-primary)] truncate\">{children}</p>;\n if (!isTruncated) return el;\n return <Tooltip content={children}>{el}</Tooltip>;\n}\n\nfunction DefaultCard({ card }: { card: KanbanCard }) {\n return (\n <div className=\"space-y-ds-2\">\n <TruncTitle>{card.title}</TruncTitle>\n {card.description && (\n <ClampedDescription>{card.description}</ClampedDescription>\n )}\n {card.tags && card.tags.length > 0 && (\n <div className=\"flex flex-wrap gap-ds-1\">\n {card.tags.map((tag) => (\n <Badge key={tag} variant=\"subtle\" size=\"sm\">{tag}</Badge>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction OverlayCard({\n card,\n renderCard,\n}: {\n card: KanbanCard;\n renderCard?: (card: KanbanCard) => ReactNode;\n}) {\n return (\n <div\n className={cn(\n \"rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n \"bg-[var(--ds-bg-surface)] p-ds-3 shadow-[var(--ds-shadow-card)]\",\n \"rotate-2\",\n )}\n >\n {renderCard ? renderCard(card) : <DefaultCard card={card} />}\n </div>\n );\n}\n\nexport function KanbanBoard({\n columns: controlledCols,\n onColumnsChange,\n renderCard,\n className,\n}: KanbanBoardProps) {\n const [internalCols, setInternalCols] = useState<KanbanColumn[]>(controlledCols);\n const columns = onColumnsChange ? controlledCols : internalCols;\n const setCols = (next: KanbanColumn[] | ((prev: KanbanColumn[]) => KanbanColumn[])) => {\n if (typeof next === \"function\") {\n const updated = next(columns);\n if (onColumnsChange) onColumnsChange(updated);\n else setInternalCols(updated);\n } else {\n if (onColumnsChange) onColumnsChange(next);\n else setInternalCols(next);\n }\n };\n\n const [activeCard, setActiveCard] = useState<KanbanCard | null>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const findColumnByCardId = (cardId: string) =>\n columns.find((col) => col.cards.some((c) => c.id === cardId));\n\n const handleDragStart = (event: DragStartEvent) => {\n const col = findColumnByCardId(String(event.active.id));\n const card = col?.cards.find((c) => c.id === String(event.active.id));\n if (card) setActiveCard(card);\n };\n\n const handleDragOver = (event: DragOverEvent) => {\n const { active, over } = event;\n if (!over) return;\n\n const activeId = String(active.id);\n const overId = String(over.id);\n if (activeId === overId) return;\n\n const activeCol = findColumnByCardId(activeId);\n const overCol =\n findColumnByCardId(overId) ?? columns.find((c) => c.id === overId);\n\n if (!activeCol || !overCol || activeCol.id === overCol.id) return;\n\n setCols((prev) =>\n prev.map((col) => {\n if (col.id === activeCol.id) {\n return { ...col, cards: col.cards.filter((c) => c.id !== activeId) };\n }\n if (col.id === overCol.id) {\n const card = activeCol.cards.find((c) => c.id === activeId);\n if (!card) return col;\n const overIdx = col.cards.findIndex((c) => c.id === overId);\n const newCards = [...col.cards];\n if (overIdx >= 0) {\n newCards.splice(overIdx, 0, card);\n } else {\n newCards.push(card);\n }\n return { ...col, cards: newCards };\n }\n return col;\n }),\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n setActiveCard(null);\n if (!over || active.id === over.id) return;\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n const col = findColumnByCardId(activeId);\n if (!col) return;\n\n const oldIdx = col.cards.findIndex((c) => c.id === activeId);\n const newIdx = col.cards.findIndex((c) => c.id === overId);\n\n if (oldIdx >= 0 && newIdx >= 0 && oldIdx !== newIdx) {\n setCols((prev) =>\n prev.map((c) => {\n if (c.id !== col.id) return c;\n const newCards = [...c.cards];\n const [moved] = newCards.splice(oldIdx, 1);\n newCards.splice(newIdx, 0, moved);\n return { ...c, cards: newCards };\n }),\n );\n }\n };\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCorners}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n >\n <div className={cn(\"flex gap-ds-4 overflow-x-auto pb-ds-2 snap-x snap-mandatory sm:snap-none\", className)}>\n {columns.map((col) => (\n <div\n key={col.id}\n className={cn(\n \"flex flex-col shrink-0 w-[calc(100vw-4rem)] sm:w-[280px] snap-center\",\n \"bg-[var(--ds-bg-muted)] rounded-[var(--ds-radius-lg)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n )}\n >\n <div className=\"flex items-center justify-between px-ds-3 py-ds-2.5\">\n <div className=\"flex items-center gap-ds-2\">\n {col.color && (\n <span\n className=\"w-2.5 h-2.5 rounded-[var(--ds-radius-full)] shrink-0\"\n style={{ backgroundColor: col.color }}\n />\n )}\n <span className=\"text-sm font-[var(--ds-weight-heading)] text-[var(--ds-text-primary)]\">\n {col.title}\n </span>\n <span className=\"text-xs text-[var(--ds-text-muted)] tabular-nums\">\n {col.cards.length}\n </span>\n </div>\n <Icon name=\"plus\" size={14} className=\"text-[var(--ds-text-muted)]\" />\n </div>\n\n <SortableContext\n items={col.cards.map((c) => c.id)}\n strategy={verticalListSortingStrategy}\n id={col.id}\n >\n <div className=\"flex flex-col gap-ds-2.5 px-ds-3 pb-ds-3 min-h-[60px]\">\n {col.cards.map((card) => (\n <SortableCard\n key={card.id}\n card={card}\n renderCard={renderCard}\n />\n ))}\n </div>\n </SortableContext>\n </div>\n ))}\n </div>\n\n <DragOverlay>\n {activeCard && <OverlayCard card={activeCard} renderCard={renderCard} />}\n </DragOverlay>\n </DndContext>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../showcase/src/components/KanbanBoard.tsx"],"names":[],"mappings":"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","file":"kanban.js","sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport {\n DndContext,\n closestCorners,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragOverEvent,\n DragOverlay,\n type DragStartEvent,\n} from \"@dnd-kit/core\";\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n useSortable,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../lib/icons\";\nimport { Tooltip } from \"./Tooltip\";\nimport { useTextOverflow } from \"../lib/use-text-overflow\";\nimport { Badge } from \"./Badge\";\n\nexport interface KanbanCard {\n id: string;\n title: string;\n description?: string;\n tags?: string[];\n avatar?: string;\n}\n\nexport interface KanbanColumn {\n id: string;\n title: string;\n cards: KanbanCard[];\n color?: string;\n}\n\nexport interface KanbanBoardProps {\n columns: KanbanColumn[];\n onColumnsChange?: (columns: KanbanColumn[]) => void;\n renderCard?: (card: KanbanCard) => ReactNode;\n className?: string;\n}\n\nfunction SortableCard({\n card,\n renderCard,\n}: {\n card: KanbanCard;\n renderCard?: (card: KanbanCard) => ReactNode;\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: card.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n className={cn(\n \"rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n \"bg-[var(--ds-bg-surface)] p-ds-3 cursor-grab active:cursor-grabbing\",\n \"shadow-[var(--ds-shadow-button)]\",\n \"transition-shadow duration-[var(--ds-transition-speed)]\",\n \"focus-visible:outline-none focus-visible:shadow-[var(--ds-shadow-focus)]\",\n isDragging && \"opacity-30 scale-[1.02]\",\n )}\n >\n {renderCard ? (\n renderCard(card)\n ) : (\n <DefaultCard card={card} />\n )}\n </div>\n );\n}\n\nfunction ClampedDescription({ children }: { children: string }) {\n const { ref, isTruncated } = useTextOverflow({ lines: 2 });\n const el = <p ref={ref} className=\"text-xs text-[var(--ds-text-secondary)] line-clamp-2\">{children}</p>;\n if (!isTruncated) return el;\n return <Tooltip content={children}>{el}</Tooltip>;\n}\n\nfunction TruncTitle({ children }: { children: string }) {\n const { ref, isTruncated } = useTextOverflow({ lines: 1 });\n const el = <p ref={ref} className=\"text-sm font-medium text-[var(--ds-text-primary)] truncate\">{children}</p>;\n if (!isTruncated) return el;\n return <Tooltip content={children}>{el}</Tooltip>;\n}\n\nfunction DefaultCard({ card }: { card: KanbanCard }) {\n return (\n <div className=\"space-y-ds-2\">\n <TruncTitle>{card.title}</TruncTitle>\n {card.description && (\n <ClampedDescription>{card.description}</ClampedDescription>\n )}\n {card.tags && card.tags.length > 0 && (\n <div className=\"flex flex-wrap gap-ds-1\">\n {card.tags.map((tag) => (\n <Badge key={tag} variant=\"subtle\" size=\"sm\">{tag}</Badge>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction OverlayCard({\n card,\n renderCard,\n}: {\n card: KanbanCard;\n renderCard?: (card: KanbanCard) => ReactNode;\n}) {\n return (\n <div\n className={cn(\n \"rounded-[var(--ds-radius-md)] border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n \"bg-[var(--ds-bg-surface)] p-ds-3 shadow-[var(--ds-shadow-card)]\",\n \"rotate-2\",\n )}\n >\n {renderCard ? renderCard(card) : <DefaultCard card={card} />}\n </div>\n );\n}\n\nexport function KanbanBoard({\n columns: controlledCols,\n onColumnsChange,\n renderCard,\n className,\n}: KanbanBoardProps) {\n const [internalCols, setInternalCols] = useState<KanbanColumn[]>(controlledCols);\n const columns = onColumnsChange ? controlledCols : internalCols;\n const setCols = (next: KanbanColumn[] | ((prev: KanbanColumn[]) => KanbanColumn[])) => {\n if (typeof next === \"function\") {\n const updated = next(columns);\n if (onColumnsChange) onColumnsChange(updated);\n else setInternalCols(updated);\n } else {\n if (onColumnsChange) onColumnsChange(next);\n else setInternalCols(next);\n }\n };\n\n const [activeCard, setActiveCard] = useState<KanbanCard | null>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const findColumnByCardId = (cardId: string) =>\n columns.find((col) => col.cards.some((c) => c.id === cardId));\n\n const handleDragStart = (event: DragStartEvent) => {\n const col = findColumnByCardId(String(event.active.id));\n const card = col?.cards.find((c) => c.id === String(event.active.id));\n if (card) setActiveCard(card);\n };\n\n const handleDragOver = (event: DragOverEvent) => {\n const { active, over } = event;\n if (!over) return;\n\n const activeId = String(active.id);\n const overId = String(over.id);\n if (activeId === overId) return;\n\n const activeCol = findColumnByCardId(activeId);\n const overCol =\n findColumnByCardId(overId) ?? columns.find((c) => c.id === overId);\n\n if (!activeCol || !overCol || activeCol.id === overCol.id) return;\n\n setCols((prev) =>\n prev.map((col) => {\n if (col.id === activeCol.id) {\n return { ...col, cards: col.cards.filter((c) => c.id !== activeId) };\n }\n if (col.id === overCol.id) {\n const card = activeCol.cards.find((c) => c.id === activeId);\n if (!card) return col;\n const overIdx = col.cards.findIndex((c) => c.id === overId);\n const newCards = [...col.cards];\n if (overIdx >= 0) {\n newCards.splice(overIdx, 0, card);\n } else {\n newCards.push(card);\n }\n return { ...col, cards: newCards };\n }\n return col;\n }),\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n setActiveCard(null);\n if (!over || active.id === over.id) return;\n\n const activeId = String(active.id);\n const overId = String(over.id);\n\n const col = findColumnByCardId(activeId);\n if (!col) return;\n\n const oldIdx = col.cards.findIndex((c) => c.id === activeId);\n const newIdx = col.cards.findIndex((c) => c.id === overId);\n\n if (oldIdx >= 0 && newIdx >= 0 && oldIdx !== newIdx) {\n setCols((prev) =>\n prev.map((c) => {\n if (c.id !== col.id) return c;\n const newCards = [...c.cards];\n const [moved] = newCards.splice(oldIdx, 1);\n newCards.splice(newIdx, 0, moved);\n return { ...c, cards: newCards };\n }),\n );\n }\n };\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCorners}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n >\n <div className={cn(\"flex gap-ds-4 overflow-x-auto pb-ds-2 snap-x snap-mandatory sm:snap-none\", className)}>\n {columns.map((col) => (\n <div\n key={col.id}\n className={cn(\n \"flex flex-col shrink-0 w-[calc(100vw-4rem)] sm:w-[280px] snap-center\",\n \"bg-[var(--ds-bg-muted)] rounded-[var(--ds-radius-lg)]\",\n \"border-[length:var(--ds-border-width)] border-[var(--ds-border-subtle)]\",\n )}\n >\n <div className=\"flex items-center justify-between px-ds-3 py-ds-2.5\">\n <div className=\"flex items-center gap-ds-2\">\n {col.color && (\n <span\n className=\"w-2.5 h-2.5 rounded-[var(--ds-radius-full)] shrink-0\"\n style={{ backgroundColor: col.color }}\n />\n )}\n <span className=\"text-sm font-[var(--ds-weight-heading)] text-[var(--ds-text-primary)]\">\n {col.title}\n </span>\n <span className=\"text-xs text-[var(--ds-text-muted)] tabular-nums\">\n {col.cards.length}\n </span>\n </div>\n <Icon name=\"plus\" size={14} className=\"text-[var(--ds-text-muted)]\" />\n </div>\n\n <SortableContext\n items={col.cards.map((c) => c.id)}\n strategy={verticalListSortingStrategy}\n id={col.id}\n >\n <div className=\"flex flex-col gap-ds-2.5 px-ds-3 pb-ds-3 min-h-[60px]\">\n {col.cards.map((card) => (\n <SortableCard\n key={card.id}\n card={card}\n renderCard={renderCard}\n />\n ))}\n </div>\n </SortableContext>\n </div>\n ))}\n </div>\n\n <DragOverlay>\n {activeCard && <OverlayCard card={activeCard} renderCard={renderCard} />}\n </DragOverlay>\n </DndContext>\n );\n}\n"]}
@@ -0,0 +1,76 @@
1
+ import { pickCurated, buildExtendedMap } from './chunk-NRHIYS5W.js';
2
+
3
+ // ../../showcase/src/lib/icon-packs/lucide.ts
4
+ var CURATED = {
5
+ "home": "Home",
6
+ "folder": "FolderKanban",
7
+ "chart": "BarChart3",
8
+ "settings": "Settings",
9
+ "chevron-right": "ChevronRight",
10
+ "close": "X",
11
+ "plus": "Plus",
12
+ "search": "Search",
13
+ "bell": "Bell",
14
+ "user": "User",
15
+ "check": "Check",
16
+ "warning": "AlertTriangle",
17
+ "info": "Info",
18
+ "error": "AlertCircle",
19
+ "clock": "Clock",
20
+ "calendar": "CalendarDays",
21
+ "bold": "Bold",
22
+ "italic": "Italic",
23
+ "underline": "Underline",
24
+ "strikethrough": "Strikethrough",
25
+ "align-left": "AlignLeft",
26
+ "align-center": "AlignCenter",
27
+ "align-right": "AlignRight",
28
+ "list": "List",
29
+ "list-ordered": "ListOrdered",
30
+ "list-checks": "ListChecks",
31
+ "link": "Link",
32
+ "image": "Image",
33
+ "table": "Table",
34
+ "code": "Code",
35
+ "quote": "Quote",
36
+ "minus": "Minus",
37
+ "superscript": "Superscript",
38
+ "subscript": "Subscript",
39
+ "highlight": "Highlighter",
40
+ "type": "Type",
41
+ "chevron-up": "ChevronUp",
42
+ "chevron-down": "ChevronDown",
43
+ "trash": "Trash2",
44
+ "undo": "Undo2",
45
+ "redo": "Redo2",
46
+ "arrow-left": "ArrowLeft",
47
+ "grip-vertical": "GripVertical",
48
+ "mic": "Mic",
49
+ "paperclip": "Paperclip",
50
+ "send": "Send",
51
+ "log-out": "LogOut",
52
+ "edit": "Pencil",
53
+ "menu": "Menu",
54
+ "more-horizontal": "MoreHorizontal",
55
+ "star": "Star",
56
+ "bookmark": "Bookmark",
57
+ "download": "Download",
58
+ "upload": "Upload",
59
+ "sparkles": "Sparkles"
60
+ };
61
+ async function peer() {
62
+ return await import('lucide-react');
63
+ }
64
+ async function loadCurated() {
65
+ return pickCurated(await peer(), CURATED);
66
+ }
67
+ async function loadExtended() {
68
+ const mod = await peer();
69
+ const extended = buildExtendedMap(mod, {});
70
+ Object.assign(extended, pickCurated(mod, CURATED));
71
+ return extended;
72
+ }
73
+
74
+ export { loadCurated, loadExtended };
75
+ //# sourceMappingURL=lucide-JH2R3TFV.js.map
76
+ //# sourceMappingURL=lucide-JH2R3TFV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../showcase/src/lib/icon-packs/lucide.ts"],"names":[],"mappings":";;;AAgBA,IAAM,OAAA,GAAkC;AAAA,EACtC,MAAA,EAAQ,MAAA;AAAA,EACR,QAAA,EAAU,cAAA;AAAA,EACV,OAAA,EAAS,WAAA;AAAA,EACT,UAAA,EAAY,UAAA;AAAA,EACZ,eAAA,EAAiB,cAAA;AAAA,EACjB,OAAA,EAAS,GAAA;AAAA,EACT,MAAA,EAAQ,MAAA;AAAA,EACR,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,OAAA;AAAA,EACT,SAAA,EAAW,eAAA;AAAA,EACX,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,OAAA;AAAA,EACT,UAAA,EAAY,cAAA;AAAA,EACZ,MAAA,EAAQ,MAAA;AAAA,EACR,QAAA,EAAU,QAAA;AAAA,EACV,WAAA,EAAa,WAAA;AAAA,EACb,eAAA,EAAiB,eAAA;AAAA,EACjB,YAAA,EAAc,WAAA;AAAA,EACd,cAAA,EAAgB,aAAA;AAAA,EAChB,aAAA,EAAe,YAAA;AAAA,EACf,MAAA,EAAQ,MAAA;AAAA,EACR,cAAA,EAAgB,aAAA;AAAA,EAChB,aAAA,EAAe,YAAA;AAAA,EACf,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,OAAA;AAAA,EACT,OAAA,EAAS,OAAA;AAAA,EACT,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,OAAA;AAAA,EACT,OAAA,EAAS,OAAA;AAAA,EACT,aAAA,EAAe,aAAA;AAAA,EACf,WAAA,EAAa,WAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,MAAA,EAAQ,MAAA;AAAA,EACR,YAAA,EAAc,WAAA;AAAA,EACd,cAAA,EAAgB,aAAA;AAAA,EAChB,OAAA,EAAS,QAAA;AAAA,EACT,MAAA,EAAQ,OAAA;AAAA,EACR,MAAA,EAAQ,OAAA;AAAA,EACR,YAAA,EAAc,WAAA;AAAA,EACd,eAAA,EAAiB,cAAA;AAAA,EACjB,KAAA,EAAO,KAAA;AAAA,EACP,WAAA,EAAa,WAAA;AAAA,EACb,MAAA,EAAQ,MAAA;AAAA,EACR,SAAA,EAAW,QAAA;AAAA,EACX,MAAA,EAAQ,QAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,iBAAA,EAAmB,gBAAA;AAAA,EACnB,MAAA,EAAQ,MAAA;AAAA,EACR,UAAA,EAAY,UAAA;AAAA,EACZ,UAAA,EAAY,UAAA;AAAA,EACZ,QAAA,EAAU,QAAA;AAAA,EACV,UAAA,EAAY;AACd,CAAA;AAEA,eAAe,IAAA,GAAyC;AACtD,EAAA,OAAQ,MAAM,OAAO,cAAc,CAAA;AACrC;AAEA,eAAsB,WAAA,GAAgC;AACpD,EAAA,OAAO,WAAA,CAAY,MAAM,IAAA,EAAK,EAAG,OAAO,CAAA;AAC1C;AAEA,eAAsB,YAAA,GAAiC;AACrD,EAAA,MAAM,GAAA,GAAM,MAAM,IAAA,EAAK;AACvB,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,GAAA,EAAK,EAAE,CAAA;AACzC,EAAA,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,WAAA,CAAY,GAAA,EAAK,OAAO,CAAC,CAAA;AACjD,EAAA,OAAO,QAAA;AACT","file":"lucide-JH2R3TFV.js","sourcesContent":["import type { IconMap } from './types'\nimport { buildExtendedMap, pickCurated } from './utils'\n\n/**\n * Lucide icons.\n *\n * The pack is reached only through the dynamic import in peer() — never a\n * static named import. A static import of an optional peer makes a consumer's\n * production build fail on Vite 8 when the peer is not installed: Vite\n * substitutes an export-less stub and the bundler treats every missing name as\n * fatal (Sprint 22 bench finding 1, 13 Sep 2026; showcase/src/test/\n * vite8-optional-peers-build.test.ts guards it). The curated names are strings\n * for the same reason; icon-completeness.test.tsx proves every one resolves in\n * the installed pack. If the pack is missing, peer() rejects and loadPack in\n * icons.tsx reports which package to install.\n */\nconst CURATED: Record<string, string> = {\n \"home\": \"Home\",\n \"folder\": \"FolderKanban\",\n \"chart\": \"BarChart3\",\n \"settings\": \"Settings\",\n \"chevron-right\": \"ChevronRight\",\n \"close\": \"X\",\n \"plus\": \"Plus\",\n \"search\": \"Search\",\n \"bell\": \"Bell\",\n \"user\": \"User\",\n \"check\": \"Check\",\n \"warning\": \"AlertTriangle\",\n \"info\": \"Info\",\n \"error\": \"AlertCircle\",\n \"clock\": \"Clock\",\n \"calendar\": \"CalendarDays\",\n \"bold\": \"Bold\",\n \"italic\": \"Italic\",\n \"underline\": \"Underline\",\n \"strikethrough\": \"Strikethrough\",\n \"align-left\": \"AlignLeft\",\n \"align-center\": \"AlignCenter\",\n \"align-right\": \"AlignRight\",\n \"list\": \"List\",\n \"list-ordered\": \"ListOrdered\",\n \"list-checks\": \"ListChecks\",\n \"link\": \"Link\",\n \"image\": \"Image\",\n \"table\": \"Table\",\n \"code\": \"Code\",\n \"quote\": \"Quote\",\n \"minus\": \"Minus\",\n \"superscript\": \"Superscript\",\n \"subscript\": \"Subscript\",\n \"highlight\": \"Highlighter\",\n \"type\": \"Type\",\n \"chevron-up\": \"ChevronUp\",\n \"chevron-down\": \"ChevronDown\",\n \"trash\": \"Trash2\",\n \"undo\": \"Undo2\",\n \"redo\": \"Redo2\",\n \"arrow-left\": \"ArrowLeft\",\n \"grip-vertical\": \"GripVertical\",\n \"mic\": \"Mic\",\n \"paperclip\": \"Paperclip\",\n \"send\": \"Send\",\n \"log-out\": \"LogOut\",\n \"edit\": \"Pencil\",\n \"menu\": \"Menu\",\n \"more-horizontal\": \"MoreHorizontal\",\n \"star\": \"Star\",\n \"bookmark\": \"Bookmark\",\n \"download\": \"Download\",\n \"upload\": \"Upload\",\n \"sparkles\": \"Sparkles\",\n}\n\nasync function peer(): Promise<Record<string, unknown>> {\n return (await import(\"lucide-react\")) as unknown as Record<string, unknown>\n}\n\nexport async function loadCurated(): Promise<IconMap> {\n return pickCurated(await peer(), CURATED)\n}\n\nexport async function loadExtended(): Promise<IconMap> {\n const mod = await peer()\n const extended = buildExtendedMap(mod, {})\n Object.assign(extended, pickCurated(mod, CURATED))\n return extended\n}\n"]}
@@ -0,0 +1,76 @@
1
+ import { pickCurated, buildExtendedMap } from './chunk-NRHIYS5W.js';
2
+
3
+ // ../../showcase/src/lib/icon-packs/phosphor.ts
4
+ var CURATED = {
5
+ "home": "House",
6
+ "folder": "FolderSimple",
7
+ "chart": "ChartBar",
8
+ "settings": "Gear",
9
+ "chevron-right": "CaretRight",
10
+ "close": "X",
11
+ "plus": "Plus",
12
+ "search": "MagnifyingGlass",
13
+ "bell": "Bell",
14
+ "user": "User",
15
+ "check": "Check",
16
+ "warning": "Warning",
17
+ "info": "Info",
18
+ "error": "WarningCircle",
19
+ "clock": "Clock",
20
+ "calendar": "CalendarBlank",
21
+ "bold": "TextB",
22
+ "italic": "TextItalic",
23
+ "underline": "TextUnderline",
24
+ "strikethrough": "TextStrikethrough",
25
+ "align-left": "TextAlignLeft",
26
+ "align-center": "TextAlignCenter",
27
+ "align-right": "TextAlignRight",
28
+ "list": "ListBullets",
29
+ "list-ordered": "ListNumbers",
30
+ "list-checks": "ListChecks",
31
+ "link": "Link",
32
+ "image": "Image",
33
+ "table": "Table",
34
+ "code": "Code",
35
+ "quote": "Quotes",
36
+ "minus": "Minus",
37
+ "superscript": "TextSuperscript",
38
+ "subscript": "TextSubscript",
39
+ "highlight": "Highlighter",
40
+ "type": "TextT",
41
+ "chevron-up": "CaretUp",
42
+ "chevron-down": "CaretDown",
43
+ "trash": "Trash",
44
+ "undo": "ArrowCounterClockwise",
45
+ "redo": "ArrowClockwise",
46
+ "arrow-left": "ArrowLeft",
47
+ "grip-vertical": "DotsSixVertical",
48
+ "mic": "Microphone",
49
+ "paperclip": "Paperclip",
50
+ "send": "PaperPlaneTilt",
51
+ "log-out": "SignOut",
52
+ "edit": "PencilSimple",
53
+ "menu": "List",
54
+ "more-horizontal": "DotsThree",
55
+ "star": "Star",
56
+ "bookmark": "BookmarkSimple",
57
+ "download": "DownloadSimple",
58
+ "upload": "UploadSimple",
59
+ "sparkles": "Sparkle"
60
+ };
61
+ async function peer() {
62
+ return await import('@phosphor-icons/react');
63
+ }
64
+ async function loadCurated() {
65
+ return pickCurated(await peer(), CURATED);
66
+ }
67
+ async function loadExtended() {
68
+ const mod = await peer();
69
+ const extended = buildExtendedMap(mod, {});
70
+ Object.assign(extended, pickCurated(mod, CURATED));
71
+ return extended;
72
+ }
73
+
74
+ export { loadCurated, loadExtended };
75
+ //# sourceMappingURL=phosphor-HCVUMVT5.js.map
76
+ //# sourceMappingURL=phosphor-HCVUMVT5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../showcase/src/lib/icon-packs/phosphor.ts"],"names":[],"mappings":";;;AAgBA,IAAM,OAAA,GAAkC;AAAA,EACtC,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU,cAAA;AAAA,EACV,OAAA,EAAS,UAAA;AAAA,EACT,UAAA,EAAY,MAAA;AAAA,EACZ,eAAA,EAAiB,YAAA;AAAA,EACjB,OAAA,EAAS,GAAA;AAAA,EACT,MAAA,EAAQ,MAAA;AAAA,EACR,QAAA,EAAU,iBAAA;AAAA,EACV,MAAA,EAAQ,MAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,OAAA;AAAA,EACT,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,eAAA;AAAA,EACT,OAAA,EAAS,OAAA;AAAA,EACT,UAAA,EAAY,eAAA;AAAA,EACZ,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU,YAAA;AAAA,EACV,WAAA,EAAa,eAAA;AAAA,EACb,eAAA,EAAiB,mBAAA;AAAA,EACjB,YAAA,EAAc,eAAA;AAAA,EACd,cAAA,EAAgB,iBAAA;AAAA,EAChB,aAAA,EAAe,gBAAA;AAAA,EACf,MAAA,EAAQ,aAAA;AAAA,EACR,cAAA,EAAgB,aAAA;AAAA,EAChB,aAAA,EAAe,YAAA;AAAA,EACf,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,OAAA;AAAA,EACT,OAAA,EAAS,OAAA;AAAA,EACT,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EACT,OAAA,EAAS,OAAA;AAAA,EACT,aAAA,EAAe,iBAAA;AAAA,EACf,WAAA,EAAa,eAAA;AAAA,EACb,WAAA,EAAa,aAAA;AAAA,EACb,MAAA,EAAQ,OAAA;AAAA,EACR,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,WAAA;AAAA,EAChB,OAAA,EAAS,OAAA;AAAA,EACT,MAAA,EAAQ,uBAAA;AAAA,EACR,MAAA,EAAQ,gBAAA;AAAA,EACR,YAAA,EAAc,WAAA;AAAA,EACd,eAAA,EAAiB,iBAAA;AAAA,EACjB,KAAA,EAAO,YAAA;AAAA,EACP,WAAA,EAAa,WAAA;AAAA,EACb,MAAA,EAAQ,gBAAA;AAAA,EACR,SAAA,EAAW,SAAA;AAAA,EACX,MAAA,EAAQ,cAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,iBAAA,EAAmB,WAAA;AAAA,EACnB,MAAA,EAAQ,MAAA;AAAA,EACR,UAAA,EAAY,gBAAA;AAAA,EACZ,UAAA,EAAY,gBAAA;AAAA,EACZ,QAAA,EAAU,cAAA;AAAA,EACV,UAAA,EAAY;AACd,CAAA;AAEA,eAAe,IAAA,GAAyC;AACtD,EAAA,OAAQ,MAAM,OAAO,uBAAuB,CAAA;AAC9C;AAEA,eAAsB,WAAA,GAAgC;AACpD,EAAA,OAAO,WAAA,CAAY,MAAM,IAAA,EAAK,EAAG,OAAO,CAAA;AAC1C;AAEA,eAAsB,YAAA,GAAiC;AACrD,EAAA,MAAM,GAAA,GAAM,MAAM,IAAA,EAAK;AACvB,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,GAAA,EAAK,EAAE,CAAA;AACzC,EAAA,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,WAAA,CAAY,GAAA,EAAK,OAAO,CAAC,CAAA;AACjD,EAAA,OAAO,QAAA;AACT","file":"phosphor-HCVUMVT5.js","sourcesContent":["import type { IconMap } from './types'\nimport { buildExtendedMap, pickCurated } from './utils'\n\n/**\n * Phosphor icons.\n *\n * The pack is reached only through the dynamic import in peer() — never a\n * static named import. A static import of an optional peer makes a consumer's\n * production build fail on Vite 8 when the peer is not installed: Vite\n * substitutes an export-less stub and the bundler treats every missing name as\n * fatal (Sprint 22 bench finding 1, 13 Sep 2026; showcase/src/test/\n * vite8-optional-peers-build.test.ts guards it). The curated names are strings\n * for the same reason; icon-completeness.test.tsx proves every one resolves in\n * the installed pack. If the pack is missing, peer() rejects and loadPack in\n * icons.tsx reports which package to install.\n */\nconst CURATED: Record<string, string> = {\n \"home\": \"House\",\n \"folder\": \"FolderSimple\",\n \"chart\": \"ChartBar\",\n \"settings\": \"Gear\",\n \"chevron-right\": \"CaretRight\",\n \"close\": \"X\",\n \"plus\": \"Plus\",\n \"search\": \"MagnifyingGlass\",\n \"bell\": \"Bell\",\n \"user\": \"User\",\n \"check\": \"Check\",\n \"warning\": \"Warning\",\n \"info\": \"Info\",\n \"error\": \"WarningCircle\",\n \"clock\": \"Clock\",\n \"calendar\": \"CalendarBlank\",\n \"bold\": \"TextB\",\n \"italic\": \"TextItalic\",\n \"underline\": \"TextUnderline\",\n \"strikethrough\": \"TextStrikethrough\",\n \"align-left\": \"TextAlignLeft\",\n \"align-center\": \"TextAlignCenter\",\n \"align-right\": \"TextAlignRight\",\n \"list\": \"ListBullets\",\n \"list-ordered\": \"ListNumbers\",\n \"list-checks\": \"ListChecks\",\n \"link\": \"Link\",\n \"image\": \"Image\",\n \"table\": \"Table\",\n \"code\": \"Code\",\n \"quote\": \"Quotes\",\n \"minus\": \"Minus\",\n \"superscript\": \"TextSuperscript\",\n \"subscript\": \"TextSubscript\",\n \"highlight\": \"Highlighter\",\n \"type\": \"TextT\",\n \"chevron-up\": \"CaretUp\",\n \"chevron-down\": \"CaretDown\",\n \"trash\": \"Trash\",\n \"undo\": \"ArrowCounterClockwise\",\n \"redo\": \"ArrowClockwise\",\n \"arrow-left\": \"ArrowLeft\",\n \"grip-vertical\": \"DotsSixVertical\",\n \"mic\": \"Microphone\",\n \"paperclip\": \"Paperclip\",\n \"send\": \"PaperPlaneTilt\",\n \"log-out\": \"SignOut\",\n \"edit\": \"PencilSimple\",\n \"menu\": \"List\",\n \"more-horizontal\": \"DotsThree\",\n \"star\": \"Star\",\n \"bookmark\": \"BookmarkSimple\",\n \"download\": \"DownloadSimple\",\n \"upload\": \"UploadSimple\",\n \"sparkles\": \"Sparkle\",\n}\n\nasync function peer(): Promise<Record<string, unknown>> {\n return (await import(\"@phosphor-icons/react\")) as unknown as Record<string, unknown>\n}\n\nexport async function loadCurated(): Promise<IconMap> {\n return pickCurated(await peer(), CURATED)\n}\n\nexport async function loadExtended(): Promise<IconMap> {\n const mod = await peer()\n const extended = buildExtendedMap(mod, {})\n Object.assign(extended, pickCurated(mod, CURATED))\n return extended\n}\n"]}
package/dist/resizable.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { useBreakpoint } from './chunk-EKQHHP72.js';
2
- import { Icon } from './chunk-GX6O72IV.js';
3
- import { cn } from './chunk-TTZSZNJ6.js';
2
+ import { Icon } from './chunk-X4CNZFWC.js';
3
+ import { cn } from './chunk-4KVFH5KC.js';
4
4
  import { Group, Panel, Separator } from 'react-resizable-panels';
5
5
  import { createContext, useContext } from 'react';
6
6
  import { jsx } from 'react/jsx-runtime';
package/dist/roots.css CHANGED
@@ -36,6 +36,10 @@
36
36
  --ds-shadow-offset-y: 0px;
37
37
  --ds-shadow-blur: 8px;
38
38
  --ds-shadow-alpha: 0.1;
39
+ /* Neumorphic inner highlight: the white inset rim on the inner bottom-right
40
+ edges of every neumorphic surface body (rendered at ×0.18 in dark mode).
41
+ 0 renders nothing; presets author their own value. */
42
+ --ds-shadow-inner-highlight: 0;
39
43
 
40
44
  --ds-transition-speed: 200ms;
41
45
  --ds-transition-ease: ease-in-out;
@@ -51,6 +55,28 @@
51
55
  --ds-ambient-hover-speed: 250ms;
52
56
  --ds-ambient-hover-ease: cubic-bezier(0.33, 1, 0.68, 1);
53
57
 
58
+ /* Hover transitions for components that move on hover. Colour always eases on
59
+ the colour curve; only motion and shadow take the hover ease, which may
60
+ overshoot — a bounce on a tint reads as a flash. Tailwind v4 writes hover
61
+ scale and lift to the individual `scale` and `translate` properties, which
62
+ a transition on `transform` alone does not cover, so all three are listed. */
63
+ --ds-transition-interactive:
64
+ color var(--ds-transition-speed) var(--ds-transition-ease),
65
+ background-color var(--ds-transition-speed) var(--ds-transition-ease),
66
+ border-color var(--ds-transition-speed) var(--ds-transition-ease),
67
+ transform var(--ds-interactive-hover-speed) var(--ds-interactive-hover-ease),
68
+ translate var(--ds-interactive-hover-speed) var(--ds-interactive-hover-ease),
69
+ scale var(--ds-interactive-hover-speed) var(--ds-interactive-hover-ease),
70
+ box-shadow var(--ds-interactive-hover-speed) var(--ds-interactive-hover-ease);
71
+ --ds-transition-ambient:
72
+ color var(--ds-transition-speed) var(--ds-transition-ease),
73
+ background-color var(--ds-transition-speed) var(--ds-transition-ease),
74
+ border-color var(--ds-transition-speed) var(--ds-transition-ease),
75
+ transform var(--ds-ambient-hover-speed) var(--ds-ambient-hover-ease),
76
+ translate var(--ds-ambient-hover-speed) var(--ds-ambient-hover-ease),
77
+ scale var(--ds-ambient-hover-speed) var(--ds-ambient-hover-ease),
78
+ box-shadow var(--ds-ambient-hover-speed) var(--ds-ambient-hover-ease);
79
+
54
80
  --ds-sidebar-width: 224px;
55
81
  --ds-sidebar-compact-width: 76px;
56
82
  --ds-sidebar-collapsed-width: 56px;
@@ -70,6 +96,9 @@
70
96
  --ds-icon-size-sm: 14px;
71
97
  --ds-icon-size-md: 16px;
72
98
  --ds-gradient: none;
99
+ /* The gradient's two ends as colours (solid accent when the theme has no gradient) — for SVG gradients such as an accent icon stroke. */
100
+ --ds-gradient-start: var(--ds-accent-primary);
101
+ --ds-gradient-end: var(--ds-accent-primary);
73
102
 
74
103
  /* ── L1: Glass Roots (defaults = off for non-glass presets) ──── */
75
104
 
@@ -219,6 +248,15 @@
219
248
  --ds-z-tooltip: 500;
220
249
  --ds-z-toast: 600;
221
250
 
251
+ /* Bottom-corner toast insets. Default one spacing step; a Launcher or
252
+ * CornerPanel occupying a corner raises the matching inset (lib/corner-insets.ts)
253
+ * so the toast stack lands above it instead of over it. */
254
+ --ds-toast-inset-bottom-right: var(--ds-space-4);
255
+ --ds-toast-inset-bottom-left: var(--ds-space-4);
256
+ /* Side insets: a docked AsidePanel raises the one on its side so toasts slide past it. */
257
+ --ds-toast-inset-right: var(--ds-space-4);
258
+ --ds-toast-inset-left: var(--ds-space-4);
259
+
222
260
  /* ── L2: Derived Shadow Scale ───────────────────────────────────── */
223
261
 
224
262
  --ds-shadow-sm:
@@ -272,12 +310,23 @@
272
310
  --ds-text-muted: var(--ds-neutral-400);
273
311
  --ds-text-on-primary: oklch(1 0 0);
274
312
 
313
+ /* Tinted surfaces (subtle colourful header): the surface colour washed with the
314
+ accent — gradient or solid — at one strength, so the tint is a pure shade of
315
+ the accent over the same paper as the cards around it. --ds-text-muted-on-tint
316
+ is the lightest neutral that clears AA over that tint; the platform recomputes
317
+ it per accent against the default surface (token-algorithms mutedOnTint). */
318
+ --ds-tint-base: var(--ds-bg-surface);
319
+ --ds-tint-strength: 0.15;
320
+ --ds-accent-wash: linear-gradient(var(--ds-accent-primary), var(--ds-accent-primary));
321
+ --ds-text-muted-on-tint: var(--ds-neutral-600);
322
+
275
323
  --ds-border-default: var(--ds-neutral-300);
276
324
  --ds-border-subtle: var(--ds-neutral-200);
277
325
  --ds-border-strong: var(--ds-neutral-500);
278
326
  --ds-border-focus: var(--ds-primary-500);
279
327
  /* Soft halo paired with --ds-border-focus on every stroke-based active state */
280
328
  --ds-ring-active: var(--ds-accent-soft);
329
+ --ds-ring-error: color-mix(in srgb, var(--ds-status-error) 30%, transparent);
281
330
 
282
331
  --ds-accent-primary: var(--ds-primary-500);
283
332
  --ds-accent-primary-hover: var(--ds-primary-600);
@@ -319,9 +368,9 @@
319
368
  --ds-status-info: var(--ds-info-500);
320
369
  --ds-status-info-bg: var(--ds-info-100);
321
370
  /* Text on the filled status surfaces — computed per palette by the theme;
322
- defaults for the scale above (the warning fill is too light for white) */
371
+ defaults for the scale above (the warning fill is too light for white; the 950 tone keeps its hue) */
323
372
  --ds-text-on-success: oklch(1 0 0);
324
- --ds-text-on-warning: var(--ds-neutral-950);
373
+ --ds-text-on-warning: var(--ds-warning-950);
325
374
  --ds-text-on-error: oklch(1 0 0);
326
375
 
327
376
  --ds-sidebar-bg: var(--ds-neutral-100);
@@ -333,6 +382,10 @@
333
382
  --ds-sidebar-text-muted: var(--ds-text-muted);
334
383
  --ds-sidebar-accent: var(--ds-accent-primary);
335
384
  --ds-sidebar-accent-subtle: color-mix(in srgb, var(--ds-sidebar-accent) 10%, transparent);
385
+ /* The sidebar pill's gradient fill: the page gradient in match mode; the
386
+ independent-mode writers replace it with the target palette's gradient.
387
+ Declared per mode block so nested wrappers resolve their own gradient. */
388
+ --ds-sidebar-gradient: var(--ds-gradient);
336
389
  /* Text on the sidebar / header accent — computed from the target palette in
337
390
  independent modes; in match mode they follow the page */
338
391
  --ds-sidebar-text-on-accent: var(--ds-text-on-primary);
@@ -382,6 +435,7 @@
382
435
  --ds-nav-v-track-border: var(--ds-border-width);
383
436
  --ds-nav-v-track-padding: var(--ds-space-1);
384
437
  --ds-nav-v-badge-bg: var(--ds-accent-primary);
438
+ --ds-nav-v-active-muted: var(--ds-text-secondary);
385
439
 
386
440
  --ds-tree-active-bg: var(--ds-tab-active-bg);
387
441
  --ds-tree-active-text: var(--ds-accent-primary);
@@ -392,6 +446,7 @@
392
446
  --ds-sidebar-active-text: var(--ds-sidebar-accent);
393
447
  --ds-sidebar-active-accent: var(--ds-sidebar-accent);
394
448
  --ds-sidebar-active-rail: var(--ds-border-width-thick);
449
+ --ds-sidebar-active-image: none;
395
450
  }
396
451
 
397
452
  /* ── Dark Mode Semantic Overrides ─────────────────────────────────── */
@@ -412,6 +467,7 @@
412
467
  --ds-text-primary: var(--ds-neutral-50);
413
468
  --ds-text-secondary: var(--ds-neutral-300);
414
469
  --ds-text-muted: var(--ds-neutral-400);
470
+ --ds-text-muted-on-tint: var(--ds-neutral-400);
415
471
  color: var(--ds-text-primary);
416
472
 
417
473
  /* Borders — bumped one step lighter for visibility against 800/900 surfaces */
@@ -430,10 +486,10 @@
430
486
  --ds-status-error-bg: var(--ds-destructive-950);
431
487
  --ds-status-info: var(--ds-info-400);
432
488
  --ds-status-info-bg: var(--ds-info-950);
433
- /* The 400 fills above are too light for white at every hue */
434
- --ds-text-on-success: var(--ds-neutral-950);
435
- --ds-text-on-warning: var(--ds-neutral-950);
436
- --ds-text-on-error: var(--ds-neutral-950);
489
+ /* The 400 fills above are too light for white at every hue; the 950 tones keep each hue */
490
+ --ds-text-on-success: var(--ds-success-950);
491
+ --ds-text-on-warning: var(--ds-warning-950);
492
+ --ds-text-on-error: var(--ds-destructive-950);
437
493
 
438
494
  /* Sidebar — sits at canvas level, border provides separation */
439
495
  --ds-sidebar-bg: var(--ds-neutral-800);
@@ -444,6 +500,7 @@
444
500
  --ds-sidebar-text-secondary: var(--ds-text-secondary);
445
501
  --ds-sidebar-text-muted: var(--ds-text-muted);
446
502
  --ds-sidebar-accent: var(--ds-accent-primary);
503
+ --ds-sidebar-gradient: var(--ds-gradient);
447
504
 
448
505
  --ds-tab-hover-bg: var(--ds-bg-muted);
449
506
  --ds-tab-active-bg: var(--ds-bg-surface);
@@ -503,9 +560,11 @@ body {
503
560
  }
504
561
 
505
562
  [data-mode="light"] {
563
+ --ds-sidebar-gradient: var(--ds-gradient);
506
564
  --ds-text-primary: var(--ds-neutral-950);
507
565
  --ds-text-secondary: var(--ds-neutral-600);
508
566
  --ds-text-muted: var(--ds-neutral-400);
567
+ --ds-text-muted-on-tint: var(--ds-neutral-600);
509
568
  --ds-bg-canvas: var(--ds-neutral-50);
510
569
  --ds-bg-surface: oklch(1 0 0);
511
570
  --ds-bg-muted: var(--ds-neutral-100);
@@ -580,33 +639,41 @@ body {
580
639
 
581
640
  --ds-shadow-sm:
582
641
  calc(var(--ds-shadow-offset-x) * 0.33) calc(var(--ds-shadow-offset-y) * 0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
583
- calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1));
642
+ calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1)),
643
+ inset calc(var(--ds-shadow-offset-x) * -0.2) calc(var(--ds-shadow-offset-y) * -0.2) calc(var(--ds-shadow-blur) * 0.25) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
584
644
 
585
645
  --ds-shadow-md:
586
646
  var(--ds-shadow-offset-x) var(--ds-shadow-offset-y) var(--ds-shadow-blur) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
587
- calc(var(--ds-shadow-offset-x) * -1) calc(var(--ds-shadow-offset-y) * -1) var(--ds-shadow-blur) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1));
647
+ calc(var(--ds-shadow-offset-x) * -1) calc(var(--ds-shadow-offset-y) * -1) var(--ds-shadow-blur) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1)),
648
+ inset calc(var(--ds-shadow-offset-x) * -0.25) calc(var(--ds-shadow-offset-y) * -0.25) calc(var(--ds-shadow-blur) * 0.25) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
588
649
 
589
650
  --ds-shadow-lg:
590
651
  calc(var(--ds-shadow-offset-x) * 1.5) calc(var(--ds-shadow-offset-y) * 1.5) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
591
- calc(var(--ds-shadow-offset-x) * -1.5) calc(var(--ds-shadow-offset-y) * -1.5) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1));
652
+ calc(var(--ds-shadow-offset-x) * -1.5) calc(var(--ds-shadow-offset-y) * -1.5) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1)),
653
+ inset calc(var(--ds-shadow-offset-x) * -0.4) calc(var(--ds-shadow-offset-y) * -0.4) calc(var(--ds-shadow-blur) * 0.4) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
592
654
 
593
655
  --ds-shadow-xl:
594
656
  calc(var(--ds-shadow-offset-x) * 2) calc(var(--ds-shadow-offset-y) * 2) calc(var(--ds-shadow-blur) * 2) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
595
- calc(var(--ds-shadow-offset-x) * -2) calc(var(--ds-shadow-offset-y) * -2) calc(var(--ds-shadow-blur) * 2) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1));
657
+ calc(var(--ds-shadow-offset-x) * -2) calc(var(--ds-shadow-offset-y) * -2) calc(var(--ds-shadow-blur) * 2) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1)),
658
+ inset calc(var(--ds-shadow-offset-x) * -0.5) calc(var(--ds-shadow-offset-y) * -0.5) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
596
659
 
597
660
  --ds-shadow-card:
598
661
  calc(var(--ds-shadow-offset-x) * 1.2) calc(var(--ds-shadow-offset-y) * 1.2) calc(var(--ds-shadow-blur) * 1.2) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
599
- calc(var(--ds-shadow-offset-x) * -1.2) calc(var(--ds-shadow-offset-y) * -1.2) calc(var(--ds-shadow-blur) * 1.2) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1));
662
+ calc(var(--ds-shadow-offset-x) * -1.2) calc(var(--ds-shadow-offset-y) * -1.2) calc(var(--ds-shadow-blur) * 1.2) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1)),
663
+ inset calc(var(--ds-shadow-offset-x) * -0.375) calc(var(--ds-shadow-offset-y) * -0.375) calc(var(--ds-shadow-blur) * 0.375) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
600
664
 
601
665
  --ds-shadow-button:
602
666
  calc(var(--ds-shadow-offset-x) * 0.33) calc(var(--ds-shadow-offset-y) * 0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
603
- calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1));
667
+ calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / clamp(0, calc(var(--ds-shadow-alpha) * var(--ds-nm-light-mult)), 1)),
668
+ inset calc(var(--ds-shadow-offset-x) * -0.16) calc(var(--ds-shadow-offset-y) * -0.16) calc(var(--ds-shadow-blur) * 0.16) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
604
669
 
605
670
  --ds-shadow-dropdown:
606
- var(--ds-shadow-offset-x) var(--ds-shadow-offset-y) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha));
671
+ var(--ds-shadow-offset-x) var(--ds-shadow-offset-y) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
672
+ inset calc(var(--ds-shadow-offset-x) * -0.25) calc(var(--ds-shadow-offset-y) * -0.25) calc(var(--ds-shadow-blur) * 0.25) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
607
673
 
608
674
  --ds-shadow-modal:
609
- calc(var(--ds-shadow-offset-x) * 2) calc(var(--ds-shadow-offset-y) * 2) calc(var(--ds-shadow-blur) * 2.5) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha));
675
+ calc(var(--ds-shadow-offset-x) * 2) calc(var(--ds-shadow-offset-y) * 2) calc(var(--ds-shadow-blur) * 2.5) 0 oklch(var(--ds-nm-dark-l) var(--ds-nm-dark-c) var(--ds-nm-dark-h) / var(--ds-shadow-alpha)),
676
+ inset calc(var(--ds-shadow-offset-x) * -0.5) calc(var(--ds-shadow-offset-y) * -0.5) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / var(--ds-shadow-inner-highlight));
610
677
  }
611
678
 
612
679
  [data-shadow="neumorphic"][data-mode="dark"] {
@@ -616,33 +683,41 @@ body {
616
683
 
617
684
  --ds-shadow-sm:
618
685
  calc(var(--ds-shadow-offset-x) * 0.33) calc(var(--ds-shadow-offset-y) * 0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
619
- calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12));
686
+ calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12)),
687
+ inset calc(var(--ds-shadow-offset-x) * -0.2) calc(var(--ds-shadow-offset-y) * -0.2) calc(var(--ds-shadow-blur) * 0.25) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
620
688
 
621
689
  --ds-shadow-md:
622
690
  var(--ds-shadow-offset-x) var(--ds-shadow-offset-y) var(--ds-shadow-blur) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
623
- calc(var(--ds-shadow-offset-x) * -1) calc(var(--ds-shadow-offset-y) * -1) var(--ds-shadow-blur) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12));
691
+ calc(var(--ds-shadow-offset-x) * -1) calc(var(--ds-shadow-offset-y) * -1) var(--ds-shadow-blur) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12)),
692
+ inset calc(var(--ds-shadow-offset-x) * -0.25) calc(var(--ds-shadow-offset-y) * -0.25) calc(var(--ds-shadow-blur) * 0.25) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
624
693
 
625
694
  --ds-shadow-lg:
626
695
  calc(var(--ds-shadow-offset-x) * 1.5) calc(var(--ds-shadow-offset-y) * 1.5) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
627
- calc(var(--ds-shadow-offset-x) * -1.5) calc(var(--ds-shadow-offset-y) * -1.5) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12));
696
+ calc(var(--ds-shadow-offset-x) * -1.5) calc(var(--ds-shadow-offset-y) * -1.5) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12)),
697
+ inset calc(var(--ds-shadow-offset-x) * -0.4) calc(var(--ds-shadow-offset-y) * -0.4) calc(var(--ds-shadow-blur) * 0.4) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
628
698
 
629
699
  --ds-shadow-xl:
630
700
  calc(var(--ds-shadow-offset-x) * 2) calc(var(--ds-shadow-offset-y) * 2) calc(var(--ds-shadow-blur) * 2) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
631
- calc(var(--ds-shadow-offset-x) * -2) calc(var(--ds-shadow-offset-y) * -2) calc(var(--ds-shadow-blur) * 2) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12));
701
+ calc(var(--ds-shadow-offset-x) * -2) calc(var(--ds-shadow-offset-y) * -2) calc(var(--ds-shadow-blur) * 2) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12)),
702
+ inset calc(var(--ds-shadow-offset-x) * -0.5) calc(var(--ds-shadow-offset-y) * -0.5) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
632
703
 
633
704
  --ds-shadow-card:
634
705
  calc(var(--ds-shadow-offset-x) * 1.2) calc(var(--ds-shadow-offset-y) * 1.2) calc(var(--ds-shadow-blur) * 1.2) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
635
- calc(var(--ds-shadow-offset-x) * -1.2) calc(var(--ds-shadow-offset-y) * -1.2) calc(var(--ds-shadow-blur) * 1.2) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12));
706
+ calc(var(--ds-shadow-offset-x) * -1.2) calc(var(--ds-shadow-offset-y) * -1.2) calc(var(--ds-shadow-blur) * 1.2) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12)),
707
+ inset calc(var(--ds-shadow-offset-x) * -0.375) calc(var(--ds-shadow-offset-y) * -0.375) calc(var(--ds-shadow-blur) * 0.375) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
636
708
 
637
709
  --ds-shadow-button:
638
710
  calc(var(--ds-shadow-offset-x) * 0.33) calc(var(--ds-shadow-offset-y) * 0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
639
- calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12));
711
+ calc(var(--ds-shadow-offset-x) * -0.33) calc(var(--ds-shadow-offset-y) * -0.33) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-alpha) * 0.12)),
712
+ inset calc(var(--ds-shadow-offset-x) * -0.16) calc(var(--ds-shadow-offset-y) * -0.16) calc(var(--ds-shadow-blur) * 0.16) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
640
713
 
641
714
  --ds-shadow-dropdown:
642
- var(--ds-shadow-offset-x) var(--ds-shadow-offset-y) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2));
715
+ var(--ds-shadow-offset-x) var(--ds-shadow-offset-y) calc(var(--ds-shadow-blur) * 1.5) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
716
+ inset calc(var(--ds-shadow-offset-x) * -0.25) calc(var(--ds-shadow-offset-y) * -0.25) calc(var(--ds-shadow-blur) * 0.25) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
643
717
 
644
718
  --ds-shadow-modal:
645
- calc(var(--ds-shadow-offset-x) * 2) calc(var(--ds-shadow-offset-y) * 2) calc(var(--ds-shadow-blur) * 2.5) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2));
719
+ calc(var(--ds-shadow-offset-x) * 2) calc(var(--ds-shadow-offset-y) * 2) calc(var(--ds-shadow-blur) * 2.5) 0 oklch(0 0 0 / calc(var(--ds-shadow-alpha) * 2)),
720
+ inset calc(var(--ds-shadow-offset-x) * -0.5) calc(var(--ds-shadow-offset-y) * -0.5) calc(var(--ds-shadow-blur) * 0.5) 0 oklch(1 0 0 / calc(var(--ds-shadow-inner-highlight) * 0.18));
646
721
  }
647
722
 
648
723
  /* ── Shadow Mode: Glow ──────────────────────────────────────────
@@ -0,0 +1,76 @@
1
+ import { pickCurated, buildExtendedMap } from './chunk-NRHIYS5W.js';
2
+
3
+ // ../../showcase/src/lib/icon-packs/tabler.ts
4
+ var CURATED = {
5
+ "home": "IconHome",
6
+ "folder": "IconFolder",
7
+ "chart": "IconChartBar",
8
+ "settings": "IconSettings",
9
+ "chevron-right": "IconChevronRight",
10
+ "close": "IconX",
11
+ "plus": "IconPlus",
12
+ "search": "IconSearch",
13
+ "bell": "IconBell",
14
+ "user": "IconUser",
15
+ "check": "IconCheck",
16
+ "warning": "IconAlertTriangle",
17
+ "info": "IconInfoCircle",
18
+ "error": "IconAlertCircle",
19
+ "clock": "IconClock",
20
+ "calendar": "IconCalendar",
21
+ "bold": "IconBold",
22
+ "italic": "IconItalic",
23
+ "underline": "IconUnderline",
24
+ "strikethrough": "IconStrikethrough",
25
+ "align-left": "IconAlignLeft",
26
+ "align-center": "IconAlignCenter",
27
+ "align-right": "IconAlignRight",
28
+ "list": "IconList",
29
+ "list-ordered": "IconListNumbers",
30
+ "list-checks": "IconListCheck",
31
+ "link": "IconLink",
32
+ "image": "IconPhoto",
33
+ "table": "IconTable",
34
+ "code": "IconCode",
35
+ "quote": "IconQuote",
36
+ "minus": "IconMinus",
37
+ "superscript": "IconSuperscript",
38
+ "subscript": "IconSubscript",
39
+ "highlight": "IconHighlight",
40
+ "type": "IconTypography",
41
+ "chevron-up": "IconChevronUp",
42
+ "chevron-down": "IconChevronDown",
43
+ "trash": "IconTrash",
44
+ "undo": "IconArrowBackUp",
45
+ "redo": "IconArrowForwardUp",
46
+ "arrow-left": "IconArrowLeft",
47
+ "grip-vertical": "IconGripVertical",
48
+ "mic": "IconMicrophone",
49
+ "paperclip": "IconPaperclip",
50
+ "send": "IconSend",
51
+ "log-out": "IconLogout",
52
+ "edit": "IconPencil",
53
+ "menu": "IconMenu2",
54
+ "more-horizontal": "IconDots",
55
+ "star": "IconStar",
56
+ "bookmark": "IconBookmark",
57
+ "download": "IconDownload",
58
+ "upload": "IconUpload",
59
+ "sparkles": "IconSparkles"
60
+ };
61
+ async function peer() {
62
+ return await import('@tabler/icons-react');
63
+ }
64
+ async function loadCurated() {
65
+ return pickCurated(await peer(), CURATED);
66
+ }
67
+ async function loadExtended() {
68
+ const mod = await peer();
69
+ const extended = buildExtendedMap(mod, {}, { stripPrefix: "Icon" });
70
+ Object.assign(extended, pickCurated(mod, CURATED));
71
+ return extended;
72
+ }
73
+
74
+ export { loadCurated, loadExtended };
75
+ //# sourceMappingURL=tabler-HHIXSM73.js.map
76
+ //# sourceMappingURL=tabler-HHIXSM73.js.map