twntyx-css 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.
- package/README.md +105 -0
- package/llm/CHANGELOG.md +7 -0
- package/llm/components/ai-background.json +90 -0
- package/llm/components/ai-orb.json +91 -0
- package/llm/components/ai-perl.json +91 -0
- package/llm/components/all-components.json +104 -0
- package/llm/components/animation-references.json +84 -0
- package/llm/components/avatar.json +149 -0
- package/llm/components/badge.json +263 -0
- package/llm/components/banner-marketplace.json +81 -0
- package/llm/components/banner.json +120 -0
- package/llm/components/breadcrumb.json +169 -0
- package/llm/components/button-container.json +150 -0
- package/llm/components/button-feedback.json +155 -0
- package/llm/components/button.json +290 -0
- package/llm/components/card-assessment.json +93 -0
- package/llm/components/card-test.json +83 -0
- package/llm/components/card.json +94 -0
- package/llm/components/chat.json +155 -0
- package/llm/components/checkbox.json +186 -0
- package/llm/components/checkmark.json +175 -0
- package/llm/components/collapsible.json +100 -0
- package/llm/components/color-palette.json +79 -0
- package/llm/components/color-usage.json +83 -0
- package/llm/components/combobox.json +143 -0
- package/llm/components/command-palette.json +159 -0
- package/llm/components/countdown.json +113 -0
- package/llm/components/datepicker.json +151 -0
- package/llm/components/divider.json +104 -0
- package/llm/components/empty-state.json +80 -0
- package/llm/components/field.json +123 -0
- package/llm/components/fieldset.json +78 -0
- package/llm/components/file-upload.json +163 -0
- package/llm/components/form-example.json +82 -0
- package/llm/components/getting-started.json +70 -0
- package/llm/components/icons-reference.json +78 -0
- package/llm/components/illustrations-library.json +78 -0
- package/llm/components/input-group.json +94 -0
- package/llm/components/introduction.json +71 -0
- package/llm/components/join.json +105 -0
- package/llm/components/kbd.json +139 -0
- package/llm/components/key-value.json +86 -0
- package/llm/components/link.json +120 -0
- package/llm/components/loader.json +117 -0
- package/llm/components/logotype.json +75 -0
- package/llm/components/menu.json +192 -0
- package/llm/components/modal.json +167 -0
- package/llm/components/navbar.json +158 -0
- package/llm/components/pagination.json +122 -0
- package/llm/components/pie-chart.json +94 -0
- package/llm/components/popover.json +174 -0
- package/llm/components/progress-bullet.json +203 -0
- package/llm/components/progress-linear.json +129 -0
- package/llm/components/progress-radial.json +125 -0
- package/llm/components/radio.json +162 -0
- package/llm/components/range-slider.json +125 -0
- package/llm/components/scrollbar.json +96 -0
- package/llm/components/select-input.json +224 -0
- package/llm/components/shadows.json +107 -0
- package/llm/components/skeleton.json +84 -0
- package/llm/components/stacked-chart.json +100 -0
- package/llm/components/state.json +138 -0
- package/llm/components/stepper.json +95 -0
- package/llm/components/steps.json +177 -0
- package/llm/components/surface.json +181 -0
- package/llm/components/table.json +223 -0
- package/llm/components/tabs.json +147 -0
- package/llm/components/template-ai.json +80 -0
- package/llm/components/template-login.json +88 -0
- package/llm/components/template-stats.json +76 -0
- package/llm/components/text-input.json +275 -0
- package/llm/components/textarea.json +183 -0
- package/llm/components/timeline.json +142 -0
- package/llm/components/toast.json +164 -0
- package/llm/components/toggle.json +158 -0
- package/llm/components/tool-svg-to-base64.json +78 -0
- package/llm/components/tool-svg-to-icon-data.json +81 -0
- package/llm/components/tooltip.json +90 -0
- package/llm/examples/ai-background.html +1 -0
- package/llm/examples/ai-orb.html +1 -0
- package/llm/examples/ai-perl.html +1 -0
- package/llm/examples/all-components.html +1 -0
- package/llm/examples/animation-references.html +1 -0
- package/llm/examples/avatar.html +1 -0
- package/llm/examples/badge.html +1 -0
- package/llm/examples/banner-marketplace.html +1 -0
- package/llm/examples/banner.html +1 -0
- package/llm/examples/breadcrumb.html +1 -0
- package/llm/examples/button-container.html +1 -0
- package/llm/examples/button-feedback.html +1 -0
- package/llm/examples/button.html +3 -0
- package/llm/examples/card-assessment.html +1 -0
- package/llm/examples/card-test.html +1 -0
- package/llm/examples/card.html +1 -0
- package/llm/examples/chat.html +1 -0
- package/llm/examples/checkbox.html +1 -0
- package/llm/examples/checkmark.html +1 -0
- package/llm/examples/collapsible.html +1 -0
- package/llm/examples/color-palette.html +1 -0
- package/llm/examples/color-usage.html +1 -0
- package/llm/examples/combobox.html +1 -0
- package/llm/examples/command-palette.html +1 -0
- package/llm/examples/countdown.html +1 -0
- package/llm/examples/datepicker.html +1 -0
- package/llm/examples/divider.html +1 -0
- package/llm/examples/empty-state.html +1 -0
- package/llm/examples/field.html +1 -0
- package/llm/examples/fieldset.html +1 -0
- package/llm/examples/file-upload.html +1 -0
- package/llm/examples/form-example.html +1 -0
- package/llm/examples/getting-started.html +1 -0
- package/llm/examples/icons-reference.html +1 -0
- package/llm/examples/illustrations-library.html +1 -0
- package/llm/examples/input-group.html +1 -0
- package/llm/examples/introduction.html +1 -0
- package/llm/examples/join.html +1 -0
- package/llm/examples/kbd.html +1 -0
- package/llm/examples/key-value.html +1 -0
- package/llm/examples/link.html +1 -0
- package/llm/examples/loader.html +1 -0
- package/llm/examples/logotype.html +1 -0
- package/llm/examples/menu.html +1 -0
- package/llm/examples/modal.html +16 -0
- package/llm/examples/navbar.html +1 -0
- package/llm/examples/pagination.html +1 -0
- package/llm/examples/pie-chart.html +1 -0
- package/llm/examples/popover.html +1 -0
- package/llm/examples/progress-bullet.html +1 -0
- package/llm/examples/progress-linear.html +1 -0
- package/llm/examples/progress-radial.html +1 -0
- package/llm/examples/radio.html +1 -0
- package/llm/examples/range-slider.html +1 -0
- package/llm/examples/scrollbar.html +1 -0
- package/llm/examples/select-input.html +1 -0
- package/llm/examples/shadows.html +1 -0
- package/llm/examples/skeleton.html +1 -0
- package/llm/examples/stacked-chart.html +1 -0
- package/llm/examples/state.html +1 -0
- package/llm/examples/stepper.html +1 -0
- package/llm/examples/steps.html +1 -0
- package/llm/examples/surface.html +1 -0
- package/llm/examples/table.html +16 -0
- package/llm/examples/tabs.html +1 -0
- package/llm/examples/template-ai.html +1 -0
- package/llm/examples/template-login.html +1 -0
- package/llm/examples/template-stats.html +1 -0
- package/llm/examples/text-input.html +10 -0
- package/llm/examples/textarea.html +1 -0
- package/llm/examples/timeline.html +1 -0
- package/llm/examples/toast.html +5 -0
- package/llm/examples/toggle.html +1 -0
- package/llm/examples/tool-svg-to-base64.html +1 -0
- package/llm/examples/tool-svg-to-icon-data.html +1 -0
- package/llm/examples/tooltip.html +1 -0
- package/llm/index.json +1615 -0
- package/llm/llms.txt +18 -0
- package/llm/patterns.json +111 -0
- package/llm/rules.json +47 -0
- package/llm/schema.json +804 -0
- package/llm/tokens.json +3629 -0
- package/package.json +30 -0
- package/styles/ai.css +114 -0
- package/styles/animation.css +2493 -0
- package/styles/avatar.css +101 -0
- package/styles/background-ai.css +118 -0
- package/styles/badge.css +274 -0
- package/styles/banner.css +98 -0
- package/styles/breadcrumb.css +72 -0
- package/styles/button.css +621 -0
- package/styles/card.css +27 -0
- package/styles/chart-pie.css +39 -0
- package/styles/chart-stacked.css +91 -0
- package/styles/chat.css +506 -0
- package/styles/checkmark.css +105 -0
- package/styles/code.css +264 -0
- package/styles/collapsible.css +93 -0
- package/styles/colors.css +536 -0
- package/styles/combobox.css +66 -0
- package/styles/command.css +81 -0
- package/styles/contest.css +227 -0
- package/styles/countdown.css +65 -0
- package/styles/datepicker.css +124 -0
- package/styles/divider.css +72 -0
- package/styles/drawer.css +142 -0
- package/styles/dropdown.css +22 -0
- package/styles/empty-state.css +48 -0
- package/styles/field.css +47 -0
- package/styles/fieldset.css +24 -0
- package/styles/form-checkbox-radio-toggle.css +233 -0
- package/styles/form-fileupload.css +146 -0
- package/styles/form-rangeslider.css +106 -0
- package/styles/form-shared.css +41 -0
- package/styles/form-text-select.css +411 -0
- package/styles/form.css +86 -0
- package/styles/globals.css +66 -0
- package/styles/input-group.css +63 -0
- package/styles/join.css +141 -0
- package/styles/kbd.css +55 -0
- package/styles/key-value.css +44 -0
- package/styles/link.css +48 -0
- package/styles/loader.css +183 -0
- package/styles/logotype.css +13 -0
- package/styles/menu.css +317 -0
- package/styles/modal.css +172 -0
- package/styles/navbar.css +48 -0
- package/styles/package-quill.css +1001 -0
- package/styles/pagination.css +147 -0
- package/styles/panel.css +113 -0
- package/styles/popover.css +303 -0
- package/styles/prism.css +60 -0
- package/styles/progress.css +209 -0
- package/styles/scrollbar.css +17 -0
- package/styles/shadow.css +25 -0
- package/styles/shared.css +226 -0
- package/styles/skeleton.css +34 -0
- package/styles/state.css +150 -0
- package/styles/stepper.css +72 -0
- package/styles/steps.css +98 -0
- package/styles/surface.css +252 -0
- package/styles/tab.css +286 -0
- package/styles/table.css +243 -0
- package/styles/theme.css +126 -0
- package/styles/timeline.css +193 -0
- package/styles/toast.css +150 -0
- package/styles/tooltip.css +8 -0
- package/styles/typography.css +160 -0
- package/styles/utility.css +20 -0
- package/tailwind.config.cjs +9 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*----------------------------*/
|
|
2
|
+
/* EMPTY STATE */
|
|
3
|
+
/*----------------------------*/
|
|
4
|
+
|
|
5
|
+
@utility empty-state {
|
|
6
|
+
@apply p-8 rounded-3xl border bg-background-surface border-line-default text-center;
|
|
7
|
+
|
|
8
|
+
> :where(.empty-state-icon) {
|
|
9
|
+
@apply inline-flex justify-center items-center mx-auto mb-4 rounded-full size-14 surface-elevated text-text-tertiary;
|
|
10
|
+
|
|
11
|
+
> svg {
|
|
12
|
+
@apply size-7 fill-current;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
> :where(h1, h2, h3, h4, h5, h6, .empty-state-title) {
|
|
17
|
+
@apply mb-2 h4;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
> :where(p, .empty-state-description) {
|
|
21
|
+
@apply p2 text-text-secondary;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
> :where(:last-child, .empty-state-actions) {
|
|
25
|
+
@apply flex flex-wrap gap-2 justify-center mt-4;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Compatibility aliases */
|
|
30
|
+
@utility empty-state-icon {
|
|
31
|
+
@apply inline-flex justify-center items-center mx-auto mb-4 rounded-full size-14 surface-elevated text-text-tertiary;
|
|
32
|
+
|
|
33
|
+
> svg {
|
|
34
|
+
@apply size-7 fill-current;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@utility empty-state-title {
|
|
39
|
+
@apply mb-2 h4;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@utility empty-state-description {
|
|
43
|
+
@apply p2 text-text-secondary;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@utility empty-state-actions {
|
|
47
|
+
@apply flex flex-wrap gap-2 justify-center mt-4;
|
|
48
|
+
}
|
package/styles/field.css
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*----------------------------*/
|
|
2
|
+
/* FIELD */
|
|
3
|
+
/*----------------------------*/
|
|
4
|
+
|
|
5
|
+
@utility field {
|
|
6
|
+
@apply space-y-1.5;
|
|
7
|
+
|
|
8
|
+
> label,
|
|
9
|
+
> .field-label {
|
|
10
|
+
@apply text-sm font-medium text-text-default;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
:where(.field-required, .required) {
|
|
14
|
+
@apply ml-1 text-text-error;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
> :where(.field-description, p) {
|
|
18
|
+
@apply text-sm text-text-tertiary;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
&.has-error {
|
|
22
|
+
> :where(.input-control) {
|
|
23
|
+
@apply border-line-error bg-background-error/25 text-text-error;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
> :where(.field-error, p) {
|
|
27
|
+
@apply text-sm text-text-error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Compatibility aliases */
|
|
33
|
+
@utility field-label {
|
|
34
|
+
@apply text-sm font-medium text-text-default;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@utility field-required {
|
|
38
|
+
@apply ml-1 text-text-error;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@utility field-description {
|
|
42
|
+
@apply text-sm text-text-tertiary;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@utility field-error {
|
|
46
|
+
@apply text-sm text-text-error;
|
|
47
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*----------------------------*/
|
|
2
|
+
/* FIELDSET */
|
|
3
|
+
/*----------------------------*/
|
|
4
|
+
|
|
5
|
+
@utility fieldset {
|
|
6
|
+
@apply p-4 rounded-2xl border surface;
|
|
7
|
+
|
|
8
|
+
> :where(legend, .fieldset-legend) {
|
|
9
|
+
@apply px-1 text-sm font-medium text-text-default;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
> :where(:last-child, .fieldset-content) {
|
|
13
|
+
@apply mt-3 space-y-3;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Compatibility aliases */
|
|
18
|
+
@utility fieldset-legend {
|
|
19
|
+
@apply px-1 text-sm font-medium text-text-default;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@utility fieldset-content {
|
|
23
|
+
@apply space-y-3;
|
|
24
|
+
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/*----------------------------*/
|
|
2
|
+
/* CHECKBOX RADIO */
|
|
3
|
+
/*----------------------------*/
|
|
4
|
+
|
|
5
|
+
@utility checkboxradio {
|
|
6
|
+
@apply bg-no-repeat
|
|
7
|
+
flex-shrink-0
|
|
8
|
+
h-5
|
|
9
|
+
w-5
|
|
10
|
+
appearance-none
|
|
11
|
+
border
|
|
12
|
+
border-line-highlight
|
|
13
|
+
checked:border-current
|
|
14
|
+
bg-core-ui-50
|
|
15
|
+
dark:bg-core-ui-900
|
|
16
|
+
bg-size-[150%_auto]
|
|
17
|
+
bg-center
|
|
18
|
+
cursor-pointer
|
|
19
|
+
transition-[background]
|
|
20
|
+
include-focus-visible;
|
|
21
|
+
&.input-sm {
|
|
22
|
+
@apply w-4 h-4 translate-y-0.5;
|
|
23
|
+
+ label {
|
|
24
|
+
@apply text-xs;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
&.input-lg {
|
|
28
|
+
@apply w-6 h-6 -translate-y-0.5;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&:active {
|
|
32
|
+
~ div label {
|
|
33
|
+
@apply opacity-75;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&:disabled,
|
|
38
|
+
&.is-disabled {
|
|
39
|
+
@apply bg-core-ui-300 dark:bg-core-ui-700;
|
|
40
|
+
&,
|
|
41
|
+
& ~ div label {
|
|
42
|
+
@apply opacity-60 cursor-not-allowed;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@utility input-wrapper {
|
|
48
|
+
@apply flex relative flex-row gap-2 text-sm;
|
|
49
|
+
|
|
50
|
+
&.input-card {
|
|
51
|
+
@apply w-full hover:border-line-strong include-interactive;
|
|
52
|
+
&,
|
|
53
|
+
* {
|
|
54
|
+
@apply cursor-pointer;
|
|
55
|
+
}
|
|
56
|
+
/* CHECKBOX */
|
|
57
|
+
input.checkbox,
|
|
58
|
+
input.radio,
|
|
59
|
+
input.toggle {
|
|
60
|
+
@apply absolute inset-0 z-10 m-0 w-full h-full opacity-0 appearance-none;
|
|
61
|
+
|
|
62
|
+
~ div {
|
|
63
|
+
@apply flex-1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
> *:not(input.checkbox, input.radio, input.toggle) {
|
|
68
|
+
@apply z-0;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
&.input-line-through {
|
|
72
|
+
&:has(input:checked) {
|
|
73
|
+
.input-label {
|
|
74
|
+
@apply line-through opacity-50;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
&.input-custom {
|
|
79
|
+
@apply relative p-0 surface hover:border-line-strong include-interactive;
|
|
80
|
+
input.checkbox,
|
|
81
|
+
input.radio {
|
|
82
|
+
@apply absolute inset-0 z-10 m-0 w-full h-full rounded-full opacity-0 appearance-none;
|
|
83
|
+
|
|
84
|
+
label {
|
|
85
|
+
@apply rounded-[inherit] overflow-hidden;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&:checked {
|
|
89
|
+
~ label {
|
|
90
|
+
.input-content.is-checked {
|
|
91
|
+
@apply block;
|
|
92
|
+
}
|
|
93
|
+
.input-content.is-unchecked {
|
|
94
|
+
@apply hidden;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
&:not(:checked) {
|
|
99
|
+
~ label {
|
|
100
|
+
.input-content.is-checked {
|
|
101
|
+
@apply hidden;
|
|
102
|
+
}
|
|
103
|
+
.input-content.is-unchecked {
|
|
104
|
+
@apply block;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@utility checkbox {
|
|
113
|
+
@apply rounded-md checkboxradio text-brand-default;
|
|
114
|
+
|
|
115
|
+
&:checked,
|
|
116
|
+
&:checked ~ .checkbox {
|
|
117
|
+
@apply border-current
|
|
118
|
+
bg-[length:100%_auto]
|
|
119
|
+
bg-[linear-gradient(-45deg,transparent_65%,currentColor_65.99%),linear-gradient(45deg,transparent_75%,currentColor_75.99%),linear-gradient(-45deg,currentColor_40%,transparent_40.99%),linear-gradient(45deg,currentColor_30%,var(--color-core-white)_30.99%,var(--color-core-white)_40%,transparent_40.99%),linear-gradient(-45deg,var(--color-core-white)_50%,currentColor_50.99%)]
|
|
120
|
+
dark:bg-[linear-gradient(-45deg,transparent_65%,currentColor_65.99%),linear-gradient(45deg,transparent_75%,currentColor_75.99%),linear-gradient(-45deg,currentColor_40%,transparent_40.99%),linear-gradient(45deg,currentColor_30%,var(--color-core-black)_30.99%,var(--color-core-black)_40%,transparent_40.99%),linear-gradient(-45deg,var(--color-core-black)_50%,currentColor_50.99%)];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
&:indeterminate,
|
|
124
|
+
&:indeterminate ~ .checkbox {
|
|
125
|
+
@apply border-current
|
|
126
|
+
bg-[length:100%_auto]
|
|
127
|
+
bg-[radial-gradient(circle_at_center,var(--color-core-white)_0%,var(--color-core-white)_17%,currentColor_17.5%,currentColor_100%)]
|
|
128
|
+
dark:bg-[radial-gradient(circle_at_center,var(--color-core-black)_0%,var(--color-core-black)_17%,currentColor_17.5%,currentColor_100%)];
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* GREEN VARIANT */
|
|
132
|
+
&.checkbox-green {
|
|
133
|
+
@apply rounded-full checked:border-text-success;
|
|
134
|
+
|
|
135
|
+
&:checked,
|
|
136
|
+
&:checked ~ .checkbox {
|
|
137
|
+
@apply bg-[length:100%_auto]
|
|
138
|
+
bg-[linear-gradient(-45deg,transparent_65%,var(--color-text-success)_65.99%),linear-gradient(45deg,transparent_75%,var(--color-text-success)_75.99%),linear-gradient(-45deg,var(--color-text-success)_40%,transparent_40.99%),linear-gradient(45deg,var(--color-text-success)_30%,var(--color-core-white)_30.99%,var(--color-core-white)_40%,transparent_40.99%),linear-gradient(-45deg,var(--color-core-white)_50%,var(--color-text-success)_50.99%)];
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
&:indeterminate,
|
|
142
|
+
&:indeterminate ~ .checkbox {
|
|
143
|
+
@apply bg-[radial-gradient(circle_at_center,var(--color-core-white)_0%,var(--color-core-white)_17%,var(--color-text-success)_17.01%,var(--color-text-success)_100%)];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@utility radio {
|
|
149
|
+
@apply rounded-full checkboxradio text-brand-default;
|
|
150
|
+
|
|
151
|
+
&:checked,
|
|
152
|
+
&:checked ~ .radio {
|
|
153
|
+
@apply border-current
|
|
154
|
+
bg-[length:100%_auto]
|
|
155
|
+
bg-[radial-gradient(circle_at_center,var(--color-core-white)_0%,var(--color-core-white)_40%,currentColor_40.5%,currentColor_100%)]
|
|
156
|
+
dark:bg-[radial-gradient(circle_at_center,var(--color-core-black)_0%,var(--color-core-black)_40%,currentColor_40.5%,currentColor_100%)];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* &:indeterminate,
|
|
160
|
+
&:indeterminate ~ .radio {
|
|
161
|
+
} */
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@utility toggle {
|
|
165
|
+
--toggle-size: 20px;
|
|
166
|
+
--toggle-size-minus: -20px;
|
|
167
|
+
--toggle-color-unchecked: var(--color-core-ui-400);
|
|
168
|
+
--toggle-color-unchecked-dark: var(--color-core-ui-500);
|
|
169
|
+
@apply flex-shrink-0
|
|
170
|
+
h-(--toggle-size)
|
|
171
|
+
w-[calc(var(--toggle-size)*2)]
|
|
172
|
+
appearance-none
|
|
173
|
+
bg-core-white
|
|
174
|
+
dark:bg-core-black
|
|
175
|
+
shadow-[inset_var(--toggle-size-minus)_0_0_2px_var(--toggle-color-unchecked),_inset_0_0_0_2px_var(--toggle-color-unchecked)]
|
|
176
|
+
dark:shadow-[inset_var(--toggle-size-minus)_0_0_2px_var(--toggle-color-unchecked-dark),_inset_0_0_0_2px_var(--toggle-color-unchecked-dark)]
|
|
177
|
+
rounded-full
|
|
178
|
+
transition-[box-shadow,background]
|
|
179
|
+
duration-200
|
|
180
|
+
ease-out-quint
|
|
181
|
+
cursor-pointer
|
|
182
|
+
include-focus-visible
|
|
183
|
+
text-brand-default;
|
|
184
|
+
|
|
185
|
+
&:disabled,
|
|
186
|
+
&.is-disabled {
|
|
187
|
+
@apply bg-core-ui-300 dark:bg-core-ui-700;
|
|
188
|
+
&,
|
|
189
|
+
& ~ div label {
|
|
190
|
+
@apply opacity-60 cursor-not-allowed;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
&.input-sm {
|
|
195
|
+
--toggle-size: 14px;
|
|
196
|
+
--toggle-size-minus: -14px;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
&.input-lg {
|
|
200
|
+
--toggle-size: 26px;
|
|
201
|
+
--toggle-size-minus: -26px;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
&:checked,
|
|
205
|
+
&:checked ~ .toggle {
|
|
206
|
+
@apply dark:shadow-[inset_var(--toggle-size)_0_0_2px_currentColor,_inset_0_0_0_2px_currentColor]
|
|
207
|
+
dark:hover:shadow-[inset_var(--toggle-size)_0_0_2px_currentColor,_inset_0_0_0_2px_currentColor]
|
|
208
|
+
shadow-[inset_var(--toggle-size)_0_0_2px_currentColor,_inset_0_0_0_2px_currentColor]
|
|
209
|
+
hover:shadow-[inset_var(--toggle-size)_0_0_2px_currentColor,_inset_0_0_0_2px_currentColor];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
@utility input-card {
|
|
214
|
+
@apply relative gap-3 p-3 rounded-lg surface;
|
|
215
|
+
|
|
216
|
+
&:has(input.checkbox:checked, input.radio:checked, input.toggle:checked) {
|
|
217
|
+
@apply border-brand-default;
|
|
218
|
+
.input-label {
|
|
219
|
+
@apply text-brand-default;
|
|
220
|
+
}
|
|
221
|
+
.surface-elevated {
|
|
222
|
+
@apply bg-brand-default border-brand-default text-core-white dark:text-core-black;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
> .input-wrapper {
|
|
227
|
+
@apply w-auto;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
@utility input-content {
|
|
232
|
+
@apply flex flex-col;
|
|
233
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
|
+
/*----------------------------*/
|
|
4
|
+
/* FILE UPLOAD */
|
|
5
|
+
/*----------------------------*/
|
|
6
|
+
|
|
7
|
+
@utility file-upload {
|
|
8
|
+
@apply w-full;
|
|
9
|
+
|
|
10
|
+
/* Dropzone */
|
|
11
|
+
.file-upload-dropzone {
|
|
12
|
+
@apply relative flex flex-col items-center min-h-56 justify-center rounded-2xl p-4 gap-2 text-center cursor-pointer transition-colors duration-200 surface-placeholder surface-interactive-placeholder;
|
|
13
|
+
|
|
14
|
+
/* States */
|
|
15
|
+
&.is-drag-accept {
|
|
16
|
+
@apply border-line-brand bg-background-brand;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
&.is-drag-reject {
|
|
20
|
+
@apply border-line-error bg-background-error;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&.is-drag-active {
|
|
24
|
+
@apply border-line-default bg-background-surface;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Uploaded state */
|
|
28
|
+
&.is-uploaded {
|
|
29
|
+
@apply surface-success;
|
|
30
|
+
|
|
31
|
+
.file-upload-icon-idle {
|
|
32
|
+
@apply -translate-y-full;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.file-upload-icon-success {
|
|
36
|
+
@apply translate-y-0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Error state */
|
|
41
|
+
&.has-error {
|
|
42
|
+
@apply surface-error;
|
|
43
|
+
.file-upload-icon-idle {
|
|
44
|
+
@apply -translate-y-full;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.file-upload-icon-error {
|
|
48
|
+
@apply translate-y-0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.file-upload-text {
|
|
52
|
+
@apply text-text-error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Uploading state */
|
|
57
|
+
&.is-uploading {
|
|
58
|
+
.file-upload-progress {
|
|
59
|
+
@apply h-12 opacity-100 translate-y-0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Icon container */
|
|
65
|
+
.file-upload-icon {
|
|
66
|
+
@apply flex overflow-hidden relative justify-center items-center mx-auto w-12 h-12 text-text-disabled;
|
|
67
|
+
|
|
68
|
+
svg {
|
|
69
|
+
@apply size-12;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.file-upload-icon-idle {
|
|
73
|
+
@apply text-text-disabled translate-y-0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.file-upload-icon-success {
|
|
77
|
+
@apply text-background-success-active translate-y-full;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.file-upload-icon-error {
|
|
81
|
+
@apply text-background-error-active translate-y-full;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
> * {
|
|
85
|
+
@apply transition-transform duration-1000 ease-in-out-quart absolute;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Text content */
|
|
90
|
+
.file-upload-text {
|
|
91
|
+
@apply mt-2 p2 text-text-secondary;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.file-upload-hint {
|
|
95
|
+
@apply mt-1 text-xs text-text-secondary;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Progress bar container */
|
|
99
|
+
.file-upload-progress {
|
|
100
|
+
@apply flex flex-col gap-2 justify-end items-stretch w-full h-0 transition-all duration-1000 ease-in-out-quart opacity-0 translate-y-full;
|
|
101
|
+
@apply mb-1 text-xs text-center text-text-secondary;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* File list */
|
|
105
|
+
.file-upload-list {
|
|
106
|
+
@apply space-y-2 text-left mt-4;
|
|
107
|
+
|
|
108
|
+
.file-item {
|
|
109
|
+
@apply flex gap-2 items-center p-2 rounded-lg surface;
|
|
110
|
+
|
|
111
|
+
.file-info {
|
|
112
|
+
@apply flex-1 min-w-0;
|
|
113
|
+
|
|
114
|
+
.file-name {
|
|
115
|
+
@apply truncate text-sm font-medium;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.file-size {
|
|
119
|
+
@apply text-xs text-text-tertiary;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Image preview */
|
|
126
|
+
.file-upload-preview {
|
|
127
|
+
@apply relative w-full h-full min-h-56 rounded-xl overflow-hidden;
|
|
128
|
+
|
|
129
|
+
img {
|
|
130
|
+
@apply w-full h-full object-cover;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.file-upload-preview-overlay {
|
|
135
|
+
@apply absolute inset-0 bg-black/50 flex items-center justify-center p-4;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Adjust dropzone when preview is shown */
|
|
139
|
+
.file-upload-dropzone.has-preview {
|
|
140
|
+
@apply p-0 border-0;
|
|
141
|
+
|
|
142
|
+
.file-upload-progress {
|
|
143
|
+
@apply opacity-100 h-auto;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
|
+
/*----------------------------*/
|
|
4
|
+
/* RANGE SLIDER */
|
|
5
|
+
/*----------------------------*/
|
|
6
|
+
|
|
7
|
+
@utility include-range-slider-track {
|
|
8
|
+
@apply w-full bg-line-highlight dark:bg-line-strong rounded-full h-[calc(var(--size))];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@utility include-range-slider-thumb {
|
|
12
|
+
@apply -mt-[calc(var(--size)/2)] appearance-none bg-background-brand rounded-full w-[calc(var(--size)*2)] h-[calc(var(--size)*2)];
|
|
13
|
+
-webkit-appearance: none;
|
|
14
|
+
appearance: none;
|
|
15
|
+
border: 0;
|
|
16
|
+
box-shadow:
|
|
17
|
+
inset 0 0 0 calc(var(--size) / 2) var(--color-bar),
|
|
18
|
+
inset 0 0 0 calc(var(--size)) var(--color-thumb),
|
|
19
|
+
inset 0 0 0 1000rem var(--color-bar),
|
|
20
|
+
calc(100rem * -1 - calc(var(--size))) 0 0 100rem var(--color-bar);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@utility range-slider {
|
|
24
|
+
--color-bar: currentColor;
|
|
25
|
+
--color-thumb: light-dark(var(--color-core-white), var(--color-core-black));
|
|
26
|
+
--size: 8px;
|
|
27
|
+
@apply block
|
|
28
|
+
w-full
|
|
29
|
+
appearance-none
|
|
30
|
+
bg-transparent
|
|
31
|
+
overflow-hidden
|
|
32
|
+
disabled:opacity-50
|
|
33
|
+
disabled:pointer-events-none
|
|
34
|
+
text-brand-default
|
|
35
|
+
h-[calc(var(--size)*2)]
|
|
36
|
+
outline-offset-4
|
|
37
|
+
rounded-full
|
|
38
|
+
cursor-pointer;
|
|
39
|
+
&:focus-visible {
|
|
40
|
+
@apply outline-1 outline-line-focus outline-dashed;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&::-webkit-slider-runnable-track {
|
|
44
|
+
@apply include-range-slider-track;
|
|
45
|
+
}
|
|
46
|
+
&::-moz-range-track {
|
|
47
|
+
@apply include-range-slider-track;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&::-webkit-slider-thumb {
|
|
51
|
+
@apply include-range-slider-thumb;
|
|
52
|
+
}
|
|
53
|
+
&::-moz-range-thumb {
|
|
54
|
+
@apply include-range-slider-thumb;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
~ .range-slider-ticks {
|
|
58
|
+
@apply mt-2;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&.range-xs {
|
|
62
|
+
--size: 4px;
|
|
63
|
+
~ .range-slider-ticks > i {
|
|
64
|
+
@apply h-1;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.range-sm {
|
|
69
|
+
--size: 6px;
|
|
70
|
+
~ .range-slider-ticks > i {
|
|
71
|
+
@apply h-1.5;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&.range-md {
|
|
76
|
+
--size: 8px;
|
|
77
|
+
~ .range-slider-ticks > i {
|
|
78
|
+
@apply h-2;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&.range-lg {
|
|
83
|
+
--size: 10px;
|
|
84
|
+
~ .range-slider-ticks > i {
|
|
85
|
+
@apply h-2.5;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&.range-xl {
|
|
90
|
+
--size: 12px;
|
|
91
|
+
~ .range-slider-ticks > i {
|
|
92
|
+
@apply h-3;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
input[type="range"] {
|
|
98
|
+
@apply range-slider;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@utility range-slider-ticks {
|
|
102
|
+
@apply flex justify-between items-stretch;
|
|
103
|
+
> i {
|
|
104
|
+
@apply w-px h-4 bg-line-highlight;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
|
+
/*----------------------------*/
|
|
4
|
+
/* FORM */
|
|
5
|
+
/*----------------------------*/
|
|
6
|
+
|
|
7
|
+
@utility input-label {
|
|
8
|
+
@apply text-sm font-normal select-none;
|
|
9
|
+
|
|
10
|
+
&:is(label) {
|
|
11
|
+
@apply cursor-pointer;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
small {
|
|
15
|
+
@apply text-xs font-light;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@utility input-state {
|
|
20
|
+
@apply inline-block px-2 py-1 text-xs rounded;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@utility input-error {
|
|
24
|
+
@apply my-1 input-state surface-error;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@utility input-success {
|
|
28
|
+
@apply input-state surface-success;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@utility input-info {
|
|
32
|
+
@apply input-state surface-info;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@utility input-warning {
|
|
36
|
+
@apply input-state surface-warning;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@utility input-attention {
|
|
40
|
+
@apply input-state surface-attention;
|
|
41
|
+
}
|