@firecms/ui 3.0.0-rc.4 → 3.0.0-tw4.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/index.css +55 -6
- package/dist/index.es.js +329 -308
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +329 -308
- package/dist/index.umd.js.map +1 -1
- package/dist/styles.d.ts +11 -11
- package/package.json +15 -15
- package/src/components/BooleanSwitch.tsx +3 -3
- package/src/components/Button.tsx +5 -5
- package/src/components/Checkbox.tsx +1 -1
- package/src/components/Dialog.tsx +13 -13
- package/src/components/DialogActions.tsx +1 -1
- package/src/components/ExpandablePanel.tsx +1 -1
- package/src/components/IconButton.tsx +3 -2
- package/src/components/Menubar.tsx +1 -1
- package/src/components/MultiSelect.tsx +12 -9
- package/src/components/Select.tsx +1 -0
- package/src/components/Separator.tsx +2 -2
- package/src/components/Sheet.tsx +2 -2
- package/src/components/Slider.tsx +4 -4
- package/src/components/Tabs.tsx +1 -1
- package/src/components/TextField.tsx +10 -2
- package/src/components/Tooltip.tsx +1 -1
- package/src/index.css +55 -6
- package/src/styles.ts +11 -11
- package/src/util/cls.ts +1 -1
package/dist/styles.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export declare const focusedDisabled = "focus-visible:ring-0 focus-visible:ring-offset-0";
|
|
2
|
-
export declare const focusedInvisibleMixin = "focus:bg-opacity-70 focus:bg-surface-accent-100 focus:dark:bg-surface-800 focus:dark:bg-opacity-60";
|
|
3
|
-
export declare const focusedClasses = "z-30 outline-none ring-2 ring-primary ring-opacity-75 ring-offset-2 ring-offset-transparent ";
|
|
4
|
-
export declare const fieldBackgroundMixin = "bg-opacity-50 bg-surface-accent-200 dark:bg-surface-800 dark:bg-opacity-60";
|
|
5
|
-
export declare const fieldBackgroundInvisibleMixin = "bg-opacity-0 bg-surface-accent-100 dark:bg-surface-800 dark:bg-opacity-0";
|
|
6
|
-
export declare const fieldBackgroundDisabledMixin = "dark:bg-surface-800 bg-opacity-50 dark:bg-opacity-90";
|
|
7
|
-
export declare const fieldBackgroundHoverMixin = "hover:bg-opacity-70 dark:hover:bg-surface-700 dark:hover:bg-opacity-40";
|
|
8
|
-
export declare const defaultBorderMixin = "border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40";
|
|
9
|
-
export declare const paperMixin = "bg-white rounded-md dark:bg-surface-950 border border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40";
|
|
10
|
-
export declare const cardMixin = "bg-white
|
|
11
|
-
export declare const cardClickableMixin = "hover:bg-surface-accent-100 dark:hover:bg-surface-accent-800 hover:ring-2 hover:ring-primary cursor-pointer";
|
|
12
|
-
export declare const cardSelectedMixin = "bg-primary-bg dark:bg-primary-bg bg-opacity-30 dark:bg-opacity-10 ring-1 ring-primary ring-opacity-75";
|
|
2
|
+
export declare const focusedInvisibleMixin = "focus:bg-opacity-70 focus:bg-surface-accent-100 focus:dark:bg-surface-800 focus:dark:bg-opacity-60 focus:bg-surface-accent-100/70 dark:focus:bg-surface-800/60";
|
|
3
|
+
export declare const focusedClasses = "z-30 outline-hidden outline-none ring-2 ring-primary ring-opacity-75 ring-primary/75 ring-offset-2 ring-offset-transparent ";
|
|
4
|
+
export declare const fieldBackgroundMixin = "bg-opacity-50 bg-surface-accent-200 bg-surface-accent-200/50 dark:bg-surface-800 dark:bg-opacity-60 dark:bg-surface-800/60";
|
|
5
|
+
export declare const fieldBackgroundInvisibleMixin = "bg-opacity-0 bg-surface-accent-100 dark:bg-surface-800 dark:bg-opacity-0 bg-surface-accent-200/0 dark:bg-surface-800/0";
|
|
6
|
+
export declare const fieldBackgroundDisabledMixin = "dark:bg-surface-800 bg-opacity-50 dark:bg-opacity-90 bg-surface-accent-200/50 dark:bg-surface-800/90";
|
|
7
|
+
export declare const fieldBackgroundHoverMixin = "hover:bg-opacity-70 dark:hover:bg-surface-700 dark:hover:bg-opacity-40 hover:bg-surface-accent-200/70 hover:dark:bg-surface-700/40";
|
|
8
|
+
export declare const defaultBorderMixin = "border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40 border-surface-200/40 dark:border-surface-700/40 ";
|
|
9
|
+
export declare const paperMixin = "bg-white rounded-md dark:bg-surface-950 border border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40 border-surface-200/40 dark:border-surface-700/40";
|
|
10
|
+
export declare const cardMixin = "bg-white dark:bg-surface-950 rounded-md border border-surface-200/40 dark:border-surface-700/40 m-1 -p-1";
|
|
11
|
+
export declare const cardClickableMixin = "hover:bg-surface-accent-100 dark:hover:bg-surface-accent-800 hover:ring-2 hover:ring-primary cursor-pointer hover:bg-primary/20 dark:hover:bg-primary/10 ";
|
|
12
|
+
export declare const cardSelectedMixin = "bg-primary-bg dark:bg-primary-bg bg-opacity-30 bg-primary-bg/30 dark:bg-opacity-10 dark:bg-primary-bg/10 ring-1 ring-primary ring-opacity-75 ring-primary/75 bg-primary/10 dark:bg-primary/10 ring-1 ring-primary/75";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firecms/ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.0.0-
|
|
4
|
+
"version": "3.0.0-tw4.1",
|
|
5
5
|
"description": "Awesome Firebase/Firestore-based headless open-source CMS",
|
|
6
6
|
"funding": {
|
|
7
7
|
"url": "https://github.com/sponsors/firecmsco"
|
|
@@ -58,21 +58,21 @@
|
|
|
58
58
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
59
59
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
60
60
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
61
|
-
"@radix-ui/react-label": "^2.1.
|
|
61
|
+
"@radix-ui/react-label": "^2.1.8",
|
|
62
62
|
"@radix-ui/react-menubar": "^1.1.16",
|
|
63
63
|
"@radix-ui/react-popover": "^1.1.15",
|
|
64
|
-
"@radix-ui/react-portal": "^1.1.
|
|
64
|
+
"@radix-ui/react-portal": "^1.1.10",
|
|
65
65
|
"@radix-ui/react-radio-group": "^1.3.8",
|
|
66
66
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
67
67
|
"@radix-ui/react-select": "^2.2.6",
|
|
68
|
-
"@radix-ui/react-separator": "^1.1.
|
|
68
|
+
"@radix-ui/react-separator": "^1.1.8",
|
|
69
69
|
"@radix-ui/react-slider": "^1.3.6",
|
|
70
70
|
"@radix-ui/react-switch": "^1.2.6",
|
|
71
71
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
72
72
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
73
|
-
"@radix-ui/react-visually-hidden": "^1.2.
|
|
73
|
+
"@radix-ui/react-visually-hidden": "^1.2.4",
|
|
74
74
|
"clsx": "^2.1.1",
|
|
75
|
-
"cmdk": "^
|
|
75
|
+
"cmdk": "^1.1.1",
|
|
76
76
|
"date-fns": "^3.6.0",
|
|
77
77
|
"markdown-it": "^14.1.0",
|
|
78
78
|
"react-dropzone": "^14.3.8",
|
|
@@ -84,9 +84,9 @@
|
|
|
84
84
|
"react-dom": ">=18.0.0"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
|
-
"@jest/globals": "^30.
|
|
88
|
-
"@tailwindcss/postcss": "^4.1.
|
|
89
|
-
"@testing-library/jest-dom": "^6.
|
|
87
|
+
"@jest/globals": "^30.2.0",
|
|
88
|
+
"@tailwindcss/postcss": "^4.1.17",
|
|
89
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
90
90
|
"@testing-library/react": "^16.3.0",
|
|
91
91
|
"@testing-library/user-event": "^14.6.1",
|
|
92
92
|
"@types/jest": "^29.5.14",
|
|
@@ -98,16 +98,16 @@
|
|
|
98
98
|
"@vitejs/plugin-react": "^4.7.0",
|
|
99
99
|
"babel-plugin-react-compiler": "^19.0.0-beta-af1b7da-20250417",
|
|
100
100
|
"cross-env": "^7.0.3",
|
|
101
|
-
"eslint-plugin-react-compiler": "^19.
|
|
101
|
+
"eslint-plugin-react-compiler": "^19.1.0-rc.2",
|
|
102
102
|
"jest": "^29.7.0",
|
|
103
103
|
"npm-run-all": "^4.1.5",
|
|
104
104
|
"rollup-preserve-directives": "^1.1.3",
|
|
105
|
-
"ts-jest": "^29.4.
|
|
105
|
+
"ts-jest": "^29.4.5",
|
|
106
106
|
"ts-node": "^10.9.2",
|
|
107
107
|
"tsd": "^0.31.2",
|
|
108
|
-
"typescript": "^5.9.
|
|
109
|
-
"vite": "^7.
|
|
110
|
-
"vite-plugin-static-copy": "^3.1.
|
|
108
|
+
"typescript": "^5.9.3",
|
|
109
|
+
"vite": "^7.2.4",
|
|
110
|
+
"vite-plugin-static-copy": "^3.1.4"
|
|
111
111
|
},
|
|
112
112
|
"files": [
|
|
113
113
|
"dist",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"index.css",
|
|
116
116
|
"tailwind.config.js"
|
|
117
117
|
],
|
|
118
|
-
"gitHead": "
|
|
118
|
+
"gitHead": "a054392bdc44c6eae1b0265aee488d5995610f96",
|
|
119
119
|
"publishConfig": {
|
|
120
120
|
"access": "public"
|
|
121
121
|
}
|
|
@@ -42,10 +42,10 @@ export const BooleanSwitch = React.forwardRef(function BooleanSwitch({
|
|
|
42
42
|
}}
|
|
43
43
|
className={cls(
|
|
44
44
|
size === "smallest" ? "w-[34px] h-[18px] min-w-[34px] min-h-[18px]" : size === "small" ? "w-[38px] h-[22px] min-w-[38px] min-h-[22px]" : "w-[42px] h-[26px] min-w-[42px] min-h-[26px]",
|
|
45
|
-
"outline-none rounded-full relative shadow-sm",
|
|
45
|
+
"outline-none outline-hidden rounded-full relative shadow-sm",
|
|
46
46
|
value ? (disabled
|
|
47
|
-
? "bg-white bg-opacity-54 dark:bg-surface-accent-950 border-surface-accent-100 dark:border-surface-accent-700 ring-1 ring-surface-accent-200 dark:ring-surface-accent-700"
|
|
48
|
-
: "ring-secondary ring-1 bg-secondary dark:bg-secondary") : "bg-white bg-opacity-54 dark:bg-surface-accent-900 ring-1 ring-surface-accent-200 dark:ring-surface-accent-700",
|
|
47
|
+
? "bg-white bg-opacity-54 bg-white/54 dark:bg-surface-accent-950 border-surface-accent-100 dark:border-surface-accent-700 ring-1 ring-surface-accent-200 dark:ring-surface-accent-700"
|
|
48
|
+
: "ring-secondary ring-1 bg-secondary dark:bg-secondary") : "bg-white bg-opacity-54 bg-white/54 dark:bg-surface-accent-900 ring-1 ring-surface-accent-200 dark:ring-surface-accent-700",
|
|
49
49
|
className
|
|
50
50
|
)}
|
|
51
51
|
{...props}
|
|
@@ -46,14 +46,14 @@ const ButtonInner = React.forwardRef<
|
|
|
46
46
|
"border border-transparent bg-surface-100 hover:bg-surface-accent-200 text-text-primary dark:bg-surface-800 dark:hover:bg-surface-accent-700 dark:text-text-primary-dark hover:text-text-primary dark:text-text-primary-dark hover:dark:text-text-primary-dark": variant === "filled" && color === "neutral" && !disabled,
|
|
47
47
|
|
|
48
48
|
// Text Variants
|
|
49
|
-
"border border-transparent text-primary hover:text-primary hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-accent-800": variant === "text" && color === "primary" && !disabled,
|
|
50
|
-
"border border-transparent text-secondary hover:text-secondary hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-accent-800": variant === "text" && color === "secondary" && !disabled,
|
|
51
|
-
"border border-transparent text-red-500 hover:text-red-500 hover:bg-red-500 hover:bg-opacity-10": variant === "text" && color === "error" && !disabled,
|
|
49
|
+
"border border-transparent text-primary hover:text-primary hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800": variant === "text" && color === "primary" && !disabled,
|
|
50
|
+
"border border-transparent text-secondary hover:text-secondary hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800": variant === "text" && color === "secondary" && !disabled,
|
|
51
|
+
"border border-transparent text-red-500 hover:text-red-500 hover:bg-red-500 hover:bg-opacity-10 hover:bg-red-500/10": variant === "text" && color === "error" && !disabled,
|
|
52
52
|
"border border-transparent text-text-primary hover:text-text-primary dark:text-text-primary-dark hover:dark:text-text-primary-dark hover:bg-surface-accent-200 hover:dark:bg-surface-700": variant === "text" && color === "text" && !disabled,
|
|
53
53
|
"border border-transparent text-text-primary hover:text-text-primary hover:bg-surface-accent-200 dark:text-text-primary-dark dark:hover:text-text-primary-dark dark:hover:bg-surface-accent-700": variant === "text" && color === "neutral" && !disabled,
|
|
54
54
|
|
|
55
55
|
// Outlined Variants
|
|
56
|
-
"border border-primary text-primary hover:text-primary hover:bg-primary-bg": variant === "outlined" && color === "primary" && !disabled,
|
|
56
|
+
"border border-primary text-primary hover:text-primary hover:bg-primary-bg hover:bg-primary/10": variant === "outlined" && color === "primary" && !disabled,
|
|
57
57
|
"border border-secondary text-secondary hover:text-secondary hover:bg-secondary-bg": variant === "outlined" && color === "secondary" && !disabled,
|
|
58
58
|
"border border-red-500 text-red-500 hover:text-red-500 hover:bg-red-500 hover:text-white": variant === "outlined" && color === "error" && !disabled,
|
|
59
59
|
"border border-surface-accent-400 text-text-primary hover:text-text-primary dark:text-text-primary-dark hover:bg-surface-accent-200": variant === "outlined" && color === "text" && !disabled,
|
|
@@ -63,7 +63,7 @@ const ButtonInner = React.forwardRef<
|
|
|
63
63
|
"text-text-disabled dark:text-text-disabled-dark": disabled,
|
|
64
64
|
"border border-transparent opacity-50": variant === "text" && disabled,
|
|
65
65
|
"border border-surface-500 opacity-50": variant === "outlined" && disabled,
|
|
66
|
-
"border border-transparent bg-surface-300 dark:bg-surface-500 opacity-40": variant === "filled" && disabled,
|
|
66
|
+
"border border-transparent bg-surface-300 dark:bg-surface-500 opacity-40 bg-surface-300/40 dark:bg-surface-500/40": variant === "filled" && disabled,
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
const sizeClasses = cls(
|
|
@@ -71,7 +71,7 @@ export const Checkbox = ({
|
|
|
71
71
|
padding ? paddingClasses[size] : "",
|
|
72
72
|
outerSizeClasses[size],
|
|
73
73
|
"inline-flex items-center justify-center text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150",
|
|
74
|
-
onCheckedChange ? "rounded-full hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-accent-700 dark:hover:bg-opacity-75" : "",
|
|
74
|
+
onCheckedChange ? "rounded-full hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-700 dark:hover:bg-opacity-75 dark:hover:bg-surface-accent-700/75" : "",
|
|
75
75
|
onCheckedChange ? "cursor-pointer" : "cursor-default"
|
|
76
76
|
)}>
|
|
77
77
|
<div
|
|
@@ -27,18 +27,18 @@ export type DialogProps = {
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
const widthClasses = {
|
|
30
|
-
xs: "max-w-xs
|
|
31
|
-
sm: "max-w-sm
|
|
32
|
-
md: "max-w-md
|
|
33
|
-
lg: "max-w-lg
|
|
34
|
-
xl: "max-w-xl
|
|
35
|
-
"2xl": "max-w-2xl
|
|
36
|
-
"3xl": "max-w-3xl
|
|
37
|
-
"4xl": "max-w-4xl
|
|
38
|
-
"5xl": "max-w-5xl
|
|
39
|
-
"6xl": "max-w-6xl
|
|
40
|
-
"7xl": "max-w-7xl
|
|
41
|
-
full: "max-w-full
|
|
30
|
+
xs: "max-w-xs w-xs",
|
|
31
|
+
sm: "max-w-sm w-sm",
|
|
32
|
+
md: "max-w-md w-md",
|
|
33
|
+
lg: "max-w-lg w-lg",
|
|
34
|
+
xl: "max-w-xl w-xl",
|
|
35
|
+
"2xl": "max-w-2xl w-2xl",
|
|
36
|
+
"3xl": "max-w-3xl w-3xl",
|
|
37
|
+
"4xl": "max-w-4xl w-4xl",
|
|
38
|
+
"5xl": "max-w-5xl w-5xl",
|
|
39
|
+
"6xl": "max-w-6xl w-6xl",
|
|
40
|
+
"7xl": "max-w-7xl w-7xl",
|
|
41
|
+
full: "max-w-full w-full"
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
export const Dialog = ({
|
|
@@ -83,7 +83,7 @@ export const Dialog = ({
|
|
|
83
83
|
<div className={cls("fixed inset-0 z-30", containerClassName)}>
|
|
84
84
|
|
|
85
85
|
<DialogPrimitive.Overlay
|
|
86
|
-
className={cls("fixed inset-0 transition-opacity z-20 ease-in-out duration-200 bg-black bg-opacity-
|
|
86
|
+
className={cls("fixed inset-0 transition-opacity z-20 ease-in-out duration-200 bg-black dark:bg-opacity-60 dark:bg-black/60 bg-opacity-50 bg-black/50 dark: bg-black/60 backdrop-blur-sm ",
|
|
87
87
|
displayed && open ? "opacity-100" : "opacity-0",
|
|
88
88
|
"z-20 fixed top-0 left-0 w-full h-full flex justify-center items-center"
|
|
89
89
|
)}
|
|
@@ -19,7 +19,7 @@ export function DialogActions({
|
|
|
19
19
|
defaultBorderMixin,
|
|
20
20
|
"pt-2 pb-4 px-4 border-t flex flex-row items-center justify-end bottom-0 right-0 left-0 text-right z-2 gap-2",
|
|
21
21
|
position,
|
|
22
|
-
"bg-white bg-opacity-60 dark:bg-surface-900 dark:bg-opacity-60",
|
|
22
|
+
"bg-white bg-opacity-60 bg-white/60 dark:bg-surface-900 dark:bg-opacity-60 dark:bg-surface-900/60",
|
|
23
23
|
translucent ? "backdrop-blur-sm" : "",
|
|
24
24
|
className)}>
|
|
25
25
|
{children}
|
|
@@ -94,7 +94,7 @@ export function ExpandablePanel({
|
|
|
94
94
|
<Collapsible.Trigger
|
|
95
95
|
className={cls(
|
|
96
96
|
"rounded-t flex items-center justify-between w-full min-h-[52px]",
|
|
97
|
-
"hover:bg-surface-accent-200 hover:bg-opacity-40 dark:hover:bg-surface-800 dark:hover:bg-opacity-40",
|
|
97
|
+
"hover:bg-surface-accent-200 hover:bg-opacity-40 hover:bg-surface-accent-200/40 dark:hover:bg-surface-800 dark:hover:bg-opacity-40 dark:hover:bg-surface-800/40",
|
|
98
98
|
invisible ? "border-b px-2" : "p-4",
|
|
99
99
|
open ? "py-6" : "py-4",
|
|
100
100
|
"transition-all duration-200",
|
|
@@ -14,7 +14,7 @@ export type IconButtonProps<C extends React.ElementType> =
|
|
|
14
14
|
onClick?: React.MouseEventHandler<any>
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
const buttonClasses = "hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-accent-800 hover:scale-105 transition-transform";
|
|
17
|
+
const buttonClasses = "hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800 hover:scale-105 transition-transform";
|
|
18
18
|
const baseClasses = "inline-flex items-center justify-center p-2 text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150";
|
|
19
19
|
const colorClasses = "text-surface-accent-600 visited:text-surface-accent-600 dark:text-surface-accent-300 dark:visited:text-surface-300";
|
|
20
20
|
const sizeClasses = {
|
|
@@ -40,7 +40,7 @@ const IconButtonInner = <C extends React.ElementType = "button">({
|
|
|
40
40
|
...props
|
|
41
41
|
}: IconButtonProps<C>, ref: React.ForwardedRef<HTMLButtonElement>) => {
|
|
42
42
|
|
|
43
|
-
const bgClasses = variant === "ghost" ? "bg-transparent" : "bg-surface-accent-200 bg-opacity-50 dark:bg-surface-950 dark:bg-opacity-50";
|
|
43
|
+
const bgClasses = variant === "ghost" ? "bg-transparent" : "bg-surface-accent-200 bg-opacity-50 bg-surface-accent-200/50 dark:bg-surface-950 dark:bg-opacity-50 dark:bg-surface-950/50";
|
|
44
44
|
const Component: React.ElementType<any> = component || "button";
|
|
45
45
|
return (
|
|
46
46
|
<Component
|
|
@@ -50,6 +50,7 @@ const IconButtonInner = <C extends React.ElementType = "button">({
|
|
|
50
50
|
className={cls(
|
|
51
51
|
disabled ? "opacity-50 pointer-events-none" : "cursor-pointer",
|
|
52
52
|
toggled ? "outline outline-2 outline-primary" : "",
|
|
53
|
+
"text-inherit dark:text-inherit",
|
|
53
54
|
colorClasses,
|
|
54
55
|
bgClasses,
|
|
55
56
|
baseClasses,
|
|
@@ -44,7 +44,7 @@ export function MenubarTrigger({
|
|
|
44
44
|
return (
|
|
45
45
|
<MenubarPrimitive.Trigger
|
|
46
46
|
onSelect={onSelect}
|
|
47
|
-
className={cls("py-2 px-3 outline-none select-none font-medium leading-none rounded text-text-primary dark:text-text-primary-dark text-[13px] flex items-center justify-between gap-[2px] data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-800 data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-800 hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-accent-800",
|
|
47
|
+
className={cls("py-2 px-3 outline-none select-none font-medium leading-none rounded text-text-primary dark:text-text-primary-dark text-[13px] flex items-center justify-between gap-[2px] data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-800 data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-800 hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800",
|
|
48
48
|
className)}>
|
|
49
49
|
{children}
|
|
50
50
|
</MenubarPrimitive.Trigger>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import { ChangeEvent, Children, useEffect } from "react";
|
|
4
|
+
import { ChangeEvent, Children, useEffect, useState } from "react";
|
|
5
5
|
import { Command as CommandPrimitive } from "cmdk";
|
|
6
6
|
import { cls } from "../util";
|
|
7
7
|
import { CheckIcon, CloseIcon, KeyboardArrowDownIcon } from "../icons";
|
|
@@ -88,9 +88,13 @@ export const MultiSelect = React.forwardRef<
|
|
|
88
88
|
},
|
|
89
89
|
ref
|
|
90
90
|
) => {
|
|
91
|
-
|
|
92
|
-
const [isPopoverOpen, setIsPopoverOpen] =
|
|
93
|
-
const [selectedValues, setSelectedValues] =
|
|
91
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
92
|
+
const [isPopoverOpen, setIsPopoverOpen] = useState(open ?? false);
|
|
93
|
+
const [selectedValues, setSelectedValues] = useState<any[]>(value ?? []);
|
|
94
|
+
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
setIsMounted(true);
|
|
97
|
+
}, []);
|
|
94
98
|
|
|
95
99
|
const onPopoverOpenChange = (open: boolean) => {
|
|
96
100
|
setIsPopoverOpen(open);
|
|
@@ -184,7 +188,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
184
188
|
{typeof label === "string" ? <SelectInputLabel error={error}>{label}</SelectInputLabel> : label}
|
|
185
189
|
|
|
186
190
|
<PopoverPrimitive.Root
|
|
187
|
-
open={isPopoverOpen}
|
|
191
|
+
open={isMounted && isPopoverOpen}
|
|
188
192
|
onOpenChange={onPopoverOpenChange}
|
|
189
193
|
modal={modalPopover}
|
|
190
194
|
>
|
|
@@ -278,7 +282,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
278
282
|
</button>
|
|
279
283
|
</PopoverPrimitive.Trigger>
|
|
280
284
|
<PopoverPrimitive.Content
|
|
281
|
-
className={cls("z-50
|
|
285
|
+
className={cls("z-50 overflow-hidden border bg-white dark:bg-surface-900 rounded-lg w-[400px]", defaultBorderMixin)}
|
|
282
286
|
align="start"
|
|
283
287
|
sideOffset={8}
|
|
284
288
|
onEscapeKeyDown={() => onPopoverOpenChange(false)}
|
|
@@ -313,7 +317,7 @@ export const MultiSelect = React.forwardRef<
|
|
|
313
317
|
"cursor-pointer",
|
|
314
318
|
"m-1",
|
|
315
319
|
"ring-offset-transparent",
|
|
316
|
-
"p-1 rounded aria-[selected=true]:outline-none aria-[selected=true]:ring-2 aria-[selected=true]:ring-primary aria-[selected=true]:ring-opacity-75 aria-[selected=true]:ring-offset-2",
|
|
320
|
+
"p-1 rounded aria-[selected=true]:outline-none aria-[selected=true]:ring-2 aria-[selected=true]:ring-primary aria-[selected=true]:ring-opacity-75 aria-[selected=true]:ring-primary/75 aria-[selected=true]:ring-offset-2",
|
|
317
321
|
"aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900",
|
|
318
322
|
"cursor-pointer p-2 rounded aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900"
|
|
319
323
|
)
|
|
@@ -369,7 +373,7 @@ export function MultiSelectItem<T extends MultiSelectValue = string>({
|
|
|
369
373
|
"cursor-pointer",
|
|
370
374
|
"m-1",
|
|
371
375
|
"ring-offset-transparent",
|
|
372
|
-
"p-1 rounded aria-[selected=true]:outline-none aria-[selected=true]:ring-2 aria-[selected=true]:ring-primary aria-[selected=true]:ring-opacity-75 aria-[selected=true]:ring-offset-2",
|
|
376
|
+
"p-1 rounded aria-[selected=true]:outline-none aria-[selected=true]:ring-2 aria-[selected=true]:ring-primary aria-[selected=true]:ring-opacity-75 aria-[selected=true]:ring-primary/75 aria-[selected=true]:ring-offset-2",
|
|
373
377
|
"aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900",
|
|
374
378
|
"cursor-pointer p-2 rounded aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900",
|
|
375
379
|
className
|
|
@@ -398,4 +402,3 @@ function InnerCheckBox({ checked }: { checked: boolean }) {
|
|
|
398
402
|
</div>
|
|
399
403
|
</div>
|
|
400
404
|
}
|
|
401
|
-
|
|
@@ -142,6 +142,7 @@ export const Select = forwardRef<HTMLDivElement, SelectProps>(({
|
|
|
142
142
|
"px-3": size === "medium",
|
|
143
143
|
"px-2": size === "small" || size === "smallest",
|
|
144
144
|
} : "",
|
|
145
|
+
"outline-hidden focus:outline-hidden",
|
|
145
146
|
"outline-none focus:outline-none",
|
|
146
147
|
"select-none rounded-md text-sm",
|
|
147
148
|
error ? "text-red-500 dark:text-red-600" : "focus:text-text-primary dark:focus:text-text-primary-dark",
|
|
@@ -15,12 +15,12 @@ export function Separator({
|
|
|
15
15
|
<SeparatorPrimitive.Root
|
|
16
16
|
decorative={decorative}
|
|
17
17
|
orientation="horizontal"
|
|
18
|
-
className={cls("dark:bg-opacity-80 dark:bg-surface-800 bg-surface-100 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-4", className)}/>
|
|
18
|
+
className={cls("dark:bg-opacity-80 dark:bg-surface-800 dark:bg-surface-800/80 bg-surface-100 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-4", className)}/>
|
|
19
19
|
);
|
|
20
20
|
else
|
|
21
21
|
return (
|
|
22
22
|
<SeparatorPrimitive.Root
|
|
23
|
-
className={cls("dark:bg-opacity-80 dark:bg-surface-800 bg-surface-100 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px mx-4", className)}
|
|
23
|
+
className={cls("dark:bg-opacity-80 dark:bg-surface-800 dark:bg-surface-800/80 bg-surface-100 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px mx-4", className)}
|
|
24
24
|
decorative={decorative}
|
|
25
25
|
orientation="vertical"
|
|
26
26
|
/>
|
package/src/components/Sheet.tsx
CHANGED
|
@@ -70,8 +70,8 @@ export const Sheet: React.FC<SheetProps> = ({
|
|
|
70
70
|
className={cls(
|
|
71
71
|
"outline-none",
|
|
72
72
|
"fixed inset-0 transition-opacity z-20 ease-in-out duration-100 backdrop-blur-sm",
|
|
73
|
-
"bg-black bg-opacity-50",
|
|
74
|
-
"dark:bg-surface-900 dark:bg-opacity-60",
|
|
73
|
+
"bg-black bg-opacity-50 bg-black/50",
|
|
74
|
+
"dark:bg-surface-900 dark:bg-opacity-60 dark:bg-surface-900/60",
|
|
75
75
|
displayed && open ? "opacity-100" : "opacity-0",
|
|
76
76
|
overlayClassName
|
|
77
77
|
)}
|
|
@@ -37,8 +37,8 @@ function SliderThumb(props: {
|
|
|
37
37
|
"border-surface-accent-300 bg-surface-accent-300 dark:border-surface-700 dark:bg-surface-700": props.props.disabled
|
|
38
38
|
},
|
|
39
39
|
props.classes,
|
|
40
|
-
"focus-visible:ring-4 focus-visible:ring-primary focus-visible:ring-opacity-50",
|
|
41
|
-
"hover:ring-4 hover:ring-primary hover:ring-opacity-25",
|
|
40
|
+
"focus-visible:ring-4 focus-visible:ring-primary focus-visible:ring-opacity-50 focus-visible:ring-primary/50",
|
|
41
|
+
"hover:ring-4 hover:ring-primary hover:ring-opacity-25 hover:ring-primary/25",
|
|
42
42
|
"block rounded-full transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50")}
|
|
43
43
|
|
|
44
44
|
/>
|
|
@@ -48,7 +48,7 @@ function SliderThumb(props: {
|
|
|
48
48
|
className={cls(
|
|
49
49
|
"TooltipContent",
|
|
50
50
|
"max-w-lg leading-relaxed",
|
|
51
|
-
"z-50 rounded px-3 py-2 text-xs leading-none bg-surface-accent-700 dark:bg-surface-accent-800 bg-opacity-90 font-medium text-surface-accent-50 shadow-2xl select-none duration-400 ease-in transform opacity-100",
|
|
51
|
+
"z-50 rounded px-3 py-2 text-xs leading-none bg-surface-accent-700 dark:bg-surface-accent-800 bg-opacity-90 bg-surface-accent-700/90 dark:bg-surface-accent-800/90 font-medium text-surface-accent-50 shadow-2xl select-none duration-400 ease-in transform opacity-100",
|
|
52
52
|
)}>
|
|
53
53
|
{props.props.value?.[props.index]}
|
|
54
54
|
</TooltipPrimitive.Content>
|
|
@@ -84,7 +84,7 @@ const Slider = React.forwardRef<
|
|
|
84
84
|
>
|
|
85
85
|
<SliderPrimitive.Track
|
|
86
86
|
style={{ height: size === "small" ? 4 : 8 }}
|
|
87
|
-
className={"relative w-full grow overflow-hidden rounded-full bg-surface-accent-300 bg-opacity-40 dark:bg-surface-700 dark:bg-opacity-40"}>
|
|
87
|
+
className={"relative w-full grow overflow-hidden rounded-full bg-surface-accent-300 bg-opacity-40 bg-surface-accent-300/40 dark:bg-surface-700 dark:bg-opacity-40 dark:bg-surface-700/40"}>
|
|
88
88
|
|
|
89
89
|
<SliderPrimitive.Range
|
|
90
90
|
className={cls("absolute h-full", {
|
package/src/components/Tabs.tsx
CHANGED
|
@@ -57,7 +57,7 @@ export function Tab({
|
|
|
57
57
|
className)}>
|
|
58
58
|
<div className={cls("line-clamp-1",
|
|
59
59
|
"uppercase inline-block p-2 px-4 rounded",
|
|
60
|
-
"hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-accent-800",
|
|
60
|
+
"hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800",
|
|
61
61
|
innerClassName)}>
|
|
62
62
|
{children}
|
|
63
63
|
</div>
|
|
@@ -85,10 +85,16 @@ export const TextField = forwardRef<HTMLDivElement, TextFieldProps<string | numb
|
|
|
85
85
|
|
|
86
86
|
const inputRef = inputRefProp ?? useRef(null);
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
const [focused, setFocused] = React.useState(document.activeElement === inputRef.current);
|
|
88
|
+
const [focused, setFocused] = React.useState(false);
|
|
90
89
|
const hasValue = value !== undefined && value !== null && value !== "";
|
|
91
90
|
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
// @ts-ignore
|
|
93
|
+
if (inputRef.current && document.activeElement === inputRef.current) {
|
|
94
|
+
setFocused(true);
|
|
95
|
+
}
|
|
96
|
+
}, []);
|
|
97
|
+
|
|
92
98
|
useEffect(() => {
|
|
93
99
|
if (type !== "number") return;
|
|
94
100
|
const handleWheel = (event: any) => {
|
|
@@ -114,6 +120,8 @@ export const TextField = forwardRef<HTMLDivElement, TextFieldProps<string | numb
|
|
|
114
120
|
maxRows={maxRows}
|
|
115
121
|
value={value ?? ""}
|
|
116
122
|
onChange={onChange}
|
|
123
|
+
onFocus={() => setFocused(true)}
|
|
124
|
+
onBlur={() => setFocused(false)}
|
|
117
125
|
style={inputStyle}
|
|
118
126
|
className={cls(
|
|
119
127
|
invisible ? focusedInvisibleMixin : "",
|
|
@@ -64,7 +64,7 @@ export const Tooltip = ({
|
|
|
64
64
|
<TooltipPrimitive.Content
|
|
65
65
|
className={cls("TooltipContent",
|
|
66
66
|
"max-w-lg leading-relaxed",
|
|
67
|
-
"z-50 rounded px-3 py-2 text-xs leading-none bg-surface-accent-700 dark:bg-surface-accent-800 bg-opacity-90 font-medium text-surface-accent-50 shadow-2xl select-none duration-400 ease-in transform opacity-100",
|
|
67
|
+
"z-50 rounded px-3 py-2 text-xs leading-none bg-surface-accent-700 dark:bg-surface-accent-800 bg-opacity-90 bg-surface-accent-700/90 dark:bg-surface-accent-800/90 font-medium text-surface-accent-50 shadow-2xl select-none duration-400 ease-in transform opacity-100",
|
|
68
68
|
tooltipClassName)}
|
|
69
69
|
style={tooltipStyle}
|
|
70
70
|
sideOffset={sideOffset === undefined ? 4 : sideOffset}
|
package/src/index.css
CHANGED
|
@@ -1,3 +1,57 @@
|
|
|
1
|
+
@theme {
|
|
2
|
+
/* Font Families */
|
|
3
|
+
--font-sans: 'Rubik', 'Roboto', 'Helvetica', 'Arial', sans-serif;
|
|
4
|
+
--font-headers: 'Rubik', 'Roboto', 'Helvetica', 'Arial', sans-serif;
|
|
5
|
+
--font-mono: 'JetBrains Mono', 'Space Mono', 'Lucida Console', monospace;
|
|
6
|
+
|
|
7
|
+
/* Colors */
|
|
8
|
+
--color-primary: #0070F4;
|
|
9
|
+
--color-primary-light: oklch(from var(--color-primary) calc(l + 0.15) c h);
|
|
10
|
+
--color-primary-dark: oklch(from var(--color-primary) calc(l - 0.15) c h);
|
|
11
|
+
--color-secondary: #FF5B79;
|
|
12
|
+
--color-secondary-light: oklch(from var(--color-secondary) calc(l + 0.15) c h);
|
|
13
|
+
--color-secondary-dark: oklch(from var(--color-secondary) calc(l - 0.15) c h);
|
|
14
|
+
|
|
15
|
+
/* Field Colors */
|
|
16
|
+
--color-field-disabled: rgb(224 224 226);
|
|
17
|
+
--color-field-disabled-dark: rgb(35 35 37);
|
|
18
|
+
|
|
19
|
+
/* Text Colors */
|
|
20
|
+
--color-text-primary: rgba(0, 0, 0, 0.87);
|
|
21
|
+
--color-text-secondary: rgba(0, 0, 0, 0.52);
|
|
22
|
+
--color-text-disabled: rgba(0, 0, 0, 0.38);
|
|
23
|
+
--color-text-primary-dark: #ffffff;
|
|
24
|
+
--color-text-secondary-dark: rgba(255, 255, 255, 0.6);
|
|
25
|
+
--color-text-disabled-dark: rgba(255, 255, 255, 0.48);
|
|
26
|
+
|
|
27
|
+
/* Surface Colors */
|
|
28
|
+
--color-surface-50: #f8f8fc;
|
|
29
|
+
--color-surface-100: #e7e7eb;
|
|
30
|
+
--color-surface-200: #cfcfd6;
|
|
31
|
+
--color-surface-300: #b7b7bf;
|
|
32
|
+
--color-surface-400: #a0a0a9;
|
|
33
|
+
--color-surface-500: #87878f;
|
|
34
|
+
--color-surface-600: #6b6b74;
|
|
35
|
+
--color-surface-700: #454552;
|
|
36
|
+
--color-surface-800: #292934;
|
|
37
|
+
--color-surface-900: #18181c;
|
|
38
|
+
--color-surface-950: #101013;
|
|
39
|
+
|
|
40
|
+
/* Surface Accent Colors */
|
|
41
|
+
--color-surface-accent-50: #f8fafc;
|
|
42
|
+
--color-surface-accent-100: #f1f5f9;
|
|
43
|
+
--color-surface-accent-200: #e2e8f0;
|
|
44
|
+
--color-surface-accent-300: #cbd5e1;
|
|
45
|
+
--color-surface-accent-400: #94a3b8;
|
|
46
|
+
--color-surface-accent-500: #64748b;
|
|
47
|
+
--color-surface-accent-600: #475569;
|
|
48
|
+
--color-surface-accent-700: #334155;
|
|
49
|
+
--color-surface-accent-800: #1e293b;
|
|
50
|
+
--color-surface-accent-900: #0f172a;
|
|
51
|
+
--color-surface-accent-950: #020617;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
1
55
|
/* Chrome, Safari and Opera */
|
|
2
56
|
.no-scrollbar::-webkit-scrollbar {
|
|
3
57
|
display: none;
|
|
@@ -63,12 +117,7 @@
|
|
|
63
117
|
@apply text-sm font-semibold uppercase;
|
|
64
118
|
}
|
|
65
119
|
|
|
66
|
-
|
|
67
120
|
:focus-visible {
|
|
68
|
-
@apply outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
a {
|
|
72
|
-
@apply text-blue-600 dark:text-blue-400 dark:hover:text-blue-600 hover:text-blue-800
|
|
121
|
+
@apply outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-transparent
|
|
73
122
|
}
|
|
74
123
|
|
package/src/styles.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export const focusedDisabled = "focus-visible:ring-0 focus-visible:ring-offset-0";
|
|
2
|
-
export const focusedInvisibleMixin = "focus:bg-opacity-70 focus:bg-surface-accent-100 focus:dark:bg-surface-800 focus:dark:bg-opacity-60";
|
|
3
|
-
export const focusedClasses = "z-30 outline-none ring-2 ring-primary ring-opacity-75 ring-offset-2 ring-offset-transparent ";
|
|
4
|
-
export const fieldBackgroundMixin = "bg-opacity-50 bg-surface-accent-200 dark:bg-surface-800 dark:bg-opacity-60";
|
|
5
|
-
export const fieldBackgroundInvisibleMixin = "bg-opacity-0 bg-surface-accent-100 dark:bg-surface-800 dark:bg-opacity-0";
|
|
6
|
-
export const fieldBackgroundDisabledMixin = "dark:bg-surface-800 bg-opacity-50 dark:bg-opacity-90";
|
|
7
|
-
export const fieldBackgroundHoverMixin = "hover:bg-opacity-70 dark:hover:bg-surface-700 dark:hover:bg-opacity-40";
|
|
8
|
-
export const defaultBorderMixin = "border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40";
|
|
9
|
-
export const paperMixin = "bg-white rounded-md dark:bg-surface-950 border border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40";
|
|
10
|
-
export const cardMixin = "bg-white
|
|
11
|
-
export const cardClickableMixin = "hover:bg-surface-accent-100 dark:hover:bg-surface-accent-800 hover:ring-2 hover:ring-primary cursor-pointer";
|
|
12
|
-
export const cardSelectedMixin = "bg-primary-bg dark:bg-primary-bg bg-opacity-30 dark:bg-opacity-10 ring-1 ring-primary ring-opacity-75";
|
|
2
|
+
export const focusedInvisibleMixin = "focus:bg-opacity-70 focus:bg-surface-accent-100 focus:dark:bg-surface-800 focus:dark:bg-opacity-60 focus:bg-surface-accent-100/70 dark:focus:bg-surface-800/60";
|
|
3
|
+
export const focusedClasses = "z-30 outline-hidden outline-none ring-2 ring-primary ring-opacity-75 ring-primary/75 ring-offset-2 ring-offset-transparent ";
|
|
4
|
+
export const fieldBackgroundMixin = "bg-opacity-50 bg-surface-accent-200 bg-surface-accent-200/50 dark:bg-surface-800 dark:bg-opacity-60 dark:bg-surface-800/60";
|
|
5
|
+
export const fieldBackgroundInvisibleMixin = "bg-opacity-0 bg-surface-accent-100 dark:bg-surface-800 dark:bg-opacity-0 bg-surface-accent-200/0 dark:bg-surface-800/0";
|
|
6
|
+
export const fieldBackgroundDisabledMixin = "dark:bg-surface-800 bg-opacity-50 dark:bg-opacity-90 bg-surface-accent-200/50 dark:bg-surface-800/90";
|
|
7
|
+
export const fieldBackgroundHoverMixin = "hover:bg-opacity-70 dark:hover:bg-surface-700 dark:hover:bg-opacity-40 hover:bg-surface-accent-200/70 hover:dark:bg-surface-700/40";
|
|
8
|
+
export const defaultBorderMixin = "border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40 border-surface-200/40 dark:border-surface-700/40 ";
|
|
9
|
+
export const paperMixin = "bg-white rounded-md dark:bg-surface-950 border border-surface-200 border-opacity-40 dark:border-surface-700 dark:border-opacity-40 border-surface-200/40 dark:border-surface-700/40";
|
|
10
|
+
export const cardMixin = "bg-white dark:bg-surface-950 rounded-md border border-surface-200/40 dark:border-surface-700/40 m-1 -p-1";
|
|
11
|
+
export const cardClickableMixin = "hover:bg-surface-accent-100 dark:hover:bg-surface-accent-800 hover:ring-2 hover:ring-primary cursor-pointer hover:bg-primary/20 dark:hover:bg-primary/10 ";
|
|
12
|
+
export const cardSelectedMixin = "bg-primary-bg dark:bg-primary-bg bg-opacity-30 bg-primary-bg/30 dark:bg-opacity-10 dark:bg-primary-bg/10 ring-1 ring-primary ring-opacity-75 ring-primary/75 bg-primary/10 dark:bg-primary/10 ring-1 ring-primary/75";
|