@seed-design/lynx-css 0.14.1 → 1.0.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.
Files changed (107) hide show
  1. package/all.css +936 -275
  2. package/all.min.css +1 -1
  3. package/base.css +10 -0
  4. package/base.min.css +1 -1
  5. package/package.json +2 -2
  6. package/recipes/alert-dialog.css +11 -0
  7. package/recipes/alert-dialog.d.ts +1 -1
  8. package/recipes/alert-dialog.mjs +8 -0
  9. package/recipes/app-bar.css +7 -3
  10. package/recipes/attachment-input-item.css +7 -0
  11. package/recipes/attachment-input.css +2 -1
  12. package/recipes/avatar-stack.css +69 -0
  13. package/recipes/avatar-stack.d.ts +24 -0
  14. package/recipes/avatar-stack.mjs +55 -0
  15. package/recipes/avatar.css +257 -0
  16. package/recipes/avatar.d.ts +28 -0
  17. package/recipes/avatar.mjs +82 -0
  18. package/recipes/badge.css +1 -9
  19. package/recipes/badge.d.ts +0 -4
  20. package/recipes/badge.mjs +1 -14
  21. package/recipes/bottom-sheet.css +33 -2
  22. package/recipes/bottom-sheet.d.ts +5 -1
  23. package/recipes/bottom-sheet.mjs +28 -2
  24. package/recipes/callout.css +1 -8
  25. package/recipes/checkbox.css +7 -1
  26. package/recipes/checkmark.css +17 -26
  27. package/recipes/checkmark.d.ts +1 -5
  28. package/recipes/checkmark.mjs +7 -60
  29. package/recipes/content-placeholder.css +29 -0
  30. package/recipes/content-placeholder.d.ts +21 -0
  31. package/recipes/content-placeholder.mjs +44 -0
  32. package/recipes/dialog.css +4 -2
  33. package/recipes/{input-button.css → field-button.css} +49 -49
  34. package/recipes/field-button.d.ts +40 -0
  35. package/recipes/{input-button.mjs → field-button.mjs} +20 -20
  36. package/recipes/floating-action-button.css +15 -8
  37. package/recipes/image-frame-icon.css +8 -0
  38. package/recipes/image-frame-icon.d.ts +19 -0
  39. package/recipes/image-frame-icon.mjs +22 -0
  40. package/recipes/image-frame-indicator.css +17 -0
  41. package/recipes/image-frame-indicator.d.ts +21 -0
  42. package/recipes/image-frame-indicator.mjs +36 -0
  43. package/recipes/image-frame-reaction-button.css +20 -0
  44. package/recipes/image-frame-reaction-button.d.ts +21 -0
  45. package/recipes/image-frame-reaction-button.mjs +40 -0
  46. package/recipes/image-frame.css +87 -0
  47. package/recipes/image-frame.d.ts +32 -0
  48. package/recipes/image-frame.mjs +72 -0
  49. package/recipes/list-item.css +0 -4
  50. package/recipes/list-item.d.ts +1 -1
  51. package/recipes/list-item.mjs +0 -4
  52. package/recipes/menu-sheet-item.css +5 -1
  53. package/recipes/menu-sheet.css +5 -0
  54. package/recipes/menu-sheet.d.ts +1 -1
  55. package/recipes/menu-sheet.mjs +4 -0
  56. package/recipes/menu.css +1 -13
  57. package/recipes/menu.d.ts +1 -1
  58. package/recipes/menu.mjs +0 -4
  59. package/recipes/page-banner.css +4 -4
  60. package/recipes/progress-circle.css +38 -4
  61. package/recipes/progress-circle.d.ts +1 -1
  62. package/recipes/progress-circle.mjs +1 -0
  63. package/recipes/pull-to-refresh.css +14 -0
  64. package/recipes/pull-to-refresh.d.ts +21 -0
  65. package/recipes/pull-to-refresh.mjs +40 -0
  66. package/recipes/reaction-button.css +0 -6
  67. package/recipes/reaction-button.d.ts +0 -4
  68. package/recipes/reaction-button.mjs +0 -11
  69. package/recipes/scroll-fog.css +4 -17
  70. package/recipes/scroll-fog.d.ts +1 -1
  71. package/recipes/scroll-fog.mjs +0 -8
  72. package/recipes/segmented-control.css +24 -14
  73. package/recipes/segmented-control.d.ts +4 -4
  74. package/recipes/segmented-control.mjs +8 -8
  75. package/recipes/select-box-checkmark.css +4 -7
  76. package/recipes/select-box.css +10 -4
  77. package/recipes/select-item.css +13 -2
  78. package/recipes/select-item.d.ts +1 -1
  79. package/recipes/select-item.mjs +4 -0
  80. package/recipes/select-trigger.css +13 -2
  81. package/recipes/select-trigger.d.ts +1 -1
  82. package/recipes/select-trigger.mjs +4 -0
  83. package/recipes/select.css +1 -13
  84. package/recipes/select.d.ts +1 -1
  85. package/recipes/select.mjs +0 -4
  86. package/recipes/slider-marker.css +2 -2
  87. package/recipes/slider-tick.css +1 -1
  88. package/recipes/slider.css +2 -5
  89. package/recipes/tabs.css +11 -11
  90. package/recipes/wheel-picker.css +151 -0
  91. package/recipes/wheel-picker.d.ts +32 -0
  92. package/recipes/wheel-picker.mjs +90 -0
  93. package/vars/component/alert-dialog.d.ts +2 -0
  94. package/vars/component/bottom-sheet.d.ts +3 -0
  95. package/vars/component/bottom-sheet.mjs +1 -0
  96. package/vars/component/dialog.d.ts +6 -2
  97. package/vars/component/help-bubble.d.ts +2 -1
  98. package/vars/component/menu-sheet.d.ts +5 -0
  99. package/vars/component/menu-sheet.mjs +1 -0
  100. package/vars/component/menu.d.ts +2 -1
  101. package/vars/component/page-banner-close-button.d.ts +4 -4
  102. package/vars/component/page-banner-close-button.mjs +4 -4
  103. package/vars/component/popover.d.ts +4 -4
  104. package/vars/component/select.d.ts +2 -1
  105. package/vars/component/side-panel.d.ts +10 -7
  106. package/vars/component/snackbar.d.ts +1 -0
  107. package/recipes/input-button.d.ts +0 -40
@@ -10,6 +10,13 @@
10
10
  border-width: 1px;
11
11
  border-color: var(--seed-color-stroke-neutral-weak)
12
12
  }
13
+ .seed-select-trigger__scaleContent {
14
+ display: flex;
15
+ flex-direction: row;
16
+ align-items: center;
17
+ width: 100%;
18
+ min-width: 0
19
+ }
13
20
  .seed-select-trigger__pressedOverlay {
14
21
  position: absolute;
15
22
  top: 0;
@@ -59,11 +66,13 @@
59
66
  }
60
67
  .seed-select-trigger__root--size_large {
61
68
  height: var(--seed-dimension-x13);
62
- gap: var(--seed-dimension-x2_5);
63
69
  padding-left: var(--seed-dimension-x4);
64
70
  padding-right: var(--seed-dimension-x4);
65
71
  border-radius: var(--seed-radius-r3)
66
72
  }
73
+ .seed-select-trigger__scaleContent--size_large {
74
+ gap: var(--seed-dimension-x2_5)
75
+ }
67
76
  .seed-select-trigger__pressedOverlay--size_large {
68
77
  border-radius: var(--seed-radius-r3)
69
78
  }
@@ -85,11 +94,13 @@
85
94
  }
86
95
  .seed-select-trigger__root--size_medium {
87
96
  height: var(--seed-dimension-x10);
88
- gap: var(--seed-dimension-x2);
89
97
  padding-left: var(--seed-dimension-x3_5);
90
98
  padding-right: var(--seed-dimension-x3_5);
91
99
  border-radius: var(--seed-radius-r2)
92
100
  }
101
+ .seed-select-trigger__scaleContent--size_medium {
102
+ gap: var(--seed-dimension-x2)
103
+ }
93
104
  .seed-select-trigger__pressedOverlay--size_medium {
94
105
  border-radius: var(--seed-radius-r2)
95
106
  }
@@ -31,7 +31,7 @@ declare type SelectTriggerVariantMap = {
31
31
 
32
32
  export declare type SelectTriggerVariantProps = Partial<SelectTriggerVariant>;
33
33
 
34
- export declare type SelectTriggerSlotName = "root" | "pressedOverlay" | "value" | "placeholder" | "prefixIcon" | "suffixIcon";
34
+ export declare type SelectTriggerSlotName = "root" | "scaleContent" | "pressedOverlay" | "value" | "placeholder" | "prefixIcon" | "suffixIcon";
35
35
 
36
36
  export declare const selectTriggerVariantMap: SelectTriggerVariantMap;
37
37
 
@@ -6,6 +6,10 @@ const selectTriggerSlotNames = [
6
6
  "root",
7
7
  "seed-select-trigger__root"
8
8
  ],
9
+ [
10
+ "scaleContent",
11
+ "seed-select-trigger__scaleContent"
12
+ ],
9
13
  [
10
14
  "pressedOverlay",
11
15
  "seed-select-trigger__pressedOverlay"
@@ -1,17 +1,5 @@
1
1
  .seed-select__positioner {
2
- position: absolute;
3
- top: 0;
4
- left: 0;
5
- width: 100%;
6
- height: 100%;
7
- z-index: 0
8
- }
9
- .seed-select__backdrop {
10
- position: absolute;
11
- top: 0;
12
- right: 0;
13
- bottom: 0;
14
- left: 0
2
+ z-index: 99
15
3
  }
16
4
  .seed-select__content {
17
5
  position: absolute;
@@ -19,7 +19,7 @@ declare type SelectVariantMap = {
19
19
 
20
20
  export declare type SelectVariantProps = Partial<SelectVariant>;
21
21
 
22
- export declare type SelectSlotName = "positioner" | "backdrop" | "content" | "scrollArea" | "scrollContent" | "group" | "groupLabel" | "separator";
22
+ export declare type SelectSlotName = "positioner" | "content" | "scrollArea" | "scrollContent" | "group" | "groupLabel" | "separator";
23
23
 
24
24
  export declare const selectVariantMap: SelectVariantMap;
25
25
 
@@ -6,10 +6,6 @@ const selectSlotNames = [
6
6
  "positioner",
7
7
  "seed-select__positioner"
8
8
  ],
9
- [
10
- "backdrop",
11
- "seed-select__backdrop"
12
- ],
13
9
  [
14
10
  "content",
15
11
  "seed-select__content"
@@ -3,8 +3,8 @@
3
3
  top: 0;
4
4
  bottom: 0;
5
5
  width: max-content;
6
- left: calc(var(--slider-marker-left, 0%) + var(--slider-marker-offset, 0px));
7
- color: var(--slider-marker-color, var(--seed-color-fg-neutral-muted));
6
+ left: calc(var(--slider-marker-left, 0%) + var(--seed-dimension-x5) * var(--slider-marker-offset-ratio, 0));
7
+ color: var(--seed-color-fg-neutral-muted);
8
8
  font-weight: var(--seed-font-weight-regular);
9
9
  font-size: var(--seed-font-size-t3);
10
10
  line-height: var(--seed-line-height-t3)
@@ -2,7 +2,7 @@
2
2
  position: absolute;
3
3
  top: 50%;
4
4
  height: 100%;
5
- left: calc(var(--slider-tick-left, 0%) + var(--slider-tick-offset, 0px));
5
+ left: calc(var(--slider-tick-left, 0%) + var(--seed-dimension-x5) * var(--slider-tick-offset-ratio, 0));
6
6
  background-color: var(--seed-color-fg-on-neutral-solid);
7
7
  transform: translate(-50%, -50%)
8
8
  }
@@ -32,7 +32,7 @@
32
32
  .seed-slider__thumb {
33
33
  position: absolute;
34
34
  top: 50%;
35
- left: calc(var(--slider-thumb-left, 0%) + var(--slider-thumb-offset, 0px));
35
+ left: calc(var(--slider-thumb-left, 0%) + var(--seed-dimension-x5) * var(--slider-thumb-offset-ratio, 0));
36
36
  width: var(--seed-dimension-x5);
37
37
  height: var(--seed-dimension-x5);
38
38
  background-color: var(--seed-color-bg-neutral-solid);
@@ -51,6 +51,7 @@
51
51
  top: 50%;
52
52
  left: calc(var(--slider-value-indicator-left, 0%) + var(--slider-value-indicator-offset, 0px));
53
53
  width: max-content;
54
+ height: max-content;
54
55
  padding-top: 8px;
55
56
  padding-right: 8px;
56
57
  padding-bottom: 8px;
@@ -99,7 +100,6 @@
99
100
  line-height: var(--seed-line-height-t3);
100
101
  font-weight: var(--seed-font-weight-medium);
101
102
  flex-shrink: 0;
102
- white-space: nowrap;
103
103
  text-align: center
104
104
  }
105
105
  .seed-slider__track--disabled_true {
@@ -111,9 +111,6 @@
111
111
  .seed-slider__thumb--disabled_true {
112
112
  background-color: var(--seed-color-fg-disabled)
113
113
  }
114
- .seed-slider__markers--disabled_true {
115
- --slider-marker-color: var(--seed-color-fg-disabled)
116
- }
117
114
  .seed-slider__range--dragging_true {
118
115
  transition: none
119
116
  }
package/recipes/tabs.css CHANGED
@@ -3,10 +3,7 @@
3
3
  }
4
4
  .seed-tabs__list {
5
5
  position: relative;
6
- background-color: var(--seed-color-bg-layer-default);
7
- border-bottom-width: 1px;
8
- border-bottom-style: solid;
9
- border-bottom-color: var(--seed-color-stroke-neutral-muted)
6
+ background-color: var(--seed-color-bg-layer-default)
10
7
  }
11
8
  .seed-tabs__listContent {
12
9
  display: flex;
@@ -15,7 +12,9 @@
15
12
  flex-wrap: nowrap;
16
13
  align-items: stretch;
17
14
  width: max-content;
18
- min-width: 100%
15
+ min-width: 100%;
16
+ padding-bottom: 1px;
17
+ box-shadow: inset 0 -1px 0 0 var(--seed-color-stroke-neutral-muted)
19
18
  }
20
19
  .seed-tabs__carousel {
21
20
  display: flex;
@@ -34,9 +33,9 @@
34
33
  left: 0px;
35
34
  bottom: 0px;
36
35
  height: 2px;
37
- width: var(--tabs-indicator-width, 0px);
38
36
  background-color: var(--seed-color-fg-neutral);
39
- transform: translateX(var(--tabs-indicator-x, 0px));
37
+ box-sizing: border-box;
38
+ background-clip: content-box;
40
39
  transition-property: transform, width;
41
40
  transition-duration: var(--seed-duration-d4);
42
41
  transition-timing-function: var(--seed-timing-function-easing)
@@ -62,8 +61,8 @@
62
61
  padding-right: 0px
63
62
  }
64
63
  .seed-tabs__indicator--triggerLayout_fill {
65
- transform: translateX(calc(var(--tabs-indicator-x, 0px) + var(--seed-dimension-spacing-x-global-gutter)));
66
- width: calc(var(--tabs-indicator-width, 0px) - 2 * var(--seed-dimension-spacing-x-global-gutter))
64
+ padding-left: var(--seed-dimension-spacing-x-global-gutter);
65
+ padding-right: var(--seed-dimension-spacing-x-global-gutter)
67
66
  }
68
67
  .seed-tabs__trigger--triggerLayout_fill {
69
68
  flex: 1
@@ -73,8 +72,9 @@
73
72
  padding-right: var(--seed-dimension-spacing-x-global-gutter)
74
73
  }
75
74
  .seed-tabs__indicator--triggerLayout_hug {
76
- transform: translateX(calc(var(--tabs-indicator-x, 0px) + var(--seed-dimension-spacing-x-global-gutter) + 0px));
77
- width: calc(var(--tabs-indicator-width, 0px) - 2 * 0px)
75
+ left: var(--seed-dimension-spacing-x-global-gutter);
76
+ padding-left: 0px;
77
+ padding-right: 0px
78
78
  }
79
79
  .seed-tabs__root--contentLayout_fill {
80
80
  display: flex;
@@ -0,0 +1,151 @@
1
+ .seed-wheel-picker__root {
2
+ position: relative;
3
+ width: 100%;
4
+ z-index: 0;
5
+ overflow: hidden;
6
+ background-color: var(--seed-color-bg-layer-floating);
7
+ }
8
+ .seed-wheel-picker__scrollFog {
9
+ position: relative;
10
+ z-index: 1;
11
+ height: 100%;
12
+ overflow: hidden;
13
+ }
14
+ .seed-wheel-picker__columns {
15
+ display: flex;
16
+ flex-direction: row;
17
+ width: 100%;
18
+ height: 100%;
19
+ justify-content: center;
20
+ }
21
+ .seed-wheel-picker__column {
22
+ position: relative;
23
+ flex-shrink: 0;
24
+ width: max-content;
25
+ height: 100%;
26
+ }
27
+ .seed-wheel-picker__track {
28
+ color: var(--seed-color-fg-disabled);
29
+ }
30
+ .seed-wheel-picker__sizingContent {
31
+ display: flex;
32
+ flex-direction: column;
33
+ align-items: center;
34
+ width: max-content;
35
+ height: 0;
36
+ overflow: hidden;
37
+ opacity: 0;
38
+ pointer-events: none;
39
+ }
40
+ .seed-wheel-picker__item {
41
+ display: flex;
42
+ flex-direction: row;
43
+ height: 100%;
44
+ align-items: center;
45
+ justify-content: center;
46
+ color: var(--seed-color-fg-disabled);
47
+ }
48
+ .seed-wheel-picker__item text {
49
+ color: var(--seed-color-fg-disabled);
50
+ }
51
+ .seed-wheel-picker__itemLabel {
52
+ display: flex;
53
+ flex-direction: row;
54
+ flex-shrink: 0;
55
+ width: max-content;
56
+ height: 100%;
57
+ align-items: center;
58
+ justify-content: center;
59
+ padding-left: var(--seed-dimension-x4);
60
+ padding-right: var(--seed-dimension-x4);
61
+ font-weight: var(--seed-font-weight-medium);
62
+ color: var(--seed-color-fg-disabled);
63
+ }
64
+ .seed-wheel-picker__itemText {
65
+ font-weight: var(--seed-font-weight-medium);
66
+ color: var(--seed-color-fg-disabled);
67
+ }
68
+ .seed-wheel-picker__selectionIndicator {
69
+ position: absolute;
70
+ z-index: 0;
71
+ left: var(--seed-dimension-x4);
72
+ right: var(--seed-dimension-x4);
73
+ top: 50%;
74
+ transform: translateY(-50%);
75
+ border-radius: var(--seed-radius-r2);
76
+ background-color: var(--seed-color-bg-neutral-weak);
77
+ pointer-events: none;
78
+ }
79
+ .seed-wheel-picker__root--size_small {
80
+ height: var(--seed-wheel-picker-viewport-size, 180px);
81
+ }
82
+ .seed-wheel-picker__selectionIndicator--size_small {
83
+ height: var(--seed-wheel-picker-item-size, 36px);
84
+ }
85
+ .seed-wheel-picker__itemLabel--size_small {
86
+ font-size: var(--seed-font-size-t7-static);
87
+ line-height: var(--seed-line-height-t7-static);
88
+ }
89
+ .seed-wheel-picker__itemText--size_small {
90
+ font-size: var(--seed-font-size-t7-static);
91
+ line-height: var(--seed-line-height-t7-static);
92
+ }
93
+ .seed-wheel-picker__root--size_medium {
94
+ height: var(--seed-wheel-picker-viewport-size, 220px);
95
+ }
96
+ .seed-wheel-picker__selectionIndicator--size_medium {
97
+ height: var(--seed-wheel-picker-item-size, 44px);
98
+ }
99
+ .seed-wheel-picker__itemLabel--size_medium {
100
+ font-size: var(--seed-font-size-t10-static);
101
+ line-height: var(--seed-line-height-t10-static);
102
+ }
103
+ .seed-wheel-picker__itemText--size_medium {
104
+ font-size: var(--seed-font-size-t10-static);
105
+ line-height: var(--seed-line-height-t10-static);
106
+ }
107
+ .seed-wheel-picker__track--selected_true {
108
+ color: var(--seed-color-fg-neutral);
109
+ }
110
+ .seed-wheel-picker__item--selected_true {
111
+ color: var(--seed-color-fg-neutral);
112
+ }
113
+ .seed-wheel-picker__item--selected_true text {
114
+ color: var(--seed-color-fg-neutral);
115
+ }
116
+ .seed-wheel-picker__itemLabel--selected_true {
117
+ color: var(--seed-color-fg-neutral);
118
+ }
119
+ .seed-wheel-picker__itemText--selected_true {
120
+ color: var(--seed-color-fg-neutral);
121
+ }
122
+ .seed-wheel-picker__track--disabled_true {
123
+ color: var(--seed-color-fg-disabled);
124
+ }
125
+ .seed-wheel-picker__item--disabled_true {
126
+ color: var(--seed-color-fg-disabled);
127
+ }
128
+ .seed-wheel-picker__item--disabled_true text {
129
+ color: var(--seed-color-fg-disabled);
130
+ }
131
+ .seed-wheel-picker__itemLabel--disabled_true {
132
+ color: var(--seed-color-fg-disabled);
133
+ }
134
+ .seed-wheel-picker__itemText--disabled_true {
135
+ color: var(--seed-color-fg-disabled);
136
+ }
137
+ .seed-wheel-picker__track--selected_true-disabled_true {
138
+ color: var(--seed-color-fg-disabled);
139
+ }
140
+ .seed-wheel-picker__item--selected_true-disabled_true {
141
+ color: var(--seed-color-fg-disabled);
142
+ }
143
+ .seed-wheel-picker__item--selected_true-disabled_true text {
144
+ color: var(--seed-color-fg-disabled);
145
+ }
146
+ .seed-wheel-picker__itemLabel--selected_true-disabled_true {
147
+ color: var(--seed-color-fg-disabled);
148
+ }
149
+ .seed-wheel-picker__itemText--selected_true-disabled_true {
150
+ color: var(--seed-color-fg-disabled);
151
+ }
@@ -0,0 +1,32 @@
1
+ declare interface WheelPickerVariant {
2
+ /**
3
+ * @default "medium"
4
+ */
5
+ size: "small" | "medium";
6
+ /**
7
+ * @default false
8
+ */
9
+ selected: boolean;
10
+ /**
11
+ * @default false
12
+ */
13
+ disabled: boolean;
14
+ }
15
+
16
+ declare type WheelPickerVariantMap = {
17
+ [key in keyof WheelPickerVariant]: Array<WheelPickerVariant[key]>;
18
+ };
19
+
20
+ export declare type WheelPickerVariantProps = Partial<WheelPickerVariant>;
21
+
22
+ export declare type WheelPickerSlotName = "root" | "scrollFog" | "columns" | "column" | "track" | "sizingContent" | "item" | "itemLabel" | "itemText" | "selectionIndicator";
23
+
24
+ export declare const wheelPickerVariantMap: WheelPickerVariantMap;
25
+
26
+ export declare const wheelPicker: ((
27
+ props?: WheelPickerVariantProps,
28
+ ) => Record<WheelPickerSlotName, string>) & {
29
+ splitVariantProps: <T extends WheelPickerVariantProps>(
30
+ props: T,
31
+ ) => [WheelPickerVariantProps, Omit<T, keyof WheelPickerVariantProps>];
32
+ }
@@ -0,0 +1,90 @@
1
+ import './wheel-picker.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const wheelPickerSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-wheel-picker__root"
8
+ ],
9
+ [
10
+ "scrollFog",
11
+ "seed-wheel-picker__scrollFog"
12
+ ],
13
+ [
14
+ "columns",
15
+ "seed-wheel-picker__columns"
16
+ ],
17
+ [
18
+ "column",
19
+ "seed-wheel-picker__column"
20
+ ],
21
+ [
22
+ "track",
23
+ "seed-wheel-picker__track"
24
+ ],
25
+ [
26
+ "sizingContent",
27
+ "seed-wheel-picker__sizingContent"
28
+ ],
29
+ [
30
+ "item",
31
+ "seed-wheel-picker__item"
32
+ ],
33
+ [
34
+ "itemLabel",
35
+ "seed-wheel-picker__itemLabel"
36
+ ],
37
+ [
38
+ "itemText",
39
+ "seed-wheel-picker__itemText"
40
+ ],
41
+ [
42
+ "selectionIndicator",
43
+ "seed-wheel-picker__selectionIndicator"
44
+ ]
45
+ ];
46
+
47
+ const defaultVariant = {
48
+ "size": "medium",
49
+ "selected": false,
50
+ "disabled": false
51
+ };
52
+
53
+ const compoundVariants = [
54
+ {
55
+ "selected": true,
56
+ "disabled": true
57
+ }
58
+ ];
59
+
60
+ export const wheelPickerVariantMap = {
61
+ "size": [
62
+ "small",
63
+ "medium"
64
+ ],
65
+ "selected": [
66
+ true,
67
+ false
68
+ ],
69
+ "disabled": [
70
+ true,
71
+ false
72
+ ]
73
+ };
74
+
75
+ export const wheelPickerVariantKeys = Object.keys(wheelPickerVariantMap);
76
+
77
+ export function wheelPicker(props) {
78
+ return Object.fromEntries(
79
+ wheelPickerSlotNames.map(([slot, className]) => {
80
+ return [
81
+ slot,
82
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
83
+ ];
84
+ }),
85
+ );
86
+ }
87
+
88
+ Object.assign(wheelPicker, { splitVariantProps: (props) => splitVariantProps(props, wheelPickerVariantMap) });
89
+
90
+ // @recipe(seed): wheel-picker
@@ -10,9 +10,11 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓입니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓이고, 높이는 그 사이 높이를 넘지 않습니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "cornerRadius": "var(--seed-radius-r5)",
17
+ /** content와 좌우 안전 영역 경계 사이의 최소 간격입니다. 화면 끝이 아니라 안전 영역 경계부터 잽니다. */
16
18
  "marginX": "var(--seed-dimension-x8)",
17
19
  "marginY": "var(--seed-dimension-x16)",
18
20
  "maxWidth": "272px",
@@ -10,9 +10,12 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 하단 inset을 content의 하단 패딩으로 적용합니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "maxWidth": "480px",
17
+ /** inset을 빼지 않은 viewport height 또는 parent height에 대한 최대 비율입니다. 최대 높이는 min(maxHeightFraction × 높이, 상단 inset을 뺀 높이)이므로, content는 상단 안전 영역 경계까지만 커집니다. */
18
+ "maxHeightFraction": "0.9",
16
19
  "topCornerRadius": "var(--seed-radius-r6)",
17
20
  "enterDuration": "var(--seed-duration-d6)",
18
21
  "enterTimingFunction": "var(--seed-timing-function-enter-expressive)",
@@ -13,6 +13,7 @@ export const vars = {
13
13
  "content": {
14
14
  "color": "var(--seed-color-bg-layer-floating)",
15
15
  "maxWidth": "480px",
16
+ "maxHeightFraction": "0.9",
16
17
  "topCornerRadius": "var(--seed-radius-r6)",
17
18
  "enterDuration": "var(--seed-duration-d6)",
18
19
  "enterTimingFunction": "var(--seed-timing-function-enter-expressive)",
@@ -10,13 +10,15 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 소비자가 지정한 너비는 안전 영역의 너비를 기준으로 합니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓입니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "cornerRadius": "var(--seed-radius-r5)",
16
- /** viewport width 또는 parent width에 대한 비율입니다. viewport `md` 미만에서 적용합니다. */
17
+ /** 좌우 inset을 뺀 viewport width 또는 parent width에 대한 비율입니다. viewport `md` 미만에서 적용합니다. */
17
18
  "widthFraction": "0.9",
18
- /** viewport height 또는 parent height에 대한 최대 비율입니다. */
19
+ /** viewport height 또는 parent height에 대한 최대 비율입니다. 최대 높이는 min(maxHeightFraction × 높이, 상단과 하단 inset 중 큰 값을 위아래에서 각각 뺀 높이)입니다. */
19
20
  "maxHeightFraction": "0.8",
21
+ /** viewport `md` 이상에서 content와 좌우 안전 영역 경계 사이에 두는 최소 간격입니다. */
20
22
  "marginX": "var(--seed-dimension-x5)",
21
23
  "enterDuration": "var(--seed-duration-d4)",
22
24
  "enterTimingFunction": "var(--seed-timing-function-enter-expressive)",
@@ -76,6 +78,7 @@ export declare const vars: {
76
78
  },
77
79
  "sizeMedium": {
78
80
  "enabled": {
81
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 소비자가 지정한 너비는 안전 영역의 너비를 기준으로 합니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓입니다. */
79
82
  "content": {
80
83
  "maxWidth": "480px"
81
84
  }
@@ -83,6 +86,7 @@ export declare const vars: {
83
86
  },
84
87
  "sizeLarge": {
85
88
  "enabled": {
89
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓이고, 소비자가 지정한 너비는 안전 영역의 너비를 기준으로 합니다. 세로 기준으로는 상단과 하단 inset 중 큰 값을 위아래에 똑같이 두어 화면 가운데에 놓입니다. */
86
90
  "content": {
87
91
  "maxWidth": "800px"
88
92
  }
@@ -7,6 +7,7 @@ export declare const vars: {
7
7
  "paddingX": "var(--seed-dimension-x3)",
8
8
  "paddingY": "var(--seed-dimension-x2_5)",
9
9
  "gap": "var(--seed-dimension-x1)",
10
+ /** 가용 너비(overflowPadding 참고)가 이보다 작으면 가용 너비로 축소됩니다. */
10
11
  "maxWidth": "280px",
11
12
  "enterScale": "0.9",
12
13
  "enterOpacity": "0",
@@ -16,7 +17,7 @@ export declare const vars: {
16
17
  "exitOpacity": "0",
17
18
  "exitDuration": "var(--seed-duration-d4)",
18
19
  "exitTimingFunction": "var(--seed-timing-function-easing)",
19
- /** 말풍선과 뷰포트 경계 사이의 최소 간격을 정의합니다. */
20
+ /** 말풍선과 안전 영역 경계 사이의 최소 간격을 정의합니다. 말풍선은 화면 끝에서 inset + overflowPadding만큼 안쪽에 배치되며, 가용 너비도 같은 기준으로 계산합니다. */
20
21
  "overflowPadding": "var(--seed-dimension-x4)"
21
22
  },
22
23
  "arrow": {
@@ -10,11 +10,15 @@ export declare const vars: {
10
10
  "exitTimingFunction": "var(--seed-timing-function-exit)",
11
11
  "exitOpacity": "0"
12
12
  },
13
+ /** content는 가로 기준으로 안전 영역의 가운데에 놓입니다. */
13
14
  "content": {
14
15
  "color": "var(--seed-color-bg-layer-floating)",
15
16
  "maxWidth": "480px",
17
+ /** inset을 빼지 않은 viewport height 또는 parent height에 대한 최대 비율입니다. 최대 높이는 min(maxHeightFraction × 높이, 상단 inset을 뺀 높이)이므로, content는 상단 안전 영역 경계까지만 커집니다. */
18
+ "maxHeightFraction": "0.9",
16
19
  "paddingX": "var(--seed-dimension-spacing-x-global-gutter)",
17
20
  "paddingTop": "var(--seed-dimension-x6)",
21
+ /** 이 값은 하단 inset과 합산하여 적용합니다. */
18
22
  "paddingBottom": "var(--seed-dimension-x4)",
19
23
  "topCornerRadius": "var(--seed-radius-r5)",
20
24
  "enterDuration": "var(--seed-duration-d6)",
@@ -24,6 +28,7 @@ export declare const vars: {
24
28
  },
25
29
  "header": {
26
30
  "gap": "var(--seed-dimension-x1)",
31
+ /** 이 값은 하단 inset과 합산하여 적용합니다. */
27
32
  "paddingBottom": "var(--seed-dimension-x4)"
28
33
  },
29
34
  "title": {
@@ -13,6 +13,7 @@ export const vars = {
13
13
  "content": {
14
14
  "color": "var(--seed-color-bg-layer-floating)",
15
15
  "maxWidth": "480px",
16
+ "maxHeightFraction": "0.9",
16
17
  "paddingX": "var(--seed-dimension-spacing-x-global-gutter)",
17
18
  "paddingTop": "var(--seed-dimension-x6)",
18
19
  "paddingBottom": "var(--seed-dimension-x4)",
@@ -17,8 +17,9 @@ export declare const vars: {
17
17
  "gap": "var(--seed-dimension-x2)",
18
18
  /** 트리거와 메뉴 사이의 간격을 정의합니다. */
19
19
  "gutter": "var(--seed-dimension-x2)",
20
- /** 메뉴와 뷰포트 경계 사이의 최소 간격을 정의합니다. */
20
+ /** 메뉴와 안전 영역 경계 사이의 최소 간격을 정의합니다. 메뉴는 화면 끝에서 inset + overflowPadding만큼 안쪽에 배치되며, 가용 높이도 같은 기준으로 계산합니다. */
21
21
  "overflowPadding": "var(--seed-dimension-x2)",
22
+ /** 가용 높이(overflowPadding 참고)가 이보다 작으면 가용 높이로 축소됩니다. */
22
23
  "maxHeight": "480px"
23
24
  },
24
25
  "groupLabel": {
@@ -55,7 +55,7 @@ export declare const vars: {
55
55
  "tonePositiveVariantSolid": {
56
56
  "enabled": {
57
57
  "icon": {
58
- "color": "var(--seed-color-palette-static-white)"
58
+ "color": "var(--seed-color-fg-on-positive-solid)"
59
59
  }
60
60
  }
61
61
  },
@@ -75,7 +75,7 @@ export declare const vars: {
75
75
  "toneInformativeVariantSolid": {
76
76
  "enabled": {
77
77
  "icon": {
78
- "color": "var(--seed-color-palette-static-white)"
78
+ "color": "var(--seed-color-fg-on-informative-solid)"
79
79
  }
80
80
  }
81
81
  },
@@ -95,7 +95,7 @@ export declare const vars: {
95
95
  "toneWarningVariantSolid": {
96
96
  "enabled": {
97
97
  "icon": {
98
- "color": "var(--seed-color-palette-static-black-alpha-900)"
98
+ "color": "var(--seed-color-fg-on-warning-solid)"
99
99
  }
100
100
  }
101
101
  },
@@ -115,7 +115,7 @@ export declare const vars: {
115
115
  "toneCriticalVariantSolid": {
116
116
  "enabled": {
117
117
  "icon": {
118
- "color": "var(--seed-color-palette-static-white)"
118
+ "color": "var(--seed-color-fg-on-critical-solid)"
119
119
  }
120
120
  }
121
121
  },