@seed-design/css 2.3.1 → 2.4.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 (58) hide show
  1. package/all.css +744 -61
  2. package/all.layered.css +748 -65
  3. package/all.layered.min.css +1 -1
  4. package/all.min.css +1 -1
  5. package/base.css +21 -4
  6. package/base.layered.css +21 -4
  7. package/base.layered.min.css +1 -1
  8. package/base.min.css +1 -1
  9. package/package.json +1 -1
  10. package/recipes/accordion.layered.css +6 -6
  11. package/recipes/action-button.layered.css +4 -4
  12. package/recipes/article.layered.css +1 -0
  13. package/recipes/attachment-input-item.layered.css +12 -0
  14. package/recipes/avatar.layered.css +15 -0
  15. package/recipes/bottom-sheet.layered.css +4 -4
  16. package/recipes/content-dialog.layered.css +7 -5
  17. package/recipes/date-picker.css +400 -0
  18. package/recipes/date-picker.d.ts +24 -0
  19. package/recipes/date-picker.layered.css +461 -0
  20. package/recipes/date-picker.layered.mjs +165 -0
  21. package/recipes/date-picker.mjs +165 -0
  22. package/recipes/help-bubble.layered.css +4 -4
  23. package/recipes/input-button.layered.css +9 -9
  24. package/recipes/layout.layered.css +2 -2
  25. package/recipes/list-item.layered.css +4 -4
  26. package/recipes/menu-item.layered.css +4 -3
  27. package/recipes/menu.layered.css +2 -2
  28. package/recipes/quantity-picker.css +4 -0
  29. package/recipes/quantity-picker.d.ts +4 -0
  30. package/recipes/quantity-picker.layered.css +5 -0
  31. package/recipes/quantity-picker.layered.mjs +5 -0
  32. package/recipes/quantity-picker.mjs +5 -0
  33. package/recipes/scroll-fog.layered.css +2 -0
  34. package/recipes/segmented-control.layered.css +1 -0
  35. package/recipes/select-item.layered.css +6 -5
  36. package/recipes/select-trigger.layered.css +5 -5
  37. package/recipes/select.layered.css +1 -1
  38. package/recipes/side-panel.layered.css +6 -5
  39. package/recipes/skeleton.layered.css +4 -4
  40. package/recipes/slider.layered.css +1 -0
  41. package/recipes/tag-group.layered.css +1 -0
  42. package/recipes/text-input.layered.css +34 -22
  43. package/recipes/time-picker.css +44 -0
  44. package/recipes/time-picker.d.ts +21 -0
  45. package/recipes/time-picker.layered.css +53 -0
  46. package/recipes/time-picker.layered.mjs +60 -0
  47. package/recipes/time-picker.mjs +60 -0
  48. package/recipes/wheel-picker.css +85 -0
  49. package/recipes/wheel-picker.d.ts +21 -0
  50. package/recipes/wheel-picker.layered.css +100 -0
  51. package/recipes/wheel-picker.layered.mjs +52 -0
  52. package/recipes/wheel-picker.mjs +52 -0
  53. package/vars/component/date-picker.d.ts +98 -0
  54. package/vars/component/date-picker.mjs +98 -0
  55. package/vars/component/index.d.ts +2 -0
  56. package/vars/component/index.mjs +2 -0
  57. package/vars/component/time-picker.d.ts +27 -0
  58. package/vars/component/time-picker.mjs +27 -0
@@ -2,6 +2,7 @@
2
2
  .seed-slider__root {
3
3
  align-items: stretch;
4
4
  gap: var(--seed-dimension-x0_5);
5
+ -webkit-user-select: none;
5
6
  user-select: none;
6
7
  touch-action: none;
7
8
  flex-direction: column;
@@ -3,6 +3,7 @@
3
3
  color: var(--seed-color-palette-gray-600);
4
4
  font-weight: var(--seed-font-weight-regular);
5
5
  white-space: pre;
6
+ -webkit-user-select: none;
6
7
  user-select: none;
7
8
  }
8
9
 
@@ -40,13 +40,25 @@
40
40
  font-weight: var(--seed-font-weight-regular);
41
41
  }
42
42
 
43
+ .seed-text-input__value:-webkit-any(:-webkit-autofill, :-webkit-autofill) {
44
+ -webkit-text-fill-color: var(--seed-color-fg-neutral);
45
+ transition: background-color 2147480000s 2147480000s;
46
+ }
47
+
43
48
  .seed-text-input__value:is(:autofill, :autofill) {
44
49
  -webkit-text-fill-color: var(--seed-color-fg-neutral);
45
50
  transition: background-color 2147480000s 2147480000s;
46
51
  }
47
52
 
48
- @supports (background-clip: text) {
53
+ @supports ((-webkit-background-clip: text) or (background-clip: text)) {
54
+ .seed-text-input__value:-webkit-any(:-webkit-autofill, :-webkit-autofill) {
55
+ -webkit-background-clip: text;
56
+ background-clip: text;
57
+ transition: none;
58
+ }
59
+
49
60
  .seed-text-input__value:is(:autofill, :autofill) {
61
+ -webkit-background-clip: text;
50
62
  background-clip: text;
51
63
  transition: none;
52
64
  }
@@ -158,7 +170,7 @@
158
170
  padding-block: var(--seed-dimension-x3_5);
159
171
  }
160
172
 
161
- @media (width >= 1280px) {
173
+ @media (min-width: 1280px) {
162
174
  .seed-text-input__value--size_responsive:is(textarea) {
163
175
  min-height: 82px;
164
176
  padding-block: var(--seed-dimension-x3);
@@ -281,7 +293,7 @@
281
293
  border-radius: var(--seed-radius-r3);
282
294
  }
283
295
 
284
- @media (width >= 1280px) {
296
+ @media (min-width: 1280px) {
285
297
  .seed-text-input__root--variant_outline-size_responsive {
286
298
  gap: var(--seed-dimension-x2);
287
299
  min-height: var(--seed-dimension-x10);
@@ -294,7 +306,7 @@
294
306
  line-height: var(--seed-line-height-t5);
295
307
  }
296
308
 
297
- @media (width >= 1280px) {
309
+ @media (min-width: 1280px) {
298
310
  .seed-text-input__value--variant_outline-size_responsive {
299
311
  font-size: var(--seed-font-size-t4);
300
312
  line-height: var(--seed-line-height-t4);
@@ -306,7 +318,7 @@
306
318
  line-height: var(--seed-line-height-t5);
307
319
  }
308
320
 
309
- @media (width >= 1280px) {
321
+ @media (min-width: 1280px) {
310
322
  .seed-text-input__value--variant_outline-size_responsive::placeholder {
311
323
  font-size: var(--seed-font-size-t4);
312
324
  line-height: var(--seed-line-height-t4);
@@ -317,7 +329,7 @@
317
329
  padding-left: var(--seed-dimension-x4);
318
330
  }
319
331
 
320
- @media (width >= 1280px) {
332
+ @media (min-width: 1280px) {
321
333
  .seed-text-input__value--variant_outline-size_responsive:first-child {
322
334
  padding-left: var(--seed-dimension-x3_5);
323
335
  }
@@ -327,7 +339,7 @@
327
339
  padding-right: var(--seed-dimension-x4);
328
340
  }
329
341
 
330
- @media (width >= 1280px) {
342
+ @media (min-width: 1280px) {
331
343
  .seed-text-input__value--variant_outline-size_responsive:last-child {
332
344
  padding-right: var(--seed-dimension-x3_5);
333
345
  }
@@ -338,7 +350,7 @@
338
350
  line-height: var(--seed-line-height-t5);
339
351
  }
340
352
 
341
- @media (width >= 1280px) {
353
+ @media (min-width: 1280px) {
342
354
  .seed-text-input__prefixText--variant_outline-size_responsive {
343
355
  font-size: var(--seed-font-size-t4);
344
356
  line-height: var(--seed-line-height-t4);
@@ -349,7 +361,7 @@
349
361
  margin-left: var(--seed-dimension-x4);
350
362
  }
351
363
 
352
- @media (width >= 1280px) {
364
+ @media (min-width: 1280px) {
353
365
  .seed-text-input__prefixText--variant_outline-size_responsive:first-child {
354
366
  margin-left: var(--seed-dimension-x3_5);
355
367
  }
@@ -360,7 +372,7 @@
360
372
  height: var(--seed-dimension-x5);
361
373
  }
362
374
 
363
- @media (width >= 1280px) {
375
+ @media (min-width: 1280px) {
364
376
  .seed-text-input__prefixIcon--variant_outline-size_responsive {
365
377
  width: var(--seed-dimension-x4);
366
378
  height: var(--seed-dimension-x4);
@@ -371,7 +383,7 @@
371
383
  margin-left: var(--seed-dimension-x4);
372
384
  }
373
385
 
374
- @media (width >= 1280px) {
386
+ @media (min-width: 1280px) {
375
387
  .seed-text-input__prefixIcon--variant_outline-size_responsive:first-child {
376
388
  margin-left: var(--seed-dimension-x3_5);
377
389
  }
@@ -382,7 +394,7 @@
382
394
  line-height: var(--seed-line-height-t5);
383
395
  }
384
396
 
385
- @media (width >= 1280px) {
397
+ @media (min-width: 1280px) {
386
398
  .seed-text-input__suffixText--variant_outline-size_responsive {
387
399
  font-size: var(--seed-font-size-t4);
388
400
  line-height: var(--seed-line-height-t4);
@@ -393,7 +405,7 @@
393
405
  margin-right: var(--seed-dimension-x4);
394
406
  }
395
407
 
396
- @media (width >= 1280px) {
408
+ @media (min-width: 1280px) {
397
409
  .seed-text-input__suffixText--variant_outline-size_responsive:last-child {
398
410
  margin-right: var(--seed-dimension-x3_5);
399
411
  }
@@ -404,7 +416,7 @@
404
416
  height: var(--seed-dimension-x5);
405
417
  }
406
418
 
407
- @media (width >= 1280px) {
419
+ @media (min-width: 1280px) {
408
420
  .seed-text-input__suffixIcon--variant_outline-size_responsive {
409
421
  width: var(--seed-dimension-x4);
410
422
  height: var(--seed-dimension-x4);
@@ -415,7 +427,7 @@
415
427
  margin-right: var(--seed-dimension-x4);
416
428
  }
417
429
 
418
- @media (width >= 1280px) {
430
+ @media (min-width: 1280px) {
419
431
  .seed-text-input__suffixIcon--variant_outline-size_responsive:last-child {
420
432
  margin-right: var(--seed-dimension-x3_5);
421
433
  }
@@ -479,7 +491,7 @@
479
491
  padding-block: var(--seed-dimension-x2);
480
492
  }
481
493
 
482
- @media (width >= 1280px) {
494
+ @media (min-width: 1280px) {
483
495
  .seed-text-input__root--variant_underline-size_responsive {
484
496
  gap: var(--seed-dimension-x2);
485
497
  min-height: 34px;
@@ -492,7 +504,7 @@
492
504
  line-height: var(--seed-line-height-t6);
493
505
  }
494
506
 
495
- @media (width >= 1280px) {
507
+ @media (min-width: 1280px) {
496
508
  .seed-text-input__value--variant_underline-size_responsive {
497
509
  font-size: var(--seed-font-size-t5);
498
510
  line-height: var(--seed-line-height-t5);
@@ -504,7 +516,7 @@
504
516
  line-height: var(--seed-line-height-t6);
505
517
  }
506
518
 
507
- @media (width >= 1280px) {
519
+ @media (min-width: 1280px) {
508
520
  .seed-text-input__value--variant_underline-size_responsive::placeholder {
509
521
  font-size: var(--seed-font-size-t5);
510
522
  line-height: var(--seed-line-height-t5);
@@ -516,7 +528,7 @@
516
528
  line-height: var(--seed-line-height-t6);
517
529
  }
518
530
 
519
- @media (width >= 1280px) {
531
+ @media (min-width: 1280px) {
520
532
  .seed-text-input__prefixText--variant_underline-size_responsive {
521
533
  font-size: var(--seed-font-size-t5);
522
534
  line-height: var(--seed-line-height-t5);
@@ -528,7 +540,7 @@
528
540
  height: var(--seed-dimension-x6);
529
541
  }
530
542
 
531
- @media (width >= 1280px) {
543
+ @media (min-width: 1280px) {
532
544
  .seed-text-input__prefixIcon--variant_underline-size_responsive {
533
545
  width: var(--seed-dimension-x5);
534
546
  height: var(--seed-dimension-x5);
@@ -540,7 +552,7 @@
540
552
  line-height: var(--seed-line-height-t6);
541
553
  }
542
554
 
543
- @media (width >= 1280px) {
555
+ @media (min-width: 1280px) {
544
556
  .seed-text-input__suffixText--variant_underline-size_responsive {
545
557
  font-size: var(--seed-font-size-t5);
546
558
  line-height: var(--seed-line-height-t5);
@@ -552,7 +564,7 @@
552
564
  height: var(--seed-dimension-x6);
553
565
  }
554
566
 
555
- @media (width >= 1280px) {
567
+ @media (min-width: 1280px) {
556
568
  .seed-text-input__suffixIcon--variant_underline-size_responsive {
557
569
  width: var(--seed-dimension-x5);
558
570
  height: var(--seed-dimension-x5);
@@ -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,100 @@
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
+ -webkit-user-select: none;
79
+ user-select: none;
80
+ display: flex;
81
+ }
82
+
83
+ .seed-wheel-picker__item[data-wheel-picker-indicator-overlap] {
84
+ color: #0000;
85
+ 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%);
86
+ -webkit-text-fill-color: transparent;
87
+ -webkit-background-clip: text;
88
+ background-clip: text;
89
+ }
90
+
91
+ .seed-wheel-picker__selectionIndicator {
92
+ z-index: 0;
93
+ inset-inline: 0;
94
+ height: var(--seed-wheel-picker-item-size);
95
+ pointer-events: none;
96
+ position: absolute;
97
+ top: 50%;
98
+ transform: translateY(-50%);
99
+ }
100
+ }