@reifydb/ui 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/badge/badge.tsx","../src/components/button/button.tsx","../src/components/card/card.tsx","../src/components/chip/chip.tsx","../src/components/chip-group/chip-group.tsx","../src/components/code-block/code-block.tsx","../src/components/copy-button/copy-button.tsx","../src/components/dialog/dialog.tsx","../src/components/empty-state/empty-state.tsx","../src/components/input/input.tsx","../src/components/kbd/kbd.tsx","../src/components/loading/loading.tsx","../src/components/modal/modal.tsx","../src/components/nav-tabs/nav-tabs.tsx","../src/components/section-header/section-header.tsx","../src/components/select/select.tsx","../src/components/separator/separator.tsx","../src/components/skeleton/skeleton.tsx","../src/components/sparkline/sparkline.tsx","../src/components/spinner/spinner.tsx","../src/components/status-bar/status-bar.tsx","../src/components/table/table.tsx","../src/components/tabs/tabs.tsx","../src/components/toggle/toggle.tsx"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\ntype BadgeVariant = \"active\" | \"inactive\" | \"coming-soon\" | \"default\" | \"signal\" | \"success\" | \"danger\" | \"warning\" | \"error\" | \"outline\";\n\nconst variantStyles: Record<BadgeVariant, string> = {\n active: \"font-bold text-primary\",\n inactive: \"text-text-secondary\",\n \"coming-soon\": \"text-text-secondary\",\n default: \"text-text-primary\",\n signal: \"font-bold text-primary\",\n success: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-success/15 text-status-success border-status-success/30\",\n danger: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-error/15 text-status-error border-status-error/30\",\n warning: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-warning/15 text-status-warning border-status-warning/30\",\n error: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-error/15 text-status-error border-status-error/30\",\n outline: \"text-text-muted\",\n};\n\nexport interface BadgeProps {\n variant?: BadgeVariant;\n children: ReactNode;\n className?: string;\n onClick?: () => void;\n}\n\nexport function Badge({ variant = \"default\", children, className = \"\", onClick }: BadgeProps) {\n return (\n <span\n className={`inline-flex items-center ${variantStyles[variant]} ${className}`}\n onClick={onClick}\n >\n {children}\n </span>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { type ButtonHTMLAttributes, forwardRef } from \"react\";\n\ntype ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"forest\" | \"danger\" | \"destructive\" | \"link\";\ntype ButtonSize = \"sm\" | \"md\" | \"lg\" | \"icon\";\n\nconst variantStyles: Record<ButtonVariant, string> = {\n primary:\n \"bg-primary text-[#141414] font-semibold border-primary hover:brightness-110\",\n secondary:\n \"bg-[#141414] text-white border-[#141414] font-medium hover:bg-bg-elevated hover:text-primary\",\n ghost:\n \"text-white border-border-ghost hover:text-primary\",\n forest:\n \"bg-forest text-white font-semibold border-forest-border hover:brightness-110\",\n danger:\n \"bg-status-error/10 text-status-error border-status-error/30 hover:bg-status-error/20\",\n destructive:\n \"bg-status-error text-white font-semibold border-status-error hover:bg-status-error/90\",\n link:\n \"text-primary border-transparent underline-offset-4 hover:underline active:text-primary-light\",\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n sm: \"h-8 px-3 text-xs gap-1.5\",\n md: \"h-9 px-4 text-sm gap-2\",\n lg: \"h-11 px-6 text-sm gap-2\",\n icon: \"h-9 w-9 p-0\",\n};\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = \"primary\", size = \"md\", className = \"\", children, disabled, ...props }, ref) => {\n return (\n <button\n ref={ref}\n className={`inline-flex items-center justify-center font-medium transition-all duration-200\n rounded-[4px] border\n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\n disabled:pointer-events-none disabled:opacity-50\n ${variantStyles[variant]} ${sizeStyles[size]} ${className}`}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nButton.displayName = \"Button\";\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface CardProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Card({ children, className = \"\" }: CardProps) {\n return (\n <div className={`glass-card p-6 ${className}`}>\n {children}\n </div>\n );\n}\n\nexport function CardHeader({ children, className = \"\" }: CardProps) {\n return <div className={`mb-4 ${className}`}>{children}</div>;\n}\n\nexport function CardTitle({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <h3 className={`text-sm font-medium text-text-primary ${className}`}>{children}</h3>;\n}\n\nexport function CardDescription({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <p className={`mt-1 text-xs text-text-muted ${className}`}>{children}</p>;\n}\n\nexport function CardContent({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <div className={className}>{children}</div>;\n}\n\nexport function CardFooter({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <div className={`pt-4 mt-4 border-t border-border-light ${className}`}>{children}</div>;\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface ChipProps {\n active: boolean;\n onClick: () => void;\n children: ReactNode;\n className?: string;\n}\n\nexport function Chip({ active, onClick, children, className = \"\" }: ChipProps) {\n return (\n <button\n onClick={onClick}\n className={`text-xs font-medium px-3 py-1 rounded-[var(--radius-sm)] border cursor-pointer whitespace-nowrap transition-all ${\n active\n ? \"text-primary border-primary/30 bg-primary/10\"\n : \"text-text-secondary bg-bg-secondary border-border-default hover:text-text-primary hover:border-border-light\"\n } ${className}`}\n >\n {children}\n </button>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { Chip } from \"../chip/chip.js\";\n\nexport interface ChipGroupOption {\n value: string;\n label: string;\n}\n\ninterface ChipGroupBaseProps {\n options: ChipGroupOption[];\n className?: string;\n}\n\ninterface ChipGroupSingleProps extends ChipGroupBaseProps {\n multiple?: false;\n value: string;\n onChange: (value: string) => void;\n}\n\ninterface ChipGroupMultipleProps extends ChipGroupBaseProps {\n multiple: true;\n value: string[];\n onChange: (value: string[]) => void;\n}\n\nexport type ChipGroupProps = ChipGroupSingleProps | ChipGroupMultipleProps;\n\nexport function ChipGroup(props: ChipGroupProps) {\n const { options, className = \"\" } = props;\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n {options.map((option) => {\n const isActive = props.multiple\n ? props.value.includes(option.value)\n : props.value === option.value;\n\n const handleClick = () => {\n if (props.multiple) {\n const next = props.value.includes(option.value)\n ? props.value.filter((v) => v !== option.value)\n : [...props.value, option.value];\n props.onChange(next);\n } else {\n props.onChange(option.value);\n }\n };\n\n return (\n <Chip key={option.value} active={isActive} onClick={handleClick}>\n {option.label}\n </Chip>\n );\n })}\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { useMemo } from \"react\";\nimport Prism from \"prismjs\";\nimport \"prismjs/components/prism-json\";\nimport \"prismjs/components/prism-bash\";\nimport \"prismjs/components/prism-python\";\nimport \"prismjs/components/prism-javascript\";\nimport \"prismjs/components/prism-typescript\";\nimport \"prismjs/components/prism-rust\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\n\nexport interface CodeBlockProps {\n code: string;\n language?: string;\n showCopy?: boolean;\n className?: string;\n}\n\nexport function CodeBlock({ code, language = \"bash\", showCopy = true, className = \"\" }: CodeBlockProps) {\n const highlightedHtml = useMemo(() => {\n if (code.length >= 50_000 || !Prism.languages[language]) return null;\n return Prism.highlight(code, Prism.languages[language], language);\n }, [code, language]);\n\n return (\n <div className={`group relative bg-code-bg ${className}`}>\n {showCopy && (\n <div className=\"absolute right-2 top-2 opacity-0 transition-opacity group-hover:opacity-100\">\n <CopyButton text={code} />\n </div>\n )}\n <pre className={`language-${language} !bg-code-bg !m-0`}>\n {highlightedHtml != null ? (\n <code className={`language-${language}`} dangerouslySetInnerHTML={{ __html: highlightedHtml }} />\n ) : (\n <code className={`language-${language}`}>{code}</code>\n )}\n </pre>\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { useState, useCallback } from \"react\";\n\nexport interface CopyButtonProps {\n text: string;\n className?: string;\n label?: string;\n onCopy?: () => void;\n}\n\nexport function CopyButton({ text, className = \"\", label, onCopy }: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n onCopy?.();\n }, [text, onCopy]);\n\n return (\n <button\n onClick={handleCopy}\n className={`inline-flex items-center gap-1.5 px-2 py-1 text-xs text-text-muted\n rounded-sm border border-border-default transition-colors duration-75 hover:bg-bg-tertiary hover:text-text-primary ${className}`}\n >\n {copied ? (\n <>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M3 8.5l3 3 7-7\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n {label ? \"Copied!\" : null}\n </>\n ) : (\n <>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"5\" y=\"5\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M3 11V3.5A.5.5 0 013.5 3H11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n {label ?? null}\n </>\n )}\n </button>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { useEffect, forwardRef, type ReactNode, type ButtonHTMLAttributes } from \"react\";\n\nexport interface DialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n children: ReactNode;\n}\n\nexport function Dialog({ open, onOpenChange, children }: DialogProps) {\n useEffect(() => {\n if (open) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"unset\";\n }\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [open]);\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onOpenChange(false);\n };\n if (open) {\n document.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, onOpenChange]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <div className=\"fixed inset-0 bg-black/60\" onClick={() => onOpenChange(false)} />\n <div className=\"relative z-50\">{children}</div>\n </div>\n );\n}\n\nexport interface DialogContentProps {\n className?: string;\n children: ReactNode;\n}\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className = \"\", children }, ref) => (\n <div\n ref={ref}\n className={`relative w-full max-w-lg mx-4 bg-bg-secondary border border-border-default rounded-[var(--radius-md)] shadow-xl ${className}`}\n onClick={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n ),\n);\nDialogContent.displayName = \"DialogContent\";\n\nexport function DialogHeader({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return (\n <div className={`flex flex-col gap-1.5 p-6 border-b border-border-light ${className}`}>\n {children}\n </div>\n );\n}\n\nexport const DialogTitle = forwardRef<HTMLHeadingElement, { children: ReactNode; className?: string }>(\n ({ children, className = \"\" }, ref) => (\n <h2 ref={ref} className={`text-base font-semibold text-text-primary ${className}`}>\n {children}\n </h2>\n ),\n);\nDialogTitle.displayName = \"DialogTitle\";\n\nexport const DialogDescription = forwardRef<HTMLParagraphElement, { children: ReactNode; className?: string }>(\n ({ children, className = \"\" }, ref) => (\n <p ref={ref} className={`text-sm text-text-muted ${className}`}>\n {children}\n </p>\n ),\n);\nDialogDescription.displayName = \"DialogDescription\";\n\nexport const DialogClose = forwardRef<HTMLButtonElement, ButtonHTMLAttributes<HTMLButtonElement>>(\n ({ className = \"\", ...props }, ref) => (\n <button\n ref={ref}\n className={`absolute right-4 top-4 h-6 w-6 flex items-center justify-center text-text-muted hover:text-text-primary transition-colors ${className}`}\n aria-label=\"Close\"\n {...props}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ),\n);\nDialogClose.displayName = \"DialogClose\";\n\nexport function DialogFooter({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return (\n <div className={`flex justify-end gap-3 p-6 border-t border-border-light ${className}`}>\n {children}\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface EmptyStateProps {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({ icon, title, description, action }: EmptyStateProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n {icon && <div className=\"mb-4 text-text-muted\">{icon}</div>}\n <h3 className=\"text-sm font-medium text-text-primary\">{title}</h3>\n {description && <p className=\"mt-1 text-sm text-text-muted\">{description}</p>}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { type InputHTMLAttributes, forwardRef } from \"react\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: string;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ label, error, className = \"\", id, ...props }, ref) => {\n const inputId = id || label?.toLowerCase().replace(/\\s+/g, \"-\");\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <label htmlFor={inputId} className=\"text-sm font-medium text-text-secondary\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={`h-9 rounded-[4px] border border-border-default bg-bg-secondary px-3 text-sm text-text-primary\n placeholder:text-text-muted\n focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary\n disabled:cursor-not-allowed disabled:opacity-50\n ${error ? \"border-status-error\" : \"\"} ${className}`}\n {...props}\n />\n {error && <p className=\"text-xs text-status-error\">{error}</p>}\n </div>\n );\n },\n);\n\nInput.displayName = \"Input\";\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface KbdProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Kbd({ children, className = \"\" }: KbdProps) {\n return (\n <kbd\n className={`inline-flex h-5 min-w-5 items-center justify-center rounded border border-border-default\n bg-bg-tertiary px-1.5 font-mono text-[10px] font-medium text-text-muted ${className}`}\n >\n {children}\n </kbd>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nexport interface LoadingProps {\n text?: string;\n className?: string;\n}\n\nexport function Loading({ text = \"Loading\", className = \"\" }: LoadingProps) {\n return (\n <div className={`flex items-center gap-1 text-text-muted text-sm font-mono ${className}`}>\n <span>{text}</span>\n <span className=\"flex gap-0.5\">\n <span className=\"animate-pulse\" style={{ animationDelay: \"0ms\" }}>.</span>\n <span className=\"animate-pulse\" style={{ animationDelay: \"200ms\" }}>.</span>\n <span className=\"animate-pulse\" style={{ animationDelay: \"400ms\" }}>.</span>\n </span>\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { useEffect, useCallback, type ReactNode } from \"react\";\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n className?: string;\n}\n\nexport function Modal({ open, onClose, title, children, className = \"\" }: ModalProps) {\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n },\n [onClose],\n );\n\n useEffect(() => {\n if (open) {\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n }\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [open, handleKeyDown]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <div className=\"absolute inset-0 bg-black/60\" onClick={onClose} />\n <div\n className={`relative w-full max-w-md rounded-[var(--radius-md)] border border-border-default bg-bg-secondary p-6 shadow-xl ${className}`}\n >\n <div className=\"mb-4 flex items-center justify-between\">\n <h2 className=\"text-base font-semibold text-text-primary\">{title}</h2>\n <button\n onClick={onClose}\n className=\"p-1 text-text-muted transition-colors rounded-sm hover:bg-bg-tertiary\"\n aria-label=\"Close\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n {children}\n </div>\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface NavTabItem {\n label: string;\n href: string;\n isActive?: boolean;\n}\n\nexport interface NavTabsProps {\n items: NavTabItem[];\n variant?: \"underline\" | \"pill\";\n className?: string;\n renderLink?: (props: { href: string; className: string; children: ReactNode }) => ReactNode;\n}\n\nconst variantStyles = {\n underline: {\n container: \"flex border-b border-border-light bg-transparent\",\n item: \"px-5 py-2.5 font-mono text-xs uppercase tracking-[1.4px] transition-colors border-b-2\",\n active: \"border-primary font-bold text-text-primary\",\n inactive: \"border-transparent text-text-muted hover:text-text-primary\",\n },\n pill: {\n container: \"flex items-center gap-1\",\n item: \"px-3 py-2 text-sm font-medium transition-colors rounded-[var(--radius-sm)]\",\n active: \"bg-bg-tertiary text-text-primary\",\n inactive: \"text-text-muted hover:bg-bg-secondary hover:text-text-primary\",\n },\n};\n\nexport function NavTabs({ items, variant = \"underline\", className = \"\", renderLink }: NavTabsProps) {\n const styles = variantStyles[variant];\n\n return (\n <nav className={`${styles.container} ${className}`}>\n {items.map((item) => {\n const itemClassName = `${styles.item} ${item.isActive ? styles.active : styles.inactive}`;\n\n if (renderLink) {\n return (\n <span key={item.href}>\n {renderLink({ href: item.href, className: itemClassName, children: item.label })}\n </span>\n );\n }\n\n return (\n <a key={item.href} href={item.href} className={itemClassName}>\n {item.label}\n </a>\n );\n })}\n </nav>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface SectionHeaderProps {\n title: string;\n badge?: ReactNode;\n className?: string;\n}\n\nexport function SectionHeader({ title, badge, className = \"\" }: SectionHeaderProps) {\n return (\n <div className={`flex items-center justify-between bg-bg-tertiary px-3 py-2.5 rounded-t-[var(--radius-md)] ${className}`}>\n <span className=\"text-xs font-semibold text-text-secondary uppercase tracking-[1.4px]\">{title}</span>\n {badge}\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport { type SelectHTMLAttributes, forwardRef } from \"react\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n label?: string;\n options: SelectOption[];\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n ({ label, options, className = \"\", id, ...props }, ref) => {\n const selectId = id || label?.toLowerCase().replace(/\\s+/g, \"-\");\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <label htmlFor={selectId} className=\"text-sm font-medium text-text-secondary\">\n {label}\n </label>\n )}\n <select\n ref={ref}\n id={selectId}\n className={`h-9 rounded-[4px] border border-border-default bg-bg-secondary px-3 text-sm text-text-primary\n focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary\n disabled:cursor-not-allowed disabled:opacity-50\n ${className}`}\n {...props}\n >\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nexport interface SeparatorProps {\n className?: string;\n}\n\nexport function Separator({ className = \"\" }: SeparatorProps) {\n return <div className={`mx-1 h-5 w-px shrink-0 bg-border-default ${className}`} />;\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nexport interface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className = \"\" }: SkeletonProps) {\n return (\n <div\n className={`rounded-[var(--radius-sm)] bg-bg-tertiary animate-pulse ${className}`}\n />\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nexport interface SparklineProps {\n trend: number[];\n className?: string;\n}\n\nexport function Sparkline({ trend, className = \"\" }: SparklineProps) {\n const max = Math.max(...trend);\n return (\n <div className={`flex items-end gap-px h-4 ${className}`}>\n {trend.map((v, i) => {\n const h = Math.max(2, Math.round((v / max) * 14));\n const col = v >= 10 ? \"bg-status-error\" : v >= 7 ? \"bg-status-warning\" : \"bg-text-muted\";\n return <div key={i} className={`w-[3px] rounded-full ${col}`} style={{ height: `${h}px` }} />;\n })}\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nexport interface SpinnerProps {\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst sizeMap = { sm: \"h-4 w-4\", md: \"h-5 w-5\", lg: \"h-6 w-6\" };\n\nexport function Spinner({ size = \"md\", className = \"\" }: SpinnerProps) {\n return (\n <svg\n className={`animate-spin text-text-muted ${sizeMap[size]} ${className}`}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n role=\"status\"\n aria-label=\"Loading\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2.5\" opacity=\"0.2\" />\n <path\n d=\"M12 2a10 10 0 019.95 9\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\ntype StatusDot = \"success\" | \"warning\" | \"danger\" | \"idle\";\n\nexport interface StatusBarItem {\n dot?: StatusDot;\n label: string;\n}\n\nexport interface StatusBarProps {\n items: StatusBarItem[];\n trailing?: ReactNode;\n className?: string;\n}\n\nconst dotColors: Record<StatusDot, string> = {\n success: \"bg-status-success\",\n warning: \"bg-status-warning\",\n danger: \"bg-status-error\",\n idle: \"bg-text-muted\",\n};\n\nexport function StatusBar({ items, trailing, className = \"\" }: StatusBarProps) {\n return (\n <div className={`flex h-7 shrink-0 items-center gap-4 border-t border-border-light bg-bg-secondary px-4 ${className}`}>\n {items.map((item, i) => (\n <div key={i} className=\"flex items-center gap-1.5 text-xs text-text-muted\">\n {item.dot && (\n <span className={`inline-block h-1.5 w-1.5 rounded-full ${dotColors[item.dot]}`} />\n )}\n {item.label}\n </div>\n ))}\n {trailing && <div className=\"ml-auto text-xs text-text-muted\">{trailing}</div>}\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface TableProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Table({ children, className = \"\" }: TableProps) {\n return (\n <div className=\"w-full overflow-x-auto rounded-[var(--radius-md)]\">\n <table className={`w-full text-sm ${className}`}>{children}</table>\n </div>\n );\n}\n\nexport function TableHead({ children }: { children: ReactNode }) {\n return (\n <thead className=\"border-b border-border-light\">\n <tr>{children}</tr>\n </thead>\n );\n}\n\nexport interface TableHeaderProps {\n children?: ReactNode;\n className?: string;\n onClick?: () => void;\n}\n\nexport function TableHeader({ children, className = \"\", onClick }: TableHeaderProps) {\n return (\n <th\n className={`px-4 py-3 text-left text-xs font-medium text-text-muted ${onClick ? \"cursor-pointer select-none hover:text-text-primary\" : \"\"} ${className}`}\n onClick={onClick}\n >\n {children}\n </th>\n );\n}\n\nexport function TableBody({ children }: { children: ReactNode }) {\n return <tbody className=\"divide-y divide-border-light\">{children}</tbody>;\n}\n\nexport interface TableRowProps {\n children: ReactNode;\n className?: string;\n onClick?: () => void;\n}\n\nexport function TableRow({ children, className = \"\", onClick }: TableRowProps) {\n return (\n <tr className={`hover:bg-bg-secondary transition-colors ${onClick ? \"cursor-pointer\" : \"\"} ${className}`} onClick={onClick}>\n {children}\n </tr>\n );\n}\n\nexport function TableCell({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <td className={`px-4 py-3.5 text-text-secondary ${className}`}>{children}</td>;\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nexport interface Tab {\n value: string;\n label: string;\n}\n\nexport interface TabsProps {\n tabs: Tab[];\n value: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport function Tabs({ tabs, value, onChange, className = \"\" }: TabsProps) {\n return (\n <div className={`flex gap-1 rounded-[var(--radius-md)] border border-border-default bg-bg-secondary p-1 ${className}`}>\n {tabs.map((tab) => (\n <button\n key={tab.value}\n onClick={() => onChange(tab.value)}\n className={`px-3 py-1.5 text-sm font-medium transition-all rounded-md\n ${\n value === tab.value\n ? \"bg-bg-tertiary text-text-primary\"\n : \"text-text-muted hover:bg-bg-secondary hover:text-text-primary\"\n }`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n );\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n// Copyright (c) 2026 ReifyDB\n\nexport interface ToggleProps {\n options: [string, string];\n value: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport function Toggle({ options, value, onChange, className = \"\" }: ToggleProps) {\n const [left, right] = options;\n\n return (\n <div className={`inline-flex items-center gap-2 text-sm ${className}`}>\n <span\n className={`cursor-pointer transition-colors ${value === left ? \"text-text-primary\" : \"text-text-muted\"}`}\n onClick={() => onChange(left)}\n >\n {left}\n </span>\n <button\n onClick={() => onChange(value === left ? right : left)}\n className={`relative w-10 h-5 rounded-none transition-colors border-2 border-border-default ${\n value === right ? \"bg-primary\" : \"bg-bg-secondary\"\n }`}\n >\n <span\n className={`absolute top-0.5 w-4 h-4 rounded-none transition-transform bg-text-primary ${\n value === right ? \"translate-x-5\" : \"translate-x-0.5\"\n }`}\n />\n </button>\n <span\n className={`cursor-pointer transition-colors ${value === right ? \"text-text-primary\" : \"text-text-muted\"}`}\n onClick={() => onChange(right)}\n >\n {right}\n </span>\n </div>\n );\n}\n"],"mappings":"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","names":["jsx","variantStyles","jsx","jsx","jsx","jsx","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsx","jsxs","useEffect","useCallback","jsx","jsxs","jsx","variantStyles","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs"]}
1
+ {"version":3,"sources":["../src/components/badge/badge.tsx","../src/components/button/button.tsx","../src/components/card/card.tsx","../src/components/chip/chip.tsx","../src/components/chip-group/chip-group.tsx","../src/components/code-block/code-block.tsx","../src/components/copy-button/copy-button.tsx","../src/components/dialog/dialog.tsx","../src/components/empty-state/empty-state.tsx","../src/components/input/input.tsx","../src/components/kbd/kbd.tsx","../src/components/loading/loading.tsx","../src/components/modal/modal.tsx","../src/components/nav-tabs/nav-tabs.tsx","../src/components/section-header/section-header.tsx","../src/components/select/select.tsx","../src/components/separator/separator.tsx","../src/components/skeleton/skeleton.tsx","../src/components/sparkline/sparkline.tsx","../src/components/spinner/spinner.tsx","../src/components/status-bar/status-bar.tsx","../src/components/table/table.tsx","../src/components/tabs/tabs.tsx","../src/components/toggle/toggle.tsx"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\ntype BadgeVariant = \"active\" | \"inactive\" | \"coming-soon\" | \"default\" | \"signal\" | \"success\" | \"danger\" | \"warning\" | \"error\" | \"outline\";\n\nconst variantStyles: Record<BadgeVariant, string> = {\n active: \"font-bold text-primary\",\n inactive: \"text-text-secondary\",\n \"coming-soon\": \"text-text-secondary\",\n default: \"text-text-primary\",\n signal: \"font-bold text-primary\",\n success: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-success/15 text-status-success border-status-success/30\",\n danger: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-error/15 text-status-error border-status-error/30\",\n warning: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-warning/15 text-status-warning border-status-warning/30\",\n error: \"text-[11px] font-medium rounded-full border px-2.5 py-0.5 bg-status-error/15 text-status-error border-status-error/30\",\n outline: \"text-text-muted\",\n};\n\nexport interface BadgeProps {\n variant?: BadgeVariant;\n children: ReactNode;\n className?: string;\n onClick?: () => void;\n}\n\nexport function Badge({ variant = \"default\", children, className = \"\", onClick }: BadgeProps) {\n return (\n <span\n className={`inline-flex items-center ${variantStyles[variant]} ${className}`}\n onClick={onClick}\n >\n {children}\n </span>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { type ButtonHTMLAttributes, forwardRef } from \"react\";\n\ntype ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"forest\" | \"danger\" | \"destructive\" | \"link\";\ntype ButtonSize = \"sm\" | \"md\" | \"lg\" | \"icon\";\n\nconst brutalPress =\n \"shadow-[var(--shadow-hard-sm)] active:translate-x-[2px] active:translate-y-[2px] active:shadow-none\";\n\nconst variantStyles: Record<ButtonVariant, string> = {\n primary:\n `bg-primary text-white font-bold border-border-default hover:brightness-90 ${brutalPress}`,\n secondary:\n `bg-bg-tertiary text-text-primary border-border-default font-semibold hover:bg-bg-elevated ${brutalPress}`,\n ghost:\n \"text-text-secondary border-transparent hover:bg-bg-tertiary hover:text-text-primary\",\n forest:\n `bg-forest text-white font-semibold border-forest-border hover:brightness-90 ${brutalPress}`,\n danger:\n `bg-status-error/10 text-status-error border-status-error/30 hover:bg-status-error/20 ${brutalPress}`,\n destructive:\n `bg-status-error text-white font-bold border-border-default hover:brightness-90 ${brutalPress}`,\n link:\n \"text-primary border-transparent underline-offset-4 hover:underline active:text-primary-dark\",\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n sm: \"h-8 px-3 text-xs gap-1.5\",\n md: \"h-9 px-4 text-sm gap-2\",\n lg: \"h-11 px-6 text-sm gap-2\",\n icon: \"h-9 w-9 p-0\",\n};\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = \"primary\", size = \"md\", className = \"\", children, disabled, ...props }, ref) => {\n return (\n <button\n ref={ref}\n className={`inline-flex items-center justify-center font-mono font-semibold transition-none\n rounded-none border-2\n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary\n disabled:pointer-events-none disabled:opacity-50\n ${variantStyles[variant]} ${sizeStyles[size]} ${className}`}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nButton.displayName = \"Button\";\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface CardProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Card({ children, className = \"\" }: CardProps) {\n return (\n <div className={`glass-card p-6 ${className}`}>\n {children}\n </div>\n );\n}\n\nexport function CardHeader({ children, className = \"\" }: CardProps) {\n return <div className={`mb-4 ${className}`}>{children}</div>;\n}\n\nexport function CardTitle({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <h3 className={`text-sm font-medium text-text-primary ${className}`}>{children}</h3>;\n}\n\nexport function CardDescription({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <p className={`mt-1 text-xs text-text-muted ${className}`}>{children}</p>;\n}\n\nexport function CardContent({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <div className={className}>{children}</div>;\n}\n\nexport function CardFooter({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <div className={`pt-4 mt-4 border-t border-border-light ${className}`}>{children}</div>;\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface ChipProps {\n active: boolean;\n onClick: () => void;\n children: ReactNode;\n className?: string;\n}\n\nexport function Chip({ active, onClick, children, className = \"\" }: ChipProps) {\n return (\n <button\n onClick={onClick}\n className={`text-xs font-semibold px-3 py-1 rounded-full border cursor-pointer whitespace-nowrap transition-none ${\n active\n ? \"text-primary border-primary/30 bg-primary/10\"\n : \"text-text-secondary bg-bg-tertiary border-border-light hover:text-text-primary hover:border-border-subtle\"\n } ${className}`}\n >\n {children}\n </button>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { Chip } from \"../chip/chip.js\";\n\nexport interface ChipGroupOption {\n value: string;\n label: string;\n}\n\ninterface ChipGroupBaseProps {\n options: ChipGroupOption[];\n className?: string;\n}\n\ninterface ChipGroupSingleProps extends ChipGroupBaseProps {\n multiple?: false;\n value: string;\n onChange: (value: string) => void;\n}\n\ninterface ChipGroupMultipleProps extends ChipGroupBaseProps {\n multiple: true;\n value: string[];\n onChange: (value: string[]) => void;\n}\n\nexport type ChipGroupProps = ChipGroupSingleProps | ChipGroupMultipleProps;\n\nexport function ChipGroup(props: ChipGroupProps) {\n const { options, className = \"\" } = props;\n\n return (\n <div className={`flex items-center gap-2 ${className}`}>\n {options.map((option) => {\n const isActive = props.multiple\n ? props.value.includes(option.value)\n : props.value === option.value;\n\n const handleClick = () => {\n if (props.multiple) {\n const next = props.value.includes(option.value)\n ? props.value.filter((v) => v !== option.value)\n : [...props.value, option.value];\n props.onChange(next);\n } else {\n props.onChange(option.value);\n }\n };\n\n return (\n <Chip key={option.value} active={isActive} onClick={handleClick}>\n {option.label}\n </Chip>\n );\n })}\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { useMemo } from \"react\";\nimport Prism from \"prismjs\";\nimport \"prismjs/components/prism-json\";\nimport \"prismjs/components/prism-bash\";\nimport \"prismjs/components/prism-python\";\nimport \"prismjs/components/prism-javascript\";\nimport \"prismjs/components/prism-typescript\";\nimport \"prismjs/components/prism-rust\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\n\nexport interface CodeBlockProps {\n code: string;\n language?: string;\n showCopy?: boolean;\n className?: string;\n}\n\nexport function CodeBlock({ code, language = \"bash\", showCopy = true, className = \"\" }: CodeBlockProps) {\n const highlightedHtml = useMemo(() => {\n if (code.length >= 50_000 || !Prism.languages[language]) return null;\n return Prism.highlight(code, Prism.languages[language], language);\n }, [code, language]);\n\n return (\n <div className={`group relative bg-code-bg ${className}`}>\n {showCopy && (\n <div className=\"absolute right-2 top-2 opacity-0 transition-opacity group-hover:opacity-100\">\n <CopyButton text={code} />\n </div>\n )}\n <pre className={`language-${language} !bg-code-bg !m-0`}>\n {highlightedHtml != null ? (\n <code className={`language-${language}`} dangerouslySetInnerHTML={{ __html: highlightedHtml }} />\n ) : (\n <code className={`language-${language}`}>{code}</code>\n )}\n </pre>\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { useState, useCallback } from \"react\";\n\nexport interface CopyButtonProps {\n text: string;\n className?: string;\n label?: string;\n onCopy?: () => void;\n}\n\nexport function CopyButton({ text, className = \"\", label, onCopy }: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n onCopy?.();\n }, [text, onCopy]);\n\n return (\n <button\n onClick={handleCopy}\n className={`inline-flex items-center gap-1.5 px-2 py-1 text-xs text-text-muted\n rounded-none border border-border-default transition-colors duration-75 hover:bg-bg-tertiary hover:text-text-primary ${className}`}\n >\n {copied ? (\n <>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M3 8.5l3 3 7-7\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n {label ? \"Copied!\" : null}\n </>\n ) : (\n <>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <rect x=\"5\" y=\"5\" width=\"8\" height=\"8\" rx=\"1.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M3 11V3.5A.5.5 0 013.5 3H11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n {label ?? null}\n </>\n )}\n </button>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { useEffect, forwardRef, type ReactNode, type ButtonHTMLAttributes } from \"react\";\n\nexport interface DialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n children: ReactNode;\n}\n\nexport function Dialog({ open, onOpenChange, children }: DialogProps) {\n useEffect(() => {\n if (open) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"unset\";\n }\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [open]);\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onOpenChange(false);\n };\n if (open) {\n document.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, onOpenChange]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <div className=\"fixed inset-0 bg-black/60\" onClick={() => onOpenChange(false)} />\n <div className=\"relative z-50\">{children}</div>\n </div>\n );\n}\n\nexport interface DialogContentProps {\n className?: string;\n children: ReactNode;\n}\n\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className = \"\", children }, ref) => (\n <div\n ref={ref}\n className={`relative w-full max-w-lg mx-4 bg-bg-secondary border-2 border-border-default rounded-none shadow-[var(--shadow-hard)] ${className}`}\n onClick={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n ),\n);\nDialogContent.displayName = \"DialogContent\";\n\nexport function DialogHeader({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return (\n <div className={`flex flex-col gap-1.5 p-6 border-b border-border-light ${className}`}>\n {children}\n </div>\n );\n}\n\nexport const DialogTitle = forwardRef<HTMLHeadingElement, { children: ReactNode; className?: string }>(\n ({ children, className = \"\" }, ref) => (\n <h2 ref={ref} className={`text-base font-semibold text-text-primary ${className}`}>\n {children}\n </h2>\n ),\n);\nDialogTitle.displayName = \"DialogTitle\";\n\nexport const DialogDescription = forwardRef<HTMLParagraphElement, { children: ReactNode; className?: string }>(\n ({ children, className = \"\" }, ref) => (\n <p ref={ref} className={`text-sm text-text-muted ${className}`}>\n {children}\n </p>\n ),\n);\nDialogDescription.displayName = \"DialogDescription\";\n\nexport const DialogClose = forwardRef<HTMLButtonElement, ButtonHTMLAttributes<HTMLButtonElement>>(\n ({ className = \"\", ...props }, ref) => (\n <button\n ref={ref}\n className={`absolute right-4 top-4 h-6 w-6 flex items-center justify-center text-text-muted hover:text-text-primary transition-colors ${className}`}\n aria-label=\"Close\"\n {...props}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ),\n);\nDialogClose.displayName = \"DialogClose\";\n\nexport function DialogFooter({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return (\n <div className={`flex justify-end gap-3 p-6 border-t border-border-light ${className}`}>\n {children}\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface EmptyStateProps {\n icon?: ReactNode;\n title: string;\n description?: string;\n action?: ReactNode;\n}\n\nexport function EmptyState({ icon, title, description, action }: EmptyStateProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 text-center\">\n {icon && <div className=\"mb-4 text-text-muted\">{icon}</div>}\n <h3 className=\"text-sm font-medium text-text-primary\">{title}</h3>\n {description && <p className=\"mt-1 text-sm text-text-muted\">{description}</p>}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { type InputHTMLAttributes, forwardRef } from \"react\";\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: string;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ label, error, className = \"\", id, ...props }, ref) => {\n const inputId = id || label?.toLowerCase().replace(/\\s+/g, \"-\");\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <label htmlFor={inputId} className=\"text-sm font-medium text-text-secondary\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n id={inputId}\n className={`h-9 rounded-none border-2 border-border-default bg-bg-primary px-3 text-sm text-text-primary\n placeholder:text-text-muted\n focus:bg-bg-tertiary focus:outline-none focus:ring-2 focus:ring-primary\n disabled:cursor-not-allowed disabled:opacity-50\n ${error ? \"border-status-error\" : \"\"} ${className}`}\n {...props}\n />\n {error && <p className=\"text-xs text-status-error\">{error}</p>}\n </div>\n );\n },\n);\n\nInput.displayName = \"Input\";\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface KbdProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Kbd({ children, className = \"\" }: KbdProps) {\n return (\n <kbd\n className={`inline-flex h-5 min-w-5 items-center justify-center rounded-none border-2 border-border-default\n bg-bg-tertiary px-1.5 font-mono text-[10px] font-medium text-text-muted ${className}`}\n >\n {children}\n </kbd>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nexport interface LoadingProps {\n text?: string;\n className?: string;\n}\n\nexport function Loading({ text = \"Loading\", className = \"\" }: LoadingProps) {\n return (\n <div className={`flex items-center gap-1 text-text-muted text-sm font-mono ${className}`}>\n <span>{text}</span>\n <span className=\"flex gap-0.5\">\n <span className=\"animate-pulse\" style={{ animationDelay: \"0ms\" }}>.</span>\n <span className=\"animate-pulse\" style={{ animationDelay: \"200ms\" }}>.</span>\n <span className=\"animate-pulse\" style={{ animationDelay: \"400ms\" }}>.</span>\n </span>\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { useEffect, useCallback, type ReactNode } from \"react\";\n\nexport interface ModalProps {\n open: boolean;\n onClose: () => void;\n title: string;\n children: ReactNode;\n className?: string;\n}\n\nexport function Modal({ open, onClose, title, children, className = \"\" }: ModalProps) {\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n },\n [onClose],\n );\n\n useEffect(() => {\n if (open) {\n document.addEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"hidden\";\n }\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.body.style.overflow = \"\";\n };\n }, [open, handleKeyDown]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\n <div className=\"absolute inset-0 bg-black/60\" onClick={onClose} />\n <div\n className={`relative w-full max-w-md rounded-none border-2 border-border-default bg-bg-secondary p-6 shadow-[var(--shadow-hard)] ${className}`}\n >\n <div className=\"mb-4 flex items-center justify-between\">\n <h2 className=\"text-base font-semibold text-text-primary\">{title}</h2>\n <button\n onClick={onClose}\n className=\"p-1 text-text-muted transition-colors rounded-none hover:bg-bg-tertiary\"\n aria-label=\"Close\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n {children}\n </div>\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface NavTabItem {\n label: string;\n href: string;\n isActive?: boolean;\n}\n\nexport interface NavTabsProps {\n items: NavTabItem[];\n variant?: \"underline\" | \"pill\";\n className?: string;\n renderLink?: (props: { href: string; className: string; children: ReactNode }) => ReactNode;\n}\n\nconst variantStyles = {\n underline: {\n container: \"flex border-b border-border-light bg-transparent\",\n item: \"px-5 py-2.5 font-mono text-xs uppercase tracking-[1.4px] transition-colors border-b-2\",\n active: \"border-primary font-bold text-text-primary\",\n inactive: \"border-transparent text-text-muted hover:text-text-primary\",\n },\n pill: {\n container: \"flex items-center gap-1\",\n item: \"px-3 py-2 text-sm font-medium transition-colors rounded-[var(--radius-sm)]\",\n active: \"bg-bg-tertiary text-text-primary\",\n inactive: \"text-text-muted hover:bg-bg-secondary hover:text-text-primary\",\n },\n};\n\nexport function NavTabs({ items, variant = \"underline\", className = \"\", renderLink }: NavTabsProps) {\n const styles = variantStyles[variant];\n\n return (\n <nav className={`${styles.container} ${className}`}>\n {items.map((item) => {\n const itemClassName = `${styles.item} ${item.isActive ? styles.active : styles.inactive}`;\n\n if (renderLink) {\n return (\n <span key={item.href}>\n {renderLink({ href: item.href, className: itemClassName, children: item.label })}\n </span>\n );\n }\n\n return (\n <a key={item.href} href={item.href} className={itemClassName}>\n {item.label}\n </a>\n );\n })}\n </nav>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface SectionHeaderProps {\n title: string;\n badge?: ReactNode;\n className?: string;\n}\n\nexport function SectionHeader({ title, badge, className = \"\" }: SectionHeaderProps) {\n return (\n <div className={`flex items-center justify-between bg-bg-tertiary px-3 py-2.5 rounded-none ${className}`}>\n <span className=\"text-xs font-semibold text-text-secondary uppercase tracking-[1.4px]\">{title}</span>\n {badge}\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport { type SelectHTMLAttributes, forwardRef } from \"react\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n label?: string;\n options: SelectOption[];\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n ({ label, options, className = \"\", id, ...props }, ref) => {\n const selectId = id || label?.toLowerCase().replace(/\\s+/g, \"-\");\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <label htmlFor={selectId} className=\"text-sm font-medium text-text-secondary\">\n {label}\n </label>\n )}\n <select\n ref={ref}\n id={selectId}\n className={`h-9 rounded-none border-2 border-border-default bg-bg-secondary px-3 text-sm text-text-primary\n focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary\n disabled:cursor-not-allowed disabled:opacity-50\n ${className}`}\n {...props}\n >\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nexport interface SeparatorProps {\n className?: string;\n}\n\nexport function Separator({ className = \"\" }: SeparatorProps) {\n return <div className={`mx-1 h-5 w-px shrink-0 bg-border-default ${className}`} />;\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nexport interface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className = \"\" }: SkeletonProps) {\n return (\n <div\n className={`rounded-[var(--radius-sm)] bg-bg-tertiary animate-pulse ${className}`}\n />\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nexport interface SparklineProps {\n trend: number[];\n className?: string;\n}\n\nexport function Sparkline({ trend, className = \"\" }: SparklineProps) {\n const max = Math.max(...trend);\n return (\n <div className={`flex items-end gap-px h-4 ${className}`}>\n {trend.map((v, i) => {\n const h = Math.max(2, Math.round((v / max) * 14));\n const col = v >= 10 ? \"bg-status-error\" : v >= 7 ? \"bg-status-warning\" : \"bg-text-muted\";\n return <div key={i} className={`w-[3px] rounded-full ${col}`} style={{ height: `${h}px` }} />;\n })}\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nexport interface SpinnerProps {\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst sizeMap = { sm: \"h-4 w-4\", md: \"h-5 w-5\", lg: \"h-6 w-6\" };\n\nexport function Spinner({ size = \"md\", className = \"\" }: SpinnerProps) {\n return (\n <svg\n className={`animate-spin text-text-muted ${sizeMap[size]} ${className}`}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n role=\"status\"\n aria-label=\"Loading\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"2.5\" opacity=\"0.2\" />\n <path\n d=\"M12 2a10 10 0 019.95 9\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\ntype StatusDot = \"success\" | \"warning\" | \"danger\" | \"idle\";\n\nexport interface StatusBarItem {\n dot?: StatusDot;\n label: string;\n}\n\nexport interface StatusBarProps {\n items: StatusBarItem[];\n trailing?: ReactNode;\n className?: string;\n}\n\nconst dotColors: Record<StatusDot, string> = {\n success: \"bg-status-success\",\n warning: \"bg-status-warning\",\n danger: \"bg-status-error\",\n idle: \"bg-text-muted\",\n};\n\nexport function StatusBar({ items, trailing, className = \"\" }: StatusBarProps) {\n return (\n <div className={`flex h-7 shrink-0 items-center gap-4 border-t border-border-light bg-bg-secondary px-4 ${className}`}>\n {items.map((item, i) => (\n <div key={i} className=\"flex items-center gap-1.5 text-xs text-text-muted\">\n {item.dot && (\n <span className={`inline-block h-1.5 w-1.5 rounded-full ${dotColors[item.dot]}`} />\n )}\n {item.label}\n </div>\n ))}\n {trailing && <div className=\"ml-auto text-xs text-text-muted\">{trailing}</div>}\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nimport type { ReactNode } from \"react\";\n\nexport interface TableProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function Table({ children, className = \"\" }: TableProps) {\n return (\n <div className=\"w-full overflow-x-auto rounded-none\">\n <table className={`w-full text-sm ${className}`}>{children}</table>\n </div>\n );\n}\n\nexport function TableHead({ children }: { children: ReactNode }) {\n return (\n <thead className=\"border-b-2 border-border-light\">\n <tr>{children}</tr>\n </thead>\n );\n}\n\nexport interface TableHeaderProps {\n children?: ReactNode;\n className?: string;\n onClick?: () => void;\n}\n\nexport function TableHeader({ children, className = \"\", onClick }: TableHeaderProps) {\n return (\n <th\n className={`px-4 py-3 text-left text-xs font-medium text-text-muted ${onClick ? \"cursor-pointer select-none hover:text-text-primary\" : \"\"} ${className}`}\n onClick={onClick}\n >\n {children}\n </th>\n );\n}\n\nexport function TableBody({ children }: { children: ReactNode }) {\n return <tbody className=\"divide-y divide-border-light\">{children}</tbody>;\n}\n\nexport interface TableRowProps {\n children: ReactNode;\n className?: string;\n onClick?: () => void;\n}\n\nexport function TableRow({ children, className = \"\", onClick }: TableRowProps) {\n return (\n <tr className={`border-l-2 border-l-transparent even:bg-bg-tertiary/40 hover:border-l-primary hover:bg-bg-tertiary transition-colors ${onClick ? \"cursor-pointer\" : \"\"} ${className}`} onClick={onClick}>\n {children}\n </tr>\n );\n}\n\nexport function TableCell({ children, className = \"\" }: { children: ReactNode; className?: string }) {\n return <td className={`px-4 py-3.5 text-text-secondary ${className}`}>{children}</td>;\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nexport interface Tab {\n value: string;\n label: string;\n}\n\nexport interface TabsProps {\n tabs: Tab[];\n value: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport function Tabs({ tabs, value, onChange, className = \"\" }: TabsProps) {\n return (\n <div className={`flex gap-1 rounded-none border-2 border-border-default bg-bg-secondary p-1 ${className}`}>\n {tabs.map((tab) => (\n <button\n key={tab.value}\n onClick={() => onChange(tab.value)}\n className={`px-3 py-1.5 text-sm font-medium transition-all rounded-none\n ${\n value === tab.value\n ? \"bg-bg-tertiary text-text-primary\"\n : \"text-text-muted hover:bg-bg-secondary hover:text-text-primary\"\n }`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n );\n}\n","// SPDX-License-Identifier: Apache-2.0\n// Copyright (c) 2026 ReifyDB\n\nexport interface ToggleProps {\n options: [string, string];\n value: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport function Toggle({ options, value, onChange, className = \"\" }: ToggleProps) {\n const [left, right] = options;\n\n return (\n <div className={`inline-flex items-center gap-2 text-sm ${className}`}>\n <span\n className={`cursor-pointer transition-colors ${value === left ? \"text-text-primary\" : \"text-text-muted\"}`}\n onClick={() => onChange(left)}\n >\n {left}\n </span>\n <button\n onClick={() => onChange(value === left ? right : left)}\n className={`relative w-10 h-5 rounded-full transition-colors border border-border-light ${\n value === right ? \"bg-primary\" : \"bg-bg-tertiary\"\n }`}\n >\n <span\n className={`absolute top-0.5 w-4 h-4 rounded-full transition-transform bg-text-primary ${\n value === right ? \"translate-x-5\" : \"translate-x-0.5\"\n }`}\n />\n </button>\n <span\n className={`cursor-pointer transition-colors ${value === right ? \"text-text-primary\" : \"text-text-muted\"}`}\n onClick={() => onChange(right)}\n >\n {right}\n </span>\n </div>\n );\n}\n"],"mappings":"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","names":["jsx","variantStyles","jsx","jsx","jsx","jsx","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsx","jsxs","useEffect","useCallback","jsx","jsxs","jsx","variantStyles","jsx","jsxs","forwardRef","jsx","jsxs","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reifydb/ui",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Shared UI component library for ReifyDB",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -62,7 +62,7 @@
62
62
  "publishConfig": {
63
63
  "access": "public"
64
64
  },
65
- "license": "AGPL-3.0-or-later",
65
+ "license": "Apache-2.0",
66
66
  "repository": {
67
67
  "type": "git",
68
68
  "url": "https://github.com/reifydb/reifydb.git",
@@ -1,22 +1,26 @@
1
- /* SPDX-License-Identifier: AGPL-3.0-or-later */
1
+ /* SPDX-License-Identifier: Apache-2.0 */
2
2
  /* Copyright (c) 2026 ReifyDB */
3
3
 
4
4
  @layer base {
5
5
  html {
6
6
  background: var(--color-bg-primary);
7
7
  color: var(--color-text-primary);
8
- color-scheme: dark;
9
- font-family: var(--font-body);
8
+ color-scheme: light;
9
+ font-family: var(--font-mono);
10
+ font-size: 16px;
10
11
  -webkit-font-smoothing: antialiased;
11
12
  -moz-osx-font-smoothing: grayscale;
12
13
  }
14
+ @media (min-width: 1440px) { html { font-size: 17px; } }
15
+ @media (min-width: 1728px) { html { font-size: 18px; } }
16
+ @media (min-width: 2048px) { html { font-size: 19px; } }
13
17
  *:focus-visible {
14
18
  outline: 2px solid var(--color-primary);
15
19
  outline-offset: 2px;
16
20
  }
17
21
  ::selection {
18
22
  background: var(--color-primary);
19
- color: var(--color-bg-primary);
23
+ color: #ffffff;
20
24
  }
21
25
  input::placeholder,
22
26
  textarea::placeholder {
@@ -25,6 +29,9 @@
25
29
  h1, h2, h3, h4, h5, h6 {
26
30
  font-family: var(--font-display);
27
31
  }
32
+ table, [data-numeric] {
33
+ font-variant-numeric: tabular-nums;
34
+ }
28
35
  }
29
36
 
30
37
  /* ── Section divider ─────────────────────────────────────── */
@@ -36,57 +43,61 @@
36
43
  /* ── Card ─────────────────────────────────────────────────── */
37
44
  .card-modern {
38
45
  background: var(--color-bg-secondary);
39
- border: 1px solid var(--color-border-default);
46
+ border: 2px solid var(--color-border-default);
40
47
  border-radius: var(--radius-md);
41
- transition: border-color 0.2s ease;
42
- }
43
- .card-modern:hover {
44
- border-color: color-mix(in srgb, var(--color-primary) 40%, transparent);
48
+ box-shadow: var(--shadow-hard);
45
49
  }
46
50
 
47
51
  /* ── Section alternation ────────────────────────────────── */
48
52
  .section-elevated {
49
- background: var(--color-bg-secondary);
53
+ background: var(--color-bg-tertiary);
50
54
  }
51
55
  .section-elevated .glass-card {
52
- background: var(--color-bg-primary);
56
+ background: var(--color-bg-secondary);
53
57
  }
54
58
  .section-elevated .card-modern {
55
- background: var(--color-bg-primary);
59
+ background: var(--color-bg-secondary);
56
60
  }
57
61
 
58
62
  /* ── Card utilities ─────────────────────────────────────── */
59
63
  .glass-card {
60
64
  background: var(--color-bg-secondary);
61
- border: 1px solid var(--color-border-default);
65
+ border: 2px solid var(--color-border-default);
62
66
  border-radius: var(--radius-md);
63
- transition: border-color 0.2s ease;
64
- }
65
- .glass-card:hover {
66
- border-color: color-mix(in srgb, var(--color-primary) 40%, transparent);
67
+ box-shadow: var(--shadow-hard);
67
68
  }
68
69
 
69
70
  .glass-card-strong {
70
71
  background: var(--color-bg-secondary);
71
- border: 1px solid var(--color-primary);
72
+ border: 2px solid var(--color-primary);
72
73
  border-radius: var(--radius-md);
73
- transition: border-color 0.2s ease;
74
- }
75
- .glass-card-strong:hover {
76
- border-color: var(--color-primary-light);
74
+ box-shadow: var(--shadow-hard-primary);
77
75
  }
78
76
 
79
77
  .glass {
80
- background: rgba(0, 0, 0, 0.80);
78
+ background: rgba(255, 255, 255, 0.80);
81
79
  }
82
80
 
83
81
  /* ── Card nested inner ───────────────────────────────────── */
84
82
  .card-nested-inner {
85
- background: var(--color-bg-tertiary);
86
- border: 1px solid var(--color-border-light);
83
+ background: var(--color-input-bg);
84
+ border: 2px solid var(--color-border-default);
87
85
  border-radius: var(--radius-sm);
88
86
  }
89
87
 
88
+ /* ── Brutalist featured card ─────────────────────────────── */
89
+ .card-brutal {
90
+ background: var(--color-bg-secondary);
91
+ border: 2px solid var(--color-border-default);
92
+ border-radius: var(--radius-md);
93
+ box-shadow: var(--shadow-hard);
94
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
95
+ }
96
+ .card-brutal:hover {
97
+ transform: translate(-2px, -2px);
98
+ box-shadow: 6px 6px 0 var(--color-border-default);
99
+ }
100
+
90
101
  /* ── Brutalist tab underline ─────────────────────────────── */
91
102
  .tab-brutalist {
92
103
  position: relative;
@@ -99,7 +110,7 @@
99
110
  bottom: 0;
100
111
  left: 0;
101
112
  width: 0;
102
- height: 2px;
113
+ height: 3px;
103
114
  background: var(--color-primary);
104
115
  transition: width 0.15s ease;
105
116
  }
@@ -160,10 +171,10 @@
160
171
  }
161
172
 
162
173
  /* ── Scrollbar ───────────────────────────────────────────── */
163
- ::-webkit-scrollbar { width: 8px; height: 8px; }
174
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
164
175
  ::-webkit-scrollbar-track { background: var(--color-bg-primary); }
165
- ::-webkit-scrollbar-thumb { background: #343434; border-radius: 4px; }
166
- ::-webkit-scrollbar-thumb:hover { background: #4a4a4a; }
176
+ ::-webkit-scrollbar-thumb { background: var(--color-border-subtle); border-radius: 0; }
177
+ ::-webkit-scrollbar-thumb:hover { background: var(--color-primary); }
167
178
 
168
179
  /* ── Reduced motion ──────────────────────────────────────── */
169
180
  @media (prefers-reduced-motion: reduce) {
@@ -1,76 +1,6 @@
1
- /* SPDX-License-Identifier: AGPL-3.0-or-later */
1
+ /* SPDX-License-Identifier: Apache-2.0 */
2
2
  /* Copyright (c) 2026 ReifyDB */
3
3
 
4
- /* Inter - Body & Display */
5
- @font-face {
6
- font-family: 'Inter';
7
- font-style: normal;
8
- font-weight: 400;
9
- font-display: swap;
10
- src: url('../fonts/inter/inter-regular.woff2') format('woff2');
11
- }
12
-
13
- @font-face {
14
- font-family: 'Inter';
15
- font-style: normal;
16
- font-weight: 500;
17
- font-display: swap;
18
- src: url('../fonts/inter/inter-medium.woff2') format('woff2');
19
- }
20
-
21
- @font-face {
22
- font-family: 'Inter';
23
- font-style: normal;
24
- font-weight: 600;
25
- font-display: swap;
26
- src: url('../fonts/inter/inter-semi-bold.woff2') format('woff2');
27
- }
28
-
29
- @font-face {
30
- font-family: 'Inter';
31
- font-style: normal;
32
- font-weight: 700;
33
- font-display: swap;
34
- src: url('../fonts/inter/inter-bold.woff2') format('woff2');
35
- }
36
-
37
- @font-face {
38
- font-family: 'Inter';
39
- font-style: normal;
40
- font-weight: 900;
41
- font-display: swap;
42
- src: url('../fonts/inter/inter-black.woff2') format('woff2');
43
- }
44
-
45
- /* Inconsolata - Code */
46
- @font-face {
47
- font-family: 'Inconsolata';
48
- font-style: normal;
49
- font-weight: 400;
50
- font-display: swap;
51
- src: url('../fonts/inconsolata/inconsolata-regular.woff2') format('woff2');
52
- }
53
-
54
- @font-face {
55
- font-family: 'Inconsolata';
56
- font-style: normal;
57
- font-weight: 500;
58
- font-display: swap;
59
- src: url('../fonts/inconsolata/inconsolata-medium.woff2') format('woff2');
60
- }
61
-
62
- @font-face {
63
- font-family: 'Inconsolata';
64
- font-style: normal;
65
- font-weight: 600;
66
- font-display: swap;
67
- src: url('../fonts/inconsolata/inconsolata-semi-bold.woff2') format('woff2');
68
- }
69
-
70
- @font-face {
71
- font-family: 'Inconsolata';
72
- font-style: normal;
73
- font-weight: 700;
74
- font-display: swap;
75
- src: url('../fonts/inconsolata/inconsolata-bold.woff2') format('woff2');
76
- }
4
+ /* Fonts (Archivo Black, IBM Plex Sans, JetBrains Mono) are the consuming
5
+ app's responsibility - loaded via @fontsource in the website's main.tsx.
6
+ The design tokens in theme.css reference them by family name only. */
@@ -1,7 +1,8 @@
1
- /* SPDX-License-Identifier: AGPL-3.0-or-later */
1
+ /* SPDX-License-Identifier: Apache-2.0 */
2
2
  /* Copyright (c) 2026 ReifyDB */
3
3
 
4
4
  @import "tailwindcss";
5
5
  @import "./fonts.css";
6
6
  @import "./theme.css";
7
7
  @import "./base.css";
8
+ @import "./prism-theme.css";
@@ -0,0 +1,71 @@
1
+ /* SPDX-License-Identifier: Apache-2.0 */
2
+ /* Copyright (c) 2026 ReifyDB */
3
+ /* Light neo-brutalist Prism theme - indigo ramp on light code surfaces. */
4
+
5
+ code[class*="language-"],
6
+ pre[class*="language-"] {
7
+ color: var(--color-code-text);
8
+ font-family: var(--font-mono);
9
+ font-size: 0.875em;
10
+ line-height: 1.6;
11
+ tab-size: 2;
12
+ }
13
+
14
+ .token.comment,
15
+ .token.prolog,
16
+ .token.doctype,
17
+ .token.cdata {
18
+ color: var(--color-code-text-muted);
19
+ font-style: italic;
20
+ }
21
+
22
+ .token.punctuation {
23
+ color: var(--color-text-secondary);
24
+ }
25
+
26
+ .token.keyword,
27
+ .token.tag,
28
+ .token.boolean,
29
+ .token.atrule,
30
+ .token.important,
31
+ .token.selector {
32
+ color: var(--color-primary-dark);
33
+ font-weight: 600;
34
+ }
35
+
36
+ .token.string,
37
+ .token.char,
38
+ .token.attr-value,
39
+ .token.builtin,
40
+ .token.regex {
41
+ color: #525bec;
42
+ }
43
+
44
+ .token.number,
45
+ .token.constant,
46
+ .token.symbol {
47
+ color: var(--color-primary-dark);
48
+ }
49
+
50
+ .token.function,
51
+ .token.class-name {
52
+ color: var(--color-text-primary);
53
+ font-weight: 600;
54
+ }
55
+
56
+ .token.operator,
57
+ .token.entity,
58
+ .token.url,
59
+ .token.variable,
60
+ .token.property,
61
+ .token.attr-name {
62
+ color: var(--color-text-secondary);
63
+ }
64
+
65
+ .token.inserted {
66
+ color: #16a34a;
67
+ }
68
+
69
+ .token.deleted {
70
+ color: var(--color-status-error);
71
+ }