@react-spectrum/s2 3.0.0-nightly-e7053dd8f-250108 → 3.0.0-nightly-e4497fdb6-250110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Accordion.cjs +3 -3
- package/dist/Accordion.css +2 -2
- package/dist/Accordion.mjs +3 -3
- package/dist/ActionBar.cjs +32 -32
- package/dist/ActionBar.css +34 -34
- package/dist/ActionBar.mjs +32 -32
- package/dist/ActionButton.cjs +61 -61
- package/dist/ActionButton.css +57 -57
- package/dist/ActionButton.mjs +61 -61
- package/dist/ActionButtonGroup.cjs +4 -4
- package/dist/ActionButtonGroup.css +3 -3
- package/dist/ActionButtonGroup.mjs +4 -4
- package/dist/Avatar.cjs +10 -10
- package/dist/Avatar.css +11 -11
- package/dist/Avatar.mjs +10 -10
- package/dist/AvatarGroup.cjs +97 -97
- package/dist/AvatarGroup.css +31 -31
- package/dist/AvatarGroup.mjs +97 -97
- package/dist/Badge.cjs +31 -31
- package/dist/Badge.css +33 -33
- package/dist/Badge.mjs +31 -31
- package/dist/Breadcrumbs.cjs +83 -82
- package/dist/Breadcrumbs.cjs.map +1 -1
- package/dist/Breadcrumbs.css +66 -60
- package/dist/Breadcrumbs.css.map +1 -1
- package/dist/Breadcrumbs.mjs +83 -82
- package/dist/Breadcrumbs.mjs.map +1 -1
- package/dist/Button.cjs +179 -144
- package/dist/Button.cjs.map +1 -1
- package/dist/Button.css +167 -86
- package/dist/Button.css.map +1 -1
- package/dist/Button.mjs +180 -145
- package/dist/Button.mjs.map +1 -1
- package/dist/ButtonGroup.cjs +15 -15
- package/dist/ButtonGroup.css +11 -11
- package/dist/ButtonGroup.mjs +15 -15
- package/dist/Card.cjs +163 -163
- package/dist/Card.css +118 -118
- package/dist/Card.mjs +163 -163
- package/dist/CardView.cjs +13 -13
- package/dist/CardView.css +14 -14
- package/dist/CardView.mjs +13 -13
- package/dist/CenterBaseline.cjs +1 -1
- package/dist/CenterBaseline.css +2 -2
- package/dist/CenterBaseline.mjs +1 -1
- package/dist/Checkbox.cjs +46 -46
- package/dist/Checkbox.css +44 -44
- package/dist/Checkbox.mjs +46 -46
- package/dist/CheckboxGroup.cjs +39 -39
- package/dist/CheckboxGroup.css +32 -32
- package/dist/CheckboxGroup.mjs +39 -39
- package/dist/ClearButton.cjs +5 -5
- package/dist/ClearButton.css +5 -5
- package/dist/ClearButton.mjs +5 -5
- package/dist/CloseButton.cjs +17 -15
- package/dist/CloseButton.cjs.map +1 -1
- package/dist/CloseButton.css +24 -16
- package/dist/CloseButton.css.map +1 -1
- package/dist/CloseButton.mjs +17 -15
- package/dist/CloseButton.mjs.map +1 -1
- package/dist/ColorArea.cjs +9 -9
- package/dist/ColorArea.css +9 -9
- package/dist/ColorArea.mjs +9 -9
- package/dist/ColorField.cjs +29 -29
- package/dist/ColorField.css +24 -24
- package/dist/ColorField.mjs +29 -29
- package/dist/ColorHandle.cjs +9 -9
- package/dist/ColorHandle.css +16 -16
- package/dist/ColorHandle.mjs +9 -9
- package/dist/ColorSlider.cjs +40 -40
- package/dist/ColorSlider.css +42 -42
- package/dist/ColorSlider.mjs +40 -40
- package/dist/ColorSwatch.cjs +6 -6
- package/dist/ColorSwatch.css +14 -14
- package/dist/ColorSwatch.mjs +6 -6
- package/dist/ColorSwatchPicker.cjs +12 -12
- package/dist/ColorSwatchPicker.css +32 -32
- package/dist/ColorSwatchPicker.mjs +12 -12
- package/dist/ColorWheel.cjs +14 -14
- package/dist/ColorWheel.css +14 -14
- package/dist/ColorWheel.mjs +14 -14
- package/dist/ComboBox.cjs +54 -51
- package/dist/ComboBox.cjs.map +1 -1
- package/dist/ComboBox.css +48 -48
- package/dist/ComboBox.css.map +1 -1
- package/dist/ComboBox.mjs +54 -51
- package/dist/ComboBox.mjs.map +1 -1
- package/dist/ContextualHelp.cjs +5 -5
- package/dist/ContextualHelp.css +23 -23
- package/dist/ContextualHelp.mjs +5 -5
- package/dist/CustomDialog.cjs +8 -8
- package/dist/CustomDialog.css +9 -9
- package/dist/CustomDialog.mjs +8 -8
- package/dist/Dialog.cjs +10 -10
- package/dist/Dialog.css +39 -39
- package/dist/Dialog.mjs +10 -10
- package/dist/Disclosure.cjs +53 -53
- package/dist/Disclosure.css +48 -48
- package/dist/Disclosure.mjs +53 -53
- package/dist/Divider.cjs +5 -5
- package/dist/Divider.css +5 -5
- package/dist/Divider.mjs +5 -5
- package/dist/DropZone.cjs +24 -24
- package/dist/DropZone.css +24 -24
- package/dist/DropZone.mjs +24 -24
- package/dist/Field.cjs +107 -107
- package/dist/Field.cjs.map +1 -1
- package/dist/Field.css +69 -69
- package/dist/Field.mjs +107 -107
- package/dist/Field.mjs.map +1 -1
- package/dist/Form.cjs +4 -4
- package/dist/Form.css +3 -3
- package/dist/Form.mjs +4 -4
- package/dist/FullscreenDialog.cjs +5 -5
- package/dist/FullscreenDialog.css +54 -54
- package/dist/FullscreenDialog.mjs +5 -5
- package/dist/IllustratedMessage.cjs +126 -126
- package/dist/IllustratedMessage.css +58 -58
- package/dist/IllustratedMessage.mjs +126 -126
- package/dist/Image.cjs +10 -10
- package/dist/Image.css +11 -11
- package/dist/Image.mjs +10 -10
- package/dist/InlineAlert.cjs +50 -50
- package/dist/InlineAlert.css +44 -44
- package/dist/InlineAlert.mjs +50 -50
- package/dist/Link.cjs +27 -27
- package/dist/Link.css +28 -28
- package/dist/Link.mjs +27 -27
- package/dist/Menu.cjs +292 -221
- package/dist/Menu.cjs.map +1 -1
- package/dist/Menu.css +115 -113
- package/dist/Menu.css.map +1 -1
- package/dist/Menu.mjs +292 -221
- package/dist/Menu.mjs.map +1 -1
- package/dist/Meter.cjs +51 -51
- package/dist/Meter.css +51 -51
- package/dist/Meter.mjs +51 -51
- package/dist/Modal.cjs +37 -37
- package/dist/Modal.css +35 -35
- package/dist/Modal.mjs +37 -37
- package/dist/NumberField.cjs +60 -60
- package/dist/NumberField.css +66 -66
- package/dist/NumberField.mjs +60 -60
- package/dist/Picker.cjs +117 -114
- package/dist/Picker.cjs.map +1 -1
- package/dist/Picker.css +80 -80
- package/dist/Picker.css.map +1 -1
- package/dist/Picker.mjs +117 -114
- package/dist/Picker.mjs.map +1 -1
- package/dist/Popover.cjs +40 -40
- package/dist/Popover.css +37 -37
- package/dist/Popover.mjs +40 -40
- package/dist/ProgressBar.cjs +63 -63
- package/dist/ProgressBar.css +61 -61
- package/dist/ProgressBar.mjs +63 -63
- package/dist/ProgressCircle.cjs +3 -3
- package/dist/ProgressCircle.css +2 -2
- package/dist/ProgressCircle.mjs +3 -3
- package/dist/Provider.cjs +4 -4
- package/dist/Provider.css +5 -5
- package/dist/Provider.mjs +4 -4
- package/dist/Radio.cjs +46 -46
- package/dist/Radio.css +44 -44
- package/dist/Radio.mjs +46 -46
- package/dist/RadioGroup.cjs +37 -37
- package/dist/RadioGroup.css +32 -32
- package/dist/RadioGroup.mjs +37 -37
- package/dist/SearchField.cjs +31 -31
- package/dist/SearchField.css +29 -29
- package/dist/SearchField.mjs +31 -31
- package/dist/SegmentedControl.cjs +54 -54
- package/dist/SegmentedControl.css +55 -55
- package/dist/SegmentedControl.mjs +54 -54
- package/dist/Slider.cjs +101 -101
- package/dist/Slider.css +82 -82
- package/dist/Slider.mjs +101 -101
- package/dist/StatusLight.cjs +26 -26
- package/dist/StatusLight.css +26 -26
- package/dist/StatusLight.mjs +26 -26
- package/dist/Switch.cjs +47 -47
- package/dist/Switch.css +42 -42
- package/dist/Switch.mjs +47 -47
- package/dist/TableView.cjs +137 -137
- package/dist/TableView.css +76 -76
- package/dist/TableView.mjs +137 -137
- package/dist/Tabs.cjs +60 -60
- package/dist/Tabs.css +53 -53
- package/dist/Tabs.mjs +60 -60
- package/dist/TabsPicker.cjs +69 -69
- package/dist/TabsPicker.css +62 -62
- package/dist/TabsPicker.mjs +69 -69
- package/dist/TagGroup.cjs +108 -108
- package/dist/TagGroup.css +85 -85
- package/dist/TagGroup.mjs +108 -108
- package/dist/TextField.cjs +36 -36
- package/dist/TextField.css +33 -33
- package/dist/TextField.mjs +36 -36
- package/dist/ToggleButton.cjs +3 -3
- package/dist/ToggleButton.css +7 -7
- package/dist/ToggleButton.mjs +3 -3
- package/dist/Tooltip.cjs +32 -32
- package/dist/Tooltip.css +34 -34
- package/dist/Tooltip.mjs +32 -32
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/icons/Skeleton.cjs +2 -2
- package/icons/Skeleton.css +5 -5
- package/icons/Skeleton.mjs +2 -2
- package/package.json +19 -19
- package/src/Button.tsx +107 -75
- package/src/CloseButton.tsx +4 -0
- package/src/ComboBox.tsx +2 -1
- package/src/Menu.tsx +40 -17
- package/src/Picker.tsx +2 -1
- package/style/dist/spectrum-theme.cjs +54 -5
- package/style/dist/spectrum-theme.cjs.map +1 -1
- package/style/dist/spectrum-theme.mjs +54 -5
- package/style/dist/spectrum-theme.mjs.map +1 -1
- package/style/dist/style-macro.cjs +1 -1
- package/style/dist/style-macro.cjs.map +1 -1
- package/style/dist/style-macro.mjs +1 -1
- package/style/dist/style-macro.mjs.map +1 -1
- package/style/dist/types.d.ts +10 -3
- package/style/dist/types.d.ts.map +1 -1
- package/style/spectrum-theme.ts +66 -7
- package/style/style-macro.ts +3 -3
- package/style/types.ts +1 -1
package/icons/Skeleton.mjs
CHANGED
|
@@ -81,7 +81,7 @@ function $5ad421ec19460c48$export$cb6ddd830302c2a8({ children: children }) {
|
|
|
81
81
|
// @ts-ignore - compatibility with React < 19
|
|
82
82
|
inert: "true",
|
|
83
83
|
ref: $5ad421ec19460c48$export$6b288fe07640c94c(true),
|
|
84
|
-
className: $5ad421ec19460c48$export$d2353276f167b21f + " . aa
|
|
84
|
+
className: $5ad421ec19460c48$export$d2353276f167b21f + " . aa _tb _wb _xb _yb _zb",
|
|
85
85
|
children: children
|
|
86
86
|
});
|
|
87
87
|
}
|
|
@@ -101,7 +101,7 @@ function $5ad421ec19460c48$export$6069cbe61f690103({ children: children }) {
|
|
|
101
101
|
}
|
|
102
102
|
function $5ad421ec19460c48$export$4b7803c08fe9a32b(styles) {
|
|
103
103
|
let isSkeleton = (0, $cHM3s$useContext)($5ad421ec19460c48$export$74e166679b1f49ee);
|
|
104
|
-
if (isSkeleton) return (0, $feb886035e0d4633$export$e618dc39ac9ad607)(" .
|
|
104
|
+
if (isSkeleton) return (0, $feb886035e0d4633$export$e618dc39ac9ad607)(" . _wb _xb _yb _zb", styles);
|
|
105
105
|
return styles || '';
|
|
106
106
|
}
|
|
107
107
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-spectrum/s2",
|
|
3
|
-
"version": "3.0.0-nightly-
|
|
3
|
+
"version": "3.0.0-nightly-e4497fdb6-250110",
|
|
4
4
|
"description": "Spectrum 2 UI components in React",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -57,25 +57,25 @@
|
|
|
57
57
|
"src"
|
|
58
58
|
],
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@react-aria/collections": "3.0.0-nightly-
|
|
61
|
-
"@react-aria/i18n": "3.0.0-nightly-
|
|
62
|
-
"@react-aria/interactions": "3.0.0-nightly-
|
|
63
|
-
"@react-aria/live-announcer": "3.0.0-nightly-
|
|
64
|
-
"@react-aria/utils": "3.0.0-nightly-
|
|
65
|
-
"@react-spectrum/utils": "3.0.0-nightly-
|
|
66
|
-
"@react-stately/layout": "3.0.0-nightly-
|
|
67
|
-
"@react-stately/utils": "3.0.0-nightly-
|
|
68
|
-
"@react-stately/virtualizer": "3.0.0-nightly-
|
|
69
|
-
"@react-types/color": "3.0.0-nightly-
|
|
70
|
-
"@react-types/dialog": "3.0.0-nightly-
|
|
71
|
-
"@react-types/grid": "3.0.0-nightly-
|
|
72
|
-
"@react-types/provider": "3.0.0-nightly-
|
|
73
|
-
"@react-types/shared": "3.0.0-nightly-
|
|
74
|
-
"@react-types/table": "3.0.0-nightly-
|
|
75
|
-
"@react-types/textfield": "3.0.0-nightly-
|
|
60
|
+
"@react-aria/collections": "3.0.0-nightly-e4497fdb6-250110",
|
|
61
|
+
"@react-aria/i18n": "3.0.0-nightly-e4497fdb6-250110",
|
|
62
|
+
"@react-aria/interactions": "3.0.0-nightly-e4497fdb6-250110",
|
|
63
|
+
"@react-aria/live-announcer": "3.0.0-nightly-e4497fdb6-250110",
|
|
64
|
+
"@react-aria/utils": "3.0.0-nightly-e4497fdb6-250110",
|
|
65
|
+
"@react-spectrum/utils": "3.0.0-nightly-e4497fdb6-250110",
|
|
66
|
+
"@react-stately/layout": "3.0.0-nightly-e4497fdb6-250110",
|
|
67
|
+
"@react-stately/utils": "3.0.0-nightly-e4497fdb6-250110",
|
|
68
|
+
"@react-stately/virtualizer": "3.0.0-nightly-e4497fdb6-250110",
|
|
69
|
+
"@react-types/color": "3.0.0-nightly-e4497fdb6-250110",
|
|
70
|
+
"@react-types/dialog": "3.0.0-nightly-e4497fdb6-250110",
|
|
71
|
+
"@react-types/grid": "3.0.0-nightly-e4497fdb6-250110",
|
|
72
|
+
"@react-types/provider": "3.0.0-nightly-e4497fdb6-250110",
|
|
73
|
+
"@react-types/shared": "3.0.0-nightly-e4497fdb6-250110",
|
|
74
|
+
"@react-types/table": "3.0.0-nightly-e4497fdb6-250110",
|
|
75
|
+
"@react-types/textfield": "3.0.0-nightly-e4497fdb6-250110",
|
|
76
76
|
"csstype": "^3.0.2",
|
|
77
|
-
"react-aria": "3.0.0-nightly-
|
|
78
|
-
"react-aria-components": "3.0.0-nightly-
|
|
77
|
+
"react-aria": "3.0.0-nightly-e4497fdb6-250110",
|
|
78
|
+
"react-aria-components": "3.0.0-nightly-e4497fdb6-250110"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
81
|
"@testing-library/react": "^15.0.7",
|
package/src/Button.tsx
CHANGED
|
@@ -138,24 +138,6 @@ const button = style<ButtonRenderProps & ButtonStyleProps & {isStaticColor: bool
|
|
|
138
138
|
isDisabled: 'GrayText'
|
|
139
139
|
}
|
|
140
140
|
},
|
|
141
|
-
backgroundImage: {
|
|
142
|
-
variant: {
|
|
143
|
-
premium: {
|
|
144
|
-
default: linearGradient('96deg', ['fuchsia-900', 0], ['indigo-900', 66], ['blue-900', 100]),
|
|
145
|
-
isHovered: linearGradient('96deg', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100]),
|
|
146
|
-
isPressed: linearGradient('96deg', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100]),
|
|
147
|
-
isFocusVisible: linearGradient('96deg', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100])
|
|
148
|
-
},
|
|
149
|
-
genai: {
|
|
150
|
-
default: linearGradient('96deg', ['red-900', 0], ['magenta-900', 33], ['indigo-900', 100]),
|
|
151
|
-
isHovered: linearGradient('96deg', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100]),
|
|
152
|
-
isPressed: linearGradient('96deg', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100]),
|
|
153
|
-
isFocusVisible: linearGradient('96deg', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100])
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
isDisabled: 'none',
|
|
157
|
-
forcedColors: 'none'
|
|
158
|
-
},
|
|
159
141
|
backgroundColor: {
|
|
160
142
|
fillStyle: {
|
|
161
143
|
fill: {
|
|
@@ -296,6 +278,42 @@ const button = style<ButtonRenderProps & ButtonStyleProps & {isStaticColor: bool
|
|
|
296
278
|
disableTapHighlight: true
|
|
297
279
|
}, getAllowedOverrides());
|
|
298
280
|
|
|
281
|
+
// Put the gradient background on a separate element from the button to work around a Safari
|
|
282
|
+
// bug where transitions of custom properties cause layout flickering if any properties use rems. 🤣
|
|
283
|
+
// https://bugs.webkit.org/show_bug.cgi?id=285622
|
|
284
|
+
const gradient = style({
|
|
285
|
+
position: 'absolute',
|
|
286
|
+
inset: 0,
|
|
287
|
+
zIndex: -1,
|
|
288
|
+
transition: 'default',
|
|
289
|
+
borderRadius: '[inherit]',
|
|
290
|
+
backgroundImage: {
|
|
291
|
+
variant: {
|
|
292
|
+
premium: {
|
|
293
|
+
default: linearGradient('to bottom right', ['fuchsia-900', 0], ['indigo-900', 66], ['blue-900', 100]),
|
|
294
|
+
isHovered: linearGradient('to bottom right', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100]),
|
|
295
|
+
isPressed: linearGradient('to bottom right', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100]),
|
|
296
|
+
isFocusVisible: linearGradient('to bottom right', ['fuchsia-1000', 0], ['indigo-1000', 66], ['blue-1000', 100])
|
|
297
|
+
},
|
|
298
|
+
genai: {
|
|
299
|
+
default: linearGradient('to bottom right', ['red-900', 0], ['magenta-900', 33], ['indigo-900', 100]),
|
|
300
|
+
isHovered: linearGradient('to bottom right', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100]),
|
|
301
|
+
isPressed: linearGradient('to bottom right', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100]),
|
|
302
|
+
isFocusVisible: linearGradient('to bottom right', ['red-1000', 0], ['magenta-1000', 33], ['indigo-1000', 100])
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
isDisabled: 'none',
|
|
306
|
+
forcedColors: 'none'
|
|
307
|
+
},
|
|
308
|
+
// Force gradient colors to remain static between light and dark theme.
|
|
309
|
+
colorScheme: {
|
|
310
|
+
variant: {
|
|
311
|
+
premium: 'light',
|
|
312
|
+
genai: 'light'
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
|
|
299
317
|
/**
|
|
300
318
|
* Buttons allow users to perform an action.
|
|
301
319
|
* They have multiple styles for various needs, and are ideal for calling attention to
|
|
@@ -350,65 +368,79 @@ export const Button = forwardRef(function Button(props: ButtonProps, ref: Focusa
|
|
|
350
368
|
staticColor,
|
|
351
369
|
isStaticColor: !!staticColor
|
|
352
370
|
}, props.styles)}>
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
371
|
+
{(renderProps) => (<>
|
|
372
|
+
{variant === 'genai' || variant === 'premium'
|
|
373
|
+
? (
|
|
374
|
+
<span
|
|
375
|
+
className={gradient({
|
|
376
|
+
...renderProps,
|
|
377
|
+
// Retain hover styles when an overlay is open.
|
|
378
|
+
isHovered: renderProps.isHovered || overlayTriggerState?.isOpen || false,
|
|
379
|
+
isDisabled: renderProps.isDisabled || isProgressVisible,
|
|
380
|
+
variant
|
|
381
|
+
})} />
|
|
382
|
+
)
|
|
383
|
+
: null}
|
|
384
|
+
<Provider
|
|
385
|
+
values={[
|
|
386
|
+
[SkeletonContext, null],
|
|
387
|
+
[TextContext, {
|
|
388
|
+
styles: style({
|
|
389
|
+
paddingY: '--labelPadding',
|
|
390
|
+
order: 1,
|
|
391
|
+
opacity: {
|
|
392
|
+
default: 1,
|
|
393
|
+
isProgressVisible: 0
|
|
394
|
+
}
|
|
395
|
+
})({isProgressVisible}),
|
|
396
|
+
// @ts-ignore data-attributes allowed on all JSX elements, but adding to DOMProps has been problematic in the past
|
|
397
|
+
'data-rsp-slot': 'text'
|
|
398
|
+
}],
|
|
399
|
+
[IconContext, {
|
|
400
|
+
render: centerBaseline({slot: 'icon', styles: style({order: 0})}),
|
|
401
|
+
styles: style({
|
|
402
|
+
size: fontRelative(20),
|
|
403
|
+
marginStart: '--iconMargin',
|
|
404
|
+
flexShrink: 0,
|
|
405
|
+
opacity: {
|
|
406
|
+
default: 1,
|
|
407
|
+
isProgressVisible: 0
|
|
408
|
+
}
|
|
409
|
+
})({isProgressVisible})
|
|
410
|
+
}]
|
|
411
|
+
]}>
|
|
412
|
+
{typeof props.children === 'string' ? <Text>{props.children}</Text> : props.children}
|
|
413
|
+
{isPending &&
|
|
414
|
+
<div
|
|
415
|
+
className={style({
|
|
416
|
+
position: 'absolute',
|
|
417
|
+
top: '[50%]',
|
|
418
|
+
left: '[50%]',
|
|
419
|
+
transform: 'translate(-50%, -50%)',
|
|
420
|
+
opacity: {
|
|
421
|
+
default: 0,
|
|
422
|
+
isProgressVisible: 1
|
|
423
|
+
}
|
|
424
|
+
})({isProgressVisible, isPending})}>
|
|
425
|
+
<ProgressCircle
|
|
426
|
+
isIndeterminate
|
|
427
|
+
aria-label={stringFormatter.format('button.pending')}
|
|
428
|
+
size="S"
|
|
429
|
+
staticColor={staticColor}
|
|
430
|
+
styles={style({
|
|
401
431
|
size: {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
432
|
+
size: {
|
|
433
|
+
S: 14,
|
|
434
|
+
M: 18,
|
|
435
|
+
L: 20,
|
|
436
|
+
XL: 24
|
|
437
|
+
}
|
|
406
438
|
}
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
439
|
+
})({size})} />
|
|
440
|
+
</div>
|
|
441
|
+
}
|
|
442
|
+
</Provider>
|
|
443
|
+
</>)}
|
|
412
444
|
</RACButton>
|
|
413
445
|
);
|
|
414
446
|
});
|
package/src/CloseButton.tsx
CHANGED
package/src/ComboBox.tsx
CHANGED
|
@@ -379,11 +379,12 @@ export function ComboBoxItem(props: ComboBoxItemProps) {
|
|
|
379
379
|
|
|
380
380
|
export interface ComboBoxSectionProps<T extends object> extends SectionProps<T> {}
|
|
381
381
|
export function ComboBoxSection<T extends object>(props: ComboBoxSectionProps<T>) {
|
|
382
|
+
let {size} = useContext(InternalComboboxContext);
|
|
382
383
|
return (
|
|
383
384
|
<>
|
|
384
385
|
<AriaListBoxSection
|
|
385
386
|
{...props}
|
|
386
|
-
className={section}>
|
|
387
|
+
className={section({size})}>
|
|
387
388
|
{props.children}
|
|
388
389
|
</AriaListBoxSection>
|
|
389
390
|
<Divider />
|
package/src/Menu.tsx
CHANGED
|
@@ -81,22 +81,26 @@ export interface MenuProps<T> extends Omit<AriaMenuProps<T>, 'children' | 'style
|
|
|
81
81
|
/**
|
|
82
82
|
* The contents of the collection.
|
|
83
83
|
*/
|
|
84
|
-
children?: ReactNode | ((item: T) => ReactNode)
|
|
84
|
+
children?: ReactNode | ((item: T) => ReactNode),
|
|
85
|
+
/** Hides the default link out icons on menu items that open links in a new tab. */
|
|
86
|
+
hideLinkOutIcon?: boolean
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
export const MenuContext = createContext<ContextValue<MenuProps<any>, DOMRefValue<HTMLDivElement>>>(null);
|
|
88
90
|
|
|
91
|
+
const menuItemGrid = {
|
|
92
|
+
size: {
|
|
93
|
+
S: [edgeToText(24), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(24)],
|
|
94
|
+
M: [edgeToText(32), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(32)],
|
|
95
|
+
L: [edgeToText(40), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(40)],
|
|
96
|
+
XL: [edgeToText(48), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(48)]
|
|
97
|
+
}
|
|
98
|
+
} as const;
|
|
99
|
+
|
|
89
100
|
export let menu = style({
|
|
90
101
|
outlineStyle: 'none',
|
|
91
102
|
display: 'grid',
|
|
92
|
-
gridTemplateColumns:
|
|
93
|
-
size: {
|
|
94
|
-
S: [edgeToText(24), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(24)],
|
|
95
|
-
M: [edgeToText(32), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(32)],
|
|
96
|
-
L: [edgeToText(40), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(40)],
|
|
97
|
-
XL: [edgeToText(48), 'auto', 'auto', 'minmax(0, 1fr)', 'auto', 'auto', 'auto', edgeToText(48)]
|
|
98
|
-
}
|
|
99
|
-
},
|
|
103
|
+
gridTemplateColumns: menuItemGrid,
|
|
100
104
|
boxSizing: 'border-box',
|
|
101
105
|
maxHeight: '[inherit]',
|
|
102
106
|
overflow: {
|
|
@@ -121,7 +125,7 @@ export let section = style({
|
|
|
121
125
|
'. checkmark icon label value keyboard descriptor .',
|
|
122
126
|
'. . . description . . . .'
|
|
123
127
|
],
|
|
124
|
-
gridTemplateColumns:
|
|
128
|
+
gridTemplateColumns: menuItemGrid
|
|
125
129
|
});
|
|
126
130
|
|
|
127
131
|
export let sectionHeader = style<{size?: 'S' | 'M' | 'L' | 'XL'}>({
|
|
@@ -310,7 +314,12 @@ let descriptor = style({
|
|
|
310
314
|
}
|
|
311
315
|
});
|
|
312
316
|
|
|
313
|
-
let InternalMenuContext = createContext<{size: 'S' | 'M' | 'L' | 'XL', isSubmenu: boolean
|
|
317
|
+
let InternalMenuContext = createContext<{size: 'S' | 'M' | 'L' | 'XL', isSubmenu: boolean, hideLinkOutIcon: boolean}>({
|
|
318
|
+
size: 'M',
|
|
319
|
+
isSubmenu: false,
|
|
320
|
+
hideLinkOutIcon: false
|
|
321
|
+
});
|
|
322
|
+
|
|
314
323
|
let InternalMenuTriggerContext = createContext<Omit<MenuTriggerProps, 'children'> | null>(null);
|
|
315
324
|
|
|
316
325
|
/**
|
|
@@ -324,7 +333,8 @@ export const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T
|
|
|
324
333
|
size = ctxSize,
|
|
325
334
|
UNSAFE_style,
|
|
326
335
|
UNSAFE_className,
|
|
327
|
-
styles
|
|
336
|
+
styles,
|
|
337
|
+
hideLinkOutIcon = false
|
|
328
338
|
} = props;
|
|
329
339
|
let ctx = useContext(InternalMenuTriggerContext);
|
|
330
340
|
let {align = 'start', direction = 'bottom', shouldFlip} = ctx ?? {};
|
|
@@ -349,7 +359,7 @@ export const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T
|
|
|
349
359
|
}
|
|
350
360
|
|
|
351
361
|
let content = (
|
|
352
|
-
<InternalMenuContext.Provider value={{size, isSubmenu: true}}>
|
|
362
|
+
<InternalMenuContext.Provider value={{size, isSubmenu: true, hideLinkOutIcon}}>
|
|
353
363
|
<Provider
|
|
354
364
|
values={[
|
|
355
365
|
[HeaderContext, {styles: sectionHeader({size})}],
|
|
@@ -417,11 +427,12 @@ export function Divider(props: SeparatorProps) {
|
|
|
417
427
|
export interface MenuSectionProps<T extends object> extends AriaMenuSectionProps<T> {}
|
|
418
428
|
export function MenuSection<T extends object>(props: MenuSectionProps<T>) {
|
|
419
429
|
// remember, context doesn't work if it's around Section nor inside
|
|
430
|
+
let {size} = useContext(InternalMenuContext);
|
|
420
431
|
return (
|
|
421
432
|
<>
|
|
422
433
|
<AriaMenuSection
|
|
423
434
|
{...props}
|
|
424
|
-
className={section}>
|
|
435
|
+
className={section({size})}>
|
|
425
436
|
{props.children}
|
|
426
437
|
</AriaMenuSection>
|
|
427
438
|
<Divider />
|
|
@@ -454,7 +465,7 @@ export function MenuItem(props: MenuItemProps) {
|
|
|
454
465
|
let ref = useRef(null);
|
|
455
466
|
let isLink = props.href != null;
|
|
456
467
|
let isLinkOut = isLink && props.target === '_blank';
|
|
457
|
-
let {size} = useContext(InternalMenuContext);
|
|
468
|
+
let {size, hideLinkOutIcon} = useContext(InternalMenuContext);
|
|
458
469
|
let textValue = props.textValue || (typeof props.children === 'string' ? props.children : undefined);
|
|
459
470
|
let {direction} = useLocale();
|
|
460
471
|
return (
|
|
@@ -494,13 +505,25 @@ export function MenuItem(props: MenuItemProps) {
|
|
|
494
505
|
</div>
|
|
495
506
|
)}
|
|
496
507
|
{typeof children === 'string' ? <Text slot="label">{children}</Text> : children}
|
|
497
|
-
{isLinkOut &&
|
|
508
|
+
{isLinkOut && !hideLinkOutIcon && (
|
|
509
|
+
<div slot="descriptor" className={descriptor}>
|
|
510
|
+
<LinkOutIcon
|
|
511
|
+
size={linkIconSize[size]}
|
|
512
|
+
className={style({
|
|
513
|
+
scaleX: {
|
|
514
|
+
direction: {
|
|
515
|
+
rtl: -1
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
})({direction})} />
|
|
519
|
+
</div>
|
|
520
|
+
)}
|
|
498
521
|
{renderProps.hasSubmenu && (
|
|
499
522
|
<div slot="descriptor" className={descriptor}>
|
|
500
523
|
<ChevronRightIcon
|
|
501
524
|
size={size}
|
|
502
525
|
className={style({
|
|
503
|
-
|
|
526
|
+
scaleX: {
|
|
504
527
|
direction: {
|
|
505
528
|
rtl: -1
|
|
506
529
|
}
|
package/src/Picker.tsx
CHANGED
|
@@ -464,11 +464,12 @@ function DefaultProvider({context, value, children}: {context: React.Context<any
|
|
|
464
464
|
|
|
465
465
|
export interface PickerSectionProps<T extends object> extends SectionProps<T> {}
|
|
466
466
|
export function PickerSection<T extends object>(props: PickerSectionProps<T>) {
|
|
467
|
+
let {size} = useContext(InternalPickerContext);
|
|
467
468
|
return (
|
|
468
469
|
<>
|
|
469
470
|
<AriaListBoxSection
|
|
470
471
|
{...props}
|
|
471
|
-
className={section}>
|
|
472
|
+
className={section({size})}>
|
|
472
473
|
{props.children}
|
|
473
474
|
</AriaListBoxSection>
|
|
474
475
|
<Divider />
|
|
@@ -492,7 +492,24 @@ function $7dddb03c6ef7d79c$export$9b476054b78b89cd(a, b, percent) {
|
|
|
492
492
|
return `[color-mix(in srgb, ${$7dddb03c6ef7d79c$var$parseColor(a)}, ${$7dddb03c6ef7d79c$var$parseColor(b)} ${percent}%)]`;
|
|
493
493
|
}
|
|
494
494
|
function $7dddb03c6ef7d79c$export$46def8197cf4dd4c(angle, ...tokens) {
|
|
495
|
-
|
|
495
|
+
// Generate @property rules for each gradient stop color. This allows the gradient to be animated.
|
|
496
|
+
let propertyDefinitions = [];
|
|
497
|
+
for(let i = 0; i < tokens.length; i++)propertyDefinitions.push(`@property --g${i} {
|
|
498
|
+
syntax: '<color>';
|
|
499
|
+
initial-value: #0000;
|
|
500
|
+
inherits: false;
|
|
501
|
+
}`);
|
|
502
|
+
if (this && typeof this.addAsset === 'function') this.addAsset({
|
|
503
|
+
type: 'css',
|
|
504
|
+
content: propertyDefinitions.join('\n\n')
|
|
505
|
+
});
|
|
506
|
+
return [
|
|
507
|
+
{
|
|
508
|
+
type: 'linear-gradient',
|
|
509
|
+
angle: angle,
|
|
510
|
+
stops: tokens
|
|
511
|
+
}
|
|
512
|
+
];
|
|
496
513
|
}
|
|
497
514
|
function $7dddb03c6ef7d79c$var$generateSpacing(px) {
|
|
498
515
|
let res = {};
|
|
@@ -671,8 +688,10 @@ let $7dddb03c6ef7d79c$var$gridTrackSize = (value)=>{
|
|
|
671
688
|
return value in $7dddb03c6ef7d79c$var$baseSpacing ? $7dddb03c6ef7d79c$var$baseSpacing[value] : value;
|
|
672
689
|
};
|
|
673
690
|
const $7dddb03c6ef7d79c$var$transitionProperty = {
|
|
674
|
-
|
|
675
|
-
|
|
691
|
+
// var(--gp) is generated by the backgroundImage property when setting a gradient.
|
|
692
|
+
// It includes a list of all of the custom properties used for each color stop.
|
|
693
|
+
default: 'color, background-color, var(--gp), border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, translate, scale, rotate, filter, backdrop-filter',
|
|
694
|
+
colors: 'color, background-color, var(--gp), border-color, text-decoration-color, fill, stroke',
|
|
676
695
|
opacity: 'opacity',
|
|
677
696
|
shadow: 'box-shadow',
|
|
678
697
|
transform: 'transform, translate, scale, rotate',
|
|
@@ -1147,7 +1166,14 @@ const $7dddb03c6ef7d79c$export$1d567c320f4763bc = (0, $b3643cb9d2948e30$exports.
|
|
|
1147
1166
|
rotate: (0, $b3643cb9d2948e30$exports.createArbitraryProperty)((value, property)=>({
|
|
1148
1167
|
[property]: typeof value === 'number' ? `${value}deg` : value
|
|
1149
1168
|
})),
|
|
1150
|
-
|
|
1169
|
+
scaleX: (0, $b3643cb9d2948e30$exports.createArbitraryProperty)((value)=>({
|
|
1170
|
+
'--scaleX': value,
|
|
1171
|
+
scale: 'var(--scaleX, 1) var(--scaleY, 1)'
|
|
1172
|
+
})),
|
|
1173
|
+
scaleY: (0, $b3643cb9d2948e30$exports.createArbitraryProperty)((value)=>({
|
|
1174
|
+
'--scaleY': value,
|
|
1175
|
+
scale: 'var(--scaleX, 1) var(--scaleY, 1)'
|
|
1176
|
+
})),
|
|
1151
1177
|
transform: (0, $b3643cb9d2948e30$exports.createArbitraryProperty)(),
|
|
1152
1178
|
position: [
|
|
1153
1179
|
'absolute',
|
|
@@ -1336,7 +1362,26 @@ const $7dddb03c6ef7d79c$export$1d567c320f4763bc = (0, $b3643cb9d2948e30$exports.
|
|
|
1336
1362
|
'dark',
|
|
1337
1363
|
'light dark'
|
|
1338
1364
|
],
|
|
1339
|
-
backgroundImage: (0, $b3643cb9d2948e30$exports.createArbitraryProperty)()
|
|
1365
|
+
backgroundImage: (0, $b3643cb9d2948e30$exports.createArbitraryProperty)((value, property)=>{
|
|
1366
|
+
if (typeof value === 'string') return {
|
|
1367
|
+
[property]: value
|
|
1368
|
+
};
|
|
1369
|
+
else if (Array.isArray(value) && value[0]?.type === 'linear-gradient') {
|
|
1370
|
+
let values = {
|
|
1371
|
+
[property]: `linear-gradient(${value[0].angle}, ${value[0].stops.map(([, stop], i)=>`var(--g${i}) ${stop}%`)})`
|
|
1372
|
+
};
|
|
1373
|
+
// Create a CSS var for each color stop so the gradient can be transitioned.
|
|
1374
|
+
// These are registered via @property in the `linearGradient` macro.
|
|
1375
|
+
let properties = [];
|
|
1376
|
+
value[0].stops.forEach(([color], i)=>{
|
|
1377
|
+
properties.push(`--g${i}`);
|
|
1378
|
+
values[`--g${i}`] = $7dddb03c6ef7d79c$var$parseColor(color);
|
|
1379
|
+
});
|
|
1380
|
+
// This is used by transition-property so we automatically transition all of the color stops.
|
|
1381
|
+
values['--gp'] = properties.join(', ');
|
|
1382
|
+
return values;
|
|
1383
|
+
} else throw new Error('Unexpected backgroundImage value: ' + JSON.stringify(value));
|
|
1384
|
+
}),
|
|
1340
1385
|
// TODO: do we need separate x and y properties?
|
|
1341
1386
|
backgroundPosition: [
|
|
1342
1387
|
'bottom',
|
|
@@ -1908,6 +1953,10 @@ const $7dddb03c6ef7d79c$export$1d567c320f4763bc = (0, $b3643cb9d2948e30$exports.
|
|
|
1908
1953
|
'translateX',
|
|
1909
1954
|
'translateY'
|
|
1910
1955
|
],
|
|
1956
|
+
scale: [
|
|
1957
|
+
'scaleX',
|
|
1958
|
+
'scaleY'
|
|
1959
|
+
],
|
|
1911
1960
|
inset: [
|
|
1912
1961
|
'top',
|
|
1913
1962
|
'bottom',
|