@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,71 @@
1
+ import './content-dialog.layered.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const contentDialogSlotNames = [
5
+ [
6
+ "positioner",
7
+ "seed-content-dialog__positioner"
8
+ ],
9
+ [
10
+ "backdrop",
11
+ "seed-content-dialog__backdrop"
12
+ ],
13
+ [
14
+ "content",
15
+ "seed-content-dialog__content"
16
+ ],
17
+ [
18
+ "header",
19
+ "seed-content-dialog__header"
20
+ ],
21
+ [
22
+ "body",
23
+ "seed-content-dialog__body"
24
+ ],
25
+ [
26
+ "footer",
27
+ "seed-content-dialog__footer"
28
+ ],
29
+ [
30
+ "title",
31
+ "seed-content-dialog__title"
32
+ ],
33
+ [
34
+ "description",
35
+ "seed-content-dialog__description"
36
+ ],
37
+ [
38
+ "closeButton",
39
+ "seed-content-dialog__closeButton"
40
+ ]
41
+ ];
42
+
43
+ const defaultVariant = {
44
+ "size": "medium"
45
+ };
46
+
47
+ const compoundVariants = [];
48
+
49
+ export const contentDialogVariantMap = {
50
+ "size": [
51
+ "medium",
52
+ "large"
53
+ ]
54
+ };
55
+
56
+ export const contentDialogVariantKeys = Object.keys(contentDialogVariantMap);
57
+
58
+ export function contentDialog(props) {
59
+ return Object.fromEntries(
60
+ contentDialogSlotNames.map(([slot, className]) => {
61
+ return [
62
+ slot,
63
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
64
+ ];
65
+ }),
66
+ );
67
+ }
68
+
69
+ Object.assign(contentDialog, { splitVariantProps: (props) => splitVariantProps(props, contentDialogVariantMap) });
70
+
71
+ // @recipe(seed): content-dialog
@@ -0,0 +1,71 @@
1
+ import './content-dialog.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const contentDialogSlotNames = [
5
+ [
6
+ "positioner",
7
+ "seed-content-dialog__positioner"
8
+ ],
9
+ [
10
+ "backdrop",
11
+ "seed-content-dialog__backdrop"
12
+ ],
13
+ [
14
+ "content",
15
+ "seed-content-dialog__content"
16
+ ],
17
+ [
18
+ "header",
19
+ "seed-content-dialog__header"
20
+ ],
21
+ [
22
+ "body",
23
+ "seed-content-dialog__body"
24
+ ],
25
+ [
26
+ "footer",
27
+ "seed-content-dialog__footer"
28
+ ],
29
+ [
30
+ "title",
31
+ "seed-content-dialog__title"
32
+ ],
33
+ [
34
+ "description",
35
+ "seed-content-dialog__description"
36
+ ],
37
+ [
38
+ "closeButton",
39
+ "seed-content-dialog__closeButton"
40
+ ]
41
+ ];
42
+
43
+ const defaultVariant = {
44
+ "size": "medium"
45
+ };
46
+
47
+ const compoundVariants = [];
48
+
49
+ export const contentDialogVariantMap = {
50
+ "size": [
51
+ "medium",
52
+ "large"
53
+ ]
54
+ };
55
+
56
+ export const contentDialogVariantKeys = Object.keys(contentDialogVariantMap);
57
+
58
+ export function contentDialog(props) {
59
+ return Object.fromEntries(
60
+ contentDialogSlotNames.map(([slot, className]) => {
61
+ return [
62
+ slot,
63
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
64
+ ];
65
+ }),
66
+ );
67
+ }
68
+
69
+ Object.assign(contentDialog, { splitVariantProps: (props) => splitVariantProps(props, contentDialogVariantMap) });
70
+
71
+ // @recipe(seed): content-dialog
@@ -2,6 +2,7 @@
2
2
  position: relative;
3
3
  overflow: hidden;
4
4
  border-radius: inherit;
5
+ isolation: isolate;
5
6
  }
6
7
  .seed-image-frame__content {
7
8
  display: block;
@@ -10,10 +11,19 @@
10
11
  object-fit: cover;
11
12
  border-radius: inherit;
12
13
  }
13
- .seed-image-frame__content:not([data-loading-state='loaded']) {
14
+ .seed-image-frame__content[data-loading-state='error'] {
15
+ display: none;
16
+ }
17
+ .seed-image-frame__content:is([hidden], [data-hidden]) {
14
18
  display: none;
15
19
  }
20
+ .seed-image-frame__content:not([data-loading-state='loaded']) {
21
+ pointer-events: none;
22
+ }
16
23
  .seed-image-frame__fallback {
24
+ position: absolute;
25
+ inset: 0;
26
+ z-index: -1;
17
27
  width: 100%;
18
28
  height: 100%;
19
29
  }
@@ -1,6 +1,7 @@
1
1
  @layer seed-components {
2
2
  .seed-image-frame__root {
3
3
  border-radius: inherit;
4
+ isolation: isolate;
4
5
  position: relative;
5
6
  overflow: hidden;
6
7
  }
@@ -13,13 +14,20 @@
13
14
  display: block;
14
15
  }
15
16
 
16
- .seed-image-frame__content:not([data-loading-state="loaded"]) {
17
+ .seed-image-frame__content[data-loading-state="error"], .seed-image-frame__content:is([hidden], [data-hidden]) {
17
18
  display: none;
18
19
  }
19
20
 
21
+ .seed-image-frame__content:not([data-loading-state="loaded"]) {
22
+ pointer-events: none;
23
+ }
24
+
20
25
  .seed-image-frame__fallback {
26
+ z-index: -1;
21
27
  width: 100%;
22
28
  height: 100%;
29
+ position: absolute;
30
+ inset: 0;
23
31
  }
24
32
 
25
33
  .seed-image-frame__fallback[data-loading-state="loaded"] {
@@ -0,0 +1,230 @@
1
+ .seed-quantity-picker__root {
2
+ display: inline-flex;
3
+ width: fit-content;
4
+ align-items: center;
5
+ box-sizing: border-box;
6
+ background-color: var(--seed-color-bg-layer-default);
7
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-weak);
8
+ }
9
+ .seed-quantity-picker__root:is(:invalid, [data-invalid]) {
10
+ box-shadow: inset 0 0 0 2px var(--seed-color-stroke-critical-solid);
11
+ }
12
+ .seed-quantity-picker__decrementButton {
13
+ display: inline-flex;
14
+ flex-shrink: 0;
15
+ align-items: center;
16
+ justify-content: center;
17
+ box-sizing: border-box;
18
+ cursor: pointer;
19
+ border: none;
20
+ padding: 0;
21
+ background-color: var(--seed-color-bg-transparent);
22
+ transition: background-color var(--seed-duration-color-transition) var(--seed-timing-function-easing), outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
23
+ outline: var(--seed-dimension-x0_5) solid transparent;
24
+ outline-offset: var(--seed-dimension-x0_5);
25
+ }
26
+ .seed-quantity-picker__decrementButton:is(:focus-visible, [data-focus-visible]) {
27
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
28
+ outline-offset: var(--seed-dimension-x0_5);
29
+ }
30
+ @media (hover: hover) and (pointer: fine) {
31
+ .seed-quantity-picker__decrementButton:not(:is(:disabled, [disabled], [data-disabled])):is(:hover, [data-hover]) {
32
+ background-color: var(--seed-color-bg-transparent-pressed);
33
+ }
34
+ }
35
+ @media not all and (hover: hover) and (pointer: fine) {
36
+ .seed-quantity-picker__decrementButton:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active]) {
37
+ background-color: var(--seed-color-bg-transparent-pressed);
38
+ }
39
+ }
40
+ .seed-quantity-picker__decrementButton:is(:disabled, [disabled], [data-disabled]) {
41
+ cursor: not-allowed;
42
+ }
43
+ .seed-quantity-picker__decrementButton[data-loading] {
44
+ background-color: var(--seed-color-bg-transparent-pressed);
45
+ }
46
+ .seed-quantity-picker__decrementIcon {
47
+ flex-shrink: 0;
48
+ color: var(--seed-color-fg-neutral);
49
+ --track-color: var(--seed-color-palette-gray-500);
50
+ --range-color: var(--seed-color-fg-neutral);
51
+ }
52
+ .seed-quantity-picker__decrementIcon:is(:disabled, [disabled], [data-disabled]) {
53
+ color: var(--seed-color-fg-disabled);
54
+ }
55
+ .seed-quantity-picker__valueDisplay {
56
+ display: grid;
57
+ flex-shrink: 0;
58
+ align-items: center;
59
+ justify-content: center;
60
+ box-sizing: border-box;
61
+ font-weight: var(--seed-font-weight-medium);
62
+ color: var(--seed-color-fg-neutral);
63
+ }
64
+ .seed-quantity-picker__valueDisplay:is(:disabled, [disabled], [data-disabled]) {
65
+ color: var(--seed-color-fg-disabled);
66
+ }
67
+ .seed-quantity-picker__valueDisplayPlaceholder {
68
+ grid-column: 1;
69
+ grid-row: 1;
70
+ visibility: hidden;
71
+ font-variant-numeric: tabular-nums;
72
+ }
73
+ .seed-quantity-picker__valueDisplayText {
74
+ grid-column: 1;
75
+ grid-row: 1;
76
+ text-align: center;
77
+ font-variant-numeric: tabular-nums;
78
+ }
79
+ .seed-quantity-picker__divider {
80
+ flex-shrink: 0;
81
+ background-color: var(--seed-color-stroke-neutral-subtle);
82
+ }
83
+ .seed-quantity-picker__incrementButton {
84
+ display: inline-flex;
85
+ flex-shrink: 0;
86
+ align-items: center;
87
+ justify-content: center;
88
+ box-sizing: border-box;
89
+ cursor: pointer;
90
+ border: none;
91
+ padding: 0;
92
+ background-color: var(--seed-color-bg-transparent);
93
+ transition: background-color var(--seed-duration-color-transition) var(--seed-timing-function-easing), outline-color var(--seed-duration-d3) var(--seed-timing-function-easing);
94
+ outline: var(--seed-dimension-x0_5) solid transparent;
95
+ outline-offset: var(--seed-dimension-x0_5);
96
+ }
97
+ .seed-quantity-picker__incrementButton:is(:focus-visible, [data-focus-visible]) {
98
+ outline: var(--seed-dimension-x0_5) solid var(--seed-color-stroke-focus-ring);
99
+ outline-offset: var(--seed-dimension-x0_5);
100
+ }
101
+ @media (hover: hover) and (pointer: fine) {
102
+ .seed-quantity-picker__incrementButton:not(:is(:disabled, [disabled], [data-disabled])):is(:hover, [data-hover]) {
103
+ background-color: var(--seed-color-bg-transparent-pressed);
104
+ }
105
+ }
106
+ @media not all and (hover: hover) and (pointer: fine) {
107
+ .seed-quantity-picker__incrementButton:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active]) {
108
+ background-color: var(--seed-color-bg-transparent-pressed);
109
+ }
110
+ }
111
+ .seed-quantity-picker__incrementButton:is(:disabled, [disabled], [data-disabled]) {
112
+ cursor: not-allowed;
113
+ }
114
+ .seed-quantity-picker__incrementButton[data-loading] {
115
+ background-color: var(--seed-color-bg-transparent-pressed);
116
+ }
117
+ .seed-quantity-picker__incrementIcon {
118
+ flex-shrink: 0;
119
+ color: var(--seed-color-fg-neutral);
120
+ --track-color: var(--seed-color-palette-gray-500);
121
+ --range-color: var(--seed-color-fg-neutral);
122
+ }
123
+ .seed-quantity-picker__incrementIcon:is(:disabled, [disabled], [data-disabled]) {
124
+ color: var(--seed-color-fg-disabled);
125
+ }
126
+ .seed-quantity-picker__root--size_small {
127
+ height: var(--seed-dimension-x9);
128
+ border-radius: var(--seed-radius-r2);
129
+ }
130
+ .seed-quantity-picker__decrementButton--size_small {
131
+ width: var(--seed-dimension-x9);
132
+ height: var(--seed-dimension-x9);
133
+ border-radius: var(--seed-radius-r2);
134
+ }
135
+ .seed-quantity-picker__decrementIcon--size_small {
136
+ width: 16px;
137
+ height: 16px;
138
+ --size: 16px;
139
+ --thickness: 2px;
140
+ }
141
+ .seed-quantity-picker__valueDisplay--size_small {
142
+ padding-inline: var(--seed-dimension-x2);
143
+ font-size: var(--seed-font-size-t5);
144
+ line-height: var(--seed-line-height-t5);
145
+ }
146
+ .seed-quantity-picker__divider--size_small {
147
+ width: 1px;
148
+ height: var(--seed-dimension-x4);
149
+ }
150
+ .seed-quantity-picker__incrementButton--size_small {
151
+ width: var(--seed-dimension-x9);
152
+ height: var(--seed-dimension-x9);
153
+ border-radius: var(--seed-radius-r2);
154
+ }
155
+ .seed-quantity-picker__incrementIcon--size_small {
156
+ width: 16px;
157
+ height: 16px;
158
+ --size: 16px;
159
+ --thickness: 2px;
160
+ }
161
+ .seed-quantity-picker__root--size_medium {
162
+ height: var(--seed-dimension-x10);
163
+ border-radius: var(--seed-radius-r2);
164
+ }
165
+ .seed-quantity-picker__decrementButton--size_medium {
166
+ width: var(--seed-dimension-x10);
167
+ height: var(--seed-dimension-x10);
168
+ border-radius: var(--seed-radius-r2);
169
+ }
170
+ .seed-quantity-picker__decrementIcon--size_medium {
171
+ width: 18px;
172
+ height: 18px;
173
+ --size: 18px;
174
+ --thickness: 2px;
175
+ }
176
+ .seed-quantity-picker__valueDisplay--size_medium {
177
+ padding-inline: var(--seed-dimension-x2);
178
+ font-size: var(--seed-font-size-t5);
179
+ line-height: var(--seed-line-height-t5);
180
+ }
181
+ .seed-quantity-picker__divider--size_medium {
182
+ width: 1px;
183
+ height: var(--seed-dimension-x4);
184
+ }
185
+ .seed-quantity-picker__incrementButton--size_medium {
186
+ width: var(--seed-dimension-x10);
187
+ height: var(--seed-dimension-x10);
188
+ border-radius: var(--seed-radius-r2);
189
+ }
190
+ .seed-quantity-picker__incrementIcon--size_medium {
191
+ width: 18px;
192
+ height: 18px;
193
+ --size: 18px;
194
+ --thickness: 2px;
195
+ }
196
+ .seed-quantity-picker__root--size_large {
197
+ height: var(--seed-dimension-x13);
198
+ border-radius: var(--seed-radius-r3);
199
+ }
200
+ .seed-quantity-picker__decrementButton--size_large {
201
+ width: var(--seed-dimension-x13);
202
+ height: var(--seed-dimension-x13);
203
+ border-radius: var(--seed-radius-r3);
204
+ }
205
+ .seed-quantity-picker__decrementIcon--size_large {
206
+ width: 22px;
207
+ height: 22px;
208
+ --size: 22px;
209
+ --thickness: 2px;
210
+ }
211
+ .seed-quantity-picker__valueDisplay--size_large {
212
+ padding-inline: var(--seed-dimension-x2);
213
+ font-size: var(--seed-font-size-t6);
214
+ line-height: var(--seed-line-height-t6);
215
+ }
216
+ .seed-quantity-picker__divider--size_large {
217
+ width: 1px;
218
+ height: var(--seed-dimension-x4);
219
+ }
220
+ .seed-quantity-picker__incrementButton--size_large {
221
+ width: var(--seed-dimension-x13);
222
+ height: var(--seed-dimension-x13);
223
+ border-radius: var(--seed-radius-r3);
224
+ }
225
+ .seed-quantity-picker__incrementIcon--size_large {
226
+ width: 22px;
227
+ height: 22px;
228
+ --size: 22px;
229
+ --thickness: 2px;
230
+ }
@@ -0,0 +1,24 @@
1
+ declare interface QuantityPickerVariant {
2
+ /**
3
+ * @default "medium"
4
+ */
5
+ size: "small" | "medium" | "large";
6
+ }
7
+
8
+ declare type QuantityPickerVariantMap = {
9
+ [key in keyof QuantityPickerVariant]: Array<QuantityPickerVariant[key]>;
10
+ };
11
+
12
+ export declare type QuantityPickerVariantProps = Partial<QuantityPickerVariant>;
13
+
14
+ export declare type QuantityPickerSlotName = "root" | "decrementButton" | "decrementIcon" | "valueDisplay" | "valueDisplayPlaceholder" | "valueDisplayText" | "divider" | "incrementButton" | "incrementIcon";
15
+
16
+ export declare const quantityPickerVariantMap: QuantityPickerVariantMap;
17
+
18
+ export declare const quantityPicker: ((
19
+ props?: QuantityPickerVariantProps,
20
+ ) => Record<QuantityPickerSlotName, string>) & {
21
+ splitVariantProps: <T extends QuantityPickerVariantProps>(
22
+ props: T,
23
+ ) => [QuantityPickerVariantProps, Omit<T, keyof QuantityPickerVariantProps>];
24
+ }