@seed-design/css 2.2.2 → 2.3.1

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 (57) hide show
  1. package/README.md +5 -0
  2. package/all.css +1283 -189
  3. package/all.layered.css +1283 -189
  4. package/all.layered.min.css +1 -1
  5. package/all.min.css +1 -1
  6. package/package.json +1 -1
  7. package/recipes/avatar.css +11 -1
  8. package/recipes/avatar.layered.css +9 -1
  9. package/recipes/bottom-sheet.css +3 -1
  10. package/recipes/bottom-sheet.layered.css +3 -1
  11. package/recipes/content-dialog.css +258 -0
  12. package/recipes/content-dialog.d.ts +24 -0
  13. package/recipes/content-dialog.layered.css +290 -0
  14. package/recipes/content-dialog.layered.mjs +71 -0
  15. package/recipes/content-dialog.mjs +71 -0
  16. package/recipes/image-frame.css +11 -1
  17. package/recipes/image-frame.layered.css +9 -1
  18. package/recipes/quantity-picker.css +230 -0
  19. package/recipes/quantity-picker.d.ts +24 -0
  20. package/recipes/quantity-picker.layered.css +273 -0
  21. package/recipes/quantity-picker.layered.mjs +72 -0
  22. package/recipes/quantity-picker.mjs +72 -0
  23. package/recipes/select-item.css +161 -0
  24. package/recipes/select-item.d.ts +28 -0
  25. package/recipes/select-item.layered.css +191 -0
  26. package/recipes/select-item.layered.mjs +60 -0
  27. package/recipes/select-item.mjs +60 -0
  28. package/recipes/select-trigger.css +208 -0
  29. package/recipes/select-trigger.d.ts +28 -0
  30. package/recipes/select-trigger.layered.css +227 -0
  31. package/recipes/select-trigger.layered.mjs +56 -0
  32. package/recipes/select-trigger.mjs +56 -0
  33. package/recipes/select.css +93 -0
  34. package/recipes/select.d.ts +28 -0
  35. package/recipes/select.layered.css +108 -0
  36. package/recipes/select.layered.mjs +56 -0
  37. package/recipes/select.mjs +56 -0
  38. package/vars/component/alert-dialog.d.ts +52 -0
  39. package/vars/component/alert-dialog.mjs +52 -0
  40. package/vars/component/dialog-close-button.d.ts +24 -0
  41. package/vars/component/dialog-close-button.mjs +24 -0
  42. package/vars/component/dialog.d.ts +50 -11
  43. package/vars/component/dialog.mjs +42 -11
  44. package/vars/component/index.d.ts +7 -0
  45. package/vars/component/index.mjs +7 -0
  46. package/vars/component/menu-sheet-item.d.ts +2 -6
  47. package/vars/component/menu-sheet-item.mjs +2 -6
  48. package/vars/component/quantity-picker-button.d.ts +78 -0
  49. package/vars/component/quantity-picker-button.mjs +78 -0
  50. package/vars/component/quantity-picker.d.ts +80 -0
  51. package/vars/component/quantity-picker.mjs +80 -0
  52. package/vars/component/select-item.d.ts +101 -0
  53. package/vars/component/select-item.mjs +95 -0
  54. package/vars/component/select-trigger.d.ts +127 -0
  55. package/vars/component/select-trigger.mjs +120 -0
  56. package/vars/component/select.d.ts +62 -0
  57. package/vars/component/select.mjs +54 -0
@@ -0,0 +1,227 @@
1
+ @layer seed-components {
2
+ .seed-select-trigger__root {
3
+ box-sizing: border-box;
4
+ isolation: isolate;
5
+ cursor: pointer;
6
+ background-color: var(--seed-color-bg-transparent);
7
+ width: 100%;
8
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-weak);
9
+ transition: background-color var(--seed-duration-color-transition) var(--seed-timing-function-easing), outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
10
+ border: none;
11
+ align-items: center;
12
+ margin: 0;
13
+ font-family: inherit;
14
+ display: flex;
15
+ position: relative;
16
+ }
17
+
18
+ .seed-select-trigger__root:after {
19
+ content: "";
20
+ border-radius: inherit;
21
+ transition: border-color .1s var(--seed-timing-function-easing);
22
+ pointer-events: none;
23
+ border: 2px solid #0000;
24
+ position: absolute;
25
+ inset: 0;
26
+ }
27
+
28
+ .seed-select-trigger__root[data-disabled] {
29
+ cursor: not-allowed;
30
+ background-color: var(--seed-color-bg-disabled);
31
+ }
32
+
33
+ @media (hover: hover) and (pointer: fine) {
34
+ .seed-select-trigger__root:not([data-disabled]):not([data-readonly]):is(:hover, [data-hover]) {
35
+ background-color: var(--seed-color-bg-transparent-pressed);
36
+ }
37
+ }
38
+
39
+ @media not all and (hover: hover) and (pointer: fine) {
40
+ .seed-select-trigger__root:not([data-disabled]):not([data-readonly]):is(:active, [data-active]) {
41
+ background-color: var(--seed-color-bg-transparent-pressed);
42
+ }
43
+ }
44
+
45
+ .seed-select-trigger__root[data-readonly]:not([data-disabled]) {
46
+ cursor: default;
47
+ background-color: var(--seed-color-bg-disabled);
48
+ }
49
+
50
+ .seed-select-trigger__root {
51
+ outline: var(--seed-dimension-x0_5) solid transparent;
52
+ outline-offset: var(--seed-dimension-x0_5);
53
+ }
54
+
55
+ .seed-select-trigger__root:is(:focus-visible, [data-focus-visible]) {
56
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
57
+ outline-offset: var(--seed-dimension-x0_5);
58
+ }
59
+
60
+ .seed-select-trigger__root:is(:invalid, [data-invalid]):after {
61
+ border-width: 2px;
62
+ border-color: var(--seed-color-stroke-critical-solid);
63
+ }
64
+
65
+ .seed-select-trigger__value {
66
+ font-weight: var(--seed-font-weight-regular);
67
+ color: var(--seed-color-fg-neutral);
68
+ text-overflow: ellipsis;
69
+ white-space: nowrap;
70
+ text-align: start;
71
+ pointer-events: none;
72
+ flex-grow: 1;
73
+ overflow: hidden;
74
+ }
75
+
76
+ .seed-select-trigger__value[data-disabled] {
77
+ color: var(--seed-color-fg-disabled);
78
+ }
79
+
80
+ .seed-select-trigger__value[data-readonly]:not([data-disabled]) {
81
+ color: var(--seed-color-fg-neutral);
82
+ }
83
+
84
+ .seed-select-trigger__placeholder {
85
+ font-weight: var(--seed-font-weight-regular);
86
+ color: var(--seed-color-fg-placeholder);
87
+ text-overflow: ellipsis;
88
+ white-space: nowrap;
89
+ text-align: start;
90
+ pointer-events: none;
91
+ flex-grow: 1;
92
+ overflow: hidden;
93
+ }
94
+
95
+ .seed-select-trigger__placeholder[data-disabled] {
96
+ color: var(--seed-color-fg-disabled);
97
+ }
98
+
99
+ .seed-select-trigger__placeholder[data-readonly]:not([data-disabled]) {
100
+ color: var(--seed-color-fg-placeholder);
101
+ }
102
+
103
+ .seed-select-trigger__prefixIcon {
104
+ color: var(--seed-color-fg-neutral-muted);
105
+ pointer-events: none;
106
+ flex-shrink: 0;
107
+ }
108
+
109
+ .seed-select-trigger__prefixIcon[data-disabled] {
110
+ color: var(--seed-color-fg-disabled);
111
+ }
112
+
113
+ .seed-select-trigger__suffixIcon {
114
+ color: var(--seed-color-fg-neutral-muted);
115
+ pointer-events: none;
116
+ transition: transform var(--seed-duration-d2) var(--seed-timing-function-easing);
117
+ flex-shrink: 0;
118
+ transform: rotate(0);
119
+ }
120
+
121
+ .seed-select-trigger__suffixIcon:is([data-state="open"], [data-open]) {
122
+ transition: transform var(--seed-duration-d3) var(--seed-timing-function-easing);
123
+ transform: rotate(180deg);
124
+ }
125
+
126
+ .seed-select-trigger__suffixIcon[data-disabled] {
127
+ color: var(--seed-color-fg-disabled);
128
+ }
129
+
130
+ .seed-select-trigger__root--size_large {
131
+ height: var(--seed-dimension-x13);
132
+ gap: var(--seed-dimension-x2_5);
133
+ padding-inline: var(--seed-dimension-x4);
134
+ border-radius: var(--seed-radius-r3);
135
+ }
136
+
137
+ .seed-select-trigger__value--size_large, .seed-select-trigger__placeholder--size_large {
138
+ font-size: var(--seed-font-size-t5);
139
+ line-height: var(--seed-line-height-t5);
140
+ }
141
+
142
+ .seed-select-trigger__prefixIcon--size_large, .seed-select-trigger__suffixIcon--size_large {
143
+ width: var(--seed-dimension-x5);
144
+ height: var(--seed-dimension-x5);
145
+ }
146
+
147
+ .seed-select-trigger__root--size_medium {
148
+ height: var(--seed-dimension-x10);
149
+ gap: var(--seed-dimension-x2);
150
+ padding-inline: var(--seed-dimension-x3_5);
151
+ border-radius: var(--seed-radius-r2);
152
+ }
153
+
154
+ .seed-select-trigger__value--size_medium, .seed-select-trigger__placeholder--size_medium {
155
+ font-size: var(--seed-font-size-t4);
156
+ line-height: var(--seed-line-height-t4);
157
+ }
158
+
159
+ .seed-select-trigger__prefixIcon--size_medium, .seed-select-trigger__suffixIcon--size_medium {
160
+ width: var(--seed-dimension-x4);
161
+ height: var(--seed-dimension-x4);
162
+ }
163
+
164
+ .seed-select-trigger__root--size_responsive {
165
+ height: var(--seed-dimension-x13);
166
+ gap: var(--seed-dimension-x2_5);
167
+ padding-inline: var(--seed-dimension-x4);
168
+ border-radius: var(--seed-radius-r3);
169
+ }
170
+
171
+ @media (width >= 1280px) {
172
+ .seed-select-trigger__root--size_responsive {
173
+ height: var(--seed-dimension-x10);
174
+ gap: var(--seed-dimension-x2);
175
+ padding-inline: var(--seed-dimension-x3_5);
176
+ border-radius: var(--seed-radius-r2);
177
+ }
178
+ }
179
+
180
+ .seed-select-trigger__value--size_responsive {
181
+ font-size: var(--seed-font-size-t5);
182
+ line-height: var(--seed-line-height-t5);
183
+ }
184
+
185
+ @media (width >= 1280px) {
186
+ .seed-select-trigger__value--size_responsive {
187
+ font-size: var(--seed-font-size-t4);
188
+ line-height: var(--seed-line-height-t4);
189
+ }
190
+ }
191
+
192
+ .seed-select-trigger__placeholder--size_responsive {
193
+ font-size: var(--seed-font-size-t5);
194
+ line-height: var(--seed-line-height-t5);
195
+ }
196
+
197
+ @media (width >= 1280px) {
198
+ .seed-select-trigger__placeholder--size_responsive {
199
+ font-size: var(--seed-font-size-t4);
200
+ line-height: var(--seed-line-height-t4);
201
+ }
202
+ }
203
+
204
+ .seed-select-trigger__prefixIcon--size_responsive {
205
+ width: var(--seed-dimension-x5);
206
+ height: var(--seed-dimension-x5);
207
+ }
208
+
209
+ @media (width >= 1280px) {
210
+ .seed-select-trigger__prefixIcon--size_responsive {
211
+ width: var(--seed-dimension-x4);
212
+ height: var(--seed-dimension-x4);
213
+ }
214
+ }
215
+
216
+ .seed-select-trigger__suffixIcon--size_responsive {
217
+ width: var(--seed-dimension-x5);
218
+ height: var(--seed-dimension-x5);
219
+ }
220
+
221
+ @media (width >= 1280px) {
222
+ .seed-select-trigger__suffixIcon--size_responsive {
223
+ width: var(--seed-dimension-x4);
224
+ height: var(--seed-dimension-x4);
225
+ }
226
+ }
227
+ }
@@ -0,0 +1,56 @@
1
+ import './select-trigger.layered.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const selectTriggerSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-select-trigger__root"
8
+ ],
9
+ [
10
+ "value",
11
+ "seed-select-trigger__value"
12
+ ],
13
+ [
14
+ "placeholder",
15
+ "seed-select-trigger__placeholder"
16
+ ],
17
+ [
18
+ "prefixIcon",
19
+ "seed-select-trigger__prefixIcon"
20
+ ],
21
+ [
22
+ "suffixIcon",
23
+ "seed-select-trigger__suffixIcon"
24
+ ]
25
+ ];
26
+
27
+ const defaultVariant = {
28
+ "size": "large"
29
+ };
30
+
31
+ const compoundVariants = [];
32
+
33
+ export const selectTriggerVariantMap = {
34
+ "size": [
35
+ "large",
36
+ "medium",
37
+ "responsive"
38
+ ]
39
+ };
40
+
41
+ export const selectTriggerVariantKeys = Object.keys(selectTriggerVariantMap);
42
+
43
+ export function selectTrigger(props) {
44
+ return Object.fromEntries(
45
+ selectTriggerSlotNames.map(([slot, className]) => {
46
+ return [
47
+ slot,
48
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
49
+ ];
50
+ }),
51
+ );
52
+ }
53
+
54
+ Object.assign(selectTrigger, { splitVariantProps: (props) => splitVariantProps(props, selectTriggerVariantMap) });
55
+
56
+ // @recipe(seed): select-trigger
@@ -0,0 +1,56 @@
1
+ import './select-trigger.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const selectTriggerSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-select-trigger__root"
8
+ ],
9
+ [
10
+ "value",
11
+ "seed-select-trigger__value"
12
+ ],
13
+ [
14
+ "placeholder",
15
+ "seed-select-trigger__placeholder"
16
+ ],
17
+ [
18
+ "prefixIcon",
19
+ "seed-select-trigger__prefixIcon"
20
+ ],
21
+ [
22
+ "suffixIcon",
23
+ "seed-select-trigger__suffixIcon"
24
+ ]
25
+ ];
26
+
27
+ const defaultVariant = {
28
+ "size": "large"
29
+ };
30
+
31
+ const compoundVariants = [];
32
+
33
+ export const selectTriggerVariantMap = {
34
+ "size": [
35
+ "large",
36
+ "medium",
37
+ "responsive"
38
+ ]
39
+ };
40
+
41
+ export const selectTriggerVariantKeys = Object.keys(selectTriggerVariantMap);
42
+
43
+ export function selectTrigger(props) {
44
+ return Object.fromEntries(
45
+ selectTriggerSlotNames.map(([slot, className]) => {
46
+ return [
47
+ slot,
48
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
49
+ ];
50
+ }),
51
+ );
52
+ }
53
+
54
+ Object.assign(selectTrigger, { splitVariantProps: (props) => splitVariantProps(props, selectTriggerVariantMap) });
55
+
56
+ // @recipe(seed): select-trigger
@@ -0,0 +1,93 @@
1
+ .seed-select__positioner {
2
+ --select-z-index: 99999;
3
+ z-index: calc(var(--select-z-index) + var(--z-index-offset, 0));
4
+ outline: none;
5
+ }
6
+ .seed-select__content {
7
+ width: var(--seed-select-reference-width);
8
+ border-radius: var(--seed-radius-r5);
9
+ background: var(--seed-color-bg-layer-floating);
10
+ box-shadow: var(--seed-shadow-s3);
11
+ transform-origin: var(--seed-select-transform-origin);
12
+ overflow: hidden;
13
+ }
14
+ .seed-select__content:is([data-state="open"], [data-open]) {
15
+ animation: seed-enter;
16
+ animation-timing-function: var(--seed-timing-function-enter);
17
+ animation-duration: var(--seed-duration-d3);
18
+ --seed-enter-translate-x: 0;
19
+ --seed-enter-translate-y: 0;
20
+ --seed-enter-opacity: 0;
21
+ --seed-enter-scale: 0.95;
22
+ }
23
+ .seed-select__content:not(:is([data-state="open"], [data-open])) {
24
+ animation: seed-exit;
25
+ animation-timing-function: var(--seed-timing-function-exit);
26
+ animation-duration: var(--seed-duration-d2);
27
+ animation-fill-mode: forwards;
28
+ --seed-exit-translate-x: 0;
29
+ --seed-exit-translate-y: 0;
30
+ --seed-exit-opacity: 0;
31
+ --seed-exit-scale: 0.95;
32
+ }
33
+ .seed-select__content:is([hidden], [data-hidden]) {
34
+ display: none !important;
35
+ }
36
+ .seed-select__content:is(:focus, [data-focus]) {
37
+ outline: none;
38
+ }
39
+ .seed-select__scrollArea {
40
+ overflow-y: auto;
41
+ max-height: min(480px, var(--seed-select-available-height, 480px));
42
+ box-sizing: border-box;
43
+ padding-block: var(--seed-dimension-x2);
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: var(--seed-dimension-x2);
47
+ }
48
+ .seed-select__group {
49
+ display: flex;
50
+ flex-direction: column;
51
+ }
52
+ .seed-select__group + .seed-select__group::before {
53
+ content: "";
54
+ display: block;
55
+ margin-inline: var(--seed-dimension-x4);
56
+ margin-bottom: var(--seed-dimension-x2);
57
+ height: 1px;
58
+ flex-shrink: 0;
59
+ background-color: var(--seed-color-stroke-neutral-muted);
60
+ }
61
+ .seed-select__groupLabel {
62
+ color: var(--seed-color-fg-neutral-subtle);
63
+ }
64
+ .seed-select__groupLabel--size_large {
65
+ padding-block: var(--seed-dimension-x2_5);
66
+ padding-inline: var(--seed-dimension-x4);
67
+ font-size: var(--seed-font-size-t4);
68
+ line-height: var(--seed-line-height-t4);
69
+ font-weight: var(--seed-font-weight-medium);
70
+ }
71
+ .seed-select__groupLabel--size_medium {
72
+ padding-block: var(--seed-dimension-x2);
73
+ padding-inline: var(--seed-dimension-x4);
74
+ font-size: var(--seed-font-size-t3);
75
+ line-height: var(--seed-line-height-t3);
76
+ font-weight: var(--seed-font-weight-regular);
77
+ }
78
+ .seed-select__groupLabel--size_responsive {
79
+ padding-block: var(--seed-dimension-x2_5);
80
+ padding-inline: var(--seed-dimension-x4);
81
+ font-size: var(--seed-font-size-t4);
82
+ line-height: var(--seed-line-height-t4);
83
+ font-weight: var(--seed-font-weight-medium);
84
+ }
85
+ @media (min-width: 1280px) {
86
+ .seed-select__groupLabel--size_responsive {
87
+ padding-block: var(--seed-dimension-x2);
88
+ padding-inline: var(--seed-dimension-x4);
89
+ font-size: var(--seed-font-size-t3);
90
+ line-height: var(--seed-line-height-t3);
91
+ font-weight: var(--seed-font-weight-regular);
92
+ }
93
+ }
@@ -0,0 +1,28 @@
1
+ declare interface SelectVariant {
2
+ /**
3
+ * - `large`: 뷰포트 너비와 관계없이 사용할 수 있습니다.
4
+ * - `medium`: Breakpoint `lg` 이상(데스크톱)에서만 사용하고, 모바일에서는 사용하지 않습니다. 정밀한 선택이 가능한 마우스 입력 환경에서 사이즈를 더 작게 만들고자 할 때 사용합니다.
5
+ * - `responsive`: 뷰포트 너비에 따라 적용되는 사이즈가 달라집니다. Breakpoint `lg` 미만에서는 `large`, `lg` 이상에서는 `medium`으로 적용됩니다.
6
+ *
7
+ * @default "large"
8
+ */
9
+ size: "large" | "medium" | "responsive";
10
+ }
11
+
12
+ declare type SelectVariantMap = {
13
+ [key in keyof SelectVariant]: Array<SelectVariant[key]>;
14
+ };
15
+
16
+ export declare type SelectVariantProps = Partial<SelectVariant>;
17
+
18
+ export declare type SelectSlotName = "positioner" | "content" | "scrollArea" | "group" | "groupLabel";
19
+
20
+ export declare const selectVariantMap: SelectVariantMap;
21
+
22
+ export declare const select: ((
23
+ props?: SelectVariantProps,
24
+ ) => Record<SelectSlotName, string>) & {
25
+ splitVariantProps: <T extends SelectVariantProps>(
26
+ props: T,
27
+ ) => [SelectVariantProps, Omit<T, keyof SelectVariantProps>];
28
+ }
@@ -0,0 +1,108 @@
1
+ @layer seed-components {
2
+ .seed-select__positioner {
3
+ --select-z-index: 99999;
4
+ z-index: calc(var(--select-z-index) + var(--z-index-offset, 0));
5
+ outline: none;
6
+ }
7
+
8
+ .seed-select__content {
9
+ width: var(--seed-select-reference-width);
10
+ border-radius: var(--seed-radius-r5);
11
+ background: var(--seed-color-bg-layer-floating);
12
+ box-shadow: var(--seed-shadow-s3);
13
+ transform-origin: var(--seed-select-transform-origin);
14
+ overflow: hidden;
15
+ }
16
+
17
+ .seed-select__content:is([data-state="open"], [data-open]) {
18
+ animation: seed-enter;
19
+ animation-timing-function: var(--seed-timing-function-enter);
20
+ animation-duration: var(--seed-duration-d3);
21
+ --seed-enter-translate-x: 0;
22
+ --seed-enter-translate-y: 0;
23
+ --seed-enter-opacity: 0;
24
+ --seed-enter-scale: .95;
25
+ }
26
+
27
+ .seed-select__content:not(:is([data-state="open"], [data-open])) {
28
+ animation: seed-exit;
29
+ animation-timing-function: var(--seed-timing-function-exit);
30
+ animation-duration: var(--seed-duration-d2);
31
+ --seed-exit-translate-x: 0;
32
+ --seed-exit-translate-y: 0;
33
+ --seed-exit-opacity: 0;
34
+ --seed-exit-scale: .95;
35
+ animation-fill-mode: forwards;
36
+ }
37
+
38
+ .seed-select__content:is([hidden], [data-hidden]) {
39
+ display: none !important;
40
+ }
41
+
42
+ .seed-select__content:is(:focus, [data-focus]) {
43
+ outline: none;
44
+ }
45
+
46
+ .seed-select__scrollArea {
47
+ max-height: min(480px, var(--seed-select-available-height, 480px));
48
+ box-sizing: border-box;
49
+ padding-block: var(--seed-dimension-x2);
50
+ gap: var(--seed-dimension-x2);
51
+ flex-direction: column;
52
+ display: flex;
53
+ overflow-y: auto;
54
+ }
55
+
56
+ .seed-select__group {
57
+ flex-direction: column;
58
+ display: flex;
59
+ }
60
+
61
+ .seed-select__group + .seed-select__group:before {
62
+ content: "";
63
+ margin-inline: var(--seed-dimension-x4);
64
+ margin-bottom: var(--seed-dimension-x2);
65
+ background-color: var(--seed-color-stroke-neutral-muted);
66
+ flex-shrink: 0;
67
+ height: 1px;
68
+ display: block;
69
+ }
70
+
71
+ .seed-select__groupLabel {
72
+ color: var(--seed-color-fg-neutral-subtle);
73
+ }
74
+
75
+ .seed-select__groupLabel--size_large {
76
+ padding-block: var(--seed-dimension-x2_5);
77
+ padding-inline: var(--seed-dimension-x4);
78
+ font-size: var(--seed-font-size-t4);
79
+ line-height: var(--seed-line-height-t4);
80
+ font-weight: var(--seed-font-weight-medium);
81
+ }
82
+
83
+ .seed-select__groupLabel--size_medium {
84
+ padding-block: var(--seed-dimension-x2);
85
+ padding-inline: var(--seed-dimension-x4);
86
+ font-size: var(--seed-font-size-t3);
87
+ line-height: var(--seed-line-height-t3);
88
+ font-weight: var(--seed-font-weight-regular);
89
+ }
90
+
91
+ .seed-select__groupLabel--size_responsive {
92
+ padding-block: var(--seed-dimension-x2_5);
93
+ padding-inline: var(--seed-dimension-x4);
94
+ font-size: var(--seed-font-size-t4);
95
+ line-height: var(--seed-line-height-t4);
96
+ font-weight: var(--seed-font-weight-medium);
97
+ }
98
+
99
+ @media (width >= 1280px) {
100
+ .seed-select__groupLabel--size_responsive {
101
+ padding-block: var(--seed-dimension-x2);
102
+ padding-inline: var(--seed-dimension-x4);
103
+ font-size: var(--seed-font-size-t3);
104
+ line-height: var(--seed-line-height-t3);
105
+ font-weight: var(--seed-font-weight-regular);
106
+ }
107
+ }
108
+ }
@@ -0,0 +1,56 @@
1
+ import './select.layered.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const selectSlotNames = [
5
+ [
6
+ "positioner",
7
+ "seed-select__positioner"
8
+ ],
9
+ [
10
+ "content",
11
+ "seed-select__content"
12
+ ],
13
+ [
14
+ "scrollArea",
15
+ "seed-select__scrollArea"
16
+ ],
17
+ [
18
+ "group",
19
+ "seed-select__group"
20
+ ],
21
+ [
22
+ "groupLabel",
23
+ "seed-select__groupLabel"
24
+ ]
25
+ ];
26
+
27
+ const defaultVariant = {
28
+ "size": "large"
29
+ };
30
+
31
+ const compoundVariants = [];
32
+
33
+ export const selectVariantMap = {
34
+ "size": [
35
+ "large",
36
+ "medium",
37
+ "responsive"
38
+ ]
39
+ };
40
+
41
+ export const selectVariantKeys = Object.keys(selectVariantMap);
42
+
43
+ export function select(props) {
44
+ return Object.fromEntries(
45
+ selectSlotNames.map(([slot, className]) => {
46
+ return [
47
+ slot,
48
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
49
+ ];
50
+ }),
51
+ );
52
+ }
53
+
54
+ Object.assign(select, { splitVariantProps: (props) => splitVariantProps(props, selectVariantMap) });
55
+
56
+ // @recipe(seed): select
@@ -0,0 +1,56 @@
1
+ import './select.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const selectSlotNames = [
5
+ [
6
+ "positioner",
7
+ "seed-select__positioner"
8
+ ],
9
+ [
10
+ "content",
11
+ "seed-select__content"
12
+ ],
13
+ [
14
+ "scrollArea",
15
+ "seed-select__scrollArea"
16
+ ],
17
+ [
18
+ "group",
19
+ "seed-select__group"
20
+ ],
21
+ [
22
+ "groupLabel",
23
+ "seed-select__groupLabel"
24
+ ]
25
+ ];
26
+
27
+ const defaultVariant = {
28
+ "size": "large"
29
+ };
30
+
31
+ const compoundVariants = [];
32
+
33
+ export const selectVariantMap = {
34
+ "size": [
35
+ "large",
36
+ "medium",
37
+ "responsive"
38
+ ]
39
+ };
40
+
41
+ export const selectVariantKeys = Object.keys(selectVariantMap);
42
+
43
+ export function select(props) {
44
+ return Object.fromEntries(
45
+ selectSlotNames.map(([slot, className]) => {
46
+ return [
47
+ slot,
48
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
49
+ ];
50
+ }),
51
+ );
52
+ }
53
+
54
+ Object.assign(select, { splitVariantProps: (props) => splitVariantProps(props, selectVariantMap) });
55
+
56
+ // @recipe(seed): select