@chayns-ui/core 0.3.2 → 0.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.
- package/README.md +5 -1
- package/dist/button.css +16 -0
- package/dist/checkbox.css +83 -0
- package/dist/components/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/accordion/Accordion.js +3 -0
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts +4 -0
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/checkbox/Checkbox.js +27 -0
- package/dist/components/checkbox/Checkbox.js.map +1 -0
- package/dist/components/checkbox/Checkbox.types.d.ts +9 -0
- package/dist/components/checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/list/List.d.ts +14 -2
- package/dist/components/list/List.d.ts.map +1 -1
- package/dist/components/list/List.js +79 -6
- package/dist/components/list/List.js.map +1 -1
- package/dist/components/list/List.types.d.ts +17 -77
- package/dist/components/list/List.types.d.ts.map +1 -1
- package/dist/components/list/ListContext.d.ts +6 -0
- package/dist/components/list/ListContext.d.ts.map +1 -0
- package/dist/components/list/ListContext.js +14 -0
- package/dist/components/list/ListContext.js.map +1 -0
- package/dist/components/message-box/MessageBox.d.ts +4 -0
- package/dist/components/message-box/MessageBox.d.ts.map +1 -0
- package/dist/components/message-box/MessageBox.js +19 -0
- package/dist/components/message-box/MessageBox.js.map +1 -0
- package/dist/components/message-box/MessageBox.types.d.ts +13 -0
- package/dist/components/message-box/MessageBox.types.d.ts.map +1 -0
- package/dist/components/popup/Popup.d.ts +6 -3
- package/dist/components/popup/Popup.d.ts.map +1 -1
- package/dist/components/popup/Popup.js +102 -90
- package/dist/components/popup/Popup.js.map +1 -1
- package/dist/components/popup/Popup.types.d.ts +17 -7
- package/dist/components/popup/Popup.types.d.ts.map +1 -1
- package/dist/components/popup/PopupList.d.ts.map +1 -1
- package/dist/components/popup/PopupList.js +7 -5
- package/dist/components/popup/PopupList.js.map +1 -1
- package/dist/components/radio-group/RadioGroup.d.ts +6 -0
- package/dist/components/radio-group/RadioGroup.d.ts.map +1 -0
- package/dist/components/radio-group/RadioGroup.js +69 -0
- package/dist/components/radio-group/RadioGroup.js.map +1 -0
- package/dist/components/radio-group/RadioGroup.types.d.ts +30 -0
- package/dist/components/radio-group/RadioGroup.types.d.ts.map +1 -0
- package/dist/components/radio-group/RadioGroupContext.d.ts +11 -0
- package/dist/components/radio-group/RadioGroupContext.d.ts.map +1 -0
- package/dist/components/radio-group/RadioGroupContext.js +12 -0
- package/dist/components/radio-group/RadioGroupContext.js.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts +16 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.js +146 -0
- package/dist/components/segmented-control/SegmentedControl.js.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.types.d.ts +41 -0
- package/dist/components/segmented-control/SegmentedControl.types.d.ts.map +1 -0
- package/dist/components/segmented-control/SegmentedControlContext.d.ts +11 -0
- package/dist/components/segmented-control/SegmentedControlContext.d.ts.map +1 -0
- package/dist/components/segmented-control/SegmentedControlContext.js +12 -0
- package/dist/components/segmented-control/SegmentedControlContext.js.map +1 -0
- package/dist/components/switch/Switch.d.ts +4 -0
- package/dist/components/switch/Switch.d.ts.map +1 -0
- package/dist/components/switch/Switch.js +28 -0
- package/dist/components/switch/Switch.js.map +1 -0
- package/dist/components/switch/Switch.types.d.ts +9 -0
- package/dist/components/switch/Switch.types.d.ts.map +1 -0
- package/dist/components/text-area/TextArea.d.ts +4 -0
- package/dist/components/text-area/TextArea.d.ts.map +1 -0
- package/dist/components/text-area/TextArea.js +45 -0
- package/dist/components/text-area/TextArea.js.map +1 -0
- package/dist/components/text-area/TextArea.types.d.ts +15 -0
- package/dist/components/text-area/TextArea.types.d.ts.map +1 -0
- package/dist/components/text-field/TextField.d.ts +4 -0
- package/dist/components/text-field/TextField.d.ts.map +1 -0
- package/dist/components/text-field/TextField.js +45 -0
- package/dist/components/text-field/TextField.js.map +1 -0
- package/dist/components/text-field/TextField.types.d.ts +15 -0
- package/dist/components/text-field/TextField.types.d.ts.map +1 -0
- package/dist/index.d.ts +15 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/list.css +33 -44
- package/dist/message-box.css +26 -0
- package/dist/radio-group.css +102 -0
- package/dist/segmented-control.css +79 -0
- package/dist/styles.css +7 -0
- package/dist/switch.css +76 -0
- package/dist/text-area.css +136 -0
- package/dist/text-field.css +138 -0
- package/package.json +8 -1
- package/dist/components/list-item/ListItem.d.ts +0 -4
- package/dist/components/list-item/ListItem.d.ts.map +0 -1
- package/dist/components/list-item/ListItem.js +0 -42
- package/dist/components/list-item/ListItem.js.map +0 -1
- package/dist/components/list-item/list-item-body/ListItemBody.d.ts +0 -10
- package/dist/components/list-item/list-item-body/ListItemBody.d.ts.map +0 -1
- package/dist/components/list-item/list-item-body/ListItemBody.js +0 -30
- package/dist/components/list-item/list-item-body/ListItemBody.js.map +0 -1
package/dist/list.css
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
@layer chayns.components {
|
|
2
2
|
.chayns-list {
|
|
3
|
-
box-sizing: border-box;
|
|
4
3
|
display: flex;
|
|
5
4
|
flex-direction: column;
|
|
6
5
|
margin: 0;
|
|
@@ -9,7 +8,6 @@
|
|
|
9
8
|
}
|
|
10
9
|
|
|
11
10
|
.chayns-list-item {
|
|
12
|
-
position: relative;
|
|
13
11
|
display: flex;
|
|
14
12
|
align-items: stretch;
|
|
15
13
|
border-radius: 10px;
|
|
@@ -17,90 +15,83 @@
|
|
|
17
15
|
|
|
18
16
|
.chayns-list-item__action {
|
|
19
17
|
box-sizing: border-box;
|
|
20
|
-
flex: 1;
|
|
21
|
-
min-inline-size: 0;
|
|
22
18
|
display: flex;
|
|
19
|
+
flex: 1;
|
|
23
20
|
align-items: center;
|
|
24
21
|
gap: var(--k12);
|
|
22
|
+
min-inline-size: 0;
|
|
25
23
|
margin: 0;
|
|
26
24
|
padding: var(--k10) var(--k16);
|
|
27
25
|
border: 0;
|
|
28
26
|
border-radius: 10px;
|
|
29
27
|
background: transparent;
|
|
28
|
+
color: var(--text);
|
|
29
|
+
cursor: pointer;
|
|
30
30
|
font: inherit;
|
|
31
31
|
font-size: var(--fs-body);
|
|
32
|
-
color: var(--text);
|
|
33
32
|
text-align: start;
|
|
34
33
|
text-decoration: none;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.chayns-list-item__action--interactive {
|
|
38
|
-
cursor: pointer;
|
|
39
34
|
transition: background 0.16s ease;
|
|
40
35
|
}
|
|
41
36
|
|
|
42
|
-
.chayns-list-item__action
|
|
43
|
-
cursor: not-allowed;
|
|
37
|
+
.chayns-list-item__action:disabled {
|
|
44
38
|
color: var(--disabled-fg);
|
|
39
|
+
cursor: not-allowed;
|
|
45
40
|
}
|
|
46
41
|
|
|
47
|
-
.chayns-list-item__action
|
|
48
|
-
outline:
|
|
49
|
-
|
|
50
|
-
rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
|
|
42
|
+
.chayns-list-item__action:focus-visible {
|
|
43
|
+
outline: var(--focus-ring-size) solid rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
|
|
44
|
+
outline-offset: -2px;
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
.chayns-list-item__leading {
|
|
54
|
-
flex: none;
|
|
55
48
|
display: flex;
|
|
49
|
+
flex: none;
|
|
56
50
|
align-items: center;
|
|
57
51
|
}
|
|
58
52
|
|
|
59
53
|
.chayns-list-item__body {
|
|
60
|
-
min-inline-size: 0;
|
|
61
|
-
flex: 1;
|
|
62
54
|
display: flex;
|
|
55
|
+
flex: 1;
|
|
63
56
|
flex-direction: column;
|
|
57
|
+
min-inline-size: 0;
|
|
64
58
|
}
|
|
65
59
|
|
|
66
60
|
.chayns-list-item__title {
|
|
67
|
-
min-inline-size: 0;
|
|
68
61
|
overflow: hidden;
|
|
69
62
|
color: var(--text);
|
|
70
|
-
white-space: nowrap;
|
|
71
63
|
text-overflow: ellipsis;
|
|
64
|
+
white-space: nowrap;
|
|
72
65
|
}
|
|
73
66
|
|
|
74
|
-
.chayns-list-
|
|
75
|
-
min-inline-size: 0;
|
|
67
|
+
.chayns-list-item__description {
|
|
76
68
|
overflow: hidden;
|
|
77
|
-
font-size: var(--fs-meta);
|
|
78
69
|
color: var(--text-3);
|
|
79
|
-
|
|
70
|
+
font-size: var(--fs-meta);
|
|
80
71
|
text-overflow: ellipsis;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
.chayns-list-item__unread {
|
|
84
|
-
flex: none;
|
|
85
|
-
inline-size: var(--k8);
|
|
86
|
-
block-size: var(--k8);
|
|
87
|
-
border-radius: 50%;
|
|
88
|
-
background: var(--accent);
|
|
72
|
+
white-space: nowrap;
|
|
89
73
|
}
|
|
90
74
|
|
|
91
75
|
.chayns-list-item__trailing {
|
|
92
|
-
flex: none;
|
|
93
|
-
align-self: flex-start;
|
|
94
76
|
display: flex;
|
|
77
|
+
flex: none;
|
|
95
78
|
align-items: flex-start;
|
|
96
|
-
justify-content: flex-end;
|
|
97
79
|
gap: var(--k8);
|
|
98
|
-
padding
|
|
99
|
-
padding-inline-end: var(--k16);
|
|
80
|
+
padding: var(--k10) var(--k16) 0 0;
|
|
100
81
|
color: var(--text-3);
|
|
101
82
|
font-size: var(--fs-meta);
|
|
102
|
-
|
|
103
|
-
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.chayns-list-item__status {
|
|
86
|
+
display: inline-flex;
|
|
87
|
+
align-items: center;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.chayns-list-item__status-dot {
|
|
91
|
+
inline-size: var(--k8);
|
|
92
|
+
block-size: var(--k8);
|
|
93
|
+
border-radius: 50%;
|
|
94
|
+
background: var(--accent);
|
|
104
95
|
}
|
|
105
96
|
|
|
106
97
|
.chayns-visually-hidden {
|
|
@@ -108,25 +99,23 @@
|
|
|
108
99
|
inline-size: 1px;
|
|
109
100
|
block-size: 1px;
|
|
110
101
|
margin: -1px;
|
|
111
|
-
padding: 0;
|
|
112
102
|
overflow: hidden;
|
|
113
103
|
clip-path: inset(50%);
|
|
114
104
|
white-space: nowrap;
|
|
115
|
-
border: 0;
|
|
116
105
|
}
|
|
117
106
|
|
|
118
107
|
@media (hover: hover) {
|
|
119
|
-
.chayns-list-item:has(.chayns-list-item__action
|
|
108
|
+
.chayns-list-item:has(.chayns-list-item__action:hover:not(:disabled)) {
|
|
120
109
|
background: var(--hover);
|
|
121
110
|
}
|
|
122
111
|
|
|
123
|
-
.chayns-list-item__action
|
|
112
|
+
.chayns-list-item__action:hover:not(:disabled) {
|
|
124
113
|
background: transparent;
|
|
125
114
|
}
|
|
126
115
|
}
|
|
127
116
|
|
|
128
117
|
@media (prefers-reduced-motion: reduce) {
|
|
129
|
-
.chayns-list-item__action
|
|
118
|
+
.chayns-list-item__action {
|
|
130
119
|
transition: none;
|
|
131
120
|
}
|
|
132
121
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
@layer chayns.components {
|
|
2
|
+
.chayns-message-box {
|
|
3
|
+
box-sizing: border-box;
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: flex-start;
|
|
6
|
+
gap: var(--k12);
|
|
7
|
+
inline-size: 100%;
|
|
8
|
+
padding: var(--k16);
|
|
9
|
+
border: 1px solid var(--input-border);
|
|
10
|
+
border-radius: 12px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.chayns-message-box--neutral {
|
|
14
|
+
background: var(--surface-2);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.chayns-message-box--admin {
|
|
18
|
+
border-color: var(--accent-300);
|
|
19
|
+
background: var(--tint);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.chayns-message-box--warning {
|
|
23
|
+
border-color: var(--warning);
|
|
24
|
+
background: var(--warning-bg);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
@layer chayns.components {
|
|
2
|
+
.chayns-radio-group {
|
|
3
|
+
display: grid;
|
|
4
|
+
gap: var(--k12);
|
|
5
|
+
min-inline-size: 0;
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
border: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.chayns-radio-group__legend {
|
|
12
|
+
padding: 0;
|
|
13
|
+
color: var(--text);
|
|
14
|
+
font-size: var(--fs-body);
|
|
15
|
+
font-weight: 600;
|
|
16
|
+
line-height: 1.4;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.chayns-radio-group__options {
|
|
20
|
+
display: grid;
|
|
21
|
+
gap: var(--k12);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.chayns-radio {
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
align-items: flex-start;
|
|
27
|
+
gap: var(--k12);
|
|
28
|
+
color: var(--text);
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.chayns-radio__input {
|
|
33
|
+
position: absolute;
|
|
34
|
+
inline-size: 1px;
|
|
35
|
+
block-size: 1px;
|
|
36
|
+
margin: -1px;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
clip-path: inset(50%);
|
|
39
|
+
white-space: nowrap;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.chayns-radio__control {
|
|
43
|
+
box-sizing: border-box;
|
|
44
|
+
display: inline-grid;
|
|
45
|
+
inline-size: var(--k20);
|
|
46
|
+
block-size: var(--k20);
|
|
47
|
+
flex: none;
|
|
48
|
+
place-items: center;
|
|
49
|
+
margin-block-start: 1px;
|
|
50
|
+
border: 2px solid var(--input-border);
|
|
51
|
+
border-radius: 50%;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.chayns-radio__control::after {
|
|
55
|
+
inline-size: var(--k8);
|
|
56
|
+
block-size: var(--k8);
|
|
57
|
+
border-radius: 50%;
|
|
58
|
+
background: var(--accent);
|
|
59
|
+
content: '';
|
|
60
|
+
opacity: 0;
|
|
61
|
+
transform: scale(0.6);
|
|
62
|
+
transition:
|
|
63
|
+
opacity 0.12s ease,
|
|
64
|
+
transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.chayns-radio__input:checked + .chayns-radio__control {
|
|
68
|
+
border-color: var(--accent);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.chayns-radio__input:checked + .chayns-radio__control::after {
|
|
72
|
+
opacity: 1;
|
|
73
|
+
transform: scale(1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.chayns-radio__input:focus-visible + .chayns-radio__control {
|
|
77
|
+
outline: var(--focus-ring-size) solid rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
|
|
78
|
+
outline-offset: 2px;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.chayns-radio:has(.chayns-radio__input:disabled) {
|
|
82
|
+
color: var(--disabled-fg);
|
|
83
|
+
cursor: not-allowed;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.chayns-radio__input:disabled + .chayns-radio__control {
|
|
87
|
+
border-color: var(--disabled-border);
|
|
88
|
+
background: var(--disabled-bg);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.chayns-radio__label {
|
|
92
|
+
font-size: var(--fs-body);
|
|
93
|
+
font-weight: 500;
|
|
94
|
+
line-height: 1.4;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@media (prefers-reduced-motion: reduce) {
|
|
98
|
+
.chayns-radio__control::after {
|
|
99
|
+
transition: none;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
@layer chayns.components {
|
|
2
|
+
.chayns-segmented-control {
|
|
3
|
+
display: grid;
|
|
4
|
+
gap: var(--k8);
|
|
5
|
+
min-inline-size: 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.chayns-segmented-control__label {
|
|
9
|
+
color: var(--text);
|
|
10
|
+
font-size: var(--fs-body);
|
|
11
|
+
font-weight: 600;
|
|
12
|
+
line-height: 1.4;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.chayns-segmented-control__segments {
|
|
16
|
+
position: relative;
|
|
17
|
+
display: inline-grid;
|
|
18
|
+
grid-auto-columns: minmax(0, 1fr);
|
|
19
|
+
grid-auto-flow: column;
|
|
20
|
+
gap: var(--k4);
|
|
21
|
+
padding: var(--k4);
|
|
22
|
+
border-radius: 12px;
|
|
23
|
+
background: var(--toggle-bg);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.chayns-segmented-control__indicator {
|
|
27
|
+
position: absolute;
|
|
28
|
+
z-index: 0;
|
|
29
|
+
inset-block: var(--k4);
|
|
30
|
+
inset-inline-start: var(--k4);
|
|
31
|
+
border: 1px solid var(--border);
|
|
32
|
+
border-radius: 8px;
|
|
33
|
+
background: var(--surface);
|
|
34
|
+
box-shadow: var(--shadow-card);
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
transition: transform 0.2s ease;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.chayns-segmented-control__segment {
|
|
40
|
+
min-block-size: var(--ctrl-h);
|
|
41
|
+
position: relative;
|
|
42
|
+
z-index: 1;
|
|
43
|
+
min-inline-size: 0;
|
|
44
|
+
padding: calc(9 * var(--u)) var(--k12);
|
|
45
|
+
border: 0;
|
|
46
|
+
border-radius: 8px;
|
|
47
|
+
background: transparent;
|
|
48
|
+
color: var(--text);
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
font: inherit;
|
|
51
|
+
font-weight: 500;
|
|
52
|
+
line-height: 1.4;
|
|
53
|
+
text-align: center;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.chayns-segmented-control__segment:focus-visible {
|
|
57
|
+
outline: var(--focus-ring-size) solid rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
|
|
58
|
+
outline-offset: 2px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.chayns-segmented-control__segment:disabled {
|
|
62
|
+
color: var(--disabled-fg);
|
|
63
|
+
cursor: not-allowed;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.chayns-segmented-control__segment:hover:not(:disabled) {
|
|
67
|
+
background: var(--hover);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.chayns-segmented-control__segment--selected:hover:not(:disabled) {
|
|
71
|
+
background: transparent;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@media (prefers-reduced-motion: reduce) {
|
|
75
|
+
.chayns-segmented-control__indicator {
|
|
76
|
+
transition: none;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
package/dist/styles.css
CHANGED
|
@@ -5,3 +5,10 @@
|
|
|
5
5
|
@import url('./accordion.css');
|
|
6
6
|
@import url('./popup.css');
|
|
7
7
|
@import url('./split-button.css');
|
|
8
|
+
@import url('./text-field.css');
|
|
9
|
+
@import url('./text-area.css');
|
|
10
|
+
@import url('./checkbox.css');
|
|
11
|
+
@import url('./switch.css');
|
|
12
|
+
@import url('./radio-group.css');
|
|
13
|
+
@import url('./segmented-control.css');
|
|
14
|
+
@import url('./message-box.css');
|
package/dist/switch.css
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
@layer chayns.components {
|
|
2
|
+
.chayns-switch {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: space-between;
|
|
6
|
+
gap: var(--k14);
|
|
7
|
+
margin: 0;
|
|
8
|
+
color: var(--text);
|
|
9
|
+
cursor: pointer;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.chayns-switch__input {
|
|
13
|
+
position: absolute;
|
|
14
|
+
inline-size: 1px;
|
|
15
|
+
block-size: 1px;
|
|
16
|
+
margin: -1px;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
clip-path: inset(50%);
|
|
19
|
+
white-space: nowrap;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.chayns-switch__label {
|
|
23
|
+
font-size: var(--fs-body);
|
|
24
|
+
font-weight: 500;
|
|
25
|
+
line-height: 1.4;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.chayns-switch__control {
|
|
29
|
+
box-sizing: border-box;
|
|
30
|
+
display: flex;
|
|
31
|
+
inline-size: 42px;
|
|
32
|
+
block-size: 24px;
|
|
33
|
+
flex: none;
|
|
34
|
+
padding: var(--k3);
|
|
35
|
+
border-radius: 999px;
|
|
36
|
+
background: var(--input-border);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.chayns-switch__knob {
|
|
40
|
+
inline-size: var(--k18);
|
|
41
|
+
block-size: var(--k18);
|
|
42
|
+
border-radius: 50%;
|
|
43
|
+
background: var(--surface);
|
|
44
|
+
box-shadow: 0 1px 3px rgb(0 0 0 / 30%);
|
|
45
|
+
transform: translateX(0);
|
|
46
|
+
transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.chayns-switch__input:checked + .chayns-switch__control {
|
|
50
|
+
background: var(--accent);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.chayns-switch__input:checked + .chayns-switch__control .chayns-switch__knob {
|
|
54
|
+
transform: translateX(18px);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.chayns-switch__input:focus-visible + .chayns-switch__control {
|
|
58
|
+
outline: var(--focus-ring-size) solid rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
|
|
59
|
+
outline-offset: 2px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.chayns-switch:has(.chayns-switch__input:disabled) {
|
|
63
|
+
color: var(--disabled-fg);
|
|
64
|
+
cursor: not-allowed;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.chayns-switch__input:disabled + .chayns-switch__control {
|
|
68
|
+
background: var(--disabled-bg);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@media (prefers-reduced-motion: reduce) {
|
|
72
|
+
.chayns-switch__knob {
|
|
73
|
+
transition: none;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
@layer chayns.components {
|
|
2
|
+
.chayns-text-area {
|
|
3
|
+
position: relative;
|
|
4
|
+
inline-size: 100%;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.chayns-text-area__input {
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
display: block;
|
|
10
|
+
inline-size: 100%;
|
|
11
|
+
min-block-size: 84px;
|
|
12
|
+
padding: var(--input-py) var(--input-px);
|
|
13
|
+
border: 1.5px solid var(--input-border);
|
|
14
|
+
border-radius: 10px;
|
|
15
|
+
resize: vertical;
|
|
16
|
+
font: inherit;
|
|
17
|
+
font-size: var(--fs-body);
|
|
18
|
+
line-height: 1.2;
|
|
19
|
+
color: var(--text);
|
|
20
|
+
background: var(--surface);
|
|
21
|
+
outline: none;
|
|
22
|
+
transition:
|
|
23
|
+
border-color 0.18s ease,
|
|
24
|
+
box-shadow 0.18s ease;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.chayns-text-area__label {
|
|
28
|
+
position: absolute;
|
|
29
|
+
inset-block-start: 0;
|
|
30
|
+
inset-inline-start: 10px;
|
|
31
|
+
padding-inline: var(--k5);
|
|
32
|
+
color: var(--text-3);
|
|
33
|
+
pointer-events: none;
|
|
34
|
+
font-size: var(--fs-body);
|
|
35
|
+
font-weight: 400;
|
|
36
|
+
line-height: 1.2;
|
|
37
|
+
white-space: nowrap;
|
|
38
|
+
background: var(--surface);
|
|
39
|
+
transform: translateY(calc(var(--input-py) + 1.5px + 0.6em - 50%));
|
|
40
|
+
transform-origin: left center;
|
|
41
|
+
transition:
|
|
42
|
+
transform 0.2s cubic-bezier(0.22, 0.61, 0.36, 1),
|
|
43
|
+
color 0.15s ease;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:where(.chayns-text-area__input:hover:not(:disabled)) {
|
|
47
|
+
border-color: var(--text-3);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.chayns-text-area__input:focus {
|
|
51
|
+
border-color: var(--accent);
|
|
52
|
+
box-shadow: 0 0 0 var(--focus-ring-size)
|
|
53
|
+
rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-soft));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.chayns-text-area__input:disabled {
|
|
57
|
+
color: var(--disabled-fg);
|
|
58
|
+
cursor: not-allowed;
|
|
59
|
+
background: var(--disabled-bg);
|
|
60
|
+
border-color: var(--disabled-border);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.chayns-text-area__input:read-only {
|
|
64
|
+
color: var(--text-2);
|
|
65
|
+
cursor: text;
|
|
66
|
+
background: var(--surface-2);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.chayns-text-area--error .chayns-text-area__label {
|
|
70
|
+
color: var(--danger);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.chayns-text-area__input:disabled + .chayns-text-area__label {
|
|
74
|
+
color: var(--disabled-fg);
|
|
75
|
+
background: var(--disabled-bg);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.chayns-text-area__input:read-only + .chayns-text-area__label {
|
|
79
|
+
background: var(--surface-2);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.chayns-text-area--error .chayns-text-area__input {
|
|
83
|
+
border-color: var(--danger);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.chayns-text-area__input:focus + .chayns-text-area__label,
|
|
87
|
+
.chayns-text-area__input:not(:placeholder-shown) + .chayns-text-area__label {
|
|
88
|
+
transform: translateY(-50%) scale(0.8);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.chayns-text-area__input:focus + .chayns-text-area__label {
|
|
92
|
+
color: var(--accent);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.chayns-text-area--error .chayns-text-area__input:focus + .chayns-text-area__label {
|
|
96
|
+
color: var(--danger);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.chayns-text-area--error .chayns-text-area__input:disabled {
|
|
100
|
+
color: var(--disabled-fg);
|
|
101
|
+
background: var(--disabled-bg);
|
|
102
|
+
border-color: var(--disabled-border);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.chayns-text-area--error .chayns-text-area__input:disabled + .chayns-text-area__label {
|
|
106
|
+
color: var(--disabled-fg);
|
|
107
|
+
background: var(--disabled-bg);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.chayns-text-area__help {
|
|
111
|
+
display: flex;
|
|
112
|
+
align-items: center;
|
|
113
|
+
justify-content: space-between;
|
|
114
|
+
gap: var(--k10);
|
|
115
|
+
margin-block-start: 6px;
|
|
116
|
+
font-size: var(--fs-caption);
|
|
117
|
+
color: var(--text-3);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.chayns-text-area__error {
|
|
121
|
+
color: var(--danger);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@media (forced-colors: active) {
|
|
125
|
+
.chayns-text-area__input:focus-visible {
|
|
126
|
+
outline: var(--focus-ring-size) solid ButtonText;
|
|
127
|
+
outline-offset: 1px;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@media (prefers-reduced-motion: reduce) {
|
|
132
|
+
.chayns-text-area__label {
|
|
133
|
+
transition: none;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|