@redseed/redseed-ui-vue3 6.4.3 → 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.
Files changed (54) hide show
  1. package/docs/04-card-components.md +10 -0
  2. package/package.json +4 -4
  3. package/src/components/ActivityFeeds/ActivityFeed.vue +1 -1
  4. package/src/components/ActivityFeeds/FeedItem.vue +8 -8
  5. package/src/components/Avatar/AvatarText.vue +1 -1
  6. package/src/components/Breadcrumbs/Breadcrumbs.vue +3 -3
  7. package/src/components/Button/ButtonSlot.vue +6 -6
  8. package/src/components/Button/ButtonTertiary.vue +1 -1
  9. package/src/components/Card/ButtonCard.vue +11 -11
  10. package/src/components/Card/MetricCard.vue +3 -3
  11. package/src/components/Card/RadioCard.vue +12 -12
  12. package/src/components/CardGroup/CardGroup.vue +40 -1
  13. package/src/components/DropdownMenu/DropdownMenu.vue +1 -1
  14. package/src/components/DropdownMenu/DropdownOption.vue +2 -2
  15. package/src/components/Empty/Empty.vue +1 -1
  16. package/src/components/Form/FormFieldset.vue +1 -1
  17. package/src/components/Form/FormSlot.vue +4 -4
  18. package/src/components/FormField/FormFieldCheckbox.vue +7 -7
  19. package/src/components/FormField/FormFieldCombobox.vue +16 -16
  20. package/src/components/FormField/FormFieldPasswordToggle.vue +1 -1
  21. package/src/components/FormField/FormFieldRadioGroup.vue +2 -2
  22. package/src/components/FormField/FormFieldSearch.vue +1 -1
  23. package/src/components/FormField/FormFieldSelect.vue +9 -9
  24. package/src/components/FormField/FormFieldSlot.vue +4 -4
  25. package/src/components/FormField/FormFieldText.vue +7 -7
  26. package/src/components/FormField/FormFieldTextSuffix.vue +1 -1
  27. package/src/components/FormField/FormFieldTextarea.vue +4 -4
  28. package/src/components/FormField/FormFieldUploaderWrapper.vue +7 -7
  29. package/src/components/Image/Image.vue +4 -4
  30. package/src/components/Layouts/HeroSection.vue +1 -1
  31. package/src/components/Layouts/SectionFooter.vue +1 -1
  32. package/src/components/Layouts/SectionHeader.vue +1 -1
  33. package/src/components/Link/LinkSlot.vue +1 -1
  34. package/src/components/LinkedList/LinkedListItem.vue +6 -6
  35. package/src/components/List/ListItem.vue +5 -5
  36. package/src/components/Loader/Loader.vue +3 -3
  37. package/src/components/MessageBox/MessageBox.vue +2 -2
  38. package/src/components/Modal/Modal.vue +5 -5
  39. package/src/components/Pagination/Pagination.vue +1 -1
  40. package/src/components/Pagination/PaginationItem.vue +4 -4
  41. package/src/components/Pagination/RecordCount.vue +1 -1
  42. package/src/components/Progress/ProgressCircle.vue +2 -2
  43. package/src/components/Progress/ProgressTrackerStep.vue +2 -2
  44. package/src/components/Social/SignInWithGoogle.vue +5 -8
  45. package/src/components/Social/SignUpWithGoogle.vue +5 -8
  46. package/src/components/Sorting/Sorting.vue +1 -1
  47. package/src/components/Switcher/Switcher.vue +1 -1
  48. package/src/components/Switcher/SwitcherItem.vue +1 -1
  49. package/src/components/Table/Table.vue +4 -4
  50. package/src/components/Table/Td.vue +1 -1
  51. package/src/components/Table/TdUser.vue +3 -3
  52. package/src/components/Table/Th.vue +1 -1
  53. package/src/components/Table/Tr.vue +2 -2
  54. 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redseed/redseed-ui-vue3",
3
- "version": "6.4.3",
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.6.0",
16
- "@vueuse/core": "^13.6.0",
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.18"
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-rsui-grey-400;
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-rsui-grey-100 border border-rsui-grey-200;
126
+ @apply bg-background-disabled border border-border-secondary;
127
127
 
128
128
  :deep(> svg) {
129
- @apply size-7 text-rsui-grey-500;
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-rsui-grey-300 border-2 border-white;
139
+ @apply size-4 rounded-full bg-border-primary border-2 border-background-primary;
140
140
 
141
141
  &--online {
142
- @apply bg-rsui-success-500;
142
+ @apply bg-text-success;
143
143
  }
144
144
 
145
145
  &--busy {
146
- @apply bg-rsui-error-500;
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-rsui-grey-800;
163
+ @apply shrink-0 text-sm font-medium text-text-primary;
164
164
  }
165
165
 
166
166
  &__heading-subtext {
167
- @apply text-xs text-rsui-grey-700;
167
+ @apply text-xs text-text-secondary;
168
168
  }
169
169
 
170
170
  &__supporting-text {
171
- @apply text-sm font-medium text-rsui-grey-700;
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-rsui-grey-100 flex items-center justify-center text-rsui-grey-500 border border-rsui-grey-300 font-semibold;
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-rsui-grey-400 leading-6;
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-rsui-grey-400;
43
+ @apply after:w-0.5 after:h-full after:text-text-disabled;
44
44
  &--action {
45
- @apply cursor-pointer hover:text-rsui-grey-900 transition-colors duration-200;
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-white text-rsui-grey-400 ring-0 ring-rsui-grey-400 border-rsui-grey-400;
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-rsui-grey-100;
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-rsui-grey-400 focus-visible:border-rsui-grey-400;
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-white;
107
+ @apply active:ring-0 active:bg-background-primary;
108
108
  // default disabled state
109
- @apply disabled:bg-rsui-grey-100 disabled:border-transparent disabled:text-rsui-grey-200;
110
- @apply disabled:active:ring-0 disabled:active:bg-rsui-grey-100 disabled:active:border-transparent;
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-rsui-grey-400;
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-rsui-grey-900;
51
+ @apply hover:shadow-none hover:border-text-primary;
52
52
  &--disabled {
53
- @apply hover:border-rsui-grey-400;
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-rsui-grey-700 text-rsui-grey-700;
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-rsui-grey-800 font-semibold line-clamp-1;
74
- @apply group-hover/button-card:text-rsui-grey-900;
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-rsui-grey-400;
77
- @apply group-hover/button-card:text-rsui-grey-400;
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-rsui-grey-700 line-clamp-1;
82
- @apply group-hover/button-card:text-rsui-grey-800;
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-rsui-grey-400;
85
- @apply group-hover/button-card:text-rsui-grey-400;
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-rsui-grey-800 transition-transform pointer-events-auto cursor-pointer size-6;
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-rsui-grey-700 mt-4;
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-rsui-grey-900 leading-9;
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-white border border-rsui-grey-200 rounded-md shadow-sm outline-none select-none;
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-rsui-grey-400;
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-rsui-grey-200 cursor-default;
126
- @apply after:absolute after:content-[''] after:inset-0 after:bg-rsui-grey-200;
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-rsui-grey-900 line-clamp-2 min-h-6 pr-8;
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-rsui-grey-400 after:bg-white;
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-rsui-grey-700;
143
- @apply group-focus-visible/radio-card:after:border-rsui-grey-700;
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-white after:bg-rsui-grey-400;
157
- @apply group-hover/radio-card:after:border-white;
158
- @apply group-focus-visible/radio-card:after:border-white;
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-rsui-grey-700;
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-white;
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-white rounded-md text-base text-rsui-grey-900 transition;
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-rsui-grey-200;
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-rsui-grey-900;
105
+ @apply px-3 py-4 rounded-md text-text-primary;
106
106
  &--wide {
107
107
  .rsui-empty__image {
108
108
  :deep(svg) {
@@ -20,7 +20,7 @@ defineOptions({
20
20
  fieldset {
21
21
  }
22
22
  legend {
23
- @apply text-base text-rsui-grey-900 font-semibold;
23
+ @apply text-base text-text-primary font-semibold;
24
24
  }
25
25
  &__fields {
26
26
  @apply mt-3 px-2;
@@ -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-rsui-grey-900;
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-rsui-grey-200 after:h-px after:w-full;
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-white px-6 text-rsui-grey-900;
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-white shadow-md overflow-hidden rounded-lg;
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-rsui-error-500;
66
+ @apply after:content-['*'] after:text-text-error;
67
67
  }
68
68
  }
69
69
  &__check {
70
- @apply size-6 shrink-0 relative bg-white rounded-md cursor-pointer;
71
- @apply has-[:disabled]:text-rsui-grey-400 has-[:disabled]:cursor-default;
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-rsui-grey-900 border border-rsui-grey-200 text-transparent bg-none;
76
- @apply focus:ring focus:ring-rsui-grey-400 focus:border-rsui-grey-400;
77
- @apply invalid:border-rsui-error-500 invalid:ring-0;
78
- @apply disabled:text-rsui-grey-400 disabled:bg-rsui-grey-200 disabled:cursor-default;
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-white placeholder-rsui-grey-500 border-rsui-grey-500;
491
- @apply has-[:focus]:border-rsui-grey-500;
492
- @apply has-[:user-invalid]:border-rsui-error-500 has-[:user-invalid]:ring-0;
493
- @apply has-[:disabled]:text-rsui-grey-500 has-[:disabled]:bg-rsui-grey-100 has-[:disabled]:border-rsui-grey-200 has-[:disabled]:ring-0;
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-rsui-grey-500 select-none;
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-rsui-grey-900 h-full w-8 cursor-pointer;
514
- @apply hover:text-rsui-grey-700 transition-colors;
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-white p-2 mt-2 rounded-lg shadow-full-light;
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-white hover:bg-rsui-grey-200 text-rsui-grey-900 transition;
536
+ @apply bg-background-primary hover:bg-background-secondary text-text-primary transition;
537
537
  &--disabled {
538
- @apply opacity-50 hover:bg-white cursor-auto;
538
+ @apply opacity-50 hover:bg-background-primary cursor-auto;
539
539
  }
540
540
  &--error {
541
- @apply text-rsui-error-500;
541
+ @apply text-text-error;
542
542
  }
543
543
  &--hint {
544
- @apply text-rsui-grey-600 italic;
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-rsui-grey-300 border-t-rsui-grey-600 rounded-full animate-spin;
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-rsui-grey-900 transition py-3 px-4 pr-12 outline-none focus:outline-none;
564
- @apply bg-white placeholder-rsui-grey-500;
565
- @apply disabled:text-rsui-grey-500 disabled:bg-rsui-grey-100 disabled:border-rsui-grey-200 disabled:ring-0;
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>
@@ -51,7 +51,7 @@ defineExpose({
51
51
  <style lang="scss" scoped>
52
52
  .rsui-form-field-password {
53
53
  &__icon {
54
- @apply size-5 text-rsui-grey-500;
54
+ @apply size-5 text-text-secondary;
55
55
  }
56
56
  // :deep(.rsui-form-field-text__group) {
57
57
  // input {
@@ -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-gray-400 rounded-full bg-white;
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-white rounded-full;
79
+ @apply size-3 bg-background-primary rounded-full;
80
80
  }
81
81
  }
82
82
  }
@@ -35,7 +35,7 @@ defineExpose({
35
35
  <style lang="scss" scoped>
36
36
  .rsui-form-field-search {
37
37
  &__icon {
38
- @apply size-5 text-rsui-grey-400;
38
+ @apply size-5 text-text-secondary;
39
39
  }
40
40
  :deep(.rsui-form-field-text__prefix) {
41
41
  @apply pr-0;
@@ -242,7 +242,7 @@ defineExpose({
242
242
 
243
243
  &__options {
244
244
  @apply hidden absolute top-0 w-full z-50;
245
- @apply bg-white p-2 mt-2 rounded-lg shadow-full-light;
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-white hover:bg-rsui-grey-200 text-rsui-grey-900 transition;
254
+ @apply bg-background-primary hover:bg-background-secondary text-text-primary transition;
255
255
  &--disabled {
256
- @apply opacity-50 hover:bg-white cursor-auto;
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-rsui-grey-900 h-full w-8 pointer-events-none;
272
- @apply peer-disabled:text-rsui-grey-500;
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-white text-rsui-grey-900 placeholder-rsui-grey-500 border-rsui-grey-500;
288
- @apply focus:border-rsui-grey-500;
289
- @apply invalid:border-rsui-error-500 invalid:ring-0;
290
- @apply disabled:text-rsui-grey-500 disabled:bg-rsui-grey-100 disabled:border-rsui-grey-200 disabled:ring-0 disabled:cursor-default;
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 {
@@ -77,10 +77,10 @@ const formFieldSlotLabelClass = computed(() => [
77
77
 
78
78
  &__label {
79
79
  &--required {
80
- @apply after:content-['*'] after:text-rsui-error-500 after:ml-1;
80
+ @apply after:content-['*'] after:text-text-error after:ml-1;
81
81
  }
82
82
  label {
83
- @apply font-medium text-sm text-rsui-grey-800;
83
+ @apply font-medium text-sm text-text-primary;
84
84
  }
85
85
  }
86
86
 
@@ -89,11 +89,11 @@ const formFieldSlotLabelClass = computed(() => [
89
89
  }
90
90
 
91
91
  &__help {
92
- @apply text-xs text-rsui-grey-500;
92
+ @apply text-xs text-text-secondary;
93
93
  }
94
94
 
95
95
  &__error {
96
- @apply text-sm text-rsui-error-500;
96
+ @apply text-sm text-text-error;
97
97
  }
98
98
  }
99
99
  </style>