@reifydb/ui 0.8.1 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +19 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +19 -20
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/styles/base.css +13 -14
- package/src/styles/theme.css +5 -5
package/dist/index.cjs
CHANGED
|
@@ -101,14 +101,13 @@ function Badge({ variant = "default", children, className = "", onClick }) {
|
|
|
101
101
|
// src/components/button/button.tsx
|
|
102
102
|
var import_react = require("react");
|
|
103
103
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
104
|
-
var brutalPress = "shadow-[var(--shadow-hard-sm)] active:translate-x-[2px] active:translate-y-[2px] active:shadow-none";
|
|
105
104
|
var variantStyles2 = {
|
|
106
|
-
primary:
|
|
107
|
-
secondary:
|
|
105
|
+
primary: "bg-primary text-white font-bold border-border-default hover:brightness-90",
|
|
106
|
+
secondary: "bg-bg-tertiary text-text-primary border-border-default font-semibold hover:bg-bg-elevated",
|
|
108
107
|
ghost: "text-text-secondary border-transparent hover:bg-bg-tertiary hover:text-text-primary",
|
|
109
|
-
forest:
|
|
110
|
-
danger:
|
|
111
|
-
destructive:
|
|
108
|
+
forest: "bg-forest text-white font-semibold border-forest-border hover:brightness-90",
|
|
109
|
+
danger: "bg-status-error/10 text-status-error border-status-error/30 hover:bg-status-error/20",
|
|
110
|
+
destructive: "bg-status-error text-white font-bold border-border-default hover:brightness-90",
|
|
112
111
|
link: "text-primary border-transparent underline-offset-4 hover:underline active:text-primary-dark"
|
|
113
112
|
};
|
|
114
113
|
var sizeStyles = {
|
|
@@ -123,8 +122,8 @@ var Button = (0, import_react.forwardRef)(
|
|
|
123
122
|
"button",
|
|
124
123
|
{
|
|
125
124
|
ref,
|
|
126
|
-
className: `inline-flex items-center justify-center font-
|
|
127
|
-
rounded-
|
|
125
|
+
className: `inline-flex items-center justify-center font-semibold transition-colors duration-150
|
|
126
|
+
rounded-md border
|
|
128
127
|
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary
|
|
129
128
|
disabled:pointer-events-none disabled:opacity-50
|
|
130
129
|
${variantStyles2[variant]} ${sizeStyles[size]} ${className}`,
|
|
@@ -215,7 +214,7 @@ function CopyButton({ text, className = "", label, onCopy }) {
|
|
|
215
214
|
{
|
|
216
215
|
onClick: handleCopy,
|
|
217
216
|
className: `inline-flex items-center gap-1.5 px-2 py-1 text-xs text-text-muted
|
|
218
|
-
rounded-
|
|
217
|
+
rounded-sm border border-border-default transition-colors duration-75 hover:bg-bg-tertiary hover:text-text-primary ${className}`,
|
|
219
218
|
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
220
219
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M3 8.5l3 3 7-7", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }),
|
|
221
220
|
label ? "Copied!" : null
|
|
@@ -279,7 +278,7 @@ var DialogContent = (0, import_react4.forwardRef)(
|
|
|
279
278
|
"div",
|
|
280
279
|
{
|
|
281
280
|
ref,
|
|
282
|
-
className: `relative w-full max-w-lg mx-4 bg-bg-secondary border
|
|
281
|
+
className: `relative w-full max-w-lg mx-4 bg-bg-secondary border border-border-light rounded-lg shadow-[var(--shadow-medium)] ${className}`,
|
|
283
282
|
onClick: (e) => e.stopPropagation(),
|
|
284
283
|
children
|
|
285
284
|
}
|
|
@@ -338,7 +337,7 @@ var Input = (0, import_react5.forwardRef)(
|
|
|
338
337
|
{
|
|
339
338
|
ref,
|
|
340
339
|
id: inputId,
|
|
341
|
-
className: `h-9 rounded-
|
|
340
|
+
className: `h-9 rounded-md border border-border-light bg-bg-primary px-3 text-sm text-text-primary
|
|
342
341
|
placeholder:text-text-muted
|
|
343
342
|
focus:bg-bg-tertiary focus:outline-none focus:ring-2 focus:ring-primary
|
|
344
343
|
disabled:cursor-not-allowed disabled:opacity-50
|
|
@@ -358,7 +357,7 @@ function Kbd({ children, className = "" }) {
|
|
|
358
357
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
359
358
|
"kbd",
|
|
360
359
|
{
|
|
361
|
-
className: `inline-flex h-5 min-w-5 items-center justify-center rounded-
|
|
360
|
+
className: `inline-flex h-5 min-w-5 items-center justify-center rounded-sm border border-border-default
|
|
362
361
|
bg-bg-tertiary px-1.5 font-mono text-[10px] font-medium text-text-muted ${className}`,
|
|
363
362
|
children
|
|
364
363
|
}
|
|
@@ -404,7 +403,7 @@ function Modal({ open, onClose, title, children, className = "" }) {
|
|
|
404
403
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
405
404
|
"div",
|
|
406
405
|
{
|
|
407
|
-
className: `relative w-full max-w-md rounded-
|
|
406
|
+
className: `relative w-full max-w-md rounded-lg border border-border-light bg-bg-secondary p-6 shadow-[var(--shadow-medium)] ${className}`,
|
|
408
407
|
children: [
|
|
409
408
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
410
409
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("h2", { className: "text-base font-semibold text-text-primary", children: title }),
|
|
@@ -412,7 +411,7 @@ function Modal({ open, onClose, title, children, className = "" }) {
|
|
|
412
411
|
"button",
|
|
413
412
|
{
|
|
414
413
|
onClick: onClose,
|
|
415
|
-
className: "p-1 text-text-muted transition-colors rounded-
|
|
414
|
+
className: "p-1 text-text-muted transition-colors rounded-md hover:bg-bg-tertiary",
|
|
416
415
|
"aria-label": "Close",
|
|
417
416
|
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M4 4l8 8M12 4l-8 8", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) })
|
|
418
417
|
}
|
|
@@ -455,7 +454,7 @@ function NavTabs({ items, variant = "underline", className = "", renderLink }) {
|
|
|
455
454
|
// src/components/section-header/section-header.tsx
|
|
456
455
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
457
456
|
function SectionHeader({ title, badge, className = "" }) {
|
|
458
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: `flex items-center justify-between bg-bg-tertiary px-3 py-2.5 rounded-
|
|
457
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: `flex items-center justify-between bg-bg-tertiary px-3 py-2.5 rounded-md ${className}`, children: [
|
|
459
458
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-xs font-semibold text-text-secondary uppercase tracking-[1.4px]", children: title }),
|
|
460
459
|
badge
|
|
461
460
|
] });
|
|
@@ -474,7 +473,7 @@ var Select = (0, import_react7.forwardRef)(
|
|
|
474
473
|
{
|
|
475
474
|
ref,
|
|
476
475
|
id: selectId,
|
|
477
|
-
className: `h-9 rounded-
|
|
476
|
+
className: `h-9 rounded-md border border-border-light bg-bg-secondary px-3 text-sm text-text-primary
|
|
478
477
|
focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary
|
|
479
478
|
disabled:cursor-not-allowed disabled:opacity-50
|
|
480
479
|
${className}`,
|
|
@@ -564,10 +563,10 @@ function StatusBar({ items, trailing, className = "" }) {
|
|
|
564
563
|
// src/components/table/table.tsx
|
|
565
564
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
566
565
|
function Table({ children, className = "" }) {
|
|
567
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "w-full overflow-x-auto rounded-
|
|
566
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "w-full overflow-x-auto rounded-md", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("table", { className: `w-full text-sm ${className}`, children }) });
|
|
568
567
|
}
|
|
569
568
|
function TableHead({ children }) {
|
|
570
|
-
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("thead", { className: "border-b
|
|
569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("thead", { className: "border-b border-border-light", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("tr", { children }) });
|
|
571
570
|
}
|
|
572
571
|
function TableHeader({ children, className = "", onClick }) {
|
|
573
572
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
@@ -592,11 +591,11 @@ function TableCell({ children, className = "" }) {
|
|
|
592
591
|
// src/components/tabs/tabs.tsx
|
|
593
592
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
594
593
|
function Tabs({ tabs, value, onChange, className = "" }) {
|
|
595
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `flex gap-1 rounded-
|
|
594
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: `flex gap-1 rounded-md border border-border-light bg-bg-secondary p-1 ${className}`, children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
596
595
|
"button",
|
|
597
596
|
{
|
|
598
597
|
onClick: () => onChange(tab.value),
|
|
599
|
-
className: `px-3 py-1.5 text-sm font-medium transition-all rounded-
|
|
598
|
+
className: `px-3 py-1.5 text-sm font-medium transition-all rounded-sm
|
|
600
599
|
${value === tab.value ? "bg-bg-tertiary text-text-primary" : "text-text-muted hover:bg-bg-secondary hover:text-text-primary"}`,
|
|
601
600
|
children: tab.label
|
|
602
601
|
},
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../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\nexport { Badge } from \"./components/badge/index.js\";\nexport type { BadgeProps } from \"./components/badge/index.js\";\nexport { Button } from \"./components/button/index.js\";\nexport type { ButtonProps } from \"./components/button/index.js\";\nexport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from \"./components/card/index.js\";\nexport type { CardProps } from \"./components/card/index.js\";\nexport { Chip } from \"./components/chip/index.js\";\nexport type { ChipProps } from \"./components/chip/index.js\";\nexport { ChipGroup } from \"./components/chip-group/index.js\";\nexport type { ChipGroupProps, ChipGroupOption } from \"./components/chip-group/index.js\";\nexport { CodeBlock } from \"./components/code-block/index.js\";\nexport type { CodeBlockProps } from \"./components/code-block/index.js\";\nexport { CopyButton } from \"./components/copy-button/index.js\";\nexport type { CopyButtonProps } from \"./components/copy-button/index.js\";\nexport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogClose, DialogFooter } from \"./components/dialog/index.js\";\nexport type { DialogProps, DialogContentProps } from \"./components/dialog/index.js\";\nexport { EmptyState } from \"./components/empty-state/index.js\";\nexport type { EmptyStateProps } from \"./components/empty-state/index.js\";\nexport { Input } from \"./components/input/index.js\";\nexport type { InputProps } from \"./components/input/index.js\";\nexport { Kbd } from \"./components/kbd/index.js\";\nexport type { KbdProps } from \"./components/kbd/index.js\";\nexport { Loading } from \"./components/loading/index.js\";\nexport type { LoadingProps } from \"./components/loading/index.js\";\nexport { Modal } from \"./components/modal/index.js\";\nexport type { ModalProps } from \"./components/modal/index.js\";\nexport { NavTabs } from \"./components/nav-tabs/index.js\";\nexport type { NavTabsProps, NavTabItem } from \"./components/nav-tabs/index.js\";\nexport { SectionHeader } from \"./components/section-header/index.js\";\nexport type { SectionHeaderProps } from \"./components/section-header/index.js\";\nexport { Select } from \"./components/select/index.js\";\nexport type { SelectProps, SelectOption } from \"./components/select/index.js\";\nexport { Separator } from \"./components/separator/index.js\";\nexport type { SeparatorProps } from \"./components/separator/index.js\";\nexport { Skeleton } from \"./components/skeleton/index.js\";\nexport type { SkeletonProps } from \"./components/skeleton/index.js\";\nexport { Sparkline } from \"./components/sparkline/index.js\";\nexport type { SparklineProps } from \"./components/sparkline/index.js\";\nexport { Spinner } from \"./components/spinner/index.js\";\nexport type { SpinnerProps } from \"./components/spinner/index.js\";\nexport { StatusBar } from \"./components/status-bar/index.js\";\nexport type { StatusBarProps, StatusBarItem } from \"./components/status-bar/index.js\";\nexport { Table, TableHead, TableHeader, TableBody, TableRow, TableCell } from \"./components/table/index.js\";\nexport type { TableProps, TableHeaderProps, TableRowProps } from \"./components/table/index.js\";\nexport { Tabs } from \"./components/tabs/index.js\";\nexport type { TabsProps, Tab } from \"./components/tabs/index.js\";\nexport { Toggle } from \"./components/toggle/index.js\";\nexport type { ToggleProps } from \"./components/toggle/index.js\";\n","// 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":["import_jsx_runtime","variantStyles","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_jsx_runtime","Prism","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","variantStyles","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../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\nexport { Badge } from \"./components/badge/index.js\";\nexport type { BadgeProps } from \"./components/badge/index.js\";\nexport { Button } from \"./components/button/index.js\";\nexport type { ButtonProps } from \"./components/button/index.js\";\nexport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from \"./components/card/index.js\";\nexport type { CardProps } from \"./components/card/index.js\";\nexport { Chip } from \"./components/chip/index.js\";\nexport type { ChipProps } from \"./components/chip/index.js\";\nexport { ChipGroup } from \"./components/chip-group/index.js\";\nexport type { ChipGroupProps, ChipGroupOption } from \"./components/chip-group/index.js\";\nexport { CodeBlock } from \"./components/code-block/index.js\";\nexport type { CodeBlockProps } from \"./components/code-block/index.js\";\nexport { CopyButton } from \"./components/copy-button/index.js\";\nexport type { CopyButtonProps } from \"./components/copy-button/index.js\";\nexport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogClose, DialogFooter } from \"./components/dialog/index.js\";\nexport type { DialogProps, DialogContentProps } from \"./components/dialog/index.js\";\nexport { EmptyState } from \"./components/empty-state/index.js\";\nexport type { EmptyStateProps } from \"./components/empty-state/index.js\";\nexport { Input } from \"./components/input/index.js\";\nexport type { InputProps } from \"./components/input/index.js\";\nexport { Kbd } from \"./components/kbd/index.js\";\nexport type { KbdProps } from \"./components/kbd/index.js\";\nexport { Loading } from \"./components/loading/index.js\";\nexport type { LoadingProps } from \"./components/loading/index.js\";\nexport { Modal } from \"./components/modal/index.js\";\nexport type { ModalProps } from \"./components/modal/index.js\";\nexport { NavTabs } from \"./components/nav-tabs/index.js\";\nexport type { NavTabsProps, NavTabItem } from \"./components/nav-tabs/index.js\";\nexport { SectionHeader } from \"./components/section-header/index.js\";\nexport type { SectionHeaderProps } from \"./components/section-header/index.js\";\nexport { Select } from \"./components/select/index.js\";\nexport type { SelectProps, SelectOption } from \"./components/select/index.js\";\nexport { Separator } from \"./components/separator/index.js\";\nexport type { SeparatorProps } from \"./components/separator/index.js\";\nexport { Skeleton } from \"./components/skeleton/index.js\";\nexport type { SkeletonProps } from \"./components/skeleton/index.js\";\nexport { Sparkline } from \"./components/sparkline/index.js\";\nexport type { SparklineProps } from \"./components/sparkline/index.js\";\nexport { Spinner } from \"./components/spinner/index.js\";\nexport type { SpinnerProps } from \"./components/spinner/index.js\";\nexport { StatusBar } from \"./components/status-bar/index.js\";\nexport type { StatusBarProps, StatusBarItem } from \"./components/status-bar/index.js\";\nexport { Table, TableHead, TableHeader, TableBody, TableRow, TableCell } from \"./components/table/index.js\";\nexport type { TableProps, TableHeaderProps, TableRowProps } from \"./components/table/index.js\";\nexport { Tabs } from \"./components/tabs/index.js\";\nexport type { TabsProps, Tab } from \"./components/tabs/index.js\";\nexport { Toggle } from \"./components/toggle/index.js\";\nexport type { ToggleProps } from \"./components/toggle/index.js\";\n","// 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 variantStyles: Record<ButtonVariant, string> = {\n primary: \"bg-primary text-white font-bold border-border-default hover:brightness-90\",\n secondary: \"bg-bg-tertiary text-text-primary border-border-default font-semibold hover:bg-bg-elevated\",\n ghost:\n \"text-text-secondary border-transparent hover:bg-bg-tertiary hover:text-text-primary\",\n forest: \"bg-forest text-white font-semibold border-forest-border hover:brightness-90\",\n danger: \"bg-status-error/10 text-status-error border-status-error/30 hover:bg-status-error/20\",\n destructive: \"bg-status-error text-white font-bold border-border-default hover:brightness-90\",\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-semibold transition-colors duration-150\n rounded-md 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: 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-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: 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 border-border-light rounded-lg shadow-[var(--shadow-medium)] ${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-md border border-border-light 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-sm 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: 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-lg border border-border-light bg-bg-secondary p-6 shadow-[var(--shadow-medium)] ${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-md 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-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: 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-md border border-border-light 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-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={`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-md border border-border-light 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-sm\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":["import_jsx_runtime","variantStyles","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_jsx_runtime","Prism","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","variantStyles","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime"]}
|
package/dist/index.mjs
CHANGED
|
@@ -26,14 +26,13 @@ function Badge({ variant = "default", children, className = "", onClick }) {
|
|
|
26
26
|
// src/components/button/button.tsx
|
|
27
27
|
import { forwardRef } from "react";
|
|
28
28
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
29
|
-
var brutalPress = "shadow-[var(--shadow-hard-sm)] active:translate-x-[2px] active:translate-y-[2px] active:shadow-none";
|
|
30
29
|
var variantStyles2 = {
|
|
31
|
-
primary:
|
|
32
|
-
secondary:
|
|
30
|
+
primary: "bg-primary text-white font-bold border-border-default hover:brightness-90",
|
|
31
|
+
secondary: "bg-bg-tertiary text-text-primary border-border-default font-semibold hover:bg-bg-elevated",
|
|
33
32
|
ghost: "text-text-secondary border-transparent hover:bg-bg-tertiary hover:text-text-primary",
|
|
34
|
-
forest:
|
|
35
|
-
danger:
|
|
36
|
-
destructive:
|
|
33
|
+
forest: "bg-forest text-white font-semibold border-forest-border hover:brightness-90",
|
|
34
|
+
danger: "bg-status-error/10 text-status-error border-status-error/30 hover:bg-status-error/20",
|
|
35
|
+
destructive: "bg-status-error text-white font-bold border-border-default hover:brightness-90",
|
|
37
36
|
link: "text-primary border-transparent underline-offset-4 hover:underline active:text-primary-dark"
|
|
38
37
|
};
|
|
39
38
|
var sizeStyles = {
|
|
@@ -48,8 +47,8 @@ var Button = forwardRef(
|
|
|
48
47
|
"button",
|
|
49
48
|
{
|
|
50
49
|
ref,
|
|
51
|
-
className: `inline-flex items-center justify-center font-
|
|
52
|
-
rounded-
|
|
50
|
+
className: `inline-flex items-center justify-center font-semibold transition-colors duration-150
|
|
51
|
+
rounded-md border
|
|
53
52
|
focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary
|
|
54
53
|
disabled:pointer-events-none disabled:opacity-50
|
|
55
54
|
${variantStyles2[variant]} ${sizeStyles[size]} ${className}`,
|
|
@@ -140,7 +139,7 @@ function CopyButton({ text, className = "", label, onCopy }) {
|
|
|
140
139
|
{
|
|
141
140
|
onClick: handleCopy,
|
|
142
141
|
className: `inline-flex items-center gap-1.5 px-2 py-1 text-xs text-text-muted
|
|
143
|
-
rounded-
|
|
142
|
+
rounded-sm border border-border-default transition-colors duration-75 hover:bg-bg-tertiary hover:text-text-primary ${className}`,
|
|
144
143
|
children: copied ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
145
144
|
/* @__PURE__ */ jsx6("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsx6("path", { d: "M3 8.5l3 3 7-7", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }),
|
|
146
145
|
label ? "Copied!" : null
|
|
@@ -204,7 +203,7 @@ var DialogContent = forwardRef2(
|
|
|
204
203
|
"div",
|
|
205
204
|
{
|
|
206
205
|
ref,
|
|
207
|
-
className: `relative w-full max-w-lg mx-4 bg-bg-secondary border
|
|
206
|
+
className: `relative w-full max-w-lg mx-4 bg-bg-secondary border border-border-light rounded-lg shadow-[var(--shadow-medium)] ${className}`,
|
|
208
207
|
onClick: (e) => e.stopPropagation(),
|
|
209
208
|
children
|
|
210
209
|
}
|
|
@@ -263,7 +262,7 @@ var Input = forwardRef3(
|
|
|
263
262
|
{
|
|
264
263
|
ref,
|
|
265
264
|
id: inputId,
|
|
266
|
-
className: `h-9 rounded-
|
|
265
|
+
className: `h-9 rounded-md border border-border-light bg-bg-primary px-3 text-sm text-text-primary
|
|
267
266
|
placeholder:text-text-muted
|
|
268
267
|
focus:bg-bg-tertiary focus:outline-none focus:ring-2 focus:ring-primary
|
|
269
268
|
disabled:cursor-not-allowed disabled:opacity-50
|
|
@@ -283,7 +282,7 @@ function Kbd({ children, className = "" }) {
|
|
|
283
282
|
return /* @__PURE__ */ jsx11(
|
|
284
283
|
"kbd",
|
|
285
284
|
{
|
|
286
|
-
className: `inline-flex h-5 min-w-5 items-center justify-center rounded-
|
|
285
|
+
className: `inline-flex h-5 min-w-5 items-center justify-center rounded-sm border border-border-default
|
|
287
286
|
bg-bg-tertiary px-1.5 font-mono text-[10px] font-medium text-text-muted ${className}`,
|
|
288
287
|
children
|
|
289
288
|
}
|
|
@@ -329,7 +328,7 @@ function Modal({ open, onClose, title, children, className = "" }) {
|
|
|
329
328
|
/* @__PURE__ */ jsxs7(
|
|
330
329
|
"div",
|
|
331
330
|
{
|
|
332
|
-
className: `relative w-full max-w-md rounded-
|
|
331
|
+
className: `relative w-full max-w-md rounded-lg border border-border-light bg-bg-secondary p-6 shadow-[var(--shadow-medium)] ${className}`,
|
|
333
332
|
children: [
|
|
334
333
|
/* @__PURE__ */ jsxs7("div", { className: "mb-4 flex items-center justify-between", children: [
|
|
335
334
|
/* @__PURE__ */ jsx13("h2", { className: "text-base font-semibold text-text-primary", children: title }),
|
|
@@ -337,7 +336,7 @@ function Modal({ open, onClose, title, children, className = "" }) {
|
|
|
337
336
|
"button",
|
|
338
337
|
{
|
|
339
338
|
onClick: onClose,
|
|
340
|
-
className: "p-1 text-text-muted transition-colors rounded-
|
|
339
|
+
className: "p-1 text-text-muted transition-colors rounded-md hover:bg-bg-tertiary",
|
|
341
340
|
"aria-label": "Close",
|
|
342
341
|
children: /* @__PURE__ */ jsx13("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsx13("path", { d: "M4 4l8 8M12 4l-8 8", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) })
|
|
343
342
|
}
|
|
@@ -380,7 +379,7 @@ function NavTabs({ items, variant = "underline", className = "", renderLink }) {
|
|
|
380
379
|
// src/components/section-header/section-header.tsx
|
|
381
380
|
import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
382
381
|
function SectionHeader({ title, badge, className = "" }) {
|
|
383
|
-
return /* @__PURE__ */ jsxs8("div", { className: `flex items-center justify-between bg-bg-tertiary px-3 py-2.5 rounded-
|
|
382
|
+
return /* @__PURE__ */ jsxs8("div", { className: `flex items-center justify-between bg-bg-tertiary px-3 py-2.5 rounded-md ${className}`, children: [
|
|
384
383
|
/* @__PURE__ */ jsx15("span", { className: "text-xs font-semibold text-text-secondary uppercase tracking-[1.4px]", children: title }),
|
|
385
384
|
badge
|
|
386
385
|
] });
|
|
@@ -399,7 +398,7 @@ var Select = forwardRef4(
|
|
|
399
398
|
{
|
|
400
399
|
ref,
|
|
401
400
|
id: selectId,
|
|
402
|
-
className: `h-9 rounded-
|
|
401
|
+
className: `h-9 rounded-md border border-border-light bg-bg-secondary px-3 text-sm text-text-primary
|
|
403
402
|
focus:border-primary focus:outline-none focus:ring-2 focus:ring-primary
|
|
404
403
|
disabled:cursor-not-allowed disabled:opacity-50
|
|
405
404
|
${className}`,
|
|
@@ -489,10 +488,10 @@ function StatusBar({ items, trailing, className = "" }) {
|
|
|
489
488
|
// src/components/table/table.tsx
|
|
490
489
|
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
491
490
|
function Table({ children, className = "" }) {
|
|
492
|
-
return /* @__PURE__ */ jsx22("div", { className: "w-full overflow-x-auto rounded-
|
|
491
|
+
return /* @__PURE__ */ jsx22("div", { className: "w-full overflow-x-auto rounded-md", children: /* @__PURE__ */ jsx22("table", { className: `w-full text-sm ${className}`, children }) });
|
|
493
492
|
}
|
|
494
493
|
function TableHead({ children }) {
|
|
495
|
-
return /* @__PURE__ */ jsx22("thead", { className: "border-b
|
|
494
|
+
return /* @__PURE__ */ jsx22("thead", { className: "border-b border-border-light", children: /* @__PURE__ */ jsx22("tr", { children }) });
|
|
496
495
|
}
|
|
497
496
|
function TableHeader({ children, className = "", onClick }) {
|
|
498
497
|
return /* @__PURE__ */ jsx22(
|
|
@@ -517,11 +516,11 @@ function TableCell({ children, className = "" }) {
|
|
|
517
516
|
// src/components/tabs/tabs.tsx
|
|
518
517
|
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
519
518
|
function Tabs({ tabs, value, onChange, className = "" }) {
|
|
520
|
-
return /* @__PURE__ */ jsx23("div", { className: `flex gap-1 rounded-
|
|
519
|
+
return /* @__PURE__ */ jsx23("div", { className: `flex gap-1 rounded-md border border-border-light bg-bg-secondary p-1 ${className}`, children: tabs.map((tab) => /* @__PURE__ */ jsx23(
|
|
521
520
|
"button",
|
|
522
521
|
{
|
|
523
522
|
onClick: () => onChange(tab.value),
|
|
524
|
-
className: `px-3 py-1.5 text-sm font-medium transition-all rounded-
|
|
523
|
+
className: `px-3 py-1.5 text-sm font-medium transition-all rounded-sm
|
|
525
524
|
${value === tab.value ? "bg-bg-tertiary text-text-primary" : "text-text-muted hover:bg-bg-secondary hover:text-text-primary"}`,
|
|
526
525
|
children: tab.label
|
|
527
526
|
},
|
package/dist/index.mjs.map
CHANGED
|
@@ -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: 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"]}
|
|
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 variantStyles: Record<ButtonVariant, string> = {\n primary: \"bg-primary text-white font-bold border-border-default hover:brightness-90\",\n secondary: \"bg-bg-tertiary text-text-primary border-border-default font-semibold hover:bg-bg-elevated\",\n ghost:\n \"text-text-secondary border-transparent hover:bg-bg-tertiary hover:text-text-primary\",\n forest: \"bg-forest text-white font-semibold border-forest-border hover:brightness-90\",\n danger: \"bg-status-error/10 text-status-error border-status-error/30 hover:bg-status-error/20\",\n destructive: \"bg-status-error text-white font-bold border-border-default hover:brightness-90\",\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-semibold transition-colors duration-150\n rounded-md 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: 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-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: 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 border-border-light rounded-lg shadow-[var(--shadow-medium)] ${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-md border border-border-light 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-sm 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: 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-lg border border-border-light bg-bg-secondary p-6 shadow-[var(--shadow-medium)] ${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-md 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-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: 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-md border border-border-light 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-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={`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-md border border-border-light 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-sm\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
package/src/styles/base.css
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
background: var(--color-bg-primary);
|
|
7
7
|
color: var(--color-text-primary);
|
|
8
8
|
color-scheme: light;
|
|
9
|
-
font-family: var(--font-
|
|
9
|
+
font-family: var(--font-body);
|
|
10
10
|
font-size: 16px;
|
|
11
11
|
-webkit-font-smoothing: antialiased;
|
|
12
12
|
-moz-osx-font-smoothing: grayscale;
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
/* ── Card ─────────────────────────────────────────────────── */
|
|
44
44
|
.card-modern {
|
|
45
45
|
background: var(--color-bg-secondary);
|
|
46
|
-
border:
|
|
46
|
+
border: 1px solid var(--color-border-light);
|
|
47
47
|
border-radius: var(--radius-md);
|
|
48
|
-
box-shadow: var(--shadow-
|
|
48
|
+
box-shadow: var(--shadow-soft);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
/* ── Section alternation ────────────────────────────────── */
|
|
@@ -62,16 +62,16 @@
|
|
|
62
62
|
/* ── Card utilities ─────────────────────────────────────── */
|
|
63
63
|
.glass-card {
|
|
64
64
|
background: var(--color-bg-secondary);
|
|
65
|
-
border:
|
|
65
|
+
border: 1px solid var(--color-border-light);
|
|
66
66
|
border-radius: var(--radius-md);
|
|
67
|
-
box-shadow: var(--shadow-
|
|
67
|
+
box-shadow: var(--shadow-soft);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
.glass-card-strong {
|
|
71
71
|
background: var(--color-bg-secondary);
|
|
72
|
-
border:
|
|
72
|
+
border: 1px solid var(--color-primary);
|
|
73
73
|
border-radius: var(--radius-md);
|
|
74
|
-
box-shadow: var(--shadow-
|
|
74
|
+
box-shadow: var(--shadow-soft);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.glass {
|
|
@@ -81,21 +81,20 @@
|
|
|
81
81
|
/* ── Card nested inner ───────────────────────────────────── */
|
|
82
82
|
.card-nested-inner {
|
|
83
83
|
background: var(--color-input-bg);
|
|
84
|
-
border:
|
|
84
|
+
border: 1px solid var(--color-border-light);
|
|
85
85
|
border-radius: var(--radius-sm);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
/* ──
|
|
88
|
+
/* ── Featured card ────────────────────────────────────────── */
|
|
89
89
|
.card-brutal {
|
|
90
90
|
background: var(--color-bg-secondary);
|
|
91
|
-
border:
|
|
91
|
+
border: 1px solid var(--color-border-light);
|
|
92
92
|
border-radius: var(--radius-md);
|
|
93
|
-
box-shadow: var(--shadow-
|
|
94
|
-
transition:
|
|
93
|
+
box-shadow: var(--shadow-soft);
|
|
94
|
+
transition: box-shadow 0.15s ease;
|
|
95
95
|
}
|
|
96
96
|
.card-brutal:hover {
|
|
97
|
-
|
|
98
|
-
box-shadow: 6px 6px 0 var(--color-border-default);
|
|
97
|
+
box-shadow: var(--shadow-medium);
|
|
99
98
|
}
|
|
100
99
|
|
|
101
100
|
/* ── Brutalist tab underline ─────────────────────────────── */
|
package/src/styles/theme.css
CHANGED
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
--shadow-hard-muted: 4px 4px 0 var(--color-border-subtle);
|
|
58
58
|
--shadow-hard-primary: 4px 4px 0 var(--color-primary-dark);
|
|
59
59
|
|
|
60
|
-
/* Rounded Corners
|
|
61
|
-
--radius-sm:
|
|
62
|
-
--radius-md:
|
|
63
|
-
--radius-lg:
|
|
64
|
-
--radius-xl:
|
|
60
|
+
/* Rounded Corners */
|
|
61
|
+
--radius-sm: 4px;
|
|
62
|
+
--radius-md: 6px;
|
|
63
|
+
--radius-lg: 10px;
|
|
64
|
+
--radius-xl: 14px;
|
|
65
65
|
--radius-pill: 9999px;
|
|
66
66
|
|
|
67
67
|
/* Fonts - mono-first, Archivo Black display, Plex Sans body */
|