@stll/ui 0.28.2 → 0.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/button.d.ts +15 -2
- package/dist/components/button.js +44 -2
- package/dist/components/color-picker.js +4 -4
- package/dist/components/composer.d.ts +1 -1
- package/dist/components/composer.js +1 -1
- package/dist/components/date-picker-popover.js +3 -3
- package/dist/components/input-group.d.ts +1 -1
- package/dist/components/loader.js +1 -1
- package/dist/components/outline-rail.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/popover.d.ts +14 -1
- package/dist/components/popover.js +13 -2
- package/dist/components/select.js +1 -1
- package/dist/components/sidebar.d.ts +2 -2
- package/dist/components/toast.js +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/inspector/chrome.js +1 -1
- package/dist/lib/control-size.d.ts +1 -1
- package/dist/review/review-comment-card.js +3 -3
- package/dist/review/review-decision-actions.js +1 -2
- package/dist/review/review-status-badge.js +1 -1
- package/dist/styles/theme.css +10 -0
- package/package.json +3 -11
- package/dist/components/button-variants.d.ts +0 -16
- package/dist/components/button-variants.js +0 -44
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { OverlayLayer } from "../lib/overlay-layer.js";
|
|
2
|
-
import { buttonVariants } from "./button-variants.js";
|
|
3
2
|
import * as React$1 from "react";
|
|
4
3
|
import { useRender } from "@base-ui/react/use-render";
|
|
5
4
|
import { VariantProps } from "class-variance-authority";
|
|
6
5
|
//#region src/components/button.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Disabled styling for a button that is only `aria-disabled`.
|
|
8
|
+
*
|
|
9
|
+
* The `disabled:` utilities below are CSS `:disabled`, which cannot match an
|
|
10
|
+
* element that carries no native `disabled` attribute, and `pointer-events-none`
|
|
11
|
+
* is deliberately not repeated: that rule is the reason a disabled button's
|
|
12
|
+
* tooltip can never open. Matches the treatment `disabled:opacity-64` gives, and
|
|
13
|
+
* swaps the cursor so the control still reads as unavailable on hover.
|
|
14
|
+
*/
|
|
15
|
+
declare const buttonAccessibleDisabledClass = "cursor-not-allowed opacity-64";
|
|
16
|
+
declare const buttonVariants: (props?: ({
|
|
17
|
+
size?: "default" | "chip" | "icon" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "lg" | "sm" | "xl" | "xs" | null | undefined;
|
|
18
|
+
variant?: "link" | "default" | "destructive" | "destructive-outline" | "destructive-ghost" | "ghost" | "muted" | "outline" | "secondary" | null | undefined;
|
|
19
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
20
|
type ButtonProps = {
|
|
8
21
|
variant?: VariantProps<typeof buttonVariants>["variant"];
|
|
9
22
|
size?: VariantProps<typeof buttonVariants>["size"];
|
|
@@ -17,4 +30,4 @@ type ButtonProps = {
|
|
|
17
30
|
} & useRender.ComponentProps<"button">;
|
|
18
31
|
declare function Button({ className, variant, size, render, loading, children, disabled, tooltip, tooltipLayer, ...props }: ButtonProps): React$1.JSX.Element;
|
|
19
32
|
//#endregion
|
|
20
|
-
export { Button };
|
|
33
|
+
export { Button, buttonAccessibleDisabledClass, buttonVariants };
|
|
@@ -2,12 +2,54 @@
|
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
3
|
import { renderTooltipTrigger } from "./tooltip-trigger-helper.js";
|
|
4
4
|
import { BUTTON_DISPOSITION, blockDisabledActivation, blockDisabledKeyActivation, resolveButtonDisposition } from "../lib/button-disposition.js";
|
|
5
|
-
import { buttonVariants } from "./button-variants.js";
|
|
6
5
|
import { LoaderIcon } from "lucide-react";
|
|
7
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
7
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
9
8
|
import { useRender } from "@base-ui/react/use-render";
|
|
9
|
+
import { cva } from "class-variance-authority";
|
|
10
10
|
//#region src/components/button.tsx
|
|
11
|
+
/**
|
|
12
|
+
* Disabled styling for a button that is only `aria-disabled`.
|
|
13
|
+
*
|
|
14
|
+
* The `disabled:` utilities below are CSS `:disabled`, which cannot match an
|
|
15
|
+
* element that carries no native `disabled` attribute, and `pointer-events-none`
|
|
16
|
+
* is deliberately not repeated: that rule is the reason a disabled button's
|
|
17
|
+
* tooltip can never open. Matches the treatment `disabled:opacity-64` gives, and
|
|
18
|
+
* swaps the cursor so the control still reads as unavailable on hover.
|
|
19
|
+
*/
|
|
20
|
+
const buttonAccessibleDisabledClass = "cursor-not-allowed opacity-64";
|
|
21
|
+
const buttonVariants = cva("focus-visible:ring-ring focus-visible:ring-offset-background relative inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-lg border text-base font-medium whitespace-nowrap transition-shadow outline-none before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] focus-visible:ring-2 focus-visible:ring-offset-1 disabled:pointer-events-none disabled:opacity-64 sm:text-sm pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:-mx-0.5 [&_svg]:shrink-0 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4", {
|
|
22
|
+
defaultVariants: {
|
|
23
|
+
size: "default",
|
|
24
|
+
variant: "default"
|
|
25
|
+
},
|
|
26
|
+
variants: {
|
|
27
|
+
size: {
|
|
28
|
+
chip: "h-7 gap-1.5 rounded-full px-2.5 text-xs before:rounded-full sm:text-xs",
|
|
29
|
+
default: "h-9 px-[calc(--spacing(3)-1px)] sm:h-8",
|
|
30
|
+
icon: "size-9 sm:size-8",
|
|
31
|
+
"icon-lg": "size-10 sm:size-9",
|
|
32
|
+
"icon-sm": "size-8 sm:size-7",
|
|
33
|
+
"icon-xl": "size-11 sm:size-10 [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5",
|
|
34
|
+
"icon-xs": "size-7 rounded-md before:rounded-[calc(var(--radius-md)-1px)] sm:size-6 not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-4 sm:not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-3.5",
|
|
35
|
+
lg: "h-10 px-[calc(--spacing(3.5)-1px)] sm:h-9",
|
|
36
|
+
sm: "h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] text-sm sm:h-7 sm:text-xs",
|
|
37
|
+
xl: "h-11 px-[calc(--spacing(4)-1px)] text-lg sm:h-10 sm:text-base [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5",
|
|
38
|
+
xs: "h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] text-sm before:rounded-[calc(var(--radius-md)-1px)] sm:h-6 sm:text-xs [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5"
|
|
39
|
+
},
|
|
40
|
+
variant: {
|
|
41
|
+
default: "border-primary bg-primary text-primary-foreground shadow-primary/24 [:hover,[data-pressed]]:bg-primary/90 shadow-xs not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
42
|
+
destructive: "border-destructive/32 bg-destructive/10 text-destructive-foreground shadow-destructive/8 [:hover,[data-pressed]]:border-destructive/40 [:hover,[data-pressed]]:bg-destructive/14 [:active,[data-pressed]]:bg-destructive/18 shadow-xs not-dark:bg-clip-padding not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
43
|
+
"destructive-outline": "border-input bg-popover text-destructive-foreground dark:bg-input/32 [:hover,[data-pressed]]:border-destructive/32 [:hover,[data-pressed]]:bg-destructive/4 shadow-xs/5 not-dark:bg-clip-padding not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
44
|
+
"destructive-ghost": "text-destructive data-pressed:bg-destructive/10 [:hover,[data-pressed]]:bg-destructive/10 border-transparent",
|
|
45
|
+
ghost: "text-foreground data-pressed:bg-accent [:hover,[data-pressed]]:bg-accent border-transparent",
|
|
46
|
+
link: "border-transparent underline-offset-4 [:hover,[data-pressed]]:underline",
|
|
47
|
+
muted: "text-muted-foreground data-pressed:bg-accent data-pressed:text-foreground [:hover,[data-pressed]]:bg-accent [:hover,[data-pressed]]:text-foreground border-transparent",
|
|
48
|
+
outline: "border-input bg-popover text-foreground dark:bg-input/32 [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64 shadow-xs/5 not-dark:bg-clip-padding not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
49
|
+
secondary: "bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90 border-transparent"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
11
53
|
function Button({ className, variant, size, render, loading, children, disabled, tooltip, tooltipLayer, ...props }) {
|
|
12
54
|
const typeValue = render ? void 0 : "button";
|
|
13
55
|
const tooltipContent = tooltip ?? props["aria-label"] ?? props.title;
|
|
@@ -53,4 +95,4 @@ function Button({ className, variant, size, render, loading, children, disabled,
|
|
|
53
95
|
});
|
|
54
96
|
}
|
|
55
97
|
//#endregion
|
|
56
|
-
export { Button };
|
|
98
|
+
export { Button, buttonAccessibleDisabledClass, buttonVariants };
|
|
@@ -147,12 +147,12 @@ const CustomColorControls = ({ handleInputChange, handlePickerChange, inputHex,
|
|
|
147
147
|
className: "flex items-center gap-1.5",
|
|
148
148
|
children: [
|
|
149
149
|
/* @__PURE__ */ jsx("span", {
|
|
150
|
-
className: "text-muted-foreground text-
|
|
150
|
+
className: "text-muted-foreground text-2xs",
|
|
151
151
|
children: "#"
|
|
152
152
|
}),
|
|
153
153
|
/* @__PURE__ */ jsx("input", {
|
|
154
154
|
"aria-label": "Custom hex color",
|
|
155
|
-
className: "border-input bg-background text-foreground h-6 flex-1 rounded border px-1.5 font-mono
|
|
155
|
+
className: "border-input bg-background text-foreground text-2xs h-6 flex-1 rounded border px-1.5 font-mono outline-none",
|
|
156
156
|
dir: "ltr",
|
|
157
157
|
maxLength: 6,
|
|
158
158
|
onChange: (event) => handleInputChange(event.target.value),
|
|
@@ -248,7 +248,7 @@ const ColorPickerContent = ({ value, onSelect, onClear, presets, columns, defaul
|
|
|
248
248
|
onClear && /* @__PURE__ */ jsxs(Popover.Close, {
|
|
249
249
|
render: /* @__PURE__ */ jsx("button", {
|
|
250
250
|
"aria-label": "No color",
|
|
251
|
-
className: "text-muted-foreground hover:bg-accent hover:text-accent-foreground flex h-6 w-full items-center gap-1.5 rounded px-1
|
|
251
|
+
className: "text-muted-foreground hover:bg-accent hover:text-accent-foreground text-2xs flex h-6 w-full items-center gap-1.5 rounded px-1 transition-colors",
|
|
252
252
|
onClick: onClear,
|
|
253
253
|
type: "button"
|
|
254
254
|
}),
|
|
@@ -271,7 +271,7 @@ const ColorPickerContent = ({ value, onSelect, onClear, presets, columns, defaul
|
|
|
271
271
|
}, preset.value))
|
|
272
272
|
}),
|
|
273
273
|
!expanded ? /* @__PURE__ */ jsxs("button", {
|
|
274
|
-
className: "text-muted-foreground hover:text-foreground flex items-center justify-center gap-1 py-0.5
|
|
274
|
+
className: "text-muted-foreground hover:text-foreground text-2xs flex items-center justify-center gap-1 py-0.5 transition-colors",
|
|
275
275
|
onClick: () => setExpanded(true),
|
|
276
276
|
type: "button",
|
|
277
277
|
children: [moreLabel, /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-3" })]
|
|
@@ -69,7 +69,7 @@ export declare const COMPOSER_SEND_BUTTON_CLASS = "bg-foreground text-background
|
|
|
69
69
|
* law home's scope and jurisdiction): quiet text with a hover surface, so
|
|
70
70
|
* the row stays subordinate to the box above it.
|
|
71
71
|
*/
|
|
72
|
-
export declare const COMPOSER_PICKER_TRIGGER_CLASS = "text-muted-foreground hover:text-foreground hover:bg-accent inline-flex min-w-0 shrink items-center gap-1 rounded-md px-1.5 py-0.5 text-
|
|
72
|
+
export declare const COMPOSER_PICKER_TRIGGER_CLASS = "text-muted-foreground hover:text-foreground hover:bg-accent inline-flex min-w-0 shrink items-center gap-1 rounded-md px-1.5 py-0.5 text-2xs transition-colors";
|
|
73
73
|
type ComposerStatusRowProps = {
|
|
74
74
|
/** Left cluster: matter picker, web-search / anonymize toggles, ... */
|
|
75
75
|
start?: ReactNode | undefined;
|
|
@@ -73,7 +73,7 @@ const COMPOSER_SEND_BUTTON_CLASS = "bg-foreground text-background hover:bg-foreg
|
|
|
73
73
|
* law home's scope and jurisdiction): quiet text with a hover surface, so
|
|
74
74
|
* the row stays subordinate to the box above it.
|
|
75
75
|
*/
|
|
76
|
-
const COMPOSER_PICKER_TRIGGER_CLASS = "text-muted-foreground hover:text-foreground hover:bg-accent inline-flex min-w-0 shrink items-center gap-1 rounded-md px-1.5 py-0.5 text-
|
|
76
|
+
const COMPOSER_PICKER_TRIGGER_CLASS = "text-muted-foreground hover:text-foreground hover:bg-accent inline-flex min-w-0 shrink items-center gap-1 rounded-md px-1.5 py-0.5 text-2xs transition-colors";
|
|
77
77
|
/**
|
|
78
78
|
* The slim status row rendered beneath a composer box: a `text-xs` row with
|
|
79
79
|
* a start cluster and an end slot pinned to the far edge. Shared by every
|
|
@@ -355,8 +355,8 @@ const DatePickerPopoverContent = ({ id, labelledBy, value: rawValue, onChange, l
|
|
|
355
355
|
})
|
|
356
356
|
]
|
|
357
357
|
}), /* @__PURE__ */ jsx(PopoverPopup, {
|
|
358
|
-
className: "*:data-[slot=popover-viewport]:p-2!",
|
|
359
358
|
layer,
|
|
359
|
+
padding: "sm",
|
|
360
360
|
side: "bottom",
|
|
361
361
|
sideOffset: 4,
|
|
362
362
|
children: /* @__PURE__ */ jsxs("div", {
|
|
@@ -403,7 +403,7 @@ const DatePickerPopoverContent = ({ id, labelledBy, value: rawValue, onChange, l
|
|
|
403
403
|
role: "row",
|
|
404
404
|
"aria-hidden": "true",
|
|
405
405
|
children: weekdays.map((weekday) => /* @__PURE__ */ jsx("span", {
|
|
406
|
-
className: cn("py-1 text-center
|
|
406
|
+
className: cn("text-3xs py-1 text-center", weekday.isWeekend ? "text-muted-foreground" : "text-foreground-label"),
|
|
407
407
|
children: weekday.label
|
|
408
408
|
}, weekday.label))
|
|
409
409
|
}), /* @__PURE__ */ jsx("div", {
|
|
@@ -510,7 +510,7 @@ const MonthGrid = ({ locale, viewYear, currentMonth, currentYear, onSelect, toda
|
|
|
510
510
|
type: "button",
|
|
511
511
|
children: [!/^\d/u.test(labels[month] ?? "") && /* @__PURE__ */ jsx("span", {
|
|
512
512
|
"aria-hidden": "true",
|
|
513
|
-
className: cn("me-1
|
|
513
|
+
className: cn("text-3xs me-1 tabular-nums opacity-50", !isSelected && "text-muted-foreground"),
|
|
514
514
|
children: month + 1
|
|
515
515
|
}), labels[month]]
|
|
516
516
|
}, month);
|
|
@@ -5,7 +5,7 @@ import { VariantProps } from "class-variance-authority";
|
|
|
5
5
|
//#region src/components/input-group.d.ts
|
|
6
6
|
declare const InputGroup: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
|
|
7
7
|
declare const inputGroupAddonVariants: (props?: ({
|
|
8
|
-
align?: "inline-
|
|
8
|
+
align?: "inline-end" | "inline-start" | "block-start" | "block-end" | null | undefined;
|
|
9
9
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
10
|
declare const InputGroupAddon: ({ className, align, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>) => React$1.JSX.Element;
|
|
11
11
|
declare const InputGroupText: ({ className, ...props }: React$1.ComponentProps<"span">) => React$1.JSX.Element;
|
|
@@ -38,7 +38,7 @@ const LoaderState = ({ label, detail, hint, className }) => /* @__PURE__ */ jsxs
|
|
|
38
38
|
children: detail
|
|
39
39
|
}),
|
|
40
40
|
hint !== void 0 && /* @__PURE__ */ jsx("p", {
|
|
41
|
-
className: "text-muted-foreground text-
|
|
41
|
+
className: "text-muted-foreground text-2xs text-pretty",
|
|
42
42
|
children: hint
|
|
43
43
|
})
|
|
44
44
|
]
|
|
@@ -315,7 +315,7 @@ const OutlineRail = ({ items, scrollContainerRef, resolvePct, onJump, activeId,
|
|
|
315
315
|
})] })
|
|
316
316
|
}), /* @__PURE__ */ jsx(TooltipPopup, { children: outlineEntryText(node.item) })] }),
|
|
317
317
|
node.item.meta !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
318
|
-
className: "text-foreground-placeholder shrink-0 ps-2
|
|
318
|
+
className: "text-foreground-placeholder text-2xs shrink-0 ps-2 tabular-nums",
|
|
319
319
|
children: node.item.meta
|
|
320
320
|
})
|
|
321
321
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
-
import { buttonVariants } from "./button
|
|
3
|
+
import { buttonVariants } from "./button.js";
|
|
4
4
|
import { DirectionalIcon } from "./directional-icon.js";
|
|
5
5
|
import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -8,7 +8,20 @@ declare const Popover: typeof Popover$1.Root;
|
|
|
8
8
|
declare function PopoverTrigger({ tooltip, ...props }: Popover$1.Trigger.Props & {
|
|
9
9
|
tooltip?: React$1.ReactNode;
|
|
10
10
|
}): React$1.JSX.Element;
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Viewport padding. The inline value also feeds the page-width calculation of
|
|
13
|
+
* the viewport, so both axes change together.
|
|
14
|
+
*/
|
|
15
|
+
declare const POPOVER_PADDING: {
|
|
16
|
+
readonly none: "py-0 [--viewport-inline-padding:0px]";
|
|
17
|
+
readonly xs: "py-1 [--viewport-inline-padding:--spacing(1)]";
|
|
18
|
+
readonly sm: "py-2 [--viewport-inline-padding:--spacing(2)]";
|
|
19
|
+
readonly md: "py-3 [--viewport-inline-padding:--spacing(3)]";
|
|
20
|
+
readonly default: "py-4 [--viewport-inline-padding:--spacing(4)]";
|
|
21
|
+
};
|
|
22
|
+
type PopoverPadding = keyof typeof POPOVER_PADDING;
|
|
23
|
+
declare const PopoverPopup: ({ children, className, side, align, sideOffset, alignOffset, tooltipStyle, padding, anchor, layer, ...props }: Popover$1.Popup.Props & {
|
|
24
|
+
padding?: PopoverPadding;
|
|
12
25
|
side?: Popover$1.Positioner.Props["side"];
|
|
13
26
|
align?: Popover$1.Positioner.Props["align"];
|
|
14
27
|
sideOffset?: Popover$1.Positioner.Props["sideOffset"];
|
|
@@ -17,7 +17,18 @@ function PopoverTrigger({ tooltip, ...props }) {
|
|
|
17
17
|
})
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Viewport padding. The inline value also feeds the page-width calculation of
|
|
22
|
+
* the viewport, so both axes change together.
|
|
23
|
+
*/
|
|
24
|
+
const POPOVER_PADDING = {
|
|
25
|
+
none: "py-0 [--viewport-inline-padding:0px]",
|
|
26
|
+
xs: "py-1 [--viewport-inline-padding:--spacing(1)]",
|
|
27
|
+
sm: "py-2 [--viewport-inline-padding:--spacing(2)]",
|
|
28
|
+
md: "py-3 [--viewport-inline-padding:--spacing(3)]",
|
|
29
|
+
default: "py-4 [--viewport-inline-padding:--spacing(4)]"
|
|
30
|
+
};
|
|
31
|
+
const PopoverPopup = ({ children, className, side = "bottom", align = "center", sideOffset = 4, alignOffset = 0, tooltipStyle = false, padding = "default", anchor, layer = "default", ...props }) => /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(Popover$1.Positioner, {
|
|
21
32
|
align,
|
|
22
33
|
alignOffset,
|
|
23
34
|
anchor,
|
|
@@ -31,7 +42,7 @@ const PopoverPopup = ({ children, className, side = "bottom", align = "center",
|
|
|
31
42
|
"data-slot": "popover-popup",
|
|
32
43
|
...props,
|
|
33
44
|
children: /* @__PURE__ */ jsx(Popover$1.Viewport, {
|
|
34
|
-
className: cn("relative size-full max-h-(--available-height) overflow-clip px-(--viewport-inline-padding)
|
|
45
|
+
className: cn("relative size-full max-h-(--available-height) overflow-clip px-(--viewport-inline-padding) outline-none **:data-current:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-current:opacity-100 **:data-current:transition-opacity **:data-current:data-ending-style:opacity-0 data-instant:transition-none **:data-previous:w-[calc(var(--popup-width)-2*var(--viewport-inline-padding)-2px)] **:data-previous:opacity-100 **:data-previous:transition-opacity **:data-previous:data-ending-style:opacity-0 **:data-current:data-starting-style:opacity-0 **:data-previous:data-starting-style:opacity-0", tooltipStyle ? "py-1 [--viewport-inline-padding:--spacing(2)]" : [POPOVER_PADDING[padding], "not-data-transitioning:overflow-y-auto"]),
|
|
35
46
|
"data-slot": "popover-viewport",
|
|
36
47
|
children
|
|
37
48
|
})
|
|
@@ -40,7 +40,7 @@ const SelectTrigger = ({ className, size = CONTROL_SIZE.default, children, ...pr
|
|
|
40
40
|
})]
|
|
41
41
|
});
|
|
42
42
|
const SELECT_TRIGGER_SIZE_CLASS_NAMES = {
|
|
43
|
-
[CONTROL_SIZE.sm]: "min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:min-h-7",
|
|
43
|
+
[CONTROL_SIZE.sm]: "min-h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] text-sm sm:min-h-7 sm:text-xs",
|
|
44
44
|
[CONTROL_SIZE.default]: void 0,
|
|
45
45
|
[CONTROL_SIZE.lg]: "min-h-10 sm:min-h-9"
|
|
46
46
|
};
|
|
@@ -30,7 +30,7 @@ declare function useSidebar(): SidebarContextProps;
|
|
|
30
30
|
* left for the content column. Mobile reports 0: there the sidebar is an
|
|
31
31
|
* overlay sheet and occupies no layout width.
|
|
32
32
|
*/
|
|
33
|
-
declare function useSidebarInlineSize(): 0 |
|
|
33
|
+
declare function useSidebarInlineSize(): 0 | 256 | 48;
|
|
34
34
|
declare const SidebarProvider: ({ defaultOpen, forceCollapsed, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<"div"> & {
|
|
35
35
|
defaultOpen?: boolean;
|
|
36
36
|
forceCollapsed?: boolean;
|
|
@@ -83,7 +83,7 @@ declare const SidebarMenu: ({ className, ...props }: React.ComponentProps<"ul">)
|
|
|
83
83
|
declare const SidebarMenuItem: ({ className, ...props }: React.ComponentProps<"li">) => import("react").JSX.Element;
|
|
84
84
|
declare const sidebarMenuButtonVariants: (props?: ({
|
|
85
85
|
variant?: "default" | "outline" | null | undefined;
|
|
86
|
-
size?: "
|
|
86
|
+
size?: "default" | "lg" | "sm" | "rail" | null | undefined;
|
|
87
87
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
88
88
|
declare const SidebarMenuButton: ({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<"button"> & {
|
|
89
89
|
asChild?: boolean;
|
package/dist/components/toast.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
-
import { buttonVariants } from "./button
|
|
3
|
+
import { buttonVariants } from "./button.js";
|
|
4
4
|
import { CircleAlertIcon, CircleCheckIcon, InfoIcon, LoaderCircleIcon, TriangleAlertIcon, XIcon } from "lucide-react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import * as React$1 from "react";
|
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,7 @@ import { Avatar, AvatarFallback, AvatarImage } from "./components/avatar.js";
|
|
|
10
10
|
import { BidiDirection, BidiText, BidiTextProps, UserText } from "./components/bidi-text.js";
|
|
11
11
|
import { DiscordLogoIcon, GitHubLogoIcon } from "./components/brand-icons.js";
|
|
12
12
|
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/breadcrumb.js";
|
|
13
|
-
import { buttonAccessibleDisabledClass, buttonVariants } from "./components/button
|
|
14
|
-
import { Button } from "./components/button.js";
|
|
13
|
+
import { Button, buttonAccessibleDisabledClass, buttonVariants } from "./components/button.js";
|
|
15
14
|
import { Checkbox } from "./components/checkbox.js";
|
|
16
15
|
import { ColorPicker, ColorPickerContent, ColorPickerContentProps, ColorPickerProps, ColorPreset, DEFAULT_PRESETS } from "./components/color-picker.js";
|
|
17
16
|
import { CONTROL_SIZE, CONTROL_SIZES, ControlSize } from "./lib/control-size.js";
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,7 @@ import { Tooltip, TooltipContent as TooltipPopup, TooltipCreateHandle, TooltipPr
|
|
|
7
7
|
import { AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogContent as AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport } from "./components/alert-dialog.js";
|
|
8
8
|
import { useIsMobile } from "./hooks/use-mobile.js";
|
|
9
9
|
import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
|
|
10
|
-
import { buttonAccessibleDisabledClass, buttonVariants } from "./components/button
|
|
11
|
-
import { Button } from "./components/button.js";
|
|
10
|
+
import { Button, buttonAccessibleDisabledClass, buttonVariants } from "./components/button.js";
|
|
12
11
|
import { ScrollArea, ScrollBar } from "./components/scroll-area.js";
|
|
13
12
|
import { Sheet, SheetBackdrop, SheetClose, SheetContent as SheetPopup, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetPortal, SheetTitle, SheetTrigger } from "./components/sheet.js";
|
|
14
13
|
import { WorkspaceEndRail, WorkspaceShell } from "./components/workspace-shell.js";
|
package/dist/inspector/chrome.js
CHANGED
|
@@ -94,7 +94,7 @@ const InspectorTitle = ({ children, className, ...props }) => /* @__PURE__ */ js
|
|
|
94
94
|
children
|
|
95
95
|
});
|
|
96
96
|
const InspectorDescription = ({ className, ...props }) => /* @__PURE__ */ jsx("p", {
|
|
97
|
-
className: cn("text-muted-foreground
|
|
97
|
+
className: cn("text-muted-foreground text-2xs truncate [unicode-bidi:isolate]", className),
|
|
98
98
|
"data-slot": "inspector-description",
|
|
99
99
|
dir: "auto",
|
|
100
100
|
...props
|
|
@@ -5,6 +5,6 @@ declare const CONTROL_SIZE: Readonly<{
|
|
|
5
5
|
readonly lg: "lg";
|
|
6
6
|
}>;
|
|
7
7
|
type ControlSize = (typeof CONTROL_SIZE)[keyof typeof CONTROL_SIZE];
|
|
8
|
-
declare const CONTROL_SIZES: readonly ("
|
|
8
|
+
declare const CONTROL_SIZES: readonly ("default" | "lg" | "sm")[];
|
|
9
9
|
//#endregion
|
|
10
10
|
export { CONTROL_SIZE, CONTROL_SIZES, type ControlSize };
|
|
@@ -22,7 +22,7 @@ const ReviewCommentCard = ({ author, timestamp, formattedTime, body, anchorText,
|
|
|
22
22
|
className: "min-w-0 flex-1",
|
|
23
23
|
children: [
|
|
24
24
|
/* @__PURE__ */ jsxs("p", {
|
|
25
|
-
className: "text-muted-foreground flex min-w-0 items-baseline gap-1.5
|
|
25
|
+
className: "text-muted-foreground text-2xs flex min-w-0 items-baseline gap-1.5",
|
|
26
26
|
children: [/* @__PURE__ */ jsx(BidiText, {
|
|
27
27
|
as: "span",
|
|
28
28
|
className: "text-foreground-strong-muted truncate font-medium",
|
|
@@ -40,11 +40,11 @@ const ReviewCommentCard = ({ author, timestamp, formattedTime, body, anchorText,
|
|
|
40
40
|
}),
|
|
41
41
|
anchorText === void 0 || anchorText === "" ? null : /* @__PURE__ */ jsx(BidiText, {
|
|
42
42
|
as: "p",
|
|
43
|
-
className: "text-muted-foreground mt-0.5 truncate
|
|
43
|
+
className: "text-muted-foreground text-2xs mt-0.5 truncate italic",
|
|
44
44
|
children: anchorText
|
|
45
45
|
}),
|
|
46
46
|
isStale && staleLabel !== void 0 ? /* @__PURE__ */ jsx("p", {
|
|
47
|
-
className: "text-muted-foreground mt-0.5
|
|
47
|
+
className: "text-muted-foreground text-2xs mt-0.5",
|
|
48
48
|
children: staleLabel
|
|
49
49
|
}) : null
|
|
50
50
|
]
|
|
@@ -54,11 +54,10 @@ const renderControls = ({ acceptLabel, acceptTooltip, disabled, onAccept, onReje
|
|
|
54
54
|
case "dismissed":
|
|
55
55
|
if (onRevert === void 0 && onReopen === void 0) return null;
|
|
56
56
|
return /* @__PURE__ */ jsxs(Fragment, { children: [onRevert === void 0 ? null : /* @__PURE__ */ jsx(Button, {
|
|
57
|
-
className: "text-muted-foreground hover:text-foreground",
|
|
58
57
|
disabled,
|
|
59
58
|
onClick: onRevert,
|
|
60
59
|
size,
|
|
61
|
-
variant: "
|
|
60
|
+
variant: "muted",
|
|
62
61
|
children: revertLabel
|
|
63
62
|
}), onReopen === void 0 ? null : /* @__PURE__ */ jsx(Button, {
|
|
64
63
|
"aria-label": reopenLabel,
|
|
@@ -10,7 +10,7 @@ const ReviewStatusBadge = ({ tone, variant = "outline", size = "xs", icon, class
|
|
|
10
10
|
});
|
|
11
11
|
const REVIEW_STATUS_BADGE_BASE_CLASS = "inline-flex shrink-0 items-center rounded-full border font-medium whitespace-nowrap";
|
|
12
12
|
const SIZE_CLASS = {
|
|
13
|
-
xs: "gap-1 px-1.5 py-0.5 text-
|
|
13
|
+
xs: "gap-1 px-1.5 py-0.5 text-2xs",
|
|
14
14
|
sm: "gap-1.5 px-2 py-0.5 text-xs"
|
|
15
15
|
};
|
|
16
16
|
const TONE_CLASS = {
|
package/dist/styles/theme.css
CHANGED
|
@@ -20,6 +20,16 @@
|
|
|
20
20
|
--font-sans:
|
|
21
21
|
"DM Sans", "Noto Sans Arabic", ui-sans-serif, system-ui, sans-serif,
|
|
22
22
|
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
23
|
+
/* Below Tailwind's `text-xs`: badges, counts, and captions. */
|
|
24
|
+
--text-2xs: 0.6875rem;
|
|
25
|
+
--text-2xs--line-height: 1rem;
|
|
26
|
+
--text-3xs: 0.625rem;
|
|
27
|
+
--text-3xs--line-height: 0.875rem;
|
|
28
|
+
/* Floating surfaces (cards, previews, docked bars) share one elevation. */
|
|
29
|
+
--shadow-floating: 0 1px 2px rgb(0 0 0 / 0.04), 0 8px 24px rgb(0 0 0 / 0.06);
|
|
30
|
+
--shadow-floating-ring:
|
|
31
|
+
0 0 0 1px rgb(0 0 0 / 0.02), 0 1px 2px rgb(0 0 0 / 0.03),
|
|
32
|
+
0 8px 20px rgb(0 0 0 / 0.05);
|
|
23
33
|
--color-background: var(--background);
|
|
24
34
|
--color-foreground: var(--foreground);
|
|
25
35
|
--color-sidebar-ring: var(--sidebar-ring);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stll/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.1",
|
|
4
4
|
"description": "Stella's design system: bidi-aware React primitives built on Base UI, the dockable inspector pane, and the Tailwind v4 theme they are styled with.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"base-ui",
|
|
@@ -73,10 +73,6 @@
|
|
|
73
73
|
"types": "./dist/components/button.d.ts",
|
|
74
74
|
"import": "./dist/components/button.js"
|
|
75
75
|
},
|
|
76
|
-
"./button-variants": {
|
|
77
|
-
"types": "./dist/components/button-variants.d.ts",
|
|
78
|
-
"import": "./dist/components/button-variants.js"
|
|
79
|
-
},
|
|
80
76
|
"./checkbox": {
|
|
81
77
|
"types": "./dist/components/checkbox.d.ts",
|
|
82
78
|
"import": "./dist/components/checkbox.js"
|
|
@@ -390,10 +386,6 @@
|
|
|
390
386
|
"types": "./dist/components/button.d.ts",
|
|
391
387
|
"import": "./dist/components/button.js"
|
|
392
388
|
},
|
|
393
|
-
"./components/button-variants": {
|
|
394
|
-
"types": "./dist/components/button-variants.d.ts",
|
|
395
|
-
"import": "./dist/components/button-variants.js"
|
|
396
|
-
},
|
|
397
389
|
"./components/checkbox": {
|
|
398
390
|
"types": "./dist/components/checkbox.d.ts",
|
|
399
391
|
"import": "./dist/components/checkbox.js"
|
|
@@ -618,7 +610,7 @@
|
|
|
618
610
|
"@playwright/test": "^1.63.0",
|
|
619
611
|
"@stll/typescript-config": "0.0.0",
|
|
620
612
|
"@tailwindcss/vite": "4.3.3",
|
|
621
|
-
"@tanstack/react-virtual": "^3.14.
|
|
613
|
+
"@tanstack/react-virtual": "^3.14.12",
|
|
622
614
|
"@types/react": "^19.2.17",
|
|
623
615
|
"@types/react-dom": "^19.2.7",
|
|
624
616
|
"bun-types": "1.4.2",
|
|
@@ -634,7 +626,7 @@
|
|
|
634
626
|
"@base-ui/react": "^1.7.0",
|
|
635
627
|
"@dnd-kit/core": "^6.3.1",
|
|
636
628
|
"@dnd-kit/sortable": "^10.0.0",
|
|
637
|
-
"@tanstack/react-virtual": "^3.14.
|
|
629
|
+
"@tanstack/react-virtual": "^3.14.12",
|
|
638
630
|
"react": ">=19",
|
|
639
631
|
"react-dom": ">=19",
|
|
640
632
|
"tailwindcss": "^4.3.0"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
//#region src/components/button-variants.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Disabled styling for a button that is only `aria-disabled`.
|
|
4
|
-
*
|
|
5
|
-
* The `disabled:` utilities below are CSS `:disabled`, which cannot match an
|
|
6
|
-
* element that carries no native `disabled` attribute, and `pointer-events-none`
|
|
7
|
-
* is deliberately not repeated: that rule is the reason a disabled button's
|
|
8
|
-
* tooltip can never open. Matches the treatment `disabled:opacity-64` gives, and
|
|
9
|
-
* swaps the cursor so the control still reads as unavailable on hover.
|
|
10
|
-
*/
|
|
11
|
-
export declare const buttonAccessibleDisabledClass = "cursor-not-allowed opacity-64";
|
|
12
|
-
export declare const buttonVariants: (props?: ({
|
|
13
|
-
size?: "sm" | "default" | "lg" | "icon" | "chip" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "xl" | "xs" | null | undefined;
|
|
14
|
-
variant?: "link" | "default" | "outline" | "destructive" | "destructive-outline" | "ghost" | "secondary" | null | undefined;
|
|
15
|
-
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
16
|
-
//#endregion
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { cva } from "class-variance-authority";
|
|
2
|
-
//#region src/components/button-variants.tsx
|
|
3
|
-
/**
|
|
4
|
-
* Disabled styling for a button that is only `aria-disabled`.
|
|
5
|
-
*
|
|
6
|
-
* The `disabled:` utilities below are CSS `:disabled`, which cannot match an
|
|
7
|
-
* element that carries no native `disabled` attribute, and `pointer-events-none`
|
|
8
|
-
* is deliberately not repeated: that rule is the reason a disabled button's
|
|
9
|
-
* tooltip can never open. Matches the treatment `disabled:opacity-64` gives, and
|
|
10
|
-
* swaps the cursor so the control still reads as unavailable on hover.
|
|
11
|
-
*/
|
|
12
|
-
const buttonAccessibleDisabledClass = "cursor-not-allowed opacity-64";
|
|
13
|
-
const buttonVariants = cva("focus-visible:ring-ring focus-visible:ring-offset-background relative inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-lg border text-base font-medium whitespace-nowrap transition-shadow outline-none before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] focus-visible:ring-2 focus-visible:ring-offset-1 disabled:pointer-events-none disabled:opacity-64 sm:text-sm pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&_svg]:pointer-events-none [&_svg]:-mx-0.5 [&_svg]:shrink-0 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4", {
|
|
14
|
-
defaultVariants: {
|
|
15
|
-
size: "default",
|
|
16
|
-
variant: "default"
|
|
17
|
-
},
|
|
18
|
-
variants: {
|
|
19
|
-
size: {
|
|
20
|
-
chip: "h-7 gap-1.5 rounded-full px-2.5 text-xs before:rounded-full sm:text-xs",
|
|
21
|
-
default: "h-9 px-[calc(--spacing(3)-1px)] sm:h-8",
|
|
22
|
-
icon: "size-9 sm:size-8",
|
|
23
|
-
"icon-lg": "size-10 sm:size-9",
|
|
24
|
-
"icon-sm": "size-8 sm:size-7",
|
|
25
|
-
"icon-xl": "size-11 sm:size-10 [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5",
|
|
26
|
-
"icon-xs": "size-7 rounded-md before:rounded-[calc(var(--radius-md)-1px)] sm:size-6 not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-4 sm:not-in-data-[slot=input-group]:[&_svg:not([class*='size-'])]:size-3.5",
|
|
27
|
-
lg: "h-10 px-[calc(--spacing(3.5)-1px)] sm:h-9",
|
|
28
|
-
sm: "h-8 gap-1.5 px-[calc(--spacing(2.5)-1px)] sm:h-7",
|
|
29
|
-
xl: "h-11 px-[calc(--spacing(4)-1px)] text-lg sm:h-10 sm:text-base [&_svg:not([class*='size-'])]:size-5 sm:[&_svg:not([class*='size-'])]:size-4.5",
|
|
30
|
-
xs: "h-7 gap-1 rounded-md px-[calc(--spacing(2)-1px)] text-sm before:rounded-[calc(var(--radius-md)-1px)] sm:h-6 sm:text-xs [&_svg:not([class*='size-'])]:size-4 sm:[&_svg:not([class*='size-'])]:size-3.5"
|
|
31
|
-
},
|
|
32
|
-
variant: {
|
|
33
|
-
default: "border-primary bg-primary text-primary-foreground shadow-primary/24 [:hover,[data-pressed]]:bg-primary/90 shadow-xs not-disabled:inset-shadow-[0_1px_--theme(--color-white/16%)] [:active,[data-pressed]]:inset-shadow-[0_1px_--theme(--color-black/8%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
34
|
-
destructive: "border-destructive/32 bg-destructive/10 text-destructive-foreground shadow-destructive/8 [:hover,[data-pressed]]:border-destructive/40 [:hover,[data-pressed]]:bg-destructive/14 [:active,[data-pressed]]:bg-destructive/18 shadow-xs not-dark:bg-clip-padding not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
35
|
-
"destructive-outline": "border-input bg-popover text-destructive-foreground dark:bg-input/32 [:hover,[data-pressed]]:border-destructive/32 [:hover,[data-pressed]]:bg-destructive/4 shadow-xs/5 not-dark:bg-clip-padding not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
36
|
-
ghost: "text-foreground data-pressed:bg-accent [:hover,[data-pressed]]:bg-accent border-transparent",
|
|
37
|
-
link: "border-transparent underline-offset-4 [:hover,[data-pressed]]:underline",
|
|
38
|
-
outline: "border-input bg-popover text-foreground dark:bg-input/32 [:hover,[data-pressed]]:bg-accent/50 dark:[:hover,[data-pressed]]:bg-input/64 shadow-xs/5 not-dark:bg-clip-padding not-disabled:not-active:not-data-pressed:before:shadow-[0_1px_--theme(--color-black/4%)] dark:not-disabled:before:shadow-[0_-1px_--theme(--color-white/2%)] dark:not-disabled:not-active:not-data-pressed:before:shadow-[0_-1px_--theme(--color-white/6%)] [:disabled,:active,[data-pressed]]:shadow-none",
|
|
39
|
-
secondary: "bg-secondary text-secondary-foreground [:active,[data-pressed]]:bg-secondary/80 [:hover,[data-pressed]]:bg-secondary/90 border-transparent"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
//#endregion
|
|
44
|
-
export { buttonAccessibleDisabledClass, buttonVariants };
|