@askrjs/themes 0.0.28 → 0.0.30
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 +20 -0
- package/THEMING.md +26 -0
- package/dist/components/catalog.d.ts +10 -4
- package/dist/components/catalog.js +10 -4
- package/dist/components/catalog.js.map +1 -1
- package/dist/themes/default/index.css +85 -30
- package/package.json +7 -6
- package/src/components/catalog.tsx +10 -4
- package/src/themes/default/index.css +1 -0
- package/src/themes/default/styles/actions/button.css +8 -1
- package/src/themes/default/styles/base/accessibility.css +88 -0
- package/src/themes/default/styles/forms/input.css +3 -2
- package/src/themes/default/styles/overlays/dialog.css +1 -1
- package/src/themes/default/styles/overlays/dropdown.css +4 -3
- package/src/themes/default/styles/overlays/menubar.css +8 -4
- package/src/themes/default/tokens.css +20 -20
- package/templates/theme/index.css +1 -0
- package/templates/theme/styles/actions/button.css +7 -0
- package/templates/theme/styles/base/accessibility.css +88 -0
- package/templates/theme/styles/forms/input.css +3 -2
- package/templates/theme/styles/overlays/dialog.css +1 -1
- package/templates/theme/styles/overlays/dropdown.css +4 -3
- package/templates/theme/styles/overlays/menubar.css +8 -4
- package/templates/theme/tokens.css +20 -20
package/README.md
CHANGED
|
@@ -121,6 +121,26 @@ diverge instead of emitting unstyled markup. Use the same wrapper for an SSR
|
|
|
121
121
|
- `@askrjs/charts` for charts; chart components are intentionally not exported
|
|
122
122
|
from `@askrjs/themes`.
|
|
123
123
|
|
|
124
|
+
### Styling-only compatibility wrappers
|
|
125
|
+
|
|
126
|
+
`DataTable`, `ResizablePanelGroup`, `ResizablePanel`, and `ResizableHandle`
|
|
127
|
+
are styling-only catalog compatibility wrappers. Their names do not promise a
|
|
128
|
+
data-grid or panel-resizing runtime:
|
|
129
|
+
|
|
130
|
+
- `DataTable` provides a `data-table` container slot. It does not sort, filter,
|
|
131
|
+
select, or paginate. Compose semantic `Table` or `VirtualTable` primitives
|
|
132
|
+
from `@askrjs/ui` and keep data operations in application-owned state.
|
|
133
|
+
- `ResizablePanelGroup`, `ResizablePanel`, and `ResizableHandle` provide layout
|
|
134
|
+
and separator slots only. The group does not implement pointer or keyboard
|
|
135
|
+
resizing, track dimensions, or provide the ARIA value state required by an
|
|
136
|
+
interactive splitter.
|
|
137
|
+
|
|
138
|
+
These names remain exported for catalog compatibility. If an application needs
|
|
139
|
+
real resize behavior today, supply the pointer, keyboard, sizing, and ARIA
|
|
140
|
+
contract in application code or a dedicated behavior dependency. A future Askr
|
|
141
|
+
resize primitive must be implemented and tested in `@askrjs/ui` before themes
|
|
142
|
+
can compose and style it.
|
|
143
|
+
|
|
124
144
|
## Theme Contract
|
|
125
145
|
|
|
126
146
|
- Style public `data-*` hooks and token variables, not internal DOM structure.
|
package/THEMING.md
CHANGED
|
@@ -996,6 +996,32 @@ All official themes are tested for WCAG AA compliance:
|
|
|
996
996
|
|
|
997
997
|
The automated test suite (`tests/unit/contrast.test.ts`) validates these pairs across all themes in both light and dark modes.
|
|
998
998
|
|
|
999
|
+
The default light and dark modes additionally publish this canonical semantic
|
|
1000
|
+
pairing matrix. Ratios apply to browser-resolved colors after alpha and element
|
|
1001
|
+
opacity are composited:
|
|
1002
|
+
|
|
1003
|
+
| Semantic pairing | Minimum |
|
|
1004
|
+
| --------------------------------------------------------------------------------------- | ------: |
|
|
1005
|
+
| Ordinary or subtle text on its documented surface | 4.5:1 |
|
|
1006
|
+
| Strong boundaries, warning UI, and info UI on a surface | 3:1 |
|
|
1007
|
+
| The shared focus indicator on page, surface, muted, raised, overlay, and primary layers | 3:1 |
|
|
1008
|
+
| Disabled control fill against the page | 1.5:1 |
|
|
1009
|
+
| Disabled control boundary against the page when the fill is below 1.5:1 | 3:1 |
|
|
1010
|
+
|
|
1011
|
+
### Forced Colors
|
|
1012
|
+
|
|
1013
|
+
The default stylesheet includes a `forced-colors: active` layer. It uses
|
|
1014
|
+
system `Canvas`, `CanvasText`, `ButtonText`, `GrayText`, `Highlight`, and
|
|
1015
|
+
`HighlightText` colors for control boundaries, disabled states, overlay
|
|
1016
|
+
separation, and focus. Native system-color adjustment remains enabled; do not
|
|
1017
|
+
add `forced-color-adjust: none` unless a specific semantic image would
|
|
1018
|
+
otherwise lose meaning and the exception is documented and tested.
|
|
1019
|
+
|
|
1020
|
+
Normal browser CI resolves every canonical pairing in light and dark mode.
|
|
1021
|
+
Chromium CI also runs a real forced-colors context, while the stylesheet and
|
|
1022
|
+
template parity test protects the same contract for engines that cannot
|
|
1023
|
+
emulate it.
|
|
1024
|
+
|
|
999
1025
|
---
|
|
1000
1026
|
|
|
1001
1027
|
## Implementation Note
|
|
@@ -121,7 +121,10 @@ declare function CommandItem(props: CatalogComponentProps & {
|
|
|
121
121
|
declare function CommandSeparator(props: CatalogComponentProps): JSX.Element;
|
|
122
122
|
/** Renders the `command-shortcut` part of the shadcn-compatible catalog primitives. */
|
|
123
123
|
declare function CommandShortcut(props: CatalogComponentProps): JSX.Element;
|
|
124
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* Styling-only container for the `data-table` catalog slot. It does not sort, filter, select, or paginate data.
|
|
126
|
+
* Compose semantic `Table`/`VirtualTable` primitives with application-owned data state for those behaviors.
|
|
127
|
+
*/
|
|
125
128
|
declare function DataTable(props: CatalogComponentProps): JSX.Element;
|
|
126
129
|
/** Renders the `date-picker` part of the shadcn-compatible catalog primitives. */
|
|
127
130
|
declare function DatePicker(props: CatalogComponentProps): JSX.Element;
|
|
@@ -225,11 +228,14 @@ declare function PaginationPrevious(props: CatalogComponentProps): JSX.Element;
|
|
|
225
228
|
declare function PaginationNext(props: CatalogComponentProps): JSX.Element;
|
|
226
229
|
/** Renders a non-interactive ellipsis marker between pagination links. */
|
|
227
230
|
declare function PaginationEllipsis(props: CatalogComponentProps): JSX.Element;
|
|
228
|
-
/**
|
|
231
|
+
/**
|
|
232
|
+
* Styling-only container for the `resizable-panel-group` catalog slot. It does not implement resizing.
|
|
233
|
+
* Consumers own pointer, keyboard, sizing, and ARIA state until a behavior primitive exists in `@askrjs/ui`.
|
|
234
|
+
*/
|
|
229
235
|
declare function ResizablePanelGroup(props: CatalogComponentProps): JSX.Element;
|
|
230
|
-
/**
|
|
236
|
+
/** Styling-only `resizable-panel` slot; it does not implement resizing or manage panel dimensions. */
|
|
231
237
|
declare function ResizablePanel(props: CatalogComponentProps): JSX.Element;
|
|
232
|
-
/**
|
|
238
|
+
/** Styling-only separator slot; it does not implement resizing, pointer dragging, or keyboard controls. */
|
|
233
239
|
declare function ResizableHandle(props: CatalogComponentProps): JSX.Element;
|
|
234
240
|
/** Renders the `tabs-list` part of the shadcn-compatible catalog primitives. */
|
|
235
241
|
declare function TabsList(props: CatalogComponentProps): JSX.Element;
|
|
@@ -394,7 +394,10 @@ function CommandShortcut(props) {
|
|
|
394
394
|
element: "span"
|
|
395
395
|
});
|
|
396
396
|
}
|
|
397
|
-
/**
|
|
397
|
+
/**
|
|
398
|
+
* Styling-only container for the `data-table` catalog slot. It does not sort, filter, select, or paginate data.
|
|
399
|
+
* Compose semantic `Table`/`VirtualTable` primitives with application-owned data state for those behaviors.
|
|
400
|
+
*/
|
|
398
401
|
function DataTable(props) {
|
|
399
402
|
return catalogPart(props, { slot: "data-table" });
|
|
400
403
|
}
|
|
@@ -712,15 +715,18 @@ function PaginationEllipsis(props) {
|
|
|
712
715
|
element: "span"
|
|
713
716
|
});
|
|
714
717
|
}
|
|
715
|
-
/**
|
|
718
|
+
/**
|
|
719
|
+
* Styling-only container for the `resizable-panel-group` catalog slot. It does not implement resizing.
|
|
720
|
+
* Consumers own pointer, keyboard, sizing, and ARIA state until a behavior primitive exists in `@askrjs/ui`.
|
|
721
|
+
*/
|
|
716
722
|
function ResizablePanelGroup(props) {
|
|
717
723
|
return catalogPart(props, { slot: "resizable-panel-group" });
|
|
718
724
|
}
|
|
719
|
-
/**
|
|
725
|
+
/** Styling-only `resizable-panel` slot; it does not implement resizing or manage panel dimensions. */
|
|
720
726
|
function ResizablePanel(props) {
|
|
721
727
|
return catalogPart(props, { slot: "resizable-panel" });
|
|
722
728
|
}
|
|
723
|
-
/**
|
|
729
|
+
/** Styling-only separator slot; it does not implement resizing, pointer dragging, or keyboard controls. */
|
|
724
730
|
function ResizableHandle(props) {
|
|
725
731
|
return catalogPart(props, {
|
|
726
732
|
slot: "resizable-handle",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","names":[],"sources":["../../src/components/catalog.tsx"],"sourcesContent":["import type { JSX } from \"@askrjs/askr/jsx-runtime\";\nimport { Slot } from \"@askrjs/askr/foundations\";\nimport type { Ref } from \"@askrjs/askr/foundations/utilities\";\nimport { DialogContent, DialogDescription, DialogTitle } from \"@askrjs/ui\";\nimport { Block } from \"./block\";\nimport { classes } from \"./_internal/classes\";\nimport { mergeProps } from \"./_internal/merge-props\";\n\nconst CatalogDialogContent = DialogContent as (props: Record<string, unknown>) => JSX.Element;\nconst CatalogDialogTitle = DialogTitle as (props: Record<string, unknown>) => JSX.Element;\nconst CatalogDialogDescription = DialogDescription as (\n props: Record<string, unknown>,\n) => JSX.Element;\n\ntype CatalogElement = keyof JSX.IntrinsicElements;\n\n/**\n * Shared prop shape for the shadcn-compatible catalog primitives below: a\n * polymorphic `as`/`asChild` element plus passthrough attributes.\n */\nexport type CatalogComponentProps = Record<string, unknown> & {\n as?: CatalogElement;\n asChild?: boolean;\n children?: unknown;\n class?: string;\n ref?: Ref<HTMLElement>;\n};\n\ntype CatalogDefaults = {\n className?: string;\n element?: CatalogElement;\n role?: string;\n slot: string;\n};\n\nfunction catalogPart(props: CatalogComponentProps, defaults: CatalogDefaults): JSX.Element {\n const { as, asChild, children, class: className, ref, ...rest } = props;\n const Element = (as ?? defaults.element ?? \"div\") as \"div\";\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(defaults.className, className),\n \"data-slot\": defaults.slot,\n role: defaults.role,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return <Element {...finalProps}>{children}</Element>;\n}\n\nfunction buttonPart(props: CatalogComponentProps, slot: string, className?: string): JSX.Element {\n const { as, asChild, children, ref, class: classProp, type = \"button\", ...rest } = props;\n void as;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(className, classProp),\n \"data-slot\": slot,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return (\n <button type={type as \"button\" | \"submit\" | \"reset\"} {...finalProps}>\n {children}\n </button>\n );\n}\n\nfunction normalizeLegacySpace(value: unknown): unknown {\n if (value === \"none\") return \"0\";\n if (value === \"1\") return \"xs\";\n if (value === \"2\") return \"xs\";\n if (value === \"3\") return \"sm\";\n if (value === \"4\") return \"md\";\n if (value === \"5\") return \"lg\";\n if (value === \"6\") return \"xl\";\n if (value === \"8\") return \"2xl\";\n return value;\n}\n\nfunction layoutAlias(props: CatalogComponentProps, defaults: Record<string, unknown>): JSX.Element {\n const { gap, p, padding, style, wrap, ...rest } = props as CatalogComponentProps & {\n gap?: unknown;\n p?: unknown;\n padding?: unknown;\n style?: Record<string, unknown>;\n wrap?: boolean | string;\n };\n const BlockComponent = Block as (blockProps: Record<string, unknown>) => JSX.Element;\n const wrapStyle = wrap\n ? {\n ...style,\n flexWrap: \"wrap\",\n }\n : style;\n\n return (\n <BlockComponent\n {...defaults}\n {...rest}\n gap={normalizeLegacySpace(gap)}\n padding={padding ?? normalizeLegacySpace(p)}\n style={wrapStyle}\n />\n );\n}\n\n/** Legacy `Box` layout alias for {@link Block} with no default direction. */\nexport function Box(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, {});\n}\n\n/** Legacy `Stack` layout alias for {@link Block} that defaults to a column direction. */\nexport function Stack(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, { direction: \"column\" });\n}\n\n/** Legacy `Inline` layout alias for {@link Block} that defaults to a row direction. */\nexport function Inline(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, { direction: \"row\" });\n}\n\n/** Legacy `Shell` layout alias for {@link Block}; the `variant` prop is accepted but ignored. */\nexport function Shell(props: CatalogComponentProps & { variant?: unknown }): JSX.Element {\n const { variant: _variant, ...rest } = props;\n void _variant;\n return layoutAlias(rest, {});\n}\n\n/** Legacy `ShellNav` layout alias for {@link Block}. */\nexport function ShellNav(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, {});\n}\n\n/** Legacy `ShellMain` layout alias for {@link Block} that renders a growing `<main>` element. */\nexport function ShellMain(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, { as: \"main\", grow: true });\n}\n\n/** Renders the `alert-title` part of the shadcn-compatible catalog primitives. */\nexport function AlertTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"alert-title\", element: \"h3\", className: \"alert-title\" });\n}\n\n/** Renders the `alert-description` part of the shadcn-compatible catalog primitives. */\nexport function AlertDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, {\n slot: \"alert-description\",\n element: \"p\",\n className: \"alert-description\",\n });\n}\n\n/** Renders the `breadcrumb` part of the shadcn-compatible catalog primitives. */\nexport function Breadcrumb(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb\", element: \"nav\", role: \"navigation\" });\n}\n\n/** Renders the `breadcrumb-list` part of the shadcn-compatible catalog primitives. */\nexport function BreadcrumbList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb-list\", element: \"ol\" });\n}\n\n/** Renders the `breadcrumb-item` part of the shadcn-compatible catalog primitives. */\nexport function BreadcrumbItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb-item\", element: \"li\" });\n}\n\n/** Renders the `breadcrumb-link` part of the shadcn-compatible catalog primitives. */\nexport function BreadcrumbLink(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb-link\", element: \"a\" });\n}\n\n/** Renders the current (non-link) breadcrumb page, marked `aria-current=\"page\"`. */\nexport function BreadcrumbPage(props: CatalogComponentProps): JSX.Element {\n return catalogPart(\n { \"aria-current\": \"page\", ...props },\n {\n slot: \"breadcrumb-page\",\n element: \"span\",\n },\n );\n}\n\n/** Renders the separator between breadcrumb items (defaults to `\"/\"`). */\nexport function BreadcrumbSeparator(props: CatalogComponentProps): JSX.Element {\n const { children = \"/\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"breadcrumb-separator\",\n element: \"li\",\n },\n );\n}\n\n/** Renders a non-interactive ellipsis marker in a breadcrumb trail. */\nexport function BreadcrumbEllipsis(props: CatalogComponentProps): JSX.Element {\n const { children = \"...\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"breadcrumb-ellipsis\",\n element: \"span\",\n },\n );\n}\n\n/** Renders the `calendar` part of the shadcn-compatible catalog primitives. */\nexport function Calendar(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar\" });\n}\n\n/** Renders the `calendar-header` part of the shadcn-compatible catalog primitives. */\nexport function CalendarHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-header\" });\n}\n\n/** Renders the `calendar-caption` part of the shadcn-compatible catalog primitives. */\nexport function CalendarCaption(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-caption\" });\n}\n\n/** Renders the `calendar-nav` part of the shadcn-compatible catalog primitives. */\nexport function CalendarNav(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-nav\" });\n}\n\n/** Button that navigates the calendar to the previous month. */\nexport function CalendarPreviousButton(props: CatalogComponentProps): JSX.Element {\n const { children = \"Previous month\", ...rest } = props;\n return buttonPart(\n { \"aria-label\": \"Previous month\", children, ...rest },\n \"calendar-previous\",\n \"btn btn-icon btn-ghost\",\n );\n}\n\n/** Button that navigates the calendar to the next month. */\nexport function CalendarNextButton(props: CatalogComponentProps): JSX.Element {\n const { children = \"Next month\", ...rest } = props;\n return buttonPart(\n { \"aria-label\": \"Next month\", children, ...rest },\n \"calendar-next\",\n \"btn btn-icon btn-ghost\",\n );\n}\n\n/** Renders the `calendar-grid` part of the shadcn-compatible catalog primitives. */\nexport function CalendarGrid(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-grid\", role: \"grid\" });\n}\n\n/** Renders the `calendar-head` part of the shadcn-compatible catalog primitives. */\nexport function CalendarHead(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-head\", role: \"row\" });\n}\n\n/** Renders the `calendar-body` part of the shadcn-compatible catalog primitives. */\nexport function CalendarBody(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-body\" });\n}\n\n/** Renders the `calendar-row` part of the shadcn-compatible catalog primitives. */\nexport function CalendarRow(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-row\", role: \"row\" });\n}\n\n/** Renders the `calendar-cell` part of the shadcn-compatible catalog primitives. */\nexport function CalendarCell(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-cell\", role: \"gridcell\" });\n}\n\n/** Renders a single selectable day cell in the calendar grid, with selection/range/today state exposed as data attributes. */\nexport function CalendarDay(\n props: CatalogComponentProps & {\n disabled?: boolean;\n outside?: boolean;\n rangeEnd?: boolean;\n rangeMiddle?: boolean;\n rangeStart?: boolean;\n selected?: boolean;\n today?: boolean;\n },\n): JSX.Element {\n const { disabled, outside, rangeEnd, rangeMiddle, rangeStart, selected, today, ...rest } = props;\n return buttonPart(\n {\n disabled,\n \"aria-disabled\": disabled ? \"true\" : undefined,\n \"aria-selected\": selected ? \"true\" : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-outside\": outside ? \"true\" : undefined,\n \"data-range-end\": rangeEnd ? \"true\" : undefined,\n \"data-range-middle\": rangeMiddle ? \"true\" : undefined,\n \"data-range-start\": rangeStart ? \"true\" : undefined,\n \"data-selected\": selected ? \"true\" : undefined,\n \"data-today\": today ? \"true\" : undefined,\n ...rest,\n },\n \"calendar-day\",\n );\n}\n\n/** Renders the `carousel` part of the shadcn-compatible catalog primitives. */\nexport function Carousel(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"carousel\" });\n}\n\n/** Renders the `carousel-content` part of the shadcn-compatible catalog primitives. */\nexport function CarouselContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"carousel-content\" });\n}\n\n/** Renders the `carousel-item` part of the shadcn-compatible catalog primitives. */\nexport function CarouselItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"carousel-item\" });\n}\n\n/** Button that navigates the carousel to the previous item. */\nexport function CarouselPrevious(props: CatalogComponentProps): JSX.Element {\n const { children = \"Previous\", ...rest } = props;\n return buttonPart({ children, ...rest }, \"carousel-previous\", \"btn btn-icon\");\n}\n\n/** Button that navigates the carousel to the next item. */\nexport function CarouselNext(props: CatalogComponentProps): JSX.Element {\n const { children = \"Next\", ...rest } = props;\n return buttonPart({ children, ...rest }, \"carousel-next\", \"btn btn-icon\");\n}\n\n/** Renders the `combobox` part of the shadcn-compatible catalog primitives. */\nexport function Combobox(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"combobox\" });\n}\n\n/** Renders the combobox's text input, wired up with `role=\"combobox\"`. */\nexport function ComboboxInput(props: CatalogComponentProps): JSX.Element {\n const { ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"combobox-input\",\n role: \"combobox\",\n });\n\n return <input {...finalProps} />;\n}\n\n/** Renders the `combobox-list` part of the shadcn-compatible catalog primitives. */\nexport function ComboboxList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"combobox-list\", role: \"listbox\" });\n}\n\n/** Renders the `combobox-option` part of the shadcn-compatible catalog primitives. */\nexport function ComboboxOption(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"combobox-option\", role: \"option\" });\n}\n\n/** Renders the `command` part of the shadcn-compatible catalog primitives. */\nexport function Command(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command\" });\n}\n\n/** Renders the `command-dialog` part of the shadcn-compatible catalog primitives. */\nexport function CommandDialog(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-dialog\" });\n}\n\n/** Renders the command palette's search `<input>`. */\nexport function CommandInput(props: CatalogComponentProps): JSX.Element {\n const { ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"command-input\",\n });\n\n return <input {...finalProps} />;\n}\n\n/** Renders the `command-header` part of the shadcn-compatible catalog primitives. */\nexport function CommandHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-header\" });\n}\n\n/** Renders the `command-list` part of the shadcn-compatible catalog primitives. */\nexport function CommandList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-list\", role: \"listbox\" });\n}\n\n/** Renders the `command-empty` part of the shadcn-compatible catalog primitives. */\nexport function CommandEmpty(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-empty\" });\n}\n\n/** Renders the `command-group` part of the shadcn-compatible catalog primitives. */\nexport function CommandGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-group\", role: \"group\" });\n}\n\n/** Renders the `command-group-heading` part of the shadcn-compatible catalog primitives. */\nexport function CommandGroupHeading(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-group-heading\", element: \"div\" });\n}\n\n/** Renders a selectable command list entry, exposing `active`/`disabled`/`selected` as ARIA and data attributes. */\nexport function CommandItem(\n props: CatalogComponentProps & { active?: boolean; disabled?: boolean; selected?: boolean },\n): JSX.Element {\n const { active, disabled, selected, ...rest } = props;\n return catalogPart(\n {\n \"aria-disabled\": disabled ? \"true\" : undefined,\n \"aria-selected\": selected || active ? \"true\" : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-selected\": selected || active ? \"true\" : undefined,\n ...rest,\n },\n { slot: \"command-item\", role: \"option\" },\n );\n}\n\n/** Renders the `command-separator` part of the shadcn-compatible catalog primitives. */\nexport function CommandSeparator(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-separator\", element: \"div\", role: \"separator\" });\n}\n\n/** Renders the `command-shortcut` part of the shadcn-compatible catalog primitives. */\nexport function CommandShortcut(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-shortcut\", element: \"span\" });\n}\n\n/** Renders the `data-table` part of the shadcn-compatible catalog primitives. */\nexport function DataTable(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"data-table\" });\n}\n\n/** Renders the `date-picker` part of the shadcn-compatible catalog primitives. */\nexport function DatePicker(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"date-picker\" });\n}\n\n/** Renders the date picker's `<input type=\"date\">` by default. */\nexport function DatePickerInput(props: CatalogComponentProps): JSX.Element {\n const { ref, class: className, type = \"date\", ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"date-picker-input\",\n });\n\n return <input type={type as string} {...finalProps} />;\n}\n\n/** Sets the `dir` attribute (defaulting to `\"ltr\"`) on its wrapping element for RTL/LTR scoping. */\nexport function Direction(props: CatalogComponentProps & { dir?: \"ltr\" | \"rtl\" }): JSX.Element {\n const { dir = \"ltr\", ...rest } = props;\n return catalogPart({ dir, ...rest }, { slot: \"direction\" });\n}\n\n/** Renders the `empty` part of the shadcn-compatible catalog primitives. */\nexport function Empty(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty\" });\n}\n\n/** Renders the `empty-header` part of the shadcn-compatible catalog primitives. */\nexport function EmptyHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-header\" });\n}\n\n/** Renders the `empty-title` part of the shadcn-compatible catalog primitives. */\nexport function EmptyTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-title\", element: \"h3\" });\n}\n\n/** Renders the `empty-description` part of the shadcn-compatible catalog primitives. */\nexport function EmptyDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-description\", element: \"p\" });\n}\n\n/** Renders the `empty-content` part of the shadcn-compatible catalog primitives. */\nexport function EmptyContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-content\" });\n}\n\n/** Renders the `empty-media` part of the shadcn-compatible catalog primitives. */\nexport function EmptyMedia(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-media\" });\n}\n\n/** Renders the `field-group` part of the shadcn-compatible catalog primitives. */\nexport function FieldGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-group\" });\n}\n\n/** Renders the `field-set` part of the shadcn-compatible catalog primitives. */\nexport function FieldSet(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-set\", element: \"fieldset\" });\n}\n\n/** Renders the `field-legend` part of the shadcn-compatible catalog primitives. */\nexport function FieldLegend(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-legend\", element: \"legend\" });\n}\n\n/** Renders the `field-label` part of the shadcn-compatible catalog primitives. */\nexport function FieldLabel(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-label\", element: \"label\", className: \"label\" });\n}\n\n/** Renders the `field-description` part of the shadcn-compatible catalog primitives. */\nexport function FieldDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-description\", element: \"p\", className: \"field-hint\" });\n}\n\n/** Renders the `field-content` part of the shadcn-compatible catalog primitives. */\nexport function FieldContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-content\" });\n}\n\n/** Renders the `field-title` part of the shadcn-compatible catalog primitives. */\nexport function FieldTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-title\", element: \"div\" });\n}\n\n/** Renders the `field-separator` part of the shadcn-compatible catalog primitives. */\nexport function FieldSeparator(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-separator\", role: \"separator\" });\n}\n\n/** Renders the `input-otp` part of the shadcn-compatible catalog primitives. */\nexport function InputOTP(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"input-otp\", role: \"group\" });\n}\n\n/** Renders the `input-otp-group` part of the shadcn-compatible catalog primitives. */\nexport function InputOTPGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"input-otp-group\", role: \"group\" });\n}\n\n/** Renders the `input-otp-slot` part of the shadcn-compatible catalog primitives. */\nexport function InputOTPSlot(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"input-otp-slot\", element: \"span\" });\n}\n\n/** Renders the visual separator between InputOTP groups (defaults to `\"-\"`). */\nexport function InputOTPSeparator(props: CatalogComponentProps): JSX.Element {\n const { children = \"-\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"input-otp-separator\",\n element: \"span\",\n },\n );\n}\n\n/** Renders a generic list item part, exposing `active`/`size`/`variant` as data attributes. */\nexport function Item(\n props: CatalogComponentProps & {\n active?: boolean;\n size?: \"default\" | \"sm\" | \"xs\";\n variant?: \"default\" | \"outline\" | \"muted\";\n },\n): JSX.Element {\n const { active, size, variant, ...rest } = props;\n return catalogPart(\n {\n \"data-active\": active ? \"true\" : undefined,\n \"data-size\": size && size !== \"default\" ? size : undefined,\n \"data-variant\": variant && variant !== \"default\" ? variant : undefined,\n ...rest,\n },\n { slot: \"item\" },\n );\n}\n\n/** Renders the `item-group` part of the shadcn-compatible catalog primitives. */\nexport function ItemGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-group\" });\n}\n\n/** Renders the `item-header` part of the shadcn-compatible catalog primitives. */\nexport function ItemHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-header\" });\n}\n\n/** Renders the `item-media` part of the shadcn-compatible catalog primitives. */\nexport function ItemMedia(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-media\" });\n}\n\n/** Renders the `item-content` part of the shadcn-compatible catalog primitives. */\nexport function ItemContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-content\" });\n}\n\n/** Renders the `item-title` part of the shadcn-compatible catalog primitives. */\nexport function ItemTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-title\" });\n}\n\n/** Renders the `item-description` part of the shadcn-compatible catalog primitives. */\nexport function ItemDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-description\" });\n}\n\n/** Renders the `item-actions` part of the shadcn-compatible catalog primitives. */\nexport function ItemActions(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-actions\" });\n}\n\n/** Renders the `item-footer` part of the shadcn-compatible catalog primitives. */\nexport function ItemFooter(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-footer\" });\n}\n\n/** Renders the `kbd` part of the shadcn-compatible catalog primitives. */\nexport function Kbd(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"kbd\", element: \"kbd\" });\n}\n\n/** Renders a styled native `<select>` element. */\nexport function NativeSelect(props: CatalogComponentProps): JSX.Element {\n const { children, ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"native-select\",\n });\n\n return <select {...finalProps}>{children}</select>;\n}\n\n/** Renders the `navigation-menu` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenu(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu\", element: \"nav\" });\n}\n\n/** Renders the `navigation-menu-list` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-list\", element: \"ul\" });\n}\n\n/** Renders the `navigation-menu-item` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-item\", element: \"li\" });\n}\n\n/** Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuTrigger(props: CatalogComponentProps): JSX.Element {\n return buttonPart(props, \"navigation-menu-trigger\", \"nav-item\");\n}\n\n/** Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-content\" });\n}\n\n/** Renders the `navigation-menu-link` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuLink(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-link\", element: \"a\" });\n}\n\n/** Renders the `navigation-menu-viewport` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuViewport(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-viewport\" });\n}\n\n/** Renders the `navigation-menu-indicator` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuIndicator(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-indicator\" });\n}\n\n/** Renders the `pagination` part of the shadcn-compatible catalog primitives. */\nexport function Pagination(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"pagination\", element: \"nav\", role: \"navigation\" });\n}\n\n/** Renders the `pagination-content` part of the shadcn-compatible catalog primitives. */\nexport function PaginationContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"pagination-content\", element: \"ul\" });\n}\n\n/** Renders the `pagination-item` part of the shadcn-compatible catalog primitives. */\nexport function PaginationItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"pagination-item\", element: \"li\" });\n}\n\n/** Renders a pagination page link, marking it `aria-current=\"page\"` when `active`. */\nexport function PaginationLink(props: CatalogComponentProps & { active?: boolean }): JSX.Element {\n const { active, ...rest } = props;\n return catalogPart(\n {\n \"aria-current\": active ? \"page\" : undefined,\n \"data-active\": active ? \"true\" : undefined,\n ...rest,\n },\n { slot: \"pagination-link\", element: \"a\" },\n );\n}\n\n/** Pagination link that moves to the previous page. */\nexport function PaginationPrevious(props: CatalogComponentProps): JSX.Element {\n const { children = \"Previous\", ...rest } = props;\n return catalogPart({ children, ...rest }, { slot: \"pagination-previous\", element: \"a\" });\n}\n\n/** Pagination link that moves to the next page. */\nexport function PaginationNext(props: CatalogComponentProps): JSX.Element {\n const { children = \"Next\", ...rest } = props;\n return catalogPart({ children, ...rest }, { slot: \"pagination-next\", element: \"a\" });\n}\n\n/** Renders a non-interactive ellipsis marker between pagination links. */\nexport function PaginationEllipsis(props: CatalogComponentProps): JSX.Element {\n const { children = \"...\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"pagination-ellipsis\",\n element: \"span\",\n },\n );\n}\n\n/** Renders the `resizable-panel-group` part of the shadcn-compatible catalog primitives. */\nexport function ResizablePanelGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"resizable-panel-group\" });\n}\n\n/** Renders the `resizable-panel` part of the shadcn-compatible catalog primitives. */\nexport function ResizablePanel(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"resizable-panel\" });\n}\n\n/** Renders the `resizable-handle` part of the shadcn-compatible catalog primitives. */\nexport function ResizableHandle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"resizable-handle\", role: \"separator\" });\n}\n\n/** Renders the `tabs-list` part of the shadcn-compatible catalog primitives. */\nexport function TabsList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"tabs-list\", role: \"tablist\" });\n}\n\n/** Renders the `tabs-content` part of the shadcn-compatible catalog primitives. */\nexport function TabsTrigger(props: CatalogComponentProps): JSX.Element {\n return buttonPart(props, \"tabs-trigger\", \"tab\");\n}\n\n/** Renders the `tabs-content` part of the shadcn-compatible catalog primitives. */\nexport function TabsContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"tabs-content\", role: \"tabpanel\" });\n}\n\n/** Sheet variant of the dialog content part; defaults to sliding in from the right. */\nexport function SheetContent(\n props: CatalogComponentProps & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n },\n): JSX.Element {\n const { side = \"right\", ...rest } = props;\n return <CatalogDialogContent {...rest} data-side={side} data-slot=\"sheet-content\" />;\n}\n\n/** Renders the `sheet-header` part of the shadcn-compatible catalog primitives. */\nexport function SheetHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"sheet-header\" });\n}\n\n/** Renders the `sheet-footer` part of the shadcn-compatible catalog primitives. */\nexport function SheetFooter(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"sheet-footer\" });\n}\n\n/** Sheet variant of the dialog title part. */\nexport function SheetTitle(props: CatalogComponentProps): JSX.Element {\n return <CatalogDialogTitle {...props} data-slot=\"sheet-title\" />;\n}\n\n/** Sheet variant of the dialog description part. */\nexport function SheetDescription(props: CatalogComponentProps): JSX.Element {\n return <CatalogDialogDescription {...props} data-slot=\"sheet-description\" />;\n}\n\n/** Renders the `sonner` part of the shadcn-compatible catalog primitives. */\nexport function Toaster(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"sonner\" });\n}\n\n/** Alias of {@link Toaster} kept for shadcn/sonner API compatibility. */\nexport const Sonner = Toaster;\n\n/** Renders the `typography` part of the shadcn-compatible catalog primitives. */\nexport function Typography(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography\" });\n}\n\n/** Renders the `typography-h1` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH1(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h1\", element: \"h1\" });\n}\n\n/** Renders the `typography-h2` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH2(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h2\", element: \"h2\" });\n}\n\n/** Renders the `typography-h3` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH3(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h3\", element: \"h3\" });\n}\n\n/** Renders the `typography-h4` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH4(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h4\", element: \"h4\" });\n}\n\n/** Renders the `typography-p` part of the shadcn-compatible catalog primitives. */\nexport function TypographyP(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-p\", element: \"p\" });\n}\n\n/** Renders the `typography-blockquote` part of the shadcn-compatible catalog primitives. */\nexport function TypographyBlockquote(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-blockquote\", element: \"blockquote\" });\n}\n\n/** Renders the `typography-list` part of the shadcn-compatible catalog primitives. */\nexport function TypographyList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-list\", element: \"ul\" });\n}\n\n/** Renders the `typography-lead` part of the shadcn-compatible catalog primitives. */\nexport function TypographyLead(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-lead\", element: \"p\" });\n}\n\n/** Renders the `typography-muted` part of the shadcn-compatible catalog primitives. */\nexport function TypographyMuted(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-muted\", element: \"p\" });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","names":[],"sources":["../../src/components/catalog.tsx"],"sourcesContent":["import type { JSX } from \"@askrjs/askr/jsx-runtime\";\nimport { Slot } from \"@askrjs/askr/foundations\";\nimport type { Ref } from \"@askrjs/askr/foundations/utilities\";\nimport { DialogContent, DialogDescription, DialogTitle } from \"@askrjs/ui\";\nimport { Block } from \"./block\";\nimport { classes } from \"./_internal/classes\";\nimport { mergeProps } from \"./_internal/merge-props\";\n\nconst CatalogDialogContent = DialogContent as (props: Record<string, unknown>) => JSX.Element;\nconst CatalogDialogTitle = DialogTitle as (props: Record<string, unknown>) => JSX.Element;\nconst CatalogDialogDescription = DialogDescription as (\n props: Record<string, unknown>,\n) => JSX.Element;\n\ntype CatalogElement = keyof JSX.IntrinsicElements;\n\n/**\n * Shared prop shape for the shadcn-compatible catalog primitives below: a\n * polymorphic `as`/`asChild` element plus passthrough attributes.\n */\nexport type CatalogComponentProps = Record<string, unknown> & {\n as?: CatalogElement;\n asChild?: boolean;\n children?: unknown;\n class?: string;\n ref?: Ref<HTMLElement>;\n};\n\ntype CatalogDefaults = {\n className?: string;\n element?: CatalogElement;\n role?: string;\n slot: string;\n};\n\nfunction catalogPart(props: CatalogComponentProps, defaults: CatalogDefaults): JSX.Element {\n const { as, asChild, children, class: className, ref, ...rest } = props;\n const Element = (as ?? defaults.element ?? \"div\") as \"div\";\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(defaults.className, className),\n \"data-slot\": defaults.slot,\n role: defaults.role,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return <Element {...finalProps}>{children}</Element>;\n}\n\nfunction buttonPart(props: CatalogComponentProps, slot: string, className?: string): JSX.Element {\n const { as, asChild, children, ref, class: classProp, type = \"button\", ...rest } = props;\n void as;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(className, classProp),\n \"data-slot\": slot,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return (\n <button type={type as \"button\" | \"submit\" | \"reset\"} {...finalProps}>\n {children}\n </button>\n );\n}\n\nfunction normalizeLegacySpace(value: unknown): unknown {\n if (value === \"none\") return \"0\";\n if (value === \"1\") return \"xs\";\n if (value === \"2\") return \"xs\";\n if (value === \"3\") return \"sm\";\n if (value === \"4\") return \"md\";\n if (value === \"5\") return \"lg\";\n if (value === \"6\") return \"xl\";\n if (value === \"8\") return \"2xl\";\n return value;\n}\n\nfunction layoutAlias(props: CatalogComponentProps, defaults: Record<string, unknown>): JSX.Element {\n const { gap, p, padding, style, wrap, ...rest } = props as CatalogComponentProps & {\n gap?: unknown;\n p?: unknown;\n padding?: unknown;\n style?: Record<string, unknown>;\n wrap?: boolean | string;\n };\n const BlockComponent = Block as (blockProps: Record<string, unknown>) => JSX.Element;\n const wrapStyle = wrap\n ? {\n ...style,\n flexWrap: \"wrap\",\n }\n : style;\n\n return (\n <BlockComponent\n {...defaults}\n {...rest}\n gap={normalizeLegacySpace(gap)}\n padding={padding ?? normalizeLegacySpace(p)}\n style={wrapStyle}\n />\n );\n}\n\n/** Legacy `Box` layout alias for {@link Block} with no default direction. */\nexport function Box(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, {});\n}\n\n/** Legacy `Stack` layout alias for {@link Block} that defaults to a column direction. */\nexport function Stack(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, { direction: \"column\" });\n}\n\n/** Legacy `Inline` layout alias for {@link Block} that defaults to a row direction. */\nexport function Inline(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, { direction: \"row\" });\n}\n\n/** Legacy `Shell` layout alias for {@link Block}; the `variant` prop is accepted but ignored. */\nexport function Shell(props: CatalogComponentProps & { variant?: unknown }): JSX.Element {\n const { variant: _variant, ...rest } = props;\n void _variant;\n return layoutAlias(rest, {});\n}\n\n/** Legacy `ShellNav` layout alias for {@link Block}. */\nexport function ShellNav(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, {});\n}\n\n/** Legacy `ShellMain` layout alias for {@link Block} that renders a growing `<main>` element. */\nexport function ShellMain(props: CatalogComponentProps): JSX.Element {\n return layoutAlias(props, { as: \"main\", grow: true });\n}\n\n/** Renders the `alert-title` part of the shadcn-compatible catalog primitives. */\nexport function AlertTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"alert-title\", element: \"h3\", className: \"alert-title\" });\n}\n\n/** Renders the `alert-description` part of the shadcn-compatible catalog primitives. */\nexport function AlertDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, {\n slot: \"alert-description\",\n element: \"p\",\n className: \"alert-description\",\n });\n}\n\n/** Renders the `breadcrumb` part of the shadcn-compatible catalog primitives. */\nexport function Breadcrumb(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb\", element: \"nav\", role: \"navigation\" });\n}\n\n/** Renders the `breadcrumb-list` part of the shadcn-compatible catalog primitives. */\nexport function BreadcrumbList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb-list\", element: \"ol\" });\n}\n\n/** Renders the `breadcrumb-item` part of the shadcn-compatible catalog primitives. */\nexport function BreadcrumbItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb-item\", element: \"li\" });\n}\n\n/** Renders the `breadcrumb-link` part of the shadcn-compatible catalog primitives. */\nexport function BreadcrumbLink(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"breadcrumb-link\", element: \"a\" });\n}\n\n/** Renders the current (non-link) breadcrumb page, marked `aria-current=\"page\"`. */\nexport function BreadcrumbPage(props: CatalogComponentProps): JSX.Element {\n return catalogPart(\n { \"aria-current\": \"page\", ...props },\n {\n slot: \"breadcrumb-page\",\n element: \"span\",\n },\n );\n}\n\n/** Renders the separator between breadcrumb items (defaults to `\"/\"`). */\nexport function BreadcrumbSeparator(props: CatalogComponentProps): JSX.Element {\n const { children = \"/\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"breadcrumb-separator\",\n element: \"li\",\n },\n );\n}\n\n/** Renders a non-interactive ellipsis marker in a breadcrumb trail. */\nexport function BreadcrumbEllipsis(props: CatalogComponentProps): JSX.Element {\n const { children = \"...\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"breadcrumb-ellipsis\",\n element: \"span\",\n },\n );\n}\n\n/** Renders the `calendar` part of the shadcn-compatible catalog primitives. */\nexport function Calendar(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar\" });\n}\n\n/** Renders the `calendar-header` part of the shadcn-compatible catalog primitives. */\nexport function CalendarHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-header\" });\n}\n\n/** Renders the `calendar-caption` part of the shadcn-compatible catalog primitives. */\nexport function CalendarCaption(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-caption\" });\n}\n\n/** Renders the `calendar-nav` part of the shadcn-compatible catalog primitives. */\nexport function CalendarNav(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-nav\" });\n}\n\n/** Button that navigates the calendar to the previous month. */\nexport function CalendarPreviousButton(props: CatalogComponentProps): JSX.Element {\n const { children = \"Previous month\", ...rest } = props;\n return buttonPart(\n { \"aria-label\": \"Previous month\", children, ...rest },\n \"calendar-previous\",\n \"btn btn-icon btn-ghost\",\n );\n}\n\n/** Button that navigates the calendar to the next month. */\nexport function CalendarNextButton(props: CatalogComponentProps): JSX.Element {\n const { children = \"Next month\", ...rest } = props;\n return buttonPart(\n { \"aria-label\": \"Next month\", children, ...rest },\n \"calendar-next\",\n \"btn btn-icon btn-ghost\",\n );\n}\n\n/** Renders the `calendar-grid` part of the shadcn-compatible catalog primitives. */\nexport function CalendarGrid(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-grid\", role: \"grid\" });\n}\n\n/** Renders the `calendar-head` part of the shadcn-compatible catalog primitives. */\nexport function CalendarHead(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-head\", role: \"row\" });\n}\n\n/** Renders the `calendar-body` part of the shadcn-compatible catalog primitives. */\nexport function CalendarBody(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-body\" });\n}\n\n/** Renders the `calendar-row` part of the shadcn-compatible catalog primitives. */\nexport function CalendarRow(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-row\", role: \"row\" });\n}\n\n/** Renders the `calendar-cell` part of the shadcn-compatible catalog primitives. */\nexport function CalendarCell(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"calendar-cell\", role: \"gridcell\" });\n}\n\n/** Renders a single selectable day cell in the calendar grid, with selection/range/today state exposed as data attributes. */\nexport function CalendarDay(\n props: CatalogComponentProps & {\n disabled?: boolean;\n outside?: boolean;\n rangeEnd?: boolean;\n rangeMiddle?: boolean;\n rangeStart?: boolean;\n selected?: boolean;\n today?: boolean;\n },\n): JSX.Element {\n const { disabled, outside, rangeEnd, rangeMiddle, rangeStart, selected, today, ...rest } = props;\n return buttonPart(\n {\n disabled,\n \"aria-disabled\": disabled ? \"true\" : undefined,\n \"aria-selected\": selected ? \"true\" : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-outside\": outside ? \"true\" : undefined,\n \"data-range-end\": rangeEnd ? \"true\" : undefined,\n \"data-range-middle\": rangeMiddle ? \"true\" : undefined,\n \"data-range-start\": rangeStart ? \"true\" : undefined,\n \"data-selected\": selected ? \"true\" : undefined,\n \"data-today\": today ? \"true\" : undefined,\n ...rest,\n },\n \"calendar-day\",\n );\n}\n\n/** Renders the `carousel` part of the shadcn-compatible catalog primitives. */\nexport function Carousel(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"carousel\" });\n}\n\n/** Renders the `carousel-content` part of the shadcn-compatible catalog primitives. */\nexport function CarouselContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"carousel-content\" });\n}\n\n/** Renders the `carousel-item` part of the shadcn-compatible catalog primitives. */\nexport function CarouselItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"carousel-item\" });\n}\n\n/** Button that navigates the carousel to the previous item. */\nexport function CarouselPrevious(props: CatalogComponentProps): JSX.Element {\n const { children = \"Previous\", ...rest } = props;\n return buttonPart({ children, ...rest }, \"carousel-previous\", \"btn btn-icon\");\n}\n\n/** Button that navigates the carousel to the next item. */\nexport function CarouselNext(props: CatalogComponentProps): JSX.Element {\n const { children = \"Next\", ...rest } = props;\n return buttonPart({ children, ...rest }, \"carousel-next\", \"btn btn-icon\");\n}\n\n/** Renders the `combobox` part of the shadcn-compatible catalog primitives. */\nexport function Combobox(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"combobox\" });\n}\n\n/** Renders the combobox's text input, wired up with `role=\"combobox\"`. */\nexport function ComboboxInput(props: CatalogComponentProps): JSX.Element {\n const { ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"combobox-input\",\n role: \"combobox\",\n });\n\n return <input {...finalProps} />;\n}\n\n/** Renders the `combobox-list` part of the shadcn-compatible catalog primitives. */\nexport function ComboboxList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"combobox-list\", role: \"listbox\" });\n}\n\n/** Renders the `combobox-option` part of the shadcn-compatible catalog primitives. */\nexport function ComboboxOption(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"combobox-option\", role: \"option\" });\n}\n\n/** Renders the `command` part of the shadcn-compatible catalog primitives. */\nexport function Command(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command\" });\n}\n\n/** Renders the `command-dialog` part of the shadcn-compatible catalog primitives. */\nexport function CommandDialog(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-dialog\" });\n}\n\n/** Renders the command palette's search `<input>`. */\nexport function CommandInput(props: CatalogComponentProps): JSX.Element {\n const { ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"command-input\",\n });\n\n return <input {...finalProps} />;\n}\n\n/** Renders the `command-header` part of the shadcn-compatible catalog primitives. */\nexport function CommandHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-header\" });\n}\n\n/** Renders the `command-list` part of the shadcn-compatible catalog primitives. */\nexport function CommandList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-list\", role: \"listbox\" });\n}\n\n/** Renders the `command-empty` part of the shadcn-compatible catalog primitives. */\nexport function CommandEmpty(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-empty\" });\n}\n\n/** Renders the `command-group` part of the shadcn-compatible catalog primitives. */\nexport function CommandGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-group\", role: \"group\" });\n}\n\n/** Renders the `command-group-heading` part of the shadcn-compatible catalog primitives. */\nexport function CommandGroupHeading(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-group-heading\", element: \"div\" });\n}\n\n/** Renders a selectable command list entry, exposing `active`/`disabled`/`selected` as ARIA and data attributes. */\nexport function CommandItem(\n props: CatalogComponentProps & { active?: boolean; disabled?: boolean; selected?: boolean },\n): JSX.Element {\n const { active, disabled, selected, ...rest } = props;\n return catalogPart(\n {\n \"aria-disabled\": disabled ? \"true\" : undefined,\n \"aria-selected\": selected || active ? \"true\" : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-selected\": selected || active ? \"true\" : undefined,\n ...rest,\n },\n { slot: \"command-item\", role: \"option\" },\n );\n}\n\n/** Renders the `command-separator` part of the shadcn-compatible catalog primitives. */\nexport function CommandSeparator(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-separator\", element: \"div\", role: \"separator\" });\n}\n\n/** Renders the `command-shortcut` part of the shadcn-compatible catalog primitives. */\nexport function CommandShortcut(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"command-shortcut\", element: \"span\" });\n}\n\n/**\n * Styling-only container for the `data-table` catalog slot. It does not sort, filter, select, or paginate data.\n * Compose semantic `Table`/`VirtualTable` primitives with application-owned data state for those behaviors.\n */\nexport function DataTable(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"data-table\" });\n}\n\n/** Renders the `date-picker` part of the shadcn-compatible catalog primitives. */\nexport function DatePicker(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"date-picker\" });\n}\n\n/** Renders the date picker's `<input type=\"date\">` by default. */\nexport function DatePickerInput(props: CatalogComponentProps): JSX.Element {\n const { ref, class: className, type = \"date\", ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"date-picker-input\",\n });\n\n return <input type={type as string} {...finalProps} />;\n}\n\n/** Sets the `dir` attribute (defaulting to `\"ltr\"`) on its wrapping element for RTL/LTR scoping. */\nexport function Direction(props: CatalogComponentProps & { dir?: \"ltr\" | \"rtl\" }): JSX.Element {\n const { dir = \"ltr\", ...rest } = props;\n return catalogPart({ dir, ...rest }, { slot: \"direction\" });\n}\n\n/** Renders the `empty` part of the shadcn-compatible catalog primitives. */\nexport function Empty(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty\" });\n}\n\n/** Renders the `empty-header` part of the shadcn-compatible catalog primitives. */\nexport function EmptyHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-header\" });\n}\n\n/** Renders the `empty-title` part of the shadcn-compatible catalog primitives. */\nexport function EmptyTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-title\", element: \"h3\" });\n}\n\n/** Renders the `empty-description` part of the shadcn-compatible catalog primitives. */\nexport function EmptyDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-description\", element: \"p\" });\n}\n\n/** Renders the `empty-content` part of the shadcn-compatible catalog primitives. */\nexport function EmptyContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-content\" });\n}\n\n/** Renders the `empty-media` part of the shadcn-compatible catalog primitives. */\nexport function EmptyMedia(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"empty-media\" });\n}\n\n/** Renders the `field-group` part of the shadcn-compatible catalog primitives. */\nexport function FieldGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-group\" });\n}\n\n/** Renders the `field-set` part of the shadcn-compatible catalog primitives. */\nexport function FieldSet(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-set\", element: \"fieldset\" });\n}\n\n/** Renders the `field-legend` part of the shadcn-compatible catalog primitives. */\nexport function FieldLegend(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-legend\", element: \"legend\" });\n}\n\n/** Renders the `field-label` part of the shadcn-compatible catalog primitives. */\nexport function FieldLabel(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-label\", element: \"label\", className: \"label\" });\n}\n\n/** Renders the `field-description` part of the shadcn-compatible catalog primitives. */\nexport function FieldDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-description\", element: \"p\", className: \"field-hint\" });\n}\n\n/** Renders the `field-content` part of the shadcn-compatible catalog primitives. */\nexport function FieldContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-content\" });\n}\n\n/** Renders the `field-title` part of the shadcn-compatible catalog primitives. */\nexport function FieldTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-title\", element: \"div\" });\n}\n\n/** Renders the `field-separator` part of the shadcn-compatible catalog primitives. */\nexport function FieldSeparator(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"field-separator\", role: \"separator\" });\n}\n\n/** Renders the `input-otp` part of the shadcn-compatible catalog primitives. */\nexport function InputOTP(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"input-otp\", role: \"group\" });\n}\n\n/** Renders the `input-otp-group` part of the shadcn-compatible catalog primitives. */\nexport function InputOTPGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"input-otp-group\", role: \"group\" });\n}\n\n/** Renders the `input-otp-slot` part of the shadcn-compatible catalog primitives. */\nexport function InputOTPSlot(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"input-otp-slot\", element: \"span\" });\n}\n\n/** Renders the visual separator between InputOTP groups (defaults to `\"-\"`). */\nexport function InputOTPSeparator(props: CatalogComponentProps): JSX.Element {\n const { children = \"-\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"input-otp-separator\",\n element: \"span\",\n },\n );\n}\n\n/** Renders a generic list item part, exposing `active`/`size`/`variant` as data attributes. */\nexport function Item(\n props: CatalogComponentProps & {\n active?: boolean;\n size?: \"default\" | \"sm\" | \"xs\";\n variant?: \"default\" | \"outline\" | \"muted\";\n },\n): JSX.Element {\n const { active, size, variant, ...rest } = props;\n return catalogPart(\n {\n \"data-active\": active ? \"true\" : undefined,\n \"data-size\": size && size !== \"default\" ? size : undefined,\n \"data-variant\": variant && variant !== \"default\" ? variant : undefined,\n ...rest,\n },\n { slot: \"item\" },\n );\n}\n\n/** Renders the `item-group` part of the shadcn-compatible catalog primitives. */\nexport function ItemGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-group\" });\n}\n\n/** Renders the `item-header` part of the shadcn-compatible catalog primitives. */\nexport function ItemHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-header\" });\n}\n\n/** Renders the `item-media` part of the shadcn-compatible catalog primitives. */\nexport function ItemMedia(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-media\" });\n}\n\n/** Renders the `item-content` part of the shadcn-compatible catalog primitives. */\nexport function ItemContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-content\" });\n}\n\n/** Renders the `item-title` part of the shadcn-compatible catalog primitives. */\nexport function ItemTitle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-title\" });\n}\n\n/** Renders the `item-description` part of the shadcn-compatible catalog primitives. */\nexport function ItemDescription(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-description\" });\n}\n\n/** Renders the `item-actions` part of the shadcn-compatible catalog primitives. */\nexport function ItemActions(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-actions\" });\n}\n\n/** Renders the `item-footer` part of the shadcn-compatible catalog primitives. */\nexport function ItemFooter(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"item-footer\" });\n}\n\n/** Renders the `kbd` part of the shadcn-compatible catalog primitives. */\nexport function Kbd(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"kbd\", element: \"kbd\" });\n}\n\n/** Renders a styled native `<select>` element. */\nexport function NativeSelect(props: CatalogComponentProps): JSX.Element {\n const { children, ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(\"input\", className),\n \"data-slot\": \"native-select\",\n });\n\n return <select {...finalProps}>{children}</select>;\n}\n\n/** Renders the `navigation-menu` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenu(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu\", element: \"nav\" });\n}\n\n/** Renders the `navigation-menu-list` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-list\", element: \"ul\" });\n}\n\n/** Renders the `navigation-menu-item` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-item\", element: \"li\" });\n}\n\n/** Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuTrigger(props: CatalogComponentProps): JSX.Element {\n return buttonPart(props, \"navigation-menu-trigger\", \"nav-item\");\n}\n\n/** Renders the `navigation-menu-content` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-content\" });\n}\n\n/** Renders the `navigation-menu-link` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuLink(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-link\", element: \"a\" });\n}\n\n/** Renders the `navigation-menu-viewport` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuViewport(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-viewport\" });\n}\n\n/** Renders the `navigation-menu-indicator` part of the shadcn-compatible catalog primitives. */\nexport function NavigationMenuIndicator(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"navigation-menu-indicator\" });\n}\n\n/** Renders the `pagination` part of the shadcn-compatible catalog primitives. */\nexport function Pagination(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"pagination\", element: \"nav\", role: \"navigation\" });\n}\n\n/** Renders the `pagination-content` part of the shadcn-compatible catalog primitives. */\nexport function PaginationContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"pagination-content\", element: \"ul\" });\n}\n\n/** Renders the `pagination-item` part of the shadcn-compatible catalog primitives. */\nexport function PaginationItem(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"pagination-item\", element: \"li\" });\n}\n\n/** Renders a pagination page link, marking it `aria-current=\"page\"` when `active`. */\nexport function PaginationLink(props: CatalogComponentProps & { active?: boolean }): JSX.Element {\n const { active, ...rest } = props;\n return catalogPart(\n {\n \"aria-current\": active ? \"page\" : undefined,\n \"data-active\": active ? \"true\" : undefined,\n ...rest,\n },\n { slot: \"pagination-link\", element: \"a\" },\n );\n}\n\n/** Pagination link that moves to the previous page. */\nexport function PaginationPrevious(props: CatalogComponentProps): JSX.Element {\n const { children = \"Previous\", ...rest } = props;\n return catalogPart({ children, ...rest }, { slot: \"pagination-previous\", element: \"a\" });\n}\n\n/** Pagination link that moves to the next page. */\nexport function PaginationNext(props: CatalogComponentProps): JSX.Element {\n const { children = \"Next\", ...rest } = props;\n return catalogPart({ children, ...rest }, { slot: \"pagination-next\", element: \"a\" });\n}\n\n/** Renders a non-interactive ellipsis marker between pagination links. */\nexport function PaginationEllipsis(props: CatalogComponentProps): JSX.Element {\n const { children = \"...\", ...rest } = props;\n return catalogPart(\n { \"aria-hidden\": \"true\", children, ...rest },\n {\n slot: \"pagination-ellipsis\",\n element: \"span\",\n },\n );\n}\n\n/**\n * Styling-only container for the `resizable-panel-group` catalog slot. It does not implement resizing.\n * Consumers own pointer, keyboard, sizing, and ARIA state until a behavior primitive exists in `@askrjs/ui`.\n */\nexport function ResizablePanelGroup(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"resizable-panel-group\" });\n}\n\n/** Styling-only `resizable-panel` slot; it does not implement resizing or manage panel dimensions. */\nexport function ResizablePanel(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"resizable-panel\" });\n}\n\n/** Styling-only separator slot; it does not implement resizing, pointer dragging, or keyboard controls. */\nexport function ResizableHandle(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"resizable-handle\", role: \"separator\" });\n}\n\n/** Renders the `tabs-list` part of the shadcn-compatible catalog primitives. */\nexport function TabsList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"tabs-list\", role: \"tablist\" });\n}\n\n/** Renders the `tabs-content` part of the shadcn-compatible catalog primitives. */\nexport function TabsTrigger(props: CatalogComponentProps): JSX.Element {\n return buttonPart(props, \"tabs-trigger\", \"tab\");\n}\n\n/** Renders the `tabs-content` part of the shadcn-compatible catalog primitives. */\nexport function TabsContent(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"tabs-content\", role: \"tabpanel\" });\n}\n\n/** Sheet variant of the dialog content part; defaults to sliding in from the right. */\nexport function SheetContent(\n props: CatalogComponentProps & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n },\n): JSX.Element {\n const { side = \"right\", ...rest } = props;\n return <CatalogDialogContent {...rest} data-side={side} data-slot=\"sheet-content\" />;\n}\n\n/** Renders the `sheet-header` part of the shadcn-compatible catalog primitives. */\nexport function SheetHeader(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"sheet-header\" });\n}\n\n/** Renders the `sheet-footer` part of the shadcn-compatible catalog primitives. */\nexport function SheetFooter(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"sheet-footer\" });\n}\n\n/** Sheet variant of the dialog title part. */\nexport function SheetTitle(props: CatalogComponentProps): JSX.Element {\n return <CatalogDialogTitle {...props} data-slot=\"sheet-title\" />;\n}\n\n/** Sheet variant of the dialog description part. */\nexport function SheetDescription(props: CatalogComponentProps): JSX.Element {\n return <CatalogDialogDescription {...props} data-slot=\"sheet-description\" />;\n}\n\n/** Renders the `sonner` part of the shadcn-compatible catalog primitives. */\nexport function Toaster(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"sonner\" });\n}\n\n/** Alias of {@link Toaster} kept for shadcn/sonner API compatibility. */\nexport const Sonner = Toaster;\n\n/** Renders the `typography` part of the shadcn-compatible catalog primitives. */\nexport function Typography(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography\" });\n}\n\n/** Renders the `typography-h1` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH1(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h1\", element: \"h1\" });\n}\n\n/** Renders the `typography-h2` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH2(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h2\", element: \"h2\" });\n}\n\n/** Renders the `typography-h3` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH3(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h3\", element: \"h3\" });\n}\n\n/** Renders the `typography-h4` part of the shadcn-compatible catalog primitives. */\nexport function TypographyH4(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-h4\", element: \"h4\" });\n}\n\n/** Renders the `typography-p` part of the shadcn-compatible catalog primitives. */\nexport function TypographyP(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-p\", element: \"p\" });\n}\n\n/** Renders the `typography-blockquote` part of the shadcn-compatible catalog primitives. */\nexport function TypographyBlockquote(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-blockquote\", element: \"blockquote\" });\n}\n\n/** Renders the `typography-list` part of the shadcn-compatible catalog primitives. */\nexport function TypographyList(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-list\", element: \"ul\" });\n}\n\n/** Renders the `typography-lead` part of the shadcn-compatible catalog primitives. */\nexport function TypographyLead(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-lead\", element: \"p\" });\n}\n\n/** Renders the `typography-muted` part of the shadcn-compatible catalog primitives. */\nexport function TypographyMuted(props: CatalogComponentProps): JSX.Element {\n return catalogPart(props, { slot: \"typography-muted\", element: \"p\" });\n}\n"],"mappings":"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"}
|
|
@@ -163,16 +163,16 @@
|
|
|
163
163
|
--ak-dark-color-primary-ink: oklch(98.5% 0 0);
|
|
164
164
|
--ak-dark-color-text: oklch(98.5% 0 0);
|
|
165
165
|
--ak-dark-color-text-muted: oklch(70.8% 0 0);
|
|
166
|
-
--ak-dark-color-text-subtle: oklch(
|
|
166
|
+
--ak-dark-color-text-subtle: oklch(74% 0 0);
|
|
167
167
|
--ak-dark-color-text-inverse: oklch(20.5% 0 0);
|
|
168
168
|
--ak-dark-color-bg: oklch(14.5% 0 0);
|
|
169
169
|
--ak-dark-color-surface: oklch(20.5% 0 0);
|
|
170
170
|
--ak-dark-color-surface-muted: oklch(26.9% 0 0);
|
|
171
|
-
--ak-dark-color-surface-raised: oklch(
|
|
172
|
-
--ak-dark-color-surface-overlay: oklch(
|
|
171
|
+
--ak-dark-color-surface-raised: oklch(23.5% 0 0);
|
|
172
|
+
--ak-dark-color-surface-overlay: oklch(26.9% 0 0);
|
|
173
173
|
--ak-dark-color-border-subtle: oklch(26.9% 0 0);
|
|
174
174
|
--ak-dark-color-border: oklch(100% 0 0 / .1);
|
|
175
|
-
--ak-dark-color-border-strong: oklch(
|
|
175
|
+
--ak-dark-color-border-strong: oklch(54% 0 0);
|
|
176
176
|
--ak-dark-color-success: #4ade80;
|
|
177
177
|
--ak-dark-color-success-soft: #052e16;
|
|
178
178
|
--ak-dark-color-success-ink: #bbf7d0;
|
|
@@ -187,11 +187,11 @@
|
|
|
187
187
|
--ak-dark-color-info-ink: #bae6fd;
|
|
188
188
|
--ak-dark-color-link: var(--ak-dark-color-text);
|
|
189
189
|
--ak-dark-color-link-hover: color-mix(in oklch, var(--ak-dark-color-link) 88%, transparent);
|
|
190
|
-
--ak-dark-color-focus-ring: oklch(
|
|
191
|
-
--ak-dark-color-disabled-bg: oklch(
|
|
190
|
+
--ak-dark-color-focus-ring: oklch(60% 0 0);
|
|
191
|
+
--ak-dark-color-disabled-bg: oklch(32% 0 0);
|
|
192
192
|
--ak-dark-color-disabled-surface: oklch(20.5% 0 0);
|
|
193
|
-
--ak-dark-color-disabled-border: oklch(
|
|
194
|
-
--ak-dark-color-disabled-text: oklch(
|
|
193
|
+
--ak-dark-color-disabled-border: oklch(54% 0 0);
|
|
194
|
+
--ak-dark-color-disabled-text: oklch(74% 0 0);
|
|
195
195
|
--ak-dark-color-selected: oklch(26.9% 0 0);
|
|
196
196
|
--ak-dark-color-selected-border: oklch(100% 0 0 / .1);
|
|
197
197
|
--ak-dark-color-hover: oklch(26.9% 0 0);
|
|
@@ -211,35 +211,35 @@
|
|
|
211
211
|
--ak-color-primary-ink: oklch(20.5% 0 0);
|
|
212
212
|
--ak-color-text: oklch(14.5% 0 0);
|
|
213
213
|
--ak-color-text-muted: oklch(55.6% 0 0);
|
|
214
|
-
--ak-color-text-subtle: oklch(
|
|
214
|
+
--ak-color-text-subtle: oklch(54% 0 0);
|
|
215
215
|
--ak-color-text-inverse: oklch(98.5% 0 0);
|
|
216
216
|
--ak-color-bg: oklch(100% 0 0);
|
|
217
|
-
--ak-color-surface: oklch(
|
|
218
|
-
--ak-color-surface-muted: oklch(
|
|
219
|
-
--ak-color-surface-raised: oklch(
|
|
220
|
-
--ak-color-surface-overlay: oklch(
|
|
217
|
+
--ak-color-surface: oklch(98.5% 0 0);
|
|
218
|
+
--ak-color-surface-muted: oklch(95% 0 0);
|
|
219
|
+
--ak-color-surface-raised: oklch(97% 0 0);
|
|
220
|
+
--ak-color-surface-overlay: oklch(94% 0 0);
|
|
221
221
|
--ak-color-border-subtle: oklch(92.2% 0 0);
|
|
222
222
|
--ak-color-border: oklch(92.2% 0 0);
|
|
223
|
-
--ak-color-border-strong: oklch(
|
|
223
|
+
--ak-color-border-strong: oklch(62% 0 0);
|
|
224
224
|
--ak-color-success: #16a34a;
|
|
225
225
|
--ak-color-success-soft: #16a34a24;
|
|
226
226
|
--ak-color-success-ink: #166534;
|
|
227
|
-
--ak-color-warning: #
|
|
227
|
+
--ak-color-warning: #b45309;
|
|
228
228
|
--ak-color-warning-soft: #f59e0b29;
|
|
229
229
|
--ak-color-warning-ink: #854d0e;
|
|
230
230
|
--ak-color-danger: oklch(57.7% .245 27.325);
|
|
231
231
|
--ak-color-danger-soft: oklch(57.7% .245 27.325 / .2);
|
|
232
232
|
--ak-color-danger-ink: #991b1b;
|
|
233
|
-
--ak-color-info: #
|
|
233
|
+
--ak-color-info: #0369a1;
|
|
234
234
|
--ak-color-info-soft: #0ea5e929;
|
|
235
235
|
--ak-color-info-ink: #0c4a6e;
|
|
236
236
|
--ak-color-link: var(--ak-color-primary);
|
|
237
237
|
--ak-color-link-hover: color-mix(in oklch, var(--ak-color-link) 88%, transparent);
|
|
238
|
-
--ak-color-focus-ring: oklch(
|
|
239
|
-
--ak-color-disabled-bg: oklch(
|
|
238
|
+
--ak-color-focus-ring: oklch(58% 0 0);
|
|
239
|
+
--ak-color-disabled-bg: oklch(90% 0 0);
|
|
240
240
|
--ak-color-disabled-surface: oklch(100% 0 0);
|
|
241
|
-
--ak-color-disabled-border: oklch(
|
|
242
|
-
--ak-color-disabled-text: oklch(
|
|
241
|
+
--ak-color-disabled-border: oklch(62% 0 0);
|
|
242
|
+
--ak-color-disabled-text: oklch(50% 0 0);
|
|
243
243
|
--ak-color-selected: oklch(97% 0 0);
|
|
244
244
|
--ak-color-selected-border: oklch(92.2% 0 0);
|
|
245
245
|
--ak-color-hover: oklch(97% 0 0);
|
|
@@ -1857,7 +1857,7 @@
|
|
|
1857
1857
|
}
|
|
1858
1858
|
|
|
1859
1859
|
:where([data-slot="theme-toggle-content"]) {
|
|
1860
|
-
--_ak-theme-toggle-icon-size: var(--ak-theme-toggle-icon-size, var(--ak-
|
|
1860
|
+
--_ak-theme-toggle-icon-size: var(--ak-theme-toggle-icon-size, var(--ak-font-size-sm));
|
|
1861
1861
|
flex: none;
|
|
1862
1862
|
justify-content: center;
|
|
1863
1863
|
align-items: center;
|
|
@@ -2105,6 +2105,12 @@
|
|
|
2105
2105
|
padding-inline: 0;
|
|
2106
2106
|
}
|
|
2107
2107
|
|
|
2108
|
+
:where(.btn, .btn-close, [data-slot="button"]):focus-visible {
|
|
2109
|
+
border-color: var(--ak-color-ring);
|
|
2110
|
+
box-shadow: 0 0 0 var(--ak-focus-ring-width) var(--ak-color-focus-ring);
|
|
2111
|
+
outline: none;
|
|
2112
|
+
}
|
|
2113
|
+
|
|
2108
2114
|
:where(.btn-group, [data-slot="button-group"]) {
|
|
2109
2115
|
align-items: stretch;
|
|
2110
2116
|
gap: 0;
|
|
@@ -2410,11 +2416,12 @@
|
|
|
2410
2416
|
|
|
2411
2417
|
:where(.input[data-disabled], .input:disabled, [data-slot="input"][data-disabled]) {
|
|
2412
2418
|
background: var(--ak-color-disabled-bg);
|
|
2413
|
-
border-color: var(--ak-color-
|
|
2419
|
+
border-color: var(--ak-color-disabled-border);
|
|
2420
|
+
color: var(--ak-color-disabled-text);
|
|
2414
2421
|
box-shadow: none;
|
|
2415
2422
|
pointer-events: none;
|
|
2416
2423
|
cursor: not-allowed;
|
|
2417
|
-
opacity:
|
|
2424
|
+
opacity: 1;
|
|
2418
2425
|
}
|
|
2419
2426
|
|
|
2420
2427
|
:where(.input-sm, [data-slot="input"][data-size="sm"]) {
|
|
@@ -4805,15 +4812,16 @@
|
|
|
4805
4812
|
color: var(--ak-color-text);
|
|
4806
4813
|
}
|
|
4807
4814
|
|
|
4808
|
-
:where(.dropdown-item, [data-slot="dropdown-item"]):hover > :where([data-slot="icon"], svg), :where(.dropdown-item, [data-slot="dropdown-item"]):focus-visible > :where([data-slot="icon"], svg) {
|
|
4815
|
+
:where(.dropdown-item, [data-slot="dropdown-item"]):hover > :where([data-slot="icon"], svg), :where(.dropdown-item, [data-slot="dropdown-item"]):is(:focus, :focus-visible) > :where([data-slot="icon"], svg) {
|
|
4809
4816
|
color: currentColor;
|
|
4810
4817
|
}
|
|
4811
4818
|
|
|
4812
|
-
:where(.dropdown-item, [data-slot="dropdown-item"]):focus-visible {
|
|
4819
|
+
:where(.dropdown-item, [data-slot="dropdown-item"]):is(:focus, :focus-visible) {
|
|
4820
|
+
outline: var(--ak-focus-ring-width) solid var(--ak-color-focus-ring);
|
|
4821
|
+
outline-offset: calc(-1 * var(--ak-focus-ring-width));
|
|
4813
4822
|
background: var(--ak-color-hover);
|
|
4814
4823
|
color: var(--ak-color-text);
|
|
4815
4824
|
box-shadow: none;
|
|
4816
|
-
outline: none;
|
|
4817
4825
|
}
|
|
4818
4826
|
|
|
4819
4827
|
:where(.dropdown-item, [data-slot="dropdown-item"])[data-disabled] {
|
|
@@ -5036,15 +5044,16 @@
|
|
|
5036
5044
|
color: var(--ak-color-text);
|
|
5037
5045
|
}
|
|
5038
5046
|
|
|
5039
|
-
:where([data-slot="menubar-item"]:hover > :where([data-slot="icon"], svg), [data-slot="menubar-item"]:focus-visible > :where([data-slot="icon"], svg), [data-slot="menubar-sub-trigger"]:hover > :where([data-slot="icon"], svg), [data-slot="menubar-sub-trigger"]:focus-visible > :where([data-slot="icon"], svg)) {
|
|
5047
|
+
:where([data-slot="menubar-item"]:hover > :where([data-slot="icon"], svg), [data-slot="menubar-item"]:is(:focus, :focus-visible) > :where([data-slot="icon"], svg), [data-slot="menubar-sub-trigger"]:hover > :where([data-slot="icon"], svg), [data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible) > :where([data-slot="icon"], svg)) {
|
|
5040
5048
|
color: currentColor;
|
|
5041
5049
|
}
|
|
5042
5050
|
|
|
5043
|
-
:where([data-slot="menubar-item"]:focus-visible, [data-slot="menubar-sub-trigger"]:focus-visible) {
|
|
5051
|
+
:where([data-slot="menubar-item"]:is(:focus, :focus-visible), [data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible)) {
|
|
5052
|
+
outline: var(--ak-focus-ring-width) solid var(--ak-color-focus-ring);
|
|
5053
|
+
outline-offset: calc(-1 * var(--ak-focus-ring-width));
|
|
5044
5054
|
background: var(--ak-color-hover);
|
|
5045
5055
|
color: var(--ak-color-text);
|
|
5046
5056
|
box-shadow: none;
|
|
5047
|
-
outline: none;
|
|
5048
5057
|
}
|
|
5049
5058
|
|
|
5050
5059
|
:where([data-slot="menubar-item"][data-disabled], [data-slot="menubar-sub-trigger"][data-disabled]) {
|
|
@@ -5365,7 +5374,7 @@
|
|
|
5365
5374
|
}
|
|
5366
5375
|
|
|
5367
5376
|
:where([data-slot="dialog-content"], [data-slot="sheet-content"]) {
|
|
5368
|
-
--_dialog-surface: var(--ak-color-
|
|
5377
|
+
--_dialog-surface: var(--ak-color-surface-raised);
|
|
5369
5378
|
--_dialog-border: var(--ak-color-border);
|
|
5370
5379
|
gap: var(--ak-space-md);
|
|
5371
5380
|
box-sizing: border-box;
|
|
@@ -5935,3 +5944,49 @@
|
|
|
5935
5944
|
animation: none;
|
|
5936
5945
|
}
|
|
5937
5946
|
}
|
|
5947
|
+
|
|
5948
|
+
:where([data-slot="button"][data-disabled], [data-slot="input"][data-disabled], [data-slot="textarea"][data-disabled], [data-slot="select-trigger"][data-disabled], [data-slot="checkbox"][data-disabled], [data-slot="radio-group-item"][data-disabled], [data-slot="switch"][data-disabled]) {
|
|
5949
|
+
background: var(--ak-color-disabled-bg);
|
|
5950
|
+
border-color: var(--ak-color-disabled-border);
|
|
5951
|
+
color: var(--ak-color-disabled-text);
|
|
5952
|
+
box-shadow: none;
|
|
5953
|
+
opacity: 1;
|
|
5954
|
+
}
|
|
5955
|
+
|
|
5956
|
+
@media (forced-colors: active) {
|
|
5957
|
+
:where([data-slot="button"], [data-slot="input"], [data-slot="textarea"], [data-slot="select-trigger"], [data-slot="checkbox"], [data-slot="radio-group-item"], [data-slot="switch"], [data-slot="dropdown-trigger"], [tabindex]:not([tabindex="-1"]), [role="menuitem"]):focus-visible {
|
|
5958
|
+
outline-offset: 2px;
|
|
5959
|
+
box-shadow: none;
|
|
5960
|
+
outline: 2px solid highlight;
|
|
5961
|
+
}
|
|
5962
|
+
|
|
5963
|
+
:where([data-slot="button"], [data-slot="input"], [data-slot="textarea"], [data-slot="select-trigger"], [data-slot="checkbox"], [data-slot="radio-group-item"], [data-slot="switch"], [data-slot="dropdown-content"], [data-slot="menubar-content"]) {
|
|
5964
|
+
border-color: buttontext;
|
|
5965
|
+
}
|
|
5966
|
+
|
|
5967
|
+
:where([data-disabled]) {
|
|
5968
|
+
color: graytext;
|
|
5969
|
+
opacity: 1;
|
|
5970
|
+
border-color: graytext;
|
|
5971
|
+
}
|
|
5972
|
+
|
|
5973
|
+
:where([data-slot="dialog-content"], [data-slot="sheet-content"], [data-slot="popover-content"], [data-slot="dropdown-content"], [data-slot="menubar-content"]) {
|
|
5974
|
+
color: canvastext;
|
|
5975
|
+
box-shadow: none;
|
|
5976
|
+
background: canvas;
|
|
5977
|
+
border: 2px solid canvastext;
|
|
5978
|
+
}
|
|
5979
|
+
|
|
5980
|
+
:where([data-slot="dropdown-item"]:is(:focus, :focus-visible), [data-slot="menubar-item"]:is(:focus, :focus-visible), [data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible)) {
|
|
5981
|
+
outline-offset: -2px;
|
|
5982
|
+
color: highlighttext;
|
|
5983
|
+
background: highlight;
|
|
5984
|
+
outline: 2px solid highlight;
|
|
5985
|
+
}
|
|
5986
|
+
|
|
5987
|
+
:where([data-slot="dialog-overlay"]) {
|
|
5988
|
+
opacity: .75;
|
|
5989
|
+
backdrop-filter: none;
|
|
5990
|
+
background: canvas;
|
|
5991
|
+
}
|
|
5992
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askrjs/themes",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.30",
|
|
4
4
|
"description": "Default theme tokens, styles, and component presets for Askr apps.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"askr",
|
|
@@ -101,10 +101,11 @@
|
|
|
101
101
|
"bench:tier2": "cross-env NODE_ENV=production vp test bench --run --reporter=default --config vitest.bench.tier2.config.ts",
|
|
102
102
|
"bench:tier3": "cross-env NODE_ENV=production vp test bench --run --reporter=default --config vitest.bench.tier3.config.ts",
|
|
103
103
|
"bench:tier4": "cross-env NODE_ENV=production vp test bench --run --reporter=default --config vitest.bench.tier4.config.ts --mode production",
|
|
104
|
-
"test": "npm run test:unit && npm run test:checks && npm run test:jsdom && npm run test:browser",
|
|
104
|
+
"test": "npm run test:unit && npm run test:checks && npm run test:jsdom && npm run test:browser && npm run test:forced-colors",
|
|
105
105
|
"test:unit": "vp test run -c vitest.test.unit.config.ts",
|
|
106
106
|
"test:jsdom": "cross-env NODE_ENV=production vp test run -c vitest.test.jsdom.config.ts",
|
|
107
107
|
"test:browser": "vp test run -c vitest.test.browser.config.ts --mode production",
|
|
108
|
+
"test:forced-colors": "vp test run -c vitest.test.forced-colors.config.ts --mode production",
|
|
108
109
|
"test:publint": "publint",
|
|
109
110
|
"test:installed": "node tests/installed-types.js",
|
|
110
111
|
"fmt": "vp fmt .",
|
|
@@ -119,8 +120,8 @@
|
|
|
119
120
|
"test:checks": "vp test run -c vitest.test.checks.config.ts"
|
|
120
121
|
},
|
|
121
122
|
"devDependencies": {
|
|
122
|
-
"@askrjs/askr": ">=0.0.
|
|
123
|
-
"@askrjs/ui": ">=0.0.
|
|
123
|
+
"@askrjs/askr": ">=0.0.92 <0.1.0",
|
|
124
|
+
"@askrjs/ui": ">=0.0.30 <0.1.0",
|
|
124
125
|
"@askrjs/vite": ">=0.0.12 <0.1.0",
|
|
125
126
|
"@tsdown/css": "0.22.14",
|
|
126
127
|
"@types/node": "^26.2.0",
|
|
@@ -135,8 +136,8 @@
|
|
|
135
136
|
"vite-plus": "^0.2.8"
|
|
136
137
|
},
|
|
137
138
|
"peerDependencies": {
|
|
138
|
-
"@askrjs/askr": ">=0.0.
|
|
139
|
-
"@askrjs/ui": ">=0.0.
|
|
139
|
+
"@askrjs/askr": ">=0.0.92 <0.1.0",
|
|
140
|
+
"@askrjs/ui": ">=0.0.30 <0.1.0"
|
|
140
141
|
},
|
|
141
142
|
"engines": {
|
|
142
143
|
"node": ">=24.0.0"
|
|
@@ -435,7 +435,10 @@ export function CommandShortcut(props: CatalogComponentProps): JSX.Element {
|
|
|
435
435
|
return catalogPart(props, { slot: "command-shortcut", element: "span" });
|
|
436
436
|
}
|
|
437
437
|
|
|
438
|
-
/**
|
|
438
|
+
/**
|
|
439
|
+
* Styling-only container for the `data-table` catalog slot. It does not sort, filter, select, or paginate data.
|
|
440
|
+
* Compose semantic `Table`/`VirtualTable` primitives with application-owned data state for those behaviors.
|
|
441
|
+
*/
|
|
439
442
|
export function DataTable(props: CatalogComponentProps): JSX.Element {
|
|
440
443
|
return catalogPart(props, { slot: "data-table" });
|
|
441
444
|
}
|
|
@@ -729,17 +732,20 @@ export function PaginationEllipsis(props: CatalogComponentProps): JSX.Element {
|
|
|
729
732
|
);
|
|
730
733
|
}
|
|
731
734
|
|
|
732
|
-
/**
|
|
735
|
+
/**
|
|
736
|
+
* Styling-only container for the `resizable-panel-group` catalog slot. It does not implement resizing.
|
|
737
|
+
* Consumers own pointer, keyboard, sizing, and ARIA state until a behavior primitive exists in `@askrjs/ui`.
|
|
738
|
+
*/
|
|
733
739
|
export function ResizablePanelGroup(props: CatalogComponentProps): JSX.Element {
|
|
734
740
|
return catalogPart(props, { slot: "resizable-panel-group" });
|
|
735
741
|
}
|
|
736
742
|
|
|
737
|
-
/**
|
|
743
|
+
/** Styling-only `resizable-panel` slot; it does not implement resizing or manage panel dimensions. */
|
|
738
744
|
export function ResizablePanel(props: CatalogComponentProps): JSX.Element {
|
|
739
745
|
return catalogPart(props, { slot: "resizable-panel" });
|
|
740
746
|
}
|
|
741
747
|
|
|
742
|
-
/**
|
|
748
|
+
/** Styling-only separator slot; it does not implement resizing, pointer dragging, or keyboard controls. */
|
|
743
749
|
export function ResizableHandle(props: CatalogComponentProps): JSX.Element {
|
|
744
750
|
return catalogPart(props, { slot: "resizable-handle", role: "separator" });
|
|
745
751
|
}
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
:where([data-slot="theme-toggle-content"]) {
|
|
40
|
-
--_ak-theme-toggle-icon-size: var(--ak-theme-toggle-icon-size, var(--ak-
|
|
40
|
+
--_ak-theme-toggle-icon-size: var(--ak-theme-toggle-icon-size, var(--ak-font-size-sm));
|
|
41
41
|
display: inline-flex;
|
|
42
42
|
align-items: center;
|
|
43
43
|
justify-content: center;
|
|
@@ -288,3 +288,10 @@
|
|
|
288
288
|
min-inline-size: var(--_button-height);
|
|
289
289
|
padding-inline: 0;
|
|
290
290
|
}
|
|
291
|
+
|
|
292
|
+
/* Keep the focus contract last so variant box-shadow resets cannot hide it. */
|
|
293
|
+
:where(.btn, .btn-close, [data-slot="button"]):focus-visible {
|
|
294
|
+
outline: none;
|
|
295
|
+
border-color: var(--ak-color-ring);
|
|
296
|
+
box-shadow: 0 0 0 var(--ak-focus-ring-width) var(--ak-color-focus-ring);
|
|
297
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Cross-component accessibility states live at the end of the default-theme
|
|
3
|
+
* cascade so new controls inherit the same perceivability contract.
|
|
4
|
+
*/
|
|
5
|
+
:where(
|
|
6
|
+
[data-slot="button"][data-disabled],
|
|
7
|
+
[data-slot="input"][data-disabled],
|
|
8
|
+
[data-slot="textarea"][data-disabled],
|
|
9
|
+
[data-slot="select-trigger"][data-disabled],
|
|
10
|
+
[data-slot="checkbox"][data-disabled],
|
|
11
|
+
[data-slot="radio-group-item"][data-disabled],
|
|
12
|
+
[data-slot="switch"][data-disabled]
|
|
13
|
+
) {
|
|
14
|
+
background: var(--ak-color-disabled-bg);
|
|
15
|
+
border-color: var(--ak-color-disabled-border);
|
|
16
|
+
color: var(--ak-color-disabled-text);
|
|
17
|
+
box-shadow: none;
|
|
18
|
+
opacity: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media (forced-colors: active) {
|
|
22
|
+
:where(
|
|
23
|
+
[data-slot="button"],
|
|
24
|
+
[data-slot="input"],
|
|
25
|
+
[data-slot="textarea"],
|
|
26
|
+
[data-slot="select-trigger"],
|
|
27
|
+
[data-slot="checkbox"],
|
|
28
|
+
[data-slot="radio-group-item"],
|
|
29
|
+
[data-slot="switch"],
|
|
30
|
+
[data-slot="dropdown-trigger"],
|
|
31
|
+
[tabindex]:not([tabindex="-1"]),
|
|
32
|
+
[role="menuitem"]
|
|
33
|
+
):focus-visible {
|
|
34
|
+
outline: 2px solid Highlight;
|
|
35
|
+
outline-offset: 2px;
|
|
36
|
+
box-shadow: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where(
|
|
40
|
+
[data-slot="button"],
|
|
41
|
+
[data-slot="input"],
|
|
42
|
+
[data-slot="textarea"],
|
|
43
|
+
[data-slot="select-trigger"],
|
|
44
|
+
[data-slot="checkbox"],
|
|
45
|
+
[data-slot="radio-group-item"],
|
|
46
|
+
[data-slot="switch"],
|
|
47
|
+
[data-slot="dropdown-content"],
|
|
48
|
+
[data-slot="menubar-content"]
|
|
49
|
+
) {
|
|
50
|
+
border-color: ButtonText;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:where([data-disabled]) {
|
|
54
|
+
border-color: GrayText;
|
|
55
|
+
color: GrayText;
|
|
56
|
+
opacity: 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where(
|
|
60
|
+
[data-slot="dialog-content"],
|
|
61
|
+
[data-slot="sheet-content"],
|
|
62
|
+
[data-slot="popover-content"],
|
|
63
|
+
[data-slot="dropdown-content"],
|
|
64
|
+
[data-slot="menubar-content"]
|
|
65
|
+
) {
|
|
66
|
+
border: 2px solid CanvasText;
|
|
67
|
+
background: Canvas;
|
|
68
|
+
color: CanvasText;
|
|
69
|
+
box-shadow: none;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:where(
|
|
73
|
+
[data-slot="dropdown-item"]:is(:focus, :focus-visible),
|
|
74
|
+
[data-slot="menubar-item"]:is(:focus, :focus-visible),
|
|
75
|
+
[data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible)
|
|
76
|
+
) {
|
|
77
|
+
outline: 2px solid Highlight;
|
|
78
|
+
outline-offset: -2px;
|
|
79
|
+
background: Highlight;
|
|
80
|
+
color: HighlightText;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:where([data-slot="dialog-overlay"]) {
|
|
84
|
+
background: Canvas;
|
|
85
|
+
opacity: 0.75;
|
|
86
|
+
backdrop-filter: none;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -44,11 +44,12 @@
|
|
|
44
44
|
|
|
45
45
|
:where(.input[data-disabled], .input:disabled, [data-slot="input"][data-disabled]) {
|
|
46
46
|
background: var(--ak-color-disabled-bg);
|
|
47
|
-
border-color: var(--ak-color-
|
|
47
|
+
border-color: var(--ak-color-disabled-border);
|
|
48
|
+
color: var(--ak-color-disabled-text);
|
|
48
49
|
box-shadow: none;
|
|
49
50
|
pointer-events: none;
|
|
50
51
|
cursor: not-allowed;
|
|
51
|
-
opacity:
|
|
52
|
+
opacity: 1;
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
:where(.input-sm, [data-slot="input"][data-size="sm"]) {
|
|
@@ -158,13 +158,14 @@
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
:where(.dropdown-item, [data-slot="dropdown-item"]):hover > :where([data-slot="icon"], svg),
|
|
161
|
-
:where(.dropdown-item, [data-slot="dropdown-item"]):focus-visible
|
|
161
|
+
:where(.dropdown-item, [data-slot="dropdown-item"]):is(:focus, :focus-visible)
|
|
162
162
|
> :where([data-slot="icon"], svg) {
|
|
163
163
|
color: currentColor;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
:where(.dropdown-item, [data-slot="dropdown-item"]):focus-visible {
|
|
167
|
-
outline:
|
|
166
|
+
:where(.dropdown-item, [data-slot="dropdown-item"]):is(:focus, :focus-visible) {
|
|
167
|
+
outline: var(--ak-focus-ring-width) solid var(--ak-color-focus-ring);
|
|
168
|
+
outline-offset: calc(-1 * var(--ak-focus-ring-width));
|
|
168
169
|
background: var(--ak-color-hover);
|
|
169
170
|
color: var(--ak-color-text);
|
|
170
171
|
box-shadow: none;
|
|
@@ -165,15 +165,19 @@
|
|
|
165
165
|
|
|
166
166
|
:where(
|
|
167
167
|
[data-slot="menubar-item"]:hover > :where([data-slot="icon"], svg),
|
|
168
|
-
[data-slot="menubar-item"]:focus-visible > :where([data-slot="icon"], svg),
|
|
168
|
+
[data-slot="menubar-item"]:is(:focus, :focus-visible) > :where([data-slot="icon"], svg),
|
|
169
169
|
[data-slot="menubar-sub-trigger"]:hover > :where([data-slot="icon"], svg),
|
|
170
|
-
[data-slot="menubar-sub-trigger"]:focus-visible > :where([data-slot="icon"], svg)
|
|
170
|
+
[data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible) > :where([data-slot="icon"], svg)
|
|
171
171
|
) {
|
|
172
172
|
color: currentColor;
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
:where(
|
|
176
|
-
|
|
175
|
+
:where(
|
|
176
|
+
[data-slot="menubar-item"]:is(:focus, :focus-visible),
|
|
177
|
+
[data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible)
|
|
178
|
+
) {
|
|
179
|
+
outline: var(--ak-focus-ring-width) solid var(--ak-color-focus-ring);
|
|
180
|
+
outline-offset: calc(-1 * var(--ak-focus-ring-width));
|
|
177
181
|
background: var(--ak-color-hover);
|
|
178
182
|
color: var(--ak-color-text);
|
|
179
183
|
box-shadow: none;
|
|
@@ -178,18 +178,18 @@
|
|
|
178
178
|
|
|
179
179
|
--ak-dark-color-text: oklch(0.985 0 0);
|
|
180
180
|
--ak-dark-color-text-muted: oklch(0.708 0 0);
|
|
181
|
-
--ak-dark-color-text-subtle: oklch(0.
|
|
181
|
+
--ak-dark-color-text-subtle: oklch(0.74 0 0);
|
|
182
182
|
--ak-dark-color-text-inverse: oklch(0.205 0 0);
|
|
183
183
|
|
|
184
184
|
--ak-dark-color-bg: oklch(0.145 0 0);
|
|
185
185
|
--ak-dark-color-surface: oklch(0.205 0 0);
|
|
186
186
|
--ak-dark-color-surface-muted: oklch(0.269 0 0);
|
|
187
|
-
--ak-dark-color-surface-raised: oklch(0.
|
|
188
|
-
--ak-dark-color-surface-overlay: oklch(0.
|
|
187
|
+
--ak-dark-color-surface-raised: oklch(0.235 0 0);
|
|
188
|
+
--ak-dark-color-surface-overlay: oklch(0.269 0 0);
|
|
189
189
|
|
|
190
190
|
--ak-dark-color-border-subtle: oklch(0.269 0 0);
|
|
191
191
|
--ak-dark-color-border: oklch(1 0 0 / 10%);
|
|
192
|
-
--ak-dark-color-border-strong: oklch(0.
|
|
192
|
+
--ak-dark-color-border-strong: oklch(0.54 0 0);
|
|
193
193
|
|
|
194
194
|
--ak-dark-color-success: #4ade80;
|
|
195
195
|
--ak-dark-color-success-soft: #052e16;
|
|
@@ -206,11 +206,11 @@
|
|
|
206
206
|
|
|
207
207
|
--ak-dark-color-link: var(--ak-dark-color-text);
|
|
208
208
|
--ak-dark-color-link-hover: color-mix(in oklch, var(--ak-dark-color-link) 88%, transparent);
|
|
209
|
-
--ak-dark-color-focus-ring: oklch(0.
|
|
210
|
-
--ak-dark-color-disabled-bg: oklch(0.
|
|
209
|
+
--ak-dark-color-focus-ring: oklch(0.6 0 0);
|
|
210
|
+
--ak-dark-color-disabled-bg: oklch(0.32 0 0);
|
|
211
211
|
--ak-dark-color-disabled-surface: oklch(0.205 0 0);
|
|
212
|
-
--ak-dark-color-disabled-border: oklch(
|
|
213
|
-
--ak-dark-color-disabled-text: oklch(0.
|
|
212
|
+
--ak-dark-color-disabled-border: oklch(0.54 0 0);
|
|
213
|
+
--ak-dark-color-disabled-text: oklch(0.74 0 0);
|
|
214
214
|
--ak-dark-color-selected: oklch(0.269 0 0);
|
|
215
215
|
--ak-dark-color-selected-border: oklch(1 0 0 / 10%);
|
|
216
216
|
--ak-dark-color-hover: oklch(0.269 0 0);
|
|
@@ -233,39 +233,39 @@
|
|
|
233
233
|
|
|
234
234
|
--ak-color-text: oklch(0.145 0 0);
|
|
235
235
|
--ak-color-text-muted: oklch(0.556 0 0);
|
|
236
|
-
--ak-color-text-subtle: oklch(0.
|
|
236
|
+
--ak-color-text-subtle: oklch(0.54 0 0);
|
|
237
237
|
--ak-color-text-inverse: oklch(0.985 0 0);
|
|
238
238
|
|
|
239
239
|
--ak-color-bg: oklch(1 0 0);
|
|
240
|
-
--ak-color-surface: oklch(
|
|
241
|
-
--ak-color-surface-muted: oklch(0.
|
|
242
|
-
--ak-color-surface-raised: oklch(
|
|
243
|
-
--ak-color-surface-overlay: oklch(
|
|
240
|
+
--ak-color-surface: oklch(0.985 0 0);
|
|
241
|
+
--ak-color-surface-muted: oklch(0.95 0 0);
|
|
242
|
+
--ak-color-surface-raised: oklch(0.97 0 0);
|
|
243
|
+
--ak-color-surface-overlay: oklch(0.94 0 0);
|
|
244
244
|
|
|
245
245
|
--ak-color-border-subtle: oklch(0.922 0 0);
|
|
246
246
|
--ak-color-border: oklch(0.922 0 0);
|
|
247
|
-
--ak-color-border-strong: oklch(0.
|
|
247
|
+
--ak-color-border-strong: oklch(0.62 0 0);
|
|
248
248
|
|
|
249
249
|
--ak-color-success: #16a34a;
|
|
250
250
|
--ak-color-success-soft: rgba(22, 163, 74, 0.14);
|
|
251
251
|
--ak-color-success-ink: #166534;
|
|
252
|
-
--ak-color-warning: #
|
|
252
|
+
--ak-color-warning: #b45309;
|
|
253
253
|
--ak-color-warning-soft: rgba(245, 158, 11, 0.16);
|
|
254
254
|
--ak-color-warning-ink: #854d0e;
|
|
255
255
|
--ak-color-danger: oklch(0.577 0.245 27.325);
|
|
256
256
|
--ak-color-danger-soft: oklch(0.577 0.245 27.325 / 0.2);
|
|
257
257
|
--ak-color-danger-ink: #991b1b;
|
|
258
|
-
--ak-color-info: #
|
|
258
|
+
--ak-color-info: #0369a1;
|
|
259
259
|
--ak-color-info-soft: rgba(14, 165, 233, 0.16);
|
|
260
260
|
--ak-color-info-ink: #0c4a6e;
|
|
261
261
|
|
|
262
262
|
--ak-color-link: var(--ak-color-primary);
|
|
263
263
|
--ak-color-link-hover: color-mix(in oklch, var(--ak-color-link) 88%, transparent);
|
|
264
|
-
--ak-color-focus-ring: oklch(0.
|
|
265
|
-
--ak-color-disabled-bg: oklch(0.
|
|
264
|
+
--ak-color-focus-ring: oklch(0.58 0 0);
|
|
265
|
+
--ak-color-disabled-bg: oklch(0.9 0 0);
|
|
266
266
|
--ak-color-disabled-surface: oklch(1 0 0);
|
|
267
|
-
--ak-color-disabled-border: oklch(0.
|
|
268
|
-
--ak-color-disabled-text: oklch(0.
|
|
267
|
+
--ak-color-disabled-border: oklch(0.62 0 0);
|
|
268
|
+
--ak-color-disabled-text: oklch(0.5 0 0);
|
|
269
269
|
--ak-color-selected: oklch(0.97 0 0);
|
|
270
270
|
--ak-color-selected-border: oklch(0.922 0 0);
|
|
271
271
|
--ak-color-hover: oklch(0.97 0 0);
|
|
@@ -288,3 +288,10 @@
|
|
|
288
288
|
min-inline-size: var(--_button-height);
|
|
289
289
|
padding-inline: 0;
|
|
290
290
|
}
|
|
291
|
+
|
|
292
|
+
/* Keep the focus contract last so variant box-shadow resets cannot hide it. */
|
|
293
|
+
:where(.btn, .btn-close, [data-slot="button"]):focus-visible {
|
|
294
|
+
outline: none;
|
|
295
|
+
border-color: var(--ak-color-ring);
|
|
296
|
+
box-shadow: 0 0 0 var(--ak-focus-ring-width) var(--ak-color-focus-ring);
|
|
297
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Cross-component accessibility states live at the end of the default-theme
|
|
3
|
+
* cascade so new controls inherit the same perceivability contract.
|
|
4
|
+
*/
|
|
5
|
+
:where(
|
|
6
|
+
[data-slot="button"][data-disabled],
|
|
7
|
+
[data-slot="input"][data-disabled],
|
|
8
|
+
[data-slot="textarea"][data-disabled],
|
|
9
|
+
[data-slot="select-trigger"][data-disabled],
|
|
10
|
+
[data-slot="checkbox"][data-disabled],
|
|
11
|
+
[data-slot="radio-group-item"][data-disabled],
|
|
12
|
+
[data-slot="switch"][data-disabled]
|
|
13
|
+
) {
|
|
14
|
+
background: var(--ak-color-disabled-bg);
|
|
15
|
+
border-color: var(--ak-color-disabled-border);
|
|
16
|
+
color: var(--ak-color-disabled-text);
|
|
17
|
+
box-shadow: none;
|
|
18
|
+
opacity: 1;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@media (forced-colors: active) {
|
|
22
|
+
:where(
|
|
23
|
+
[data-slot="button"],
|
|
24
|
+
[data-slot="input"],
|
|
25
|
+
[data-slot="textarea"],
|
|
26
|
+
[data-slot="select-trigger"],
|
|
27
|
+
[data-slot="checkbox"],
|
|
28
|
+
[data-slot="radio-group-item"],
|
|
29
|
+
[data-slot="switch"],
|
|
30
|
+
[data-slot="dropdown-trigger"],
|
|
31
|
+
[tabindex]:not([tabindex="-1"]),
|
|
32
|
+
[role="menuitem"]
|
|
33
|
+
):focus-visible {
|
|
34
|
+
outline: 2px solid Highlight;
|
|
35
|
+
outline-offset: 2px;
|
|
36
|
+
box-shadow: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where(
|
|
40
|
+
[data-slot="button"],
|
|
41
|
+
[data-slot="input"],
|
|
42
|
+
[data-slot="textarea"],
|
|
43
|
+
[data-slot="select-trigger"],
|
|
44
|
+
[data-slot="checkbox"],
|
|
45
|
+
[data-slot="radio-group-item"],
|
|
46
|
+
[data-slot="switch"],
|
|
47
|
+
[data-slot="dropdown-content"],
|
|
48
|
+
[data-slot="menubar-content"]
|
|
49
|
+
) {
|
|
50
|
+
border-color: ButtonText;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:where([data-disabled]) {
|
|
54
|
+
border-color: GrayText;
|
|
55
|
+
color: GrayText;
|
|
56
|
+
opacity: 1;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where(
|
|
60
|
+
[data-slot="dialog-content"],
|
|
61
|
+
[data-slot="sheet-content"],
|
|
62
|
+
[data-slot="popover-content"],
|
|
63
|
+
[data-slot="dropdown-content"],
|
|
64
|
+
[data-slot="menubar-content"]
|
|
65
|
+
) {
|
|
66
|
+
border: 2px solid CanvasText;
|
|
67
|
+
background: Canvas;
|
|
68
|
+
color: CanvasText;
|
|
69
|
+
box-shadow: none;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:where(
|
|
73
|
+
[data-slot="dropdown-item"]:is(:focus, :focus-visible),
|
|
74
|
+
[data-slot="menubar-item"]:is(:focus, :focus-visible),
|
|
75
|
+
[data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible)
|
|
76
|
+
) {
|
|
77
|
+
outline: 2px solid Highlight;
|
|
78
|
+
outline-offset: -2px;
|
|
79
|
+
background: Highlight;
|
|
80
|
+
color: HighlightText;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:where([data-slot="dialog-overlay"]) {
|
|
84
|
+
background: Canvas;
|
|
85
|
+
opacity: 0.75;
|
|
86
|
+
backdrop-filter: none;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -44,11 +44,12 @@
|
|
|
44
44
|
|
|
45
45
|
:where(.input[data-disabled], .input:disabled, [data-slot="input"][data-disabled]) {
|
|
46
46
|
background: var(--ak-color-disabled-bg);
|
|
47
|
-
border-color: var(--ak-color-
|
|
47
|
+
border-color: var(--ak-color-disabled-border);
|
|
48
|
+
color: var(--ak-color-disabled-text);
|
|
48
49
|
box-shadow: none;
|
|
49
50
|
pointer-events: none;
|
|
50
51
|
cursor: not-allowed;
|
|
51
|
-
opacity:
|
|
52
|
+
opacity: 1;
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
:where(.input-sm, [data-slot="input"][data-size="sm"]) {
|
|
@@ -158,13 +158,14 @@
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
:where(.dropdown-item, [data-slot="dropdown-item"]):hover > :where([data-slot="icon"], svg),
|
|
161
|
-
:where(.dropdown-item, [data-slot="dropdown-item"]):focus-visible
|
|
161
|
+
:where(.dropdown-item, [data-slot="dropdown-item"]):is(:focus, :focus-visible)
|
|
162
162
|
> :where([data-slot="icon"], svg) {
|
|
163
163
|
color: currentColor;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
:where(.dropdown-item, [data-slot="dropdown-item"]):focus-visible {
|
|
167
|
-
outline:
|
|
166
|
+
:where(.dropdown-item, [data-slot="dropdown-item"]):is(:focus, :focus-visible) {
|
|
167
|
+
outline: var(--ak-focus-ring-width) solid var(--ak-color-focus-ring);
|
|
168
|
+
outline-offset: calc(-1 * var(--ak-focus-ring-width));
|
|
168
169
|
background: var(--ak-color-hover);
|
|
169
170
|
color: var(--ak-color-text);
|
|
170
171
|
box-shadow: none;
|
|
@@ -165,15 +165,19 @@
|
|
|
165
165
|
|
|
166
166
|
:where(
|
|
167
167
|
[data-slot="menubar-item"]:hover > :where([data-slot="icon"], svg),
|
|
168
|
-
[data-slot="menubar-item"]:focus-visible > :where([data-slot="icon"], svg),
|
|
168
|
+
[data-slot="menubar-item"]:is(:focus, :focus-visible) > :where([data-slot="icon"], svg),
|
|
169
169
|
[data-slot="menubar-sub-trigger"]:hover > :where([data-slot="icon"], svg),
|
|
170
|
-
[data-slot="menubar-sub-trigger"]:focus-visible > :where([data-slot="icon"], svg)
|
|
170
|
+
[data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible) > :where([data-slot="icon"], svg)
|
|
171
171
|
) {
|
|
172
172
|
color: currentColor;
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
:where(
|
|
176
|
-
|
|
175
|
+
:where(
|
|
176
|
+
[data-slot="menubar-item"]:is(:focus, :focus-visible),
|
|
177
|
+
[data-slot="menubar-sub-trigger"]:is(:focus, :focus-visible)
|
|
178
|
+
) {
|
|
179
|
+
outline: var(--ak-focus-ring-width) solid var(--ak-color-focus-ring);
|
|
180
|
+
outline-offset: calc(-1 * var(--ak-focus-ring-width));
|
|
177
181
|
background: var(--ak-color-hover);
|
|
178
182
|
color: var(--ak-color-text);
|
|
179
183
|
box-shadow: none;
|
|
@@ -178,18 +178,18 @@
|
|
|
178
178
|
|
|
179
179
|
--ak-dark-color-text: oklch(0.985 0 0);
|
|
180
180
|
--ak-dark-color-text-muted: oklch(0.708 0 0);
|
|
181
|
-
--ak-dark-color-text-subtle: oklch(0.
|
|
181
|
+
--ak-dark-color-text-subtle: oklch(0.74 0 0);
|
|
182
182
|
--ak-dark-color-text-inverse: oklch(0.205 0 0);
|
|
183
183
|
|
|
184
184
|
--ak-dark-color-bg: oklch(0.145 0 0);
|
|
185
185
|
--ak-dark-color-surface: oklch(0.205 0 0);
|
|
186
186
|
--ak-dark-color-surface-muted: oklch(0.269 0 0);
|
|
187
|
-
--ak-dark-color-surface-raised: oklch(0.
|
|
188
|
-
--ak-dark-color-surface-overlay: oklch(0.
|
|
187
|
+
--ak-dark-color-surface-raised: oklch(0.235 0 0);
|
|
188
|
+
--ak-dark-color-surface-overlay: oklch(0.269 0 0);
|
|
189
189
|
|
|
190
190
|
--ak-dark-color-border-subtle: oklch(0.269 0 0);
|
|
191
191
|
--ak-dark-color-border: oklch(1 0 0 / 10%);
|
|
192
|
-
--ak-dark-color-border-strong: oklch(0.
|
|
192
|
+
--ak-dark-color-border-strong: oklch(0.54 0 0);
|
|
193
193
|
|
|
194
194
|
--ak-dark-color-success: #4ade80;
|
|
195
195
|
--ak-dark-color-success-soft: #052e16;
|
|
@@ -206,11 +206,11 @@
|
|
|
206
206
|
|
|
207
207
|
--ak-dark-color-link: var(--ak-dark-color-text);
|
|
208
208
|
--ak-dark-color-link-hover: color-mix(in oklch, var(--ak-dark-color-link) 88%, transparent);
|
|
209
|
-
--ak-dark-color-focus-ring: oklch(0.
|
|
210
|
-
--ak-dark-color-disabled-bg: oklch(0.
|
|
209
|
+
--ak-dark-color-focus-ring: oklch(0.6 0 0);
|
|
210
|
+
--ak-dark-color-disabled-bg: oklch(0.32 0 0);
|
|
211
211
|
--ak-dark-color-disabled-surface: oklch(0.205 0 0);
|
|
212
|
-
--ak-dark-color-disabled-border: oklch(
|
|
213
|
-
--ak-dark-color-disabled-text: oklch(0.
|
|
212
|
+
--ak-dark-color-disabled-border: oklch(0.54 0 0);
|
|
213
|
+
--ak-dark-color-disabled-text: oklch(0.74 0 0);
|
|
214
214
|
--ak-dark-color-selected: oklch(0.269 0 0);
|
|
215
215
|
--ak-dark-color-selected-border: oklch(1 0 0 / 10%);
|
|
216
216
|
--ak-dark-color-hover: oklch(0.269 0 0);
|
|
@@ -233,39 +233,39 @@
|
|
|
233
233
|
|
|
234
234
|
--ak-color-text: oklch(0.145 0 0);
|
|
235
235
|
--ak-color-text-muted: oklch(0.556 0 0);
|
|
236
|
-
--ak-color-text-subtle: oklch(0.
|
|
236
|
+
--ak-color-text-subtle: oklch(0.54 0 0);
|
|
237
237
|
--ak-color-text-inverse: oklch(0.985 0 0);
|
|
238
238
|
|
|
239
239
|
--ak-color-bg: oklch(1 0 0);
|
|
240
|
-
--ak-color-surface: oklch(
|
|
241
|
-
--ak-color-surface-muted: oklch(0.
|
|
242
|
-
--ak-color-surface-raised: oklch(
|
|
243
|
-
--ak-color-surface-overlay: oklch(
|
|
240
|
+
--ak-color-surface: oklch(0.985 0 0);
|
|
241
|
+
--ak-color-surface-muted: oklch(0.95 0 0);
|
|
242
|
+
--ak-color-surface-raised: oklch(0.97 0 0);
|
|
243
|
+
--ak-color-surface-overlay: oklch(0.94 0 0);
|
|
244
244
|
|
|
245
245
|
--ak-color-border-subtle: oklch(0.922 0 0);
|
|
246
246
|
--ak-color-border: oklch(0.922 0 0);
|
|
247
|
-
--ak-color-border-strong: oklch(0.
|
|
247
|
+
--ak-color-border-strong: oklch(0.62 0 0);
|
|
248
248
|
|
|
249
249
|
--ak-color-success: #16a34a;
|
|
250
250
|
--ak-color-success-soft: rgba(22, 163, 74, 0.14);
|
|
251
251
|
--ak-color-success-ink: #166534;
|
|
252
|
-
--ak-color-warning: #
|
|
252
|
+
--ak-color-warning: #b45309;
|
|
253
253
|
--ak-color-warning-soft: rgba(245, 158, 11, 0.16);
|
|
254
254
|
--ak-color-warning-ink: #854d0e;
|
|
255
255
|
--ak-color-danger: oklch(0.577 0.245 27.325);
|
|
256
256
|
--ak-color-danger-soft: oklch(0.577 0.245 27.325 / 0.2);
|
|
257
257
|
--ak-color-danger-ink: #991b1b;
|
|
258
|
-
--ak-color-info: #
|
|
258
|
+
--ak-color-info: #0369a1;
|
|
259
259
|
--ak-color-info-soft: rgba(14, 165, 233, 0.16);
|
|
260
260
|
--ak-color-info-ink: #0c4a6e;
|
|
261
261
|
|
|
262
262
|
--ak-color-link: var(--ak-color-primary);
|
|
263
263
|
--ak-color-link-hover: color-mix(in oklch, var(--ak-color-link) 88%, transparent);
|
|
264
|
-
--ak-color-focus-ring: oklch(0.
|
|
265
|
-
--ak-color-disabled-bg: oklch(0.
|
|
264
|
+
--ak-color-focus-ring: oklch(0.58 0 0);
|
|
265
|
+
--ak-color-disabled-bg: oklch(0.9 0 0);
|
|
266
266
|
--ak-color-disabled-surface: oklch(1 0 0);
|
|
267
|
-
--ak-color-disabled-border: oklch(0.
|
|
268
|
-
--ak-color-disabled-text: oklch(0.
|
|
267
|
+
--ak-color-disabled-border: oklch(0.62 0 0);
|
|
268
|
+
--ak-color-disabled-text: oklch(0.5 0 0);
|
|
269
269
|
--ak-color-selected: oklch(0.97 0 0);
|
|
270
270
|
--ak-color-selected-border: oklch(0.922 0 0);
|
|
271
271
|
--ak-color-hover: oklch(0.97 0 0);
|