@chakra-ui/panda-preset 3.30.0 → 3.32.0

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.
Files changed (34) hide show
  1. package/dist/cjs/global-css.cjs +18 -18
  2. package/dist/cjs/keyframes.cjs +18 -2
  3. package/dist/cjs/slot-recipes/action-bar.cjs +28 -3
  4. package/dist/cjs/slot-recipes/color-picker.cjs +2 -1
  5. package/dist/cjs/slot-recipes/combobox.cjs +2 -1
  6. package/dist/cjs/slot-recipes/dialog.cjs +2 -2
  7. package/dist/cjs/slot-recipes/drawer.cjs +5 -3
  8. package/dist/cjs/slot-recipes/hover-card.cjs +2 -1
  9. package/dist/cjs/slot-recipes/index.cjs +3 -1
  10. package/dist/cjs/slot-recipes/marquee.cjs +93 -0
  11. package/dist/cjs/slot-recipes/menu.cjs +11 -2
  12. package/dist/cjs/slot-recipes/native-select.cjs +8 -0
  13. package/dist/cjs/slot-recipes/radio-card.cjs +6 -2
  14. package/dist/cjs/slot-recipes/select.cjs +10 -1
  15. package/dist/cjs/slot-recipes/slider.cjs +7 -7
  16. package/dist/esm/global-css.js +18 -18
  17. package/dist/esm/keyframes.js +18 -2
  18. package/dist/esm/slot-recipes/action-bar.js +28 -3
  19. package/dist/esm/slot-recipes/color-picker.js +2 -1
  20. package/dist/esm/slot-recipes/combobox.js +2 -1
  21. package/dist/esm/slot-recipes/dialog.js +2 -2
  22. package/dist/esm/slot-recipes/drawer.js +5 -3
  23. package/dist/esm/slot-recipes/hover-card.js +2 -1
  24. package/dist/esm/slot-recipes/index.js +3 -1
  25. package/dist/esm/slot-recipes/marquee.js +91 -0
  26. package/dist/esm/slot-recipes/menu.js +11 -2
  27. package/dist/esm/slot-recipes/native-select.js +8 -0
  28. package/dist/esm/slot-recipes/radio-card.js +6 -2
  29. package/dist/esm/slot-recipes/select.js +10 -1
  30. package/dist/esm/slot-recipes/slider.js +7 -7
  31. package/dist/types/keyframes.d.ts +18 -2
  32. package/dist/types/slot-recipes/index.d.ts +1 -0
  33. package/dist/types/slot-recipes/marquee.d.ts +1 -0
  34. package/package.json +2 -2
@@ -6,29 +6,29 @@ var def = require('./def.cjs');
6
6
  const globalCss = def.defineGlobalStyles({
7
7
  "*": {
8
8
  fontFeatureSettings: '"cv11"',
9
- "--ring-inset": "var(--empty,/*!*/ /*!*/)",
9
+ "--ring-inset": "var(--empty, )",
10
10
  "--ring-offset-width": "0px",
11
11
  "--ring-offset-color": "#fff",
12
12
  "--ring-color": "rgba(66, 153, 225, 0.6)",
13
13
  "--ring-offset-shadow": "0 0 #0000",
14
14
  "--ring-shadow": "0 0 #0000",
15
- "--brightness": "var(--empty,/*!*/ /*!*/)",
16
- "--contrast": "var(--empty,/*!*/ /*!*/)",
17
- "--grayscale": "var(--empty,/*!*/ /*!*/)",
18
- "--hue-rotate": "var(--empty,/*!*/ /*!*/)",
19
- "--invert": "var(--empty,/*!*/ /*!*/)",
20
- "--saturate": "var(--empty,/*!*/ /*!*/)",
21
- "--sepia": "var(--empty,/*!*/ /*!*/)",
22
- "--drop-shadow": "var(--empty,/*!*/ /*!*/)",
23
- "--backdrop-blur": "var(--empty,/*!*/ /*!*/)",
24
- "--backdrop-brightness": "var(--empty,/*!*/ /*!*/)",
25
- "--backdrop-contrast": "var(--empty,/*!*/ /*!*/)",
26
- "--backdrop-grayscale": "var(--empty,/*!*/ /*!*/)",
27
- "--backdrop-hue-rotate": "var(--empty,/*!*/ /*!*/)",
28
- "--backdrop-invert": "var(--empty,/*!*/ /*!*/)",
29
- "--backdrop-opacity": "var(--empty,/*!*/ /*!*/)",
30
- "--backdrop-saturate": "var(--empty,/*!*/ /*!*/)",
31
- "--backdrop-sepia": "var(--empty,/*!*/ /*!*/)",
15
+ "--brightness": "var(--empty, )",
16
+ "--contrast": "var(--empty, )",
17
+ "--grayscale": "var(--empty, )",
18
+ "--hue-rotate": "var(--empty, )",
19
+ "--invert": "var(--empty, )",
20
+ "--saturate": "var(--empty, )",
21
+ "--sepia": "var(--empty, )",
22
+ "--drop-shadow": "var(--empty, )",
23
+ "--backdrop-blur": "var(--empty, )",
24
+ "--backdrop-brightness": "var(--empty, )",
25
+ "--backdrop-contrast": "var(--empty, )",
26
+ "--backdrop-grayscale": "var(--empty, )",
27
+ "--backdrop-hue-rotate": "var(--empty, )",
28
+ "--backdrop-invert": "var(--empty, )",
29
+ "--backdrop-opacity": "var(--empty, )",
30
+ "--backdrop-saturate": "var(--empty, )",
31
+ "--backdrop-sepia": "var(--empty, )",
32
32
  "--global-font-mono": "fonts.mono",
33
33
  "--global-font-body": "fonts.body",
34
34
  "--global-color-border": "colors.border"
@@ -89,10 +89,10 @@ const keyframes = {
89
89
  },
90
90
  "collapse-width": {
91
91
  from: {
92
- height: "var(--width)"
92
+ width: "var(--width)"
93
93
  },
94
94
  to: {
95
- height: "var(--collapsed-width, 0)"
95
+ width: "var(--collapsed-width, 0)"
96
96
  }
97
97
  },
98
98
  "fade-in": {
@@ -254,6 +254,22 @@ const keyframes = {
254
254
  to: {
255
255
  scale: "0.95"
256
256
  }
257
+ },
258
+ marqueeX: {
259
+ from: {
260
+ transform: "translateX(0%)"
261
+ },
262
+ to: {
263
+ transform: "translateX(var(--marquee-translate))"
264
+ }
265
+ },
266
+ marqueeY: {
267
+ from: {
268
+ transform: "translateY(0%)"
269
+ },
270
+ to: {
271
+ transform: "translateY(var(--marquee-translate))"
272
+ }
257
273
  }
258
274
  };
259
275
 
@@ -16,11 +16,9 @@ const actionBarSlotRecipe = def.defineSlotRecipe({
16
16
  positioner: {
17
17
  position: "fixed",
18
18
  display: "flex",
19
- justifyContent: "center",
20
19
  pointerEvents: "none",
21
20
  insetInline: "0",
22
- top: "unset",
23
- bottom: "calc(env(safe-area-inset-bottom) + 20px)"
21
+ "--action-bar-offset": "spacing.4"
24
22
  },
25
23
  content: {
26
24
  bg: "bg.panel",
@@ -59,6 +57,33 @@ const actionBarSlotRecipe = def.defineSlotRecipe({
59
57
  borderWidth: "1px",
60
58
  borderStyle: "dashed"
61
59
  }
60
+ },
61
+ variants: {
62
+ placement: {
63
+ bottom: {
64
+ positioner: {
65
+ bottom: "calc(env(safe-area-inset-bottom) + var(--action-bar-offset))",
66
+ justifyContent: "center"
67
+ }
68
+ },
69
+ "bottom-start": {
70
+ positioner: {
71
+ bottom: "calc(env(safe-area-inset-bottom) + var(--action-bar-offset))",
72
+ justifyContent: "flex-start",
73
+ ps: "var(--action-bar-offset)"
74
+ }
75
+ },
76
+ "bottom-end": {
77
+ positioner: {
78
+ bottom: "calc(env(safe-area-inset-bottom) + var(--action-bar-offset))",
79
+ justifyContent: "flex-end",
80
+ pe: "var(--action-bar-offset)"
81
+ }
82
+ }
83
+ }
84
+ },
85
+ defaultVariants: {
86
+ placement: "bottom"
62
87
  }
63
88
  });
64
89
 
@@ -97,7 +97,8 @@ const colorPickerSlotRecipe = def.defineSlotRecipe({
97
97
  width: "64",
98
98
  p: "4",
99
99
  gap: "3",
100
- zIndex: "dropdown",
100
+ "--color-picker-z-index": "zIndex.popover",
101
+ zIndex: "calc(var(--color-picker-z-index) + var(--layer-index, 0))",
101
102
  _open: {
102
103
  animationStyle: "slide-fade-in",
103
104
  animationDuration: "fast"
@@ -111,7 +111,8 @@ const comboboxSlotRecipe = def.defineSlotRecipe({
111
111
  background: "bg.panel",
112
112
  display: "flex",
113
113
  flexDirection: "column",
114
- zIndex: "dropdown",
114
+ "--combobox-z-index": "zIndex.popover",
115
+ zIndex: "calc(var(--combobox-z-index) + var(--layer-index, 0))",
115
116
  borderRadius: "l2",
116
117
  outline: 0,
117
118
  maxH: "96",
@@ -43,7 +43,7 @@ const dialogSlotRecipe = def.defineSlotRecipe({
43
43
  position: "fixed",
44
44
  left: 0,
45
45
  top: 0,
46
- "--dialog-z-index": "zIndex.modal",
46
+ "--dialog-z-index": "zIndex.popover",
47
47
  zIndex: "calc(var(--dialog-z-index) + var(--layer-index, 0))",
48
48
  justifyContent: "center",
49
49
  overscrollBehaviorY: "none"
@@ -57,7 +57,7 @@ const dialogSlotRecipe = def.defineSlotRecipe({
57
57
  borderRadius: "l3",
58
58
  textStyle: "sm",
59
59
  my: "var(--dialog-margin, var(--dialog-base-margin))",
60
- "--dialog-z-index": "zIndex.modal",
60
+ "--dialog-z-index": "zIndex.popover",
61
61
  zIndex: "calc(var(--dialog-z-index) + var(--layer-index, 0))",
62
62
  bg: "bg.panel",
63
63
  boxShadow: "lg",
@@ -26,7 +26,7 @@ const drawerSlotRecipe = def.defineSlotRecipe({
26
26
  top: 0,
27
27
  w: "100vw",
28
28
  h: "100dvh",
29
- zIndex: "overlay",
29
+ zIndex: "var(--z-index)",
30
30
  _open: {
31
31
  animationName: "fade-in",
32
32
  animationDuration: "slow"
@@ -43,7 +43,8 @@ const drawerSlotRecipe = def.defineSlotRecipe({
43
43
  position: "fixed",
44
44
  insetInlineStart: 0,
45
45
  top: 0,
46
- zIndex: "modal",
46
+ "--drawer-z-index": "zIndex.popover",
47
+ zIndex: "calc(var(--drawer-z-index) + var(--layer-index, 0))",
47
48
  overscrollBehaviorY: "none"
48
49
  },
49
50
  content: {
@@ -52,7 +53,8 @@ const drawerSlotRecipe = def.defineSlotRecipe({
52
53
  position: "relative",
53
54
  width: "100%",
54
55
  outline: 0,
55
- zIndex: "modal",
56
+ "--drawer-z-index": "zIndex.popover",
57
+ zIndex: "calc(var(--drawer-z-index) + var(--layer-index, 0))",
56
58
  textStyle: "sm",
57
59
  maxH: "100dvh",
58
60
  color: "inherit",
@@ -17,7 +17,8 @@ const hoverCardSlotRecipe = def.defineSlotRecipe({
17
17
  boxShadow: "lg",
18
18
  maxWidth: "80",
19
19
  borderRadius: "l3",
20
- zIndex: "popover",
20
+ "--hover-card-z-index": "zIndex.popover",
21
+ zIndex: "calc(var(--hover-card-z-index) + var(--layer-index, 0))",
21
22
  transformOrigin: "var(--transform-origin)",
22
23
  outline: "0",
23
24
  _open: {
@@ -26,6 +26,7 @@ var fileUpload = require('./file-upload.cjs');
26
26
  var hoverCard = require('./hover-card.cjs');
27
27
  var list = require('./list.cjs');
28
28
  var listbox = require('./listbox.cjs');
29
+ var marquee = require('./marquee.cjs');
29
30
  var menu = require('./menu.cjs');
30
31
  var nativeSelect = require('./native-select.cjs');
31
32
  var numberInput = require('./number-input.cjs');
@@ -108,7 +109,8 @@ const slotRecipes = {
108
109
  timeline: timeline.timelineSlotRecipe,
109
110
  colorPicker: colorPicker.colorPickerSlotRecipe,
110
111
  qrCode: qrCode.qrCodeSlotRecipe,
111
- treeView: treeView.treeViewSlotRecipe
112
+ treeView: treeView.treeViewSlotRecipe,
113
+ marquee: marquee.marqueeSlotRecipe
112
114
  };
113
115
 
114
116
  exports.slotRecipes = slotRecipes;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ 'use strict';
3
+
4
+ var def = require('../def.cjs');
5
+
6
+ const marqueeSlotRecipe = def.defineSlotRecipe({
7
+ className: "marquee",
8
+ slots: ["root", "viewport", "content", "edge", "item"],
9
+ base: {
10
+ root: {
11
+ position: "relative",
12
+ width: "100%",
13
+ "--marquee-edge-color": "colors.bg",
14
+ "--marquee-edge-size": "20%",
15
+ "&[data-paused]": {
16
+ animationPlayState: "paused !important",
17
+ "& *": {
18
+ animationPlayState: "paused !important"
19
+ }
20
+ }
21
+ },
22
+ viewport: {
23
+ overflow: "hidden",
24
+ display: "flex",
25
+ width: "100%",
26
+ height: "100%"
27
+ },
28
+ content: {
29
+ display: "flex",
30
+ minWidth: "max-content",
31
+ animationTimingFunction: "linear",
32
+ animationFillMode: "forwards",
33
+ animationDuration: "var(--marquee-duration)",
34
+ animationDelay: "var(--marquee-delay)",
35
+ animationIterationCount: "var(--marquee-loop-count)",
36
+ _motionReduce: {
37
+ animation: "none !important"
38
+ },
39
+ "&[data-side='start'], &[data-side='end']": {
40
+ animationName: "marqueeX"
41
+ },
42
+ "&[data-side='top'], &[data-side='bottom']": {
43
+ animationName: "marqueeY"
44
+ },
45
+ "&[data-reverse]": {
46
+ animationDirection: "reverse"
47
+ },
48
+ "&[data-orientation='horizontal']": {
49
+ flexDirection: "row"
50
+ },
51
+ "&[data-orientation='vertical']": {
52
+ flexDirection: "column"
53
+ }
54
+ },
55
+ edge: {
56
+ position: "absolute",
57
+ zIndex: "1",
58
+ pointerEvents: "none",
59
+ "&[data-side='start']": {
60
+ width: "var(--marquee-edge-size)",
61
+ insetY: "0",
62
+ insetInlineStart: "0",
63
+ background: "linear-gradient(to right, var(--marquee-edge-color, white), transparent)",
64
+ _rtl: {
65
+ background: "linear-gradient(to left, var(--marquee-edge-color, white), transparent)"
66
+ }
67
+ },
68
+ "&[data-side='end']": {
69
+ width: "var(--marquee-edge-size)",
70
+ insetY: "0",
71
+ insetInlineEnd: "0",
72
+ background: "linear-gradient(to left, var(--marquee-edge-color, white), transparent)",
73
+ _rtl: {
74
+ background: "linear-gradient(to right, var(--marquee-edge-color, white), transparent)"
75
+ }
76
+ },
77
+ "&[data-side='top']": {
78
+ height: "var(--marquee-edge-size)",
79
+ insetX: "0",
80
+ top: "0",
81
+ background: "linear-gradient(to bottom, var(--marquee-edge-color, white), transparent)"
82
+ },
83
+ "&[data-side='bottom']": {
84
+ height: "var(--marquee-edge-size)",
85
+ insetX: "0",
86
+ bottom: "0",
87
+ background: "linear-gradient(to top, var(--marquee-edge-color, white), transparent)"
88
+ }
89
+ }
90
+ }
91
+ });
92
+
93
+ exports.marqueeSlotRecipe = marqueeSlotRecipe;
@@ -25,11 +25,12 @@ const menuSlotRecipe = def.defineSlotRecipe({
25
25
  base: {
26
26
  content: {
27
27
  outline: 0,
28
- bg: "bg.panel",
28
+ "--menu-bg": "colors.bg.panel",
29
+ bg: "var(--menu-bg)",
29
30
  boxShadow: "lg",
30
31
  color: "fg",
31
32
  maxHeight: "var(--available-height)",
32
- "--menu-z-index": "zIndex.dropdown",
33
+ "--menu-z-index": "zIndex.popover",
33
34
  zIndex: "calc(var(--menu-z-index) + var(--layer-index, 0))",
34
35
  borderRadius: "l2",
35
36
  overflow: "hidden",
@@ -97,6 +98,14 @@ const menuSlotRecipe = def.defineSlotRecipe({
97
98
  bg: "bg.muted",
98
99
  my: "1",
99
100
  mx: "-1"
101
+ },
102
+ arrow: {
103
+ "--arrow-size": "sizes.3",
104
+ "--arrow-background": "var(--menu-bg)"
105
+ },
106
+ arrowTip: {
107
+ borderTopWidth: "1px",
108
+ borderLeftWidth: "1px"
100
109
  }
101
110
  },
102
111
  variants: {
@@ -82,6 +82,14 @@ const nativeSelectSlotRecipe = def.defineSlotRecipe({
82
82
  color: "fg",
83
83
  focusRingWidth: "2px"
84
84
  }
85
+ },
86
+ ghost: {
87
+ field: {
88
+ bg: "transparent",
89
+ _expanded: {
90
+ bg: "bg.muted"
91
+ }
92
+ }
85
93
  }
86
94
  },
87
95
  size: {
@@ -35,8 +35,7 @@ const radioCardSlotRecipe = def.defineSlotRecipe({
35
35
  bg: "colorPalette.muted/20"
36
36
  },
37
37
  _disabled: {
38
- opacity: "0.8",
39
- borderColor: "border.disabled"
38
+ opacity: "0.5"
40
39
  },
41
40
  _checked: {
42
41
  zIndex: "1"
@@ -240,6 +239,11 @@ const radioCardSlotRecipe = def.defineSlotRecipe({
240
239
  borderColor: "colorPalette.solid"
241
240
  }
242
241
  },
242
+ itemControl: {
243
+ _disabled: {
244
+ bg: "unset"
245
+ }
246
+ },
243
247
  itemIndicator: {
244
248
  bg: "bg",
245
249
  borderWidth: "1px",
@@ -77,7 +77,8 @@ const selectSlotRecipe = def.defineSlotRecipe({
77
77
  background: "bg.panel",
78
78
  display: "flex",
79
79
  flexDirection: "column",
80
- zIndex: "dropdown",
80
+ "--select-z-index": "zIndex.popover",
81
+ zIndex: "calc(var(--select-z-index) + var(--layer-index, 0))",
81
82
  borderRadius: "l2",
82
83
  outline: 0,
83
84
  maxH: "96",
@@ -168,6 +169,14 @@ const selectSlotRecipe = def.defineSlotRecipe({
168
169
  borderColor: "transparent",
169
170
  bg: "bg.muted"
170
171
  }
172
+ },
173
+ ghost: {
174
+ trigger: {
175
+ bg: "transparent",
176
+ _expanded: {
177
+ bg: "bg.muted"
178
+ }
179
+ }
171
180
  }
172
181
  },
173
182
  size: {
@@ -16,7 +16,8 @@ const sliderSlotRecipe = def.defineSlotRecipe({
16
16
  "markerGroup",
17
17
  "marker",
18
18
  "draggingIndicator",
19
- "markerIndicator"
19
+ "markerIndicator",
20
+ "markerLabel"
20
21
  ],
21
22
  base: {
22
23
  root: {
@@ -79,11 +80,10 @@ const sliderSlotRecipe = def.defineSlotRecipe({
79
80
  outline: 0,
80
81
  zIndex: "2",
81
82
  borderRadius: "full",
83
+ transition: "shadow",
82
84
  _focusVisible: {
83
- ring: "2px",
84
- ringColor: "colorPalette.focusRing",
85
- ringOffset: "2px",
86
- ringOffsetColor: "bg"
85
+ ring: "3px",
86
+ ringColor: "colorPalette.focusRing/50"
87
87
  }
88
88
  }
89
89
  },
@@ -163,7 +163,7 @@ const sliderSlotRecipe = def.defineSlotRecipe({
163
163
  flexDirection: "column",
164
164
  height: "100%",
165
165
  minWidth: "var(--slider-thumb-size)",
166
- "&[data-has-mark-label], &:has(.slider__marker-label)": {
166
+ "&:has(.slider__markerLabel)": {
167
167
  marginEnd: "4"
168
168
  }
169
169
  },
@@ -187,7 +187,7 @@ const sliderSlotRecipe = def.defineSlotRecipe({
187
187
  flexDirection: "row",
188
188
  width: "100%",
189
189
  minHeight: "var(--slider-thumb-size)",
190
- "&[data-has-mark-label], &:has(.slider__marker-label)": {
190
+ "&:has(.slider__markerLabel)": {
191
191
  marginBottom: "4"
192
192
  }
193
193
  },
@@ -4,29 +4,29 @@ import { defineGlobalStyles } from './def.js';
4
4
  const globalCss = defineGlobalStyles({
5
5
  "*": {
6
6
  fontFeatureSettings: '"cv11"',
7
- "--ring-inset": "var(--empty,/*!*/ /*!*/)",
7
+ "--ring-inset": "var(--empty, )",
8
8
  "--ring-offset-width": "0px",
9
9
  "--ring-offset-color": "#fff",
10
10
  "--ring-color": "rgba(66, 153, 225, 0.6)",
11
11
  "--ring-offset-shadow": "0 0 #0000",
12
12
  "--ring-shadow": "0 0 #0000",
13
- "--brightness": "var(--empty,/*!*/ /*!*/)",
14
- "--contrast": "var(--empty,/*!*/ /*!*/)",
15
- "--grayscale": "var(--empty,/*!*/ /*!*/)",
16
- "--hue-rotate": "var(--empty,/*!*/ /*!*/)",
17
- "--invert": "var(--empty,/*!*/ /*!*/)",
18
- "--saturate": "var(--empty,/*!*/ /*!*/)",
19
- "--sepia": "var(--empty,/*!*/ /*!*/)",
20
- "--drop-shadow": "var(--empty,/*!*/ /*!*/)",
21
- "--backdrop-blur": "var(--empty,/*!*/ /*!*/)",
22
- "--backdrop-brightness": "var(--empty,/*!*/ /*!*/)",
23
- "--backdrop-contrast": "var(--empty,/*!*/ /*!*/)",
24
- "--backdrop-grayscale": "var(--empty,/*!*/ /*!*/)",
25
- "--backdrop-hue-rotate": "var(--empty,/*!*/ /*!*/)",
26
- "--backdrop-invert": "var(--empty,/*!*/ /*!*/)",
27
- "--backdrop-opacity": "var(--empty,/*!*/ /*!*/)",
28
- "--backdrop-saturate": "var(--empty,/*!*/ /*!*/)",
29
- "--backdrop-sepia": "var(--empty,/*!*/ /*!*/)",
13
+ "--brightness": "var(--empty, )",
14
+ "--contrast": "var(--empty, )",
15
+ "--grayscale": "var(--empty, )",
16
+ "--hue-rotate": "var(--empty, )",
17
+ "--invert": "var(--empty, )",
18
+ "--saturate": "var(--empty, )",
19
+ "--sepia": "var(--empty, )",
20
+ "--drop-shadow": "var(--empty, )",
21
+ "--backdrop-blur": "var(--empty, )",
22
+ "--backdrop-brightness": "var(--empty, )",
23
+ "--backdrop-contrast": "var(--empty, )",
24
+ "--backdrop-grayscale": "var(--empty, )",
25
+ "--backdrop-hue-rotate": "var(--empty, )",
26
+ "--backdrop-invert": "var(--empty, )",
27
+ "--backdrop-opacity": "var(--empty, )",
28
+ "--backdrop-saturate": "var(--empty, )",
29
+ "--backdrop-sepia": "var(--empty, )",
30
30
  "--global-font-mono": "fonts.mono",
31
31
  "--global-font-body": "fonts.body",
32
32
  "--global-color-border": "colors.border"
@@ -87,10 +87,10 @@ const keyframes = {
87
87
  },
88
88
  "collapse-width": {
89
89
  from: {
90
- height: "var(--width)"
90
+ width: "var(--width)"
91
91
  },
92
92
  to: {
93
- height: "var(--collapsed-width, 0)"
93
+ width: "var(--collapsed-width, 0)"
94
94
  }
95
95
  },
96
96
  "fade-in": {
@@ -252,6 +252,22 @@ const keyframes = {
252
252
  to: {
253
253
  scale: "0.95"
254
254
  }
255
+ },
256
+ marqueeX: {
257
+ from: {
258
+ transform: "translateX(0%)"
259
+ },
260
+ to: {
261
+ transform: "translateX(var(--marquee-translate))"
262
+ }
263
+ },
264
+ marqueeY: {
265
+ from: {
266
+ transform: "translateY(0%)"
267
+ },
268
+ to: {
269
+ transform: "translateY(var(--marquee-translate))"
270
+ }
255
271
  }
256
272
  };
257
273
 
@@ -14,11 +14,9 @@ const actionBarSlotRecipe = defineSlotRecipe({
14
14
  positioner: {
15
15
  position: "fixed",
16
16
  display: "flex",
17
- justifyContent: "center",
18
17
  pointerEvents: "none",
19
18
  insetInline: "0",
20
- top: "unset",
21
- bottom: "calc(env(safe-area-inset-bottom) + 20px)"
19
+ "--action-bar-offset": "spacing.4"
22
20
  },
23
21
  content: {
24
22
  bg: "bg.panel",
@@ -57,6 +55,33 @@ const actionBarSlotRecipe = defineSlotRecipe({
57
55
  borderWidth: "1px",
58
56
  borderStyle: "dashed"
59
57
  }
58
+ },
59
+ variants: {
60
+ placement: {
61
+ bottom: {
62
+ positioner: {
63
+ bottom: "calc(env(safe-area-inset-bottom) + var(--action-bar-offset))",
64
+ justifyContent: "center"
65
+ }
66
+ },
67
+ "bottom-start": {
68
+ positioner: {
69
+ bottom: "calc(env(safe-area-inset-bottom) + var(--action-bar-offset))",
70
+ justifyContent: "flex-start",
71
+ ps: "var(--action-bar-offset)"
72
+ }
73
+ },
74
+ "bottom-end": {
75
+ positioner: {
76
+ bottom: "calc(env(safe-area-inset-bottom) + var(--action-bar-offset))",
77
+ justifyContent: "flex-end",
78
+ pe: "var(--action-bar-offset)"
79
+ }
80
+ }
81
+ }
82
+ },
83
+ defaultVariants: {
84
+ placement: "bottom"
60
85
  }
61
86
  });
62
87
 
@@ -95,7 +95,8 @@ const colorPickerSlotRecipe = defineSlotRecipe({
95
95
  width: "64",
96
96
  p: "4",
97
97
  gap: "3",
98
- zIndex: "dropdown",
98
+ "--color-picker-z-index": "zIndex.popover",
99
+ zIndex: "calc(var(--color-picker-z-index) + var(--layer-index, 0))",
99
100
  _open: {
100
101
  animationStyle: "slide-fade-in",
101
102
  animationDuration: "fast"
@@ -109,7 +109,8 @@ const comboboxSlotRecipe = defineSlotRecipe({
109
109
  background: "bg.panel",
110
110
  display: "flex",
111
111
  flexDirection: "column",
112
- zIndex: "dropdown",
112
+ "--combobox-z-index": "zIndex.popover",
113
+ zIndex: "calc(var(--combobox-z-index) + var(--layer-index, 0))",
113
114
  borderRadius: "l2",
114
115
  outline: 0,
115
116
  maxH: "96",
@@ -41,7 +41,7 @@ const dialogSlotRecipe = defineSlotRecipe({
41
41
  position: "fixed",
42
42
  left: 0,
43
43
  top: 0,
44
- "--dialog-z-index": "zIndex.modal",
44
+ "--dialog-z-index": "zIndex.popover",
45
45
  zIndex: "calc(var(--dialog-z-index) + var(--layer-index, 0))",
46
46
  justifyContent: "center",
47
47
  overscrollBehaviorY: "none"
@@ -55,7 +55,7 @@ const dialogSlotRecipe = defineSlotRecipe({
55
55
  borderRadius: "l3",
56
56
  textStyle: "sm",
57
57
  my: "var(--dialog-margin, var(--dialog-base-margin))",
58
- "--dialog-z-index": "zIndex.modal",
58
+ "--dialog-z-index": "zIndex.popover",
59
59
  zIndex: "calc(var(--dialog-z-index) + var(--layer-index, 0))",
60
60
  bg: "bg.panel",
61
61
  boxShadow: "lg",
@@ -24,7 +24,7 @@ const drawerSlotRecipe = defineSlotRecipe({
24
24
  top: 0,
25
25
  w: "100vw",
26
26
  h: "100dvh",
27
- zIndex: "overlay",
27
+ zIndex: "var(--z-index)",
28
28
  _open: {
29
29
  animationName: "fade-in",
30
30
  animationDuration: "slow"
@@ -41,7 +41,8 @@ const drawerSlotRecipe = defineSlotRecipe({
41
41
  position: "fixed",
42
42
  insetInlineStart: 0,
43
43
  top: 0,
44
- zIndex: "modal",
44
+ "--drawer-z-index": "zIndex.popover",
45
+ zIndex: "calc(var(--drawer-z-index) + var(--layer-index, 0))",
45
46
  overscrollBehaviorY: "none"
46
47
  },
47
48
  content: {
@@ -50,7 +51,8 @@ const drawerSlotRecipe = defineSlotRecipe({
50
51
  position: "relative",
51
52
  width: "100%",
52
53
  outline: 0,
53
- zIndex: "modal",
54
+ "--drawer-z-index": "zIndex.popover",
55
+ zIndex: "calc(var(--drawer-z-index) + var(--layer-index, 0))",
54
56
  textStyle: "sm",
55
57
  maxH: "100dvh",
56
58
  color: "inherit",
@@ -15,7 +15,8 @@ const hoverCardSlotRecipe = defineSlotRecipe({
15
15
  boxShadow: "lg",
16
16
  maxWidth: "80",
17
17
  borderRadius: "l3",
18
- zIndex: "popover",
18
+ "--hover-card-z-index": "zIndex.popover",
19
+ zIndex: "calc(var(--hover-card-z-index) + var(--layer-index, 0))",
19
20
  transformOrigin: "var(--transform-origin)",
20
21
  outline: "0",
21
22
  _open: {
@@ -24,6 +24,7 @@ import { fileUploadSlotRecipe } from './file-upload.js';
24
24
  import { hoverCardSlotRecipe } from './hover-card.js';
25
25
  import { listSlotRecipe } from './list.js';
26
26
  import { listboxSlotRecipe } from './listbox.js';
27
+ import { marqueeSlotRecipe } from './marquee.js';
27
28
  import { menuSlotRecipe } from './menu.js';
28
29
  import { nativeSelectSlotRecipe } from './native-select.js';
29
30
  import { numberInputSlotRecipe } from './number-input.js';
@@ -106,7 +107,8 @@ const slotRecipes = {
106
107
  timeline: timelineSlotRecipe,
107
108
  colorPicker: colorPickerSlotRecipe,
108
109
  qrCode: qrCodeSlotRecipe,
109
- treeView: treeViewSlotRecipe
110
+ treeView: treeViewSlotRecipe,
111
+ marquee: marqueeSlotRecipe
110
112
  };
111
113
 
112
114
  export { slotRecipes };
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ import { defineSlotRecipe } from '../def.js';
3
+
4
+ const marqueeSlotRecipe = defineSlotRecipe({
5
+ className: "marquee",
6
+ slots: ["root", "viewport", "content", "edge", "item"],
7
+ base: {
8
+ root: {
9
+ position: "relative",
10
+ width: "100%",
11
+ "--marquee-edge-color": "colors.bg",
12
+ "--marquee-edge-size": "20%",
13
+ "&[data-paused]": {
14
+ animationPlayState: "paused !important",
15
+ "& *": {
16
+ animationPlayState: "paused !important"
17
+ }
18
+ }
19
+ },
20
+ viewport: {
21
+ overflow: "hidden",
22
+ display: "flex",
23
+ width: "100%",
24
+ height: "100%"
25
+ },
26
+ content: {
27
+ display: "flex",
28
+ minWidth: "max-content",
29
+ animationTimingFunction: "linear",
30
+ animationFillMode: "forwards",
31
+ animationDuration: "var(--marquee-duration)",
32
+ animationDelay: "var(--marquee-delay)",
33
+ animationIterationCount: "var(--marquee-loop-count)",
34
+ _motionReduce: {
35
+ animation: "none !important"
36
+ },
37
+ "&[data-side='start'], &[data-side='end']": {
38
+ animationName: "marqueeX"
39
+ },
40
+ "&[data-side='top'], &[data-side='bottom']": {
41
+ animationName: "marqueeY"
42
+ },
43
+ "&[data-reverse]": {
44
+ animationDirection: "reverse"
45
+ },
46
+ "&[data-orientation='horizontal']": {
47
+ flexDirection: "row"
48
+ },
49
+ "&[data-orientation='vertical']": {
50
+ flexDirection: "column"
51
+ }
52
+ },
53
+ edge: {
54
+ position: "absolute",
55
+ zIndex: "1",
56
+ pointerEvents: "none",
57
+ "&[data-side='start']": {
58
+ width: "var(--marquee-edge-size)",
59
+ insetY: "0",
60
+ insetInlineStart: "0",
61
+ background: "linear-gradient(to right, var(--marquee-edge-color, white), transparent)",
62
+ _rtl: {
63
+ background: "linear-gradient(to left, var(--marquee-edge-color, white), transparent)"
64
+ }
65
+ },
66
+ "&[data-side='end']": {
67
+ width: "var(--marquee-edge-size)",
68
+ insetY: "0",
69
+ insetInlineEnd: "0",
70
+ background: "linear-gradient(to left, var(--marquee-edge-color, white), transparent)",
71
+ _rtl: {
72
+ background: "linear-gradient(to right, var(--marquee-edge-color, white), transparent)"
73
+ }
74
+ },
75
+ "&[data-side='top']": {
76
+ height: "var(--marquee-edge-size)",
77
+ insetX: "0",
78
+ top: "0",
79
+ background: "linear-gradient(to bottom, var(--marquee-edge-color, white), transparent)"
80
+ },
81
+ "&[data-side='bottom']": {
82
+ height: "var(--marquee-edge-size)",
83
+ insetX: "0",
84
+ bottom: "0",
85
+ background: "linear-gradient(to top, var(--marquee-edge-color, white), transparent)"
86
+ }
87
+ }
88
+ }
89
+ });
90
+
91
+ export { marqueeSlotRecipe };
@@ -23,11 +23,12 @@ const menuSlotRecipe = defineSlotRecipe({
23
23
  base: {
24
24
  content: {
25
25
  outline: 0,
26
- bg: "bg.panel",
26
+ "--menu-bg": "colors.bg.panel",
27
+ bg: "var(--menu-bg)",
27
28
  boxShadow: "lg",
28
29
  color: "fg",
29
30
  maxHeight: "var(--available-height)",
30
- "--menu-z-index": "zIndex.dropdown",
31
+ "--menu-z-index": "zIndex.popover",
31
32
  zIndex: "calc(var(--menu-z-index) + var(--layer-index, 0))",
32
33
  borderRadius: "l2",
33
34
  overflow: "hidden",
@@ -95,6 +96,14 @@ const menuSlotRecipe = defineSlotRecipe({
95
96
  bg: "bg.muted",
96
97
  my: "1",
97
98
  mx: "-1"
99
+ },
100
+ arrow: {
101
+ "--arrow-size": "sizes.3",
102
+ "--arrow-background": "var(--menu-bg)"
103
+ },
104
+ arrowTip: {
105
+ borderTopWidth: "1px",
106
+ borderLeftWidth: "1px"
98
107
  }
99
108
  },
100
109
  variants: {
@@ -80,6 +80,14 @@ const nativeSelectSlotRecipe = defineSlotRecipe({
80
80
  color: "fg",
81
81
  focusRingWidth: "2px"
82
82
  }
83
+ },
84
+ ghost: {
85
+ field: {
86
+ bg: "transparent",
87
+ _expanded: {
88
+ bg: "bg.muted"
89
+ }
90
+ }
83
91
  }
84
92
  },
85
93
  size: {
@@ -33,8 +33,7 @@ const radioCardSlotRecipe = defineSlotRecipe({
33
33
  bg: "colorPalette.muted/20"
34
34
  },
35
35
  _disabled: {
36
- opacity: "0.8",
37
- borderColor: "border.disabled"
36
+ opacity: "0.5"
38
37
  },
39
38
  _checked: {
40
39
  zIndex: "1"
@@ -238,6 +237,11 @@ const radioCardSlotRecipe = defineSlotRecipe({
238
237
  borderColor: "colorPalette.solid"
239
238
  }
240
239
  },
240
+ itemControl: {
241
+ _disabled: {
242
+ bg: "unset"
243
+ }
244
+ },
241
245
  itemIndicator: {
242
246
  bg: "bg",
243
247
  borderWidth: "1px",
@@ -75,7 +75,8 @@ const selectSlotRecipe = defineSlotRecipe({
75
75
  background: "bg.panel",
76
76
  display: "flex",
77
77
  flexDirection: "column",
78
- zIndex: "dropdown",
78
+ "--select-z-index": "zIndex.popover",
79
+ zIndex: "calc(var(--select-z-index) + var(--layer-index, 0))",
79
80
  borderRadius: "l2",
80
81
  outline: 0,
81
82
  maxH: "96",
@@ -166,6 +167,14 @@ const selectSlotRecipe = defineSlotRecipe({
166
167
  borderColor: "transparent",
167
168
  bg: "bg.muted"
168
169
  }
170
+ },
171
+ ghost: {
172
+ trigger: {
173
+ bg: "transparent",
174
+ _expanded: {
175
+ bg: "bg.muted"
176
+ }
177
+ }
169
178
  }
170
179
  },
171
180
  size: {
@@ -14,7 +14,8 @@ const sliderSlotRecipe = defineSlotRecipe({
14
14
  "markerGroup",
15
15
  "marker",
16
16
  "draggingIndicator",
17
- "markerIndicator"
17
+ "markerIndicator",
18
+ "markerLabel"
18
19
  ],
19
20
  base: {
20
21
  root: {
@@ -77,11 +78,10 @@ const sliderSlotRecipe = defineSlotRecipe({
77
78
  outline: 0,
78
79
  zIndex: "2",
79
80
  borderRadius: "full",
81
+ transition: "shadow",
80
82
  _focusVisible: {
81
- ring: "2px",
82
- ringColor: "colorPalette.focusRing",
83
- ringOffset: "2px",
84
- ringOffsetColor: "bg"
83
+ ring: "3px",
84
+ ringColor: "colorPalette.focusRing/50"
85
85
  }
86
86
  }
87
87
  },
@@ -161,7 +161,7 @@ const sliderSlotRecipe = defineSlotRecipe({
161
161
  flexDirection: "column",
162
162
  height: "100%",
163
163
  minWidth: "var(--slider-thumb-size)",
164
- "&[data-has-mark-label], &:has(.slider__marker-label)": {
164
+ "&:has(.slider__markerLabel)": {
165
165
  marginEnd: "4"
166
166
  }
167
167
  },
@@ -185,7 +185,7 @@ const sliderSlotRecipe = defineSlotRecipe({
185
185
  flexDirection: "row",
186
186
  width: "100%",
187
187
  minHeight: "var(--slider-thumb-size)",
188
- "&[data-has-mark-label], &:has(.slider__marker-label)": {
188
+ "&:has(.slider__markerLabel)": {
189
189
  marginBottom: "4"
190
190
  }
191
191
  },
@@ -86,10 +86,10 @@ export declare const keyframes: {
86
86
  };
87
87
  "collapse-width": {
88
88
  from: {
89
- height: string;
89
+ width: string;
90
90
  };
91
91
  to: {
92
- height: string;
92
+ width: string;
93
93
  };
94
94
  };
95
95
  "fade-in": {
@@ -252,4 +252,20 @@ export declare const keyframes: {
252
252
  scale: string;
253
253
  };
254
254
  };
255
+ marqueeX: {
256
+ from: {
257
+ transform: string;
258
+ };
259
+ to: {
260
+ transform: string;
261
+ };
262
+ };
263
+ marqueeY: {
264
+ from: {
265
+ transform: string;
266
+ };
267
+ to: {
268
+ transform: string;
269
+ };
270
+ };
255
271
  };
@@ -52,4 +52,5 @@ export declare const slotRecipes: {
52
52
  colorPicker: import("@pandacss/types").SlotRecipeConfig;
53
53
  qrCode: import("@pandacss/types").SlotRecipeConfig;
54
54
  treeView: import("@pandacss/types").SlotRecipeConfig;
55
+ marquee: import("@pandacss/types").SlotRecipeConfig;
55
56
  };
@@ -0,0 +1 @@
1
+ export declare const marqueeSlotRecipe: import("@pandacss/types").SlotRecipeConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chakra-ui/panda-preset",
3
- "version": "3.30.0",
3
+ "version": "3.32.0",
4
4
  "description": "Panda preset for Chakra UI",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.cjs",
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "devDependencies": {
51
51
  "globby": "14.1.0",
52
- "@chakra-ui/cli": "3.30.0"
52
+ "@chakra-ui/cli": "3.32.0"
53
53
  },
54
54
  "scripts": {
55
55
  "theme:eject": "chakra eject --outdir=src",