@squadbase/vantage 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/README.md +21 -4
  2. package/dist/chunk-A2UUGASH.js +12 -0
  3. package/dist/chunk-A2UUGASH.js.map +1 -0
  4. package/dist/{chunk-ZGDU5YLH.js → chunk-PRFBSQA4.js} +9 -5
  5. package/dist/chunk-PRFBSQA4.js.map +1 -0
  6. package/dist/chunk-WQZYXXQW.js +2249 -0
  7. package/dist/chunk-WQZYXXQW.js.map +1 -0
  8. package/dist/{chunk-73J5ZD4C.js → chunk-YLAB6UQS.js} +17 -3
  9. package/dist/chunk-YLAB6UQS.js.map +1 -0
  10. package/dist/cli.js +607 -36
  11. package/dist/cli.js.map +1 -1
  12. package/dist/components/index.d.ts +554 -0
  13. package/dist/components/index.js +1983 -0
  14. package/dist/components/index.js.map +1 -0
  15. package/dist/markdown/index.d.ts +9 -0
  16. package/dist/markdown/index.js +26 -0
  17. package/dist/markdown/index.js.map +1 -0
  18. package/dist/query/index.d.ts +27 -1
  19. package/dist/query/index.js +18 -0
  20. package/dist/query/index.js.map +1 -1
  21. package/dist/server/node.js +6 -1
  22. package/dist/server/node.js.map +1 -1
  23. package/dist/ui/index.d.ts +316 -200
  24. package/dist/ui/index.js +566 -511
  25. package/dist/ui/index.js.map +1 -1
  26. package/dist/vite/index.js +2 -2
  27. package/docs/en/agent-skills.md +89 -0
  28. package/docs/en/api-and-server.md +84 -0
  29. package/docs/en/build-and-deploy.md +280 -0
  30. package/docs/en/cli-reference.md +311 -0
  31. package/docs/en/components.md +233 -0
  32. package/docs/en/data-fetching.md +78 -0
  33. package/docs/en/environment-variables.md +69 -0
  34. package/docs/en/getting-started.md +95 -0
  35. package/docs/en/index.md +65 -0
  36. package/docs/en/markdown/markdown-renderer.md +44 -0
  37. package/docs/en/pages-and-metadata.md +56 -0
  38. package/docs/en/parts/app-shell.md +54 -0
  39. package/docs/en/parts/dashboard-card.md +64 -0
  40. package/docs/en/parts/data-table.md +86 -0
  41. package/docs/en/parts/date-range-picker.md +41 -0
  42. package/docs/en/parts/echart.md +53 -0
  43. package/docs/en/parts/filter-bar.md +66 -0
  44. package/docs/en/parts/funnel-steps.md +33 -0
  45. package/docs/en/parts/metric-value.md +23 -0
  46. package/docs/en/parts/multi-select.md +27 -0
  47. package/docs/en/parts/page-shell.md +45 -0
  48. package/docs/en/parts/searchable-select.md +47 -0
  49. package/docs/en/parts/section-header.md +20 -0
  50. package/docs/en/parts/segmented-control.md +25 -0
  51. package/docs/en/parts/status-badge.md +44 -0
  52. package/docs/en/parts/trend-indicator.md +26 -0
  53. package/docs/en/routing.md +95 -0
  54. package/docs/en/ui/accordion.md +36 -0
  55. package/docs/en/ui/alert.md +31 -0
  56. package/docs/en/ui/badge.md +23 -0
  57. package/docs/en/ui/breadcrumb.md +38 -0
  58. package/docs/en/ui/button.md +39 -0
  59. package/docs/en/ui/calendar.md +28 -0
  60. package/docs/en/ui/card.md +35 -0
  61. package/docs/en/ui/checkbox.md +34 -0
  62. package/docs/en/ui/cn.md +34 -0
  63. package/docs/en/ui/collapsible.md +21 -0
  64. package/docs/en/ui/command.md +37 -0
  65. package/docs/en/ui/dialog.md +52 -0
  66. package/docs/en/ui/dropdown-menu.md +50 -0
  67. package/docs/en/ui/empty.md +22 -0
  68. package/docs/en/ui/error-state.md +50 -0
  69. package/docs/en/ui/input-group.md +30 -0
  70. package/docs/en/ui/input.md +28 -0
  71. package/docs/en/ui/label.md +19 -0
  72. package/docs/en/ui/loading.md +19 -0
  73. package/docs/en/ui/popover.md +34 -0
  74. package/docs/en/ui/progress.md +28 -0
  75. package/docs/en/ui/scroll-area.md +23 -0
  76. package/docs/en/ui/select.md +63 -0
  77. package/docs/en/ui/separator.md +15 -0
  78. package/docs/en/ui/sheet.md +28 -0
  79. package/docs/en/ui/sidebar.md +92 -0
  80. package/docs/en/ui/skeleton.md +16 -0
  81. package/docs/en/ui/slider.md +21 -0
  82. package/docs/en/ui/spinner.md +14 -0
  83. package/docs/en/ui/switch.md +19 -0
  84. package/docs/en/ui/table.md +24 -0
  85. package/docs/en/ui/tabs.md +23 -0
  86. package/docs/en/ui/textarea.md +15 -0
  87. package/docs/en/ui/toggle-group.md +26 -0
  88. package/docs/en/ui/toggle.md +19 -0
  89. package/docs/en/ui/tooltip.md +22 -0
  90. package/docs/en/ui/use-is-mobile.md +18 -0
  91. package/docs/en/ui-and-theming.md +95 -0
  92. package/docs/index.json +1306 -0
  93. package/docs/ja/agent-skills.md +87 -0
  94. package/docs/ja/api-and-server.md +84 -0
  95. package/docs/ja/build-and-deploy.md +279 -0
  96. package/docs/ja/cli-reference.md +305 -0
  97. package/docs/ja/components.md +229 -0
  98. package/docs/ja/data-fetching.md +78 -0
  99. package/docs/ja/environment-variables.md +68 -0
  100. package/docs/ja/getting-started.md +95 -0
  101. package/docs/ja/index.md +65 -0
  102. package/docs/ja/markdown/markdown-renderer.md +43 -0
  103. package/docs/ja/pages-and-metadata.md +56 -0
  104. package/docs/ja/parts/app-shell.md +54 -0
  105. package/docs/ja/parts/dashboard-card.md +64 -0
  106. package/docs/ja/parts/data-table.md +85 -0
  107. package/docs/ja/parts/date-range-picker.md +41 -0
  108. package/docs/ja/parts/echart.md +52 -0
  109. package/docs/ja/parts/filter-bar.md +64 -0
  110. package/docs/ja/parts/funnel-steps.md +33 -0
  111. package/docs/ja/parts/metric-value.md +25 -0
  112. package/docs/ja/parts/multi-select.md +27 -0
  113. package/docs/ja/parts/page-shell.md +45 -0
  114. package/docs/ja/parts/searchable-select.md +47 -0
  115. package/docs/ja/parts/section-header.md +20 -0
  116. package/docs/ja/parts/segmented-control.md +26 -0
  117. package/docs/ja/parts/status-badge.md +44 -0
  118. package/docs/ja/parts/trend-indicator.md +26 -0
  119. package/docs/ja/routing.md +95 -0
  120. package/docs/ja/ui/accordion.md +37 -0
  121. package/docs/ja/ui/alert.md +31 -0
  122. package/docs/ja/ui/badge.md +23 -0
  123. package/docs/ja/ui/breadcrumb.md +38 -0
  124. package/docs/ja/ui/button.md +39 -0
  125. package/docs/ja/ui/calendar.md +28 -0
  126. package/docs/ja/ui/card.md +35 -0
  127. package/docs/ja/ui/checkbox.md +34 -0
  128. package/docs/ja/ui/cn.md +34 -0
  129. package/docs/ja/ui/collapsible.md +21 -0
  130. package/docs/ja/ui/command.md +36 -0
  131. package/docs/ja/ui/dialog.md +51 -0
  132. package/docs/ja/ui/dropdown-menu.md +50 -0
  133. package/docs/ja/ui/empty.md +22 -0
  134. package/docs/ja/ui/error-state.md +50 -0
  135. package/docs/ja/ui/input-group.md +30 -0
  136. package/docs/ja/ui/input.md +28 -0
  137. package/docs/ja/ui/label.md +19 -0
  138. package/docs/ja/ui/loading.md +19 -0
  139. package/docs/ja/ui/popover.md +34 -0
  140. package/docs/ja/ui/progress.md +28 -0
  141. package/docs/ja/ui/scroll-area.md +24 -0
  142. package/docs/ja/ui/select.md +64 -0
  143. package/docs/ja/ui/separator.md +15 -0
  144. package/docs/ja/ui/sheet.md +28 -0
  145. package/docs/ja/ui/sidebar.md +92 -0
  146. package/docs/ja/ui/skeleton.md +16 -0
  147. package/docs/ja/ui/slider.md +21 -0
  148. package/docs/ja/ui/spinner.md +14 -0
  149. package/docs/ja/ui/switch.md +19 -0
  150. package/docs/ja/ui/table.md +24 -0
  151. package/docs/ja/ui/tabs.md +24 -0
  152. package/docs/ja/ui/textarea.md +15 -0
  153. package/docs/ja/ui/toggle-group.md +27 -0
  154. package/docs/ja/ui/toggle.md +19 -0
  155. package/docs/ja/ui/tooltip.md +22 -0
  156. package/docs/ja/ui/use-is-mobile.md +18 -0
  157. package/docs/ja/ui-and-theming.md +95 -0
  158. package/package.json +29 -4
  159. package/registry/blocks/sales-overview.tsx +43 -19
  160. package/registry/ui/data-table.tsx +702 -102
  161. package/skills/vantage-add-feature/SKILL.md +150 -0
  162. package/skills/vantage-app/SKILL.md +258 -0
  163. package/skills/vantage-pitfalls/SKILL.md +115 -0
  164. package/templates/AGENTS.md +268 -0
  165. package/theme.css +178 -40
  166. package/dist/chunk-73J5ZD4C.js.map +0 -1
  167. package/dist/chunk-ZGDU5YLH.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/cn.ts","../../src/ui/button.tsx","../../src/ui/input.tsx","../../src/ui/card.tsx","../../src/ui/tabs.tsx","../../src/ui/table.tsx","../../src/ui/metric-card.tsx","../../src/ui/filter-bar.tsx","../../src/ui/dashboard-shell.tsx","../../src/ui/states.tsx","../../src/ui/date-picker.tsx","../../src/ui/chart.tsx","../../src/ui/dialog.tsx","../../src/ui/dropdown.tsx"],"names":["forwardRef","jsx","useState","jsxs","FIELD","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["/** Join class values, dropping falsy entries. Small, dependency-free. */\nexport type ClassValue = string | number | false | null | undefined\nexport function cn(...classes: ClassValue[]): string {\n return classes.filter(Boolean).join(\" \")\n}\n","import { forwardRef, type ButtonHTMLAttributes } from \"react\"\nimport { cn } from \"./cn.js\"\n\nexport type ButtonVariant = \"default\" | \"secondary\" | \"outline\" | \"ghost\" | \"destructive\"\nexport type ButtonSize = \"sm\" | \"default\" | \"lg\" | \"icon\"\n\nconst VARIANTS: Record<ButtonVariant, string> = {\n default: \"bg-primary text-primary-foreground hover:opacity-90\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n outline: \"border border-border bg-background hover:bg-accent hover:text-accent-foreground\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n destructive: \"bg-destructive text-destructive-foreground hover:opacity-90\",\n}\n\nconst SIZES: Record<ButtonSize, string> = {\n sm: \"h-8 px-3 text-xs\",\n default: \"h-9 px-4 text-sm\",\n lg: \"h-10 px-6 text-sm\",\n icon: \"h-9 w-9\",\n}\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant\n size?: ButtonSize\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = \"default\", size = \"default\", type = \"button\", ...props }, ref) => (\n <button\n ref={ref}\n type={type}\n className={cn(\n \"inline-flex items-center justify-center gap-2 rounded-md font-medium transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n VARIANTS[variant],\n SIZES[size],\n className,\n )}\n {...props}\n />\n ),\n)\nButton.displayName = \"Button\"\n","import { forwardRef, type InputHTMLAttributes, type SelectHTMLAttributes } from \"react\"\nimport { cn } from \"./cn.js\"\n\nconst FIELD =\n \"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm \" +\n \"transition-colors placeholder:text-muted-foreground focus-visible:outline-none \" +\n \"focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n\nexport const Input = forwardRef<HTMLInputElement, InputHTMLAttributes<HTMLInputElement>>(\n ({ className, ...props }, ref) => <input ref={ref} className={cn(FIELD, className)} {...props} />,\n)\nInput.displayName = \"Input\"\n\nexport interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {\n options?: { label: string; value: string }[]\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, options, children, ...props }, ref) => (\n <select ref={ref} className={cn(FIELD, \"pr-8\", className)} {...props}>\n {options\n ? options.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))\n : children}\n </select>\n ),\n)\nSelect.displayName = \"Select\"\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n label?: string\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, id, ...props }, ref) => (\n <label className=\"inline-flex items-center gap-2 text-sm\">\n <input\n ref={ref}\n id={id}\n type=\"checkbox\"\n className={cn(\"h-4 w-4 rounded border-input text-primary focus-visible:ring-2 focus-visible:ring-ring\", className)}\n {...props}\n />\n {label ? <span>{label}</span> : null}\n </label>\n ),\n)\nCheckbox.displayName = \"Checkbox\"\n","import type { HTMLAttributes } from \"react\"\nimport { cn } from \"./cn.js\"\n\ntype Div = HTMLAttributes<HTMLDivElement>\n\nexport function Card({ className, ...props }: Div) {\n return (\n <div\n className={cn(\"rounded-xl border border-border bg-card text-card-foreground shadow-sm\", className)}\n {...props}\n />\n )\n}\n\nexport function CardHeader({ className, ...props }: Div) {\n return <div className={cn(\"flex flex-col gap-1.5 p-6\", className)} {...props} />\n}\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return <h3 className={cn(\"text-base font-semibold leading-none tracking-tight\", className)} {...props} />\n}\n\nexport function CardDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n}\n\nexport function CardContent({ className, ...props }: Div) {\n return <div className={cn(\"p-6 pt-0\", className)} {...props} />\n}\n\nexport function CardFooter({ className, ...props }: Div) {\n return <div className={cn(\"flex items-center p-6 pt-0\", className)} {...props} />\n}\n","import { createContext, useContext, useState, type ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\ninterface TabsCtx {\n value: string\n setValue: (v: string) => void\n}\nconst Ctx = createContext<TabsCtx | null>(null)\n\nexport interface TabsProps {\n defaultValue: string\n value?: string\n onValueChange?: (v: string) => void\n className?: string\n children: ReactNode\n}\n\nexport function Tabs({ defaultValue, value, onValueChange, className, children }: TabsProps) {\n const [internal, setInternal] = useState(defaultValue)\n const current = value ?? internal\n const setValue = (v: string) => {\n if (value === undefined) setInternal(v)\n onValueChange?.(v)\n }\n return (\n <Ctx.Provider value={{ value: current, setValue }}>\n <div className={className}>{children}</div>\n </Ctx.Provider>\n )\n}\n\nexport function TabsList({ className, children }: { className?: string; children: ReactNode }) {\n return (\n <div className={cn(\"inline-flex h-9 items-center gap-1 rounded-lg bg-muted p-1 text-muted-foreground\", className)}>\n {children}\n </div>\n )\n}\n\nexport function TabsTrigger({ value, children }: { value: string; children: ReactNode }) {\n const ctx = useContext(Ctx)\n if (!ctx) throw new Error(\"TabsTrigger must be used within Tabs\")\n const active = ctx.value === value\n return (\n <button\n type=\"button\"\n onClick={() => ctx.setValue(value)}\n className={cn(\n \"inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium transition-all\",\n active ? \"bg-background text-foreground shadow-sm\" : \"hover:text-foreground\",\n )}\n >\n {children}\n </button>\n )\n}\n\nexport function TabsContent({ value, className, children }: { value: string; className?: string; children: ReactNode }) {\n const ctx = useContext(Ctx)\n if (!ctx) throw new Error(\"TabsContent must be used within Tabs\")\n if (ctx.value !== value) return null\n return <div className={cn(\"mt-4\", className)}>{children}</div>\n}\n","import { useMemo, useState, type HTMLAttributes, type ReactNode, type TdHTMLAttributes } from \"react\"\nimport { cn } from \"./cn.js\"\nimport { Button } from \"./button.js\"\n\n/* --- Low-level table primitives --- */\n\nexport function Table({ className, ...props }: HTMLAttributes<HTMLTableElement>) {\n return (\n <div className=\"w-full overflow-x-auto\">\n <table className={cn(\"w-full caption-bottom text-sm\", className)} {...props} />\n </div>\n )\n}\nexport function TableHeader(props: HTMLAttributes<HTMLTableSectionElement>) {\n return <thead className=\"[&_tr]:border-b border-border\" {...props} />\n}\nexport function TableBody(props: HTMLAttributes<HTMLTableSectionElement>) {\n return <tbody className=\"[&_tr:last-child]:border-0\" {...props} />\n}\nexport function TableRow({ className, ...props }: HTMLAttributes<HTMLTableRowElement>) {\n return <tr className={cn(\"border-b border-border transition-colors hover:bg-muted/50\", className)} {...props} />\n}\nexport function TableHead({ className, ...props }: HTMLAttributes<HTMLTableCellElement>) {\n return (\n <th\n className={cn(\"h-10 px-3 text-left align-middle text-xs font-medium text-muted-foreground\", className)}\n {...props}\n />\n )\n}\nexport function TableCell({ className, ...props }: TdHTMLAttributes<HTMLTableCellElement>) {\n return <td className={cn(\"px-3 py-2.5 align-middle\", className)} {...props} />\n}\n\n/* --- DataTable: sortable + paginated --- */\n\nexport interface Column<T> {\n key: string\n header: string\n render?: (row: T) => ReactNode\n sortable?: boolean\n align?: \"left\" | \"right\" | \"center\"\n accessor?: (row: T) => string | number\n}\n\nexport interface DataTableProps<T> {\n columns: Column<T>[]\n data: T[]\n pageSize?: number\n getRowId?: (row: T, index: number) => string\n empty?: ReactNode\n className?: string\n}\n\ntype SortState = { key: string; dir: \"asc\" | \"desc\" } | null\n\nexport function DataTable<T extends Record<string, unknown>>({\n columns,\n data,\n pageSize = 10,\n getRowId,\n empty,\n className,\n}: DataTableProps<T>) {\n const [sort, setSort] = useState<SortState>(null)\n const [page, setPage] = useState(0)\n\n const valueOf = (row: T, col: Column<T>): string | number => {\n if (col.accessor) return col.accessor(row)\n const v = row[col.key]\n return typeof v === \"number\" ? v : String(v ?? \"\")\n }\n\n const sorted = useMemo(() => {\n if (!sort) return data\n const col = columns.find((c) => c.key === sort.key)\n if (!col) return data\n const copy = [...data]\n // Rank numbers before strings so a column with mixed cell types still has a\n // total (transitive) ordering.\n const rank = (v: string | number) => (typeof v === \"number\" ? 0 : 1)\n copy.sort((a, b) => {\n const av = valueOf(a, col)\n const bv = valueOf(b, col)\n let cmp = rank(av) - rank(bv)\n if (cmp === 0) {\n cmp =\n typeof av === \"number\" && typeof bv === \"number\"\n ? av - bv\n : String(av).localeCompare(String(bv))\n }\n return sort.dir === \"asc\" ? cmp : -cmp\n })\n return copy\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, sort, columns])\n\n const pageCount = Math.max(1, Math.ceil(sorted.length / pageSize))\n const clampedPage = Math.min(page, pageCount - 1)\n const rows = sorted.slice(clampedPage * pageSize, clampedPage * pageSize + pageSize)\n\n const toggleSort = (key: string) => {\n setPage(0)\n setSort((prev) =>\n prev?.key === key ? (prev.dir === \"asc\" ? { key, dir: \"desc\" } : null) : { key, dir: \"asc\" },\n )\n }\n\n const alignClass = (a?: \"left\" | \"right\" | \"center\") =>\n a === \"right\" ? \"text-right\" : a === \"center\" ? \"text-center\" : \"text-left\"\n\n if (data.length === 0 && empty) {\n return <div className={cn(\"rounded-xl border border-border bg-card\", className)}>{empty}</div>\n }\n\n return (\n <div className={cn(\"rounded-xl border border-border bg-card\", className)}>\n <Table>\n <TableHeader>\n <TableRow>\n {columns.map((col) => (\n <TableHead key={col.key} className={alignClass(col.align)}>\n {col.sortable ? (\n <button\n type=\"button\"\n onClick={() => toggleSort(col.key)}\n className=\"inline-flex items-center gap-1 hover:text-foreground\"\n >\n {col.header}\n <span className=\"text-[10px]\">\n {sort?.key === col.key ? (sort.dir === \"asc\" ? \"▲\" : \"▼\") : \"↕\"}\n </span>\n </button>\n ) : (\n col.header\n )}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {rows.map((row, i) => (\n <TableRow key={getRowId ? getRowId(row, i) : i}>\n {columns.map((col) => (\n <TableCell key={col.key} className={alignClass(col.align)}>\n {col.render ? col.render(row) : String(row[col.key] ?? \"\")}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n {pageCount > 1 ? (\n <Pagination\n page={clampedPage}\n pageCount={pageCount}\n total={sorted.length}\n onPageChange={setPage}\n />\n ) : null}\n </div>\n )\n}\n\nexport interface PaginationProps {\n page: number\n pageCount: number\n total?: number\n onPageChange: (page: number) => void\n}\n\nexport function Pagination({ page, pageCount, total, onPageChange }: PaginationProps) {\n return (\n <div className=\"flex items-center justify-between gap-2 border-t border-border px-3 py-2 text-sm\">\n <span className=\"text-muted-foreground\">\n {total != null ? `${total} rows · ` : \"\"}Page {page + 1} of {pageCount}\n </span>\n <div className=\"flex gap-1\">\n <Button size=\"sm\" variant=\"outline\" disabled={page === 0} onClick={() => onPageChange(page - 1)}>\n Previous\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={page >= pageCount - 1}\n onClick={() => onPageChange(page + 1)}\n >\n Next\n </Button>\n </div>\n </div>\n )\n}\n","import type { ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\nimport { Card } from \"./card.js\"\n\nexport interface MetricCardProps {\n label: string\n value: ReactNode\n delta?: number\n deltaLabel?: string\n icon?: ReactNode\n className?: string\n}\n\n/** A KPI tile: label, big value, and an optional trend delta. */\nexport function MetricCard({ label, value, delta, deltaLabel, icon, className }: MetricCardProps) {\n const positive = (delta ?? 0) >= 0\n return (\n <Card className={cn(\"p-5\", className)}>\n <div className=\"flex items-start justify-between\">\n <p className=\"text-sm font-medium text-muted-foreground\">{label}</p>\n {icon ? <span className=\"text-muted-foreground\">{icon}</span> : null}\n </div>\n <p className=\"mt-2 text-3xl font-semibold tracking-tight\">{value}</p>\n {delta != null ? (\n <p className=\"mt-1 text-xs\">\n <span className={cn(\"font-medium\", positive ? \"text-[var(--chart-2)]\" : \"text-destructive\")}>\n {positive ? \"▲\" : \"▼\"} {Math.abs(delta)}%\n </span>{\" \"}\n <span className=\"text-muted-foreground\">{deltaLabel ?? \"vs. previous\"}</span>\n </p>\n ) : null}\n </Card>\n )\n}\n","import type { HTMLAttributes, ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\nexport interface FilterBarProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n}\n\n/** A responsive row of filter controls. */\nexport function FilterBar({ className, children, ...props }: FilterBarProps) {\n return (\n <div\n className={cn(\n \"flex flex-wrap items-end gap-3 rounded-xl border border-border bg-card p-4\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function FilterField({ label, children }: { label: string; children: ReactNode }) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-xs font-medium text-muted-foreground\">{label}</label>\n {children}\n </div>\n )\n}\n","import type { ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\nexport interface DashboardShellProps {\n title?: ReactNode\n description?: ReactNode\n actions?: ReactNode\n nav?: ReactNode\n children: ReactNode\n className?: string\n}\n\n/** Page-level layout: sticky header with title/actions, then content. */\nexport function DashboardShell({ title, description, actions, nav, children, className }: DashboardShellProps) {\n return (\n <div className={cn(\"min-h-screen bg-background text-foreground\", className)}>\n <header className=\"sticky top-0 z-10 border-b border-border bg-background/80 backdrop-blur\">\n <div className=\"mx-auto flex max-w-7xl flex-wrap items-center justify-between gap-3 px-6 py-4\">\n <div>\n {title ? <h1 className=\"text-xl font-semibold tracking-tight\">{title}</h1> : null}\n {description ? <p className=\"text-sm text-muted-foreground\">{description}</p> : null}\n </div>\n {actions ? <div className=\"flex items-center gap-2\">{actions}</div> : null}\n </div>\n {nav ? <nav className=\"mx-auto max-w-7xl px-6 pb-2\">{nav}</nav> : null}\n </header>\n <main className=\"mx-auto max-w-7xl px-6 py-6\">{children}</main>\n </div>\n )\n}\n","import type { ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\nexport function Loading({ label = \"Loading…\", className }: { label?: string; className?: string }) {\n return (\n <div className={cn(\"flex min-h-[30vh] items-center justify-center\", className)} role=\"status\" aria-live=\"polite\">\n <div className=\"flex items-center gap-3 text-sm text-muted-foreground\">\n <span className=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {label}\n </div>\n </div>\n )\n}\n\nexport function Empty({\n title = \"Nothing here yet\",\n description,\n icon,\n action,\n className,\n}: {\n title?: string\n description?: string\n icon?: ReactNode\n action?: ReactNode\n className?: string\n}) {\n return (\n <div className={cn(\"flex flex-col items-center justify-center gap-2 p-10 text-center\", className)}>\n {icon ? <div className=\"text-3xl text-muted-foreground\">{icon}</div> : null}\n <p className=\"font-medium\">{title}</p>\n {description ? <p className=\"max-w-sm text-sm text-muted-foreground\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n )\n}\n\nexport function ErrorState({\n title = \"Something went wrong\",\n message,\n action,\n className,\n}: {\n title?: string\n message?: ReactNode\n action?: ReactNode\n className?: string\n}) {\n return (\n <div\n className={cn(\"rounded-xl border border-destructive/30 bg-destructive/5 p-6\", className)}\n role=\"alert\"\n >\n <p className=\"font-semibold text-destructive\">{title}</p>\n {message ? <p className=\"mt-1 text-sm text-muted-foreground\">{message}</p> : null}\n {action ? <div className=\"mt-3\">{action}</div> : null}\n </div>\n )\n}\n","import { cn } from \"./cn.js\"\n\nconst FIELD =\n \"h-9 rounded-md border border-input bg-background px-3 text-sm shadow-sm \" +\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n\nexport interface DatePickerProps {\n value?: string\n onChange?: (value: string) => void\n min?: string\n max?: string\n className?: string\n id?: string\n}\n\n/** Single date field (native, no external dependency). */\nexport function DatePicker({ value, onChange, min, max, className, id }: DatePickerProps) {\n return (\n <input\n id={id}\n type=\"date\"\n value={value ?? \"\"}\n min={min}\n max={max}\n onChange={(e) => onChange?.(e.target.value)}\n className={cn(FIELD, className)}\n />\n )\n}\n\nexport interface DateRange {\n from: string\n to: string\n}\n\nexport interface DateRangePickerProps {\n value?: DateRange\n onChange?: (value: DateRange) => void\n className?: string\n}\n\n/** Two coupled date fields representing an inclusive range. */\nexport function DateRangePicker({ value, onChange, className }: DateRangePickerProps) {\n const from = value?.from ?? \"\"\n const to = value?.to ?? \"\"\n return (\n <div className={cn(\"inline-flex items-center gap-2\", className)}>\n <input\n type=\"date\"\n value={from}\n max={to || undefined}\n onChange={(e) => onChange?.({ from: e.target.value, to })}\n className={FIELD}\n aria-label=\"From date\"\n />\n <span className=\"text-muted-foreground\">–</span>\n <input\n type=\"date\"\n value={to}\n min={from || undefined}\n onChange={(e) => onChange?.({ from, to: e.target.value })}\n className={FIELD}\n aria-label=\"To date\"\n />\n </div>\n )\n}\n","import type { ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\nconst CHART_COLORS = [\n \"var(--chart-1)\",\n \"var(--chart-2)\",\n \"var(--chart-3)\",\n \"var(--chart-4)\",\n \"var(--chart-5)\",\n]\n\nexport interface Series {\n key: string\n label?: string\n color?: string\n}\n\nexport function ChartContainer({\n children,\n className,\n height = 260,\n}: {\n children: ReactNode\n className?: string\n height?: number\n}) {\n return (\n <div className={cn(\"w-full\", className)} style={{ height }}>\n {children}\n </div>\n )\n}\n\nexport function ChartLegend({ series }: { series: Series[] }) {\n return (\n <div className=\"flex flex-wrap items-center gap-4 pt-3 text-xs text-muted-foreground\">\n {series.map((s, i) => (\n <span key={s.key} className=\"inline-flex items-center gap-1.5\">\n <span\n className=\"h-2.5 w-2.5 rounded-[3px]\"\n style={{ backgroundColor: s.color ?? CHART_COLORS[i % CHART_COLORS.length] }}\n />\n {s.label ?? s.key}\n </span>\n ))}\n </div>\n )\n}\n\nexport function ChartTooltip({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <div\n className={cn(\n \"pointer-events-none rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs shadow-md\",\n className,\n )}\n >\n {children}\n </div>\n )\n}\n\ninterface BaseChartProps<T> {\n data: T[]\n categoryKey: string\n series: Series[]\n height?: number\n className?: string\n}\n\nconst PAD = { top: 8, right: 8, bottom: 22, left: 32 }\n\nfunction useGeometry<T extends Record<string, unknown>>(data: T[], series: Series[]) {\n let max = 0\n for (const row of data) {\n for (const s of series) {\n const v = Number(row[s.key] ?? 0)\n if (v > max) max = v\n }\n }\n return { max: max === 0 ? 1 : max }\n}\n\n/** Minimal dependency-free grouped bar chart. */\nexport function BarChart<T extends Record<string, unknown>>({\n data,\n categoryKey,\n series,\n height = 260,\n className,\n}: BaseChartProps<T>) {\n const width = 640\n const { max } = useGeometry(data, series)\n const chartW = width - PAD.left - PAD.right\n const chartH = height - PAD.top - PAD.bottom\n const groupW = chartW / Math.max(1, data.length)\n const barW = Math.max(2, (groupW * 0.7) / series.length)\n\n return (\n <div className={cn(\"w-full\", className)}>\n <svg viewBox={`0 0 ${width} ${height}`} className=\"w-full\" style={{ height }} role=\"img\">\n {[0, 0.25, 0.5, 0.75, 1].map((t) => {\n const y = PAD.top + chartH * (1 - t)\n return (\n <g key={t}>\n <line x1={PAD.left} x2={width - PAD.right} y1={y} y2={y} stroke=\"var(--border)\" strokeWidth={1} />\n <text x={PAD.left - 6} y={y + 3} textAnchor=\"end\" fontSize={9} fill=\"var(--muted-foreground)\">\n {Math.round(max * t)}\n </text>\n </g>\n )\n })}\n {data.map((row, i) => {\n const gx = PAD.left + groupW * i + (groupW - barW * series.length) / 2\n return (\n <g key={i}>\n {series.map((s, si) => {\n const v = Number(row[s.key] ?? 0)\n const h = (v / max) * chartH\n return (\n <rect\n key={s.key}\n x={gx + si * barW}\n y={PAD.top + chartH - h}\n width={barW - 1}\n height={Math.max(0, h)}\n rx={2}\n fill={s.color ?? CHART_COLORS[si % CHART_COLORS.length]}\n >\n <title>{`${String(row[categoryKey])} · ${s.label ?? s.key}: ${v}`}</title>\n </rect>\n )\n })}\n <text\n x={PAD.left + groupW * i + groupW / 2}\n y={height - 6}\n textAnchor=\"middle\"\n fontSize={9}\n fill=\"var(--muted-foreground)\"\n >\n {String(row[categoryKey])}\n </text>\n </g>\n )\n })}\n </svg>\n <ChartLegend series={series} />\n </div>\n )\n}\n\n/** Minimal dependency-free multi-series line chart. */\nexport function LineChart<T extends Record<string, unknown>>({\n data,\n categoryKey,\n series,\n height = 260,\n className,\n}: BaseChartProps<T>) {\n const width = 640\n const { max } = useGeometry(data, series)\n const chartW = width - PAD.left - PAD.right\n const chartH = height - PAD.top - PAD.bottom\n const stepX = chartW / Math.max(1, data.length - 1)\n const pointFor = (v: number, i: number) => ({\n x: PAD.left + stepX * i,\n y: PAD.top + chartH - (v / max) * chartH,\n })\n\n return (\n <div className={cn(\"w-full\", className)}>\n <svg viewBox={`0 0 ${width} ${height}`} className=\"w-full\" style={{ height }} role=\"img\">\n {[0, 0.5, 1].map((t) => {\n const y = PAD.top + chartH * (1 - t)\n return (\n <line key={t} x1={PAD.left} x2={width - PAD.right} y1={y} y2={y} stroke=\"var(--border)\" strokeWidth={1} />\n )\n })}\n {series.map((s, si) => {\n const pts = data.map((row, i) => pointFor(Number(row[s.key] ?? 0), i))\n const d = pts.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`).join(\" \")\n const color = s.color ?? CHART_COLORS[si % CHART_COLORS.length]\n return (\n <g key={s.key}>\n <path d={d} fill=\"none\" stroke={color} strokeWidth={2} />\n {pts.map((p, i) => (\n <circle key={i} cx={p.x} cy={p.y} r={2.5} fill={color} />\n ))}\n </g>\n )\n })}\n {data.map((row, i) => (\n <text\n key={i}\n x={PAD.left + stepX * i}\n y={height - 6}\n textAnchor=\"middle\"\n fontSize={9}\n fill=\"var(--muted-foreground)\"\n >\n {String(row[categoryKey])}\n </text>\n ))}\n </svg>\n <ChartLegend series={series} />\n </div>\n )\n}\n","import { useEffect, type ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\nexport interface DialogProps {\n open: boolean\n onClose: () => void\n title?: ReactNode\n description?: ReactNode\n children?: ReactNode\n footer?: ReactNode\n className?: string\n}\n\n/** A lightweight modal dialog (no external UI dependency). */\nexport function Dialog({ open, onClose, title, description, children, footer, className }: DialogProps) {\n useEffect(() => {\n if (!open) return\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose()\n }\n document.addEventListener(\"keydown\", onKey)\n return () => document.removeEventListener(\"keydown\", onKey)\n }, [open, onClose])\n\n if (!open) return null\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div className=\"absolute inset-0 bg-black/50\" onClick={onClose} aria-hidden />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cn(\n \"relative z-10 w-full max-w-lg rounded-xl border border-border bg-card p-6 shadow-lg\",\n className,\n )}\n >\n {title ? <h2 className=\"text-lg font-semibold\">{title}</h2> : null}\n {description ? <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p> : null}\n {children ? <div className=\"mt-4\">{children}</div> : null}\n {footer ? <div className=\"mt-6 flex justify-end gap-2\">{footer}</div> : null}\n </div>\n </div>\n )\n}\n","import { useEffect, useRef, useState, type ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\nexport interface DropdownItem {\n label: ReactNode\n onSelect?: () => void\n disabled?: boolean\n}\n\nexport interface DropdownMenuProps {\n trigger: ReactNode\n items: DropdownItem[]\n align?: \"start\" | \"end\"\n className?: string\n}\n\n/** A simple click-to-open dropdown menu with outside-click dismissal. */\nexport function DropdownMenu({ trigger, items, align = \"start\", className }: DropdownMenuProps) {\n const [open, setOpen] = useState(false)\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!open) return\n const onDoc = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false)\n }\n document.addEventListener(\"mousedown\", onDoc)\n return () => document.removeEventListener(\"mousedown\", onDoc)\n }, [open])\n\n return (\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n <span onClick={() => setOpen((v) => !v)}>{trigger}</span>\n {open ? (\n <div\n role=\"menu\"\n className={cn(\n \"absolute z-50 mt-1 min-w-[10rem] rounded-md border border-border bg-popover p-1 shadow-md\",\n align === \"end\" ? \"right-0\" : \"left-0\",\n )}\n >\n {items.map((item, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"menuitem\"\n disabled={item.disabled}\n onClick={() => {\n item.onSelect?.()\n setOpen(false)\n }}\n className={cn(\n \"flex w-full items-center rounded-sm px-2 py-1.5 text-left text-sm\",\n \"hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\",\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/ui/accordion.tsx","../../src/ui/alert.tsx","../../src/ui/breadcrumb.tsx","../../src/ui/card.tsx","../../src/ui/label.tsx","../../src/ui/progress.tsx","../../src/ui/scroll-area.tsx","../../src/ui/slider.tsx","../../src/ui/spinner.tsx","../../src/ui/switch.tsx","../../src/ui/tabs.tsx","../../src/ui/states.tsx"],"names":["AccordionPrimitive","jsx","jsxs","ProgressPrimitive","ScrollAreaPrimitive","SliderPrimitive","SwitchPrimitive","TabsPrimitive","cva"],"mappings":"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","file":"index.js","sourcesContent":["import { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"./cn.js\"\nimport { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(\"flex w-full flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"not-last:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n \"group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon data-slot=\"accordion-trigger-icon\" className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\" />\n <ChevronUpIcon data-slot=\"accordion-trigger-icon\" className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n \"h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"./cn.js\"\n\nconst alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute top-2 right-2\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n","import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"./cn.js\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n aria-label=\"breadcrumb\"\n data-slot=\"breadcrumb\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"transition-colors hover:text-foreground\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n <ChevronRightIcon className=\"cn-rtl-flip\" />\n )}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"flex size-5 items-center justify-center [&>svg]:size-4\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"./cn.js\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n \"cn-font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-(--card-spacing)\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"./cn.js\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import { Progress as ProgressPrimitive } from \"@base-ui/react/progress\"\n\nimport { cn } from \"./cn.js\"\n\nfunction Progress({\n className,\n children,\n value,\n ...props\n}: ProgressPrimitive.Root.Props) {\n return (\n <ProgressPrimitive.Root\n value={value}\n data-slot=\"progress\"\n className={cn(\"flex flex-wrap gap-3\", className)}\n {...props}\n >\n {children}\n <ProgressTrack>\n <ProgressIndicator />\n </ProgressTrack>\n </ProgressPrimitive.Root>\n )\n}\n\nfunction ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {\n return (\n <ProgressPrimitive.Track\n className={cn(\n \"relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted\",\n className\n )}\n data-slot=\"progress-track\"\n {...props}\n />\n )\n}\n\nfunction ProgressIndicator({\n className,\n ...props\n}: ProgressPrimitive.Indicator.Props) {\n return (\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className={cn(\"h-full bg-primary transition-all\", className)}\n {...props}\n />\n )\n}\n\nfunction ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {\n return (\n <ProgressPrimitive.Label\n className={cn(\"text-sm font-medium\", className)}\n data-slot=\"progress-label\"\n {...props}\n />\n )\n}\n\nfunction ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {\n return (\n <ProgressPrimitive.Value\n className={cn(\n \"ml-auto text-sm text-muted-foreground tabular-nums\",\n className\n )}\n data-slot=\"progress-value\"\n {...props}\n />\n )\n}\n\nexport {\n Progress,\n ProgressTrack,\n ProgressIndicator,\n ProgressLabel,\n ProgressValue,\n}\n","import * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"@base-ui/react/scroll-area\"\n\nimport { cn } from \"./cn.js\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-full bg-border\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","import { Slider as SliderPrimitive } from \"@base-ui/react/slider\"\n\nimport { cn } from \"./cn.js\"\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: SliderPrimitive.Root.Props) {\n const _values = Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max]\n\n return (\n <SliderPrimitive.Root\n className={cn(\"data-horizontal:w-full data-vertical:h-full\", className)}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n thumbAlignment=\"edge\"\n {...props}\n >\n <SliderPrimitive.Control className=\"relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col\">\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className=\"relative grow overflow-hidden rounded-full bg-muted select-none data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1\"\n >\n <SliderPrimitive.Indicator\n data-slot=\"slider-range\"\n className=\"bg-primary select-none data-horizontal:h-full data-vertical:w-full\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"relative block size-3 shrink-0 rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n )\n}\n\nexport { Slider }\n","import { cn } from \"./cn.js\"\nimport { Loader2Icon } from \"lucide-react\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon data-slot=\"spinner\" role=\"status\" aria-label=\"Loading\" className={cn(\"size-4 animate-spin\", className)} {...props} />\n )\n}\n\nexport { Spinner }\n","import { Switch as SwitchPrimitive } from \"@base-ui/react/switch\"\n\nimport { cn } from \"./cn.js\"\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: SwitchPrimitive.Root.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"./cn.js\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"group/tabs flex gap-2 data-horizontal:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 text-sm outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n","import type { ReactNode } from \"react\"\nimport { cn } from \"./cn.js\"\n\nexport function Loading({ label = \"Loading…\", className }: { label?: string; className?: string }) {\n return (\n <div className={cn(\"flex min-h-[30vh] items-center justify-center\", className)} role=\"status\" aria-live=\"polite\">\n <div className=\"flex items-center gap-3 text-sm text-muted-foreground\">\n <span className=\"h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n {label}\n </div>\n </div>\n )\n}\n\nexport function Empty({\n title = \"Nothing here yet\",\n description,\n icon,\n action,\n className,\n}: {\n title?: string\n description?: string\n icon?: ReactNode\n action?: ReactNode\n className?: string\n}) {\n return (\n <div className={cn(\"flex flex-col items-center justify-center gap-2 p-10 text-center\", className)}>\n {icon ? <div className=\"text-3xl text-muted-foreground\">{icon}</div> : null}\n <p className=\"font-medium\">{title}</p>\n {description ? <p className=\"max-w-sm text-sm text-muted-foreground\">{description}</p> : null}\n {action ? <div className=\"mt-2\">{action}</div> : null}\n </div>\n )\n}\n\nexport function ErrorState({\n title = \"Something went wrong\",\n message,\n action,\n className,\n}: {\n title?: string\n message?: ReactNode\n action?: ReactNode\n className?: string\n}) {\n return (\n <div\n className={cn(\"rounded-xl border border-destructive/30 bg-destructive/5 p-6\", className)}\n role=\"alert\"\n >\n <p className=\"font-semibold text-destructive\">{title}</p>\n {message ? <p className=\"mt-1 text-sm text-muted-foreground\">{message}</p> : null}\n {action ? <div className=\"mt-3\">{action}</div> : null}\n </div>\n )\n}\n"]}
@@ -1,5 +1,5 @@
1
- export { vantagePlugin } from '../chunk-ZGDU5YLH.js';
2
- import '../chunk-73J5ZD4C.js';
1
+ export { vantagePlugin } from '../chunk-PRFBSQA4.js';
2
+ import '../chunk-YLAB6UQS.js';
3
3
  import '../chunk-B7LLBNLV.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,89 @@
1
+ # Agents and Skills
2
+
3
+ > The Claude Code agent skills bundled with Vantage. Place them into your app's .claude/skills/ with vantage add skill to teach agents step-by-step workflows.
4
+
5
+ Vantage bundles **Claude Code agent skills**. A skill packages a step-by-step workflow so an
6
+ agent can pull it in exactly when it's needed. Unlike static reference material (these docs), a
7
+ skill hands the agent a **reproducible procedure**.
8
+
9
+ ## What's bundled
10
+
11
+ All of these target an agent that is **building a Vantage app**.
12
+
13
+ | skill | Workflow it covers |
14
+ |---|---|
15
+ | `vantage-app` | Creating an app, and growing a single-file `index.tsx` SPA into a fullstack app with `server/api`, nested layouts, dynamic routes, and 404/error pages |
16
+ | `vantage-add-feature` | Adding a page / API / UI / block (`vantage add` through to `check` / `routes`) |
17
+ | `vantage-pitfalls` | A pitfalls reference (Base UI ≠ Radix, `SelectValue` behavior, never importing `server/` from the client, and more) |
18
+
19
+ ## Placing them
20
+
21
+ The skills ship inside the `@squadbase/vantage` package. `vantage add skill` copies them into
22
+ your app's `.claude/skills/`.
23
+
24
+ ```bash
25
+ vantage add skill --all # place every bundled skill
26
+ vantage add skill vantage-app # place a single skill by name
27
+ vantage add skill vantage-app --force # overwrite an existing copy
28
+ ```
29
+
30
+ Resulting layout:
31
+
32
+ ```text
33
+ your-app/
34
+ ├── index.tsx
35
+ ├── package.json
36
+ └── .claude/
37
+ └── skills/
38
+ ├── vantage-app/SKILL.md
39
+ ├── vantage-add-feature/SKILL.md
40
+ └── vantage-pitfalls/SKILL.md
41
+ ```
42
+
43
+ Claude Code discovers `.claude/skills/` automatically. The agent loads and follows the matching
44
+ skill based on the task at hand.
45
+
46
+ > [!NOTE]
47
+ > `.claude/` is tooling configuration, not app code. Vantage's static `check` diagnostics do not
48
+ > scan this directory, so placing skills there has no effect on your build or checks.
49
+
50
+ ## Distribution and updates
51
+
52
+ - **The source of truth lives in the package.** Skills are distributed and updated together with
53
+ the framework version, so bumping `@squadbase/vantage` gets you the latest procedures. To refresh
54
+ copies you've already placed, run `vantage add skill --all --force`.
55
+ - **The Squadbase template ships them pre-placed.** Apps created from the template already contain
56
+ `.claude/skills/`. For a hand-made app, add them with `vantage add skill`.
57
+
58
+ ## `AGENTS.md` (the app map)
59
+
60
+ If a skill is a procedure, `AGENTS.md` is **the map an agent reads first**. It gathers Vantage's
61
+ invariants, the import-subpath map, routing conventions, and the minimal data-fetching / API / env
62
+ recipes onto a single page — enough to **build a minimal app from that page alone**. Deeper
63
+ procedures are delegated to the skills above by name, so nothing is duplicated.
64
+
65
+ Like the skills, its **source of truth lives in the package**, and `vantage add agents` places it
66
+ into the app root.
67
+
68
+ ```bash
69
+ vantage add agents # place AGENTS.md into the app root
70
+ vantage add agents --force # overwrite an existing copy
71
+ ```
72
+
73
+ A placed `AGENTS.md` is kept in sync by `vantage upgrade` (it rewrites only when the content
74
+ differs, and never creates the file in an app that hasn't opted in). When a framework convention
75
+ changes, a **single source-of-truth edit** reaches apps through `upgrade`. The Squadbase template
76
+ ships it pre-placed.
77
+
78
+ ## Separation of concerns
79
+
80
+ Skills own **step-by-step workflows** only. They stay distinct from — and avoid duplicating —
81
+ the following:
82
+
83
+ - **These docs** (spec and reference) — a static explanation of what exists and how it behaves.
84
+ An agent without a browser reads the same content through [`vantage docs`](cli-reference)
85
+ (`vantage docs button` for the prop table, `vantage docs --json` for machine-readable output,
86
+ `vantage search <what you want>` when the name is unknown).
87
+ - **`AGENTS.md`** (a static map) — where things live and how the project is laid out; placed with `vantage add agents`.
88
+ - **Each other** — shared material like pitfalls is not copied into every skill; skills
89
+ **cross-reference by name** instead (e.g. `vantage-app`'s procedure points at `vantage-pitfalls`).
@@ -0,0 +1,84 @@
1
+ # API & server
2
+
3
+ > Adding server/ enables an API. Conventions for ApiContext, HttpError, and HTTP methods.
4
+
5
+ Vantage's **server is optional**. Add a `server/` directory to your project and the API turns on,
6
+ switching the build to `fullstack` mode. Without it, your app is client-only (a SPA) and `/api/*` is
7
+ just a client route (matching production).
8
+
9
+ ## API route conventions
10
+
11
+ APIs are derived from `server/api/**` using the same filename conventions as pages.
12
+
13
+ | File | Endpoint |
14
+ |---|---|
15
+ | `server/api/customers.ts` | `/api/customers` |
16
+ | `server/api/customers/[id].ts` | `/api/customers/:id` |
17
+ | `server/api/monthly-analysis.ts` | `/api/monthly-analysis` |
18
+
19
+ Each file exports functions named after HTTP methods. Allowed methods are
20
+ `GET` / `POST` / `PUT` / `PATCH` / `DELETE` / `OPTIONS`.
21
+
22
+ ```ts
23
+ // server/api/customers/[id].ts → /api/customers/:id
24
+ import type { ApiContext } from "@squadbase/vantage/server";
25
+ import { HttpError } from "@squadbase/vantage/server";
26
+
27
+ export async function GET({ params, env }: ApiContext) {
28
+ const customer = await findCustomer(params.id!);
29
+ if (!customer) throw new HttpError(404, "Customer not found");
30
+ return Response.json(customer);
31
+ }
32
+ ```
33
+
34
+ > [!NOTE]
35
+ > An API file that exports no valid HTTP method is flagged by `vantage check` with an
36
+ > `INVALID_API_EXPORT` error (with a hint if you wrote the method in lowercase).
37
+
38
+ ## ApiContext
39
+
40
+ Handlers speak in web-standard types. The `ApiContext` argument carries:
41
+
42
+ | Property | Meaning |
43
+ |---|---|
44
+ | `request` | The standard `Request` |
45
+ | `params` | Dynamic params (e.g. `params.id`) |
46
+ | `env` | Server-side environment variables and secrets |
47
+ | `waitUntil` | Fire-and-forget background work after the response |
48
+
49
+ Return a standard `Response`. Use `Response.json(...)` or the `json()` helper.
50
+
51
+ ```ts
52
+ import { json } from "@squadbase/vantage/server";
53
+
54
+ export async function GET() {
55
+ return json({ ok: true });
56
+ }
57
+ ```
58
+
59
+ ## Handling errors
60
+
61
+ To surface an error to the client, throw `HttpError(status, message)` — its status and message reach
62
+ the client verbatim.
63
+
64
+ ```ts
65
+ if (!authorized) throw new HttpError(403, "Forbidden");
66
+ ```
67
+
68
+ Any other thrown error is logged on the server and returned to the client as a **generic 500** (no
69
+ internals leak).
70
+
71
+ ## dev and prod behave identically
72
+
73
+ Request dispatch (route matching, 405 handling, request-id) goes through **one shared core** in both
74
+ dev and prod. What you see in development reproduces in production.
75
+
76
+ ## Secrets stay on the server
77
+
78
+ `ApiContext.env` is readable only on the server. It **never reaches the client**. Read API keys, DB
79
+ credentials, and the like from here. For values you *do* want on the client, see
80
+ [Environment variables](environment-variables).
81
+
82
+ ## What to read next
83
+
84
+ - [Environment variables](environment-variables) — the secret vs. public boundary