@seed-design/css 1.0.7 → 1.1.3

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 (78) hide show
  1. package/all.css +907 -474
  2. package/all.min.css +1 -1
  3. package/base.css +32 -0
  4. package/base.min.css +1 -1
  5. package/package.json +1 -1
  6. package/recipes/action-button.css +8 -1
  7. package/recipes/action-sheet.css +8 -2
  8. package/recipes/app-bar.css +8 -1
  9. package/recipes/app-screen.css +16 -0
  10. package/recipes/app-screen.d.ts +4 -0
  11. package/recipes/app-screen.mjs +6 -1
  12. package/recipes/bottom-sheet-handle.css +24 -0
  13. package/recipes/bottom-sheet-handle.d.ts +21 -0
  14. package/recipes/bottom-sheet-handle.mjs +36 -0
  15. package/recipes/bottom-sheet.css +67 -35
  16. package/recipes/callout.css +1 -0
  17. package/recipes/dialog.css +8 -2
  18. package/recipes/extended-action-sheet.css +8 -2
  19. package/recipes/field-label.css +29 -0
  20. package/recipes/field-label.d.ts +24 -0
  21. package/recipes/field-label.mjs +47 -0
  22. package/recipes/field.css +63 -0
  23. package/recipes/field.d.ts +21 -0
  24. package/recipes/field.mjs +60 -0
  25. package/recipes/input-button.css +103 -0
  26. package/recipes/input-button.d.ts +21 -0
  27. package/recipes/input-button.mjs +64 -0
  28. package/recipes/list-header.css +1 -0
  29. package/recipes/list-item.css +13 -3
  30. package/recipes/menu-sheet-item.css +3 -0
  31. package/recipes/menu-sheet.css +12 -2
  32. package/recipes/page-banner.css +5 -4
  33. package/recipes/page-banner.d.ts +1 -1
  34. package/recipes/page-banner.mjs +6 -2
  35. package/recipes/scroll-fog.css +23 -0
  36. package/recipes/scroll-fog.d.ts +22 -0
  37. package/recipes/scroll-fog.mjs +28 -0
  38. package/recipes/slider-marker.css +42 -0
  39. package/recipes/slider-marker.d.ts +22 -0
  40. package/recipes/slider-marker.mjs +30 -0
  41. package/recipes/slider-tick.css +19 -0
  42. package/recipes/slider-tick.d.ts +22 -0
  43. package/recipes/slider-tick.mjs +29 -0
  44. package/recipes/slider.css +174 -0
  45. package/recipes/slider.d.ts +21 -0
  46. package/recipes/slider.mjs +68 -0
  47. package/recipes/text-input.css +194 -0
  48. package/recipes/text-input.d.ts +28 -0
  49. package/recipes/text-input.mjs +73 -0
  50. package/vars/component/bottom-sheet-handle.d.ts +24 -0
  51. package/vars/component/bottom-sheet-handle.mjs +24 -0
  52. package/vars/component/bottom-sheet.d.ts +2 -2
  53. package/vars/component/bottom-sheet.mjs +2 -2
  54. package/vars/component/field-label.d.ts +25 -0
  55. package/vars/component/field-label.mjs +25 -0
  56. package/vars/component/field.d.ts +72 -0
  57. package/vars/component/field.mjs +72 -0
  58. package/vars/component/index.d.ts +9 -1
  59. package/vars/component/index.mjs +9 -1
  60. package/vars/component/input-button.d.ts +78 -0
  61. package/vars/component/input-button.mjs +78 -0
  62. package/vars/component/page-banner.d.ts +1 -1
  63. package/vars/component/page-banner.mjs +1 -1
  64. package/vars/component/scroll-fog.d.ts +11 -0
  65. package/vars/component/scroll-fog.mjs +11 -0
  66. package/vars/component/slider-thumb.d.ts +25 -0
  67. package/vars/component/slider-thumb.mjs +25 -0
  68. package/vars/component/slider-tick.d.ts +23 -0
  69. package/vars/component/slider-tick.mjs +23 -0
  70. package/vars/component/slider.d.ts +74 -0
  71. package/vars/component/slider.mjs +74 -0
  72. package/vars/component/text-input.d.ts +212 -0
  73. package/vars/component/text-input.mjs +212 -0
  74. package/recipes/text-field.css +0 -385
  75. package/recipes/text-field.d.ts +0 -24
  76. package/recipes/text-field.mjs +0 -104
  77. package/vars/component/text-field.d.ts +0 -294
  78. package/vars/component/text-field.mjs +0 -294
@@ -0,0 +1,42 @@
1
+ .seed-slider-marker {
2
+ position: absolute;
3
+ top: 0;
4
+ bottom: 0;
5
+ width: max-content;
6
+ color: var(--seed-color-fg-neutral-muted);
7
+ font-weight: var(--seed-font-weight-regular);
8
+ font-size: var(--seed-font-size-t3);
9
+ line-height: var(--seed-line-height-t3);
10
+ }
11
+ .seed-slider-marker[data-dir='ltr'] {
12
+ left: calc(var(--marker-position) * 1% + var(--marker-offset));
13
+ }
14
+ .seed-slider-marker[data-dir='rtl'] {
15
+ right: calc(var(--marker-position) * 1% + var(--marker-offset));
16
+ }
17
+ .seed-slider-marker:is(:disabled, [disabled], [data-disabled]) {
18
+ color: var(--seed-color-fg-disabled);
19
+ }
20
+ .seed-slider-marker--align_start[data-dir='ltr'] {
21
+ text-align: left;
22
+ }
23
+ .seed-slider-marker--align_start[data-dir='rtl'] {
24
+ text-align: right;
25
+ }
26
+ .seed-slider-marker--align_center {
27
+ text-align: center;
28
+ }
29
+ .seed-slider-marker--align_center[data-dir='ltr'] {
30
+ transform: translateX(-50%);
31
+ }
32
+ .seed-slider-marker--align_center[data-dir='rtl'] {
33
+ transform: translateX(50%);
34
+ }
35
+ .seed-slider-marker--align_end[data-dir='ltr'] {
36
+ text-align: right;
37
+ transform: translateX(-100%);
38
+ }
39
+ .seed-slider-marker--align_end[data-dir='rtl'] {
40
+ text-align: left;
41
+ transform: translateX(100%);
42
+ }
@@ -0,0 +1,22 @@
1
+ declare interface SliderMarkerVariant {
2
+ /**
3
+ * @default "center"
4
+ */
5
+ align: "start" | "center" | "end";
6
+ }
7
+
8
+ declare type SliderMarkerVariantMap = {
9
+ [key in keyof SliderMarkerVariant]: Array<SliderMarkerVariant[key]>;
10
+ };
11
+
12
+ export declare type SliderMarkerVariantProps = Partial<SliderMarkerVariant>;
13
+
14
+ export declare const sliderMarkerVariantMap: SliderMarkerVariantMap;
15
+
16
+ export declare const sliderMarker: ((
17
+ props?: SliderMarkerVariantProps,
18
+ ) => string) & {
19
+ splitVariantProps: <T extends SliderMarkerVariantProps>(
20
+ props: T,
21
+ ) => [SliderMarkerVariantProps, Omit<T, keyof SliderMarkerVariantProps>];
22
+ }
@@ -0,0 +1,30 @@
1
+ import './slider-marker.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const defaultVariant = {
5
+ "align": "center"
6
+ };
7
+
8
+ const compoundVariants = [];
9
+
10
+ export const sliderMarkerVariantMap = {
11
+ "align": [
12
+ "start",
13
+ "center",
14
+ "end"
15
+ ]
16
+ };
17
+
18
+ export const sliderMarkerVariantKeys = Object.keys(sliderMarkerVariantMap);
19
+
20
+ export function sliderMarker(props) {
21
+ return createClassName(
22
+ "seed-slider-marker",
23
+ mergeVariants(defaultVariant, props),
24
+ compoundVariants,
25
+ );
26
+ }
27
+
28
+ Object.assign(sliderMarker, { splitVariantProps: (props) => splitVariantProps(props, sliderMarkerVariantMap) });
29
+
30
+ // @recipe(seed): slider-marker
@@ -0,0 +1,19 @@
1
+ .seed-slider-tick {
2
+ position: absolute;
3
+ top: 50%;
4
+ height: 100%;
5
+ background-color: var(--seed-color-fg-neutral-inverted);
6
+ transform: translate(-50%, -50%);
7
+ }
8
+ .seed-slider-tick[data-dir='ltr'] {
9
+ left: calc(var(--tick-position) * 1% + var(--tick-offset));
10
+ }
11
+ .seed-slider-tick[data-dir='rtl'] {
12
+ right: calc(var(--tick-position) * 1% + var(--tick-offset));
13
+ }
14
+ .seed-slider-tick--weight_thin {
15
+ width: 1px;
16
+ }
17
+ .seed-slider-tick--weight_thick {
18
+ width: var(--seed-dimension-x1);
19
+ }
@@ -0,0 +1,22 @@
1
+ declare interface SliderTickVariant {
2
+ /**
3
+ * @default "thin"
4
+ */
5
+ weight: "thin" | "thick";
6
+ }
7
+
8
+ declare type SliderTickVariantMap = {
9
+ [key in keyof SliderTickVariant]: Array<SliderTickVariant[key]>;
10
+ };
11
+
12
+ export declare type SliderTickVariantProps = Partial<SliderTickVariant>;
13
+
14
+ export declare const sliderTickVariantMap: SliderTickVariantMap;
15
+
16
+ export declare const sliderTick: ((
17
+ props?: SliderTickVariantProps,
18
+ ) => string) & {
19
+ splitVariantProps: <T extends SliderTickVariantProps>(
20
+ props: T,
21
+ ) => [SliderTickVariantProps, Omit<T, keyof SliderTickVariantProps>];
22
+ }
@@ -0,0 +1,29 @@
1
+ import './slider-tick.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const defaultVariant = {
5
+ "weight": "thin"
6
+ };
7
+
8
+ const compoundVariants = [];
9
+
10
+ export const sliderTickVariantMap = {
11
+ "weight": [
12
+ "thin",
13
+ "thick"
14
+ ]
15
+ };
16
+
17
+ export const sliderTickVariantKeys = Object.keys(sliderTickVariantMap);
18
+
19
+ export function sliderTick(props) {
20
+ return createClassName(
21
+ "seed-slider-tick",
22
+ mergeVariants(defaultVariant, props),
23
+ compoundVariants,
24
+ );
25
+ }
26
+
27
+ Object.assign(sliderTick, { splitVariantProps: (props) => splitVariantProps(props, sliderTickVariantMap) });
28
+
29
+ // @recipe(seed): slider-tick
@@ -0,0 +1,174 @@
1
+ .seed-slider__root {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: stretch;
5
+ width: 100%;
6
+ gap: var(--seed-dimension-x0_5);
7
+ user-select: none;
8
+ touch-action: none;
9
+ }
10
+ .seed-slider__control {
11
+ position: relative;
12
+ height: 26px;
13
+ display: flex;
14
+ align-items: center;
15
+ }
16
+ .seed-slider__track {
17
+ position: relative;
18
+ flex-grow: 1;
19
+ background-color: var(--seed-color-palette-gray-400);
20
+ height: var(--seed-dimension-x1);
21
+ border-radius: var(--seed-radius-full);
22
+ overflow: hidden;
23
+ }
24
+ .seed-slider__range {
25
+ position: absolute;
26
+ height: 100%;
27
+ background-color: var(--seed-color-fg-neutral);
28
+ transition: left var(--seed-duration-d3) var(--seed-timing-function-easing), right var(--seed-duration-d3) var(--seed-timing-function-easing);
29
+ will-change: left, right;
30
+ }
31
+ .seed-slider__range[data-dir='ltr'] {
32
+ left: var(--range-start);
33
+ right: var(--range-end);
34
+ }
35
+ .seed-slider__range[data-dir='rtl'] {
36
+ right: var(--range-start);
37
+ left: var(--range-end);
38
+ }
39
+ .seed-slider__range:is(:disabled, [disabled], [data-disabled]) {
40
+ background-color: var(--seed-color-fg-disabled);
41
+ }
42
+ .seed-slider__range[data-dragging] {
43
+ transition: none;
44
+ }
45
+ .seed-slider__thumb {
46
+ position: absolute;
47
+ top: 50%;
48
+ width: var(--seed-dimension-x5);
49
+ height: var(--seed-dimension-x5);
50
+ transform: translate(-50%, -50%);
51
+ transition: left var(--seed-duration-d3) var(--seed-timing-function-easing), right var(--seed-duration-d3) var(--seed-timing-function-easing), opacity var(--seed-duration-d2) var(--seed-timing-function-easing);
52
+ will-change: left, right, opacity;
53
+ }
54
+ .seed-slider__thumb[data-ssr] {
55
+ opacity: 0;
56
+ }
57
+ .seed-slider__thumb[data-dir='ltr'] {
58
+ left: calc(var(--thumb-position) * 1% + var(--thumb-offset));
59
+ }
60
+ .seed-slider__thumb[data-dir='rtl'] {
61
+ right: calc(var(--thumb-position) * 1% + var(--thumb-offset));
62
+ }
63
+ .seed-slider__thumb::after {
64
+ content: "";
65
+ position: absolute;
66
+ top: 0;
67
+ left: 0;
68
+ right: 0;
69
+ bottom: 0;
70
+ background-color: var(--seed-color-bg-neutral-inverted);
71
+ border-radius: var(--seed-radius-full);
72
+ transition: transform var(--seed-duration-d3) var(--seed-timing-function-easing);
73
+ will-change: transform;
74
+ }
75
+ .seed-slider__thumb:is(:disabled, [disabled], [data-disabled])::after {
76
+ background-color: var(--seed-color-fg-disabled);
77
+ }
78
+ .seed-slider__thumb[data-dragging] {
79
+ transition: none;
80
+ }
81
+ .seed-slider__thumb[data-thumb-dragging]::after {
82
+ transform: scale(1.2);
83
+ }
84
+ .seed-slider__thumb:is(:focus, [data-focus]) {
85
+ outline: none;
86
+ }
87
+ .seed-slider__markers {
88
+ position: relative;
89
+ height: var(--seed-line-height-t3);
90
+ }
91
+ .seed-slider__valueIndicatorRoot {
92
+ display: flex;
93
+ flex-direction: column;
94
+ background: var(--seed-color-bg-neutral-inverted);
95
+ padding-inline: var(--seed-dimension-x1_5);
96
+ padding-block: var(--seed-dimension-x0_5);
97
+ border-radius: var(--seed-radius-r1);
98
+ color: var(--seed-color-fg-neutral-inverted);
99
+ font-size: var(--seed-font-size-t1);
100
+ line-height: var(--seed-line-height-t1);
101
+ font-weight: var(--seed-font-weight-medium);
102
+ white-space: pre-wrap;
103
+ text-align: center;
104
+ width: max-content;
105
+ position: absolute;
106
+ bottom: calc(100% + var(--seed-dimension-x3));
107
+ opacity: 0;
108
+ }
109
+ .seed-slider__valueIndicatorRoot[data-dir='ltr'] {
110
+ left: calc(var(--indicator-position) * 1% + var(--indicator-offset));
111
+ transform: translateX(-50%);
112
+ }
113
+ .seed-slider__valueIndicatorRoot[data-dir='rtl'] {
114
+ right: calc(var(--indicator-position) * 1% + var(--indicator-offset));
115
+ transform: translateX(50%);
116
+ }
117
+ .seed-slider__valueIndicatorRoot[data-thumb-dragging] {
118
+ opacity: 1;
119
+ }
120
+ .seed-slider__valueIndicatorRoot[data-thumb-dragging][data-dir='ltr'] {
121
+ animation: seed-enter;
122
+ animation-timing-function: var(--seed-timing-function-enter);
123
+ animation-duration: var(--seed-duration-d4);
124
+ --seed-enter-translate-x: -50%;
125
+ --seed-enter-translate-y: var(--seed-dimension-x3);
126
+ --seed-enter-opacity: 0;
127
+ --seed-enter-scale: 0.9;
128
+ }
129
+ .seed-slider__valueIndicatorRoot[data-thumb-dragging][data-dir='rtl'] {
130
+ animation: seed-enter;
131
+ animation-timing-function: var(--seed-timing-function-enter);
132
+ animation-duration: var(--seed-duration-d4);
133
+ --seed-enter-translate-x: 50%;
134
+ --seed-enter-translate-y: var(--seed-dimension-x3);
135
+ --seed-enter-opacity: 0;
136
+ --seed-enter-scale: 0.9;
137
+ }
138
+ .seed-slider__valueIndicatorRoot:not([data-thumb-dragging])[data-dir='ltr'] {
139
+ animation: seed-exit;
140
+ animation-timing-function: var(--seed-timing-function-easing);
141
+ animation-duration: var(--seed-duration-d4);
142
+ animation-fill-mode: forwards;
143
+ --seed-exit-translate-x: -50%;
144
+ --seed-exit-translate-y: var(--seed-dimension-x3);
145
+ --seed-exit-opacity: 0;
146
+ --seed-exit-scale: 1;
147
+ }
148
+ .seed-slider__valueIndicatorRoot:not([data-thumb-dragging])[data-dir='rtl'] {
149
+ animation: seed-exit;
150
+ animation-timing-function: var(--seed-timing-function-easing);
151
+ animation-duration: var(--seed-duration-d4);
152
+ animation-fill-mode: forwards;
153
+ --seed-exit-translate-x: 50%;
154
+ --seed-exit-translate-y: var(--seed-dimension-x3);
155
+ --seed-exit-opacity: 0;
156
+ --seed-exit-scale: 1;
157
+ }
158
+ .seed-slider__valueIndicatorRoot:is(:hidden, [hidden], [data-hidden]) {
159
+ display: none !important;
160
+ }
161
+ .seed-slider__valueIndicatorArrow {
162
+ width: var(--seed-dimension-x2_5);
163
+ height: var(--seed-dimension-x2_5);
164
+ position: absolute;
165
+ top: 100%;
166
+ left: 50%;
167
+ transform: translateX(-50%);
168
+ }
169
+ .seed-slider__valueIndicatorArrowTip {
170
+ display: block;
171
+ fill: var(--seed-color-bg-neutral-inverted);
172
+ width: var(--seed-dimension-x2_5);
173
+ height: 7px;
174
+ }
@@ -0,0 +1,21 @@
1
+ declare interface SliderVariant {
2
+
3
+ }
4
+
5
+ declare type SliderVariantMap = {
6
+ [key in keyof SliderVariant]: Array<SliderVariant[key]>;
7
+ };
8
+
9
+ export declare type SliderVariantProps = Partial<SliderVariant>;
10
+
11
+ export declare type SliderSlotName = "root" | "track" | "control" | "range" | "thumb" | "tick" | "markers" | "valueIndicatorRoot" | "valueIndicatorArrow" | "valueIndicatorArrowTip";
12
+
13
+ export declare const sliderVariantMap: SliderVariantMap;
14
+
15
+ export declare const slider: ((
16
+ props?: SliderVariantProps,
17
+ ) => Record<SliderSlotName, string>) & {
18
+ splitVariantProps: <T extends SliderVariantProps>(
19
+ props: T,
20
+ ) => [SliderVariantProps, Omit<T, keyof SliderVariantProps>];
21
+ }
@@ -0,0 +1,68 @@
1
+ import './slider.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const sliderSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-slider__root"
8
+ ],
9
+ [
10
+ "track",
11
+ "seed-slider__track"
12
+ ],
13
+ [
14
+ "control",
15
+ "seed-slider__control"
16
+ ],
17
+ [
18
+ "range",
19
+ "seed-slider__range"
20
+ ],
21
+ [
22
+ "thumb",
23
+ "seed-slider__thumb"
24
+ ],
25
+ [
26
+ "tick",
27
+ "seed-slider__tick"
28
+ ],
29
+ [
30
+ "markers",
31
+ "seed-slider__markers"
32
+ ],
33
+ [
34
+ "valueIndicatorRoot",
35
+ "seed-slider__valueIndicatorRoot"
36
+ ],
37
+ [
38
+ "valueIndicatorArrow",
39
+ "seed-slider__valueIndicatorArrow"
40
+ ],
41
+ [
42
+ "valueIndicatorArrowTip",
43
+ "seed-slider__valueIndicatorArrowTip"
44
+ ]
45
+ ];
46
+
47
+ const defaultVariant = {};
48
+
49
+ const compoundVariants = [];
50
+
51
+ export const sliderVariantMap = {};
52
+
53
+ export const sliderVariantKeys = Object.keys(sliderVariantMap);
54
+
55
+ export function slider(props) {
56
+ return Object.fromEntries(
57
+ sliderSlotNames.map(([slot, className]) => {
58
+ return [
59
+ slot,
60
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
61
+ ];
62
+ }),
63
+ );
64
+ }
65
+
66
+ Object.assign(slider, { splitVariantProps: (props) => splitVariantProps(props, sliderVariantMap) });
67
+
68
+ // @recipe(seed): slider
@@ -0,0 +1,194 @@
1
+ .seed-text-input__root {
2
+ display: flex;
3
+ width: 100%;
4
+ align-items: center;
5
+ overflow: hidden;
6
+ transition: box-shadow var(--seed-duration-d3) var(--seed-timing-function-easing);
7
+ }
8
+ .seed-text-input__value {
9
+ box-sizing: border-box;
10
+ font: inherit;
11
+ background: none;
12
+ border: none;
13
+ outline: none;
14
+ resize: none;
15
+ flex-grow: 1;
16
+ align-self: stretch;
17
+ color: var(--seed-color-fg-neutral);
18
+ font-weight: var(--seed-font-weight-regular);
19
+ padding-inline: 0;
20
+ }
21
+ .seed-text-input__value:is(input) {
22
+ width: 0;
23
+ }
24
+ .seed-text-input__value::placeholder {
25
+ color: var(--seed-color-fg-placeholder);
26
+ font-weight: var(--seed-font-weight-regular);
27
+ }
28
+ .seed-text-input__value:is(:disabled, [disabled], [data-disabled]) {
29
+ color: var(--seed-color-fg-disabled);
30
+ }
31
+ .seed-text-input__value:is(:disabled, [disabled], [data-disabled])::placeholder {
32
+ color: var(--seed-color-fg-disabled);
33
+ }
34
+ .seed-text-input__prefixText {
35
+ color: var(--seed-color-fg-neutral-muted);
36
+ font-weight: var(--seed-font-weight-regular);
37
+ }
38
+ .seed-text-input__prefixIcon {
39
+ color: var(--seed-color-fg-neutral-muted);
40
+ flex-shrink: 0;
41
+ }
42
+ .seed-text-input__suffixText {
43
+ color: var(--seed-color-fg-neutral-muted);
44
+ font-weight: var(--seed-font-weight-regular);
45
+ }
46
+ .seed-text-input__suffixIcon {
47
+ color: var(--seed-color-fg-neutral-muted);
48
+ flex-shrink: 0;
49
+ }
50
+ .seed-text-input__root--variant_outline {
51
+ border-radius: var(--seed-radius-r3);
52
+ box-shadow: inset 0 0 0 1px var(--seed-color-stroke-neutral-weak);
53
+ }
54
+ .seed-text-input__root--variant_outline:not(:is([data-readonly])):is(:focus, [data-focus]) {
55
+ box-shadow: inset 0 0 0 2px var(--seed-color-stroke-neutral-contrast);
56
+ }
57
+ .seed-text-input__root--variant_outline:is(:invalid, [data-invalid]) {
58
+ box-shadow: inset 0 0 0 2px var(--seed-color-stroke-critical-solid);
59
+ }
60
+ .seed-text-input__root--variant_outline:is(:invalid, [data-invalid]):is(:focus, [data-focus]) {
61
+ box-shadow: inset 0 0 0 2px var(--seed-color-stroke-critical-solid);
62
+ }
63
+ .seed-text-input__root--variant_outline:is(:disabled, [disabled], [data-disabled]) {
64
+ background-color: var(--seed-color-bg-disabled);
65
+ }
66
+ .seed-text-input__root--variant_outline:is([data-readonly]):not(:is(:disabled, [disabled], [data-disabled])) {
67
+ background-color: var(--seed-color-bg-disabled);
68
+ }
69
+ .seed-text-input__value--variant_outline:first-child {
70
+ padding-inline-start: var(--seed-dimension-x4);
71
+ }
72
+ .seed-text-input__value--variant_outline:last-child {
73
+ padding-inline-end: var(--seed-dimension-x4);
74
+ }
75
+ .seed-text-input__prefixText--variant_outline:first-child {
76
+ margin-inline-start: var(--seed-dimension-x4);
77
+ }
78
+ .seed-text-input__prefixIcon--variant_outline:first-child {
79
+ margin-inline-start: var(--seed-dimension-x4);
80
+ }
81
+ .seed-text-input__suffixText--variant_outline:last-child {
82
+ margin-inline-end: var(--seed-dimension-x4);
83
+ }
84
+ .seed-text-input__suffixIcon--variant_outline:last-child {
85
+ margin-inline-end: var(--seed-dimension-x4);
86
+ }
87
+ .seed-text-input__root--variant_underline {
88
+ gap: var(--seed-dimension-x2_5);
89
+ min-height: var(--seed-dimension-x10);
90
+ box-shadow: inset 0 calc(1px * -1) 0 0 var(--seed-color-stroke-neutral-weak);
91
+ }
92
+ .seed-text-input__root--variant_underline:not(:is([data-readonly])):is(:focus, [data-focus]) {
93
+ box-shadow: inset 0 calc(2px * -1) 0 0 var(--seed-color-stroke-neutral-contrast);
94
+ }
95
+ .seed-text-input__root--variant_underline:is(:invalid, [data-invalid]) {
96
+ box-shadow: inset 0 calc(2px * -1) 0 0 var(--seed-color-stroke-critical-solid);
97
+ }
98
+ .seed-text-input__root--variant_underline:is(:invalid, [data-invalid]):is(:focus, [data-focus]) {
99
+ box-shadow: inset 0 calc(2px * -1) 0 0 var(--seed-color-stroke-critical-solid);
100
+ }
101
+ .seed-text-input__value--variant_underline {
102
+ font-size: var(--seed-font-size-t6);
103
+ line-height: var(--seed-line-height-t6);
104
+ }
105
+ .seed-text-input__value--variant_underline::placeholder {
106
+ font-size: var(--seed-font-size-t6);
107
+ line-height: var(--seed-line-height-t6);
108
+ }
109
+ .seed-text-input__value--variant_underline:is([data-readonly]):not(:is(:disabled, [disabled], [data-disabled])) {
110
+ color: var(--seed-color-fg-neutral-muted);
111
+ }
112
+ .seed-text-input__value--variant_underline:is([data-readonly]):not(:is(:disabled, [disabled], [data-disabled]))::placeholder {
113
+ color: var(--seed-color-fg-neutral-muted);
114
+ }
115
+ .seed-text-input__prefixText--variant_underline {
116
+ font-size: var(--seed-font-size-t6);
117
+ line-height: var(--seed-line-height-t6);
118
+ }
119
+ .seed-text-input__prefixIcon--variant_underline {
120
+ width: var(--seed-dimension-x6);
121
+ height: var(--seed-dimension-x6);
122
+ }
123
+ .seed-text-input__suffixText--variant_underline {
124
+ font-size: var(--seed-font-size-t6);
125
+ line-height: var(--seed-line-height-t6);
126
+ }
127
+ .seed-text-input__suffixIcon--variant_underline {
128
+ width: var(--seed-dimension-x6);
129
+ height: var(--seed-dimension-x6);
130
+ }
131
+ .seed-text-input__value--size_large:is(textarea) {
132
+ min-height: 95px;
133
+ padding-block: var(--seed-dimension-x3_5);
134
+ }
135
+ .seed-text-input__value--size_medium:is(textarea) {
136
+ min-height: 90px;
137
+ padding-block: 11px;
138
+ }
139
+ .seed-text-input__root--variant_outline-size_large {
140
+ gap: var(--seed-dimension-x2_5);
141
+ min-height: var(--seed-dimension-x13);
142
+ }
143
+ .seed-text-input__value--variant_outline-size_large {
144
+ font-size: var(--seed-font-size-t5);
145
+ line-height: var(--seed-line-height-t5);
146
+ }
147
+ .seed-text-input__value--variant_outline-size_large::placeholder {
148
+ font-size: var(--seed-font-size-t5);
149
+ line-height: var(--seed-line-height-t5);
150
+ }
151
+ .seed-text-input__prefixText--variant_outline-size_large {
152
+ font-size: var(--seed-font-size-t5);
153
+ line-height: var(--seed-line-height-t5);
154
+ }
155
+ .seed-text-input__prefixIcon--variant_outline-size_large {
156
+ width: var(--seed-dimension-x5);
157
+ height: var(--seed-dimension-x5);
158
+ }
159
+ .seed-text-input__suffixText--variant_outline-size_large {
160
+ font-size: var(--seed-font-size-t5);
161
+ line-height: var(--seed-line-height-t5);
162
+ }
163
+ .seed-text-input__suffixIcon--variant_outline-size_large {
164
+ width: var(--seed-dimension-x5);
165
+ height: var(--seed-dimension-x5);
166
+ }
167
+ .seed-text-input__root--variant_outline-size_medium {
168
+ gap: var(--seed-dimension-x1_5);
169
+ min-height: var(--seed-dimension-x10);
170
+ }
171
+ .seed-text-input__value--variant_outline-size_medium {
172
+ font-size: var(--seed-font-size-t4);
173
+ line-height: var(--seed-line-height-t4);
174
+ }
175
+ .seed-text-input__value--variant_outline-size_medium::placeholder {
176
+ font-size: var(--seed-font-size-t4);
177
+ line-height: var(--seed-line-height-t4);
178
+ }
179
+ .seed-text-input__prefixText--variant_outline-size_medium {
180
+ font-size: var(--seed-font-size-t4);
181
+ line-height: var(--seed-line-height-t4);
182
+ }
183
+ .seed-text-input__prefixIcon--variant_outline-size_medium {
184
+ width: var(--seed-dimension-x4);
185
+ height: var(--seed-dimension-x4);
186
+ }
187
+ .seed-text-input__suffixText--variant_outline-size_medium {
188
+ font-size: var(--seed-font-size-t4);
189
+ line-height: var(--seed-line-height-t4);
190
+ }
191
+ .seed-text-input__suffixIcon--variant_outline-size_medium {
192
+ width: var(--seed-dimension-x4);
193
+ height: var(--seed-dimension-x4);
194
+ }
@@ -0,0 +1,28 @@
1
+ declare interface TextInputVariant {
2
+ /**
3
+ * @default "outline"
4
+ */
5
+ variant: "outline" | "underline";
6
+ /**
7
+ * @default "large"
8
+ */
9
+ size: "large" | "medium";
10
+ }
11
+
12
+ declare type TextInputVariantMap = {
13
+ [key in keyof TextInputVariant]: Array<TextInputVariant[key]>;
14
+ };
15
+
16
+ export declare type TextInputVariantProps = Partial<TextInputVariant>;
17
+
18
+ export declare type TextInputSlotName = "root" | "value" | "prefixText" | "prefixIcon" | "suffixText" | "suffixIcon";
19
+
20
+ export declare const textInputVariantMap: TextInputVariantMap;
21
+
22
+ export declare const textInput: ((
23
+ props?: TextInputVariantProps,
24
+ ) => Record<TextInputSlotName, string>) & {
25
+ splitVariantProps: <T extends TextInputVariantProps>(
26
+ props: T,
27
+ ) => [TextInputVariantProps, Omit<T, keyof TextInputVariantProps>];
28
+ }