@redseed/redseed-ui-vue3 6.4.2 → 6.4.4
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/docs/04-card-components.md +10 -0
- package/docs/05-text-components.md +3 -1
- package/package.json +4 -4
- package/src/components/ActivityFeeds/ActivityFeed.vue +1 -1
- package/src/components/ActivityFeeds/FeedItem.vue +8 -8
- package/src/components/Avatar/AvatarText.vue +1 -1
- package/src/components/Breadcrumbs/Breadcrumbs.vue +3 -3
- package/src/components/Button/ButtonSlot.vue +6 -6
- package/src/components/Button/ButtonTertiary.vue +1 -1
- package/src/components/Card/ButtonCard.vue +11 -11
- package/src/components/Card/MetricCard.vue +3 -3
- package/src/components/Card/RadioCard.vue +12 -12
- package/src/components/CardGroup/CardGroup.vue +40 -1
- package/src/components/DropdownMenu/DropdownMenu.vue +1 -1
- package/src/components/DropdownMenu/DropdownOption.vue +2 -2
- package/src/components/Empty/Empty.vue +1 -1
- package/src/components/Form/FormFieldset.vue +1 -1
- package/src/components/Form/FormSlot.vue +4 -4
- package/src/components/FormField/FormFieldCheckbox.vue +7 -7
- package/src/components/FormField/FormFieldCombobox.vue +16 -16
- package/src/components/FormField/FormFieldPasswordToggle.vue +1 -1
- package/src/components/FormField/FormFieldRadioGroup.vue +2 -2
- package/src/components/FormField/FormFieldSearch.vue +1 -1
- package/src/components/FormField/FormFieldSelect.vue +9 -9
- package/src/components/FormField/FormFieldSlot.vue +4 -4
- package/src/components/FormField/FormFieldText.vue +7 -7
- package/src/components/FormField/FormFieldTextSuffix.vue +1 -1
- package/src/components/FormField/FormFieldTextarea.vue +4 -4
- package/src/components/FormField/FormFieldUploaderWrapper.vue +7 -7
- package/src/components/HTML/BodyText.vue +25 -6
- package/src/components/Image/Image.vue +4 -4
- package/src/components/Layouts/HeroSection.vue +1 -1
- package/src/components/Layouts/SectionFooter.vue +1 -1
- package/src/components/Layouts/SectionHeader.vue +1 -1
- package/src/components/Link/LinkSlot.vue +14 -2
- package/src/components/LinkedList/LinkedListItem.vue +6 -6
- package/src/components/List/ListItem.vue +5 -5
- package/src/components/Loader/Loader.vue +3 -3
- package/src/components/MessageBox/MessageBox.vue +2 -2
- package/src/components/Modal/Modal.vue +5 -5
- package/src/components/Pagination/Pagination.vue +1 -1
- package/src/components/Pagination/PaginationItem.vue +4 -4
- package/src/components/Pagination/RecordCount.vue +1 -1
- package/src/components/Progress/ProgressCircle.vue +2 -2
- package/src/components/Progress/ProgressTrackerStep.vue +2 -2
- package/src/components/Social/SignInWithGoogle.vue +5 -8
- package/src/components/Social/SignUpWithGoogle.vue +5 -8
- package/src/components/Sorting/Sorting.vue +1 -1
- package/src/components/Switcher/Switcher.vue +1 -1
- package/src/components/Switcher/SwitcherItem.vue +1 -1
- package/src/components/Table/Table.vue +6 -6
- package/src/components/Table/Td.vue +1 -1
- package/src/components/Table/TdUser.vue +3 -3
- package/src/components/Table/Th.vue +1 -1
- package/src/components/Table/Tr.vue +2 -2
- package/src/components/Toggle/Toggle.vue +4 -4
|
@@ -175,6 +175,16 @@ Card components provide containers for displaying content in organized, visually
|
|
|
175
175
|
</template>
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
+
For smaller cards that should display more columns per row, use the compact variant:
|
|
179
|
+
|
|
180
|
+
```vue
|
|
181
|
+
<template>
|
|
182
|
+
<CardGroup variant="compact" :totalItems="cards.length" :controlApplied="false" :pagination="false">
|
|
183
|
+
<!-- cards -->
|
|
184
|
+
</CardGroup>
|
|
185
|
+
</template>
|
|
186
|
+
```
|
|
187
|
+
|
|
178
188
|
## Best Practices
|
|
179
189
|
|
|
180
190
|
1. **Content Hierarchy:** Use CardHeader for consistent title and action placement across cards.
|
|
@@ -9,13 +9,15 @@ Text components provide consistent typography and text formatting across the app
|
|
|
9
9
|
**Implementation:**
|
|
10
10
|
```vue
|
|
11
11
|
<template>
|
|
12
|
-
<BodyText>
|
|
12
|
+
<BodyText :lines="3">
|
|
13
13
|
This is the main content text that will be displayed with consistent styling,
|
|
14
14
|
proper line height, and appropriate spacing for readability.
|
|
15
15
|
</BodyText>
|
|
16
16
|
</template>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
+
`lines` determines how many lines of text are visible before the content is clamped using Tailwind's `line-clamp-{n}` utility. Values from **1** to **6** are supported.
|
|
20
|
+
|
|
19
21
|
### ReadMore
|
|
20
22
|
**When to use:** For long text content that should be truncated with a "read more" expand/collapse functionality.
|
|
21
23
|
**Implementation:**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redseed/redseed-ui-vue3",
|
|
3
|
-
"version": "6.4.
|
|
3
|
+
"version": "6.4.4",
|
|
4
4
|
"description": "RedSeed UI Vue 3 components",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": "https://github.com/redseedtraining/redseed-ui",
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"license": "ISC",
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@heroicons/vue": "^2.2.0",
|
|
15
|
-
"@vueuse/components": "^13.
|
|
16
|
-
"@vueuse/core": "^13.
|
|
15
|
+
"@vueuse/components": "^13.9.0",
|
|
16
|
+
"@vueuse/core": "^13.9.0",
|
|
17
17
|
"lodash": "^4.17.21",
|
|
18
18
|
"lottie-web": "^5.13.0",
|
|
19
|
-
"vue": "^3.5.
|
|
19
|
+
"vue": "^3.5.21"
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -25,7 +25,7 @@ const props = defineProps({
|
|
|
25
25
|
|
|
26
26
|
&--line {
|
|
27
27
|
& > *:not(:last-child) {
|
|
28
|
-
@apply after:absolute after:inset-x-0 after:-bottom-4 after:border-t after:border-
|
|
28
|
+
@apply after:absolute after:inset-x-0 after:-bottom-4 after:border-t after:border-border-primary;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -123,10 +123,10 @@ function handleClick() {
|
|
|
123
123
|
|
|
124
124
|
&__avatar {
|
|
125
125
|
@apply relative shrink-0 size-12 rounded-full flex items-center justify-center;
|
|
126
|
-
@apply bg-
|
|
126
|
+
@apply bg-background-disabled border border-border-secondary;
|
|
127
127
|
|
|
128
128
|
:deep(> svg) {
|
|
129
|
-
@apply size-7 text-
|
|
129
|
+
@apply size-7 text-text-secondary;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -136,14 +136,14 @@ function handleClick() {
|
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
&__avatar-indicator-dot {
|
|
139
|
-
@apply size-4 rounded-full bg-
|
|
139
|
+
@apply size-4 rounded-full bg-border-primary border-2 border-background-primary;
|
|
140
140
|
|
|
141
141
|
&--online {
|
|
142
|
-
@apply bg-
|
|
142
|
+
@apply bg-text-success;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
&--busy {
|
|
146
|
-
@apply bg-
|
|
146
|
+
@apply bg-text-error;
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -160,15 +160,15 @@ function handleClick() {
|
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
&__heading-text {
|
|
163
|
-
@apply shrink-0 text-sm font-medium text-
|
|
163
|
+
@apply shrink-0 text-sm font-medium text-text-primary;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
&__heading-subtext {
|
|
167
|
-
@apply text-xs text-
|
|
167
|
+
@apply text-xs text-text-secondary;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
&__supporting-text {
|
|
171
|
-
@apply text-sm font-medium text-
|
|
171
|
+
@apply text-sm font-medium text-text-secondary;
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
&__dot {
|
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
</template>
|
|
8
8
|
<style scoped lang='scss'>
|
|
9
9
|
.rsui-avatar-circle {
|
|
10
|
-
@apply w-full h-full rounded-full bg-
|
|
10
|
+
@apply w-full h-full rounded-full bg-background-secondary flex items-center justify-center text-text-secondary border border-border-primary font-semibold;
|
|
11
11
|
}
|
|
12
12
|
</style>
|
|
@@ -38,11 +38,11 @@ function clickItem(item) {
|
|
|
38
38
|
@apply flex flex-wrap items-center gap-x-2 gap-y-2;
|
|
39
39
|
&__item {
|
|
40
40
|
@apply relative select-none pr-4 last:pr-0 last:after:hidden;
|
|
41
|
-
@apply text-sm text-
|
|
41
|
+
@apply text-sm text-text-disabled leading-6;
|
|
42
42
|
@apply after:absolute after:right-0.5 after:content-['\007C'];
|
|
43
|
-
@apply after:w-0.5 after:h-full after:text-
|
|
43
|
+
@apply after:w-0.5 after:h-full after:text-text-disabled;
|
|
44
44
|
&--action {
|
|
45
|
-
@apply cursor-pointer hover:text-
|
|
45
|
+
@apply cursor-pointer hover:text-text-primary transition-colors duration-200;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -98,16 +98,16 @@ const buttonSlotClass = computed(() => [
|
|
|
98
98
|
// default font
|
|
99
99
|
@apply font-semibold text-sm;
|
|
100
100
|
// default colors
|
|
101
|
-
@apply bg-
|
|
101
|
+
@apply bg-background-primary text-text-secondary ring-0 ring-border-primary border-border-primary;
|
|
102
102
|
// default hover state
|
|
103
|
-
@apply hover:bg-
|
|
103
|
+
@apply hover:bg-background-secondary;
|
|
104
104
|
// default focus state
|
|
105
|
-
@apply focus-visible:ring-offset-2 focus-visible:ring-2 focus-visible:ring-
|
|
105
|
+
@apply focus-visible:ring-offset-2 focus-visible:ring-2 focus-visible:ring-border-primary focus-visible:border-border-primary;
|
|
106
106
|
// default active state
|
|
107
|
-
@apply active:ring-0 active:bg-
|
|
107
|
+
@apply active:ring-0 active:bg-background-primary;
|
|
108
108
|
// default disabled state
|
|
109
|
-
@apply disabled:bg-
|
|
110
|
-
@apply disabled:active:ring-0 disabled:active:bg-
|
|
109
|
+
@apply disabled:bg-background-disabled disabled:border-transparent disabled:text-text-disabled;
|
|
110
|
+
@apply disabled:active:ring-0 disabled:active:bg-background-disabled disabled:active:border-transparent;
|
|
111
111
|
@apply disabled:focus-visible:ring-0;
|
|
112
112
|
|
|
113
113
|
:deep(svg) {
|
|
@@ -17,7 +17,7 @@ import ButtonSlot from './ButtonSlot.vue'
|
|
|
17
17
|
// default active state
|
|
18
18
|
@apply active:bg-transparent active:border-transparent;
|
|
19
19
|
// default disabled state
|
|
20
|
-
@apply disabled:bg-transparent disabled:border-transparent disabled:text-
|
|
20
|
+
@apply disabled:bg-transparent disabled:border-transparent disabled:text-text-disabled;
|
|
21
21
|
@apply disabled:active:bg-transparent disabled:active:border-transparent;
|
|
22
22
|
}
|
|
23
23
|
</style>
|
|
@@ -48,9 +48,9 @@ const props = defineProps({
|
|
|
48
48
|
</template>
|
|
49
49
|
<style lang="scss" scoped>
|
|
50
50
|
.rsui-button-card {
|
|
51
|
-
@apply hover:shadow-none hover:border-
|
|
51
|
+
@apply hover:shadow-none hover:border-text-primary;
|
|
52
52
|
&--disabled {
|
|
53
|
-
@apply hover:border-
|
|
53
|
+
@apply hover:border-border-primary;
|
|
54
54
|
@apply focus-visible:ring-0;
|
|
55
55
|
}
|
|
56
56
|
&__content {
|
|
@@ -58,7 +58,7 @@ const props = defineProps({
|
|
|
58
58
|
}
|
|
59
59
|
&__icon {
|
|
60
60
|
@apply size-12 flex shrink-0 items-center justify-center rounded-lg transition duration-200;
|
|
61
|
-
@apply border border-
|
|
61
|
+
@apply border border-text-secondary text-text-secondary;
|
|
62
62
|
:deep(svg) {
|
|
63
63
|
@apply size-5;
|
|
64
64
|
path {
|
|
@@ -70,19 +70,19 @@ const props = defineProps({
|
|
|
70
70
|
@apply flex flex-col;
|
|
71
71
|
}
|
|
72
72
|
&__title {
|
|
73
|
-
@apply text-
|
|
74
|
-
@apply group-hover/button-card:text-
|
|
73
|
+
@apply text-text-primary font-semibold line-clamp-1;
|
|
74
|
+
@apply group-hover/button-card:text-text-primary;
|
|
75
75
|
&--disabled {
|
|
76
|
-
@apply text-
|
|
77
|
-
@apply group-hover/button-card:text-
|
|
76
|
+
@apply text-text-disabled;
|
|
77
|
+
@apply group-hover/button-card:text-text-disabled;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
&__supporting-text {
|
|
81
|
-
@apply text-sm text-
|
|
82
|
-
@apply group-hover/button-card:text-
|
|
81
|
+
@apply text-sm text-text-secondary line-clamp-1;
|
|
82
|
+
@apply group-hover/button-card:text-text-primary;
|
|
83
83
|
&--disabled {
|
|
84
|
-
@apply text-
|
|
85
|
-
@apply group-hover/button-card:text-
|
|
84
|
+
@apply text-text-disabled;
|
|
85
|
+
@apply group-hover/button-card:text-text-disabled;
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -47,7 +47,7 @@ function handleIconClick() {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
&__icon {
|
|
50
|
-
@apply text-
|
|
50
|
+
@apply text-text-primary transition-transform pointer-events-auto cursor-pointer size-6;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
&__content {
|
|
@@ -55,11 +55,11 @@ function handleIconClick() {
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
&__title {
|
|
58
|
-
@apply text-sm font-normal text-
|
|
58
|
+
@apply text-sm font-normal text-text-secondary mt-4;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
&__value {
|
|
62
|
-
@apply text-3xl font-semibold text-
|
|
62
|
+
@apply text-3xl font-semibold text-text-primary leading-9;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
</style>
|
|
@@ -106,10 +106,10 @@ function handleClick(event) {
|
|
|
106
106
|
</template>
|
|
107
107
|
<style lang="scss" scoped>
|
|
108
108
|
.rsui-radio-card {
|
|
109
|
-
@apply max-w-80 w-80 bg-
|
|
109
|
+
@apply max-w-80 w-80 bg-background-primary border border-border-secondary rounded-md shadow-sm outline-none select-none;
|
|
110
110
|
@apply relative cursor-pointer transition-all;
|
|
111
111
|
@apply flex flex-col gap-3 p-4;
|
|
112
|
-
@apply focus-visible:ring-4 focus-visible:ring-
|
|
112
|
+
@apply focus-visible:ring-4 focus-visible:ring-border-primary;
|
|
113
113
|
|
|
114
114
|
&--flexible {
|
|
115
115
|
@apply max-w-full w-full;
|
|
@@ -122,13 +122,13 @@ function handleClick(event) {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
&--disabled {
|
|
125
|
-
@apply focus-visible:ring-0 border-
|
|
126
|
-
@apply after:absolute after:content-[''] after:inset-0 after:bg-
|
|
125
|
+
@apply focus-visible:ring-0 border-border-secondary cursor-default;
|
|
126
|
+
@apply after:absolute after:content-[''] after:inset-0 after:bg-border-secondary;
|
|
127
127
|
@apply after:rounded-md after:opacity-65;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
&__title-row {
|
|
131
|
-
@apply relative text-base font-medium text-
|
|
131
|
+
@apply relative text-base font-medium text-text-primary line-clamp-2 min-h-6 pr-8;
|
|
132
132
|
|
|
133
133
|
// Radio button position
|
|
134
134
|
@apply after:absolute after:top-0 after:right-0;
|
|
@@ -137,10 +137,10 @@ function handleClick(event) {
|
|
|
137
137
|
// Radio button animation
|
|
138
138
|
@apply after:transition-all;
|
|
139
139
|
// Radio button decoration
|
|
140
|
-
@apply after:border after:border-
|
|
140
|
+
@apply after:border after:border-border-primary after:bg-background-primary;
|
|
141
141
|
// Radio button event
|
|
142
|
-
@apply group-hover/radio-card:after:border-
|
|
143
|
-
@apply group-focus-visible/radio-card:after:border-
|
|
142
|
+
@apply group-hover/radio-card:after:border-text-secondary;
|
|
143
|
+
@apply group-focus-visible/radio-card:after:border-text-secondary;
|
|
144
144
|
|
|
145
145
|
&--selected {
|
|
146
146
|
@apply after:border-6 after:border-primary-background;
|
|
@@ -153,14 +153,14 @@ function handleClick(event) {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
&--selected-disabled {
|
|
156
|
-
@apply after:border-6 after:border-
|
|
157
|
-
@apply group-hover/radio-card:after:border-
|
|
158
|
-
@apply group-focus-visible/radio-card:after:border-
|
|
156
|
+
@apply after:border-6 after:border-background-primary after:bg-border-primary;
|
|
157
|
+
@apply group-hover/radio-card:after:border-background-primary;
|
|
158
|
+
@apply group-focus-visible/radio-card:after:border-background-primary;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
&__content-row {
|
|
163
|
-
@apply text-sm font-normal text-
|
|
163
|
+
@apply text-sm font-normal text-text-secondary;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
&__meta-row {
|
|
@@ -5,6 +5,11 @@ import Pagination from '../Pagination/Pagination.vue'
|
|
|
5
5
|
import { useResponsiveWidth } from '../../helpers'
|
|
6
6
|
|
|
7
7
|
const props = defineProps({
|
|
8
|
+
variant: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: 'default',
|
|
11
|
+
validator: (value) => ['default', 'compact'].includes(value)
|
|
12
|
+
},
|
|
8
13
|
controlApplied: {
|
|
9
14
|
type: Boolean,
|
|
10
15
|
default: false
|
|
@@ -34,6 +39,7 @@ const { responsiveWidth } = useResponsiveWidth(cardGroupElement)
|
|
|
34
39
|
const cardGroupClasses = computed(() => [
|
|
35
40
|
'rsui-card-group',
|
|
36
41
|
{
|
|
42
|
+
'rsui-card-group--compact': props.variant === 'compact',
|
|
37
43
|
'rsui-card-group--2xs': responsiveWidth.value['2xs'],
|
|
38
44
|
'rsui-card-group--xs': responsiveWidth.value['xs'],
|
|
39
45
|
'rsui-card-group--sm': responsiveWidth.value['sm'],
|
|
@@ -156,8 +162,41 @@ const showNotFoundMessage = computed(() => !props.totalItems && props.controlApp
|
|
|
156
162
|
@apply gap-4 grid-cols-5;
|
|
157
163
|
}
|
|
158
164
|
}
|
|
165
|
+
|
|
166
|
+
&--compact {
|
|
167
|
+
.rsui-card-group__cards {
|
|
168
|
+
@apply gap-4 grid-cols-1;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
&--compact.rsui-card-group--xs {
|
|
173
|
+
.rsui-card-group__cards {
|
|
174
|
+
@apply gap-4 grid-cols-2;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
&--compact.rsui-card-group--sm {
|
|
179
|
+
.rsui-card-group__cards {
|
|
180
|
+
@apply gap-4 grid-cols-3;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
&--compact.rsui-card-group--md,
|
|
185
|
+
&--compact.rsui-card-group--lg,
|
|
186
|
+
&--compact.rsui-card-group--xl {
|
|
187
|
+
.rsui-card-group__cards {
|
|
188
|
+
@apply gap-4 grid-cols-4;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
&--compact.rsui-card-group--2xl,
|
|
193
|
+
&--compact.rsui-card-group--3xl {
|
|
194
|
+
.rsui-card-group__cards {
|
|
195
|
+
@apply gap-4 grid-cols-6;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
159
198
|
&__pagination {
|
|
160
199
|
@apply w-full flex items-center justify-center mb-4;
|
|
161
200
|
}
|
|
162
201
|
}
|
|
163
|
-
</style>
|
|
202
|
+
</style>
|
|
@@ -102,7 +102,7 @@ onUnmounted(() => document.removeEventListener('keydown', closeOnEscape))
|
|
|
102
102
|
}
|
|
103
103
|
&__container {
|
|
104
104
|
@apply hidden absolute z-50 mt-2 p-2 w-76 origin-top;
|
|
105
|
-
@apply rounded-md shadow-full-light bg-
|
|
105
|
+
@apply rounded-md shadow-full-light bg-background-primary;
|
|
106
106
|
@apply flex flex-col space-y-2;
|
|
107
107
|
&--open {
|
|
108
108
|
@apply block;
|
|
@@ -10,9 +10,9 @@ const emit = defineEmits(['click'])
|
|
|
10
10
|
</template>
|
|
11
11
|
<style lang="scss" scoped>
|
|
12
12
|
.rsui-dropdown-option {
|
|
13
|
-
@apply cursor-pointer p-4 bg-
|
|
13
|
+
@apply cursor-pointer p-4 bg-background-primary rounded-md text-base text-text-primary transition;
|
|
14
14
|
@apply w-full inline-flex items-center whitespace-nowrap will-change-transform gap-1.5;
|
|
15
|
-
@apply hover:bg-
|
|
15
|
+
@apply hover:bg-background-secondary;
|
|
16
16
|
|
|
17
17
|
:deep(svg) {
|
|
18
18
|
@apply size-6;
|
|
@@ -102,7 +102,7 @@ const emptyClass = computed(() => [
|
|
|
102
102
|
<style lang="scss" scoped>
|
|
103
103
|
.rsui-empty {
|
|
104
104
|
@apply w-full flex flex-col items-center justify-center gap-5;
|
|
105
|
-
@apply px-3 py-4 rounded-md text-
|
|
105
|
+
@apply px-3 py-4 rounded-md text-text-primary;
|
|
106
106
|
&--wide {
|
|
107
107
|
.rsui-empty__image {
|
|
108
108
|
:deep(svg) {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
.rsui-form-slot {
|
|
38
38
|
@apply min-w-80 sm:min-w-96 sm:w-112;
|
|
39
39
|
@apply flex flex-col sm:justify-center items-center;
|
|
40
|
-
@apply text-base text-
|
|
40
|
+
@apply text-base text-text-primary;
|
|
41
41
|
|
|
42
42
|
&__image {
|
|
43
43
|
@apply mb-8;
|
|
@@ -47,16 +47,16 @@
|
|
|
47
47
|
@apply w-full relative flex justify-center mb-2;
|
|
48
48
|
|
|
49
49
|
&-line {
|
|
50
|
-
@apply after:content-[''] after:absolute after:top-1/2 after:left-0 after:bg-
|
|
50
|
+
@apply after:content-[''] after:absolute after:top-1/2 after:left-0 after:bg-border-secondary after:h-px after:w-full;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
&-or {
|
|
54
|
-
@apply relative z-1 bg-
|
|
54
|
+
@apply relative z-1 bg-background-primary px-6 text-text-primary;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
&__content {
|
|
59
|
-
@apply w-full sm:max-w-md px-10 xs:px-12 md:px-16 py-10 bg-
|
|
59
|
+
@apply w-full sm:max-w-md px-10 xs:px-12 md:px-16 py-10 bg-background-primary shadow-md overflow-hidden rounded-lg;
|
|
60
60
|
& > * {
|
|
61
61
|
@apply first:mt-0 mt-4;
|
|
62
62
|
}
|
|
@@ -63,19 +63,19 @@ function check(event) {
|
|
|
63
63
|
&__label {
|
|
64
64
|
@apply ml-2 font-normal;
|
|
65
65
|
&--required {
|
|
66
|
-
@apply after:content-['*'] after:text-
|
|
66
|
+
@apply after:content-['*'] after:text-text-error;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
&__check {
|
|
70
|
-
@apply size-6 shrink-0 relative bg-
|
|
71
|
-
@apply has-[:disabled]:text-
|
|
70
|
+
@apply size-6 shrink-0 relative bg-background-primary rounded-md cursor-pointer;
|
|
71
|
+
@apply has-[:disabled]:text-text-disabled has-[:disabled]:cursor-default;
|
|
72
72
|
|
|
73
73
|
input[type="checkbox"] {
|
|
74
74
|
@apply appearance-none absolute inset-0 z-0 rounded-md transition focus:outline-none cursor-pointer;
|
|
75
|
-
@apply w-full h-full text-
|
|
76
|
-
@apply focus:ring focus:ring-
|
|
77
|
-
@apply invalid:border-
|
|
78
|
-
@apply disabled:text-
|
|
75
|
+
@apply w-full h-full text-text-primary border border-border-secondary text-transparent bg-none;
|
|
76
|
+
@apply focus:ring focus:ring-border-primary focus:border-border-primary;
|
|
77
|
+
@apply invalid:border-border-error invalid:ring-0;
|
|
78
|
+
@apply disabled:text-text-disabled disabled:bg-background-disabled disabled:cursor-default;
|
|
79
79
|
}
|
|
80
80
|
svg {
|
|
81
81
|
@apply size-full relative z-1;
|
|
@@ -487,10 +487,10 @@ defineExpose({
|
|
|
487
487
|
@apply relative flex flex-nowrap overflow-hidden;
|
|
488
488
|
@apply text-base transition;
|
|
489
489
|
@apply w-full border rounded-lg ring-0;
|
|
490
|
-
@apply bg-
|
|
491
|
-
@apply has-[:focus]:border-
|
|
492
|
-
@apply has-[:user-invalid]:border-
|
|
493
|
-
@apply has-[:disabled]:text-
|
|
490
|
+
@apply bg-background-primary placeholder-text-secondary border-border-primary;
|
|
491
|
+
@apply has-[:focus]:border-border-primary;
|
|
492
|
+
@apply has-[:user-invalid]:border-border-error has-[:user-invalid]:ring-0;
|
|
493
|
+
@apply has-[:disabled]:text-text-disabled has-[:disabled]:bg-background-disabled has-[:disabled]:border-border-disabled has-[:disabled]:ring-0;
|
|
494
494
|
}
|
|
495
495
|
|
|
496
496
|
&__prefix {
|
|
@@ -505,13 +505,13 @@ defineExpose({
|
|
|
505
505
|
|
|
506
506
|
&__placeholder {
|
|
507
507
|
@apply absolute inset-0 flex items-center px-4 pr-12 pointer-events-none;
|
|
508
|
-
@apply text-
|
|
508
|
+
@apply text-text-secondary select-none;
|
|
509
509
|
}
|
|
510
510
|
|
|
511
511
|
&__icon {
|
|
512
512
|
@apply absolute top-0 right-3 bottom-0 flex items-center justify-center;
|
|
513
|
-
@apply text-
|
|
514
|
-
@apply hover:text-
|
|
513
|
+
@apply text-text-primary h-full w-8 cursor-pointer;
|
|
514
|
+
@apply hover:text-text-secondary transition-colors;
|
|
515
515
|
&--open {
|
|
516
516
|
svg {
|
|
517
517
|
@apply -rotate-180;
|
|
@@ -524,7 +524,7 @@ defineExpose({
|
|
|
524
524
|
|
|
525
525
|
&__options {
|
|
526
526
|
@apply hidden absolute top-0 w-full z-50;
|
|
527
|
-
@apply bg-
|
|
527
|
+
@apply bg-background-primary p-2 mt-2 rounded-lg shadow-full-light;
|
|
528
528
|
@apply max-h-[80vh] sm:max-h-[60vh] overflow-y-auto;
|
|
529
529
|
&--open {
|
|
530
530
|
@apply block;
|
|
@@ -533,15 +533,15 @@ defineExpose({
|
|
|
533
533
|
|
|
534
534
|
&__option {
|
|
535
535
|
@apply flex flex-nowrap items-center justify-between cursor-pointer px-4 py-3 rounded-lg;
|
|
536
|
-
@apply bg-
|
|
536
|
+
@apply bg-background-primary hover:bg-background-secondary text-text-primary transition;
|
|
537
537
|
&--disabled {
|
|
538
|
-
@apply opacity-50 hover:bg-
|
|
538
|
+
@apply opacity-50 hover:bg-background-primary cursor-auto;
|
|
539
539
|
}
|
|
540
540
|
&--error {
|
|
541
|
-
@apply text-
|
|
541
|
+
@apply text-text-error;
|
|
542
542
|
}
|
|
543
543
|
&--hint {
|
|
544
|
-
@apply text-
|
|
544
|
+
@apply text-text-secondary italic;
|
|
545
545
|
}
|
|
546
546
|
&-label {
|
|
547
547
|
@apply text-base truncate;
|
|
@@ -555,14 +555,14 @@ defineExpose({
|
|
|
555
555
|
}
|
|
556
556
|
|
|
557
557
|
&__spinner {
|
|
558
|
-
@apply size-4 border-2 border-
|
|
558
|
+
@apply size-4 border-2 border-border-primary border-t-text-secondary rounded-full animate-spin;
|
|
559
559
|
}
|
|
560
560
|
|
|
561
561
|
input[type='text'] {
|
|
562
562
|
@apply flex-1;
|
|
563
|
-
@apply text-base text-
|
|
564
|
-
@apply bg-
|
|
565
|
-
@apply disabled:text-
|
|
563
|
+
@apply text-base text-text-primary transition py-3 px-4 pr-12 outline-none focus:outline-none;
|
|
564
|
+
@apply bg-background-primary placeholder-text-secondary;
|
|
565
|
+
@apply disabled:text-text-disabled disabled:bg-background-disabled disabled:border-border-disabled disabled:ring-0;
|
|
566
566
|
}
|
|
567
567
|
}
|
|
568
568
|
</style>
|
|
@@ -72,11 +72,11 @@ function setValue(value) {
|
|
|
72
72
|
@apply appearance-none;
|
|
73
73
|
}
|
|
74
74
|
&__control {
|
|
75
|
-
@apply shrink-0 size-6 border border-
|
|
75
|
+
@apply shrink-0 size-6 border border-border-primary rounded-full bg-background-primary;
|
|
76
76
|
&--active {
|
|
77
77
|
@apply bg-primary-background border-primary-background flex items-center justify-center;
|
|
78
78
|
div {
|
|
79
|
-
@apply size-3 bg-
|
|
79
|
+
@apply size-3 bg-background-primary rounded-full;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -242,7 +242,7 @@ defineExpose({
|
|
|
242
242
|
|
|
243
243
|
&__options {
|
|
244
244
|
@apply hidden absolute top-0 w-full z-50;
|
|
245
|
-
@apply bg-
|
|
245
|
+
@apply bg-background-primary p-2 mt-2 rounded-lg shadow-full-light;
|
|
246
246
|
@apply max-h-[80vh] sm:max-h-[60vh] overflow-y-auto;
|
|
247
247
|
&--open {
|
|
248
248
|
@apply block;
|
|
@@ -251,9 +251,9 @@ defineExpose({
|
|
|
251
251
|
|
|
252
252
|
&__option {
|
|
253
253
|
@apply flex flex-nowrap items-center justify-between cursor-pointer px-4 py-3 rounded-lg;
|
|
254
|
-
@apply bg-
|
|
254
|
+
@apply bg-background-primary hover:bg-background-secondary text-text-primary transition;
|
|
255
255
|
&--disabled {
|
|
256
|
-
@apply opacity-50 hover:bg-
|
|
256
|
+
@apply opacity-50 hover:bg-background-primary cursor-auto;
|
|
257
257
|
}
|
|
258
258
|
&-label {
|
|
259
259
|
@apply text-base truncate;
|
|
@@ -268,8 +268,8 @@ defineExpose({
|
|
|
268
268
|
|
|
269
269
|
&__icon {
|
|
270
270
|
@apply absolute top-0 right-5 bottom-0 flex items-center justify-center;
|
|
271
|
-
@apply text-
|
|
272
|
-
@apply peer-disabled:text-
|
|
271
|
+
@apply text-text-primary h-full w-8 pointer-events-none;
|
|
272
|
+
@apply peer-disabled:text-text-disabled;
|
|
273
273
|
&--open {
|
|
274
274
|
svg {
|
|
275
275
|
@apply -rotate-180;
|
|
@@ -284,10 +284,10 @@ defineExpose({
|
|
|
284
284
|
@apply block w-full border ring-0 bg-none cursor-pointer appearance-none transition;
|
|
285
285
|
@apply py-3 pl-5 pr-14 truncate;
|
|
286
286
|
@apply text-base rounded-lg outline-none focus:outline-none;
|
|
287
|
-
@apply bg-
|
|
288
|
-
@apply focus:border-
|
|
289
|
-
@apply invalid:border-
|
|
290
|
-
@apply disabled:text-
|
|
287
|
+
@apply bg-background-primary text-text-primary placeholder-text-secondary border-border-primary;
|
|
288
|
+
@apply focus:border-border-primary;
|
|
289
|
+
@apply invalid:border-border-error invalid:ring-0;
|
|
290
|
+
@apply disabled:text-text-disabled disabled:bg-background-disabled disabled:border-border-disabled disabled:ring-0 disabled:cursor-default;
|
|
291
291
|
}
|
|
292
292
|
|
|
293
293
|
option {
|