@react-spectrum/s2 3.0.0-nightly-5ae234603-240925 → 3.0.0-nightly-a626c2596-240926
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/Button.cjs +5 -1
- package/dist/Button.cjs.map +1 -1
- package/dist/Button.css.map +1 -1
- package/dist/Button.mjs +5 -1
- package/dist/Button.mjs.map +1 -1
- package/dist/Card.cjs +1 -1
- package/dist/Card.cjs.map +1 -1
- package/dist/Card.css.map +1 -1
- package/dist/Card.mjs +1 -1
- package/dist/Card.mjs.map +1 -1
- package/dist/Checkbox.cjs +4 -1
- package/dist/Checkbox.cjs.map +1 -1
- package/dist/Checkbox.css +4 -0
- package/dist/Checkbox.css.map +1 -1
- package/dist/Checkbox.mjs +4 -1
- package/dist/Checkbox.mjs.map +1 -1
- package/dist/ComboBox.cjs +3 -0
- package/dist/ComboBox.cjs.map +1 -1
- package/dist/ComboBox.css.map +1 -1
- package/dist/ComboBox.mjs +3 -0
- package/dist/ComboBox.mjs.map +1 -1
- package/dist/Content.cjs +0 -2
- package/dist/Content.cjs.map +1 -1
- package/dist/Content.mjs +1 -2
- package/dist/Content.mjs.map +1 -1
- package/dist/Dialog.cjs +7 -5
- package/dist/Dialog.cjs.map +1 -1
- package/dist/Dialog.css.map +1 -1
- package/dist/Dialog.mjs +8 -6
- package/dist/Dialog.mjs.map +1 -1
- package/dist/MoveHorizontalCircleTableWidget.cjs +33 -0
- package/dist/MoveHorizontalCircleTableWidget.cjs.map +1 -0
- package/dist/MoveHorizontalCircleTableWidget.mjs +28 -0
- package/dist/MoveHorizontalCircleTableWidget.mjs.map +1 -0
- package/dist/Picker.cjs +3 -0
- package/dist/Picker.cjs.map +1 -1
- package/dist/Picker.css.map +1 -1
- package/dist/Picker.mjs +3 -0
- package/dist/Picker.mjs.map +1 -1
- package/dist/Popover.cjs +1 -0
- package/dist/Popover.cjs.map +1 -1
- package/dist/Popover.css +4 -0
- package/dist/Popover.css.map +1 -1
- package/dist/Popover.mjs +1 -0
- package/dist/Popover.mjs.map +1 -1
- package/dist/Table.cjs +1093 -0
- package/dist/Table.cjs.map +1 -0
- package/dist/Table.css +821 -0
- package/dist/Table.css.map +1 -0
- package/dist/Table.mjs +1083 -0
- package/dist/Table.mjs.map +1 -0
- package/dist/TagGroup.cjs +5 -3
- package/dist/TagGroup.cjs.map +1 -1
- package/dist/TagGroup.css.map +1 -1
- package/dist/TagGroup.mjs +5 -3
- package/dist/TagGroup.mjs.map +1 -1
- package/dist/ar-AE.cjs +5 -0
- package/dist/ar-AE.cjs.map +1 -1
- package/dist/ar-AE.mjs +5 -0
- package/dist/ar-AE.mjs.map +1 -1
- package/dist/bg-BG.cjs +5 -0
- package/dist/bg-BG.cjs.map +1 -1
- package/dist/bg-BG.mjs +5 -0
- package/dist/bg-BG.mjs.map +1 -1
- package/dist/cs-CZ.cjs +5 -0
- package/dist/cs-CZ.cjs.map +1 -1
- package/dist/cs-CZ.mjs +5 -0
- package/dist/cs-CZ.mjs.map +1 -1
- package/dist/da-DK.cjs +5 -0
- package/dist/da-DK.cjs.map +1 -1
- package/dist/da-DK.mjs +5 -0
- package/dist/da-DK.mjs.map +1 -1
- package/dist/de-DE.cjs +5 -0
- package/dist/de-DE.cjs.map +1 -1
- package/dist/de-DE.mjs +5 -0
- package/dist/de-DE.mjs.map +1 -1
- package/dist/el-GR.cjs +5 -0
- package/dist/el-GR.cjs.map +1 -1
- package/dist/el-GR.mjs +5 -0
- package/dist/el-GR.mjs.map +1 -1
- package/dist/en-US.cjs +5 -0
- package/dist/en-US.cjs.map +1 -1
- package/dist/en-US.mjs +5 -0
- package/dist/en-US.mjs.map +1 -1
- package/dist/es-ES.cjs +5 -0
- package/dist/es-ES.cjs.map +1 -1
- package/dist/es-ES.mjs +5 -0
- package/dist/es-ES.mjs.map +1 -1
- package/dist/et-EE.cjs +5 -0
- package/dist/et-EE.cjs.map +1 -1
- package/dist/et-EE.mjs +5 -0
- package/dist/et-EE.mjs.map +1 -1
- package/dist/fi-FI.cjs +5 -0
- package/dist/fi-FI.cjs.map +1 -1
- package/dist/fi-FI.mjs +5 -0
- package/dist/fi-FI.mjs.map +1 -1
- package/dist/fr-FR.cjs +5 -0
- package/dist/fr-FR.cjs.map +1 -1
- package/dist/fr-FR.mjs +5 -0
- package/dist/fr-FR.mjs.map +1 -1
- package/dist/he-IL.cjs +5 -0
- package/dist/he-IL.cjs.map +1 -1
- package/dist/he-IL.mjs +5 -0
- package/dist/he-IL.mjs.map +1 -1
- package/dist/hr-HR.cjs +5 -0
- package/dist/hr-HR.cjs.map +1 -1
- package/dist/hr-HR.mjs +5 -0
- package/dist/hr-HR.mjs.map +1 -1
- package/dist/hu-HU.cjs +5 -0
- package/dist/hu-HU.cjs.map +1 -1
- package/dist/hu-HU.mjs +5 -0
- package/dist/hu-HU.mjs.map +1 -1
- package/dist/it-IT.cjs +5 -0
- package/dist/it-IT.cjs.map +1 -1
- package/dist/it-IT.mjs +5 -0
- package/dist/it-IT.mjs.map +1 -1
- package/dist/ja-JP.cjs +5 -0
- package/dist/ja-JP.cjs.map +1 -1
- package/dist/ja-JP.mjs +5 -0
- package/dist/ja-JP.mjs.map +1 -1
- package/dist/ko-KR.cjs +5 -0
- package/dist/ko-KR.cjs.map +1 -1
- package/dist/ko-KR.mjs +5 -0
- package/dist/ko-KR.mjs.map +1 -1
- package/dist/lt-LT.cjs +5 -0
- package/dist/lt-LT.cjs.map +1 -1
- package/dist/lt-LT.mjs +5 -0
- package/dist/lt-LT.mjs.map +1 -1
- package/dist/lv-LV.cjs +5 -0
- package/dist/lv-LV.cjs.map +1 -1
- package/dist/lv-LV.mjs +5 -0
- package/dist/lv-LV.mjs.map +1 -1
- package/dist/main.cjs +8 -0
- package/dist/main.cjs.map +1 -1
- package/dist/module.mjs +3 -1
- package/dist/module.mjs.map +1 -1
- package/dist/nb-NO.cjs +5 -0
- package/dist/nb-NO.cjs.map +1 -1
- package/dist/nb-NO.mjs +5 -0
- package/dist/nb-NO.mjs.map +1 -1
- package/dist/nl-NL.cjs +5 -0
- package/dist/nl-NL.cjs.map +1 -1
- package/dist/nl-NL.mjs +5 -0
- package/dist/nl-NL.mjs.map +1 -1
- package/dist/pl-PL.cjs +5 -0
- package/dist/pl-PL.cjs.map +1 -1
- package/dist/pl-PL.mjs +5 -0
- package/dist/pl-PL.mjs.map +1 -1
- package/dist/pt-BR.cjs +5 -0
- package/dist/pt-BR.cjs.map +1 -1
- package/dist/pt-BR.mjs +5 -0
- package/dist/pt-BR.mjs.map +1 -1
- package/dist/pt-PT.cjs +5 -0
- package/dist/pt-PT.cjs.map +1 -1
- package/dist/pt-PT.mjs +5 -0
- package/dist/pt-PT.mjs.map +1 -1
- package/dist/ro-RO.cjs +5 -0
- package/dist/ro-RO.cjs.map +1 -1
- package/dist/ro-RO.mjs +5 -0
- package/dist/ro-RO.mjs.map +1 -1
- package/dist/ru-RU.cjs +5 -0
- package/dist/ru-RU.cjs.map +1 -1
- package/dist/ru-RU.mjs +5 -0
- package/dist/ru-RU.mjs.map +1 -1
- package/dist/sk-SK.cjs +5 -0
- package/dist/sk-SK.cjs.map +1 -1
- package/dist/sk-SK.mjs +5 -0
- package/dist/sk-SK.mjs.map +1 -1
- package/dist/sl-SI.cjs +5 -0
- package/dist/sl-SI.cjs.map +1 -1
- package/dist/sl-SI.mjs +5 -0
- package/dist/sl-SI.mjs.map +1 -1
- package/dist/sr-SP.cjs +5 -0
- package/dist/sr-SP.cjs.map +1 -1
- package/dist/sr-SP.mjs +5 -0
- package/dist/sr-SP.mjs.map +1 -1
- package/dist/sv-SE.cjs +5 -0
- package/dist/sv-SE.cjs.map +1 -1
- package/dist/sv-SE.mjs +5 -0
- package/dist/sv-SE.mjs.map +1 -1
- package/dist/tr-TR.cjs +5 -0
- package/dist/tr-TR.cjs.map +1 -1
- package/dist/tr-TR.mjs +5 -0
- package/dist/tr-TR.mjs.map +1 -1
- package/dist/types.d.ts +90 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/uk-UA.cjs +5 -0
- package/dist/uk-UA.cjs.map +1 -1
- package/dist/uk-UA.mjs +5 -0
- package/dist/uk-UA.mjs.map +1 -1
- package/dist/utils.cjs +30 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.mjs +25 -0
- package/dist/utils.mjs.map +1 -0
- package/dist/zh-CN.cjs +5 -0
- package/dist/zh-CN.cjs.map +1 -1
- package/dist/zh-CN.mjs +5 -0
- package/dist/zh-CN.mjs.map +1 -1
- package/dist/zh-TW.cjs +5 -0
- package/dist/zh-TW.cjs.map +1 -1
- package/dist/zh-TW.mjs +5 -0
- package/dist/zh-TW.mjs.map +1 -1
- package/package.json +18 -16
- package/src/Button.tsx +22 -14
- package/src/Card.tsx +1 -1
- package/src/Checkbox.tsx +1 -0
- package/src/ComboBox.tsx +3 -0
- package/src/Content.tsx +1 -3
- package/src/Dialog.tsx +3 -2
- package/src/Picker.tsx +3 -0
- package/src/Popover.tsx +4 -1
- package/src/Table.tsx +1084 -48
- package/src/TagGroup.tsx +3 -2
- package/src/index.ts +2 -0
- package/src/utils.ts +28 -0
- package/style/__tests__/mergeStyles.test.js +32 -0
- package/style/__tests__/style-macro.test.js +128 -0
- package/style/dist/main.cjs +1984 -0
- package/style/dist/main.cjs.map +1 -0
- package/style/dist/module.mjs +1973 -0
- package/style/dist/module.mjs.map +1 -0
- package/style/dist/style-macro.cjs +543 -0
- package/style/dist/style-macro.cjs.map +1 -0
- package/style/dist/style-macro.mjs +534 -0
- package/style/dist/style-macro.mjs.map +1 -0
- package/style/dist/types.d.ts +780 -0
- package/style/dist/types.d.ts.map +1 -0
- package/style/runtime.ts +103 -0
- package/style/spectrum-theme.ts +974 -0
- package/style/style-macro.ts +638 -0
- package/style/tokens.ts +68 -0
- package/style/types.ts +177 -0
package/style/types.ts
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type * as CSS from 'csstype';
|
|
14
|
+
|
|
15
|
+
export type CSSValue = string | number;
|
|
16
|
+
export type CustomValue = string | number | boolean;
|
|
17
|
+
export type Value = CustomValue | readonly CustomValue[];
|
|
18
|
+
export type PropertyValueDefinition<T> = T | {[condition: string]: PropertyValueDefinition<T>};
|
|
19
|
+
export type PropertyValueMap<T extends CSSValue = CSSValue> = {
|
|
20
|
+
[name in T]: PropertyValueDefinition<string>
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type CustomProperty = `--${string}`;
|
|
24
|
+
export type CSSProperties = CSS.Properties & {
|
|
25
|
+
[k: CustomProperty]: CSSValue
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type PropertyFunction<T extends Value> = (value: T, property: string) => PropertyValueDefinition<[CSSProperties, string]>;
|
|
29
|
+
|
|
30
|
+
export type ShorthandProperty<T> = (value: T) => {[name: string]: Value};
|
|
31
|
+
|
|
32
|
+
export interface Theme {
|
|
33
|
+
properties: {
|
|
34
|
+
[name: string]: PropertyValueMap | PropertyFunction<any> | string[]
|
|
35
|
+
},
|
|
36
|
+
conditions: {
|
|
37
|
+
[name: string]: string
|
|
38
|
+
},
|
|
39
|
+
shorthands: {
|
|
40
|
+
[name: string]: string[] | ShorthandProperty<any>
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
type PropertyValue<T> =
|
|
45
|
+
T extends PropertyFunction<infer P>
|
|
46
|
+
? P
|
|
47
|
+
: T extends PropertyValueMap<infer P>
|
|
48
|
+
? P
|
|
49
|
+
: T extends string[]
|
|
50
|
+
? T[number]
|
|
51
|
+
: never;
|
|
52
|
+
|
|
53
|
+
type PropertyValue2<T> = PropertyValue<T> | CustomProperty | `[${string}]`;
|
|
54
|
+
type Merge<T> = T extends any ? T : never;
|
|
55
|
+
type ShorthandValue<T extends Theme, P> =
|
|
56
|
+
P extends string[]
|
|
57
|
+
? PropertyValue2<T['properties'][P[0]]>
|
|
58
|
+
: P extends ShorthandProperty<infer V>
|
|
59
|
+
? V
|
|
60
|
+
: never;
|
|
61
|
+
|
|
62
|
+
// Pre-compute value types for all theme properties ahead of time.
|
|
63
|
+
export type ThemeProperties<T extends Theme> = Merge<{
|
|
64
|
+
[K in keyof T['properties'] | keyof T['shorthands']]: K extends keyof T['properties']
|
|
65
|
+
? Merge<PropertyValue2<T['properties'][K]>>
|
|
66
|
+
: K extends keyof T['shorthands']
|
|
67
|
+
? Merge<ShorthandValue<T, T['shorthands'][K]>>
|
|
68
|
+
: never
|
|
69
|
+
}>;
|
|
70
|
+
|
|
71
|
+
type Style<T extends ThemeProperties<Theme>, C extends string, R extends RenderProps<string>> =
|
|
72
|
+
StaticProperties<T, C, R> & CustomProperties<T, C, R>;
|
|
73
|
+
|
|
74
|
+
type StaticProperties<T extends ThemeProperties<Theme>, C extends string, R extends RenderProps<string>> = {
|
|
75
|
+
[Name in keyof T]?: StyleValue<T[Name], C, R>
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
type CustomProperties<T extends ThemeProperties<Theme>, C extends string, R extends RenderProps<string>> = {
|
|
79
|
+
[key: CustomProperty]: CustomPropertyValue<T, keyof T, C, R>
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// Infer the value type of custom property values from the `type` key, which references a theme property.
|
|
83
|
+
type CustomPropertyValue<T extends ThemeProperties<Theme>, P extends keyof T, C extends string, R extends RenderProps<string>> =
|
|
84
|
+
P extends any
|
|
85
|
+
? {type: P, value: StyleValue<T[P], C, R>}
|
|
86
|
+
: never;
|
|
87
|
+
|
|
88
|
+
export type RenderProps<K extends string> = {
|
|
89
|
+
[key in K]: any
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export type StyleValue<V extends Value, C extends string, R extends RenderProps<string>> = V | Conditional<V, C, R>;
|
|
93
|
+
export type Condition<T extends Theme> = 'default' | Extract<keyof T['conditions'], string>;
|
|
94
|
+
type Conditional<V extends Value, C extends string, R extends RenderProps<string>> =
|
|
95
|
+
CSSConditions<V, C, R> & RuntimeConditions<V, C, R>
|
|
96
|
+
|
|
97
|
+
type ArbitraryCondition = `:${string}` | `@${string}`;
|
|
98
|
+
type CSSConditions<V extends Value, C extends string, R extends RenderProps<string>> = {
|
|
99
|
+
[name in C]?: StyleValue<V, C, R>
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// If render props are unknown, allow any custom conditions to be inferred.
|
|
103
|
+
// Unfortunately this breaks "may only specify known properties" errors.
|
|
104
|
+
type RuntimeConditions<V extends Value, C extends string, R extends RenderProps<string>> =
|
|
105
|
+
[R] extends [never]
|
|
106
|
+
? UnknownConditions<V, C>
|
|
107
|
+
: RenderPropConditions<V, C, R>;
|
|
108
|
+
|
|
109
|
+
type UnknownConditions<V extends Value, C extends string> = {
|
|
110
|
+
[name: string]: StyleValue<V, C, never> | VariantMap<string, V, C, never>
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
type BooleanConditionName = `is${Capitalize<string>}` | `allows${Capitalize<string>}`;
|
|
114
|
+
type RenderPropConditions<V extends Value, C extends string, R extends RenderProps<string>> = {
|
|
115
|
+
[K in keyof R]?: K extends BooleanConditionName ? StyleValue<V, C, R> : VariantMap<R[K], V, C, R>
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
type Values<T, K extends keyof T = keyof T> = {
|
|
119
|
+
[k in K]: T[k]
|
|
120
|
+
}[K];
|
|
121
|
+
|
|
122
|
+
export type VariantMap<K extends CSSValue, V extends Value, C extends string, R extends RenderProps<string>> = {
|
|
123
|
+
[k in K]?: StyleValue<V, C, R>
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// These types are used to recursively extract all runtime conditions/variants in case an
|
|
127
|
+
// explicit render prop generic type is not provided/inferred. This allows the returned function
|
|
128
|
+
// to automatically accept the correct arguments based on the style definition.
|
|
129
|
+
type ExtractConditionalValue<C extends keyof any, V> = V extends Value
|
|
130
|
+
? never
|
|
131
|
+
// Add the keys from this level for boolean conditions not in the theme.
|
|
132
|
+
: RuntimeConditionObject<Extract<keyof V, BooleanConditionName>, boolean>
|
|
133
|
+
// Add variant values for non-boolean named keys.
|
|
134
|
+
| Variants<V, Exclude<keyof V, C | BooleanConditionName>>
|
|
135
|
+
// Recursively include conditions from the next level.
|
|
136
|
+
| ExtractConditionalValue<C,
|
|
137
|
+
| Values<V, Extract<keyof V, C | BooleanConditionName>>
|
|
138
|
+
// And skip over variants to get to the values.
|
|
139
|
+
| Values<Values<V, Exclude<keyof V, C | BooleanConditionName>>>
|
|
140
|
+
>;
|
|
141
|
+
|
|
142
|
+
type RuntimeConditionObject<K, V> = K extends keyof any ? { [P in K]?: V } : never;
|
|
143
|
+
|
|
144
|
+
type Variants<T, K extends keyof T> = K extends any ? {
|
|
145
|
+
[k in K]?: keyof T[k]
|
|
146
|
+
} : never;
|
|
147
|
+
|
|
148
|
+
type InferCustomPropertyValue<T> = T extends {value: infer V} ? V : never;
|
|
149
|
+
|
|
150
|
+
// https://stackoverflow.com/questions/49401866/all-possible-keys-of-an-union-type
|
|
151
|
+
type KeysOfUnion<T> = T extends T ? keyof T: never;
|
|
152
|
+
type KeyValue<T, K extends KeysOfUnion<T>> = T extends {[k in K]?: any} ? T[K] : never;
|
|
153
|
+
type MergeUnion<T> = { [K in KeysOfUnion<T>]: KeyValue<T, K> };
|
|
154
|
+
|
|
155
|
+
type RuntimeConditionsObject<C extends keyof any, S extends Style<any, any, any>> = MergeUnion<
|
|
156
|
+
ExtractConditionalValue<C,
|
|
157
|
+
| Values<S, Exclude<keyof S, CustomProperty>>
|
|
158
|
+
// Skip top-level object for custom properties and go straight to value.
|
|
159
|
+
| InferCustomPropertyValue<Values<S, Extract<keyof S, CustomProperty>>>
|
|
160
|
+
>
|
|
161
|
+
>;
|
|
162
|
+
|
|
163
|
+
// Return an intersection between string and the used style props so we can prevent passing certain properties to components.
|
|
164
|
+
export type StyleString<P = string> = string & {properties: P};
|
|
165
|
+
type Keys<R> = [R] extends [never] ? never : keyof R;
|
|
166
|
+
export type RuntimeStyleFunction<S extends string, R> = Keys<R> extends never ? () => StyleString<S> : (props: R) => StyleString<S>;
|
|
167
|
+
|
|
168
|
+
// If a render prop type was provided, use that so that we get autocomplete for conditions.
|
|
169
|
+
// Otherwise, fall back to inferring the render props from the style definition itself.
|
|
170
|
+
type InferProps<R, C extends keyof any, S extends Style<any, any, any>> = [R] extends [never] ? AllowOthers<RuntimeConditionsObject<C, S>> : R;
|
|
171
|
+
type AllowOthers<R> = Keys<R> extends never ? never : R | {[x: string]: any};
|
|
172
|
+
type StyleFunctionResult<S, R> = Keys<R> extends never ? StyleString<S> : (props: R) => StyleString<S>;
|
|
173
|
+
type StyleFunctionResultWithOverrides<S, R> = (props: Keys<R> extends never ? null : R, overrides?: StyleString<string> | null) => StyleString<S>
|
|
174
|
+
export type StyleFunction<T extends ThemeProperties<Theme>, C extends string> = {
|
|
175
|
+
<R extends RenderProps<string> = never, S extends Style<T, C, R> = Style<T, C | ArbitraryCondition, R>>(style: S): StyleFunctionResult<keyof S, InferProps<R, C | ArbitraryCondition, S>>,
|
|
176
|
+
<R extends RenderProps<string> = never, S extends Style<T, C, R> = Style<T, C | ArbitraryCondition, R>>(style: S, allowedProperties: readonly string[]): StyleFunctionResultWithOverrides<keyof S, InferProps<R, C | ArbitraryCondition, S>>
|
|
177
|
+
};
|