aetherx-dt-ui 0.1.7 → 0.1.9
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/package.json +1 -1
- package/src/registry/components/badge/DtBadge.vue +39 -38
- package/src/registry/components/button/DtButton.vue +74 -69
- package/src/registry/components/checkbox/DtCheckbox.vue +148 -0
- package/src/registry/components/checkbox/index.ts +2 -0
- package/src/registry/components/input/DtInput.vue +111 -31
- package/src/registry/components/layout/DtLayout.vue +2 -0
- package/src/registry/components/layout/DtLayoutHeader.vue +30 -7
- package/src/registry/components/layout/DtLayoutSidebar.vue +2 -2
- package/src/registry/components/pagination/DtPagination.vue +82 -16
- package/src/registry/components/radio/DtRadio.vue +155 -0
- package/src/registry/components/radio/index.ts +2 -0
- package/src/registry/components/status-badge/DtStatusBadge.vue +9 -9
- package/src/registry/components/toggle/DtToggle.vue +124 -0
- package/src/registry/components/toggle/index.ts +2 -0
- package/src/registry/docs/checkbox.md +53 -0
- package/src/registry/docs/layout.md +16 -1
- package/src/registry/docs/pagination.md +41 -46
- package/src/registry/docs/radio.md +54 -0
- package/src/registry/docs/toggle.md +46 -0
- package/src/registry/registry.json +24 -0
- package/src/registry/styles/base.css +175 -81
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed } from 'vue'
|
|
3
3
|
|
|
4
|
-
export type BadgeVariant = '
|
|
5
|
-
export type BadgeSize = 'sm' | '
|
|
4
|
+
export type BadgeVariant = 'gray' | 'green' | 'red' | 'blue' | 'orange' | 'yellow'
|
|
5
|
+
export type BadgeSize = 'sm' | 'md' | 'lg'
|
|
6
6
|
|
|
7
7
|
const props = withDefaults(defineProps<{
|
|
8
8
|
variant?: BadgeVariant
|
|
9
9
|
size?: BadgeSize
|
|
10
10
|
dot?: boolean
|
|
11
11
|
}>(), {
|
|
12
|
-
variant: '
|
|
13
|
-
size: '
|
|
12
|
+
variant: 'gray',
|
|
13
|
+
size: 'md',
|
|
14
14
|
})
|
|
15
15
|
|
|
16
16
|
const classes = computed(() => [
|
|
17
17
|
'dt-badge',
|
|
18
18
|
`dt-badge--${props.variant}`,
|
|
19
|
-
`dt-badge
|
|
19
|
+
`dt-badge--size-${props.size}`,
|
|
20
20
|
props.dot && 'dt-badge--dot',
|
|
21
21
|
].filter(Boolean))
|
|
22
22
|
</script>
|
|
@@ -33,62 +33,63 @@ const classes = computed(() => [
|
|
|
33
33
|
display: inline-flex;
|
|
34
34
|
align-items: center;
|
|
35
35
|
gap: var(--dt-space-1);
|
|
36
|
-
font-weight:
|
|
36
|
+
font-weight: var(--dt-font-medium);
|
|
37
37
|
border-radius: var(--dt-radius-sm);
|
|
38
38
|
white-space: nowrap;
|
|
39
|
-
transition: background-color var(--dt-transition-base), color var(--dt-transition-base);
|
|
40
|
-
border: 1px solid transparent;
|
|
41
39
|
line-height: 1;
|
|
42
40
|
}
|
|
43
41
|
|
|
44
|
-
/* Sizes */
|
|
45
|
-
.dt-badge--sm {
|
|
46
|
-
padding:
|
|
42
|
+
/* Sizes (Figma: SM/MD/LG) */
|
|
43
|
+
.dt-badge--size-sm {
|
|
44
|
+
padding: 4px 6px;
|
|
47
45
|
font-size: var(--dt-text-xs);
|
|
48
46
|
}
|
|
49
|
-
.dt-badge--
|
|
50
|
-
padding:
|
|
51
|
-
font-size: var(--dt-text-
|
|
47
|
+
.dt-badge--size-md {
|
|
48
|
+
padding: 4px 8px;
|
|
49
|
+
font-size: var(--dt-text-sm);
|
|
50
|
+
}
|
|
51
|
+
.dt-badge--size-lg {
|
|
52
|
+
padding: 4px 10px;
|
|
53
|
+
font-size: var(--dt-text-sm);
|
|
52
54
|
}
|
|
53
55
|
|
|
54
|
-
/* Variants */
|
|
55
|
-
.dt-badge--
|
|
56
|
-
background
|
|
57
|
-
color: var(--dt-
|
|
56
|
+
/* Variants (Figma colors) */
|
|
57
|
+
.dt-badge--gray {
|
|
58
|
+
background: var(--dt-gray-100);
|
|
59
|
+
color: var(--dt-gray-800);
|
|
58
60
|
}
|
|
59
61
|
|
|
60
|
-
.dt-badge--
|
|
61
|
-
background
|
|
62
|
-
color: var(--dt-
|
|
62
|
+
.dt-badge--green {
|
|
63
|
+
background: var(--dt-success-100);
|
|
64
|
+
color: var(--dt-success-600);
|
|
63
65
|
}
|
|
64
66
|
|
|
65
|
-
.dt-badge--
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
color: var(--dt-color-text);
|
|
67
|
+
.dt-badge--red {
|
|
68
|
+
background: var(--dt-error-100);
|
|
69
|
+
color: var(--dt-error-500);
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
.dt-badge--
|
|
72
|
-
background
|
|
73
|
-
color: var(--dt-
|
|
72
|
+
.dt-badge--blue {
|
|
73
|
+
background: var(--dt-blue-100);
|
|
74
|
+
color: var(--dt-blue-500);
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
.dt-badge--
|
|
77
|
-
background
|
|
78
|
-
color: var(--dt-
|
|
77
|
+
.dt-badge--orange {
|
|
78
|
+
background: var(--dt-warning-100);
|
|
79
|
+
color: var(--dt-warning-600);
|
|
79
80
|
}
|
|
80
81
|
|
|
81
|
-
.dt-badge--
|
|
82
|
-
background
|
|
83
|
-
color: var(--dt-
|
|
82
|
+
.dt-badge--yellow {
|
|
83
|
+
background: var(--dt-yellow-100);
|
|
84
|
+
color: var(--dt-yellow-600);
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
/* Dot */
|
|
87
88
|
.dt-badge__dot {
|
|
88
|
-
width:
|
|
89
|
-
height:
|
|
90
|
-
border-radius:
|
|
91
|
-
background
|
|
89
|
+
width: 6px;
|
|
90
|
+
height: 6px;
|
|
91
|
+
border-radius: 50%;
|
|
92
|
+
background: currentColor;
|
|
92
93
|
flex-shrink: 0;
|
|
93
94
|
}
|
|
94
95
|
</style>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed } from 'vue'
|
|
3
3
|
|
|
4
|
-
export type ButtonVariant = '
|
|
5
|
-
export type ButtonSize = '
|
|
4
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost'
|
|
5
|
+
export type ButtonSize = 'xl' | 'lg' | 'md' | 'sm' | 'xs'
|
|
6
6
|
|
|
7
7
|
const props = withDefaults(defineProps<{
|
|
8
8
|
variant?: ButtonVariant
|
|
@@ -10,14 +10,14 @@ const props = withDefaults(defineProps<{
|
|
|
10
10
|
disabled?: boolean
|
|
11
11
|
loading?: boolean
|
|
12
12
|
}>(), {
|
|
13
|
-
variant: '
|
|
14
|
-
size: '
|
|
13
|
+
variant: 'primary',
|
|
14
|
+
size: 'md',
|
|
15
15
|
})
|
|
16
16
|
|
|
17
17
|
const classes = computed(() => [
|
|
18
18
|
'dt-button',
|
|
19
19
|
`dt-button--${props.variant}`,
|
|
20
|
-
`dt-button
|
|
20
|
+
`dt-button--size-${props.size}`,
|
|
21
21
|
props.disabled && 'dt-button--disabled',
|
|
22
22
|
props.loading && 'dt-button--loading',
|
|
23
23
|
].filter(Boolean))
|
|
@@ -30,11 +30,11 @@ const classes = computed(() => [
|
|
|
30
30
|
v-bind="$attrs"
|
|
31
31
|
>
|
|
32
32
|
<span v-if="loading" class="dt-button__spinner" aria-hidden="true" />
|
|
33
|
-
<span v-if="$slots['icon-left']" class="dt-button__icon
|
|
33
|
+
<span v-if="$slots['icon-left']" class="dt-button__icon">
|
|
34
34
|
<slot name="icon-left" />
|
|
35
35
|
</span>
|
|
36
36
|
<slot />
|
|
37
|
-
<span v-if="$slots['icon-right']" class="dt-button__icon
|
|
37
|
+
<span v-if="$slots['icon-right']" class="dt-button__icon">
|
|
38
38
|
<slot name="icon-right" />
|
|
39
39
|
</span>
|
|
40
40
|
</button>
|
|
@@ -46,103 +46,110 @@ const classes = computed(() => [
|
|
|
46
46
|
align-items: center;
|
|
47
47
|
justify-content: center;
|
|
48
48
|
gap: var(--dt-space-2);
|
|
49
|
-
font-weight:
|
|
50
|
-
border-radius: var(--dt-radius-base);
|
|
51
|
-
transition: background-color var(--dt-transition-base),
|
|
52
|
-
border-color var(--dt-transition-base),
|
|
53
|
-
color var(--dt-transition-base),
|
|
54
|
-
box-shadow var(--dt-transition-base);
|
|
49
|
+
font-weight: var(--dt-font-medium);
|
|
55
50
|
cursor: pointer;
|
|
56
51
|
border: 1px solid transparent;
|
|
57
52
|
font-family: inherit;
|
|
58
53
|
line-height: 1;
|
|
59
54
|
white-space: nowrap;
|
|
60
55
|
user-select: none;
|
|
56
|
+
transition: background-color var(--dt-transition-base),
|
|
57
|
+
border-color var(--dt-transition-base),
|
|
58
|
+
color var(--dt-transition-base);
|
|
61
59
|
}
|
|
62
60
|
|
|
63
|
-
/* Variants */
|
|
64
|
-
.dt-button--
|
|
65
|
-
background
|
|
61
|
+
/* ── Variants ───────────────────────────── */
|
|
62
|
+
.dt-button--primary {
|
|
63
|
+
background: var(--dt-color-accent);
|
|
66
64
|
color: var(--dt-color-accent-foreground);
|
|
67
65
|
}
|
|
68
|
-
.dt-button--
|
|
69
|
-
background
|
|
66
|
+
.dt-button--primary:hover:not(:disabled) {
|
|
67
|
+
background: var(--dt-color-accent-hover);
|
|
68
|
+
}
|
|
69
|
+
.dt-button--primary:active:not(:disabled) {
|
|
70
|
+
background: var(--dt-color-accent-active);
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
.dt-button--secondary {
|
|
73
|
-
background
|
|
74
|
+
background: var(--dt-color-secondary);
|
|
74
75
|
color: var(--dt-color-secondary-foreground);
|
|
75
76
|
}
|
|
76
|
-
.dt-button--secondary:hover {
|
|
77
|
-
background
|
|
77
|
+
.dt-button--secondary:hover:not(:disabled) {
|
|
78
|
+
background: var(--dt-color-secondary-hover);
|
|
79
|
+
}
|
|
80
|
+
.dt-button--secondary:active:not(:disabled) {
|
|
81
|
+
background: var(--dt-color-secondary-active);
|
|
78
82
|
}
|
|
79
83
|
|
|
80
84
|
.dt-button--outline {
|
|
85
|
+
background: var(--dt-color-background);
|
|
86
|
+
color: var(--dt-gray-800);
|
|
81
87
|
border-color: var(--dt-color-border);
|
|
82
|
-
background-color: transparent;
|
|
83
|
-
color: var(--dt-color-text);
|
|
84
|
-
}
|
|
85
|
-
.dt-button--outline:hover {
|
|
86
|
-
background-color: var(--dt-color-surface-hover);
|
|
87
|
-
border-color: var(--dt-color-border-hover);
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
color: var(--dt-color-text);
|
|
89
|
+
.dt-button--outline:hover:not(:disabled) {
|
|
90
|
+
color: var(--dt-color-accent);
|
|
91
|
+
border-color: var(--dt-color-accent);
|
|
93
92
|
}
|
|
94
|
-
.dt-button--
|
|
95
|
-
background
|
|
93
|
+
.dt-button--outline:active:not(:disabled) {
|
|
94
|
+
background: var(--dt-brand-100);
|
|
95
|
+
color: var(--dt-color-accent);
|
|
96
|
+
border-color: var(--dt-color-accent);
|
|
96
97
|
}
|
|
97
98
|
|
|
98
|
-
.dt-button--
|
|
99
|
-
background
|
|
100
|
-
color: var(--dt-
|
|
101
|
-
}
|
|
102
|
-
.dt-button--destructive:hover {
|
|
103
|
-
background-color: var(--dt-color-error-hover);
|
|
99
|
+
.dt-button--ghost {
|
|
100
|
+
background: transparent;
|
|
101
|
+
color: var(--dt-gray-800);
|
|
104
102
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
background-color: transparent;
|
|
103
|
+
.dt-button--ghost:hover:not(:disabled) {
|
|
104
|
+
background: var(--dt-brand-100);
|
|
108
105
|
color: var(--dt-color-accent);
|
|
109
|
-
text-decoration: underline;
|
|
110
|
-
text-underline-offset: 4px;
|
|
111
106
|
}
|
|
112
|
-
.dt-button--
|
|
113
|
-
|
|
107
|
+
.dt-button--ghost:active:not(:disabled) {
|
|
108
|
+
background: transparent;
|
|
109
|
+
color: var(--dt-color-accent);
|
|
114
110
|
}
|
|
115
111
|
|
|
116
|
-
/* Sizes */
|
|
117
|
-
.dt-button--
|
|
118
|
-
height:
|
|
119
|
-
padding:
|
|
112
|
+
/* ── Sizes (Figma: xl/lg/md/sm/xs) ──────── */
|
|
113
|
+
.dt-button--size-xl {
|
|
114
|
+
height: 56px;
|
|
115
|
+
padding: 18px 24px;
|
|
116
|
+
border-radius: var(--dt-radius-xl);
|
|
117
|
+
font-size: var(--dt-text-base);
|
|
118
|
+
}
|
|
119
|
+
.dt-button--size-lg {
|
|
120
|
+
height: 48px;
|
|
121
|
+
padding: 16px 24px;
|
|
122
|
+
border-radius: var(--dt-radius-lg);
|
|
120
123
|
font-size: var(--dt-text-sm);
|
|
121
124
|
}
|
|
122
|
-
.dt-button--
|
|
123
|
-
height:
|
|
124
|
-
padding:
|
|
125
|
+
.dt-button--size-md {
|
|
126
|
+
height: 40px;
|
|
127
|
+
padding: 12px 18px;
|
|
128
|
+
border-radius: var(--dt-radius-base);
|
|
125
129
|
font-size: var(--dt-text-sm);
|
|
126
130
|
}
|
|
127
|
-
.dt-button--
|
|
128
|
-
height:
|
|
129
|
-
padding:
|
|
130
|
-
|
|
131
|
+
.dt-button--size-sm {
|
|
132
|
+
height: 32px;
|
|
133
|
+
padding: 8px 16px;
|
|
134
|
+
border-radius: var(--dt-radius-md);
|
|
135
|
+
font-size: var(--dt-text-xs);
|
|
131
136
|
}
|
|
132
|
-
.dt-button--
|
|
133
|
-
height:
|
|
134
|
-
|
|
135
|
-
|
|
137
|
+
.dt-button--size-xs {
|
|
138
|
+
height: 24px;
|
|
139
|
+
padding: 4px 8px;
|
|
140
|
+
border-radius: var(--dt-radius-sm);
|
|
141
|
+
font-size: var(--dt-text-xs);
|
|
136
142
|
}
|
|
137
143
|
|
|
138
|
-
/* States */
|
|
144
|
+
/* ── States ──────────────────────────────── */
|
|
139
145
|
.dt-button--disabled {
|
|
140
|
-
|
|
141
|
-
|
|
146
|
+
background: var(--dt-color-disabled-bg);
|
|
147
|
+
color: var(--dt-color-disabled-text);
|
|
148
|
+
border-color: transparent;
|
|
149
|
+
cursor: not-allowed;
|
|
142
150
|
}
|
|
143
151
|
|
|
144
152
|
.dt-button--loading {
|
|
145
|
-
position: relative;
|
|
146
153
|
pointer-events: none;
|
|
147
154
|
}
|
|
148
155
|
|
|
@@ -151,7 +158,7 @@ const classes = computed(() => [
|
|
|
151
158
|
outline-offset: 2px;
|
|
152
159
|
}
|
|
153
160
|
|
|
154
|
-
/* Spinner */
|
|
161
|
+
/* ── Spinner ─────────────────────────────── */
|
|
155
162
|
.dt-button__spinner {
|
|
156
163
|
width: 1em;
|
|
157
164
|
height: 1em;
|
|
@@ -169,8 +176,6 @@ const classes = computed(() => [
|
|
|
169
176
|
}
|
|
170
177
|
|
|
171
178
|
@keyframes dt-spin {
|
|
172
|
-
to {
|
|
173
|
-
transform: rotate(360deg);
|
|
174
|
-
}
|
|
179
|
+
to { transform: rotate(360deg); }
|
|
175
180
|
}
|
|
176
181
|
</style>
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed } from 'vue'
|
|
3
|
+
|
|
4
|
+
export type CheckboxSize = 'lg' | 'md' | 'sm'
|
|
5
|
+
|
|
6
|
+
const props = withDefaults(defineProps<{
|
|
7
|
+
modelValue?: boolean
|
|
8
|
+
size?: CheckboxSize
|
|
9
|
+
disabled?: boolean
|
|
10
|
+
id?: string
|
|
11
|
+
}>(), {
|
|
12
|
+
modelValue: false,
|
|
13
|
+
size: 'md',
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
const emit = defineEmits<{
|
|
17
|
+
'update:modelValue': [value: boolean]
|
|
18
|
+
}>()
|
|
19
|
+
|
|
20
|
+
const inputId = computed(() => props.id || `dt-checkbox-${Math.random().toString(36).slice(2, 9)}`)
|
|
21
|
+
|
|
22
|
+
const toggle = () => {
|
|
23
|
+
if (!props.disabled) {
|
|
24
|
+
emit('update:modelValue', !props.modelValue)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const classes = computed(() => [
|
|
29
|
+
'dt-checkbox',
|
|
30
|
+
`dt-checkbox--${props.size}`,
|
|
31
|
+
props.modelValue && 'dt-checkbox--checked',
|
|
32
|
+
props.disabled && 'dt-checkbox--disabled',
|
|
33
|
+
].filter(Boolean))
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<template>
|
|
37
|
+
<label :class="classes" :for="inputId">
|
|
38
|
+
<input
|
|
39
|
+
:id="inputId"
|
|
40
|
+
type="checkbox"
|
|
41
|
+
:checked="modelValue"
|
|
42
|
+
:disabled="disabled"
|
|
43
|
+
class="dt-checkbox__input"
|
|
44
|
+
@change="toggle"
|
|
45
|
+
/>
|
|
46
|
+
<span class="dt-checkbox__box">
|
|
47
|
+
<svg v-if="modelValue" class="dt-checkbox__check" viewBox="0 0 12 12" fill="none">
|
|
48
|
+
<path d="M2.5 6L5 8.5L9.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
49
|
+
</svg>
|
|
50
|
+
</span>
|
|
51
|
+
<span v-if="$slots.default" class="dt-checkbox__label">
|
|
52
|
+
<slot />
|
|
53
|
+
</span>
|
|
54
|
+
</label>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<style scoped>
|
|
58
|
+
.dt-checkbox {
|
|
59
|
+
display: inline-flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
gap: var(--dt-space-2);
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
user-select: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.dt-checkbox__input {
|
|
67
|
+
position: absolute;
|
|
68
|
+
opacity: 0;
|
|
69
|
+
width: 0;
|
|
70
|
+
height: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.dt-checkbox__box {
|
|
74
|
+
display: flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
border-radius: var(--dt-radius-xs);
|
|
78
|
+
background: var(--dt-gray-200);
|
|
79
|
+
transition: background-color var(--dt-transition-base);
|
|
80
|
+
flex-shrink: 0;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.dt-checkbox:hover:not(.dt-checkbox--disabled) .dt-checkbox__box {
|
|
84
|
+
background: var(--dt-gray-300);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.dt-checkbox--checked .dt-checkbox__box {
|
|
88
|
+
background: var(--dt-color-accent);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.dt-checkbox--checked:hover:not(.dt-checkbox--disabled) .dt-checkbox__box {
|
|
92
|
+
background: var(--dt-color-accent-hover);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.dt-checkbox__check {
|
|
96
|
+
color: #ffffff;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Sizes */
|
|
100
|
+
.dt-checkbox--lg .dt-checkbox__box {
|
|
101
|
+
width: 24px;
|
|
102
|
+
height: 24px;
|
|
103
|
+
}
|
|
104
|
+
.dt-checkbox--lg .dt-checkbox__check {
|
|
105
|
+
width: 14px;
|
|
106
|
+
height: 14px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.dt-checkbox--md .dt-checkbox__box {
|
|
110
|
+
width: 20px;
|
|
111
|
+
height: 20px;
|
|
112
|
+
}
|
|
113
|
+
.dt-checkbox--md .dt-checkbox__check {
|
|
114
|
+
width: 12px;
|
|
115
|
+
height: 12px;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.dt-checkbox--sm .dt-checkbox__box {
|
|
119
|
+
width: 16px;
|
|
120
|
+
height: 16px;
|
|
121
|
+
}
|
|
122
|
+
.dt-checkbox--sm .dt-checkbox__check {
|
|
123
|
+
width: 10px;
|
|
124
|
+
height: 10px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.dt-checkbox__label {
|
|
128
|
+
font-size: var(--dt-text-sm);
|
|
129
|
+
color: var(--dt-color-text);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Disabled */
|
|
133
|
+
.dt-checkbox--disabled {
|
|
134
|
+
cursor: not-allowed;
|
|
135
|
+
}
|
|
136
|
+
.dt-checkbox--disabled .dt-checkbox__box {
|
|
137
|
+
background: var(--dt-gray-100);
|
|
138
|
+
}
|
|
139
|
+
.dt-checkbox--disabled .dt-checkbox__label {
|
|
140
|
+
color: var(--dt-color-disabled-text);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* Focus */
|
|
144
|
+
.dt-checkbox__input:focus-visible + .dt-checkbox__box {
|
|
145
|
+
outline: 2px solid var(--dt-color-ring);
|
|
146
|
+
outline-offset: 2px;
|
|
147
|
+
}
|
|
148
|
+
</style>
|