@kushagradhawan/kookie-ui 0.1.16 → 0.1.18
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/components.css +3730 -1072
- package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.js +1 -1
- package/dist/cjs/components/_internal/base-button.js.map +3 -3
- package/dist/cjs/components/_internal/base-button.props.d.ts +9 -0
- package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.props.js +1 -1
- package/dist/cjs/components/_internal/base-button.props.js.map +3 -3
- package/dist/cjs/components/_internal/base-menu.props.d.ts +5 -0
- package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js.map +3 -3
- package/dist/cjs/components/_internal/base-tab-list.props.d.ts +5 -0
- package/dist/cjs/components/_internal/base-tab-list.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-tab-list.props.js +1 -1
- package/dist/cjs/components/_internal/base-tab-list.props.js.map +3 -3
- package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
- package/dist/cjs/components/alert-dialog.js +1 -1
- package/dist/cjs/components/alert-dialog.js.map +3 -3
- package/dist/cjs/components/avatar.d.ts.map +1 -1
- package/dist/cjs/components/avatar.js +1 -1
- package/dist/cjs/components/avatar.js.map +3 -3
- package/dist/cjs/components/avatar.props.d.ts +6 -1
- package/dist/cjs/components/avatar.props.d.ts.map +1 -1
- package/dist/cjs/components/avatar.props.js +1 -1
- package/dist/cjs/components/avatar.props.js.map +3 -3
- package/dist/cjs/components/badge.d.ts.map +1 -1
- package/dist/cjs/components/badge.js +1 -1
- package/dist/cjs/components/badge.js.map +3 -3
- package/dist/cjs/components/badge.props.d.ts +6 -1
- package/dist/cjs/components/badge.props.d.ts.map +1 -1
- package/dist/cjs/components/badge.props.js +1 -1
- package/dist/cjs/components/badge.props.js.map +2 -2
- package/dist/cjs/components/callout.d.ts.map +1 -1
- package/dist/cjs/components/callout.js +1 -1
- package/dist/cjs/components/callout.js.map +3 -3
- package/dist/cjs/components/callout.props.d.ts +5 -0
- package/dist/cjs/components/callout.props.d.ts.map +1 -1
- package/dist/cjs/components/callout.props.js +1 -1
- package/dist/cjs/components/callout.props.js.map +3 -3
- package/dist/cjs/components/card.d.ts.map +1 -1
- package/dist/cjs/components/card.js +1 -1
- package/dist/cjs/components/card.js.map +3 -3
- package/dist/cjs/components/card.props.d.ts +11 -2
- package/dist/cjs/components/card.props.d.ts.map +1 -1
- package/dist/cjs/components/card.props.js +1 -1
- package/dist/cjs/components/card.props.js.map +3 -3
- package/dist/cjs/components/context-menu.d.ts.map +1 -1
- package/dist/cjs/components/context-menu.js +1 -1
- package/dist/cjs/components/context-menu.js.map +3 -3
- package/dist/cjs/components/dialog.d.ts.map +1 -1
- package/dist/cjs/components/dialog.js +1 -1
- package/dist/cjs/components/dialog.js.map +3 -3
- package/dist/cjs/components/dialog.props.d.ts +5 -0
- package/dist/cjs/components/dialog.props.d.ts.map +1 -1
- package/dist/cjs/components/dialog.props.js +1 -1
- package/dist/cjs/components/dialog.props.js.map +3 -3
- package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
- package/dist/cjs/components/dropdown-menu.js +1 -1
- package/dist/cjs/components/dropdown-menu.js.map +3 -3
- package/dist/cjs/components/image.d.ts +6 -1
- package/dist/cjs/components/image.d.ts.map +1 -1
- package/dist/cjs/components/image.js +1 -1
- package/dist/cjs/components/image.js.map +3 -3
- package/dist/cjs/components/popover.d.ts.map +1 -1
- package/dist/cjs/components/popover.js +1 -1
- package/dist/cjs/components/popover.js.map +3 -3
- package/dist/cjs/components/popover.props.d.ts +5 -0
- package/dist/cjs/components/popover.props.d.ts.map +1 -1
- package/dist/cjs/components/popover.props.js +1 -1
- package/dist/cjs/components/popover.props.js.map +3 -3
- package/dist/cjs/components/select.d.ts.map +1 -1
- package/dist/cjs/components/select.js +1 -1
- package/dist/cjs/components/select.js.map +3 -3
- package/dist/cjs/components/select.props.d.ts +6 -1
- package/dist/cjs/components/select.props.d.ts.map +1 -1
- package/dist/cjs/components/select.props.js +1 -1
- package/dist/cjs/components/select.props.js.map +2 -2
- package/dist/cjs/components/sidebar.d.ts +13 -2
- package/dist/cjs/components/sidebar.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +3 -3
- package/dist/cjs/components/sidebar.props.d.ts +5 -0
- package/dist/cjs/components/sidebar.props.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.props.js +1 -1
- package/dist/cjs/components/sidebar.props.js.map +2 -2
- package/dist/cjs/components/tabs.d.ts.map +1 -1
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +3 -3
- package/dist/cjs/components/text-area.d.ts.map +1 -1
- package/dist/cjs/components/text-area.js +1 -1
- package/dist/cjs/components/text-area.js.map +3 -3
- package/dist/cjs/components/text-area.props.d.ts +6 -1
- package/dist/cjs/components/text-area.props.d.ts.map +1 -1
- package/dist/cjs/components/text-area.props.js +1 -1
- package/dist/cjs/components/text-area.props.js.map +3 -3
- package/dist/cjs/components/text-field.d.ts.map +1 -1
- package/dist/cjs/components/text-field.js +2 -2
- package/dist/cjs/components/text-field.js.map +3 -3
- package/dist/cjs/components/text-field.props.d.ts +6 -1
- package/dist/cjs/components/text-field.props.d.ts.map +1 -1
- package/dist/cjs/components/text-field.props.js +1 -1
- package/dist/cjs/components/text-field.props.js.map +3 -3
- package/dist/cjs/components/theme.d.ts.map +1 -1
- package/dist/cjs/components/theme.js +1 -1
- package/dist/cjs/components/theme.js.map +2 -2
- package/dist/cjs/helpers/map-prop-values.js +1 -1
- package/dist/cjs/helpers/map-prop-values.js.map +2 -2
- package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-button.js.map +3 -3
- package/dist/esm/components/_internal/base-button.props.d.ts +9 -0
- package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.props.js +1 -1
- package/dist/esm/components/_internal/base-button.props.js.map +3 -3
- package/dist/esm/components/_internal/base-menu.props.d.ts +5 -0
- package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-menu.props.js +1 -1
- package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
- package/dist/esm/components/_internal/base-tab-list.props.d.ts +5 -0
- package/dist/esm/components/_internal/base-tab-list.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-tab-list.props.js +1 -1
- package/dist/esm/components/_internal/base-tab-list.props.js.map +3 -3
- package/dist/esm/components/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/alert-dialog.js.map +3 -3
- package/dist/esm/components/avatar.d.ts.map +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/avatar.js.map +3 -3
- package/dist/esm/components/avatar.props.d.ts +6 -1
- package/dist/esm/components/avatar.props.d.ts.map +1 -1
- package/dist/esm/components/avatar.props.js +1 -1
- package/dist/esm/components/avatar.props.js.map +3 -3
- package/dist/esm/components/badge.d.ts.map +1 -1
- package/dist/esm/components/badge.js +1 -1
- package/dist/esm/components/badge.js.map +3 -3
- package/dist/esm/components/badge.props.d.ts +6 -1
- package/dist/esm/components/badge.props.d.ts.map +1 -1
- package/dist/esm/components/badge.props.js +1 -1
- package/dist/esm/components/badge.props.js.map +2 -2
- package/dist/esm/components/callout.d.ts.map +1 -1
- package/dist/esm/components/callout.js +1 -1
- package/dist/esm/components/callout.js.map +3 -3
- package/dist/esm/components/callout.props.d.ts +5 -0
- package/dist/esm/components/callout.props.d.ts.map +1 -1
- package/dist/esm/components/callout.props.js +1 -1
- package/dist/esm/components/callout.props.js.map +3 -3
- package/dist/esm/components/card.d.ts.map +1 -1
- package/dist/esm/components/card.js +1 -1
- package/dist/esm/components/card.js.map +3 -3
- package/dist/esm/components/card.props.d.ts +11 -2
- package/dist/esm/components/card.props.d.ts.map +1 -1
- package/dist/esm/components/card.props.js +1 -1
- package/dist/esm/components/card.props.js.map +3 -3
- package/dist/esm/components/context-menu.d.ts.map +1 -1
- package/dist/esm/components/context-menu.js +1 -1
- package/dist/esm/components/context-menu.js.map +3 -3
- package/dist/esm/components/dialog.d.ts.map +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/dialog.js.map +3 -3
- package/dist/esm/components/dialog.props.d.ts +5 -0
- package/dist/esm/components/dialog.props.d.ts.map +1 -1
- package/dist/esm/components/dialog.props.js +1 -1
- package/dist/esm/components/dialog.props.js.map +3 -3
- package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/dropdown-menu.js +1 -1
- package/dist/esm/components/dropdown-menu.js.map +3 -3
- package/dist/esm/components/image.d.ts +6 -1
- package/dist/esm/components/image.d.ts.map +1 -1
- package/dist/esm/components/image.js +1 -1
- package/dist/esm/components/image.js.map +3 -3
- package/dist/esm/components/popover.d.ts.map +1 -1
- package/dist/esm/components/popover.js +1 -1
- package/dist/esm/components/popover.js.map +3 -3
- package/dist/esm/components/popover.props.d.ts +5 -0
- package/dist/esm/components/popover.props.d.ts.map +1 -1
- package/dist/esm/components/popover.props.js +1 -1
- package/dist/esm/components/popover.props.js.map +3 -3
- package/dist/esm/components/select.d.ts.map +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/select.js.map +3 -3
- package/dist/esm/components/select.props.d.ts +6 -1
- package/dist/esm/components/select.props.d.ts.map +1 -1
- package/dist/esm/components/select.props.js +1 -1
- package/dist/esm/components/select.props.js.map +2 -2
- package/dist/esm/components/sidebar.d.ts +13 -2
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/sidebar.js.map +3 -3
- package/dist/esm/components/sidebar.props.d.ts +5 -0
- package/dist/esm/components/sidebar.props.d.ts.map +1 -1
- package/dist/esm/components/sidebar.props.js +1 -1
- package/dist/esm/components/sidebar.props.js.map +2 -2
- package/dist/esm/components/tabs.d.ts.map +1 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/tabs.js.map +3 -3
- package/dist/esm/components/text-area.d.ts.map +1 -1
- package/dist/esm/components/text-area.js +1 -1
- package/dist/esm/components/text-area.js.map +3 -3
- package/dist/esm/components/text-area.props.d.ts +6 -1
- package/dist/esm/components/text-area.props.d.ts.map +1 -1
- package/dist/esm/components/text-area.props.js +1 -1
- package/dist/esm/components/text-area.props.js.map +3 -3
- package/dist/esm/components/text-field.d.ts.map +1 -1
- package/dist/esm/components/text-field.js +2 -2
- package/dist/esm/components/text-field.js.map +3 -3
- package/dist/esm/components/text-field.props.d.ts +6 -1
- package/dist/esm/components/text-field.props.d.ts.map +1 -1
- package/dist/esm/components/text-field.props.js +1 -1
- package/dist/esm/components/text-field.props.js.map +3 -3
- package/dist/esm/components/theme.d.ts.map +1 -1
- package/dist/esm/components/theme.js +1 -1
- package/dist/esm/components/theme.js.map +2 -2
- package/dist/esm/helpers/map-prop-values.js +1 -1
- package/dist/esm/helpers/map-prop-values.js.map +2 -2
- package/package.json +1 -1
- package/src/components/_internal/base-button.css +518 -110
- package/src/components/_internal/base-button.props.ts +5 -0
- package/src/components/_internal/base-button.tsx +4 -0
- package/src/components/_internal/base-card.css +59 -11
- package/src/components/_internal/base-dialog.css +26 -9
- package/src/components/_internal/base-menu.css +192 -21
- package/src/components/_internal/base-menu.props.ts +7 -0
- package/src/components/_internal/base-tab-list.css +56 -5
- package/src/components/_internal/base-tab-list.props.ts +3 -0
- package/src/components/alert-dialog.tsx +22 -7
- package/src/components/animations.css +31 -0
- package/src/components/avatar.css +436 -9
- package/src/components/avatar.props.tsx +4 -1
- package/src/components/avatar.tsx +19 -6
- package/src/components/badge.css +222 -7
- package/src/components/badge.props.tsx +3 -1
- package/src/components/badge.tsx +3 -2
- package/src/components/button.css +17 -17
- package/src/components/callout.css +75 -6
- package/src/components/callout.props.tsx +3 -0
- package/src/components/callout.tsx +6 -5
- package/src/components/card.css +361 -44
- package/src/components/card.props.tsx +7 -2
- package/src/components/card.tsx +7 -1
- package/src/components/context-menu.tsx +47 -22
- package/src/components/dialog.props.tsx +3 -0
- package/src/components/dialog.tsx +22 -7
- package/src/components/dropdown-menu.css +10 -10
- package/src/components/dropdown-menu.tsx +37 -11
- package/src/components/icon-button.css +36 -8
- package/src/components/image.tsx +92 -73
- package/src/components/kbd.css +122 -54
- package/src/components/popover.css +22 -3
- package/src/components/popover.props.tsx +3 -0
- package/src/components/popover.tsx +15 -8
- package/src/components/select.css +386 -95
- package/src/components/select.props.tsx +7 -1
- package/src/components/select.tsx +21 -13
- package/src/components/sidebar.css +201 -86
- package/src/components/sidebar.props.tsx +15 -3
- package/src/components/sidebar.tsx +306 -235
- package/src/components/tabs.css +3 -1
- package/src/components/tabs.tsx +8 -3
- package/src/components/text-area.css +323 -32
- package/src/components/text-area.props.tsx +4 -1
- package/src/components/text-area.tsx +3 -2
- package/src/components/text-field.css +336 -15
- package/src/components/text-field.props.tsx +4 -1
- package/src/components/text-field.tsx +5 -7
- package/src/components/theme.tsx +11 -9
- package/src/helpers/map-prop-values.ts +1 -1
- package/src/styles/tokens/color.css +19 -5
- package/src/styles/tokens/constants.css +118 -0
- package/src/styles/tokens/index.css +1 -0
- package/src/styles/tokens/radius.css +9 -6
- package/src/styles/tokens/shadow.css +10 -10
- package/src/styles/tokens/transition.css +33 -1
- package/styles.css +3846 -1089
- package/tokens/base.css +51 -22
- package/tokens.css +133 -34
|
@@ -15,17 +15,29 @@ import type { GetPropDefTypes } from '../props/prop-def.js';
|
|
|
15
15
|
|
|
16
16
|
interface AvatarProps extends MarginProps, AvatarImplProps {}
|
|
17
17
|
const Avatar = React.forwardRef<AvatarImplElement, AvatarProps>((props, forwardedRef) => {
|
|
18
|
-
const { asChild, children, className, style, color, radius, ...imageProps } =
|
|
19
|
-
props,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
)
|
|
18
|
+
const { asChild, children, className, style, color, radius, panelBackground, ...imageProps } =
|
|
19
|
+
extractProps(props, avatarPropDefs, marginPropDefs);
|
|
20
|
+
|
|
21
|
+
// Check if children contain a disabled element
|
|
22
|
+
const isDisabled = React.useMemo(() => {
|
|
23
|
+
if (!asChild || !children) return false;
|
|
24
|
+
|
|
25
|
+
// If children is a React element, check its props
|
|
26
|
+
if (React.isValidElement(children)) {
|
|
27
|
+
const childProps = children.props as any;
|
|
28
|
+
return childProps.disabled === true || childProps['data-disabled'] === true;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return false;
|
|
32
|
+
}, [asChild, children]);
|
|
23
33
|
|
|
24
34
|
return (
|
|
25
35
|
// TODO as a rule, should we rather spread the props on root?
|
|
26
36
|
<AvatarPrimitive.Root
|
|
27
37
|
data-accent-color={color}
|
|
28
38
|
data-radius={radius}
|
|
39
|
+
data-panel-background={panelBackground}
|
|
40
|
+
data-disabled={isDisabled || undefined}
|
|
29
41
|
className={classNames('rt-reset', 'rt-AvatarRoot', className)}
|
|
30
42
|
style={style}
|
|
31
43
|
asChild={asChild}
|
|
@@ -49,6 +61,7 @@ interface AvatarImplProps
|
|
|
49
61
|
const AvatarImpl = React.forwardRef<AvatarImplElement, AvatarImplProps>(
|
|
50
62
|
({ fallback, ...imageProps }, forwardedRef) => {
|
|
51
63
|
const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>('idle');
|
|
64
|
+
|
|
52
65
|
return (
|
|
53
66
|
<>
|
|
54
67
|
{status === 'idle' || status === 'loading' ? <span className="rt-AvatarFallback" /> : null}
|
|
@@ -76,7 +89,7 @@ const AvatarImpl = React.forwardRef<AvatarImplElement, AvatarImplProps>(
|
|
|
76
89
|
/>
|
|
77
90
|
</>
|
|
78
91
|
);
|
|
79
|
-
}
|
|
92
|
+
},
|
|
80
93
|
);
|
|
81
94
|
|
|
82
95
|
AvatarImpl.displayName = 'AvatarImpl';
|
package/src/components/badge.css
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/* stylelint-disable selector-max-type */
|
|
2
|
+
/* Disable selector-max-type rule to target individual element types. */
|
|
3
|
+
|
|
1
4
|
.rt-Badge {
|
|
2
5
|
display: inline-flex;
|
|
3
6
|
align-items: center;
|
|
@@ -7,9 +10,21 @@
|
|
|
7
10
|
font-style: normal;
|
|
8
11
|
flex-shrink: 0;
|
|
9
12
|
line-height: 1;
|
|
13
|
+
transition: var(--transition-badge);
|
|
10
14
|
|
|
11
15
|
/* Make sure that the height is not stretched in a Flex/Grid layout */
|
|
12
16
|
height: fit-content;
|
|
17
|
+
|
|
18
|
+
/* Fix Chrome background bleeding on rounded corners */
|
|
19
|
+
background-clip: padding-box;
|
|
20
|
+
|
|
21
|
+
/* Force Chrome to recalculate styles when radius changes */
|
|
22
|
+
will-change: border-radius;
|
|
23
|
+
|
|
24
|
+
/* Reduced motion support */
|
|
25
|
+
@media (prefers-reduced-motion: reduce) {
|
|
26
|
+
transition: none;
|
|
27
|
+
}
|
|
13
28
|
}
|
|
14
29
|
|
|
15
30
|
/***************************************************************************************************
|
|
@@ -21,12 +36,18 @@
|
|
|
21
36
|
@breakpoints {
|
|
22
37
|
.rt-Badge {
|
|
23
38
|
&:where(.rt-r-size-1) {
|
|
24
|
-
font-size: var(--font-size-
|
|
25
|
-
line-height: var(--line-height-
|
|
26
|
-
letter-spacing: var(--letter-spacing-
|
|
39
|
+
font-size: var(--font-size-0);
|
|
40
|
+
line-height: var(--line-height-0);
|
|
41
|
+
letter-spacing: var(--letter-spacing-0);
|
|
27
42
|
padding: calc(var(--space-1) * 0.5) calc(var(--space-1) * 1.5);
|
|
28
43
|
gap: calc(var(--space-1) * 1.5);
|
|
29
44
|
border-radius: max(var(--radius-1), var(--radius-full));
|
|
45
|
+
|
|
46
|
+
/* Ghost variant gets reduced padding */
|
|
47
|
+
&:where(.rt-variant-ghost) {
|
|
48
|
+
padding: calc(var(--space-1) * 0.25) var(--space-1);
|
|
49
|
+
gap: var(--space-1);
|
|
50
|
+
}
|
|
30
51
|
}
|
|
31
52
|
&:where(.rt-r-size-2) {
|
|
32
53
|
font-size: var(--font-size-1);
|
|
@@ -35,6 +56,12 @@
|
|
|
35
56
|
padding: var(--space-1) var(--space-2);
|
|
36
57
|
gap: calc(var(--space-1) * 1.5);
|
|
37
58
|
border-radius: max(var(--radius-2), var(--radius-full));
|
|
59
|
+
|
|
60
|
+
/* Ghost variant gets reduced padding */
|
|
61
|
+
&:where(.rt-variant-ghost) {
|
|
62
|
+
padding: calc(var(--space-1) * 0.5) calc(var(--space-1) * 1.25);
|
|
63
|
+
gap: var(--space-1);
|
|
64
|
+
}
|
|
38
65
|
}
|
|
39
66
|
&:where(.rt-r-size-3) {
|
|
40
67
|
font-size: var(--font-size-2);
|
|
@@ -43,6 +70,12 @@
|
|
|
43
70
|
padding: var(--space-1) calc(var(--space-2) * 1.25);
|
|
44
71
|
gap: var(--space-2);
|
|
45
72
|
border-radius: max(var(--radius-2), var(--radius-full));
|
|
73
|
+
|
|
74
|
+
/* Ghost variant gets reduced padding */
|
|
75
|
+
&:where(.rt-variant-ghost) {
|
|
76
|
+
padding: calc(var(--space-1) * 0.75) var(--space-2);
|
|
77
|
+
gap: calc(var(--space-1) * 1.5);
|
|
78
|
+
}
|
|
46
79
|
}
|
|
47
80
|
}
|
|
48
81
|
}
|
|
@@ -78,10 +111,33 @@
|
|
|
78
111
|
/* surface */
|
|
79
112
|
|
|
80
113
|
.rt-Badge:where(.rt-variant-surface) {
|
|
81
|
-
|
|
82
|
-
|
|
114
|
+
/* Base state: solid accent for solid panels */
|
|
115
|
+
background-color: var(--accent-2);
|
|
116
|
+
box-shadow: inset 0 0 0 1px var(--accent-7);
|
|
83
117
|
color: var(--accent-a11);
|
|
84
118
|
|
|
119
|
+
/* Theme-level translucent override */
|
|
120
|
+
:where([data-panel-background='translucent']) & {
|
|
121
|
+
background-color: var(--accent-a2);
|
|
122
|
+
box-shadow: inset 0 0 0 1px var(--accent-a7);
|
|
123
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Component-level overrides (higher specificity) */
|
|
127
|
+
&:where([data-panel-background='solid']) {
|
|
128
|
+
background-color: var(--accent-2);
|
|
129
|
+
box-shadow: inset 0 0 0 1px var(--accent-7);
|
|
130
|
+
backdrop-filter: none;
|
|
131
|
+
--backdrop-filter-components: none;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
&:where([data-panel-background='translucent']) {
|
|
135
|
+
background-color: var(--accent-a2);
|
|
136
|
+
box-shadow: inset 0 0 0 1px var(--accent-a7);
|
|
137
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
138
|
+
--backdrop-filter-components: blur(var(--backdrop-blur-components));
|
|
139
|
+
}
|
|
140
|
+
|
|
85
141
|
&:where(.rt-high-contrast) {
|
|
86
142
|
color: var(--accent-12);
|
|
87
143
|
}
|
|
@@ -90,8 +146,29 @@
|
|
|
90
146
|
/* soft */
|
|
91
147
|
|
|
92
148
|
.rt-Badge:where(.rt-variant-soft) {
|
|
93
|
-
|
|
149
|
+
/* Base state: solid accent for solid panels */
|
|
150
|
+
background-color: var(--accent-3);
|
|
94
151
|
color: var(--accent-a11);
|
|
152
|
+
|
|
153
|
+
/* Theme-level translucent override */
|
|
154
|
+
:where([data-panel-background='translucent']) & {
|
|
155
|
+
background-color: var(--accent-a3);
|
|
156
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* Component-level overrides (higher specificity) */
|
|
160
|
+
&:where([data-panel-background='solid']) {
|
|
161
|
+
background-color: var(--accent-3);
|
|
162
|
+
backdrop-filter: none;
|
|
163
|
+
--backdrop-filter-components: none;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
&:where([data-panel-background='translucent']) {
|
|
167
|
+
background-color: var(--accent-a3);
|
|
168
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
169
|
+
--backdrop-filter-components: blur(var(--backdrop-blur-components));
|
|
170
|
+
}
|
|
171
|
+
|
|
95
172
|
&:where(.rt-high-contrast) {
|
|
96
173
|
color: var(--accent-12);
|
|
97
174
|
}
|
|
@@ -100,10 +177,148 @@
|
|
|
100
177
|
/* outline */
|
|
101
178
|
|
|
102
179
|
.rt-Badge:where(.rt-variant-outline) {
|
|
103
|
-
|
|
180
|
+
/* Base state: solid accent for solid panels */
|
|
181
|
+
background-color: transparent;
|
|
182
|
+
box-shadow: inset 0 0 0 1px var(--accent-7);
|
|
104
183
|
color: var(--accent-a11);
|
|
184
|
+
|
|
185
|
+
/* Theme-level translucent override */
|
|
186
|
+
:where([data-panel-background='translucent']) & {
|
|
187
|
+
box-shadow: inset 0 0 0 1px var(--accent-a8);
|
|
188
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* Component-level overrides (higher specificity) */
|
|
192
|
+
&:where([data-panel-background='solid']) {
|
|
193
|
+
box-shadow: inset 0 0 0 1px var(--accent-7);
|
|
194
|
+
backdrop-filter: none;
|
|
195
|
+
--backdrop-filter-components: none;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
&:where([data-panel-background='translucent']) {
|
|
199
|
+
box-shadow: inset 0 0 0 1px var(--accent-a8);
|
|
200
|
+
backdrop-filter: var(--backdrop-filter-components);
|
|
201
|
+
--backdrop-filter-components: blur(var(--backdrop-blur-components));
|
|
202
|
+
}
|
|
203
|
+
|
|
105
204
|
&:where(.rt-high-contrast) {
|
|
205
|
+
color: var(--accent-12);
|
|
206
|
+
|
|
207
|
+
/* High contrast adjustments */
|
|
106
208
|
box-shadow: inset 0 0 0 1px var(--accent-a7), inset 0 0 0 1px var(--gray-a11);
|
|
209
|
+
|
|
210
|
+
:where([data-panel-background='translucent']) & {
|
|
211
|
+
box-shadow: inset 0 0 0 1px var(--accent-a7), inset 0 0 0 1px var(--gray-a11);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* ghost */
|
|
217
|
+
|
|
218
|
+
.rt-Badge:where(.rt-variant-ghost) {
|
|
219
|
+
/* Transparent by default */
|
|
220
|
+
background-color: transparent;
|
|
221
|
+
color: var(--accent-a11);
|
|
222
|
+
|
|
223
|
+
&:where(.rt-high-contrast) {
|
|
224
|
+
color: var(--accent-12);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* classic */
|
|
229
|
+
|
|
230
|
+
.rt-Badge:where(.rt-variant-classic) {
|
|
231
|
+
position: relative;
|
|
232
|
+
top: var(--classic-elevation-offset);
|
|
233
|
+
color: var(--accent-a11);
|
|
234
|
+
background-color: var(--accent-2);
|
|
235
|
+
/* prettier-ignore */
|
|
236
|
+
box-shadow:
|
|
237
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
238
|
+
inset 0 var(--classic-border-width) var(--white-a12),
|
|
239
|
+
inset 0 var(--classic-shadow-blur-medium) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
240
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--accent-a6),
|
|
241
|
+
0 0 0 var(--classic-border-width) var(--accent-a5),
|
|
242
|
+
0 var(--classic-shadow-offset-y) var(--classic-shadow-blur-small) var(--accent-a7);
|
|
243
|
+
|
|
244
|
+
:where(.dark, .dark-theme) &,
|
|
245
|
+
:where(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) & {
|
|
246
|
+
/* prettier-ignore */
|
|
247
|
+
box-shadow:
|
|
248
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--classic-shadow-blur-large) var(--accent-a3),
|
|
249
|
+
inset 0 var(--classic-border-width) var(--accent-a11),
|
|
250
|
+
inset 0 var(--classic-shadow-blur-medium) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
251
|
+
inset 0 var(--classic-shadow-offset-negative) var(--black-a11),
|
|
252
|
+
0 0 0 var(--classic-border-width-thick) var(--accent-a7),
|
|
253
|
+
0 var(--classic-shadow-offset-y) var(--classic-shadow-blur-small) var(--black-a12);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
&:where(.rt-high-contrast) {
|
|
107
257
|
color: var(--accent-12);
|
|
258
|
+
background-color: var(--accent-2);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
&:where(:any-link, button) {
|
|
262
|
+
@media (hover: hover) {
|
|
263
|
+
&:where(:hover) {
|
|
264
|
+
background-color: var(--accent-3);
|
|
265
|
+
/* prettier-ignore */
|
|
266
|
+
box-shadow:
|
|
267
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
268
|
+
inset 0 var(--classic-border-width) var(--white-a12),
|
|
269
|
+
inset 0 var(--classic-shadow-blur-medium) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
270
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--accent-a6),
|
|
271
|
+
0 0 0 var(--classic-border-width) var(--accent-a5),
|
|
272
|
+
0 var(--classic-shadow-offset-y) var(--classic-shadow-blur-small) var(--accent-a7),
|
|
273
|
+
0 0 0 var(--classic-border-width) var(--accent-a5);
|
|
274
|
+
|
|
275
|
+
:where(.dark, .dark-theme) &,
|
|
276
|
+
:where(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) & {
|
|
277
|
+
/* prettier-ignore */
|
|
278
|
+
box-shadow:
|
|
279
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--classic-shadow-blur-large) var(--accent-a3),
|
|
280
|
+
inset 0 var(--classic-border-width) var(--accent-a11),
|
|
281
|
+
inset 0 var(--classic-shadow-blur-medium) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
282
|
+
inset 0 var(--classic-shadow-offset-negative) var(--black-a11),
|
|
283
|
+
0 0 0 var(--classic-border-width-thick) var(--accent-a7),
|
|
284
|
+
0 var(--classic-shadow-offset-y) var(--classic-shadow-blur-small) var(--black-a12),
|
|
285
|
+
0 0 0 var(--classic-border-width) var(--accent-a5);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
&:where([data-state='open']) {
|
|
290
|
+
background-color: var(--accent-3);
|
|
291
|
+
/* prettier-ignore */
|
|
292
|
+
box-shadow:
|
|
293
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
294
|
+
inset 0 var(--classic-border-width) var(--white-a12),
|
|
295
|
+
inset 0 var(--classic-shadow-blur-medium) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
296
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--accent-a6),
|
|
297
|
+
0 0 0 var(--classic-border-width) var(--accent-a5),
|
|
298
|
+
0 var(--classic-shadow-offset-y) var(--classic-shadow-blur-small) var(--accent-a7),
|
|
299
|
+
0 0 0 var(--classic-border-width) var(--accent-a5);
|
|
300
|
+
|
|
301
|
+
:where(.dark, .dark-theme) &,
|
|
302
|
+
:where(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) & {
|
|
303
|
+
/* prettier-ignore */
|
|
304
|
+
box-shadow:
|
|
305
|
+
inset 0 calc(-1 * var(--classic-border-width)) var(--classic-shadow-blur-large) var(--accent-a3),
|
|
306
|
+
inset 0 var(--classic-border-width) var(--accent-a11),
|
|
307
|
+
inset 0 var(--classic-shadow-blur-medium) var(--classic-shadow-blur-large) var(--accent-a2),
|
|
308
|
+
inset 0 var(--classic-shadow-offset-negative) var(--black-a11),
|
|
309
|
+
0 0 0 var(--classic-border-width-thick) var(--accent-a7),
|
|
310
|
+
0 var(--classic-shadow-offset-y) var(--classic-shadow-blur-small) var(--black-a12),
|
|
311
|
+
0 0 0 var(--classic-border-width) var(--accent-a5);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
&:where(:active:not([data-state='open'])) {
|
|
315
|
+
padding-top: calc(var(--space-1) * 0.75);
|
|
316
|
+
padding-bottom: calc(var(--space-1) * 0.25);
|
|
317
|
+
background-color: var(--accent-3);
|
|
318
|
+
box-shadow: inset 0 var(--classic-border-width) var(--black-a3), 0 0 0 var(--classic-border-width) var(--accent-a7);
|
|
319
|
+
}
|
|
320
|
+
&:where(:focus-visible) {
|
|
321
|
+
outline: 2px solid var(--focus-8);
|
|
322
|
+
}
|
|
108
323
|
}
|
|
109
324
|
}
|
|
@@ -6,18 +6,20 @@ import { radiusPropDef } from '../props/radius.prop.js';
|
|
|
6
6
|
import type { PropDef } from '../props/prop-def.js';
|
|
7
7
|
|
|
8
8
|
const sizes = ['1', '2', '3'] as const;
|
|
9
|
-
const variants = ['solid', 'soft', 'surface', 'outline'] as const;
|
|
9
|
+
const variants = ['solid', 'soft', 'surface', 'outline', 'ghost', 'classic'] as const;
|
|
10
10
|
|
|
11
11
|
const badgePropDefs = {
|
|
12
12
|
...asChildPropDef,
|
|
13
13
|
size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },
|
|
14
14
|
variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },
|
|
15
|
+
panelBackground: { type: 'enum', values: ['solid', 'translucent'], default: undefined },
|
|
15
16
|
...accentColorPropDef,
|
|
16
17
|
...highContrastPropDef,
|
|
17
18
|
...radiusPropDef,
|
|
18
19
|
} satisfies {
|
|
19
20
|
size: PropDef<(typeof sizes)[number]>;
|
|
20
21
|
variant: PropDef<(typeof variants)[number]>;
|
|
22
|
+
panelBackground: PropDef<'solid' | 'translucent'>;
|
|
21
23
|
};
|
|
22
24
|
|
|
23
25
|
export { badgePropDefs };
|
package/src/components/badge.tsx
CHANGED
|
@@ -17,16 +17,17 @@ interface BadgeProps
|
|
|
17
17
|
MarginProps,
|
|
18
18
|
BadgeOwnProps {}
|
|
19
19
|
const Badge = React.forwardRef<BadgeElement, BadgeProps>((props, forwardedRef) => {
|
|
20
|
-
const { asChild, className, color, radius, ...badgeProps } = extractProps(
|
|
20
|
+
const { asChild, className, color, radius, panelBackground, ...badgeProps } = extractProps(
|
|
21
21
|
props,
|
|
22
22
|
badgePropDefs,
|
|
23
|
-
marginPropDefs
|
|
23
|
+
marginPropDefs,
|
|
24
24
|
);
|
|
25
25
|
const Comp = asChild ? Slot.Root : 'span';
|
|
26
26
|
return (
|
|
27
27
|
<Comp
|
|
28
28
|
data-accent-color={color}
|
|
29
29
|
data-radius={radius}
|
|
30
|
+
data-panel-background={panelBackground}
|
|
30
31
|
{...badgeProps}
|
|
31
32
|
ref={forwardedRef}
|
|
32
33
|
className={classNames('rt-reset', 'rt-Badge', className)}
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
@breakpoints {
|
|
25
25
|
.rt-Button {
|
|
26
26
|
&:where(.rt-r-size-1) {
|
|
27
|
-
gap: var(--
|
|
27
|
+
gap: var(--component-gap-1);
|
|
28
28
|
font-size: var(--font-size-1);
|
|
29
29
|
line-height: var(--line-height-1);
|
|
30
30
|
letter-spacing: var(--letter-spacing-1);
|
|
31
31
|
|
|
32
32
|
/* stylelint-disable-next-line selector-max-type */
|
|
33
33
|
& :where(svg) {
|
|
34
|
-
width:
|
|
35
|
-
height:
|
|
34
|
+
width: var(--content-icon-size-1);
|
|
35
|
+
height: var(--content-icon-size-1);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
&:where(:not(.rt-variant-ghost)) {
|
|
@@ -40,21 +40,21 @@
|
|
|
40
40
|
padding-right: var(--space-2);
|
|
41
41
|
}
|
|
42
42
|
&:where(.rt-variant-ghost) {
|
|
43
|
-
gap: var(--
|
|
43
|
+
gap: var(--component-gap-ghost-1);
|
|
44
44
|
--button-ghost-padding-x: var(--space-2);
|
|
45
45
|
--button-ghost-padding-y: var(--space-1);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
&:where(.rt-r-size-2) {
|
|
49
|
-
gap: var(--
|
|
49
|
+
gap: var(--component-gap-2);
|
|
50
50
|
font-size: var(--font-size-2);
|
|
51
51
|
line-height: var(--line-height-2);
|
|
52
52
|
letter-spacing: var(--letter-spacing-2);
|
|
53
53
|
|
|
54
54
|
/* stylelint-disable-next-line selector-max-type */
|
|
55
55
|
& :where(svg) {
|
|
56
|
-
width: var(--
|
|
57
|
-
height: var(--
|
|
56
|
+
width: var(--content-icon-size-2);
|
|
57
|
+
height: var(--content-icon-size-2);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
&:where(:not(.rt-variant-ghost)) {
|
|
@@ -62,21 +62,21 @@
|
|
|
62
62
|
padding-right: var(--space-3);
|
|
63
63
|
}
|
|
64
64
|
&:where(.rt-variant-ghost) {
|
|
65
|
-
gap: var(--
|
|
65
|
+
gap: var(--component-gap-ghost-2);
|
|
66
66
|
--button-ghost-padding-x: var(--space-2);
|
|
67
67
|
--button-ghost-padding-y: var(--space-1);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
&:where(.rt-r-size-3) {
|
|
71
|
-
gap: var(--
|
|
71
|
+
gap: var(--component-gap-3);
|
|
72
72
|
font-size: var(--font-size-3);
|
|
73
73
|
line-height: var(--line-height-3);
|
|
74
74
|
letter-spacing: var(--letter-spacing-3);
|
|
75
75
|
|
|
76
76
|
/* stylelint-disable-next-line selector-max-type */
|
|
77
77
|
& :where(svg) {
|
|
78
|
-
width: var(--
|
|
79
|
-
height: var(--
|
|
78
|
+
width: var(--content-icon-size-3);
|
|
79
|
+
height: var(--content-icon-size-3);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
&:where(:not(.rt-variant-ghost)) {
|
|
@@ -84,21 +84,21 @@
|
|
|
84
84
|
padding-right: var(--space-4);
|
|
85
85
|
}
|
|
86
86
|
&:where(.rt-variant-ghost) {
|
|
87
|
-
gap: var(--
|
|
87
|
+
gap: var(--component-gap-ghost-3);
|
|
88
88
|
--button-ghost-padding-x: var(--space-3);
|
|
89
89
|
--button-ghost-padding-y: calc(var(--space-1) * 1.5);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
&:where(.rt-r-size-4) {
|
|
93
|
-
gap: var(--
|
|
93
|
+
gap: var(--component-gap-4);
|
|
94
94
|
font-size: var(--font-size-4);
|
|
95
95
|
line-height: var(--line-height-4);
|
|
96
96
|
letter-spacing: var(--letter-spacing-4);
|
|
97
97
|
|
|
98
98
|
/* stylelint-disable-next-line selector-max-type */
|
|
99
99
|
& :where(svg) {
|
|
100
|
-
width: var(--
|
|
101
|
-
height: var(--
|
|
100
|
+
width: var(--content-icon-size-4);
|
|
101
|
+
height: var(--content-icon-size-4);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
&:where(:not(.rt-variant-ghost)) {
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
padding-right: var(--space-5);
|
|
107
107
|
}
|
|
108
108
|
&:where(.rt-variant-ghost) {
|
|
109
|
-
gap: var(--
|
|
109
|
+
gap: var(--component-gap-ghost-4);
|
|
110
110
|
--button-ghost-padding-x: var(--space-4);
|
|
111
111
|
--button-ghost-padding-y: var(--space-2);
|
|
112
112
|
}
|
|
@@ -120,6 +120,6 @@
|
|
|
120
120
|
* *
|
|
121
121
|
***************************************************************************************************/
|
|
122
122
|
|
|
123
|
-
.rt-Button
|
|
123
|
+
.rt-Button {
|
|
124
124
|
font-weight: var(--font-weight-medium);
|
|
125
125
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
justify-content: flex-start;
|
|
6
6
|
text-align: left;
|
|
7
7
|
color: var(--accent-a11);
|
|
8
|
+
transition: var(--transition-card);
|
|
8
9
|
|
|
9
10
|
&:where(.rt-high-contrast) {
|
|
10
11
|
color: var(--accent-12);
|
|
@@ -18,7 +19,14 @@
|
|
|
18
19
|
height: var(--callout-icon-height);
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
/*
|
|
22
|
+
/* stylelint-disable-next-line selector-max-type */
|
|
23
|
+
.rt-CalloutIcon :where(svg) {
|
|
24
|
+
width: var(--callout-icon-size);
|
|
25
|
+
height: var(--callout-icon-size);
|
|
26
|
+
flex-shrink: 0;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Anything that's not an icon goes to the right of the icon */
|
|
22
30
|
.rt-CalloutRoot > :where(:not(.rt-CalloutIcon)) {
|
|
23
31
|
grid-column-start: -1;
|
|
24
32
|
}
|
|
@@ -36,7 +44,8 @@
|
|
|
36
44
|
column-gap: var(--space-2);
|
|
37
45
|
padding: var(--space-3);
|
|
38
46
|
border-radius: var(--radius-3);
|
|
39
|
-
--callout-icon-height: var(--line-height-
|
|
47
|
+
--callout-icon-height: var(--line-height-1);
|
|
48
|
+
--callout-icon-size: var(--content-icon-size-1);
|
|
40
49
|
}
|
|
41
50
|
&:where(.rt-r-size-2) {
|
|
42
51
|
row-gap: var(--space-2);
|
|
@@ -44,6 +53,7 @@
|
|
|
44
53
|
padding: var(--space-4);
|
|
45
54
|
border-radius: var(--radius-4);
|
|
46
55
|
--callout-icon-height: var(--line-height-2);
|
|
56
|
+
--callout-icon-size: var(--content-icon-size-2);
|
|
47
57
|
}
|
|
48
58
|
&:where(.rt-r-size-3) {
|
|
49
59
|
row-gap: var(--space-3);
|
|
@@ -51,6 +61,7 @@
|
|
|
51
61
|
padding: var(--space-5);
|
|
52
62
|
border-radius: var(--radius-5);
|
|
53
63
|
--callout-icon-height: var(--line-height-3);
|
|
64
|
+
--callout-icon-size: var(--content-icon-size-3);
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
}
|
|
@@ -64,18 +75,76 @@
|
|
|
64
75
|
/* soft */
|
|
65
76
|
|
|
66
77
|
.rt-CalloutRoot:where(.rt-variant-soft) {
|
|
67
|
-
|
|
78
|
+
/* Base state: solid colors for solid panels */
|
|
79
|
+
background-color: var(--accent-3);
|
|
80
|
+
|
|
81
|
+
/* Theme-level translucent override */
|
|
82
|
+
:where([data-panel-background='translucent']) & {
|
|
83
|
+
background-color: var(--accent-a3);
|
|
84
|
+
backdrop-filter: var(--backdrop-filter-panel);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Component-level overrides (higher specificity) */
|
|
88
|
+
&:where([data-panel-background='solid']) {
|
|
89
|
+
background-color: var(--accent-3);
|
|
90
|
+
backdrop-filter: none;
|
|
91
|
+
--backdrop-filter-panel: none;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
&:where([data-panel-background='translucent']) {
|
|
95
|
+
background-color: var(--accent-a3);
|
|
96
|
+
backdrop-filter: var(--backdrop-filter-panel);
|
|
97
|
+
--backdrop-filter-panel: blur(var(--backdrop-blur-panel));
|
|
98
|
+
}
|
|
68
99
|
}
|
|
69
100
|
|
|
70
101
|
/* surface */
|
|
71
102
|
|
|
72
103
|
.rt-CalloutRoot:where(.rt-variant-surface) {
|
|
73
|
-
|
|
74
|
-
background-color: var(--accent-
|
|
104
|
+
/* Base state: solid colors for solid panels */
|
|
105
|
+
background-color: var(--accent-2);
|
|
106
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-6);
|
|
107
|
+
|
|
108
|
+
/* Theme-level translucent override */
|
|
109
|
+
:where([data-panel-background='translucent']) & {
|
|
110
|
+
background-color: var(--accent-a2);
|
|
111
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a6);
|
|
112
|
+
backdrop-filter: var(--backdrop-filter-panel);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* Component-level overrides (higher specificity) */
|
|
116
|
+
&:where([data-panel-background='solid']) {
|
|
117
|
+
background-color: var(--accent-2);
|
|
118
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-6);
|
|
119
|
+
backdrop-filter: none;
|
|
120
|
+
--backdrop-filter-panel: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
&:where([data-panel-background='translucent']) {
|
|
124
|
+
background-color: var(--accent-a2);
|
|
125
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a6);
|
|
126
|
+
backdrop-filter: var(--backdrop-filter-panel);
|
|
127
|
+
--backdrop-filter-panel: blur(var(--backdrop-blur-panel));
|
|
128
|
+
}
|
|
75
129
|
}
|
|
76
130
|
|
|
77
131
|
/* outline */
|
|
78
132
|
|
|
79
133
|
.rt-CalloutRoot:where(.rt-variant-outline) {
|
|
80
|
-
|
|
134
|
+
/* Base state: solid colors for solid panels */
|
|
135
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-7);
|
|
136
|
+
|
|
137
|
+
/* Theme-level translucent override */
|
|
138
|
+
:where([data-panel-background='translucent']) & {
|
|
139
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a7);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Component-level overrides (higher specificity) */
|
|
143
|
+
&:where([data-panel-background='solid']) {
|
|
144
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-7);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
&:where([data-panel-background='translucent']) {
|
|
148
|
+
box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a7);
|
|
149
|
+
}
|
|
81
150
|
}
|
|
@@ -6,6 +6,7 @@ import type { PropDef } from '../props/prop-def.js';
|
|
|
6
6
|
|
|
7
7
|
const sizes = ['1', '2', '3'] as const;
|
|
8
8
|
const variants = ['soft', 'surface', 'outline'] as const;
|
|
9
|
+
const panelBackgrounds = ['solid', 'translucent'] as const;
|
|
9
10
|
|
|
10
11
|
const calloutRootPropDefs = {
|
|
11
12
|
...asChildPropDef,
|
|
@@ -13,9 +14,11 @@ const calloutRootPropDefs = {
|
|
|
13
14
|
variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },
|
|
14
15
|
...accentColorPropDef,
|
|
15
16
|
...highContrastPropDef,
|
|
17
|
+
panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },
|
|
16
18
|
} satisfies {
|
|
17
19
|
size: PropDef<(typeof sizes)[number]>;
|
|
18
20
|
variant: PropDef<(typeof variants)[number]>;
|
|
21
|
+
panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;
|
|
19
22
|
};
|
|
20
23
|
|
|
21
24
|
export { calloutRootPropDefs };
|