@seed-design/lynx-css 0.7.0 → 0.8.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.
@@ -0,0 +1,273 @@
1
+ .seed-text-input__root {
2
+ display: flex;
3
+ flex-direction: row;
4
+ width: 100%;
5
+ align-items: center;
6
+ overflow: hidden;
7
+ position: relative
8
+ }
9
+ .seed-text-input__baseStroke {
10
+ position: absolute;
11
+ pointer-events: none
12
+ }
13
+ .seed-text-input__stroke {
14
+ position: absolute;
15
+ top: 0;
16
+ right: 0;
17
+ bottom: 0;
18
+ left: 0;
19
+ border-color: transparent;
20
+ transition: border-color 0.1s var(--seed-timing-function-easing);
21
+ pointer-events: none
22
+ }
23
+ .seed-text-input__value {
24
+ flex-grow: 1;
25
+ min-width: 0;
26
+ align-self: stretch;
27
+ padding: 0;
28
+ border-width: 0;
29
+ background-color: transparent;
30
+ color: var(--seed-color-fg-neutral);
31
+ font-weight: var(--seed-font-weight-regular)
32
+ }
33
+ .seed-text-input__textareaRoot {
34
+ flex-grow: 1;
35
+ min-width: 0;
36
+ align-self: stretch;
37
+ display: flex;
38
+ flex-direction: column;
39
+ position: relative
40
+ }
41
+ .seed-text-input__textareaAutoresizeRoot {}
42
+ .seed-text-input__textareaValue {}
43
+ .seed-text-input__textareaFixed {}
44
+ .seed-text-input__textareaNativeAutoresize {
45
+ width: 100%;
46
+ height: auto;
47
+ flex-shrink: 0
48
+ }
49
+ .seed-text-input__textareaAndroidAutoresize {}
50
+ .seed-text-input__prefixText {
51
+ color: var(--seed-color-fg-neutral-subtle);
52
+ font-weight: var(--seed-font-weight-regular);
53
+ flex-shrink: 0
54
+ }
55
+ .seed-text-input__prefixIcon {
56
+ color: var(--seed-color-fg-neutral-muted);
57
+ flex-shrink: 0
58
+ }
59
+ .seed-text-input__suffixText {
60
+ color: var(--seed-color-fg-neutral-subtle);
61
+ font-weight: var(--seed-font-weight-regular);
62
+ flex-shrink: 0
63
+ }
64
+ .seed-text-input__suffixIcon {
65
+ color: var(--seed-color-fg-neutral-muted);
66
+ flex-shrink: 0
67
+ }
68
+ .seed-text-input__baseStroke--variant_outline {
69
+ top: 0;
70
+ right: 0;
71
+ bottom: 0;
72
+ left: 0;
73
+ border-color: var(--seed-color-stroke-neutral-weak);
74
+ border-style: solid;
75
+ border-width: 1px
76
+ }
77
+ .seed-text-input__stroke--variant_outline {
78
+ border-style: solid;
79
+ border-width: 2px
80
+ }
81
+ .seed-text-input__root--variant_underline {
82
+ overflow: visible
83
+ }
84
+ .seed-text-input__baseStroke--variant_underline {
85
+ right: 0;
86
+ bottom: 0;
87
+ left: 0;
88
+ height: 1px;
89
+ background-color: var(--seed-color-stroke-neutral-weak)
90
+ }
91
+ .seed-text-input__stroke--variant_underline {
92
+ border-width: 0;
93
+ border-bottom-style: solid;
94
+ border-bottom-width: 2px
95
+ }
96
+ .seed-text-input__textareaAutoresizeRoot--size_large {
97
+ min-height: 94px;
98
+ padding-top: var(--seed-dimension-x3_5);
99
+ padding-bottom: var(--seed-dimension-x3_5)
100
+ }
101
+ .seed-text-input__textareaAndroidAutoresize--size_large {
102
+ min-height: 94px;
103
+ padding-top: var(--seed-dimension-x3_5);
104
+ padding-bottom: var(--seed-dimension-x3_5)
105
+ }
106
+ .seed-text-input__textareaFixed--size_large {
107
+ min-height: 94px;
108
+ padding-top: var(--seed-dimension-x3_5);
109
+ padding-bottom: var(--seed-dimension-x3_5)
110
+ }
111
+ .seed-text-input__textareaAutoresizeRoot--size_medium {
112
+ min-height: 82px;
113
+ padding-top: var(--seed-dimension-x3);
114
+ padding-bottom: var(--seed-dimension-x3)
115
+ }
116
+ .seed-text-input__textareaAndroidAutoresize--size_medium {
117
+ min-height: 82px;
118
+ padding-top: var(--seed-dimension-x3);
119
+ padding-bottom: var(--seed-dimension-x3)
120
+ }
121
+ .seed-text-input__textareaFixed--size_medium {
122
+ min-height: 82px;
123
+ padding-top: var(--seed-dimension-x3);
124
+ padding-bottom: var(--seed-dimension-x3)
125
+ }
126
+ .seed-text-input__stroke--focused_true {
127
+ border-color: var(--seed-color-stroke-neutral-contrast)
128
+ }
129
+ .seed-text-input__stroke--invalid_true {
130
+ border-color: var(--seed-color-stroke-critical-solid)
131
+ }
132
+ .seed-text-input__value--disabled_true {
133
+ color: var(--seed-color-fg-disabled)
134
+ }
135
+ .seed-text-input__prefixText--disabled_true {
136
+ color: var(--seed-color-fg-disabled)
137
+ }
138
+ .seed-text-input__prefixIcon--disabled_true {
139
+ color: var(--seed-color-fg-disabled)
140
+ }
141
+ .seed-text-input__suffixText--disabled_true {
142
+ color: var(--seed-color-fg-disabled)
143
+ }
144
+ .seed-text-input__suffixIcon--disabled_true {
145
+ color: var(--seed-color-fg-disabled)
146
+ }
147
+ .seed-text-input__root--variant_outline-size_large {
148
+ gap: var(--seed-dimension-x2_5);
149
+ min-height: var(--seed-dimension-x13);
150
+ border-radius: var(--seed-radius-r3);
151
+ padding-left: var(--seed-dimension-x4);
152
+ padding-right: var(--seed-dimension-x4)
153
+ }
154
+ .seed-text-input__stroke--variant_outline-size_large {
155
+ border-radius: var(--seed-radius-r3)
156
+ }
157
+ .seed-text-input__baseStroke--variant_outline-size_large {
158
+ border-radius: var(--seed-radius-r3)
159
+ }
160
+ .seed-text-input__value--variant_outline-size_large {
161
+ font-size: var(--seed-font-size-t5);
162
+ line-height: var(--seed-line-height-t5)
163
+ }
164
+ .seed-text-input__prefixText--variant_outline-size_large {
165
+ font-size: var(--seed-font-size-t5);
166
+ line-height: var(--seed-line-height-t5)
167
+ }
168
+ .seed-text-input__prefixIcon--variant_outline-size_large {
169
+ width: var(--seed-dimension-x5);
170
+ height: var(--seed-dimension-x5)
171
+ }
172
+ .seed-text-input__suffixText--variant_outline-size_large {
173
+ font-size: var(--seed-font-size-t5);
174
+ line-height: var(--seed-line-height-t5)
175
+ }
176
+ .seed-text-input__suffixIcon--variant_outline-size_large {
177
+ width: var(--seed-dimension-x5);
178
+ height: var(--seed-dimension-x5)
179
+ }
180
+ .seed-text-input__root--variant_outline-size_medium {
181
+ gap: var(--seed-dimension-x2);
182
+ min-height: var(--seed-dimension-x10);
183
+ border-radius: var(--seed-radius-r2);
184
+ padding-left: var(--seed-dimension-x3_5);
185
+ padding-right: var(--seed-dimension-x3_5)
186
+ }
187
+ .seed-text-input__stroke--variant_outline-size_medium {
188
+ border-radius: var(--seed-radius-r2)
189
+ }
190
+ .seed-text-input__baseStroke--variant_outline-size_medium {
191
+ border-radius: var(--seed-radius-r2)
192
+ }
193
+ .seed-text-input__value--variant_outline-size_medium {
194
+ font-size: var(--seed-font-size-t4);
195
+ line-height: var(--seed-line-height-t4)
196
+ }
197
+ .seed-text-input__prefixText--variant_outline-size_medium {
198
+ font-size: var(--seed-font-size-t4);
199
+ line-height: var(--seed-line-height-t4)
200
+ }
201
+ .seed-text-input__prefixIcon--variant_outline-size_medium {
202
+ width: var(--seed-dimension-x4);
203
+ height: var(--seed-dimension-x4)
204
+ }
205
+ .seed-text-input__suffixText--variant_outline-size_medium {
206
+ font-size: var(--seed-font-size-t4);
207
+ line-height: var(--seed-line-height-t4)
208
+ }
209
+ .seed-text-input__suffixIcon--variant_outline-size_medium {
210
+ width: var(--seed-dimension-x4);
211
+ height: var(--seed-dimension-x4)
212
+ }
213
+ .seed-text-input__root--variant_underline-size_large {
214
+ gap: var(--seed-dimension-x2_5);
215
+ min-height: var(--seed-dimension-x10);
216
+ padding-top: var(--seed-dimension-x2);
217
+ padding-bottom: var(--seed-dimension-x2)
218
+ }
219
+ .seed-text-input__value--variant_underline-size_large {
220
+ font-size: var(--seed-font-size-t6);
221
+ line-height: var(--seed-line-height-t6)
222
+ }
223
+ .seed-text-input__prefixText--variant_underline-size_large {
224
+ font-size: var(--seed-font-size-t6);
225
+ line-height: var(--seed-line-height-t6)
226
+ }
227
+ .seed-text-input__prefixIcon--variant_underline-size_large {
228
+ width: var(--seed-dimension-x6);
229
+ height: var(--seed-dimension-x6)
230
+ }
231
+ .seed-text-input__suffixText--variant_underline-size_large {
232
+ font-size: var(--seed-font-size-t6);
233
+ line-height: var(--seed-line-height-t6)
234
+ }
235
+ .seed-text-input__suffixIcon--variant_underline-size_large {
236
+ width: var(--seed-dimension-x6);
237
+ height: var(--seed-dimension-x6)
238
+ }
239
+ .seed-text-input__root--variant_underline-size_medium {
240
+ gap: var(--seed-dimension-x2);
241
+ min-height: 34px;
242
+ padding-top: var(--seed-dimension-x1_5);
243
+ padding-bottom: var(--seed-dimension-x1_5)
244
+ }
245
+ .seed-text-input__value--variant_underline-size_medium {
246
+ font-size: var(--seed-font-size-t5);
247
+ line-height: var(--seed-line-height-t5)
248
+ }
249
+ .seed-text-input__prefixText--variant_underline-size_medium {
250
+ font-size: var(--seed-font-size-t5);
251
+ line-height: var(--seed-line-height-t5)
252
+ }
253
+ .seed-text-input__prefixIcon--variant_underline-size_medium {
254
+ width: var(--seed-dimension-x5);
255
+ height: var(--seed-dimension-x5)
256
+ }
257
+ .seed-text-input__suffixText--variant_underline-size_medium {
258
+ font-size: var(--seed-font-size-t5);
259
+ line-height: var(--seed-line-height-t5)
260
+ }
261
+ .seed-text-input__suffixIcon--variant_underline-size_medium {
262
+ width: var(--seed-dimension-x5);
263
+ height: var(--seed-dimension-x5)
264
+ }
265
+ .seed-text-input__root--variant_outline-readOnly_true-disabled_false {
266
+ background: var(--seed-color-bg-disabled)
267
+ }
268
+ .seed-text-input__value--variant_underline-readOnly_true-disabled_false {
269
+ color: var(--seed-color-fg-neutral-muted)
270
+ }
271
+ .seed-text-input__root--variant_outline-disabled_true {
272
+ background: var(--seed-color-bg-disabled)
273
+ }
@@ -0,0 +1,44 @@
1
+ declare interface TextInputVariant {
2
+ /**
3
+ * @default "outline"
4
+ */
5
+ variant: "outline" | "underline";
6
+ /**
7
+ * @default "large"
8
+ */
9
+ size: "large" | "medium";
10
+ /**
11
+ * @default false
12
+ */
13
+ focused: boolean;
14
+ /**
15
+ * @default false
16
+ */
17
+ invalid: boolean;
18
+ /**
19
+ * @default false
20
+ */
21
+ readOnly: boolean;
22
+ /**
23
+ * @default false
24
+ */
25
+ disabled: boolean;
26
+ }
27
+
28
+ declare type TextInputVariantMap = {
29
+ [key in keyof TextInputVariant]: Array<TextInputVariant[key]>;
30
+ };
31
+
32
+ export declare type TextInputVariantProps = Partial<TextInputVariant>;
33
+
34
+ export declare type TextInputSlotName = "root" | "baseStroke" | "stroke" | "value" | "textareaRoot" | "textareaAutoresizeRoot" | "textareaValue" | "textareaFixed" | "textareaNativeAutoresize" | "textareaAndroidAutoresize" | "prefixText" | "prefixIcon" | "suffixText" | "suffixIcon";
35
+
36
+ export declare const textInputVariantMap: TextInputVariantMap;
37
+
38
+ export declare const textInput: ((
39
+ props?: TextInputVariantProps,
40
+ ) => Record<TextInputSlotName, string>) & {
41
+ splitVariantProps: <T extends TextInputVariantProps>(
42
+ props: T,
43
+ ) => [TextInputVariantProps, Omit<T, keyof TextInputVariantProps>];
44
+ }
@@ -0,0 +1,147 @@
1
+ import './text-input.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const textInputSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-text-input__root"
8
+ ],
9
+ [
10
+ "baseStroke",
11
+ "seed-text-input__baseStroke"
12
+ ],
13
+ [
14
+ "stroke",
15
+ "seed-text-input__stroke"
16
+ ],
17
+ [
18
+ "value",
19
+ "seed-text-input__value"
20
+ ],
21
+ [
22
+ "textareaRoot",
23
+ "seed-text-input__textareaRoot"
24
+ ],
25
+ [
26
+ "textareaAutoresizeRoot",
27
+ "seed-text-input__textareaAutoresizeRoot"
28
+ ],
29
+ [
30
+ "textareaValue",
31
+ "seed-text-input__textareaValue"
32
+ ],
33
+ [
34
+ "textareaFixed",
35
+ "seed-text-input__textareaFixed"
36
+ ],
37
+ [
38
+ "textareaNativeAutoresize",
39
+ "seed-text-input__textareaNativeAutoresize"
40
+ ],
41
+ [
42
+ "textareaAndroidAutoresize",
43
+ "seed-text-input__textareaAndroidAutoresize"
44
+ ],
45
+ [
46
+ "prefixText",
47
+ "seed-text-input__prefixText"
48
+ ],
49
+ [
50
+ "prefixIcon",
51
+ "seed-text-input__prefixIcon"
52
+ ],
53
+ [
54
+ "suffixText",
55
+ "seed-text-input__suffixText"
56
+ ],
57
+ [
58
+ "suffixIcon",
59
+ "seed-text-input__suffixIcon"
60
+ ]
61
+ ];
62
+
63
+ const defaultVariant = {
64
+ "variant": "outline",
65
+ "size": "large",
66
+ "focused": false,
67
+ "invalid": false,
68
+ "readOnly": false,
69
+ "disabled": false
70
+ };
71
+
72
+ const compoundVariants = [
73
+ {
74
+ "variant": "outline",
75
+ "size": "large"
76
+ },
77
+ {
78
+ "variant": "outline",
79
+ "size": "medium"
80
+ },
81
+ {
82
+ "variant": "underline",
83
+ "size": "large"
84
+ },
85
+ {
86
+ "variant": "underline",
87
+ "size": "medium"
88
+ },
89
+ {
90
+ "variant": "outline",
91
+ "readOnly": true,
92
+ "disabled": false
93
+ },
94
+ {
95
+ "variant": "underline",
96
+ "readOnly": true,
97
+ "disabled": false
98
+ },
99
+ {
100
+ "variant": "outline",
101
+ "disabled": true
102
+ }
103
+ ];
104
+
105
+ export const textInputVariantMap = {
106
+ "variant": [
107
+ "outline",
108
+ "underline"
109
+ ],
110
+ "size": [
111
+ "large",
112
+ "medium"
113
+ ],
114
+ "focused": [
115
+ true,
116
+ false
117
+ ],
118
+ "invalid": [
119
+ true,
120
+ false
121
+ ],
122
+ "readOnly": [
123
+ true,
124
+ false
125
+ ],
126
+ "disabled": [
127
+ true,
128
+ false
129
+ ]
130
+ };
131
+
132
+ export const textInputVariantKeys = Object.keys(textInputVariantMap);
133
+
134
+ export function textInput(props) {
135
+ return Object.fromEntries(
136
+ textInputSlotNames.map(([slot, className]) => {
137
+ return [
138
+ slot,
139
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
140
+ ];
141
+ }),
142
+ );
143
+ }
144
+
145
+ Object.assign(textInput, { splitVariantProps: (props) => splitVariantProps(props, textInputVariantMap) });
146
+
147
+ // @recipe(seed): text-input
@@ -89,6 +89,11 @@ export declare const vars: {
89
89
  "color": "var(--seed-color-fg-neutral)"
90
90
  }
91
91
  },
92
+ "readOnly": {
93
+ "dateVisual": {
94
+ "color": "var(--seed-color-palette-gray-600)"
95
+ }
96
+ },
92
97
  "disabled": {
93
98
  "dateContent": {
94
99
  "color": "var(--seed-color-fg-disabled)"
@@ -89,6 +89,11 @@ export const vars = {
89
89
  "color": "var(--seed-color-fg-neutral)"
90
90
  }
91
91
  },
92
+ "readOnly": {
93
+ "dateVisual": {
94
+ "color": "var(--seed-color-palette-gray-600)"
95
+ }
96
+ },
92
97
  "disabled": {
93
98
  "dateContent": {
94
99
  "color": "var(--seed-color-fg-disabled)"