@repraze/kernelkit 0.1.0-alpha.3 → 0.1.0-alpha.5
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/README.md +17 -0
- package/dist/components/alert-dialog.d.ts.map +1 -1
- package/dist/components/alert-dialog.js +4 -1
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.js +3 -3
- package/dist/components/alert.js.map +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/badge.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.d.ts +8 -1
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +33 -11
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/callout.js +2 -2
- package/dist/components/callout.js.map +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/date-picker.d.ts +11 -5
- package/dist/components/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker.js +29 -7
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/description-list.d.ts +26 -0
- package/dist/components/description-list.d.ts.map +1 -0
- package/dist/components/description-list.js +59 -0
- package/dist/components/description-list.js.map +1 -0
- package/dist/components/locale.d.ts +19 -0
- package/dist/components/locale.d.ts.map +1 -0
- package/dist/components/locale.js +54 -0
- package/dist/components/locale.js.map +1 -0
- package/dist/components/popover.d.ts +1 -1
- package/dist/components/popover.d.ts.map +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +19 -6
- package/dist/components/progress.d.ts.map +1 -1
- package/dist/components/progress.js +18 -3
- package/dist/components/progress.js.map +1 -1
- package/dist/components/search-dialog.d.ts +6 -1
- package/dist/components/search-dialog.d.ts.map +1 -1
- package/dist/components/search-dialog.js +13 -1
- package/dist/components/search-dialog.js.map +1 -1
- package/dist/components/search-trigger.d.ts +4 -1
- package/dist/components/search-trigger.d.ts.map +1 -1
- package/dist/components/search-trigger.js +5 -2
- package/dist/components/search-trigger.js.map +1 -1
- package/dist/components/shimmer.d.ts +13 -0
- package/dist/components/shimmer.d.ts.map +1 -0
- package/dist/components/shimmer.js +21 -0
- package/dist/components/shimmer.js.map +1 -0
- package/dist/components/spinner.d.ts +28 -6
- package/dist/components/spinner.d.ts.map +1 -1
- package/dist/components/spinner.js +66 -14
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stepper.d.ts +64 -0
- package/dist/components/stepper.d.ts.map +1 -0
- package/dist/components/stepper.js +167 -0
- package/dist/components/stepper.js.map +1 -0
- package/dist/components/tag-input.d.ts +47 -0
- package/dist/components/tag-input.d.ts.map +1 -0
- package/dist/components/tag-input.js +211 -0
- package/dist/components/tag-input.js.map +1 -0
- package/dist/components/time-input.d.ts +75 -0
- package/dist/components/time-input.d.ts.map +1 -0
- package/dist/components/time-input.js +341 -0
- package/dist/components/time-input.js.map +1 -0
- package/dist/components/time-select.d.ts +49 -0
- package/dist/components/time-select.d.ts.map +1 -0
- package/dist/components/time-select.js +178 -0
- package/dist/components/time-select.js.map +1 -0
- package/dist/components/timeline.d.ts +41 -0
- package/dist/components/timeline.d.ts.map +1 -0
- package/dist/components/timeline.js +83 -0
- package/dist/components/timeline.js.map +1 -0
- package/dist/components/toast.d.ts.map +1 -1
- package/dist/components/toast.js +4 -2
- package/dist/components/toast.js.map +1 -1
- package/dist/components/tree.d.ts +87 -0
- package/dist/components/tree.d.ts.map +1 -0
- package/dist/components/tree.js +516 -0
- package/dist/components/tree.js.map +1 -0
- package/dist/docs/doc-kit.d.ts +72 -0
- package/dist/docs/doc-kit.d.ts.map +1 -0
- package/dist/docs/doc-kit.js +45 -0
- package/dist/docs/doc-kit.js.map +1 -0
- package/dist/docs/doc-page.d.ts +27 -0
- package/dist/docs/doc-page.d.ts.map +1 -0
- package/dist/docs/doc-page.js +33 -0
- package/dist/docs/doc-page.js.map +1 -0
- package/dist/docs/docs-index.d.ts +60 -0
- package/dist/docs/docs-index.d.ts.map +1 -0
- package/dist/docs/docs-index.js +45 -0
- package/dist/docs/docs-index.js.map +1 -0
- package/dist/docs/docs-nav.d.ts +13 -0
- package/dist/docs/docs-nav.d.ts.map +1 -0
- package/dist/docs/docs-nav.js +8 -0
- package/dist/docs/docs-nav.js.map +1 -0
- package/dist/docs/docs-search.d.ts +19 -0
- package/dist/docs/docs-search.d.ts.map +1 -0
- package/dist/docs/docs-search.js +33 -0
- package/dist/docs/docs-search.js.map +1 -0
- package/dist/docs/index.d.ts +7 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +7 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/docs/review-matrix.d.ts +25 -0
- package/dist/docs/review-matrix.d.ts.map +1 -0
- package/dist/docs/review-matrix.js +31 -0
- package/dist/docs/review-matrix.js.map +1 -0
- package/dist/hooks/use-theme-palette.d.ts +8 -0
- package/dist/hooks/use-theme-palette.d.ts.map +1 -0
- package/dist/hooks/use-theme-palette.js +24 -0
- package/dist/hooks/use-theme-palette.js.map +1 -0
- package/dist/hooks/use-time-format.d.ts +23 -0
- package/dist/hooks/use-time-format.d.ts.map +1 -0
- package/dist/hooks/use-time-format.js +52 -0
- package/dist/hooks/use-time-format.js.map +1 -0
- package/dist/lib/color.d.ts +5 -1
- package/dist/lib/color.d.ts.map +1 -1
- package/dist/lib/color.js +14 -2
- package/dist/lib/color.js.map +1 -1
- package/dist/lib/recipes.d.ts +5 -4
- package/dist/lib/recipes.d.ts.map +1 -1
- package/dist/lib/recipes.js +7 -5
- package/dist/lib/recipes.js.map +1 -1
- package/dist/provider/theme-provider.d.ts +10 -1
- package/dist/provider/theme-provider.d.ts.map +1 -1
- package/dist/provider/theme-provider.js +23 -8
- package/dist/provider/theme-provider.js.map +1 -1
- package/dist/site/brand.d.ts +20 -0
- package/dist/site/brand.d.ts.map +1 -0
- package/dist/site/brand.js +17 -0
- package/dist/site/brand.js.map +1 -0
- package/dist/site/github-icon.d.ts +4 -0
- package/dist/site/github-icon.d.ts.map +1 -0
- package/dist/site/github-icon.js +6 -0
- package/dist/site/github-icon.js.map +1 -0
- package/dist/site/index.d.ts +6 -0
- package/dist/site/index.d.ts.map +1 -0
- package/dist/site/index.js +6 -0
- package/dist/site/index.js.map +1 -0
- package/dist/site/suite-footer.d.ts +24 -0
- package/dist/site/suite-footer.d.ts.map +1 -0
- package/dist/site/suite-footer.js +19 -0
- package/dist/site/suite-footer.js.map +1 -0
- package/dist/site/suite-header.d.ts +40 -0
- package/dist/site/suite-header.d.ts.map +1 -0
- package/dist/site/suite-header.js +19 -0
- package/dist/site/suite-header.js.map +1 -0
- package/dist/site/use-page-title.d.ts +3 -0
- package/dist/site/use-page-title.d.ts.map +1 -0
- package/dist/site/use-page-title.js +8 -0
- package/dist/site/use-page-title.js.map +1 -0
- package/dist/vite/index.d.ts +65 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +242 -0
- package/dist/vite/index.js.map +1 -0
- package/package.json +39 -3
- package/src/components/alert-dialog.tsx +4 -1
- package/src/components/alert.tsx +3 -3
- package/src/components/badge.tsx +1 -1
- package/src/components/button.tsx +1 -1
- package/src/components/calendar.tsx +48 -4
- package/src/components/callout.tsx +2 -2
- package/src/components/combobox.tsx +1 -1
- package/src/components/date-picker.tsx +43 -9
- package/src/components/description-list.tsx +107 -0
- package/src/components/locale.tsx +67 -0
- package/src/components/popover.tsx +3 -1
- package/src/components/progress.tsx +70 -4
- package/src/components/search-dialog.tsx +14 -1
- package/src/components/search-trigger.tsx +8 -2
- package/src/components/shimmer.tsx +36 -0
- package/src/components/spinner.tsx +126 -23
- package/src/components/stepper.tsx +346 -0
- package/src/components/tag-input.tsx +345 -0
- package/src/components/time-input.tsx +578 -0
- package/src/components/time-select.tsx +291 -0
- package/src/components/timeline.tsx +190 -0
- package/src/components/toast.tsx +4 -4
- package/src/components/tree.tsx +832 -0
- package/src/docs/doc-kit.tsx +176 -0
- package/src/docs/doc-page.tsx +126 -0
- package/src/docs/docs-index.ts +108 -0
- package/src/docs/docs-nav.tsx +47 -0
- package/src/docs/docs-search.tsx +88 -0
- package/src/docs/index.ts +6 -0
- package/src/docs/review-matrix.tsx +67 -0
- package/src/hooks/use-theme-palette.ts +25 -0
- package/src/hooks/use-time-format.ts +72 -0
- package/src/lib/color.ts +19 -2
- package/src/lib/recipes.ts +7 -5
- package/src/provider/theme-provider.tsx +34 -9
- package/src/site/brand.tsx +41 -0
- package/src/site/github-icon.tsx +10 -0
- package/src/site/index.ts +5 -0
- package/src/site/suite-footer.tsx +68 -0
- package/src/site/suite-header.tsx +114 -0
- package/src/site/use-page-title.ts +8 -0
- package/src/styles/kernelkit.css +58 -0
- package/src/styles/site.css +15 -0
- package/src/vite/client.d.ts +11 -0
- package/src/vite/index.ts +298 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { CodeBlock, CodeBlockActions, CodeBlockContent, CodeBlockCopyButton, CodeBlockHeader, CodeBlockTitle, } from "@repraze/kernelkit/components/code-block";
|
|
4
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@repraze/kernelkit/components/table";
|
|
5
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@repraze/kernelkit/components/tabs";
|
|
6
|
+
import { useHighlightedCode } from "@repraze/kernelkit/hooks/use-highlighted-code";
|
|
7
|
+
import { cn } from "cn";
|
|
8
|
+
/**
|
|
9
|
+
* Declare a docs page. The site narrows the categories once:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* export const CATEGORIES = ["Foundations", "Components"] as const;
|
|
13
|
+
* export const defineDoc = (doc: DocDef<(typeof CATEGORIES)[number]>) => doc;
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export function defineDoc(doc) {
|
|
17
|
+
return doc;
|
|
18
|
+
}
|
|
19
|
+
export function slugify(text) {
|
|
20
|
+
return text
|
|
21
|
+
.toLowerCase()
|
|
22
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
23
|
+
.replace(/^-|-$/g, "");
|
|
24
|
+
}
|
|
25
|
+
/** A highlighted, copyable code sample (the kit's CodeBlock), titled with its language by default. */
|
|
26
|
+
export function Code({ code, language = "tsx", title, className, }) {
|
|
27
|
+
const lines = useHighlightedCode(code, language);
|
|
28
|
+
return (_jsxs(CodeBlock, { className: className, children: [_jsxs(CodeBlockHeader, { children: [_jsx(CodeBlockTitle, { children: title ?? language }), _jsx(CodeBlockActions, { children: _jsx(CodeBlockCopyButton, { value: code }) })] }), _jsx(CodeBlockContent, { className: "max-h-[480px] text-[13px]", children: lines.map((line, i) => (_jsx("span", { className: "block min-h-lh", children: line }, i))) })] }));
|
|
29
|
+
}
|
|
30
|
+
const layoutClass = {
|
|
31
|
+
center: "flex min-h-56 items-center justify-center p-8",
|
|
32
|
+
start: "flex min-h-56 items-start justify-start p-8",
|
|
33
|
+
full: "overflow-hidden",
|
|
34
|
+
tall: "flex min-h-[28rem] items-center justify-center p-8",
|
|
35
|
+
};
|
|
36
|
+
/** One demo: its title and description, then Preview and Code tabs. The section's id is the slugified title. */
|
|
37
|
+
export function Demo({ demo, code }) {
|
|
38
|
+
const Component = demo.component;
|
|
39
|
+
return (_jsxs("section", { className: "flex scroll-mt-24 flex-col gap-3", id: slugify(demo.title), children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("h3", { className: "font-mono text-sm font-medium", children: demo.title }), demo.description ? _jsx("p", { className: "text-sm text-muted-foreground", children: demo.description }) : null] }), _jsxs(Tabs, { defaultValue: "preview", children: [_jsxs(TabsList, { children: [_jsx(TabsTrigger, { value: "preview", children: "Preview" }), _jsx(TabsTrigger, { value: "code", children: "Code" })] }), _jsx(TabsContent, { value: "preview", children: _jsx("div", { "data-slot": "demo-frame", className: cn("rounded-xl border bg-card", layoutClass[demo.layout ?? "center"]), children: _jsx(Component, {}) }) }), _jsx(TabsContent, { value: "code", children: _jsx(Code, { code: code }) })] })] }));
|
|
40
|
+
}
|
|
41
|
+
/** A component's props: name, type, default and description. */
|
|
42
|
+
export function PropsTable({ component, rows }) {
|
|
43
|
+
return (_jsxs("section", { className: "flex flex-col gap-3", children: [_jsx("h3", { className: "font-mono text-sm font-medium", children: component }), _jsx("div", { className: "overflow-hidden rounded-xl border bg-card", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Prop" }), _jsx(TableHead, { children: "Type" }), _jsx(TableHead, { children: "Default" }), _jsx(TableHead, { children: "Description" })] }) }), _jsx(TableBody, { children: rows.map((row) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-mono text-xs text-primary-text", children: row.name }), _jsx(TableCell, { className: "font-mono text-xs whitespace-normal", children: row.type }), _jsx(TableCell, { className: "font-mono text-xs text-muted-foreground", children: row.default ?? "-" }), _jsx(TableCell, { className: "text-sm whitespace-normal text-muted-foreground", children: row.description })] }, row.name))) })] }) })] }));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=doc-kit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-kit.js","sourceRoot":"","sources":["../../src/docs/doc-kit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import { type DocEntry } from "./doc-kit";
|
|
3
|
+
import type { DocsIndex } from "./docs-index";
|
|
4
|
+
/** A router link to a docs page, used as a `render` element: `(slug) => <Link to="/docs/$slug" params={{slug}} />`. */
|
|
5
|
+
export type DocLinkFor = (slug: string) => React.ReactElement;
|
|
6
|
+
/** The table of contents of a page: its demos, the notes' sections, then the API. */
|
|
7
|
+
export declare function docToc(doc: DocEntry): {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
}[];
|
|
11
|
+
export interface DocPageProps<Category extends string = string> {
|
|
12
|
+
/** The loaded page (`index.loadDoc(slug)`, usually from the route's loader). */
|
|
13
|
+
doc: DocEntry<Category>;
|
|
14
|
+
index: DocsIndex<Category>;
|
|
15
|
+
linkFor: DocLinkFor;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A docs page in the suite's layout (GUIDELINES §7b): PageHeader (category, source badge, title,
|
|
19
|
+
* description), the demos, the notes, the API tables and the Pager in SiteMain; the Toc in SiteAside.
|
|
20
|
+
*/
|
|
21
|
+
export declare function DocPage<Category extends string>({ doc, index, linkFor }: DocPageProps<Category>): React.JSX.Element;
|
|
22
|
+
/** The suite's docs layout: SiteLayout with the docs nav in a sticky SiteSidebar, then the page (which adds its Toc). */
|
|
23
|
+
export declare function DocsLayout({ nav, children }: {
|
|
24
|
+
nav: React.ReactNode;
|
|
25
|
+
children: React.ReactNode;
|
|
26
|
+
}): React.JSX.Element;
|
|
27
|
+
//# sourceMappingURL=doc-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-page.d.ts","sourceRoot":"","sources":["../../src/docs/doc-page.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAO,KAAK,QAAQ,EAAsB,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,uHAAuH;AACvH,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC;AAE9D,qFAAqF;AACrF,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,EAAE,CAMnE;AAED,MAAM,WAAW,YAAY,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IAC1D,gFAAgF;IAChF,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3B,OAAO,EAAE,UAAU,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,QAAQ,SAAS,MAAM,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,qBA0E7F;AAED,yHAAyH;AACzH,wBAAgB,UAAU,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAC,EAAE;IAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAC,qBAO5F"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Badge } from "@repraze/kernelkit/components/badge";
|
|
4
|
+
import { PageHeader, PageHeaderDescription, PageHeaderEyebrow, PageHeaderTitle, } from "@repraze/kernelkit/components/page-header";
|
|
5
|
+
import { Pager, PagerLink } from "@repraze/kernelkit/components/pager";
|
|
6
|
+
import { SiteAside, SiteLayout, SiteMain, SiteSidebar } from "@repraze/kernelkit/components/site-layout";
|
|
7
|
+
import { Toc, TocItem, TocList, TocTitle, useTocActive } from "@repraze/kernelkit/components/toc";
|
|
8
|
+
import { ExternalLinkIcon } from "lucide-react";
|
|
9
|
+
import { Demo, PropsTable, slugify } from "./doc-kit";
|
|
10
|
+
/** The table of contents of a page: its demos, the notes' sections, then the API. */
|
|
11
|
+
export function docToc(doc) {
|
|
12
|
+
return [
|
|
13
|
+
...doc.demos.map((demo) => ({ id: slugify(demo.title), title: demo.title })),
|
|
14
|
+
...(doc.sections ?? []),
|
|
15
|
+
...(doc.props?.length ? [{ id: "api", title: "API" }] : []),
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A docs page in the suite's layout (GUIDELINES §7b): PageHeader (category, source badge, title,
|
|
20
|
+
* description), the demos, the notes, the API tables and the Pager in SiteMain; the Toc in SiteAside.
|
|
21
|
+
*/
|
|
22
|
+
export function DocPage({ doc, index, linkFor }) {
|
|
23
|
+
const { prev, next } = index.neighbours(doc.slug);
|
|
24
|
+
const Notes = doc.notes;
|
|
25
|
+
const sections = docToc(doc);
|
|
26
|
+
const active = useTocActive(sections.map((s) => s.id));
|
|
27
|
+
return (_jsxs(_Fragment, { children: [_jsxs(SiteMain, { children: [_jsxs(PageHeader, { children: [_jsxs(PageHeaderEyebrow, { children: [_jsx(Badge, { variant: "outline", children: doc.category }), doc.source ? (_jsxs(Badge, { variant: "secondary", className: "font-mono", render: _jsx("a", { href: doc.source.href, target: "_blank", rel: "noreferrer" }), children: [doc.source.label, " ", _jsx(ExternalLinkIcon, {})] })) : null] }), _jsx(PageHeaderTitle, { children: doc.title }), _jsx(PageHeaderDescription, { children: doc.description })] }), doc.demos.map((demo, i) => (_jsx(Demo, { demo: demo, code: doc.demoSources[i] ?? "" }, demo.title))), Notes ? (_jsx("div", { className: "flex flex-col gap-4", children: _jsx(Notes, {}) })) : null, doc.props?.length ? (_jsxs("section", { id: "api", className: "flex scroll-mt-24 flex-col gap-6", children: [_jsx("h2", { className: "font-heading text-xl font-semibold", children: "API" }), doc.props.map((p) => (_jsx(PropsTable, { ...p }, p.component)))] })) : null, _jsxs(Pager, { children: [prev ? (_jsx(PagerLink, { direction: "previous", render: linkFor(prev.slug), children: prev.title })) : null, next ? (_jsx(PagerLink, { direction: "next", render: linkFor(next.slug), children: next.title })) : null] })] }), sections.length > 1 ? (_jsx(SiteAside, { children: _jsxs(Toc, { children: [_jsx(TocTitle, { children: "On this page" }), _jsx(TocList, { children: sections.map((s) => (_jsx(TocItem, { href: `#${s.id}`, active: s.id === active, children: s.title }, s.id))) })] }) })) : null] }));
|
|
28
|
+
}
|
|
29
|
+
/** The suite's docs layout: SiteLayout with the docs nav in a sticky SiteSidebar, then the page (which adds its Toc). */
|
|
30
|
+
export function DocsLayout({ nav, children }) {
|
|
31
|
+
return (_jsxs(SiteLayout, { children: [_jsx(SiteSidebar, { children: nav }), children] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=doc-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-page.js","sourceRoot":"","sources":["../../src/docs/doc-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { DocDef, DocEntry } from "./doc-kit";
|
|
2
|
+
/** What the nav, search and header need about a docs page, without loading its demos (`virtual:docs-meta`). */
|
|
3
|
+
export interface DocMeta<Category extends string = string> {
|
|
4
|
+
slug: string;
|
|
5
|
+
title: string;
|
|
6
|
+
category: Category;
|
|
7
|
+
description: string;
|
|
8
|
+
order?: number;
|
|
9
|
+
}
|
|
10
|
+
/** A docs file's module: its `doc` and the demo components it exports. */
|
|
11
|
+
export type DocModule<Category extends string = string> = {
|
|
12
|
+
doc: DocDef<Category>;
|
|
13
|
+
} & Record<string, unknown>;
|
|
14
|
+
/** What docsMetaPlugin serves for `<file>.tsx?demo-sources`: each top-level declaration's own source. */
|
|
15
|
+
export interface DemoSources {
|
|
16
|
+
functions: Record<string, string>;
|
|
17
|
+
}
|
|
18
|
+
type Glob<T> = Record<string, () => Promise<T>>;
|
|
19
|
+
export interface DocsIndexOptions<Category extends string> {
|
|
20
|
+
/** Category order: the sidebar, search groups and pager follow it. */
|
|
21
|
+
categories: readonly Category[];
|
|
22
|
+
/** `import META from "virtual:docs-meta"`. */
|
|
23
|
+
meta: readonly {
|
|
24
|
+
slug: string;
|
|
25
|
+
title: string;
|
|
26
|
+
category: string;
|
|
27
|
+
description: string;
|
|
28
|
+
order?: number;
|
|
29
|
+
}[];
|
|
30
|
+
/** `import.meta.glob("../docs/*.tsx")`: each page is its own chunk, loaded when opened. */
|
|
31
|
+
modules: Glob<unknown>;
|
|
32
|
+
/** `import.meta.glob("../docs/*.tsx", {query: "?demo-sources", import: "default"})`. */
|
|
33
|
+
sources: Glob<unknown>;
|
|
34
|
+
/** Where docs pages live, for `slugOf` (default "/docs"). */
|
|
35
|
+
basePath?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface DocsIndex<Category extends string = string> {
|
|
38
|
+
categories: readonly Category[];
|
|
39
|
+
/** Every page, in category order, then `order`, then title. */
|
|
40
|
+
docs: DocMeta<Category>[];
|
|
41
|
+
bySlug: Map<string, DocMeta<Category>>;
|
|
42
|
+
/** Non-empty categories with their pages, for the sidebar and search. */
|
|
43
|
+
byCategory: {
|
|
44
|
+
category: Category;
|
|
45
|
+
docs: DocMeta<Category>[];
|
|
46
|
+
}[];
|
|
47
|
+
/** Load a page's module and its demos' sources; undefined for an unknown slug. */
|
|
48
|
+
loadDoc(slug: string): Promise<DocEntry<Category> | undefined>;
|
|
49
|
+
/** The pages before and after one, for the Pager. */
|
|
50
|
+
neighbours(slug: string): {
|
|
51
|
+
prev?: DocMeta<Category>;
|
|
52
|
+
next?: DocMeta<Category>;
|
|
53
|
+
};
|
|
54
|
+
/** The docs slug in a pathname ("/base/docs/button" → "button"), or undefined outside the docs. */
|
|
55
|
+
slugOf(pathname: string): string | undefined;
|
|
56
|
+
}
|
|
57
|
+
/** The site's docs index, from the build-time manifest and the per-page globs. */
|
|
58
|
+
export declare function createDocsIndex<Category extends string>({ categories, meta, modules, sources, basePath, }: DocsIndexOptions<Category>): DocsIndex<Category>;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=docs-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-index.d.ts","sourceRoot":"","sources":["../../src/docs/docs-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,WAAW,CAAC;AAEhD,+GAA+G;AAC/G,MAAM,WAAW,OAAO,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI;IAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5G,yGAAyG;AACzG,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhD,MAAM,WAAW,gBAAgB,CAAC,QAAQ,SAAS,MAAM;IACrD,sEAAsE;IACtE,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChC,8CAA8C;IAC9C,IAAI,EAAE,SAAS;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IACtG,2FAA2F;IAC3F,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,wFAAwF;IACxF,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM;IACvD,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChC,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,yEAAyE;IACzE,UAAU,EAAE;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAA;KAAC,EAAE,CAAC;IAC9D,kFAAkF;IAClF,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC;IAC/D,qDAAqD;IACrD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAC,CAAC;IAC/E,mGAAmG;IACnG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAChD;AAID,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,QAAQ,SAAS,MAAM,EAAE,EACrD,UAAU,EACV,IAAI,EACJ,OAAO,EACP,OAAO,EACP,QAAkB,GACrB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAiDlD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const slugOfFile = (path) => /([^/]+)\.tsx$/.exec(path)?.[1];
|
|
2
|
+
/** The site's docs index, from the build-time manifest and the per-page globs. */
|
|
3
|
+
export function createDocsIndex({ categories, meta, modules, sources, basePath = "/docs", }) {
|
|
4
|
+
const moduleBySlug = new Map(Object.entries(modules).map(([path, load]) => [slugOfFile(path), load]));
|
|
5
|
+
const sourcesBySlug = new Map(Object.entries(sources).map(([path, load]) => [slugOfFile(path), load]));
|
|
6
|
+
const docs = meta.toSorted((a, b) => categories.indexOf(a.category) - categories.indexOf(b.category) ||
|
|
7
|
+
(a.order ?? 50) - (b.order ?? 50) ||
|
|
8
|
+
a.title.localeCompare(b.title));
|
|
9
|
+
const bySlug = new Map(docs.map((d) => [d.slug, d]));
|
|
10
|
+
const byCategory = categories
|
|
11
|
+
.map((category) => ({ category, docs: docs.filter((d) => d.category === category) }))
|
|
12
|
+
.filter((group) => group.docs.length > 0);
|
|
13
|
+
const pathRe = new RegExp(`${basePath.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}/([^/]+)`);
|
|
14
|
+
return {
|
|
15
|
+
categories,
|
|
16
|
+
docs,
|
|
17
|
+
bySlug,
|
|
18
|
+
byCategory,
|
|
19
|
+
async loadDoc(slug) {
|
|
20
|
+
const load = moduleBySlug.get(slug);
|
|
21
|
+
const loadSources = sourcesBySlug.get(slug);
|
|
22
|
+
if (!load || !loadSources) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const [mod, demoSources] = (await Promise.all([load(), loadSources()]));
|
|
26
|
+
// Match demos to their export by identity: function names don't survive minification.
|
|
27
|
+
const exportName = (component) => Object.keys(mod).find((key) => mod[key] === component) ?? "";
|
|
28
|
+
return {
|
|
29
|
+
...mod.doc,
|
|
30
|
+
slug,
|
|
31
|
+
demoSources: mod.doc.demos.map((demo) => demoSources.functions[exportName(demo.component)] ?? ""),
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
neighbours(slug) {
|
|
35
|
+
const doc = bySlug.get(slug);
|
|
36
|
+
const index = doc ? docs.indexOf(doc) : -1;
|
|
37
|
+
return index < 0 ? {} : { prev: docs[index - 1], next: docs[index + 1] };
|
|
38
|
+
},
|
|
39
|
+
slugOf(pathname) {
|
|
40
|
+
const slug = pathRe.exec(pathname)?.[1];
|
|
41
|
+
return slug && bySlug.has(slug) ? slug : undefined;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=docs-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-index.js","sourceRoot":"","sources":["../../src/docs/docs-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DocLinkFor } from "./doc-page";
|
|
2
|
+
import type { DocsIndex } from "./docs-index";
|
|
3
|
+
export interface DocsNavProps {
|
|
4
|
+
index: DocsIndex;
|
|
5
|
+
/** The open page's slug (`index.slugOf(pathname)`), marked current. */
|
|
6
|
+
current?: string;
|
|
7
|
+
linkFor: DocLinkFor;
|
|
8
|
+
/** Called when a link is clicked (the phone menu closes). */
|
|
9
|
+
onNavigate?: () => void;
|
|
10
|
+
}
|
|
11
|
+
/** Docs navigation, one Sidebar group per category: the desktop SiteSidebar and the phone menu share it. */
|
|
12
|
+
export declare function DocsNav({ index, current, linkFor, onNavigate }: DocsNavProps): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=docs-nav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-nav.d.ts","sourceRoot":"","sources":["../../src/docs/docs-nav.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;IACpB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,4GAA4G;AAC5G,wBAAgB,OAAO,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAC,EAAE,YAAY,+BAuB1E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { SidebarGroup, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from "@repraze/kernelkit/components/sidebar";
|
|
4
|
+
/** Docs navigation, one Sidebar group per category: the desktop SiteSidebar and the phone menu share it. */
|
|
5
|
+
export function DocsNav({ index, current, linkFor, onNavigate }) {
|
|
6
|
+
return (_jsx("nav", { "aria-label": "Docs", className: "flex flex-col", children: index.byCategory.map(({ category, docs }) => (_jsxs(SidebarGroup, { children: [_jsx(SidebarGroupLabel, { className: "font-mono uppercase", children: category }), _jsx(SidebarMenu, { children: docs.map((doc) => (_jsx(SidebarMenuItem, { children: _jsx(SidebarMenuButton, { isActive: doc.slug === current, render: linkFor(doc.slug), onClick: onNavigate, children: _jsx("span", { children: doc.title }) }) }, doc.slug))) })] }, category))) }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=docs-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-nav.js","sourceRoot":"","sources":["../../src/docs/docs-nav.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACH,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,eAAe,GAClB,MAAM,uCAAuC,CAAC;AAc/C,4GAA4G;AAC5G,MAAM,UAAU,OAAO,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAe;IACvE,OAAO,CACH,4BAAgB,MAAM,EAAC,SAAS,EAAC,eAAe,YAC3C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,EAAE,EAAE,CAAC,CACxC,MAAC,YAAY,eACT,KAAC,iBAAiB,IAAC,SAAS,EAAC,qBAAqB,YAAE,QAAQ,GAAqB,EACjF,KAAC,WAAW,cACP,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACf,KAAC,eAAe,cACZ,KAAC,iBAAiB,IACd,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,OAAO,EAC9B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACzB,OAAO,EAAE,UAAU,YAEnB,yBAAO,GAAG,CAAC,KAAK,GAAQ,GACR,IAPF,GAAG,CAAC,IAAI,CAQZ,CACrB,CAAC,GACQ,KAdC,QAAQ,CAeZ,CAClB,CAAC,GACA,CACT,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type LucideIcon } from "lucide-react";
|
|
2
|
+
import type { DocsIndex } from "./docs-index";
|
|
3
|
+
export interface DocsSearchProps {
|
|
4
|
+
index: DocsIndex;
|
|
5
|
+
/** One icon per category, so a result's kind reads at a glance; `fallbackIcon` for the others. */
|
|
6
|
+
icons?: Record<string, LucideIcon>;
|
|
7
|
+
fallbackIcon?: LucideIcon;
|
|
8
|
+
/** Slugs shown before the first keystroke, in a "Suggested" group. */
|
|
9
|
+
suggested?: string[];
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
/** Go to a page (the router's navigate). */
|
|
12
|
+
onSelect: (slug: string) => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The suite's docs search: SearchTrigger + hotkeys (Ctrl/⌘ K, `/`) opening a SearchDialog over the docs
|
|
16
|
+
* index, grouped by category, with a plain substring filter.
|
|
17
|
+
*/
|
|
18
|
+
export declare function DocsSearch({ index, icons, fallbackIcon, suggested, placeholder, onSelect, }: DocsSearchProps): import("react").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=docs-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-search.d.ts","sourceRoot":"","sources":["../../src/docs/docs-search.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,UAAU,EAAC,MAAM,cAAc,CAAC;AAG3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,KAAU,EACV,YAA2B,EAC3B,SAAc,EACd,WAAgC,EAChC,QAAQ,GACX,EAAE,eAAe,+BAsDjB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandList } from "@repraze/kernelkit/components/command";
|
|
4
|
+
import { SearchDialog, SearchFooter, SearchItem, substringFilter } from "@repraze/kernelkit/components/search-dialog";
|
|
5
|
+
import { SearchTrigger, useSearchHotkeys } from "@repraze/kernelkit/components/search-trigger";
|
|
6
|
+
import { FileTextIcon } from "lucide-react";
|
|
7
|
+
import { useCallback, useState } from "react";
|
|
8
|
+
/**
|
|
9
|
+
* The suite's docs search: SearchTrigger + hotkeys (Ctrl/⌘ K, `/`) opening a SearchDialog over the docs
|
|
10
|
+
* index, grouped by category, with a plain substring filter.
|
|
11
|
+
*/
|
|
12
|
+
export function DocsSearch({ index, icons = {}, fallbackIcon = FileTextIcon, suggested = [], placeholder = "Search the docs…", onSelect, }) {
|
|
13
|
+
const [open, setOpen] = useState(false);
|
|
14
|
+
const [query, setQuery] = useState("");
|
|
15
|
+
useSearchHotkeys(useCallback((toggle) => setOpen((o) => (toggle ? !o : true)), []));
|
|
16
|
+
const groups = query.trim()
|
|
17
|
+
? index.byCategory
|
|
18
|
+
: [{ category: "Suggested", docs: suggested.flatMap((slug) => index.docs.filter((d) => d.slug === slug)) }];
|
|
19
|
+
return (_jsxs(_Fragment, { children: [_jsx(SearchTrigger, { onClick: () => setOpen(true), "aria-label": "Search docs" }), _jsx(SearchDialog, { open: open, onOpenChange: (next) => {
|
|
20
|
+
setOpen(next);
|
|
21
|
+
if (!next) {
|
|
22
|
+
setQuery("");
|
|
23
|
+
}
|
|
24
|
+
}, description: "Search the docs", children: _jsxs(Command, { filter: substringFilter, loop: true, children: [_jsx(CommandInput, { value: query, onValueChange: setQuery, placeholder: placeholder }), _jsxs(CommandList, { children: [_jsxs(CommandEmpty, { children: ["No results for \u201C", query, "\u201D."] }), groups.map(({ category, docs }) => (_jsx(CommandGroup, { heading: category, children: docs.map((doc) => {
|
|
25
|
+
const Icon = icons[doc.category] ?? fallbackIcon;
|
|
26
|
+
return (_jsx(SearchItem, { value: doc.title, keywords: [doc.category, doc.slug], icon: _jsx(Icon, {}), title: doc.title, description: doc.description, onSelect: () => {
|
|
27
|
+
setOpen(false);
|
|
28
|
+
setQuery("");
|
|
29
|
+
onSelect(doc.slug);
|
|
30
|
+
} }, doc.slug));
|
|
31
|
+
}) }, category)))] }), _jsx(SearchFooter, {})] }) })] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=docs-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-search.js","sourceRoot":"","sources":["../../src/docs/docs-search.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Accent, Radius, ResolvedMode } from "@repraze/kernelkit/provider";
|
|
2
|
+
import { type ThemeScopeProps } from "@repraze/kernelkit/provider";
|
|
3
|
+
import type { DocEntry } from "./doc-kit";
|
|
4
|
+
export interface ReviewScope {
|
|
5
|
+
label: string;
|
|
6
|
+
scope: Omit<ThemeScopeProps, "children">;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The GUIDELINES §8 scopes: dark, light and both high-contrast modes in the site's own accent and radius,
|
|
10
|
+
* then two variants (by default dark · radius-none · cyan and light · radius-xl · yellow).
|
|
11
|
+
*/
|
|
12
|
+
export declare function reviewScopes(site: {
|
|
13
|
+
accent: Accent;
|
|
14
|
+
radius: Radius;
|
|
15
|
+
}, variants?: {
|
|
16
|
+
mode: ResolvedMode;
|
|
17
|
+
accent: Accent;
|
|
18
|
+
radius: Radius;
|
|
19
|
+
}[]): ReviewScope[];
|
|
20
|
+
/** Every demo of a page in each scope, side by side, for visual review (GUIDELINES §8). */
|
|
21
|
+
export declare function ReviewMatrix({ doc, scopes }: {
|
|
22
|
+
doc: DocEntry;
|
|
23
|
+
scopes: ReviewScope[];
|
|
24
|
+
}): import("react").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=review-matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-matrix.d.ts","sourceRoot":"","sources":["../../src/docs/review-matrix.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAa,KAAK,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAG7E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CACxB,IAAI,EAAE;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EACtC,QAAQ,GAAE;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EAG7D,GACF,WAAW,EAAE,CAWf;AAED,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,EAAC,GAAG,EAAE,MAAM,EAAC,EAAE;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAC,+BA6BjF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ThemeScope } from "@repraze/kernelkit/provider";
|
|
4
|
+
import { cn } from "cn";
|
|
5
|
+
/**
|
|
6
|
+
* The GUIDELINES §8 scopes: dark, light and both high-contrast modes in the site's own accent and radius,
|
|
7
|
+
* then two variants (by default dark · radius-none · cyan and light · radius-xl · yellow).
|
|
8
|
+
*/
|
|
9
|
+
export function reviewScopes(site, variants = [
|
|
10
|
+
{ mode: "dark", accent: "cyan", radius: "none" },
|
|
11
|
+
{ mode: "light", accent: "yellow", radius: "xl" },
|
|
12
|
+
]) {
|
|
13
|
+
return [
|
|
14
|
+
{ label: "dark", scope: { mode: "dark", contrast: "normal", ...site } },
|
|
15
|
+
{ label: "light", scope: { mode: "light", contrast: "normal", ...site } },
|
|
16
|
+
{ label: "dark · hc", scope: { mode: "dark", contrast: "high", ...site } },
|
|
17
|
+
{ label: "light · hc", scope: { mode: "light", contrast: "high", ...site } },
|
|
18
|
+
...variants.map(({ mode, accent, radius }) => ({
|
|
19
|
+
label: `${mode} · radius-${radius} · ${accent}`,
|
|
20
|
+
scope: { mode, contrast: "normal", accent, radius },
|
|
21
|
+
})),
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
/** Every demo of a page in each scope, side by side, for visual review (GUIDELINES §8). */
|
|
25
|
+
export function ReviewMatrix({ doc, scopes }) {
|
|
26
|
+
return (_jsxs("div", { className: "flex flex-col gap-6 p-6", "data-slot": "review", children: [_jsxs("h1", { className: "font-mono text-lg font-semibold", children: [doc.title, " \u00B7 review"] }), doc.demos.map((demo) => {
|
|
27
|
+
const Component = demo.component;
|
|
28
|
+
return (_jsxs("section", { className: "flex flex-col gap-2", children: [_jsx("h2", { className: "font-mono text-sm text-muted-foreground", children: demo.title }), _jsx("div", { className: "grid grid-cols-2 gap-px overflow-hidden border bg-border", children: scopes.map(({ label, scope }) => (_jsxs(ThemeScope, { ...scope, className: "flex flex-col gap-3 p-4", children: [_jsx("span", { className: "font-mono text-[10px] text-muted-foreground", children: label }), _jsx("div", { className: cn("flex min-h-24 flex-1", demo.layout === "full" ? "" : "items-center justify-center"), children: _jsx(Component, {}) })] }, label))) })] }, demo.title));
|
|
29
|
+
})] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=review-matrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-matrix.js","sourceRoot":"","sources":["../../src/docs/review-matrix.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAC,UAAU,EAAuB,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAC,EAAE,EAAC,MAAM,IAAI,CAAC;AAStB;;;GAGG;AACH,MAAM,UAAU,YAAY,CACxB,IAAsC,EACtC,WAAmE;IAC/D,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC;IAC9C,EAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAC;CAClD;IAED,OAAO;QACH,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAC,EAAC;QACnE,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAC,EAAC;QACrE,EAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAC,EAAC;QACtE,EAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAC,EAAC;QACxE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAC,EAAE,EAAE,CAAC,CAAC;YACzC,KAAK,EAAE,GAAG,IAAI,aAAa,MAAM,MAAM,MAAM,EAAE;YAC/C,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,QAAiB,EAAE,MAAM,EAAE,MAAM,EAAC;SAC7D,CAAC,CAAC;KACN,CAAC;AACN,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,EAAC,GAAG,EAAE,MAAM,EAAyC;IAC9E,OAAO,CACH,eAAK,SAAS,EAAC,yBAAyB,eAAW,QAAQ,aACvD,cAAI,SAAS,EAAC,iCAAiC,aAAE,GAAG,CAAC,KAAK,sBAAe,EACxE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjC,OAAO,CACH,mBAA0B,SAAS,EAAC,qBAAqB,aACrD,aAAI,SAAS,EAAC,yCAAyC,YAAE,IAAI,CAAC,KAAK,GAAM,EACzE,cAAK,SAAS,EAAC,0DAA0D,YACpE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,CAC5B,MAAC,UAAU,OAAiB,KAAK,EAAE,SAAS,EAAC,yBAAyB,aAClE,eAAM,SAAS,EAAC,6CAA6C,YAAE,KAAK,GAAQ,EAC5E,cACI,SAAS,EAAE,EAAE,CACT,sBAAsB,EACtB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAC9D,YAED,KAAC,SAAS,KAAG,GACX,KATO,KAAK,CAUT,CAChB,CAAC,GACA,KAhBI,IAAI,CAAC,KAAK,CAiBd,CACb,CAAC;YACN,CAAC,CAAC,IACA,CACT,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Mode } from "@repraze/termicolor";
|
|
2
|
+
/**
|
|
3
|
+
* The TermiColor mode that applies here (nearest ThemeScope, else the ThemeProvider): neutrals, accents
|
|
4
|
+
* and roles as hex strings, with `roles.accent` & co. in the current accent. For canvas, chart and WebGPU
|
|
5
|
+
* code that can't read CSS variables. Memoised per mode, contrast and accent.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useThemePalette(): Mode;
|
|
8
|
+
//# sourceMappingURL=use-theme-palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-theme-palette.d.ts","sourceRoot":"","sources":["../../src/hooks/use-theme-palette.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,IAAI,EAAC,MAAM,qBAAqB,CAAC;AAKvE;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAatC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useResolvedTheme } from "@repraze/kernelkit/provider";
|
|
2
|
+
import { allModes, createPalette } from "@repraze/termicolor";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
const cache = new Map();
|
|
5
|
+
/**
|
|
6
|
+
* The TermiColor mode that applies here (nearest ThemeScope, else the ThemeProvider): neutrals, accents
|
|
7
|
+
* and roles as hex strings, with `roles.accent` & co. in the current accent. For canvas, chart and WebGPU
|
|
8
|
+
* code that can't read CSS variables. Memoised per mode, contrast and accent.
|
|
9
|
+
*/
|
|
10
|
+
export function useThemePalette() {
|
|
11
|
+
const { mode, contrast, accent } = useResolvedTheme();
|
|
12
|
+
return useMemo(() => {
|
|
13
|
+
const id = `${mode}${contrast === "high" ? "-hc" : ""}`;
|
|
14
|
+
const key = `${id}:${accent}`;
|
|
15
|
+
let found = cache.get(key);
|
|
16
|
+
if (!found) {
|
|
17
|
+
const modes = allModes(createPalette({ accent }));
|
|
18
|
+
found = modes.find((m) => m.id === id) ?? modes[0];
|
|
19
|
+
cache.set(key, found);
|
|
20
|
+
}
|
|
21
|
+
return found;
|
|
22
|
+
}, [mode, contrast, accent]);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=use-theme-palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-theme-palette.js","sourceRoot":"","sources":["../../src/hooks/use-theme-palette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAY,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAE9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC3B,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC,GAAG,gBAAgB,EAAE,CAAC;IACpD,OAAO,OAAO,CAAC,GAAG,EAAE;QAChB,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;YAChD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC;YACpD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** `"auto"` follows the locale: 12 in en-US, 24 in fr-FR, en-GB or ja-JP. */
|
|
2
|
+
type HourCyclePreference = 12 | 24 | "auto";
|
|
3
|
+
interface TimeFormat {
|
|
4
|
+
locale: string;
|
|
5
|
+
hourCycle: 12 | 24;
|
|
6
|
+
/** Localized day periods: "AM" / "PM" in en-US, "a.m." / "p.m." in en-CA, "오전" / "오후" in ko. */
|
|
7
|
+
am: string;
|
|
8
|
+
pm: string;
|
|
9
|
+
/** The day period comes before the hour (ko, zh). */
|
|
10
|
+
periodFirst: boolean;
|
|
11
|
+
/** "09:30" (24h) or "9:30 AM" / "오전 9:30" (12h), in the locale's own pattern. */
|
|
12
|
+
format: (minutes: number) => string;
|
|
13
|
+
/** A two-digit segment in the locale's digits: "05", "٠٥" in ar-EG. */
|
|
14
|
+
digits: (n: number) => string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Hour cycle, day-period labels and a formatter, from `Intl` for the resolved locale (see `useLocale`:
|
|
18
|
+
* prop › LocaleProvider › browser, hydration-safe). An explicit 12 / 24 overrides the locale's cycle.
|
|
19
|
+
*/
|
|
20
|
+
declare function useTimeFormat(preference?: HourCyclePreference, explicitLocale?: string): TimeFormat;
|
|
21
|
+
export { useTimeFormat };
|
|
22
|
+
export type { HourCyclePreference, TimeFormat };
|
|
23
|
+
//# sourceMappingURL=use-time-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-time-format.d.ts","sourceRoot":"","sources":["../../src/hooks/use-time-format.ts"],"names":[],"mappings":"AAKA,6EAA6E;AAC7E,KAAK,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAE5C,UAAU,UAAU;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC;IACnB,gGAAgG;IAChG,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,qDAAqD;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,iFAAiF;IACjF,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,uEAAuE;IACvE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACjC;AAID;;;GAGG;AACH,iBAAS,aAAa,CAAC,UAAU,GAAE,mBAA4B,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,CAwCpG;AAED,OAAO,EAAC,aAAa,EAAC,CAAC;AACvB,YAAY,EAAC,mBAAmB,EAAE,UAAU,EAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLocale } from "@repraze/kernelkit/components/locale";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
5
|
+
/**
|
|
6
|
+
* Hour cycle, day-period labels and a formatter, from `Intl` for the resolved locale (see `useLocale`:
|
|
7
|
+
* prop › LocaleProvider › browser, hydration-safe). An explicit 12 / 24 overrides the locale's cycle.
|
|
8
|
+
*/
|
|
9
|
+
function useTimeFormat(preference = "auto", explicitLocale) {
|
|
10
|
+
const locale = useLocale(explicitLocale);
|
|
11
|
+
return React.useMemo(() => {
|
|
12
|
+
let hourCycle = preference === "auto" ? 24 : preference;
|
|
13
|
+
let am = "AM";
|
|
14
|
+
let pm = "PM";
|
|
15
|
+
let periodFirst = false;
|
|
16
|
+
let formatter = null;
|
|
17
|
+
let numbers = null;
|
|
18
|
+
try {
|
|
19
|
+
numbers = new Intl.NumberFormat(locale, { minimumIntegerDigits: 2, useGrouping: false });
|
|
20
|
+
if (preference === "auto") {
|
|
21
|
+
const hc = new Intl.DateTimeFormat(locale, { hour: "numeric" }).resolvedOptions().hourCycle;
|
|
22
|
+
hourCycle = hc === "h11" || hc === "h12" ? 12 : 24;
|
|
23
|
+
}
|
|
24
|
+
const f = new Intl.DateTimeFormat(locale, { hour: "numeric", hourCycle: "h12" });
|
|
25
|
+
const parts = (h) => f.formatToParts(new Date(2000, 0, 1, h));
|
|
26
|
+
am = parts(9).find((p) => p.type === "dayPeriod")?.value ?? am;
|
|
27
|
+
pm = parts(21).find((p) => p.type === "dayPeriod")?.value ?? pm;
|
|
28
|
+
const types = parts(9).map((p) => p.type);
|
|
29
|
+
periodFirst = types.includes("dayPeriod") && types.indexOf("dayPeriod") < types.indexOf("hour");
|
|
30
|
+
formatter = new Intl.DateTimeFormat(locale, {
|
|
31
|
+
hour: hourCycle === 24 ? "2-digit" : "numeric",
|
|
32
|
+
minute: "2-digit",
|
|
33
|
+
hourCycle: hourCycle === 24 ? "h23" : "h12",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
formatter = null;
|
|
38
|
+
}
|
|
39
|
+
const format = (minutes) => {
|
|
40
|
+
const h = Math.floor(minutes / 60);
|
|
41
|
+
const m = minutes % 60;
|
|
42
|
+
if (formatter) {
|
|
43
|
+
return formatter.format(new Date(2000, 0, 1, h, m));
|
|
44
|
+
}
|
|
45
|
+
return hourCycle === 24 ? `${pad(h)}:${pad(m)}` : `${h % 12 || 12}:${pad(m)} ${h < 12 ? am : pm}`;
|
|
46
|
+
};
|
|
47
|
+
const digits = (n) => (numbers ? numbers.format(n) : pad(n));
|
|
48
|
+
return { locale, hourCycle, am, pm, periodFirst, format, digits };
|
|
49
|
+
}, [preference, locale]);
|
|
50
|
+
}
|
|
51
|
+
export { useTimeFormat };
|
|
52
|
+
//# sourceMappingURL=use-time-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-time-format.js","sourceRoot":"","sources":["../../src/hooks/use-time-format.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/color.d.ts
CHANGED
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
* - `--c-tint` opaque wash behind foreground text
|
|
7
7
|
* - `--c-fill` / `--c-fill-fg` vivid solid surface and its text (TermiColor "fills are the brand":
|
|
8
8
|
* in light mode the text tier is darkened for contrast, the fill tier stays vivid)
|
|
9
|
+
* - `--c-soft-text` text on a wash of its own color (soft variants, soft status surfaces): `--c` mixed 25%
|
|
10
|
+
* toward the foreground with its chroma restored, which keeps hue and saturation and passes WCAG AA
|
|
11
|
+
* 4.5:1 for every color, in light, dark and both hc modes, on background, card and popover (plain `--c`
|
|
12
|
+
* on its own wash fell to ~3.6)
|
|
9
13
|
*
|
|
10
14
|
* Spread `colorVariants` into a cva `variants.color` map, then write variants against the vars
|
|
11
|
-
* (`bg-(--c) text-(--c-fg)`, `bg-(--c)/12 text-(--c)`, …).
|
|
15
|
+
* (`bg-(--c) text-(--c-fg)`, `bg-(--c)/12 text-(--c-soft-text)`, …).
|
|
12
16
|
*/
|
|
13
17
|
export declare const STATUS_COLORS: readonly ["danger", "warning", "success", "info"];
|
|
14
18
|
export declare const HUES: readonly ["red", "orange", "yellow", "green", "cyan", "blue", "purple", "pink"];
|