@seed-design/css 2.3.1 → 2.4.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.
- package/all.css +615 -0
- package/all.layered.css +615 -0
- package/all.layered.min.css +1 -1
- package/all.min.css +1 -1
- package/package.json +1 -1
- package/recipes/date-picker.css +400 -0
- package/recipes/date-picker.d.ts +24 -0
- package/recipes/date-picker.layered.css +461 -0
- package/recipes/date-picker.layered.mjs +165 -0
- package/recipes/date-picker.mjs +165 -0
- package/recipes/quantity-picker.css +4 -0
- package/recipes/quantity-picker.d.ts +4 -0
- package/recipes/quantity-picker.layered.css +5 -0
- package/recipes/quantity-picker.layered.mjs +5 -0
- package/recipes/quantity-picker.mjs +5 -0
- package/recipes/time-picker.css +44 -0
- package/recipes/time-picker.d.ts +21 -0
- package/recipes/time-picker.layered.css +53 -0
- package/recipes/time-picker.layered.mjs +60 -0
- package/recipes/time-picker.mjs +60 -0
- package/recipes/wheel-picker.css +85 -0
- package/recipes/wheel-picker.d.ts +21 -0
- package/recipes/wheel-picker.layered.css +99 -0
- package/recipes/wheel-picker.layered.mjs +52 -0
- package/recipes/wheel-picker.mjs +52 -0
- package/vars/component/date-picker.d.ts +98 -0
- package/vars/component/date-picker.mjs +98 -0
- package/vars/component/index.d.ts +2 -0
- package/vars/component/index.mjs +2 -0
- package/vars/component/time-picker.d.ts +27 -0
- package/vars/component/time-picker.mjs +27 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import './date-picker.css';
|
|
2
|
+
import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
|
|
3
|
+
|
|
4
|
+
const datePickerSlotNames = [
|
|
5
|
+
[
|
|
6
|
+
"root",
|
|
7
|
+
"seed-date-picker__root"
|
|
8
|
+
],
|
|
9
|
+
[
|
|
10
|
+
"header",
|
|
11
|
+
"seed-date-picker__header"
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
"headerLabel",
|
|
15
|
+
"seed-date-picker__headerLabel"
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
"headerChevron",
|
|
19
|
+
"seed-date-picker__headerChevron"
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
"navigation",
|
|
23
|
+
"seed-date-picker__navigation"
|
|
24
|
+
],
|
|
25
|
+
[
|
|
26
|
+
"navigationButton",
|
|
27
|
+
"seed-date-picker__navigationButton"
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
"twoMonthHeader",
|
|
31
|
+
"seed-date-picker__twoMonthHeader"
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
"twoMonthLabel",
|
|
35
|
+
"seed-date-picker__twoMonthLabel"
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
"twoMonthNavigationButton",
|
|
39
|
+
"seed-date-picker__twoMonthNavigationButton"
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
"weekdayRow",
|
|
43
|
+
"seed-date-picker__weekdayRow"
|
|
44
|
+
],
|
|
45
|
+
[
|
|
46
|
+
"weekday",
|
|
47
|
+
"seed-date-picker__weekday"
|
|
48
|
+
],
|
|
49
|
+
[
|
|
50
|
+
"months",
|
|
51
|
+
"seed-date-picker__months"
|
|
52
|
+
],
|
|
53
|
+
[
|
|
54
|
+
"month",
|
|
55
|
+
"seed-date-picker__month"
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
"monthLabel",
|
|
59
|
+
"seed-date-picker__monthLabel"
|
|
60
|
+
],
|
|
61
|
+
[
|
|
62
|
+
"grid",
|
|
63
|
+
"seed-date-picker__grid"
|
|
64
|
+
],
|
|
65
|
+
[
|
|
66
|
+
"weekRow",
|
|
67
|
+
"seed-date-picker__weekRow"
|
|
68
|
+
],
|
|
69
|
+
[
|
|
70
|
+
"dateCell",
|
|
71
|
+
"seed-date-picker__dateCell"
|
|
72
|
+
],
|
|
73
|
+
[
|
|
74
|
+
"dateButton",
|
|
75
|
+
"seed-date-picker__dateButton"
|
|
76
|
+
],
|
|
77
|
+
[
|
|
78
|
+
"dateContent",
|
|
79
|
+
"seed-date-picker__dateContent"
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
"emptyCell",
|
|
83
|
+
"seed-date-picker__emptyCell"
|
|
84
|
+
],
|
|
85
|
+
[
|
|
86
|
+
"continuousScroll",
|
|
87
|
+
"seed-date-picker__continuousScroll"
|
|
88
|
+
],
|
|
89
|
+
[
|
|
90
|
+
"continuousContent",
|
|
91
|
+
"seed-date-picker__continuousContent"
|
|
92
|
+
],
|
|
93
|
+
[
|
|
94
|
+
"continuousSpacer",
|
|
95
|
+
"seed-date-picker__continuousSpacer"
|
|
96
|
+
],
|
|
97
|
+
[
|
|
98
|
+
"wheelContainer",
|
|
99
|
+
"seed-date-picker__wheelContainer"
|
|
100
|
+
],
|
|
101
|
+
[
|
|
102
|
+
"wheelView",
|
|
103
|
+
"seed-date-picker__wheelView"
|
|
104
|
+
],
|
|
105
|
+
[
|
|
106
|
+
"wheelColumns",
|
|
107
|
+
"seed-date-picker__wheelColumns"
|
|
108
|
+
],
|
|
109
|
+
[
|
|
110
|
+
"wheelSelectionIndicator",
|
|
111
|
+
"seed-date-picker__wheelSelectionIndicator"
|
|
112
|
+
],
|
|
113
|
+
[
|
|
114
|
+
"wheelScrollFog",
|
|
115
|
+
"seed-date-picker__wheelScrollFog"
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"yearColumn",
|
|
119
|
+
"seed-date-picker__yearColumn"
|
|
120
|
+
],
|
|
121
|
+
[
|
|
122
|
+
"monthColumn",
|
|
123
|
+
"seed-date-picker__monthColumn"
|
|
124
|
+
],
|
|
125
|
+
[
|
|
126
|
+
"wheelItem",
|
|
127
|
+
"seed-date-picker__wheelItem"
|
|
128
|
+
],
|
|
129
|
+
[
|
|
130
|
+
"liveRegion",
|
|
131
|
+
"seed-date-picker__liveRegion"
|
|
132
|
+
]
|
|
133
|
+
];
|
|
134
|
+
|
|
135
|
+
const defaultVariant = {
|
|
136
|
+
"visibleRange": "month"
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const compoundVariants = [];
|
|
140
|
+
|
|
141
|
+
export const datePickerVariantMap = {
|
|
142
|
+
"visibleRange": [
|
|
143
|
+
"month",
|
|
144
|
+
"twoMonths",
|
|
145
|
+
"continuous",
|
|
146
|
+
"week"
|
|
147
|
+
]
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export const datePickerVariantKeys = Object.keys(datePickerVariantMap);
|
|
151
|
+
|
|
152
|
+
export function datePicker(props) {
|
|
153
|
+
return Object.fromEntries(
|
|
154
|
+
datePickerSlotNames.map(([slot, className]) => {
|
|
155
|
+
return [
|
|
156
|
+
slot,
|
|
157
|
+
createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
|
|
158
|
+
];
|
|
159
|
+
}),
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
Object.assign(datePicker, { splitVariantProps: (props) => splitVariantProps(props, datePickerVariantMap) });
|
|
164
|
+
|
|
165
|
+
// @recipe(seed): date-picker
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
}
|
|
55
55
|
.seed-quantity-picker__valueDisplay {
|
|
56
56
|
display: grid;
|
|
57
|
+
flex-grow: 1;
|
|
57
58
|
flex-shrink: 0;
|
|
58
59
|
align-items: center;
|
|
59
60
|
justify-content: center;
|
|
@@ -123,6 +124,9 @@
|
|
|
123
124
|
.seed-quantity-picker__incrementIcon:is(:disabled, [disabled], [data-disabled]) {
|
|
124
125
|
color: var(--seed-color-fg-disabled);
|
|
125
126
|
}
|
|
127
|
+
.seed-quantity-picker__root--layout_fill {
|
|
128
|
+
flex-grow: 1;
|
|
129
|
+
}
|
|
126
130
|
.seed-quantity-picker__root--size_small {
|
|
127
131
|
height: var(--seed-dimension-x9);
|
|
128
132
|
border-radius: var(--seed-radius-r2);
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
box-sizing: border-box;
|
|
68
68
|
font-weight: var(--seed-font-weight-medium);
|
|
69
69
|
color: var(--seed-color-fg-neutral);
|
|
70
|
+
flex-grow: 1;
|
|
70
71
|
flex-shrink: 0;
|
|
71
72
|
justify-content: center;
|
|
72
73
|
align-items: center;
|
|
@@ -145,6 +146,10 @@
|
|
|
145
146
|
color: var(--seed-color-fg-disabled);
|
|
146
147
|
}
|
|
147
148
|
|
|
149
|
+
.seed-quantity-picker__root--layout_fill {
|
|
150
|
+
flex-grow: 1;
|
|
151
|
+
}
|
|
152
|
+
|
|
148
153
|
.seed-quantity-picker__root--size_small {
|
|
149
154
|
height: var(--seed-dimension-x9);
|
|
150
155
|
border-radius: var(--seed-radius-r2);
|
|
@@ -41,12 +41,17 @@ const quantityPickerSlotNames = [
|
|
|
41
41
|
];
|
|
42
42
|
|
|
43
43
|
const defaultVariant = {
|
|
44
|
+
"layout": "hug",
|
|
44
45
|
"size": "medium"
|
|
45
46
|
};
|
|
46
47
|
|
|
47
48
|
const compoundVariants = [];
|
|
48
49
|
|
|
49
50
|
export const quantityPickerVariantMap = {
|
|
51
|
+
"layout": [
|
|
52
|
+
"hug",
|
|
53
|
+
"fill"
|
|
54
|
+
],
|
|
50
55
|
"size": [
|
|
51
56
|
"small",
|
|
52
57
|
"medium",
|
|
@@ -41,12 +41,17 @@ const quantityPickerSlotNames = [
|
|
|
41
41
|
];
|
|
42
42
|
|
|
43
43
|
const defaultVariant = {
|
|
44
|
+
"layout": "hug",
|
|
44
45
|
"size": "medium"
|
|
45
46
|
};
|
|
46
47
|
|
|
47
48
|
const compoundVariants = [];
|
|
48
49
|
|
|
49
50
|
export const quantityPickerVariantMap = {
|
|
51
|
+
"layout": [
|
|
52
|
+
"hug",
|
|
53
|
+
"fill"
|
|
54
|
+
],
|
|
50
55
|
"size": [
|
|
51
56
|
"small",
|
|
52
57
|
"medium",
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
.seed-time-picker__root {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 220px;
|
|
4
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-neutral);
|
|
5
|
+
--seed-wheel-picker-selection-indicator-corner-radius: var(--seed-radius-r2);
|
|
6
|
+
}
|
|
7
|
+
.seed-time-picker__scrollFog {}
|
|
8
|
+
.seed-time-picker__columns {}
|
|
9
|
+
.seed-time-picker__selectionIndicator {
|
|
10
|
+
border-radius: var(--seed-radius-r2);
|
|
11
|
+
background-color: var(--seed-color-bg-neutral-weak);
|
|
12
|
+
}
|
|
13
|
+
.seed-time-picker__periodColumn {
|
|
14
|
+
flex: 0 0 auto;
|
|
15
|
+
outline: none;
|
|
16
|
+
}
|
|
17
|
+
.seed-time-picker__periodColumn[data-disabled] {
|
|
18
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-disabled);
|
|
19
|
+
}
|
|
20
|
+
.seed-time-picker__hourColumn {
|
|
21
|
+
flex: 0 0 auto;
|
|
22
|
+
outline: none;
|
|
23
|
+
}
|
|
24
|
+
.seed-time-picker__hourColumn[data-disabled] {
|
|
25
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-disabled);
|
|
26
|
+
}
|
|
27
|
+
.seed-time-picker__hourColumn {
|
|
28
|
+
--seed-wheel-picker-item-justify-content: flex-end;
|
|
29
|
+
}
|
|
30
|
+
.seed-time-picker__minuteColumn {
|
|
31
|
+
flex: 0 0 auto;
|
|
32
|
+
outline: none;
|
|
33
|
+
}
|
|
34
|
+
.seed-time-picker__minuteColumn[data-disabled] {
|
|
35
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-disabled);
|
|
36
|
+
}
|
|
37
|
+
.seed-time-picker__item {
|
|
38
|
+
--seed-wheel-picker-item-color: var(--seed-color-fg-disabled);
|
|
39
|
+
padding-inline: var(--seed-dimension-x4);
|
|
40
|
+
font-size: var(--seed-font-size-t10-static);
|
|
41
|
+
line-height: var(--seed-line-height-t10-static);
|
|
42
|
+
font-weight: var(--seed-font-weight-medium);
|
|
43
|
+
font-variant-numeric: tabular-nums;
|
|
44
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare interface TimePickerVariant {
|
|
2
|
+
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
declare type TimePickerVariantMap = {
|
|
6
|
+
[key in keyof TimePickerVariant]: Array<TimePickerVariant[key]>;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export declare type TimePickerVariantProps = Partial<TimePickerVariant>;
|
|
10
|
+
|
|
11
|
+
export declare type TimePickerSlotName = "root" | "scrollFog" | "columns" | "selectionIndicator" | "periodColumn" | "hourColumn" | "minuteColumn" | "item";
|
|
12
|
+
|
|
13
|
+
export declare const timePickerVariantMap: TimePickerVariantMap;
|
|
14
|
+
|
|
15
|
+
export declare const timePicker: ((
|
|
16
|
+
props?: TimePickerVariantProps,
|
|
17
|
+
) => Record<TimePickerSlotName, string>) & {
|
|
18
|
+
splitVariantProps: <T extends TimePickerVariantProps>(
|
|
19
|
+
props: T,
|
|
20
|
+
) => [TimePickerVariantProps, Omit<T, keyof TimePickerVariantProps>];
|
|
21
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
@layer seed-components {
|
|
2
|
+
.seed-time-picker__root {
|
|
3
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-neutral);
|
|
4
|
+
--seed-wheel-picker-selection-indicator-corner-radius: var(--seed-radius-r2);
|
|
5
|
+
width: 100%;
|
|
6
|
+
height: 220px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.seed-time-picker__selectionIndicator {
|
|
10
|
+
border-radius: var(--seed-radius-r2);
|
|
11
|
+
background-color: var(--seed-color-bg-neutral-weak);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.seed-time-picker__periodColumn {
|
|
15
|
+
outline: none;
|
|
16
|
+
flex: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.seed-time-picker__periodColumn[data-disabled] {
|
|
20
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-disabled);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.seed-time-picker__hourColumn {
|
|
24
|
+
outline: none;
|
|
25
|
+
flex: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.seed-time-picker__hourColumn[data-disabled] {
|
|
29
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-disabled);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.seed-time-picker__hourColumn {
|
|
33
|
+
--seed-wheel-picker-item-justify-content: flex-end;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.seed-time-picker__minuteColumn {
|
|
37
|
+
outline: none;
|
|
38
|
+
flex: none;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.seed-time-picker__minuteColumn[data-disabled] {
|
|
42
|
+
--seed-wheel-picker-selected-item-color: var(--seed-color-fg-disabled);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.seed-time-picker__item {
|
|
46
|
+
--seed-wheel-picker-item-color: var(--seed-color-fg-disabled);
|
|
47
|
+
padding-inline: var(--seed-dimension-x4);
|
|
48
|
+
font-size: var(--seed-font-size-t10-static);
|
|
49
|
+
line-height: var(--seed-line-height-t10-static);
|
|
50
|
+
font-weight: var(--seed-font-weight-medium);
|
|
51
|
+
font-variant-numeric: tabular-nums;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import './time-picker.layered.css';
|
|
2
|
+
import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
|
|
3
|
+
|
|
4
|
+
const timePickerSlotNames = [
|
|
5
|
+
[
|
|
6
|
+
"root",
|
|
7
|
+
"seed-time-picker__root"
|
|
8
|
+
],
|
|
9
|
+
[
|
|
10
|
+
"scrollFog",
|
|
11
|
+
"seed-time-picker__scrollFog"
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
"columns",
|
|
15
|
+
"seed-time-picker__columns"
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
"selectionIndicator",
|
|
19
|
+
"seed-time-picker__selectionIndicator"
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
"periodColumn",
|
|
23
|
+
"seed-time-picker__periodColumn"
|
|
24
|
+
],
|
|
25
|
+
[
|
|
26
|
+
"hourColumn",
|
|
27
|
+
"seed-time-picker__hourColumn"
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
"minuteColumn",
|
|
31
|
+
"seed-time-picker__minuteColumn"
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
"item",
|
|
35
|
+
"seed-time-picker__item"
|
|
36
|
+
]
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const defaultVariant = {};
|
|
40
|
+
|
|
41
|
+
const compoundVariants = [];
|
|
42
|
+
|
|
43
|
+
export const timePickerVariantMap = {};
|
|
44
|
+
|
|
45
|
+
export const timePickerVariantKeys = Object.keys(timePickerVariantMap);
|
|
46
|
+
|
|
47
|
+
export function timePicker(props) {
|
|
48
|
+
return Object.fromEntries(
|
|
49
|
+
timePickerSlotNames.map(([slot, className]) => {
|
|
50
|
+
return [
|
|
51
|
+
slot,
|
|
52
|
+
createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
|
|
53
|
+
];
|
|
54
|
+
}),
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
Object.assign(timePicker, { splitVariantProps: (props) => splitVariantProps(props, timePickerVariantMap) });
|
|
59
|
+
|
|
60
|
+
// @recipe(seed): time-picker
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import './time-picker.css';
|
|
2
|
+
import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
|
|
3
|
+
|
|
4
|
+
const timePickerSlotNames = [
|
|
5
|
+
[
|
|
6
|
+
"root",
|
|
7
|
+
"seed-time-picker__root"
|
|
8
|
+
],
|
|
9
|
+
[
|
|
10
|
+
"scrollFog",
|
|
11
|
+
"seed-time-picker__scrollFog"
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
"columns",
|
|
15
|
+
"seed-time-picker__columns"
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
"selectionIndicator",
|
|
19
|
+
"seed-time-picker__selectionIndicator"
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
"periodColumn",
|
|
23
|
+
"seed-time-picker__periodColumn"
|
|
24
|
+
],
|
|
25
|
+
[
|
|
26
|
+
"hourColumn",
|
|
27
|
+
"seed-time-picker__hourColumn"
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
"minuteColumn",
|
|
31
|
+
"seed-time-picker__minuteColumn"
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
"item",
|
|
35
|
+
"seed-time-picker__item"
|
|
36
|
+
]
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const defaultVariant = {};
|
|
40
|
+
|
|
41
|
+
const compoundVariants = [];
|
|
42
|
+
|
|
43
|
+
export const timePickerVariantMap = {};
|
|
44
|
+
|
|
45
|
+
export const timePickerVariantKeys = Object.keys(timePickerVariantMap);
|
|
46
|
+
|
|
47
|
+
export function timePicker(props) {
|
|
48
|
+
return Object.fromEntries(
|
|
49
|
+
timePickerSlotNames.map(([slot, className]) => {
|
|
50
|
+
return [
|
|
51
|
+
slot,
|
|
52
|
+
createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
|
|
53
|
+
];
|
|
54
|
+
}),
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
Object.assign(timePicker, { splitVariantProps: (props) => splitVariantProps(props, timePickerVariantMap) });
|
|
59
|
+
|
|
60
|
+
// @recipe(seed): time-picker
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
.seed-wheel-picker__root {
|
|
2
|
+
position: relative;
|
|
3
|
+
height: var(--seed-wheel-picker-viewport-size);
|
|
4
|
+
overflow: hidden;
|
|
5
|
+
}
|
|
6
|
+
.seed-wheel-picker__scrollFog {
|
|
7
|
+
position: relative;
|
|
8
|
+
z-index: 1;
|
|
9
|
+
height: 100%;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
}
|
|
12
|
+
.seed-wheel-picker__columns {
|
|
13
|
+
display: flex;
|
|
14
|
+
height: 100%;
|
|
15
|
+
justify-content: center;
|
|
16
|
+
}
|
|
17
|
+
.seed-wheel-picker__column {
|
|
18
|
+
box-sizing: border-box;
|
|
19
|
+
width: max-content;
|
|
20
|
+
height: 100%;
|
|
21
|
+
overflow-x: hidden;
|
|
22
|
+
overflow-y: auto;
|
|
23
|
+
overscroll-behavior-x: none;
|
|
24
|
+
overscroll-behavior-y: contain;
|
|
25
|
+
scroll-snap-type: y mandatory;
|
|
26
|
+
scrollbar-width: none;
|
|
27
|
+
-ms-overflow-style: none;
|
|
28
|
+
outline: none;
|
|
29
|
+
touch-action: pan-y;
|
|
30
|
+
cursor: grab;
|
|
31
|
+
padding-block: var(--seed-wheel-picker-center-offset);
|
|
32
|
+
}
|
|
33
|
+
.seed-wheel-picker__column[data-disabled] {
|
|
34
|
+
overflow-y: hidden;
|
|
35
|
+
cursor: default;
|
|
36
|
+
}
|
|
37
|
+
.seed-wheel-picker__column[data-readonly] {
|
|
38
|
+
cursor: default;
|
|
39
|
+
}
|
|
40
|
+
.seed-wheel-picker__column[data-wheel-picker-dragging] {
|
|
41
|
+
cursor: grabbing;
|
|
42
|
+
scroll-snap-type: none;
|
|
43
|
+
}
|
|
44
|
+
.seed-wheel-picker__column[data-wheel-picker-scrolling] {
|
|
45
|
+
scroll-snap-type: none;
|
|
46
|
+
}
|
|
47
|
+
.seed-wheel-picker__column::-webkit-scrollbar {
|
|
48
|
+
display: none;
|
|
49
|
+
}
|
|
50
|
+
.seed-wheel-picker__column :is([aria-selected=true], [data-selected]) {
|
|
51
|
+
outline: var(--seed-dimension-x0_5) solid transparent;
|
|
52
|
+
outline-offset: calc(var(--seed-dimension-x0_5) * -1);
|
|
53
|
+
border-radius: var(--seed-wheel-picker-selection-indicator-corner-radius, 0);
|
|
54
|
+
transition: outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
|
|
55
|
+
}
|
|
56
|
+
.seed-wheel-picker__column.seed-wheel-picker__column:is(:focus-visible, [data-focus-visible]):not([data-wheel-picker-pointer-focus]) :is([aria-selected=true], [data-selected]) {
|
|
57
|
+
outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
|
|
58
|
+
outline-offset: calc(var(--seed-dimension-x0_5) * -1);
|
|
59
|
+
}
|
|
60
|
+
.seed-wheel-picker__item {
|
|
61
|
+
display: flex;
|
|
62
|
+
height: var(--seed-wheel-picker-item-size);
|
|
63
|
+
min-height: var(--seed-wheel-picker-item-size);
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: var(--seed-wheel-picker-item-justify-content, center);
|
|
66
|
+
color: var(--seed-wheel-picker-item-color);
|
|
67
|
+
scroll-snap-align: center;
|
|
68
|
+
user-select: none;
|
|
69
|
+
}
|
|
70
|
+
.seed-wheel-picker__item[data-wheel-picker-indicator-overlap] {
|
|
71
|
+
color: transparent;
|
|
72
|
+
background-image: linear-gradient(to bottom, var(--seed-wheel-picker-item-color) 0%, var(--seed-wheel-picker-item-color) var(--seed-wheel-picker-indicator-overlap-start), var(--seed-wheel-picker-selected-item-color) var(--seed-wheel-picker-indicator-overlap-start), var(--seed-wheel-picker-selected-item-color) var(--seed-wheel-picker-indicator-overlap-end), var(--seed-wheel-picker-item-color) var(--seed-wheel-picker-indicator-overlap-end), var(--seed-wheel-picker-item-color) 100%);
|
|
73
|
+
background-clip: text;
|
|
74
|
+
-webkit-background-clip: text;
|
|
75
|
+
-webkit-text-fill-color: transparent;
|
|
76
|
+
}
|
|
77
|
+
.seed-wheel-picker__selectionIndicator {
|
|
78
|
+
position: absolute;
|
|
79
|
+
z-index: 0;
|
|
80
|
+
inset-inline: 0;
|
|
81
|
+
top: 50%;
|
|
82
|
+
height: var(--seed-wheel-picker-item-size);
|
|
83
|
+
transform: translateY(-50%);
|
|
84
|
+
pointer-events: none;
|
|
85
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare interface WheelPickerVariant {
|
|
2
|
+
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
declare type WheelPickerVariantMap = {
|
|
6
|
+
[key in keyof WheelPickerVariant]: Array<WheelPickerVariant[key]>;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export declare type WheelPickerVariantProps = Partial<WheelPickerVariant>;
|
|
10
|
+
|
|
11
|
+
export declare type WheelPickerSlotName = "root" | "scrollFog" | "columns" | "column" | "item" | "selectionIndicator";
|
|
12
|
+
|
|
13
|
+
export declare const wheelPickerVariantMap: WheelPickerVariantMap;
|
|
14
|
+
|
|
15
|
+
export declare const wheelPicker: ((
|
|
16
|
+
props?: WheelPickerVariantProps,
|
|
17
|
+
) => Record<WheelPickerSlotName, string>) & {
|
|
18
|
+
splitVariantProps: <T extends WheelPickerVariantProps>(
|
|
19
|
+
props: T,
|
|
20
|
+
) => [WheelPickerVariantProps, Omit<T, keyof WheelPickerVariantProps>];
|
|
21
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
@layer seed-components {
|
|
2
|
+
.seed-wheel-picker__root {
|
|
3
|
+
height: var(--seed-wheel-picker-viewport-size);
|
|
4
|
+
position: relative;
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.seed-wheel-picker__scrollFog {
|
|
9
|
+
z-index: 1;
|
|
10
|
+
height: 100%;
|
|
11
|
+
position: relative;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.seed-wheel-picker__columns {
|
|
16
|
+
justify-content: center;
|
|
17
|
+
height: 100%;
|
|
18
|
+
display: flex;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.seed-wheel-picker__column {
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
overscroll-behavior-x: none;
|
|
24
|
+
overscroll-behavior-y: contain;
|
|
25
|
+
scroll-snap-type: y mandatory;
|
|
26
|
+
scrollbar-width: none;
|
|
27
|
+
-ms-overflow-style: none;
|
|
28
|
+
touch-action: pan-y;
|
|
29
|
+
cursor: grab;
|
|
30
|
+
width: max-content;
|
|
31
|
+
height: 100%;
|
|
32
|
+
padding-block: var(--seed-wheel-picker-center-offset);
|
|
33
|
+
outline: none;
|
|
34
|
+
overflow: hidden auto;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.seed-wheel-picker__column[data-disabled] {
|
|
38
|
+
cursor: default;
|
|
39
|
+
overflow-y: hidden;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.seed-wheel-picker__column[data-readonly] {
|
|
43
|
+
cursor: default;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.seed-wheel-picker__column[data-wheel-picker-dragging] {
|
|
47
|
+
cursor: grabbing;
|
|
48
|
+
scroll-snap-type: none;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.seed-wheel-picker__column[data-wheel-picker-scrolling] {
|
|
52
|
+
scroll-snap-type: none;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.seed-wheel-picker__column::-webkit-scrollbar {
|
|
56
|
+
display: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.seed-wheel-picker__column :is([aria-selected="true"], [data-selected]) {
|
|
60
|
+
outline: var(--seed-dimension-x0_5) solid transparent;
|
|
61
|
+
outline-offset: calc(var(--seed-dimension-x0_5) * -1);
|
|
62
|
+
border-radius: var(--seed-wheel-picker-selection-indicator-corner-radius, 0);
|
|
63
|
+
transition: outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.seed-wheel-picker__column.seed-wheel-picker__column:is(:focus-visible, [data-focus-visible]):not([data-wheel-picker-pointer-focus]) :is([aria-selected="true"], [data-selected]) {
|
|
67
|
+
outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
|
|
68
|
+
outline-offset: calc(var(--seed-dimension-x0_5) * -1);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.seed-wheel-picker__item {
|
|
72
|
+
height: var(--seed-wheel-picker-item-size);
|
|
73
|
+
min-height: var(--seed-wheel-picker-item-size);
|
|
74
|
+
align-items: center;
|
|
75
|
+
justify-content: var(--seed-wheel-picker-item-justify-content, center);
|
|
76
|
+
color: var(--seed-wheel-picker-item-color);
|
|
77
|
+
scroll-snap-align: center;
|
|
78
|
+
user-select: none;
|
|
79
|
+
display: flex;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.seed-wheel-picker__item[data-wheel-picker-indicator-overlap] {
|
|
83
|
+
color: #0000;
|
|
84
|
+
background-image: linear-gradient(to bottom, var(--seed-wheel-picker-item-color) 0%, var(--seed-wheel-picker-item-color) var(--seed-wheel-picker-indicator-overlap-start), var(--seed-wheel-picker-selected-item-color) var(--seed-wheel-picker-indicator-overlap-start), var(--seed-wheel-picker-selected-item-color) var(--seed-wheel-picker-indicator-overlap-end), var(--seed-wheel-picker-item-color) var(--seed-wheel-picker-indicator-overlap-end), var(--seed-wheel-picker-item-color) 100%);
|
|
85
|
+
-webkit-text-fill-color: transparent;
|
|
86
|
+
-webkit-background-clip: text;
|
|
87
|
+
background-clip: text;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.seed-wheel-picker__selectionIndicator {
|
|
91
|
+
z-index: 0;
|
|
92
|
+
inset-inline: 0;
|
|
93
|
+
height: var(--seed-wheel-picker-item-size);
|
|
94
|
+
pointer-events: none;
|
|
95
|
+
position: absolute;
|
|
96
|
+
top: 50%;
|
|
97
|
+
transform: translateY(-50%);
|
|
98
|
+
}
|
|
99
|
+
}
|