@saas-ui/react 3.0.0-next.26 → 3.0.0-next.28

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 (66) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/.tsbuildinfo.json +1 -1
  3. package/dist/components/action-bar/action-bar.recipe.js +1 -1
  4. package/dist/components/avatar/avatar.recipe.d.ts +6 -7
  5. package/dist/components/avatar/avatar.recipe.js +6 -7
  6. package/dist/components/breadcrumb/breadcrumb.recipe.js +1 -1
  7. package/dist/components/button/button.recipe.d.ts +4 -1
  8. package/dist/components/button/button.recipe.js +4 -1
  9. package/dist/components/card/card.recipe.d.ts +13 -5
  10. package/dist/components/card/card.recipe.js +18 -9
  11. package/dist/components/checkbox/checkbox.recipe.d.ts +4 -4
  12. package/dist/components/checkbox-card/checkbox-card.recipe.d.ts +2 -2
  13. package/dist/components/checkbox-card/checkbox-card.recipe.js +3 -2
  14. package/dist/components/checkmark/checkmark.recipe.d.ts +3 -3
  15. package/dist/components/checkmark/checkmark.recipe.js +4 -4
  16. package/dist/components/code/code.recipe.js +1 -1
  17. package/dist/components/collapsible/collapsible.recipe.d.ts +1 -1
  18. package/dist/components/dialog/dialog.recipe.d.ts +18 -0
  19. package/dist/components/dialog/dialog.recipe.js +34 -3
  20. package/dist/components/drawer/drawer.recipe.js +5 -0
  21. package/dist/components/editable/editable.recipe.js +1 -1
  22. package/dist/components/grid-list/grid-list.recipe.js +4 -5
  23. package/dist/components/icon-badge/icon-badge.d.ts +1 -1
  24. package/dist/components/icon-badge/icon-badge.recipe.js +1 -0
  25. package/dist/components/input/input-addon.recipe.d.ts +1 -1
  26. package/dist/components/input/input-addon.recipe.js +1 -1
  27. package/dist/components/kbd/kbd.recipe.js +1 -1
  28. package/dist/components/link/link.recipe.js +1 -1
  29. package/dist/components/loading-overlay/loading-overlay.recipe.d.ts +3 -12
  30. package/dist/components/loading-overlay/loading-overlay.recipe.js +3 -12
  31. package/dist/components/menu/menu.js +2 -1
  32. package/dist/components/menu/menu.recipe.d.ts +2 -0
  33. package/dist/components/menu/menu.recipe.js +4 -2
  34. package/dist/components/native-select/native-select.recipe.js +1 -1
  35. package/dist/components/navbar/navbar.d.ts +3 -3
  36. package/dist/components/navbar/navbar.recipe.js +1 -4
  37. package/dist/components/page/page.d.ts +3 -3
  38. package/dist/components/page/page.recipe.d.ts +4 -0
  39. package/dist/components/page/page.recipe.js +4 -2
  40. package/dist/components/progress/progress.recipe.d.ts +2 -2
  41. package/dist/components/progress/progress.recipe.js +3 -2
  42. package/dist/components/radio/index.d.ts +1 -0
  43. package/dist/components/radio/index.js +1 -0
  44. package/dist/components/radio-card/radio-card.recipe.js +1 -1
  45. package/dist/components/section/section.d.ts +2 -2
  46. package/dist/components/select/select.recipe.js +5 -4
  47. package/dist/components/sidebar/sidebar.d.ts +14 -13
  48. package/dist/components/sidebar/sidebar.recipe.js +1 -1
  49. package/dist/components/skeleton/skeleton.recipe.d.ts +1 -1
  50. package/dist/components/skeleton/skeleton.recipe.js +1 -1
  51. package/dist/components/skip-nav-link/skip-nav-link.recipe.js +1 -1
  52. package/dist/components/stat/stat.recipe.js +1 -1
  53. package/dist/components/steps/steps.recipe.js +1 -1
  54. package/dist/components/tabs/tabs.recipe.d.ts +29 -9
  55. package/dist/components/tabs/tabs.recipe.js +29 -9
  56. package/dist/components/tag/tag.recipe.d.ts +1 -1
  57. package/dist/components/tooltip/tooltip.recipe.js +1 -1
  58. package/dist/theme/conditions.d.ts +1 -0
  59. package/dist/theme/conditions.js +1 -0
  60. package/dist/theme/global-css.js +5 -2
  61. package/dist/theme/layer-styles.js +12 -4
  62. package/dist/theme/recipes.d.ts +9 -6
  63. package/dist/theme/semantic-tokens/colors.js +1 -1
  64. package/dist/theme/semantic-tokens/shadows.js +1 -1
  65. package/dist/theme/slot-recipes.d.ts +121 -79
  66. package/package.json +1 -1
@@ -24,7 +24,7 @@ export const sidebarSlotRecipe = defineSlotRecipe({
24
24
  flexDirection: 'column',
25
25
  },
26
26
  backdrop: {
27
- bg: 'blackAlpha.200',
27
+ layerStyle: 'backdrop',
28
28
  position: 'fixed',
29
29
  inset: 0,
30
30
  '--sidebar-backdrop-z-index': 'zIndex.layer-3',
@@ -1,7 +1,7 @@
1
1
  export declare const skeletonRecipe: import("@chakra-ui/react").RecipeDefinition<{
2
2
  loading: {
3
3
  true: {
4
- borderRadius: "l2";
4
+ borderRadius: "panel.md";
5
5
  boxShadow: "none";
6
6
  backgroundClip: "padding-box";
7
7
  cursor: "default";
@@ -5,7 +5,7 @@ export const skeletonRecipe = defineRecipe({
5
5
  variants: {
6
6
  loading: {
7
7
  true: {
8
- borderRadius: 'l2',
8
+ borderRadius: 'panel.md',
9
9
  boxShadow: 'none',
10
10
  backgroundClip: 'padding-box',
11
11
  cursor: 'default',
@@ -5,7 +5,7 @@ export const skipNavLinkRecipe = defineRecipe({
5
5
  display: 'inline-flex',
6
6
  bg: 'bg.panel',
7
7
  padding: '2.5',
8
- borderRadius: 'l2',
8
+ borderRadius: 'control.md',
9
9
  fontWeight: 'semibold',
10
10
  focusVisibleRing: 'outside',
11
11
  textStyle: 'sm',
@@ -7,7 +7,7 @@ export const statSlotRecipe = defineSlotRecipe({
7
7
  root: {
8
8
  display: 'flex',
9
9
  flexDirection: 'column',
10
- gap: '1',
10
+ gap: '0',
11
11
  position: 'relative',
12
12
  flex: '1',
13
13
  },
@@ -57,7 +57,7 @@ export const stepsSlotRecipe = defineSlotRecipe({
57
57
  gap: '3',
58
58
  textAlign: 'start',
59
59
  focusVisibleRing: 'outside',
60
- borderRadius: 'l2',
60
+ borderRadius: 'control.md',
61
61
  },
62
62
  content: {
63
63
  focusVisibleRing: 'outside',
@@ -33,6 +33,7 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
33
33
  root: {
34
34
  '--tabs-height': "sizes.6";
35
35
  '--tabs-content-padding': "spacing.2";
36
+ '--tabs-trigger-radius': "radii.control.sm";
36
37
  };
37
38
  trigger: {
38
39
  py: "1";
@@ -44,6 +45,7 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
44
45
  root: {
45
46
  '--tabs-height': "sizes.7";
46
47
  '--tabs-content-padding': "spacing.3";
48
+ '--tabs-trigger-radius': "radii.control.md";
47
49
  };
48
50
  trigger: {
49
51
  py: "1";
@@ -55,6 +57,7 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
55
57
  root: {
56
58
  '--tabs-height': "sizes.8";
57
59
  '--tabs-content-padding': "spacing.4";
60
+ '--tabs-trigger-radius': "radii.control.md";
58
61
  };
59
62
  trigger: {
60
63
  py: "2";
@@ -66,6 +69,7 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
66
69
  root: {
67
70
  '--tabs-height': "sizes.10";
68
71
  '--tabs-content-padding': "spacing.4.5";
72
+ '--tabs-trigger-radius': "radii.control.lg";
69
73
  };
70
74
  trigger: {
71
75
  py: "2";
@@ -97,9 +101,11 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
97
101
  };
98
102
  };
99
103
  _selected: {
100
- color: "fg !important";
104
+ color: "fg";
101
105
  _horizontal: {
102
106
  layerStyle: "indicator.bottom";
107
+ borderTopRadius: "3px";
108
+ '--indicator-offset-x': "spacing.3";
103
109
  '--indicator-offset-y': "-1px";
104
110
  '--indicator-color': "colors.colorPalette.solid";
105
111
  };
@@ -124,9 +130,13 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
124
130
  color: "fg.subtle";
125
131
  };
126
132
  _selected: {
127
- bg: "colorPalette.subtle !important";
128
- color: "colorPalette.fg !important";
129
- borderColor: "colorPalette.solid/50";
133
+ bg: "colorPalette.subtle";
134
+ color: "colorPalette.fg";
135
+ borderColor: "colorPalette.solid/40";
136
+ _hover: {
137
+ bg: "colorPalette.subtle";
138
+ color: "colorPalette.fg";
139
+ };
130
140
  };
131
141
  };
132
142
  };
@@ -136,14 +146,18 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
136
146
  };
137
147
  trigger: {
138
148
  borderRadius: "var(--tabs-trigger-radius)";
139
- color: "fg.muted";
149
+ color: "fg.subtle";
140
150
  _hover: {
141
- bg: "bg.muted";
142
- color: "fg.subtle";
151
+ bg: "colorPalette.muted";
152
+ color: "colorPalette.fg";
143
153
  };
144
154
  _selected: {
145
- bg: "colorPalette.subtle !important";
146
- color: "colorPalette.fg !important";
155
+ bg: "colorPalette.subtle";
156
+ color: "colorPalette.fg";
157
+ _hover: {
158
+ bg: "colorPalette.subtle";
159
+ color: "colorPalette.fg";
160
+ };
147
161
  };
148
162
  };
149
163
  };
@@ -159,6 +173,9 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
159
173
  justifyContent: "center";
160
174
  color: "fg.muted";
161
175
  borderRadius: "var(--tabs-trigger-radius)";
176
+ _hover: {
177
+ color: "fg.subtle";
178
+ };
162
179
  _selected: {
163
180
  bg: "bg";
164
181
  color: "colorPalette.fg";
@@ -197,6 +214,9 @@ export declare const tabsSlotRecipe: import("@chakra-ui/react").SlotRecipeDefini
197
214
  color: "fg.muted";
198
215
  borderWidth: "1px";
199
216
  borderColor: "transparent";
217
+ _hover: {
218
+ color: "fg.subtle";
219
+ };
200
220
  _selected: {
201
221
  bg: "currentBg";
202
222
  color: "colorPalette.fg";
@@ -103,6 +103,7 @@ export const tabsSlotRecipe = defineSlotRecipe({
103
103
  root: {
104
104
  '--tabs-height': 'sizes.6',
105
105
  '--tabs-content-padding': 'spacing.2',
106
+ '--tabs-trigger-radius': 'radii.control.sm',
106
107
  },
107
108
  trigger: {
108
109
  py: '1',
@@ -114,6 +115,7 @@ export const tabsSlotRecipe = defineSlotRecipe({
114
115
  root: {
115
116
  '--tabs-height': 'sizes.7',
116
117
  '--tabs-content-padding': 'spacing.3',
118
+ '--tabs-trigger-radius': 'radii.control.md',
117
119
  },
118
120
  trigger: {
119
121
  py: '1',
@@ -125,6 +127,7 @@ export const tabsSlotRecipe = defineSlotRecipe({
125
127
  root: {
126
128
  '--tabs-height': 'sizes.8',
127
129
  '--tabs-content-padding': 'spacing.4',
130
+ '--tabs-trigger-radius': 'radii.control.md',
128
131
  },
129
132
  trigger: {
130
133
  py: '2',
@@ -136,6 +139,7 @@ export const tabsSlotRecipe = defineSlotRecipe({
136
139
  root: {
137
140
  '--tabs-height': 'sizes.10',
138
141
  '--tabs-content-padding': 'spacing.4.5',
142
+ '--tabs-trigger-radius': 'radii.control.lg',
139
143
  },
140
144
  trigger: {
141
145
  py: '2',
@@ -165,9 +169,11 @@ export const tabsSlotRecipe = defineSlotRecipe({
165
169
  _active: { bg: 'initial' },
166
170
  },
167
171
  _selected: {
168
- color: 'fg !important',
172
+ color: 'fg',
169
173
  _horizontal: {
170
174
  layerStyle: 'indicator.bottom',
175
+ borderTopRadius: '3px',
176
+ '--indicator-offset-x': 'spacing.3',
171
177
  '--indicator-offset-y': '-1px',
172
178
  '--indicator-color': 'colors.colorPalette.solid',
173
179
  },
@@ -192,9 +198,13 @@ export const tabsSlotRecipe = defineSlotRecipe({
192
198
  color: 'fg.subtle',
193
199
  },
194
200
  _selected: {
195
- bg: 'colorPalette.subtle !important',
196
- color: 'colorPalette.fg !important',
197
- borderColor: 'colorPalette.solid/50',
201
+ bg: 'colorPalette.subtle',
202
+ color: 'colorPalette.fg',
203
+ borderColor: 'colorPalette.solid/40',
204
+ _hover: {
205
+ bg: 'colorPalette.subtle',
206
+ color: 'colorPalette.fg',
207
+ },
198
208
  },
199
209
  },
200
210
  },
@@ -204,14 +214,18 @@ export const tabsSlotRecipe = defineSlotRecipe({
204
214
  },
205
215
  trigger: {
206
216
  borderRadius: 'var(--tabs-trigger-radius)',
207
- color: 'fg.muted',
217
+ color: 'fg.subtle',
208
218
  _hover: {
209
- bg: 'bg.muted',
210
- color: 'fg.subtle',
219
+ bg: 'colorPalette.muted',
220
+ color: 'colorPalette.fg',
211
221
  },
212
222
  _selected: {
213
- bg: 'colorPalette.subtle !important',
214
- color: 'colorPalette.fg !important',
223
+ bg: 'colorPalette.subtle',
224
+ color: 'colorPalette.fg',
225
+ _hover: {
226
+ bg: 'colorPalette.subtle',
227
+ color: 'colorPalette.fg',
228
+ },
215
229
  },
216
230
  },
217
231
  },
@@ -227,6 +241,9 @@ export const tabsSlotRecipe = defineSlotRecipe({
227
241
  justifyContent: 'center',
228
242
  color: 'fg.muted',
229
243
  borderRadius: 'var(--tabs-trigger-radius)',
244
+ _hover: {
245
+ color: 'fg.subtle',
246
+ },
230
247
  _selected: {
231
248
  bg: 'bg',
232
249
  color: 'colorPalette.fg',
@@ -265,6 +282,9 @@ export const tabsSlotRecipe = defineSlotRecipe({
265
282
  color: 'fg.muted',
266
283
  borderWidth: '1px',
267
284
  borderColor: 'transparent',
285
+ _hover: {
286
+ color: 'fg.subtle',
287
+ },
268
288
  _selected: {
269
289
  bg: 'currentBg',
270
290
  color: 'colorPalette.fg',
@@ -1,4 +1,4 @@
1
- export declare const tagSlotRecipe: import("@chakra-ui/react").SlotRecipeDefinition<"label" | "root" | "closeTrigger" | "startElement" | "endElement", {
1
+ export declare const tagSlotRecipe: import("@chakra-ui/react").SlotRecipeDefinition<"label" | "root" | "closeTrigger" | "endElement" | "startElement", {
2
2
  size: {
3
3
  sm: {
4
4
  root: {
@@ -12,7 +12,7 @@ export const tooltipSlotRecipe = defineSlotRecipe({
12
12
  color: 'fg',
13
13
  px: '2.5',
14
14
  py: '1',
15
- borderRadius: 'l2',
15
+ borderRadius: 'panel.sm',
16
16
  fontWeight: 'medium',
17
17
  textStyle: 'xs',
18
18
  boxShadow: 'md',
@@ -14,4 +14,5 @@ export declare const conditions: {
14
14
  parentHover: string;
15
15
  pressable: string;
16
16
  popupExpanded: string;
17
+ rowHover: string;
17
18
  };
@@ -15,4 +15,5 @@ export const conditions = defineConditions({
15
15
  parentHover: 'button:hover &, a:hover &, [role=button]:hover &',
16
16
  pressable: '&:is(a, button, [role=button])',
17
17
  popupExpanded: '&:is([aria-haspopup][aria-expanded=true], [aria-haspopup][data-expanded], [aria-haspopup][data-state=expanded])',
18
+ rowHover: 'tr:hover &, [role=row]:hover &',
18
19
  });
@@ -43,14 +43,17 @@ export const globalCss = defineGlobalStyles({
43
43
  '--overlay-effect': 'blur({blurs.lg})',
44
44
  '--backdrop-effect': 'none',
45
45
  },
46
+ '.dark *': {
47
+ '--overlay-translucency': '85%',
48
+ },
46
49
  body: {
47
50
  color: 'fg',
48
51
  bg: 'bg',
49
52
  lineHeight: '1.5',
50
53
  colorPalette: 'accent',
51
54
  },
52
- '*::placeholder': {
53
- color: 'fg.subtle',
55
+ '*::placeholder, *[data-placeholder]': {
56
+ color: 'fg.muted/90',
54
57
  },
55
58
  '*::selection': {
56
59
  bg: 'colorPalette.solid/20',
@@ -52,7 +52,9 @@ export const layerStyles = defineLayerStyles({
52
52
  position: 'absolute',
53
53
  bottom: 'var(--indicator-offset-y, 0)',
54
54
  insetInline: 'var(--indicator-offset-x, 0)',
55
- height: 'var(--indicator-thickness, 2px)',
55
+ height: 'var(--indicator-thickness, 3px)',
56
+ borderTopLeftRadius: 'var(--indicator-thickness, 3px)',
57
+ borderTopRightRadius: 'var(--indicator-thickness, 3px)',
56
58
  background: 'var(--indicator-color, var(--indicator-color-fallback))',
57
59
  },
58
60
  },
@@ -66,7 +68,9 @@ export const layerStyles = defineLayerStyles({
66
68
  position: 'absolute',
67
69
  top: 'var(--indicator-offset-y, 0)',
68
70
  insetInline: 'var(--indicator-offset-x, 0)',
69
- height: 'var(--indicator-thickness, 2px)',
71
+ height: 'var(--indicator-thickness, 3px)',
72
+ borderBottomLeftRadius: 'var(--indicator-thickness, 3px)',
73
+ borderBottomRightRadius: 'var(--indicator-thickness, 3px)',
70
74
  background: 'var(--indicator-color, var(--indicator-color-fallback))',
71
75
  },
72
76
  },
@@ -80,7 +84,9 @@ export const layerStyles = defineLayerStyles({
80
84
  position: 'absolute',
81
85
  insetInlineStart: 'var(--indicator-offset-x, 0)',
82
86
  insetBlock: 'var(--indicator-offset-y, 0)',
83
- width: 'var(--indicator-thickness, 2px)',
87
+ width: 'var(--indicator-thickness, 3px)',
88
+ borderTopLeftRadius: 'var(--indicator-thickness, 3px)',
89
+ borderBottomLeftRadius: 'var(--indicator-thickness, 3px)',
84
90
  background: 'var(--indicator-color, var(--indicator-color-fallback))',
85
91
  },
86
92
  },
@@ -94,7 +100,9 @@ export const layerStyles = defineLayerStyles({
94
100
  position: 'absolute',
95
101
  insetInlineEnd: 'var(--indicator-offset-x, 0)',
96
102
  insetBlock: 'var(--indicator-offset-y, 0)',
97
- width: 'var(--indicator-thickness, 2px)',
103
+ width: 'var(--indicator-thickness, 3px)',
104
+ borderTopRightRadius: 'var(--indicator-thickness, 3px)',
105
+ borderBottomRightRadius: 'var(--indicator-thickness, 3px)',
98
106
  background: 'var(--indicator-color, var(--indicator-color-fallback))',
99
107
  },
100
108
  },
@@ -116,7 +116,10 @@ export declare const recipes: {
116
116
  bg: "colorPalette.solid";
117
117
  color: "colorPalette.contrast";
118
118
  '--btn-shadow': "shadows.sm";
119
- boxShadow: "0 0 0 1px rgba(0,0,0,0.25) inset, 0px 2px 0px 0px rgba(255,255,255,0.2) inset, var(--btn-shadow)";
119
+ boxShadow: {
120
+ base: "0 0 0 1px rgba(0,0,0,0.25) inset, 0px 2px 0px 0px rgba(255,255,255,0.2) inset, var(--btn-shadow)";
121
+ _dark: " 0px 1px 0px 0px rgba(255,255,255,0.2) inset, var(--btn-shadow)";
122
+ };
120
123
  textShadow: "0 1px 2px rgba(0,0,0,0.3)";
121
124
  overflow: "clip";
122
125
  _after: {
@@ -394,7 +397,7 @@ export declare const recipes: {
394
397
  borderColor: "transparent";
395
398
  bg: {
396
399
  _light: "gray.100";
397
- _dark: "whiteAlpha.50";
400
+ _dark: "white/10";
398
401
  };
399
402
  };
400
403
  flushed: {
@@ -516,7 +519,7 @@ export declare const recipes: {
516
519
  skeleton: import("@chakra-ui/react").RecipeDefinition<{
517
520
  loading: {
518
521
  true: {
519
- borderRadius: "l2";
522
+ borderRadius: "panel.md";
520
523
  boxShadow: "none";
521
524
  backgroundClip: "padding-box";
522
525
  cursor: "default";
@@ -685,7 +688,7 @@ export declare const recipes: {
685
688
  };
686
689
  variant: {
687
690
  solid: {
688
- borderColor: "border";
691
+ borderColor: "border.emphasized";
689
692
  '&:is([data-state=checked], [data-state=indeterminate])': {
690
693
  bg: "colorPalette.solid";
691
694
  color: "colorPalette.contrast";
@@ -693,7 +696,7 @@ export declare const recipes: {
693
696
  };
694
697
  };
695
698
  outline: {
696
- borderColor: "border";
699
+ borderColor: "border.emphasized";
697
700
  '&:is([data-state=checked], [data-state=indeterminate])': {
698
701
  color: "colorPalette.fg";
699
702
  borderColor: "colorPalette.solid";
@@ -701,7 +704,7 @@ export declare const recipes: {
701
704
  };
702
705
  subtle: {
703
706
  bg: "colorPalette.muted";
704
- borderColor: "colorPalette.muted";
707
+ borderColor: "colorPalette.emphasized";
705
708
  '&:is([data-state=checked], [data-state=indeterminate])': {
706
709
  color: "colorPalette.fg";
707
710
  };
@@ -72,7 +72,7 @@ export const semanticColors = defineSemanticTokens.colors({
72
72
  overlay: {
73
73
  value: {
74
74
  _light: 'color-mix(in oklch, {colors.white} var(--overlay-translucency), transparent)',
75
- _dark: 'color-mix(in srgb, var(--overlay-translucency), {colors.gray.950} 100%)',
75
+ _dark: 'color-mix(in oklch, {colors.gray.800} var(--overlay-translucency), transparent)',
76
76
  },
77
77
  },
78
78
  backdrop: {
@@ -45,7 +45,7 @@ export const semanticShadows = defineSemanticTokens.shadows({
45
45
  inset: {
46
46
  value: {
47
47
  _light: 'inset 0 1px 2px 0 {black/5}',
48
- _dark: 'inset 0 1px 2px 0 {colors.gray.300/5}',
48
+ _dark: 'inset 0 -1px 2px 0 {colors.gray.300/8}, inset 0 0 0 1px {colors.gray.300/8}',
49
49
  },
50
50
  },
51
51
  });