gridsmith-ui 0.6.5 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/charts.js +2 -2
- package/dist/chat.d.ts +12 -0
- package/dist/chat.js +94 -0
- package/dist/chat.js.map +1 -0
- package/dist/{chunk-TTZSZNJ6.js → chunk-4KVFH5KC.js} +7 -3
- package/dist/chunk-4KVFH5KC.js.map +1 -0
- package/dist/{chunk-KXNJJKIV.js → chunk-ADTPGMOD.js} +13 -13
- package/dist/chunk-ADTPGMOD.js.map +1 -0
- package/dist/{chunk-DDKCQVKO.js → chunk-LTV5X3S7.js} +48 -20
- package/dist/chunk-LTV5X3S7.js.map +1 -0
- package/dist/{chunk-QGBG72OB.js → chunk-M3AARGLI.js} +3 -3
- package/dist/{chunk-QGBG72OB.js.map → chunk-M3AARGLI.js.map} +1 -1
- package/dist/{chunk-GX6O72IV.js → chunk-NM3BFWHH.js} +19 -26
- package/dist/chunk-NM3BFWHH.js.map +1 -0
- package/dist/{chunk-GYVBRUO2.js → chunk-NRHIYS5W.js} +14 -3
- package/dist/chunk-NRHIYS5W.js.map +1 -0
- package/dist/chunk-R2HNSJJG.js +156 -0
- package/dist/chunk-R2HNSJJG.js.map +1 -0
- package/dist/chunk-RLUK575N.js +136 -0
- package/dist/chunk-RLUK575N.js.map +1 -0
- package/dist/chunk-WH2FUFAC.js +14 -0
- package/dist/chunk-WH2FUFAC.js.map +1 -0
- package/dist/data-grid.js +4 -3
- package/dist/data-grid.js.map +1 -1
- package/dist/editor.js +17 -13
- package/dist/editor.js.map +1 -1
- package/dist/feather-B65FI6CY.js +76 -0
- package/dist/feather-B65FI6CY.js.map +1 -0
- package/dist/heroicons-DIR7PXCR.js +76 -0
- package/dist/heroicons-DIR7PXCR.js.map +1 -0
- package/dist/icons.d.ts +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +352 -17
- package/dist/index.js +4612 -3484
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +5 -4
- package/dist/kanban.js.map +1 -1
- package/dist/lucide-JH2R3TFV.js +76 -0
- package/dist/lucide-JH2R3TFV.js.map +1 -0
- package/dist/phosphor-HCVUMVT5.js +76 -0
- package/dist/phosphor-HCVUMVT5.js.map +1 -0
- package/dist/resizable.js +2 -2
- package/dist/roots.css +104 -17
- package/dist/tabler-HHIXSM73.js +76 -0
- package/dist/tabler-HHIXSM73.js.map +1 -0
- package/dist/tokens.css +15 -7
- package/dist/utils.js +1 -1
- package/dist/virtualized.js +1 -1
- package/dist-static/tokens.css +15 -7
- package/package.json +14 -2
- package/dist/chunk-DDKCQVKO.js.map +0 -1
- package/dist/chunk-GX6O72IV.js.map +0 -1
- package/dist/chunk-GYVBRUO2.js.map +0 -1
- package/dist/chunk-KXNJJKIV.js.map +0 -1
- package/dist/chunk-TTZSZNJ6.js.map +0 -1
- package/dist/feather-U45EQTAU.js +0 -72
- package/dist/feather-U45EQTAU.js.map +0 -1
- package/dist/heroicons-D3G7QU45.js +0 -72
- package/dist/heroicons-D3G7QU45.js.map +0 -1
- package/dist/lucide-OGUV44TQ.js +0 -72
- package/dist/lucide-OGUV44TQ.js.map +0 -1
- package/dist/phosphor-QG2ZMEMZ.js +0 -72
- package/dist/phosphor-QG2ZMEMZ.js.map +0 -1
- package/dist/tabler-MW2HN55L.js +0 -72
- package/dist/tabler-MW2HN55L.js.map +0 -1
package/dist/kanban.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Badge } from './chunk-
|
|
2
|
-
import { useTextOverflow, Tooltip } from './chunk-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
1
|
+
import { Badge } from './chunk-ADTPGMOD.js';
|
|
2
|
+
import { useTextOverflow, Tooltip } from './chunk-LTV5X3S7.js';
|
|
3
|
+
import './chunk-WH2FUFAC.js';
|
|
4
|
+
import { Icon } from './chunk-NM3BFWHH.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';
|
package/dist/kanban.js.map
CHANGED
|
@@ -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":";;;;;;;;;;;AAgDA,SAAS,YAAA,CAAa;AAAA,EACpB,IAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACE,WAAA,CAAY,EAAE,EAAA,EAAI,IAAA,CAAK,IAAI,CAAA;AAE/B,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,SAAA,EAAW,GAAA,CAAI,SAAA,CAAU,QAAA,CAAS,SAAS,CAAA;AAAA,IAC3C;AAAA,GACF;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,KAAA;AAAA,MACC,GAAG,UAAA;AAAA,MACH,GAAG,SAAA;AAAA,MACJ,SAAA,EAAW,EAAA;AAAA,QACT,uGAAA;AAAA,QACA,qEAAA;AAAA,QACA,kCAAA;AAAA,QACA,yDAAA;AAAA,QACA,0EAAA;AAAA,QACA,UAAA,IAAc;AAAA,OAChB;AAAA,MAEC,uBACC,UAAA,CAAW,IAAI,CAAA,mBAEf,GAAA,CAAC,eAAY,IAAA,EAAY;AAAA;AAAA,GAE7B;AAEJ;AAEA,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAS,EAAyB;AAC9D,EAAA,MAAM,EAAE,KAAK,WAAA,EAAY,GAAI,gBAAgB,EAAE,KAAA,EAAO,GAAG,CAAA;AACzD,EAAA,MAAM,qBAAK,GAAA,CAAC,GAAA,EAAA,EAAE,GAAA,EAAU,SAAA,EAAU,wDAAwD,QAAA,EAAS,CAAA;AACnG,EAAA,IAAI,CAAC,aAAa,OAAO,EAAA;AACzB,EAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,QAAA,EAAW,QAAA,EAAA,EAAA,EAAG,CAAA;AACzC;AAEA,SAAS,UAAA,CAAW,EAAE,QAAA,EAAS,EAAyB;AACtD,EAAA,MAAM,EAAE,KAAK,WAAA,EAAY,GAAI,gBAAgB,EAAE,KAAA,EAAO,GAAG,CAAA;AACzD,EAAA,MAAM,qBAAK,GAAA,CAAC,GAAA,EAAA,EAAE,GAAA,EAAU,SAAA,EAAU,8DAA8D,QAAA,EAAS,CAAA;AACzG,EAAA,IAAI,CAAC,aAAa,OAAO,EAAA;AACzB,EAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,QAAA,EAAW,QAAA,EAAA,EAAA,EAAG,CAAA;AACzC;AAEA,SAAS,WAAA,CAAY,EAAE,IAAA,EAAK,EAAyB;AACnD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAY,eAAK,KAAA,EAAM,CAAA;AAAA,IACvB,IAAA,CAAK,WAAA,oBACJ,GAAA,CAAC,kBAAA,EAAA,EAAoB,eAAK,WAAA,EAAY,CAAA;AAAA,IAEvC,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,qBAC/B,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA,IAAA,CAAK,IAAA,CAAK,IAAI,CAAC,GAAA,qBACd,GAAA,CAAC,KAAA,EAAA,EAAgB,OAAA,EAAQ,QAAA,EAAS,MAAK,IAAA,EAAM,QAAA,EAAA,GAAA,EAAA,EAAjC,GAAqC,CAClD,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uGAAA;AAAA,QACA,iEAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,uBAAa,UAAA,CAAW,IAAI,CAAA,mBAAI,GAAA,CAAC,eAAY,IAAA,EAAY;AAAA;AAAA,GAC5D;AAEJ;AAEO,SAAS,WAAA,CAAY;AAAA,EAC1B,OAAA,EAAS,cAAA;AAAA,EACT,eAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAyB,cAAc,CAAA;AAC/E,EAAA,MAAM,OAAA,GAAU,kBAAkB,cAAA,GAAiB,YAAA;AACnD,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAsE;AACrF,IAAA,IAAI,OAAO,SAAS,UAAA,EAAY;AAC9B,MAAA,MAAM,OAAA,GAAU,KAAK,OAAO,CAAA;AAC5B,MAAA,IAAI,eAAA,kBAAiC,OAAO,CAAA;AAAA,2BACvB,OAAO,CAAA;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,IAAI,eAAA,kBAAiC,IAAI,CAAA;AAAA,2BACpB,IAAI,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAA4B,IAAI,CAAA;AAEpE,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,SAAA,CAAU,eAAe,EAAE,oBAAA,EAAsB,EAAE,QAAA,EAAU,CAAA,IAAK,CAAA;AAAA,IAClE,UAAU,cAAA,EAAgB;AAAA,MACxB,gBAAA,EAAkB;AAAA,KACnB;AAAA,GACH;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,MAAA,KAC1B,OAAA,CAAQ,KAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,KAAA,CAAM,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAC,CAAA;AAE9D,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAA0B;AACjD,IAAA,MAAM,MAAM,kBAAA,CAAmB,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,EAAE,CAAC,CAAA;AACtD,IAAA,MAAM,IAAA,GAAO,GAAA,EAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,EAAE,CAAC,CAAA;AACpE,IAAA,IAAI,IAAA,gBAAoB,IAAI,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAyB;AAC/C,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,KAAA;AACzB,IAAA,IAAI,CAAC,IAAA,EAAM;AAEX,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AACjC,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AAC7B,IAAA,IAAI,aAAa,MAAA,EAAQ;AAEzB,IAAA,MAAM,SAAA,GAAY,mBAAmB,QAAQ,CAAA;AAC7C,IAAA,MAAM,OAAA,GACJ,kBAAA,CAAmB,MAAM,CAAA,IAAK,OAAA,CAAQ,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,MAAM,CAAA;AAEnE,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,WAAW,SAAA,CAAU,EAAA,KAAO,QAAQ,EAAA,EAAI;AAE3D,IAAA,OAAA;AAAA,MAAQ,CAAC,IAAA,KACP,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AAChB,QAAA,IAAI,GAAA,CAAI,EAAA,KAAO,SAAA,CAAU,EAAA,EAAI;AAC3B,UAAA,OAAO,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,QAAQ,CAAA,EAAE;AAAA,QACrE;AACA,QAAA,IAAI,GAAA,CAAI,EAAA,KAAO,OAAA,CAAQ,EAAA,EAAI;AACzB,UAAA,MAAM,IAAA,GAAO,UAAU,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,QAAQ,CAAA;AAC1D,UAAA,IAAI,CAAC,MAAM,OAAO,GAAA;AAClB,UAAA,MAAM,OAAA,GAAU,IAAI,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,MAAM,CAAA;AAC1D,UAAA,MAAM,QAAA,GAAW,CAAC,GAAG,GAAA,CAAI,KAAK,CAAA;AAC9B,UAAA,IAAI,WAAW,CAAA,EAAG;AAChB,YAAA,QAAA,CAAS,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG,IAAI,CAAA;AAAA,UAClC,CAAA,MAAO;AACL,YAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,UACpB;AACA,UAAA,OAAO,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,QAAA,EAAS;AAAA,QACnC;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAC;AAAA,KACH;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAwB;AAC7C,IAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAI,KAAA;AACzB,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,IAAI,CAAC,IAAA,IAAQ,MAAA,CAAO,EAAA,KAAO,KAAK,EAAA,EAAI;AAEpC,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AACjC,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AAE7B,IAAA,MAAM,GAAA,GAAM,mBAAmB,QAAQ,CAAA;AACvC,IAAA,IAAI,CAAC,GAAA,EAAK;AAEV,IAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,QAAQ,CAAA;AAC3D,IAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,MAAM,CAAA;AAEzD,IAAA,IAAI,MAAA,IAAU,CAAA,IAAK,MAAA,IAAU,CAAA,IAAK,WAAW,MAAA,EAAQ;AACnD,MAAA,OAAA;AAAA,QAAQ,CAAC,IAAA,KACP,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACd,UAAA,IAAI,CAAA,CAAE,EAAA,KAAO,GAAA,CAAI,EAAA,EAAI,OAAO,CAAA;AAC5B,UAAA,MAAM,QAAA,GAAW,CAAC,GAAG,CAAA,CAAE,KAAK,CAAA;AAC5B,UAAA,MAAM,CAAC,KAAK,CAAA,GAAI,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAC,CAAA;AACzC,UAAA,QAAA,CAAS,MAAA,CAAO,MAAA,EAAQ,CAAA,EAAG,KAAK,CAAA;AAChC,UAAA,OAAO,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,QAAA,EAAS;AAAA,QACjC,CAAC;AAAA,OACH;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,kBAAA,EAAoB,cAAA;AAAA,MACpB,WAAA,EAAa,eAAA;AAAA,MACb,UAAA,EAAY,cAAA;AAAA,MACZ,SAAA,EAAW,aAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,0EAAA,EAA4E,SAAS,CAAA,EACrG,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBACZ,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,sEAAA;AAAA,cACA,uDAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qDAAA,EACb,QAAA,EAAA;AAAA,gCAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAI,KAAA,oBACH,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,sDAAA;AAAA,sBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,GAAA,CAAI,KAAA;AAAM;AAAA,mBACtC;AAAA,kCAEF,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uEAAA,EACb,cAAI,KAAA,EACP,CAAA;AAAA,sCACC,MAAA,EAAA,EAAK,SAAA,EAAU,kDAAA,EACb,QAAA,EAAA,GAAA,CAAI,MAAM,MAAA,EACb;AAAA,iBAAA,EACF,CAAA;AAAA,oCACC,IAAA,EAAA,EAAK,IAAA,EAAK,QAAO,IAAA,EAAM,EAAA,EAAI,WAAU,6BAAA,EAA8B;AAAA,eAAA,EACtE,CAAA;AAAA,8BAEA,GAAA;AAAA,gBAAC,eAAA;AAAA,gBAAA;AAAA,kBACC,OAAO,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AAAA,kBAChC,QAAA,EAAU,2BAAA;AAAA,kBACV,IAAI,GAAA,CAAI,EAAA;AAAA,kBAER,QAAA,kBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,uDAAA,EACZ,cAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACd,GAAA;AAAA,oBAAC,YAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA;AAAA,sBACA;AAAA,qBAAA;AAAA,oBAFK,IAAA,CAAK;AAAA,mBAIb,CAAA,EACH;AAAA;AAAA;AACF;AAAA,WAAA;AAAA,UAvCK,GAAA,CAAI;AAAA,SAyCZ,CAAA,EACH,CAAA;AAAA,wBAEA,GAAA,CAAC,eACE,QAAA,EAAA,UAAA,oBAAc,GAAA,CAAC,eAAY,IAAA,EAAM,UAAA,EAAY,YAAwB,CAAA,EACxE;AAAA;AAAA;AAAA,GACF;AAEJ","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-
|
|
3
|
-
import { cn } from './chunk-
|
|
2
|
+
import { Icon } from './chunk-NM3BFWHH.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);
|
|
@@ -318,6 +367,11 @@
|
|
|
318
367
|
--ds-status-error-bg: var(--ds-destructive-100);
|
|
319
368
|
--ds-status-info: var(--ds-info-500);
|
|
320
369
|
--ds-status-info-bg: var(--ds-info-100);
|
|
370
|
+
/* Text on the filled status surfaces — computed per palette by the theme;
|
|
371
|
+
defaults for the scale above (the warning fill is too light for white; the 950 tone keeps its hue) */
|
|
372
|
+
--ds-text-on-success: oklch(1 0 0);
|
|
373
|
+
--ds-text-on-warning: var(--ds-warning-950);
|
|
374
|
+
--ds-text-on-error: oklch(1 0 0);
|
|
321
375
|
|
|
322
376
|
--ds-sidebar-bg: var(--ds-neutral-100);
|
|
323
377
|
--ds-sidebar-border: var(--ds-neutral-200);
|
|
@@ -328,6 +382,14 @@
|
|
|
328
382
|
--ds-sidebar-text-muted: var(--ds-text-muted);
|
|
329
383
|
--ds-sidebar-accent: var(--ds-accent-primary);
|
|
330
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);
|
|
389
|
+
/* Text on the sidebar / header accent — computed from the target palette in
|
|
390
|
+
independent modes; in match mode they follow the page */
|
|
391
|
+
--ds-sidebar-text-on-accent: var(--ds-text-on-primary);
|
|
392
|
+
--ds-header-text-on-accent: var(--ds-text-on-primary);
|
|
331
393
|
|
|
332
394
|
/* Tab strip — presets can override for stronger contrast (e.g. Modern Dark) */
|
|
333
395
|
--ds-tab-hover-bg: var(--ds-bg-muted);
|
|
@@ -373,6 +435,7 @@
|
|
|
373
435
|
--ds-nav-v-track-border: var(--ds-border-width);
|
|
374
436
|
--ds-nav-v-track-padding: var(--ds-space-1);
|
|
375
437
|
--ds-nav-v-badge-bg: var(--ds-accent-primary);
|
|
438
|
+
--ds-nav-v-active-muted: var(--ds-text-secondary);
|
|
376
439
|
|
|
377
440
|
--ds-tree-active-bg: var(--ds-tab-active-bg);
|
|
378
441
|
--ds-tree-active-text: var(--ds-accent-primary);
|
|
@@ -383,6 +446,7 @@
|
|
|
383
446
|
--ds-sidebar-active-text: var(--ds-sidebar-accent);
|
|
384
447
|
--ds-sidebar-active-accent: var(--ds-sidebar-accent);
|
|
385
448
|
--ds-sidebar-active-rail: var(--ds-border-width-thick);
|
|
449
|
+
--ds-sidebar-active-image: none;
|
|
386
450
|
}
|
|
387
451
|
|
|
388
452
|
/* ── Dark Mode Semantic Overrides ─────────────────────────────────── */
|
|
@@ -403,7 +467,7 @@
|
|
|
403
467
|
--ds-text-primary: var(--ds-neutral-50);
|
|
404
468
|
--ds-text-secondary: var(--ds-neutral-300);
|
|
405
469
|
--ds-text-muted: var(--ds-neutral-400);
|
|
406
|
-
--ds-text-on-
|
|
470
|
+
--ds-text-muted-on-tint: var(--ds-neutral-400);
|
|
407
471
|
color: var(--ds-text-primary);
|
|
408
472
|
|
|
409
473
|
/* Borders — bumped one step lighter for visibility against 800/900 surfaces */
|
|
@@ -422,6 +486,10 @@
|
|
|
422
486
|
--ds-status-error-bg: var(--ds-destructive-950);
|
|
423
487
|
--ds-status-info: var(--ds-info-400);
|
|
424
488
|
--ds-status-info-bg: var(--ds-info-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);
|
|
425
493
|
|
|
426
494
|
/* Sidebar — sits at canvas level, border provides separation */
|
|
427
495
|
--ds-sidebar-bg: var(--ds-neutral-800);
|
|
@@ -432,6 +500,7 @@
|
|
|
432
500
|
--ds-sidebar-text-secondary: var(--ds-text-secondary);
|
|
433
501
|
--ds-sidebar-text-muted: var(--ds-text-muted);
|
|
434
502
|
--ds-sidebar-accent: var(--ds-accent-primary);
|
|
503
|
+
--ds-sidebar-gradient: var(--ds-gradient);
|
|
435
504
|
|
|
436
505
|
--ds-tab-hover-bg: var(--ds-bg-muted);
|
|
437
506
|
--ds-tab-active-bg: var(--ds-bg-surface);
|
|
@@ -491,9 +560,11 @@ body {
|
|
|
491
560
|
}
|
|
492
561
|
|
|
493
562
|
[data-mode="light"] {
|
|
563
|
+
--ds-sidebar-gradient: var(--ds-gradient);
|
|
494
564
|
--ds-text-primary: var(--ds-neutral-950);
|
|
495
565
|
--ds-text-secondary: var(--ds-neutral-600);
|
|
496
566
|
--ds-text-muted: var(--ds-neutral-400);
|
|
567
|
+
--ds-text-muted-on-tint: var(--ds-neutral-600);
|
|
497
568
|
--ds-bg-canvas: var(--ds-neutral-50);
|
|
498
569
|
--ds-bg-surface: oklch(1 0 0);
|
|
499
570
|
--ds-bg-muted: var(--ds-neutral-100);
|
|
@@ -568,33 +639,41 @@ body {
|
|
|
568
639
|
|
|
569
640
|
--ds-shadow-sm:
|
|
570
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)),
|
|
571
|
-
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));
|
|
572
644
|
|
|
573
645
|
--ds-shadow-md:
|
|
574
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)),
|
|
575
|
-
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));
|
|
576
649
|
|
|
577
650
|
--ds-shadow-lg:
|
|
578
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)),
|
|
579
|
-
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));
|
|
580
654
|
|
|
581
655
|
--ds-shadow-xl:
|
|
582
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)),
|
|
583
|
-
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));
|
|
584
659
|
|
|
585
660
|
--ds-shadow-card:
|
|
586
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)),
|
|
587
|
-
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));
|
|
588
664
|
|
|
589
665
|
--ds-shadow-button:
|
|
590
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)),
|
|
591
|
-
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));
|
|
592
669
|
|
|
593
670
|
--ds-shadow-dropdown:
|
|
594
|
-
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));
|
|
595
673
|
|
|
596
674
|
--ds-shadow-modal:
|
|
597
|
-
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));
|
|
598
677
|
}
|
|
599
678
|
|
|
600
679
|
[data-shadow="neumorphic"][data-mode="dark"] {
|
|
@@ -604,33 +683,41 @@ body {
|
|
|
604
683
|
|
|
605
684
|
--ds-shadow-sm:
|
|
606
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)),
|
|
607
|
-
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));
|
|
608
688
|
|
|
609
689
|
--ds-shadow-md:
|
|
610
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)),
|
|
611
|
-
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));
|
|
612
693
|
|
|
613
694
|
--ds-shadow-lg:
|
|
614
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)),
|
|
615
|
-
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));
|
|
616
698
|
|
|
617
699
|
--ds-shadow-xl:
|
|
618
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)),
|
|
619
|
-
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));
|
|
620
703
|
|
|
621
704
|
--ds-shadow-card:
|
|
622
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)),
|
|
623
|
-
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));
|
|
624
708
|
|
|
625
709
|
--ds-shadow-button:
|
|
626
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)),
|
|
627
|
-
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));
|
|
628
713
|
|
|
629
714
|
--ds-shadow-dropdown:
|
|
630
|
-
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));
|
|
631
717
|
|
|
632
718
|
--ds-shadow-modal:
|
|
633
|
-
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));
|
|
634
721
|
}
|
|
635
722
|
|
|
636
723
|
/* ── Shadow Mode: Glow ──────────────────────────────────────────
|