@aback-ui/ui 0.0.0-stage → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +69 -2
- package/dist/components/accordion.d.ts +8 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +17 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +15 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +38 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +12 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +28 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar.d.ts +25 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +34 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +15 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +27 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumbs.d.ts +11 -0
- package/dist/components/breadcrumbs.d.ts.map +1 -0
- package/dist/components/breadcrumbs.js +11 -0
- package/dist/components/breadcrumbs.js.map +1 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +43 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +25 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +87 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +12 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +25 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +10 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/code-block.d.ts +25 -0
- package/dist/components/code-block.d.ts.map +1 -0
- package/dist/components/code-block.js +19 -0
- package/dist/components/code-block.js.map +1 -0
- package/dist/components/collapsible.d.ts +7 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +11 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +40 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +27 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +24 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +35 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/copy-button.d.ts +32 -0
- package/dist/components/copy-button.d.ts.map +1 -0
- package/dist/components/copy-button.js +65 -0
- package/dist/components/copy-button.js.map +1 -0
- package/dist/components/date-picker.d.ts +66 -0
- package/dist/components/date-picker.d.ts.map +1 -0
- package/dist/components/date-picker.js +75 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/description-list.d.ts +29 -0
- package/dist/components/description-list.d.ts.map +1 -0
- package/dist/components/description-list.js +28 -0
- package/dist/components/description-list.js.map +1 -0
- package/dist/components/dialog.d.ts +16 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +29 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +26 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +41 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/dropzone.d.ts +47 -0
- package/dist/components/dropzone.d.ts.map +1 -0
- package/dist/components/dropzone.js +125 -0
- package/dist/components/dropzone.js.map +1 -0
- package/dist/components/empty-state.d.ts +10 -0
- package/dist/components/empty-state.d.ts.map +1 -0
- package/dist/components/empty-state.js +8 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/field.d.ts +17 -0
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +13 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/hover-card.d.ts +7 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +11 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.d.ts +26 -0
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +41 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input.d.ts +5 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +19 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/kbd.d.ts +4 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +7 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +4 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +9 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/layout.d.ts +69 -0
- package/dist/components/layout.d.ts.map +1 -0
- package/dist/components/layout.js +61 -0
- package/dist/components/layout.js.map +1 -0
- package/dist/components/page-header.d.ts +20 -0
- package/dist/components/page-header.d.ts.map +1 -0
- package/dist/components/page-header.js +11 -0
- package/dist/components/page-header.js.map +1 -0
- package/dist/components/pagination.d.ts +20 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +51 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.d.ts +8 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +12 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +12 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +11 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +6 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +12 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/rating.d.ts +33 -0
- package/dist/components/rating.d.ts.map +1 -0
- package/dist/components/rating.js +52 -0
- package/dist/components/rating.js.map +1 -0
- package/dist/components/reading-progress.d.ts +16 -0
- package/dist/components/reading-progress.d.ts.map +1 -0
- package/dist/components/reading-progress.js +54 -0
- package/dist/components/reading-progress.js.map +1 -0
- package/dist/components/relative-time.d.ts +26 -0
- package/dist/components/relative-time.d.ts.map +1 -0
- package/dist/components/relative-time.js +83 -0
- package/dist/components/relative-time.js.map +1 -0
- package/dist/components/scroll-area.d.ts +10 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +9 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/section-heading.d.ts +28 -0
- package/dist/components/section-heading.d.ts.map +1 -0
- package/dist/components/section-heading.js +23 -0
- package/dist/components/section-heading.js.map +1 -0
- package/dist/components/select.d.ts +5 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +17 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +5 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +9 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/share-buttons.d.ts +25 -0
- package/dist/components/share-buttons.d.ts.map +1 -0
- package/dist/components/share-buttons.js +67 -0
- package/dist/components/share-buttons.js.map +1 -0
- package/dist/components/sheet.d.ts +18 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +35 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/skeleton.d.ts +4 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +7 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/skip-link.d.ts +13 -0
- package/dist/components/skip-link.d.ts.map +1 -0
- package/dist/components/skip-link.js +12 -0
- package/dist/components/skip-link.js.map +1 -0
- package/dist/components/slider.d.ts +9 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +9 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/spinner.d.ts +14 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +13 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/stat.d.ts +54 -0
- package/dist/components/stat.d.ts.map +1 -0
- package/dist/components/stat.js +62 -0
- package/dist/components/stat.js.map +1 -0
- package/dist/components/steps.d.ts +21 -0
- package/dist/components/steps.d.ts.map +1 -0
- package/dist/components/steps.js +26 -0
- package/dist/components/steps.js.map +1 -0
- package/dist/components/switch.d.ts +5 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +9 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table-of-contents.d.ts +28 -0
- package/dist/components/table-of-contents.d.ts.map +1 -0
- package/dist/components/table-of-contents.js +79 -0
- package/dist/components/table-of-contents.js.map +1 -0
- package/dist/components/table.d.ts +15 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +29 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +8 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +16 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +5 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +18 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/theme-toggle.d.ts +43 -0
- package/dist/components/theme-toggle.d.ts.map +1 -0
- package/dist/components/theme-toggle.js +99 -0
- package/dist/components/theme-toggle.js.map +1 -0
- package/dist/components/toaster.d.ts +27 -0
- package/dist/components/toaster.d.ts.map +1 -0
- package/dist/components/toaster.js +52 -0
- package/dist/components/toaster.js.map +1 -0
- package/dist/components/toggle-group.d.ts +12 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +39 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/tooltip.d.ts +10 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +14 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +76 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBASrE;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
function Skeleton({ className, ...props }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "skeleton", "aria-hidden": "true", className: cn("animate-pulse bg-muted", className), ...props }));
|
|
5
|
+
}
|
|
6
|
+
export { Skeleton };
|
|
7
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACpE,OAAO,CACL,2BACY,UAAU,iBACR,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,KAC9C,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface SkipLinkProps extends React.ComponentProps<"a"> {
|
|
3
|
+
/** The id of the main content, with its hash. */
|
|
4
|
+
href?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The first focusable element on a page. It stays hidden until it receives
|
|
8
|
+
* keyboard focus, then lets a keyboard or switch user jump past the header.
|
|
9
|
+
* The target needs a matching id, and `tabIndex={-1}` if it is not focusable.
|
|
10
|
+
*/
|
|
11
|
+
declare function SkipLink({ href, children, className, ...props }: SkipLinkProps): React.JSX.Element;
|
|
12
|
+
export { SkipLink };
|
|
13
|
+
//# sourceMappingURL=skip-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-link.d.ts","sourceRoot":"","sources":["../../src/components/skip-link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;IAC9D,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,iBAAS,QAAQ,CAAC,EAChB,IAAsB,EACtB,QAA4B,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,qBAgBf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* The first focusable element on a page. It stays hidden until it receives
|
|
5
|
+
* keyboard focus, then lets a keyboard or switch user jump past the header.
|
|
6
|
+
* The target needs a matching id, and `tabIndex={-1}` if it is not focusable.
|
|
7
|
+
*/
|
|
8
|
+
function SkipLink({ href = "#main-content", children = "Skip to content", className, ...props }) {
|
|
9
|
+
return (_jsx("a", { "data-slot": "skip-link", href: href, className: cn("sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[100]", "focus:border focus:border-border focus:bg-background focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-foreground focus:shadow-lg", "outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", className), ...props, children: children }));
|
|
10
|
+
}
|
|
11
|
+
export { SkipLink };
|
|
12
|
+
//# sourceMappingURL=skip-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-link.js","sourceRoot":"","sources":["../../src/components/skip-link.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAOlC;;;;GAIG;AACH,SAAS,QAAQ,CAAC,EAChB,IAAI,GAAG,eAAe,EACtB,QAAQ,GAAG,iBAAiB,EAC5B,SAAS,EACT,GAAG,KAAK,EACM;IACd,OAAO,CACL,yBACY,WAAW,EACrB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CACX,8EAA8E,EAC9E,kJAAkJ,EAClJ,kIAAkI,EAClI,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACP,CACL,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Slider as SliderPrimitive } from "radix-ui";
|
|
3
|
+
export interface SliderProps extends React.ComponentProps<typeof SliderPrimitive.Root> {
|
|
4
|
+
/** Accessible name for the thumb. Required unless aria-labelledby is used. */
|
|
5
|
+
label?: string;
|
|
6
|
+
}
|
|
7
|
+
declare function Slider({ className, label, "aria-labelledby": ariaLabelledBy, ...props }: SliderProps): React.JSX.Element;
|
|
8
|
+
export { Slider };
|
|
9
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAIrD,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC;IACpF,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,KAAK,EACL,iBAAiB,EAAE,cAAc,EACjC,GAAG,KAAK,EACT,EAAE,WAAW,qBAsCb;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Slider as SliderPrimitive } from "radix-ui";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
function Slider({ className, label, "aria-labelledby": ariaLabelledBy, ...props }) {
|
|
6
|
+
return (_jsxs(SliderPrimitive.Root, { "data-slot": "slider", className: cn("relative flex w-full touch-none select-none items-center", "data-[orientation=vertical]:h-44 data-[orientation=vertical]:w-4 data-[orientation=vertical]:flex-col", "data-[disabled]:opacity-50", className), ...props, children: [_jsx(SliderPrimitive.Track, { "data-slot": "slider-track", className: cn("relative grow overflow-hidden bg-secondary", "data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full", "data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"), children: _jsx(SliderPrimitive.Range, { "data-slot": "slider-range", className: "absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full" }) }), _jsx(SliderPrimitive.Thumb, { "data-slot": "slider-thumb", "aria-label": label, "aria-labelledby": ariaLabelledBy, className: cn("block size-4 shrink-0 border-2 border-background bg-primary shadow-sm", "outline-none transition-colors", "focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", "disabled:pointer-events-none") })] }));
|
|
7
|
+
}
|
|
8
|
+
export { Slider };
|
|
9
|
+
//# sourceMappingURL=slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAOlC,SAAS,MAAM,CAAC,EACd,SAAS,EACT,KAAK,EACL,iBAAiB,EAAE,cAAc,EACjC,GAAG,KAAK,EACI;IACZ,OAAO,CACL,MAAC,eAAe,CAAC,IAAI,iBACT,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,uGAAuG,EACvG,4BAA4B,EAC5B,SAAS,CACV,KACG,KAAK,aAET,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,4CAA4C,EAC5C,0EAA0E,EAC1E,sEAAsE,CACvE,YAED,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAC,6FAA6F,GACvG,GACoB,EACxB,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,gBACZ,KAAK,qBACA,cAAc,EAC/B,SAAS,EAAE,EAAE,CACX,uEAAuE,EACvE,gCAAgC,EAChC,qHAAqH,EACrH,8BAA8B,CAC/B,GACD,IACmB,CACxB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const spinnerSizes: {
|
|
3
|
+
readonly sm: "size-4";
|
|
4
|
+
readonly md: "size-5";
|
|
5
|
+
readonly lg: "size-6";
|
|
6
|
+
};
|
|
7
|
+
export interface SpinnerProps extends React.ComponentProps<"span"> {
|
|
8
|
+
/** Announced to assistive technology. */
|
|
9
|
+
label?: string;
|
|
10
|
+
size?: keyof typeof spinnerSizes;
|
|
11
|
+
}
|
|
12
|
+
declare function Spinner({ label, size, className, ...props }: SpinnerProps): React.JSX.Element;
|
|
13
|
+
export { Spinner };
|
|
14
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/components/spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,QAAA,MAAM,YAAY;;;;CAIR,CAAC;AAEX,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;IAChE,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,OAAO,YAAY,CAAC;CAClC;AAED,iBAAS,OAAO,CAAC,EACf,KAAiB,EACjB,IAAW,EACX,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,qBAYd;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconLoader2 } from "@tabler/icons-react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
const spinnerSizes = {
|
|
5
|
+
sm: "size-4",
|
|
6
|
+
md: "size-5",
|
|
7
|
+
lg: "size-6",
|
|
8
|
+
};
|
|
9
|
+
function Spinner({ label = "Loading", size = "md", className, ...props }) {
|
|
10
|
+
return (_jsxs("span", { "data-slot": "spinner", role: "status", className: cn("inline-flex items-center justify-center text-muted-foreground", className), ...props, children: [_jsx(IconLoader2, { "aria-hidden": "true", className: cn("animate-spin", spinnerSizes[size]) }), _jsx("span", { className: "sr-only", children: label })] }));
|
|
11
|
+
}
|
|
12
|
+
export { Spinner };
|
|
13
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/components/spinner.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,YAAY,GAAG;IACnB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,QAAQ;CACJ,CAAC;AAQX,SAAS,OAAO,CAAC,EACf,KAAK,GAAG,SAAS,EACjB,IAAI,GAAG,IAAI,EACX,SAAS,EACT,GAAG,KAAK,EACK;IACb,OAAO,CACL,6BACY,SAAS,EACnB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,+DAA+D,EAAE,SAAS,CAAC,KACrF,KAAK,aAET,KAAC,WAAW,mBAAa,MAAM,EAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAI,EACrF,eAAM,SAAS,EAAC,SAAS,YAAE,KAAK,GAAQ,IACnC,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type StatTone = "neutral" | "success" | "warning" | "danger" | "info";
|
|
3
|
+
declare const valueSize: {
|
|
4
|
+
readonly sm: "text-sm";
|
|
5
|
+
readonly default: "text-xl leading-tight";
|
|
6
|
+
readonly lg: "text-3xl leading-none tracking-tight";
|
|
7
|
+
};
|
|
8
|
+
export interface StatTrend {
|
|
9
|
+
direction: "up" | "down" | "flat";
|
|
10
|
+
/** Words that carry the change on their own, such as "+12% vs last week". */
|
|
11
|
+
label: string;
|
|
12
|
+
/** Defaults to success for up, danger for down, neutral for flat. */
|
|
13
|
+
tone?: StatTone;
|
|
14
|
+
}
|
|
15
|
+
export interface StatProps extends Omit<React.ComponentProps<"div">, "children"> {
|
|
16
|
+
label: React.ReactNode;
|
|
17
|
+
/** The formatted value: "$1,234", "42%", "3 h 20 min". */
|
|
18
|
+
value: React.ReactNode;
|
|
19
|
+
/** A unit after the value, in muted text. */
|
|
20
|
+
unit?: React.ReactNode;
|
|
21
|
+
/** A sub-line under the value. */
|
|
22
|
+
hint?: React.ReactNode;
|
|
23
|
+
/** A 16px icon, shown in a brand chip. Decorative. */
|
|
24
|
+
icon?: React.ReactNode;
|
|
25
|
+
/** Colours the value. Pair it with words in the label, hint, or a badge. */
|
|
26
|
+
tone?: StatTone;
|
|
27
|
+
/** Tints the whole tile with the tone, for a recommended or alert tile. */
|
|
28
|
+
emphasis?: boolean;
|
|
29
|
+
/** A badge after the label. */
|
|
30
|
+
badge?: React.ReactNode;
|
|
31
|
+
trend?: StatTrend;
|
|
32
|
+
size?: keyof typeof valueSize;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* One labelled number. The label and value are a real description list, so
|
|
36
|
+
* the label is announced with the value. Change the value freely; it is not a
|
|
37
|
+
* live region, so a ticking number does not interrupt a screen reader.
|
|
38
|
+
*/
|
|
39
|
+
declare function Stat({ label, value, unit, hint, icon, tone, emphasis, badge, trend, size, className, ...props }: StatProps): React.JSX.Element;
|
|
40
|
+
declare const gridColumns: {
|
|
41
|
+
readonly 2: "grid-cols-1 sm:grid-cols-2";
|
|
42
|
+
readonly 3: "grid-cols-1 sm:grid-cols-2 xl:grid-cols-3";
|
|
43
|
+
readonly 4: "grid-cols-1 sm:grid-cols-2 xl:grid-cols-4";
|
|
44
|
+
};
|
|
45
|
+
export interface StatGridProps extends React.ComponentProps<"div"> {
|
|
46
|
+
/** Columns at the widest breakpoint. Always one column on phones. */
|
|
47
|
+
columns?: keyof typeof gridColumns;
|
|
48
|
+
/** Draws the stats as one joined panel with hairline dividers. */
|
|
49
|
+
joined?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/** A responsive grid of Stat tiles. */
|
|
52
|
+
declare function StatGrid({ columns, joined, className, ...props }: StatGridProps): React.JSX.Element;
|
|
53
|
+
export { Stat, StatGrid };
|
|
54
|
+
//# sourceMappingURL=stat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../src/components/stat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AA0B7E,QAAA,MAAM,SAAS;;;;CAIL,CAAC;AAEX,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAcD,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC9E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,0DAA0D;IAC1D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,kCAAkC;IAClC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,sDAAsD;IACtD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,OAAO,SAAS,CAAC;CAC/B;AAED;;;;GAIG;AACH,iBAAS,IAAI,CAAC,EACZ,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAgB,EAChB,QAAgB,EAChB,KAAK,EACL,KAAK,EACL,IAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,SAAS,qBAqDX;AAED,QAAA,MAAM,WAAW;;;;CAIP,CAAC;AAEX,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IAChE,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,OAAO,WAAW,CAAC;IACnC,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,uCAAuC;AACvC,iBAAS,QAAQ,CAAC,EAAE,OAAW,EAAE,MAAc,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAepF;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconArrowDownRight, IconArrowRight, IconArrowUpRight } from "@tabler/icons-react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
const toneText = {
|
|
5
|
+
neutral: "text-foreground",
|
|
6
|
+
success: "text-success",
|
|
7
|
+
warning: "text-warning",
|
|
8
|
+
danger: "text-danger",
|
|
9
|
+
info: "text-info",
|
|
10
|
+
};
|
|
11
|
+
const toneBorder = {
|
|
12
|
+
neutral: "border-border",
|
|
13
|
+
success: "border-success/30",
|
|
14
|
+
warning: "border-warning/30",
|
|
15
|
+
danger: "border-danger/30",
|
|
16
|
+
info: "border-info/30",
|
|
17
|
+
};
|
|
18
|
+
const toneSurface = {
|
|
19
|
+
neutral: "border-border bg-muted/40",
|
|
20
|
+
success: "border-success/30 bg-success-soft",
|
|
21
|
+
warning: "border-warning/30 bg-warning-soft",
|
|
22
|
+
danger: "border-danger/30 bg-danger-soft",
|
|
23
|
+
info: "border-info/30 bg-info-soft",
|
|
24
|
+
};
|
|
25
|
+
const valueSize = {
|
|
26
|
+
sm: "text-sm",
|
|
27
|
+
default: "text-xl leading-tight",
|
|
28
|
+
lg: "text-3xl leading-none tracking-tight",
|
|
29
|
+
};
|
|
30
|
+
const defaultTrendTone = {
|
|
31
|
+
up: "success",
|
|
32
|
+
down: "danger",
|
|
33
|
+
flat: "neutral",
|
|
34
|
+
};
|
|
35
|
+
const trendIcon = {
|
|
36
|
+
up: IconArrowUpRight,
|
|
37
|
+
down: IconArrowDownRight,
|
|
38
|
+
flat: IconArrowRight,
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* One labelled number. The label and value are a real description list, so
|
|
42
|
+
* the label is announced with the value. Change the value freely; it is not a
|
|
43
|
+
* live region, so a ticking number does not interrupt a screen reader.
|
|
44
|
+
*/
|
|
45
|
+
function Stat({ label, value, unit, hint, icon, tone = "neutral", emphasis = false, badge, trend, size = "default", className, ...props }) {
|
|
46
|
+
const TrendIcon = trend ? trendIcon[trend.direction] : null;
|
|
47
|
+
const trendTone = trend ? (trend.tone ?? defaultTrendTone[trend.direction]) : "neutral";
|
|
48
|
+
return (_jsxs("div", { "data-slot": "stat", "data-tone": tone, className: cn("flex min-w-0 items-start gap-3 border p-4", emphasis ? toneSurface[tone] : cn("bg-card", toneBorder[tone]), className), ...props, children: [icon ? (_jsx("span", { "aria-hidden": "true", className: "flex size-9 shrink-0 items-center justify-center bg-brand-chip text-brand-icon [&_svg:not([class*='size-'])]:size-4", children: icon })) : null, _jsxs("dl", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsxs("dt", { className: "flex flex-wrap items-center gap-x-2 gap-y-1 text-xs font-medium text-muted-foreground", children: [label, badge] }), _jsxs("dd", { "data-slot": "stat-value", className: cn("font-semibold tabular-nums break-words", valueSize[size], toneText[tone]), children: [value, unit ? (_jsx("span", { className: "ml-1 text-xs font-normal tracking-normal text-muted-foreground", children: unit })) : null] }), trend && TrendIcon ? (_jsxs("dd", { "data-slot": "stat-trend", "data-direction": trend.direction, className: cn("flex items-center gap-1 text-xs font-medium", toneText[trendTone]), children: [_jsx(TrendIcon, { "aria-hidden": "true", className: "size-3.5 shrink-0" }), trend.label] })) : null, hint ? _jsx("dd", { className: "text-xs text-muted-foreground", children: hint }) : null] })] }));
|
|
49
|
+
}
|
|
50
|
+
const gridColumns = {
|
|
51
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
52
|
+
3: "grid-cols-1 sm:grid-cols-2 xl:grid-cols-3",
|
|
53
|
+
4: "grid-cols-1 sm:grid-cols-2 xl:grid-cols-4",
|
|
54
|
+
};
|
|
55
|
+
/** A responsive grid of Stat tiles. */
|
|
56
|
+
function StatGrid({ columns = 3, joined = false, className, ...props }) {
|
|
57
|
+
return (_jsx("div", { "data-slot": "stat-grid", className: cn("grid", gridColumns[columns], joined
|
|
58
|
+
? "gap-px border border-border bg-border [&>[data-slot=stat]]:border-0"
|
|
59
|
+
: "gap-3", className), ...props }));
|
|
60
|
+
}
|
|
61
|
+
export { Stat, StatGrid };
|
|
62
|
+
//# sourceMappingURL=stat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stat.js","sourceRoot":"","sources":["../../src/components/stat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type StepStatus = "complete" | "current" | "upcoming";
|
|
3
|
+
export interface StepsProps extends React.ComponentProps<"ol"> {
|
|
4
|
+
orientation?: "vertical" | "horizontal";
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* An ordered sequence: onboarding, a checkout, a "how it works" section, or a
|
|
8
|
+
* setup guide. It is an `<ol>`, so the count and position are announced, and
|
|
9
|
+
* numbers come from a CSS counter rather than props.
|
|
10
|
+
*/
|
|
11
|
+
declare function Steps({ orientation, className, ...props }: StepsProps): React.JSX.Element;
|
|
12
|
+
export interface StepProps extends Omit<React.ComponentProps<"li">, "title"> {
|
|
13
|
+
title: React.ReactNode;
|
|
14
|
+
description?: React.ReactNode;
|
|
15
|
+
status?: StepStatus;
|
|
16
|
+
/** Replaces the sr-only status prefix, for localization. */
|
|
17
|
+
statusLabel?: string;
|
|
18
|
+
}
|
|
19
|
+
declare function Step({ title, description, status, statusLabel, className, children, ...props }: StepProps): React.JSX.Element;
|
|
20
|
+
export { Step, Steps };
|
|
21
|
+
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/components/steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAQ7D,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;IAC5D,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CACzC;AAED;;;;GAIG;AACH,iBAAS,KAAK,CAAC,EAAE,WAAwB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,qBAe3E;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAC1E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,iBAAS,IAAI,CAAC,EACZ,KAAK,EACL,WAAW,EACX,MAAmB,EACnB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,SAAS,qBA4DX;AAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconCheck } from "@tabler/icons-react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
const statusText = {
|
|
5
|
+
complete: "Completed",
|
|
6
|
+
current: "Current step",
|
|
7
|
+
upcoming: "Not started",
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* An ordered sequence: onboarding, a checkout, a "how it works" section, or a
|
|
11
|
+
* setup guide. It is an `<ol>`, so the count and position are announced, and
|
|
12
|
+
* numbers come from a CSS counter rather than props.
|
|
13
|
+
*/
|
|
14
|
+
function Steps({ orientation = "vertical", className, ...props }) {
|
|
15
|
+
return (_jsx("ol", { "data-slot": "steps", "data-orientation": orientation, className: cn("group/steps [counter-reset:step]", orientation === "vertical"
|
|
16
|
+
? "flex flex-col"
|
|
17
|
+
: "grid grid-cols-1 gap-6 sm:auto-cols-fr sm:grid-flow-col sm:gap-4", className), ...props }));
|
|
18
|
+
}
|
|
19
|
+
function Step({ title, description, status = "upcoming", statusLabel, className, children, ...props }) {
|
|
20
|
+
return (_jsxs("li", { "data-slot": "step", "data-status": status, "aria-current": status === "current" ? "step" : undefined, className: cn("relative flex gap-4 [counter-increment:step] last:[&>[data-slot=step-connector]]:hidden", "group-data-[orientation=vertical]/steps:pb-8 group-data-[orientation=vertical]/steps:last:pb-0", "sm:group-data-[orientation=horizontal]/steps:flex-col sm:group-data-[orientation=horizontal]/steps:gap-3", className), ...props, children: [_jsx("span", { "aria-hidden": "true", "data-slot": "step-connector", className: cn("absolute bg-border", "group-data-[orientation=vertical]/steps:left-4 group-data-[orientation=vertical]/steps:top-9 group-data-[orientation=vertical]/steps:bottom-1 group-data-[orientation=vertical]/steps:w-px", "group-data-[orientation=horizontal]/steps:hidden sm:group-data-[orientation=horizontal]/steps:block", "sm:group-data-[orientation=horizontal]/steps:left-11 sm:group-data-[orientation=horizontal]/steps:right-1 sm:group-data-[orientation=horizontal]/steps:top-4 sm:group-data-[orientation=horizontal]/steps:h-px", status === "complete" && "bg-primary-200 dark:bg-primary-800") }), _jsx("span", { "aria-hidden": "true", "data-slot": "step-marker", className: cn("relative z-10 flex size-8 shrink-0 items-center justify-center text-xs font-bold tabular-nums", status === "upcoming"
|
|
21
|
+
? "border border-border bg-background text-muted-foreground"
|
|
22
|
+
: "bg-brand-fill text-on-brand-fill", status === "current" &&
|
|
23
|
+
"ring-2 ring-primary-200 ring-offset-2 ring-offset-background dark:ring-primary-800"), children: status === "complete" ? (_jsx(IconCheck, { className: "size-4" })) : (_jsx("span", { className: "before:content-[counter(step)]" })) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1 pt-1", children: [_jsxs("p", { className: cn("text-sm font-semibold", status === "upcoming" ? "text-muted-foreground" : "text-foreground"), children: [_jsxs("span", { className: "sr-only", children: [statusLabel ?? statusText[status], ": "] }), title] }), description ? (_jsx("p", { className: "text-sm leading-relaxed text-muted-foreground", children: description })) : null, children] })] }));
|
|
24
|
+
}
|
|
25
|
+
export { Step, Steps };
|
|
26
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/components/steps.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAIlC,MAAM,UAAU,GAA+B;IAC7C,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,aAAa;CACxB,CAAC;AAMF;;;;GAIG;AACH,SAAS,KAAK,CAAC,EAAE,WAAW,GAAG,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,EAAc;IAC1E,OAAO,CACL,0BACY,OAAO,sBACC,WAAW,EAC7B,SAAS,EAAE,EAAE,CACX,kCAAkC,EAClC,WAAW,KAAK,UAAU;YACxB,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,kEAAkE,EACtE,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAUD,SAAS,IAAI,CAAC,EACZ,KAAK,EACL,WAAW,EACX,MAAM,GAAG,UAAU,EACnB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACE;IACV,OAAO,CACL,2BACY,MAAM,iBACH,MAAM,kBACL,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACvD,SAAS,EAAE,EAAE,CACX,yFAAyF,EACzF,gGAAgG,EAChG,0GAA0G,EAC1G,SAAS,CACV,KACG,KAAK,aAET,8BACc,MAAM,eACR,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CACX,oBAAoB,EACpB,4LAA4L,EAC5L,qGAAqG,EACrG,gNAAgN,EAChN,MAAM,KAAK,UAAU,IAAI,oCAAoC,CAC9D,GACD,EACF,8BACc,MAAM,eACR,aAAa,EACvB,SAAS,EAAE,EAAE,CACX,+FAA+F,EAC/F,MAAM,KAAK,UAAU;oBACnB,CAAC,CAAC,0DAA0D;oBAC5D,CAAC,CAAC,kCAAkC,EACtC,MAAM,KAAK,SAAS;oBAClB,oFAAoF,CACvF,YAEA,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CACvB,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,GAAG,CACjC,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,gCAAgC,GAAG,CACpD,GACI,EACP,eAAK,SAAS,EAAC,yCAAyC,aACtD,aACE,SAAS,EAAE,EAAE,CACX,uBAAuB,EACvB,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,iBAAiB,CACpE,aAED,gBAAM,SAAS,EAAC,SAAS,aAAE,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EACrE,KAAK,IACJ,EACH,WAAW,CAAC,CAAC,CAAC,CACb,YAAG,SAAS,EAAC,+CAA+C,YAAE,WAAW,GAAK,CAC/E,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACL,IACH,CACN,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/components/switch.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAIrD,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,qBAsBnD;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Switch as SwitchPrimitive } from "radix-ui";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
function Switch({ className, ...props }) {
|
|
6
|
+
return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", className: cn("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center border border-transparent bg-input p-0.5 outline-none transition-colors duration-200", "focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", "disabled:cursor-not-allowed disabled:opacity-50", "data-[state=checked]:bg-primary", className), ...props, children: _jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: cn("pointer-events-none block size-4 bg-background shadow-xs transition-transform duration-200", "data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0") }) }));
|
|
7
|
+
}
|
|
8
|
+
export { Switch };
|
|
9
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/components/switch.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,MAAM,CAAC,EACd,SAAS,EACT,GAAG,KAAK,EAC0C;IAClD,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,iBACT,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,oJAAoJ,EACpJ,qHAAqH,EACrH,iDAAiD,EACjD,iCAAiC,EACjC,SAAS,CACV,KACG,KAAK,YAET,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,yEAAyE,CAC1E,GACD,GACmB,CACxB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface TableOfContentsItem {
|
|
3
|
+
/** The id of the heading on the page, without the hash. */
|
|
4
|
+
id: string;
|
|
5
|
+
title: React.ReactNode;
|
|
6
|
+
/** Heading depth relative to the first level. 1 is a top-level section. */
|
|
7
|
+
depth?: 1 | 2 | 3;
|
|
8
|
+
}
|
|
9
|
+
export interface TableOfContentsProps extends Omit<React.ComponentProps<"nav">, "children" | "title"> {
|
|
10
|
+
items: TableOfContentsItem[];
|
|
11
|
+
/** Visible heading of the list. Also names the navigation landmark. */
|
|
12
|
+
title?: React.ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Distance from the top of the viewport, in pixels, where a heading counts
|
|
15
|
+
* as reached. Set it to the height of a sticky header.
|
|
16
|
+
*/
|
|
17
|
+
offset?: number;
|
|
18
|
+
/** Disable scroll tracking, for a static list. */
|
|
19
|
+
trackActive?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* An "On this page" list that follows the reader. Links are real anchors, so
|
|
23
|
+
* they work without JavaScript and update the URL hash; the active section is
|
|
24
|
+
* read from the scroll position, once per frame, and marked with `aria-current`.
|
|
25
|
+
*/
|
|
26
|
+
declare function TableOfContents({ items, title, offset, trackActive, className, "aria-label": ariaLabel, ...props }: TableOfContentsProps): React.JSX.Element | null;
|
|
27
|
+
export { TableOfContents };
|
|
28
|
+
//# sourceMappingURL=table-of-contents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-of-contents.d.ts","sourceRoot":"","sources":["../../src/components/table-of-contents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IACnG,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,uEAAuE;IACvE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAQD;;;;GAIG;AACH,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,KAAsB,EACtB,MAAW,EACX,WAAkB,EAClB,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,GAAG,KAAK,EACT,EAAE,oBAAoB,4BA+FtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { IconList } from "@tabler/icons-react";
|
|
5
|
+
import { cn } from "../lib/utils.js";
|
|
6
|
+
const depthIndent = {
|
|
7
|
+
1: "pl-3",
|
|
8
|
+
2: "pl-6",
|
|
9
|
+
3: "pl-9",
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* An "On this page" list that follows the reader. Links are real anchors, so
|
|
13
|
+
* they work without JavaScript and update the URL hash; the active section is
|
|
14
|
+
* read from the scroll position, once per frame, and marked with `aria-current`.
|
|
15
|
+
*/
|
|
16
|
+
function TableOfContents({ items, title = "On this page", offset = 96, trackActive = true, className, "aria-label": ariaLabel, ...props }) {
|
|
17
|
+
const headingId = React.useId();
|
|
18
|
+
const [active, setActive] = React.useState(null);
|
|
19
|
+
const ids = items.map((item) => item.id).join("|");
|
|
20
|
+
React.useEffect(() => {
|
|
21
|
+
if (!trackActive)
|
|
22
|
+
return;
|
|
23
|
+
const targets = ids
|
|
24
|
+
.split("|")
|
|
25
|
+
.map((id) => document.getElementById(id))
|
|
26
|
+
.filter((element) => element !== null);
|
|
27
|
+
if (targets.length === 0)
|
|
28
|
+
return;
|
|
29
|
+
// The current section is the last heading that has scrolled up to the
|
|
30
|
+
// offset line. Reading positions on scroll, rather than waiting for
|
|
31
|
+
// intersection changes, keeps it right when a fast scroll jumps past a
|
|
32
|
+
// section. At the very bottom the last section wins, since short final
|
|
33
|
+
// sections can never reach the line.
|
|
34
|
+
let frame = 0;
|
|
35
|
+
let pending = false;
|
|
36
|
+
function update() {
|
|
37
|
+
pending = false;
|
|
38
|
+
const root = document.documentElement;
|
|
39
|
+
const atBottom = window.scrollY > 0 && window.innerHeight + window.scrollY >= root.scrollHeight - 2;
|
|
40
|
+
let current = targets[0].id;
|
|
41
|
+
if (atBottom) {
|
|
42
|
+
current = targets[targets.length - 1].id;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
for (const target of targets) {
|
|
46
|
+
if (target.getBoundingClientRect().top > offset + 8)
|
|
47
|
+
break;
|
|
48
|
+
current = target.id;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
setActive(current);
|
|
52
|
+
}
|
|
53
|
+
function schedule() {
|
|
54
|
+
if (pending)
|
|
55
|
+
return;
|
|
56
|
+
pending = true;
|
|
57
|
+
frame = window.requestAnimationFrame(update);
|
|
58
|
+
}
|
|
59
|
+
schedule();
|
|
60
|
+
window.addEventListener("scroll", schedule, { passive: true });
|
|
61
|
+
window.addEventListener("resize", schedule);
|
|
62
|
+
return () => {
|
|
63
|
+
if (pending)
|
|
64
|
+
window.cancelAnimationFrame(frame);
|
|
65
|
+
window.removeEventListener("scroll", schedule);
|
|
66
|
+
window.removeEventListener("resize", schedule);
|
|
67
|
+
};
|
|
68
|
+
}, [ids, offset, trackActive]);
|
|
69
|
+
if (items.length === 0)
|
|
70
|
+
return null;
|
|
71
|
+
return (_jsxs("nav", { "data-slot": "table-of-contents", "aria-label": ariaLabel, "aria-labelledby": ariaLabel ? undefined : headingId, className: cn("flex flex-col gap-2", className), ...props, children: [_jsxs("p", { id: headingId, className: "flex items-center gap-2 border-b border-border pb-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: [_jsx(IconList, { "aria-hidden": "true", className: "size-4 text-brand-icon" }), title] }), _jsx("ul", { className: "flex flex-col", children: items.map((item) => {
|
|
72
|
+
const current = active === item.id;
|
|
73
|
+
return (_jsx("li", { children: _jsx("a", { href: `#${item.id}`, "aria-current": current ? "location" : undefined, onClick: () => setActive(item.id), className: cn("block border-l-2 py-1.5 pr-2 text-xs leading-snug outline-none transition-colors duration-150", "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-focus-ring", depthIndent[item.depth ?? 1], current
|
|
74
|
+
? "border-primary-500 bg-brand-wash font-semibold text-link"
|
|
75
|
+
: "border-transparent text-muted-foreground hover:border-border hover:text-foreground"), children: item.title }) }, item.id));
|
|
76
|
+
}) })] }));
|
|
77
|
+
}
|
|
78
|
+
export { TableOfContents };
|
|
79
|
+
//# sourceMappingURL=table-of-contents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-of-contents.js","sourceRoot":"","sources":["../../src/components/table-of-contents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface TableProps extends React.ComponentProps<"table"> {
|
|
3
|
+
/** Props for the horizontally scrollable container, which is keyboard focusable. */
|
|
4
|
+
containerProps?: React.ComponentProps<"div">;
|
|
5
|
+
}
|
|
6
|
+
declare function Table({ className, containerProps, ...props }: TableProps): React.JSX.Element;
|
|
7
|
+
declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): React.JSX.Element;
|
|
8
|
+
declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): React.JSX.Element;
|
|
9
|
+
declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): React.JSX.Element;
|
|
10
|
+
declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): React.JSX.Element;
|
|
11
|
+
declare function TableHead({ className, ...props }: React.ComponentProps<"th">): React.JSX.Element;
|
|
12
|
+
declare function TableCell({ className, ...props }: React.ComponentProps<"td">): React.JSX.Element;
|
|
13
|
+
declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): React.JSX.Element;
|
|
14
|
+
export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, };
|
|
15
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;IAC/D,oFAAoF;IACpF,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;CAC9C;AAED,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,qBAqBjE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQ1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQ1E;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWpE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAYrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQrE;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,qBAQ7E;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,GACb,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
function Table({ className, containerProps, ...props }) {
|
|
4
|
+
const { className: containerClassName, tabIndex, ...containerRest } = containerProps ?? {};
|
|
5
|
+
return (_jsx("div", { ...containerRest, "data-slot": "table-container", tabIndex: tabIndex ?? 0, className: cn("relative w-full overflow-x-auto", containerClassName), children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom border-collapse text-sm", className), ...props }) }));
|
|
6
|
+
}
|
|
7
|
+
function TableHeader({ className, ...props }) {
|
|
8
|
+
return (_jsx("thead", { "data-slot": "table-header", className: cn("bg-muted/40 [&_tr]:border-b [&_tr]:border-border", className), ...props }));
|
|
9
|
+
}
|
|
10
|
+
function TableBody({ className, ...props }) {
|
|
11
|
+
return (_jsx("tbody", { "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className), ...props }));
|
|
12
|
+
}
|
|
13
|
+
function TableFooter({ className, ...props }) {
|
|
14
|
+
return (_jsx("tfoot", { "data-slot": "table-footer", className: cn("border-t border-border bg-muted/40 font-medium", className), ...props }));
|
|
15
|
+
}
|
|
16
|
+
function TableRow({ className, ...props }) {
|
|
17
|
+
return (_jsx("tr", { "data-slot": "table-row", className: cn("border-b border-border transition-colors duration-150 hover:bg-muted/40 data-[state=selected]:bg-muted", className), ...props }));
|
|
18
|
+
}
|
|
19
|
+
function TableHead({ className, ...props }) {
|
|
20
|
+
return (_jsx("th", { "data-slot": "table-head", scope: "col", className: cn("h-9 whitespace-nowrap px-3 text-left align-middle text-xs font-medium uppercase tracking-wide text-muted-foreground", className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
function TableCell({ className, ...props }) {
|
|
23
|
+
return (_jsx("td", { "data-slot": "table-cell", className: cn("px-3 py-3 align-middle text-foreground", className), ...props }));
|
|
24
|
+
}
|
|
25
|
+
function TableCaption({ className, ...props }) {
|
|
26
|
+
return (_jsx("caption", { "data-slot": "table-caption", className: cn("mt-4 text-xs text-muted-foreground", className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, };
|
|
29
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAOlC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,EAAc;IAChE,MAAM,EACJ,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,EACR,GAAG,aAAa,EACjB,GAAG,cAAc,IAAI,EAAE,CAAC;IAEzB,OAAO,CACL,iBACM,aAAa,eACP,iBAAiB,EAC3B,QAAQ,EAAE,QAAQ,IAAI,CAAC,EACvB,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,kBAAkB,CAAC,YAEpE,6BACY,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,SAAS,CAAC,KACrE,KAAK,GACT,GACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,kDAAkD,EAAE,SAAS,CAAC,KACxE,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACvE,OAAO,CACL,6BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAClD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,gDAAgD,EAAE,SAAS,CAAC,KACtE,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACnE,OAAO,CACL,0BACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,wGAAwG,EACxG,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,KAAK,EAAC,KAAK,EACX,SAAS,EAAE,EAAE,CACX,qHAAqH,EACrH,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,wCAAwC,EAAE,SAAS,CAAC,KAC9D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAmC;IAC5E,OAAO,CACL,+BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,GACb,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
3
|
+
declare const Tabs: React.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
declare function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>): React.JSX.Element;
|
|
5
|
+
declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>): React.JSX.Element;
|
|
7
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent };
|
|
8
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC;AAIjD,QAAA,MAAM,IAAI,gGAAqB,CAAC;AAEhC,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,qBAWjD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,qBAgBpD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,qBAWpD;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
const Tabs = TabsPrimitive.Root;
|
|
6
|
+
function TabsList({ className, ...props }) {
|
|
7
|
+
return (_jsx(TabsPrimitive.List, { "data-slot": "tabs-list", className: cn("inline-flex h-9 items-center justify-center gap-1 border border-border bg-muted/50 p-0.5 text-muted-foreground", className), ...props }));
|
|
8
|
+
}
|
|
9
|
+
function TabsTrigger({ className, ...props }) {
|
|
10
|
+
return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn("inline-flex h-8 items-center justify-center gap-1.5 whitespace-nowrap px-3 text-sm font-medium", "outline-none transition-colors duration-200 hover:text-foreground", "focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", "disabled:pointer-events-none disabled:opacity-50", "data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-xs", "[&_svg]:size-4 [&_svg]:shrink-0", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function TabsContent({ className, ...props }) {
|
|
13
|
+
return (_jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn("mt-4 outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent };
|
|
16
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAEhC,SAAS,QAAQ,CAAC,EAChB,SAAS,EACT,GAAG,KAAK,EACwC;IAChD,OAAO,CACL,KAAC,aAAa,CAAC,IAAI,iBACP,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,gHAAgH,EAChH,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EAC2C;IACnD,OAAO,CACL,KAAC,aAAa,CAAC,OAAO,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,gGAAgG,EAChG,mEAAmE,EACnE,qHAAqH,EACrH,kDAAkD,EAClD,qGAAqG,EACrG,iCAAiC,EACjC,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EAC2C;IACnD,OAAO,CACL,KAAC,aAAa,CAAC,OAAO,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,uIAAuI,EACvI,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const textareaClassName: string;
|
|
3
|
+
declare const Textarea: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & React.RefAttributes<HTMLTextAreaElement>>;
|
|
4
|
+
export { Textarea, textareaClassName };
|
|
5
|
+
//# sourceMappingURL=textarea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,iBAAiB,QAQZ,CAAC;AAEZ,QAAA,MAAM,QAAQ,0LAYZ,CAAC;AAGH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
const textareaClassName = [
|
|
5
|
+
"flex min-h-20 w-full resize-y border border-input bg-transparent p-3 text-sm text-foreground shadow-xs",
|
|
6
|
+
"outline-none transition-[color,background-color,border-color,box-shadow] duration-200",
|
|
7
|
+
"placeholder:text-muted-foreground",
|
|
8
|
+
"focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
9
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
10
|
+
"aria-invalid:border-destructive aria-invalid:ring-destructive/20",
|
|
11
|
+
"dark:bg-input/30",
|
|
12
|
+
].join(" ");
|
|
13
|
+
const Textarea = React.forwardRef(function Textarea({ className, ...props }, ref) {
|
|
14
|
+
return (_jsx("textarea", { ref: ref, "data-slot": "textarea", className: cn(textareaClassName, className), ...props }));
|
|
15
|
+
});
|
|
16
|
+
Textarea.displayName = "Textarea";
|
|
17
|
+
export { Textarea, textareaClassName };
|
|
18
|
+
//# sourceMappingURL=textarea.js.map
|