@plexui/styles 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -2
  3. package/dist/es/components/Accordion/Accordion.module.css +89 -0
  4. package/dist/es/components/Alert/Alert.module.css +210 -0
  5. package/dist/es/components/Avatar/Avatar.module.css +168 -0
  6. package/dist/es/components/Avatar/AvatarGroup.module.css +26 -0
  7. package/dist/es/components/Badge/Badge.module.css +196 -0
  8. package/dist/es/components/Breadcrumb/Breadcrumb.module.css +59 -0
  9. package/dist/es/components/Button/Button.module.css +863 -0
  10. package/dist/es/components/ButtonGroup/ButtonGroup.module.css +158 -0
  11. package/dist/es/components/Card/Card.module.css +125 -0
  12. package/dist/es/components/Checkbox/Checkbox.module.css +225 -0
  13. package/dist/es/components/CodeBlock/CodeBlock.module.css +139 -0
  14. package/dist/es/components/DataTable/DataTable.module.css +117 -0
  15. package/dist/es/components/DatePicker/Calendar.module.css +271 -0
  16. package/dist/es/components/DateRangePicker/Calendar.module.css +295 -0
  17. package/dist/es/components/DateRangePicker/Trigger.module.css +25 -0
  18. package/dist/es/components/Dialog/Dialog.module.css +240 -0
  19. package/dist/es/components/EmptyMessage/EmptyMessage.module.css +116 -0
  20. package/dist/es/components/Field/Field.module.css +152 -0
  21. package/dist/es/components/FieldError/FieldError.module.css +28 -0
  22. package/dist/es/components/FileUpload/FileUpload.module.css +133 -0
  23. package/dist/es/components/FloatingLabelInput/FloatingLabelInput.module.css +220 -0
  24. package/dist/es/components/FloatingLabelSelect/FloatingLabelSelect.module.css +152 -0
  25. package/dist/es/components/Image/Image.module.css +9 -0
  26. package/dist/es/components/Indicator/CircularProgress.module.css +28 -0
  27. package/dist/es/components/Indicator/LoadingDots.module.css +35 -0
  28. package/dist/es/components/Indicator/LoadingIndicator.module.css +41 -0
  29. package/dist/es/components/Input/Input.module.css +519 -0
  30. package/dist/es/components/InputGroup/InputGroup.module.css +309 -0
  31. package/dist/es/components/Kbd/Kbd.module.css +47 -0
  32. package/dist/es/components/Label/Label.module.css +16 -0
  33. package/dist/es/components/Markdown/Markdown.module.css +233 -0
  34. package/dist/es/components/MarkdownEditor/MarkdownEditor.module.css +297 -0
  35. package/dist/es/components/Menu/Menu.module.css +389 -0
  36. package/dist/es/components/OTPInput/OTPInput.module.css +70 -0
  37. package/dist/es/components/Popover/Popover.module.css +82 -0
  38. package/dist/es/components/Progress/Progress.module.css +34 -0
  39. package/dist/es/components/ProgressSteps/ProgressSteps.module.css +246 -0
  40. package/dist/es/components/RadioGroup/RadioGroup.module.css +159 -0
  41. package/dist/es/components/Select/Select.module.css +341 -0
  42. package/dist/es/components/SelectControl/SelectControl.module.css +558 -0
  43. package/dist/es/components/Separator/Separator.module.css +16 -0
  44. package/dist/es/components/ShimmerText/ShimmerText.module.css +43 -0
  45. package/dist/es/components/Sidebar/Sidebar.module.css +913 -0
  46. package/dist/es/components/Skeleton/Skeleton.module.css +17 -0
  47. package/dist/es/components/Slider/Slider.module.css +199 -0
  48. package/dist/es/components/StatCard/StatCard.module.css +234 -0
  49. package/dist/es/components/Switch/Switch.module.css +121 -0
  50. package/dist/es/components/Table/Table.module.css +56 -0
  51. package/dist/es/components/Tabs/Tabs.module.css +688 -0
  52. package/dist/es/components/TagInput/TagInput.module.css +320 -0
  53. package/dist/es/components/TextLink/TextLink.module.css +50 -0
  54. package/dist/es/components/Textarea/Textarea.module.css +272 -0
  55. package/dist/es/components/Toast/Toast.module.css +99 -0
  56. package/dist/es/components/Tooltip/Tooltip.module.css +91 -0
  57. package/dist/es/components/Transition/Animate.module.css +54 -0
  58. package/dist/es/components/Transition/AnimateLayout.module.css +101 -0
  59. package/dist/es/components/Transition/AnimateLayoutGroup.module.css +88 -0
  60. package/dist/es/components/Transition/TransitionGroup.module.css +4 -0
  61. package/dist/es/styles/base.css +102 -0
  62. package/dist/es/styles/globals.css +50 -0
  63. package/dist/es/styles/index.css +22 -0
  64. package/dist/es/styles/katex.min.css +1296 -0
  65. package/dist/es/styles/tailwind-utilities.css +1316 -0
  66. package/dist/es/styles/touch.css +71 -0
  67. package/dist/es/styles/variables-components.css +626 -0
  68. package/dist/es/styles/variables-primitive.css +327 -0
  69. package/dist/es/styles/variables-semantic.css +629 -0
  70. package/dist/es/styles/variables-tailwind-theme.css +34 -0
  71. package/dist/es/styles/variables-tokens-root.css +40 -0
  72. package/dist/es/types.js +4 -0
  73. package/dist/es/types.js.map +1 -0
  74. package/dist/es/vite/index.js +54 -0
  75. package/dist/es/vite/index.js.map +1 -0
  76. package/dist/types/types.d.ts +15 -0
  77. package/dist/types/vite/index.d.ts +55 -0
  78. package/package.json +109 -4
  79. package/postcss/functions.mjs +23 -0
  80. package/postcss/injectBreakpoints.mjs +47 -0
  81. package/postcss/mixins.mjs +100 -0
  82. package/postcss/parseLightDark.mjs +174 -0
  83. package/postcss/wrapModulesInLayer.mjs +21 -0
  84. package/postcss.config.mjs +52 -0
@@ -0,0 +1,17 @@
1
+ @layer components {.Skeleton {
2
+ background-color: var(--skeleton-background);
3
+ border-radius: var(--skeleton-radius);
4
+ animation: skeleton-pulse 1.5s ease-in-out infinite;
5
+ }.Skeleton[data-circle] {
6
+ border-radius: var(--radius-full);
7
+ }@keyframes skeleton-pulse {
8
+ 0%,
9
+ 100% {
10
+ opacity: 1;
11
+ }
12
+
13
+ 50% {
14
+ opacity: 0.5;
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,199 @@
1
+ @layer components {
2
+ @media (hover: hover) and (pointer: fine) {
3
+ .SliderWrap:hover .Reset[data-hide="false"] {
4
+ cursor: pointer;
5
+ opacity: 1;
6
+ transition:
7
+ visibility 0ms,
8
+ opacity 250ms ease;
9
+ visibility: visible;
10
+ }
11
+ }.Slider {
12
+ position: relative;
13
+ display: flex;
14
+ align-items: center;
15
+ width: 100%;
16
+ padding-bottom: 6px;
17
+ touch-action: none;
18
+ -webkit-user-select: none;
19
+ -moz-user-select: none;
20
+ user-select: none;
21
+ }
22
+
23
+ /* Animate thumb position for single-mode programmatic changes */
24
+ .Slider .Thumb {
25
+ transition: left var(--slider-duration) var(--cubic-move);
26
+ }/* =============================================
27
+ Vertical orientation
28
+ ============================================= */.SliderWrap[data-orientation="vertical"] {
29
+ display: inline-flex;
30
+ flex-direction: column;
31
+ align-items: center;
32
+ height: var(--slider-vertical-height, 200px);
33
+ }.SliderWrap[data-orientation="vertical"] .SliderLabel {
34
+ margin-bottom: 8px;
35
+ }.SliderWrap[data-orientation="vertical"] .SliderContainer {
36
+ height: 100%;
37
+ width: auto;
38
+ }.SliderWrap[data-orientation="vertical"] .Slider {
39
+ flex-direction: column;
40
+ width: auto;
41
+ height: 100%;
42
+ padding-bottom: 0;
43
+ padding-right: 6px;
44
+ }.SliderWrap[data-orientation="vertical"] .Track {
45
+ width: 4px;
46
+ height: 100%;
47
+ }.SliderWrap[data-orientation="vertical"] .Range {
48
+ width: 100%;
49
+ height: auto;
50
+ }.SliderWrap[data-orientation="vertical"] .Thumb {
51
+ transition: none;
52
+ }.Track {
53
+ position: relative;
54
+ flex-grow: 1;
55
+ width: 100%;
56
+ height: 4px;
57
+ border-radius: var(--radius-2xs);
58
+ background: var(--slider-track-color);
59
+ }.Range {
60
+ position: absolute;
61
+ height: 100%;
62
+ border-radius: var(--radius-2xs);
63
+ background: var(--slider-range-color);
64
+ transition: right var(--slider-duration) var(--cubic-move);
65
+ }.Thumb {
66
+ position: relative;
67
+ display: block;
68
+ width: 14px;
69
+ height: 14px;
70
+ border-radius: 50%;
71
+ background: var(--gray-0);
72
+ box-shadow: inset 0 0 0 2px var(--slider-range-color);
73
+ cursor: grab;
74
+ outline: none;
75
+ }
76
+
77
+ .Thumb:focus-visible {
78
+ outline: 2px solid var(--color-ring);
79
+ outline-offset: 2px;
80
+ }
81
+
82
+ .Thumb:active {
83
+ cursor: grabbing;
84
+ }
85
+
86
+ .Thumb:disabled {
87
+ pointer-events: none;
88
+ }.SliderLabel {
89
+ display: flex;
90
+ align-items: center;
91
+ justify-content: space-between;
92
+ gap: 4px;
93
+ margin-bottom: 8px;
94
+ color: var(--color-text);
95
+ font-size: 14px;
96
+ }.Reset {
97
+ /* Ensures cursor switches back immediately after clicking reset button. */
98
+ cursor: default;
99
+ opacity: 0;
100
+ transition:
101
+ visibility 0ms ease 250ms,
102
+ opacity 250ms ease;
103
+ visibility: hidden;
104
+ }
105
+
106
+ /* Custom overrides outside the design system. Using the data attribute to win the specificity war. */
107
+ .Reset[data-size="2xs"] {
108
+ width: 22px;
109
+ height: 22px;
110
+ }
111
+
112
+ .Reset[data-size="2xs"] svg {
113
+ width: 14px;
114
+ height: 14px;
115
+ }.SliderValue {
116
+ overflow: hidden;
117
+ display: flex;
118
+ align-items: baseline;
119
+ justify-content: flex-end;
120
+ gap: 2px;
121
+ height: 26px;
122
+ padding: 0 4px;
123
+ border: 0.5px solid transparent;
124
+ border-radius: var(--radius-sm);
125
+ margin-right: -4px;
126
+ -webkit-appearance: none;
127
+ -moz-appearance: none;
128
+ appearance: none;
129
+ background: transparent;
130
+ cursor: text;
131
+ outline: none;
132
+ text-align: center;
133
+ transition: border-color 250ms ease;
134
+ }
135
+
136
+ @media (min-width: 768px) {
137
+ .SliderValue {
138
+ height: 22px;
139
+ }
140
+ }
141
+
142
+ .SliderWrap:hover .SliderValue:not(:focus-within) {
143
+ border-color: var(--gray-200);
144
+ }
145
+
146
+ .SliderValue:focus-within {
147
+ border-color: var(--gray-500);
148
+ }.ValueInput {
149
+ height: 100%;
150
+ padding: 0;
151
+ border: 0;
152
+ -webkit-appearance: none;
153
+ -moz-appearance: none;
154
+ appearance: none;
155
+ background: transparent;
156
+ color: var(--color-text);
157
+ font-size: 16px;
158
+ font-variant-numeric: tabular-nums;
159
+ outline: none;
160
+ text-align: left;
161
+ transition: width 100ms ease;
162
+ }
163
+
164
+ @media (min-width: 768px) {
165
+ .ValueInput {
166
+ font-size: 13px;
167
+ }
168
+ }.ValueUnit {
169
+ color: var(--color-text-secondary);
170
+ font-size: 12px;
171
+ -webkit-user-select: none;
172
+ -moz-user-select: none;
173
+ user-select: none;
174
+ }.SliderContainer {
175
+ position: relative;
176
+ width: 100%;
177
+ }.MarksContainer {
178
+ position: relative;
179
+ width: 100%;
180
+ margin-top: 4px;
181
+ }.Mark {
182
+ position: absolute;
183
+ color: var(--color-text);
184
+ font-size: 12px;
185
+ font-weight: normal;
186
+ }.MarkLabel {
187
+ display: inline-block;
188
+ overflow-wrap: break-word;
189
+ text-align: center;
190
+ word-wrap: break-word;
191
+ }/* =============================================
192
+ Range display (read-only value for range mode)
193
+ ============================================= */.RangeDisplay {
194
+ color: var(--color-text);
195
+ font-size: 13px;
196
+ font-variant-numeric: tabular-nums;
197
+ white-space: nowrap;
198
+ }
199
+ }
@@ -0,0 +1,234 @@
1
+ @layer components {.StatCard {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ min-width: 0;
6
+ padding: var(--stat-card-padding);
7
+ border-radius: var(--stat-card-radius);
8
+ background: var(--stat-card-background);
9
+ box-shadow: 0 0 0 1px var(--stat-card-border-color) inset;
10
+ font-size: var(--stat-card-label-font-size);
11
+ line-height: var(--font-text-sm-line-height);
12
+ }
13
+
14
+ .StatCard:where([data-size="sm"]) {
15
+ padding: var(--stat-card-sm-padding-block) var(--stat-card-sm-padding-inline);
16
+ }
17
+
18
+ .StatCard:where([data-size="sm"]) .Label {
19
+ font-size: var(--stat-card-sm-label-font-size);
20
+ line-height: var(--font-text-xs-line-height);
21
+ }
22
+
23
+ .StatCard:where([data-size="sm"]) .InfoIcon svg {
24
+ width: var(--stat-card-sm-info-icon-size);
25
+ height: var(--stat-card-sm-info-icon-size);
26
+ }
27
+
28
+ .StatCard:where([data-size="sm"]) .Value {
29
+ font-size: var(--stat-card-sm-value-font-size);
30
+ line-height: var(--font-heading-md-line-height);
31
+ letter-spacing: var(--font-heading-md-tracking);
32
+ }
33
+
34
+ .StatCard:where([data-size="sm"]) .Trend {
35
+ font-size: var(--stat-card-sm-trend-font-size);
36
+ line-height: var(--font-text-xs-line-height);
37
+ }
38
+
39
+ .StatCard:where([data-size="sm"]) .ValueRow {
40
+ margin-block-start: calc(var(--spacing) * 1.5);
41
+ }
42
+
43
+ .StatCard:where([data-size="sm"]) .Footer {
44
+ margin-block-start: calc(var(--spacing) * 0.5);
45
+ }
46
+
47
+ .StatCard:where([data-size="sm"]) .Description {
48
+ font-size: var(--stat-card-sm-description-font-size);
49
+ line-height: var(--font-text-xs-line-height);
50
+ }
51
+
52
+ .StatCard:where([data-size="sm"]) .TrendLabel {
53
+ font-size: var(--stat-card-sm-description-font-size);
54
+ line-height: var(--font-text-xs-line-height);
55
+ }
56
+
57
+ .StatCard:where([data-size="sm"]) .IconWrapper {
58
+ border-radius: var(--stat-card-sm-icon-wrapper-radius);
59
+ }
60
+
61
+ .StatCard:where([data-size="sm"]) .IconWrapper svg {
62
+ width: var(--stat-card-sm-icon-size);
63
+ height: var(--stat-card-sm-icon-size);
64
+ }
65
+
66
+ .StatCard:where([data-size="sm"]) .Body {
67
+ gap: calc(var(--spacing) * 2.5);
68
+ }
69
+
70
+ .StatCard:where([data-variant="accent"]) {
71
+ border-inline-start: var(--stat-card-accent-width) solid
72
+ var(--stat-card-accent-color, var(--color-background-primary-solid));
73
+ }
74
+
75
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="primary"]) {
76
+ --stat-card-accent-color: var(--color-background-primary-solid);
77
+ }
78
+
79
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="info"]) {
80
+ --stat-card-accent-color: var(--color-background-info-solid);
81
+ }
82
+
83
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="success"]) {
84
+ --stat-card-accent-color: var(--color-background-success-solid);
85
+ }
86
+
87
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="warning"]) {
88
+ --stat-card-accent-color: var(--color-background-warning-solid);
89
+ }
90
+
91
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="danger"]) {
92
+ --stat-card-accent-color: var(--color-background-danger-solid);
93
+ }
94
+
95
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="secondary"]) {
96
+ --stat-card-accent-color: var(--color-background-secondary-solid);
97
+ }
98
+
99
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="discovery"]) {
100
+ --stat-card-accent-color: var(--color-background-discovery-solid);
101
+ }
102
+
103
+ .StatCard:where([data-variant="accent"]):where([data-accent-color="caution"]) {
104
+ --stat-card-accent-color: var(--color-background-caution-solid);
105
+ }.Header {
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: space-between;
109
+ gap: calc(var(--spacing) * 6);
110
+ }.LabelRow {
111
+ display: flex;
112
+ align-items: center;
113
+ gap: calc(var(--spacing) * 1);
114
+ min-width: 0;
115
+ }.Label {
116
+ min-width: 0;
117
+ overflow: hidden;
118
+ color: var(--stat-card-label-color);
119
+ font-size: var(--stat-card-label-font-size);
120
+ line-height: var(--font-text-sm-line-height);
121
+ text-overflow: ellipsis;
122
+ white-space: nowrap;
123
+ }.InfoIcon {
124
+ display: inline-flex;
125
+ flex-shrink: 0;
126
+ color: var(--color-text-tertiary);
127
+ cursor: help;
128
+ }
129
+
130
+ .InfoIcon svg {
131
+ width: var(--stat-card-info-icon-size);
132
+ height: var(--stat-card-info-icon-size);
133
+ }.Body {
134
+ display: flex;
135
+ align-items: flex-start;
136
+ gap: calc(var(--spacing) * 3);
137
+ }.Content {
138
+ flex: 1;
139
+ min-width: 0;
140
+ }
141
+
142
+ .Content .ValueRow {
143
+ margin-block-start: calc(var(--spacing) * 0.5);
144
+ }.IconWrapper {
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: center;
148
+ flex-shrink: 0;
149
+ align-self: stretch;
150
+ aspect-ratio: 1;
151
+ border-radius: var(--stat-card-icon-wrapper-radius);
152
+ background: var(--stat-card-icon-wrapper-background);
153
+ color: var(--stat-card-icon-color);
154
+ }
155
+
156
+ .IconWrapper svg {
157
+ width: var(--stat-card-icon-size);
158
+ height: var(--stat-card-icon-size);
159
+ }.HeaderEnd {
160
+ display: flex;
161
+ align-items: center;
162
+ gap: calc(var(--spacing) * 2);
163
+ flex-shrink: 0;
164
+ }.ValueRow {
165
+ display: flex;
166
+ align-items: baseline;
167
+ gap: calc(var(--spacing) * 2);
168
+ margin-block-start: calc(var(--spacing) * 3);
169
+ }.Value {
170
+ min-width: 0;
171
+ color: var(--stat-card-value-color);
172
+ font-size: var(--stat-card-value-font-size);
173
+ font-weight: var(--stat-card-value-font-weight);
174
+ line-height: var(--font-heading-xl-line-height);
175
+ letter-spacing: var(--font-heading-xl-tracking);
176
+ }.Trend {
177
+ display: inline-flex;
178
+ flex-shrink: 0;
179
+ font-size: var(--stat-card-trend-font-size);
180
+ font-weight: var(--stat-card-trend-font-weight);
181
+ line-height: var(--font-text-sm-line-height);
182
+ white-space: nowrap;
183
+ }.TrendPositive {
184
+ color: var(--stat-card-trend-positive-color);
185
+ }.TrendNegative {
186
+ color: var(--stat-card-trend-negative-color);
187
+ }.TrendNeutral {
188
+ color: var(--stat-card-trend-neutral-color);
189
+ }.Footer {
190
+ display: flex;
191
+ flex-direction: column;
192
+ gap: calc(var(--spacing) * 0.5);
193
+ margin-block-start: calc(var(--spacing) * 2);
194
+ }.TrendLabel {
195
+ color: var(--stat-card-description-color);
196
+ font-size: var(--stat-card-description-font-size);
197
+ font-weight: var(--font-weight-normal);
198
+ line-height: var(--font-text-sm-line-height);
199
+ }.Description {
200
+ color: var(--stat-card-description-color);
201
+ font-size: var(--stat-card-description-font-size);
202
+ line-height: var(--font-text-sm-line-height);
203
+ text-wrap: pretty;
204
+ }.Progress {
205
+ display: flex;
206
+ align-items: center;
207
+ gap: calc(var(--spacing) * 2);
208
+ margin-block-start: calc(var(--spacing) * 3);
209
+ }.ProgressTrack {
210
+ flex: 1;
211
+ height: var(--stat-card-progress-height);
212
+ border-radius: var(--stat-card-progress-radius);
213
+ background: var(--stat-card-progress-background);
214
+ overflow: hidden;
215
+ }.ProgressBar {
216
+ height: 100%;
217
+ border-radius: inherit;
218
+ background: var(--stat-card-progress-fill);
219
+ }.ProgressLabel {
220
+ color: var(--stat-card-description-color);
221
+ font-size: var(--stat-card-description-font-size);
222
+ line-height: var(--font-text-sm-line-height);
223
+ white-space: nowrap;
224
+ }.Sparkline {
225
+ margin-block-start: calc(var(--spacing) * 3);
226
+ color: var(--color-text-tertiary);
227
+ }
228
+
229
+ .Sparkline svg {
230
+ display: block;
231
+ width: 100%;
232
+ height: auto;
233
+ }
234
+ }
@@ -0,0 +1,121 @@
1
+ @layer components {.Container {
2
+ display: flex;
3
+ font-size: var(--font-text-sm-size);
4
+ line-height: var(--font-text-sm-line-height);
5
+ -webkit-user-select: none;
6
+ -moz-user-select: none;
7
+ user-select: none;
8
+ }
9
+
10
+ .Container[data-has-label] {
11
+ align-items: flex-start;
12
+ }
13
+
14
+ .Container[data-label-position="start"] {
15
+ flex-direction: row-reverse;
16
+ }.Track {
17
+ position: relative;
18
+ flex-shrink: 0;
19
+ width: var(--switch-track-width);
20
+ max-width: var(--switch-track-width);
21
+ height: var(--switch-track-height);
22
+ border: 0;
23
+ border-radius: var(--radius-full);
24
+ background: var(--switch-track-color);
25
+ cursor: pointer;
26
+ transition: background-color 250ms var(--cubic-move);
27
+ }
28
+ @media (hover: hover) and (pointer: fine) {.Track:where(:not([data-disabled], [data-state="checked"])):hover {
29
+ background: var(--switch-track-color-hover);
30
+ }
31
+ }
32
+
33
+ [data-has-label] .Track {
34
+ /*
35
+ * Vertical alignment adjusting when necessary. Avoid using align-items: center; for long wrapping labels.
36
+ */
37
+ top: var(--switch-track-top-offset, 1px);
38
+ }
39
+
40
+ .Track:focus-visible {
41
+ outline: 2px solid var(--color-ring);
42
+ outline-offset: 2px;
43
+ }
44
+
45
+ .Track[data-state="checked"] {
46
+ background: var(--switch-track-color-checked);
47
+ }
48
+
49
+ .Track[data-disabled] {
50
+ background: var(--switch-track-color-disabled);
51
+ cursor: not-allowed;
52
+ }
53
+
54
+ .Track[data-disabled][data-state="checked"] {
55
+ background: var(--switch-track-color-checked-disabled);
56
+ }.Thumb {
57
+ position: absolute;
58
+ top: var(--switch-thumb-offset);
59
+ left: var(--switch-thumb-offset);
60
+ display: block;
61
+ width: var(--switch-thumb-size);
62
+ height: var(--switch-thumb-size);
63
+ border-radius: var(--radius-full);
64
+ background: var(--switch-thumb-color);
65
+ box-shadow: var(--switch-thumb-shadow);
66
+ transition: transform 250ms var(--cubic-move);
67
+ }
68
+
69
+ [data-state="checked"] .Thumb {
70
+ transform: translateX(
71
+ calc(var(--switch-track-width) - var(--switch-thumb-size) - var(--switch-thumb-offset) * 2)
72
+ );
73
+ }
74
+
75
+ .Thumb[data-disabled] {
76
+ background: var(--switch-thumb-color-disabled);
77
+ box-shadow: none;
78
+ }.LabelGroup {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: 0;
82
+ }
83
+
84
+ /* Use padding so that the spacing is intrinsic to the group, remaining clickable. */
85
+ [data-label-position="end"] .LabelGroup {
86
+ padding-left: var(--switch-label-gap);
87
+ }
88
+
89
+ [data-label-position="start"] .LabelGroup {
90
+ padding-right: var(--switch-label-gap);
91
+ }
92
+
93
+ [data-disabled] .LabelGroup {
94
+ cursor: not-allowed;
95
+ }.Label {
96
+ font-weight: var(--field-label-font-weight);
97
+ cursor: pointer;
98
+ }
99
+
100
+ /* Use padding so that the spacing is intrinsic to the label, remaining clickable. */
101
+ [data-label-position="end"] > .Label {
102
+ padding-left: var(--switch-label-gap);
103
+ }
104
+
105
+ [data-label-position="start"] > .Label {
106
+ padding-right: var(--switch-label-gap);
107
+ }
108
+
109
+ [data-disabled] .Label {
110
+ cursor: not-allowed;
111
+ }.Description {
112
+ color: var(--color-text-secondary);
113
+ font-size: var(--font-text-xs-size);
114
+ line-height: var(--font-text-xs-line-height);
115
+ cursor: pointer;
116
+ }
117
+
118
+ [data-disabled] .Description {
119
+ cursor: not-allowed;
120
+ }
121
+ }
@@ -0,0 +1,56 @@
1
+ @layer components {.TableWrapper {
2
+ position: relative;
3
+ width: 100%;
4
+ overflow: auto;
5
+ }.Table {
6
+ width: 100%;
7
+ table-layout: fixed;
8
+ border-collapse: collapse;
9
+ font-size: var(--table-cell-font-size);
10
+ line-height: var(--table-cell-line-height);
11
+ color: var(--table-cell-color);
12
+ text-align: left;
13
+ }.TableHeader {
14
+ background: var(--table-header-background);
15
+ }
16
+
17
+ .TableHeader :where(.TableRow) {
18
+ border-bottom: 1px solid var(--table-border-color);
19
+ }.TableHead {
20
+ height: var(--control-size-md);
21
+ padding: var(--table-cell-padding);
22
+ font-weight: var(--table-header-font-weight);
23
+ color: var(--table-header-color);
24
+ white-space: nowrap;
25
+ vertical-align: middle;
26
+ }
27
+ .TableBody :where(.TableRow) {
28
+ border-bottom: 1px solid var(--table-border-color);
29
+ transition: background-color 0.1s ease;
30
+ }
31
+
32
+ .TableBody :where(.TableRow):last-child {
33
+ border-bottom: none;
34
+ }
35
+
36
+ .TableBody :where(.TableRow):hover {
37
+ background-color: var(--table-row-hover-background);
38
+ }.TableRow {}.TableCell {
39
+ padding: var(--table-cell-padding);
40
+ vertical-align: middle;
41
+ }.TableFooter {
42
+ border-top: 1px solid var(--table-border-color);
43
+ background: var(--table-footer-background);
44
+ font-weight: var(--table-footer-font-weight);
45
+ }
46
+
47
+ .TableFooter :where(.TableRow:last-child) {
48
+ border-bottom: none;
49
+ }.TableCaption {
50
+ padding: var(--table-cell-padding);
51
+ font-size: var(--table-caption-font-size);
52
+ color: var(--table-caption-color);
53
+ caption-side: bottom;
54
+ text-align: left;
55
+ }
56
+ }