@redseed/redseed-ui-vue3 3.1.0 → 4.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.
Files changed (57) hide show
  1. package/package.json +3 -3
  2. package/src/components/Avatar/AvatarText.vue +1 -1
  3. package/src/components/Badge/Badge.vue +4 -12
  4. package/src/components/Badge/index.js +0 -2
  5. package/src/components/Breadcrumbs/Breadcrumbs.vue +3 -3
  6. package/src/components/Button/ButtonPrimary.vue +9 -3
  7. package/src/components/Button/ButtonSecondary.vue +9 -2
  8. package/src/components/Button/ButtonSecondaryBrand.vue +23 -0
  9. package/src/components/Button/ButtonSecondaryBrandFull.vue +10 -0
  10. package/src/components/Button/ButtonSlot.vue +77 -63
  11. package/src/components/Button/ButtonTertiary.vue +9 -2
  12. package/src/components/Button/index.js +4 -22
  13. package/src/components/ButtonGroup/ButtonGroupItem.vue +3 -3
  14. package/src/components/Card/RadioCard.vue +12 -12
  15. package/src/components/CardGroup/CardGroup.vue +10 -2
  16. package/src/components/DropdownMenu/DropdownOption.vue +1 -1
  17. package/src/components/Empty/Empty.vue +1 -1
  18. package/src/components/Form/FormFieldset.vue +1 -1
  19. package/src/components/Form/FormSlot.vue +2 -2
  20. package/src/components/FormField/FormFieldCheckbox.vue +6 -6
  21. package/src/components/FormField/FormFieldPasswordToggle.vue +1 -1
  22. package/src/components/FormField/FormFieldRadioGroup.vue +1 -1
  23. package/src/components/FormField/FormFieldSearch.vue +1 -1
  24. package/src/components/FormField/FormFieldSelect.vue +6 -6
  25. package/src/components/FormField/FormFieldSlot.vue +4 -4
  26. package/src/components/FormField/FormFieldText.vue +7 -7
  27. package/src/components/FormField/FormFieldTextSuffix.vue +1 -1
  28. package/src/components/FormField/FormFieldTextarea.vue +4 -4
  29. package/src/components/FormField/FormFieldUploaderWrapper.vue +5 -5
  30. package/src/components/HTML/BodyText.vue +2 -2
  31. package/src/components/Image/Image.vue +2 -2
  32. package/src/components/Link/LinkPrimary.vue +1 -1
  33. package/src/components/LinkedList/LinkedListItem.vue +5 -5
  34. package/src/components/Loader/Loader.vue +4 -23
  35. package/src/components/MessageBox/MessageBox.vue +1 -1
  36. package/src/components/MetaInfo/MetaInfo.vue +3 -3
  37. package/src/components/PageHeading/PageHeading.vue +67 -66
  38. package/src/components/Pagination/PaginationItem.vue +2 -2
  39. package/src/components/Pagination/RecordCount.vue +1 -1
  40. package/src/components/Progress/ProgressCircle.vue +2 -2
  41. package/src/components/Progress/ProgressTrackerStep.vue +3 -3
  42. package/src/components/SectionHeading/SectionHeading.vue +1 -1
  43. package/src/components/Sorting/Sorting.vue +2 -2
  44. package/src/components/Switcher/Switcher.vue +1 -1
  45. package/src/components/Switcher/SwitcherItem.vue +1 -1
  46. package/src/components/Toggle/Toggle.vue +6 -6
  47. package/src/components/Badge/BadgeDanger.vue +0 -10
  48. package/src/components/Button/ButtonDanger.vue +0 -16
  49. package/src/components/Button/ButtonDangerFull.vue +0 -10
  50. package/src/components/Button/ButtonDangerFullRounded.vue +0 -10
  51. package/src/components/Button/ButtonDangerRounded.vue +0 -10
  52. package/src/components/Button/ButtonPrimaryFullRounded.vue +0 -10
  53. package/src/components/Button/ButtonPrimaryRounded.vue +0 -10
  54. package/src/components/Button/ButtonSecondaryFullRounded.vue +0 -10
  55. package/src/components/Button/ButtonSecondaryRounded.vue +0 -10
  56. package/src/components/Button/ButtonTertiaryFullRounded.vue +0 -10
  57. package/src/components/Button/ButtonTertiaryRounded.vue +0 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redseed/redseed-ui-vue3",
3
- "version": "3.1.0",
3
+ "version": "4.0.0",
4
4
  "description": "RedSeed UI Vue 3 components",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -11,8 +11,8 @@
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
13
  "@heroicons/vue": "^2.2.0",
14
- "@vueuse/components": "^12.3.0",
15
- "@vueuse/core": "^12.3.0",
14
+ "@vueuse/components": "^12.8.2",
15
+ "@vueuse/core": "^12.7.0",
16
16
  "lodash": "^4.17.21",
17
17
  "lottie-web": "^5.12.2",
18
18
  "vue": "^3.5.13"
@@ -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-gray-200 flex items-center justify-center text-gray-500;
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;
11
11
  }
12
12
  </style>
@@ -26,10 +26,6 @@ const props = defineProps({
26
26
  type: Boolean,
27
27
  default: false,
28
28
  },
29
- danger: {
30
- type: Boolean,
31
- default: false,
32
- },
33
29
  })
34
30
 
35
31
  const defaultSize = computed(() => !props.sm && !props.md)
@@ -43,7 +39,6 @@ const badgeClass = computed(() => [
43
39
  'rsui-badge--info': props.info,
44
40
  'rsui-badge--success': props.success,
45
41
  'rsui-badge--warning': props.warning,
46
- 'rsui-badge--danger': props.danger,
47
42
  },
48
43
  ])
49
44
 
@@ -72,19 +67,16 @@ defineExpose({
72
67
  @apply px-2 py-2;
73
68
  }
74
69
  &--neutral {
75
- @apply text-rsui-default bg-rsui-grey-200;
70
+ @apply text-rsui-grey-900 bg-rsui-grey-200;
76
71
  }
77
72
  &--info {
78
- @apply text-info-content bg-info;
73
+ @apply text-white bg-rsui-info-500;
79
74
  }
80
75
  &--success {
81
- @apply text-success-content bg-success;
76
+ @apply text-white bg-rsui-success-500;
82
77
  }
83
78
  &--warning {
84
- @apply text-warning-content bg-warning;
85
- }
86
- &--danger {
87
- @apply text-danger-content bg-danger;
79
+ @apply text-white bg-rsui-warning-500;
88
80
  }
89
81
 
90
82
  :deep(svg) {
@@ -1,5 +1,4 @@
1
1
  import Badge from './Badge.vue'
2
- import BadgeDanger from './BadgeDanger.vue'
3
2
  import BadgeInfo from './BadgeInfo.vue'
4
3
  import BadgeNeutral from './BadgeNeutral.vue'
5
4
  import BadgeSuccess from './BadgeSuccess.vue'
@@ -8,7 +7,6 @@ import BadgeGroup from './BadgeGroup.vue'
8
7
 
9
8
  export {
10
9
  Badge,
11
- BadgeDanger,
12
10
  BadgeInfo,
13
11
  BadgeNeutral,
14
12
  BadgeSuccess,
@@ -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-light leading-6;
41
+ @apply text-sm text-rsui-grey-400 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-light;
43
+ @apply after:w-0.5 after:h-full after:text-rsui-grey-400;
44
44
  &--action {
45
- @apply cursor-pointer hover:text-rsui-default transition-colors duration-200;
45
+ @apply cursor-pointer hover:text-rsui-grey-900 transition-colors duration-200;
46
46
  }
47
47
  }
48
48
  }
@@ -1,5 +1,4 @@
1
1
  <script setup>
2
- import { computed } from 'vue'
3
2
  import ButtonSlot from './ButtonSlot.vue'
4
3
  </script>
5
4
  <template>
@@ -10,8 +9,15 @@ import ButtonSlot from './ButtonSlot.vue'
10
9
  <style lang="scss" scoped>
11
10
  .rsui-button-primary {
12
11
  // default colors
13
- @apply bg-primary text-primary-content border-primary;
12
+ @apply text-primary-foreground bg-primary-background border-primary-background;
13
+ // default hover state
14
+ @apply hover:text-primary-foreground-hover hover:bg-primary-background-hover hover:border-primary-background-hover;
15
+ // default focus state
16
+ @apply focus-visible:ring-primary-background focus-visible:border-primary-background;
14
17
  // default active state
15
- @apply active:border-primary active:bg-primary;
18
+ @apply active:bg-primary-background active:border-primary-background;
19
+ // default disabled state
20
+ @apply disabled:bg-rsui-grey-200 disabled:border-rsui-grey-200 disabled:text-rsui-grey-400;
21
+ @apply disabled:active:bg-rsui-grey-200 disabled:active:border-rsui-grey-200;
16
22
  }
17
23
  </style>
@@ -9,8 +9,15 @@ import ButtonSlot from './ButtonSlot.vue'
9
9
  <style lang="scss" scoped>
10
10
  .rsui-button-secondary {
11
11
  // default colors
12
- @apply bg-secondary text-secondary-content border-secondary;
12
+ @apply text-rsui-grey-800 bg-white border-rsui-grey-700;
13
+ // default hover state
14
+ @apply hover:text-rsui-grey-900 hover:bg-white hover:border-rsui-grey-900;
15
+ // default focus state
16
+ @apply focus-visible:ring-rsui-grey-700 focus-visible:border-rsui-grey-700;
13
17
  // default active state
14
- @apply active:border-secondary active:bg-secondary;
18
+ @apply active:bg-white active:border-rsui-grey-700;
19
+ // default disabled state
20
+ @apply disabled:bg-white disabled:border-rsui-grey-100 disabled:text-rsui-grey-400;
21
+ @apply disabled:active:bg-white disabled:active:border-rsui-grey-100;
15
22
  }
16
23
  </style>
@@ -0,0 +1,23 @@
1
+ <script setup>
2
+ import ButtonSlot from './ButtonSlot.vue'
3
+ </script>
4
+ <template>
5
+ <ButtonSlot class="rsui-button-secondary-brand">
6
+ <slot></slot>
7
+ </ButtonSlot>
8
+ </template>
9
+ <style lang="scss" scoped>
10
+ .rsui-button-secondary-brand {
11
+ // default colors
12
+ @apply text-primary-background bg-white border-primary-background;
13
+ // default hover state
14
+ @apply hover:text-primary-background-hover hover:bg-white hover:border-primary-background-hover;
15
+ // default focus state
16
+ @apply focus-visible:ring-primary-background focus-visible:border-primary-background;
17
+ // default active state
18
+ @apply active:bg-white active:border-primary-background;
19
+ // default disabled state
20
+ @apply disabled:bg-white disabled:border-rsui-grey-100 disabled:text-rsui-grey-400;
21
+ @apply disabled:active:bg-white disabled:active:border-rsui-grey-100;
22
+ }
23
+ </style>
@@ -0,0 +1,10 @@
1
+ <script setup>
2
+ import ButtonSecondaryBrand from './ButtonSecondaryBrand.vue'
3
+ </script>
4
+ <template>
5
+ <ButtonSecondaryBrand full>
6
+ <slot></slot>
7
+ </ButtonSecondaryBrand>
8
+ </template>
9
+ <style lang="scss" scoped>
10
+ </style>
@@ -1,15 +1,7 @@
1
1
  <script setup>
2
2
  import { ref, computed } from 'vue'
3
3
 
4
- defineOptions({
5
- inheritAttrs: false,
6
- })
7
-
8
4
  const props = defineProps({
9
- xs: {
10
- type: Boolean,
11
- default: false,
12
- },
13
5
  sm: {
14
6
  type: Boolean,
15
7
  default: false,
@@ -22,15 +14,15 @@ const props = defineProps({
22
14
  type: Boolean,
23
15
  default: false,
24
16
  },
25
- full: {
17
+ xl: {
26
18
  type: Boolean,
27
19
  default: false,
28
20
  },
29
- rounded: {
21
+ '2xl': {
30
22
  type: Boolean,
31
23
  default: false,
32
24
  },
33
- submit: {
25
+ full: {
34
26
  type: Boolean,
35
27
  default: false,
36
28
  },
@@ -38,41 +30,60 @@ const props = defineProps({
38
30
 
39
31
  defineEmits(['click'])
40
32
 
41
- const type = computed(() => props.submit ? 'submit' : 'button')
33
+ // button element ref
34
+ const buttonElementRef = ref(null)
42
35
 
43
- const buttonElement = ref(null)
36
+ // check if the button is an icon only button
37
+ const iconOnly = computed(() => buttonElementRef.value && !buttonElementRef.value.textContent)
44
38
 
45
- const iconOnly = computed(() => buttonElement.value && !buttonElement.value.textContent)
39
+ // button size values
40
+ const sizes = {
41
+ sm: 'sm',
42
+ md: 'md',
43
+ lg: 'lg',
44
+ xl: 'xl',
45
+ '2xl': '2xl',
46
+ }
46
47
 
47
- const defaultSize = computed(() => !props.xs && !props.sm && !props.md && !props.lg)
48
+ // computed button size
49
+ const buttonSize = computed(() => {
50
+ if (props.sm) return sizes.sm
51
+ if (props.md) return sizes.md
52
+ if (props.lg) return sizes.lg
53
+ if (props.xl) return sizes.xl
54
+ if (props['2xl']) return sizes['2xl']
55
+
56
+ // default size to md
57
+ return sizes.md
58
+ })
48
59
 
49
60
  const buttonSlotClass = computed(() => [
50
61
  'rsui-button-slot',
51
62
  {
52
63
  // button sizes
53
- 'rsui-button-slot--xs': props.xs,
54
- 'rsui-button-slot--sm': props.sm,
55
- 'rsui-button-slot--md': props.md || defaultSize.value,
56
- 'rsui-button-slot--lg': props.lg,
57
- 'rsui-button-slot--xs-icon': props.xs && iconOnly.value,
58
- 'rsui-button-slot--sm-icon': props.sm && iconOnly.value,
59
- 'rsui-button-slot--md-icon': (props.md || defaultSize.value) && iconOnly.value,
60
- 'rsui-button-slot--lg-icon': props.lg && iconOnly.value,
64
+ 'rsui-button-slot--sm': buttonSize.value === sizes.sm,
65
+ 'rsui-button-slot--md': buttonSize.value === sizes.md,
66
+ 'rsui-button-slot--lg': buttonSize.value === sizes.lg,
67
+ 'rsui-button-slot--xl': buttonSize.value === sizes.xl,
68
+ 'rsui-button-slot--2xl': buttonSize.value === sizes['2xl'],
69
+
70
+ // button sizes with icon only
71
+ 'rsui-button-slot--sm-icon': buttonSize.value === sizes.sm && iconOnly.value,
72
+ 'rsui-button-slot--md-icon': buttonSize.value === sizes.md && iconOnly.value,
73
+ 'rsui-button-slot--lg-icon': buttonSize.value === sizes.lg && iconOnly.value,
74
+ 'rsui-button-slot--xl-icon': buttonSize.value === sizes.xl && iconOnly.value,
75
+ 'rsui-button-slot--2xl-icon': buttonSize.value === sizes['2xl'] && iconOnly.value,
61
76
 
62
77
  // button full width
63
78
  'rsui-button-slot--full': props.full,
64
-
65
- // button fully rounded
66
- 'rsui-button-slot--rounded': props.rounded,
67
79
  },
68
80
  ])
69
81
  </script>
70
82
  <template>
71
83
  <button
72
- ref="buttonElement"
84
+ ref="buttonElementRef"
73
85
  :class="buttonSlotClass"
74
- :type="type"
75
- v-bind="$attrs"
86
+ type="button"
76
87
  @click="$emit('click', $event)"
77
88
  >
78
89
  <slot></slot>
@@ -83,69 +94,72 @@ const buttonSlotClass = computed(() => [
83
94
  // default control
84
95
  @apply w-fit h-fit inline-flex shrink-0 items-center justify-center select-none outline-none whitespace-nowrap will-change-transform;
85
96
  // default shape
86
- @apply font-semibold gap-2 rounded-md border transition;
97
+ @apply gap-1.5 border rounded-lg transition;
98
+ // default font
99
+ @apply font-semibold text-sm;
87
100
  // default colors
88
- @apply bg-white text-rsui-default ring-highlight border-rsui-default;
101
+ @apply bg-white text-rsui-grey-400 ring-0 ring-rsui-grey-400 border-rsui-grey-400;
89
102
  // default hover state
90
- @apply hover:brightness-110;
103
+ @apply hover:bg-rsui-grey-100;
91
104
  // default focus state
92
- @apply focus-visible:ring-4 focus-visible:ring-highlight focus-visible:border-highlight;
105
+ @apply focus-visible:ring-offset-2 focus-visible:ring-2 focus-visible:ring-rsui-grey-400 focus-visible:border-rsui-grey-400;
93
106
  // default active state
94
- @apply active:ring-0 active:bg-white active:filter-none;
107
+ @apply active:ring-0 active:bg-white;
95
108
  // default disabled state
96
- @apply disabled:bg-rsui-grey-200 disabled:border-transparent disabled:text-white disabled:filter-none;
97
- @apply disabled:active:bg-rsui-grey-200 disabled:active:ring-0 disabled:active:border-transparent;
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;
98
111
  @apply disabled:focus-visible:ring-0;
112
+
113
+ :deep(svg) {
114
+ @apply size-5;
115
+ }
116
+
99
117
  // modifier full width
100
118
  &--full {
101
119
  @apply w-full;
102
120
  }
103
- // modifier fully rounded
104
- &--rounded {
105
- @apply rounded-full;
106
- }
107
- // modifier xs size
108
- &--xs {
109
- @apply text-xs px-2 py-1;
110
- &-icon {
111
- @apply p-1;
112
- }
113
- :deep(svg) {
114
- @apply size-4;
115
- }
116
- }
121
+
117
122
  // modifier sm size
118
123
  &--sm {
119
124
  @apply text-sm px-3 py-2;
120
125
  &-icon {
121
126
  @apply p-2;
122
127
  }
123
- :deep(svg) {
124
- @apply size-5;
125
- }
126
128
  }
129
+
127
130
  // modifier md size
128
131
  &--md {
129
- @apply text-base px-3 py-2;
132
+ @apply text-sm leading-5 px-3.5 py-2.5;
130
133
  &-icon {
131
- @apply p-2;
132
- }
133
- :deep(svg) {
134
- @apply size-6;
134
+ @apply p-2.5;
135
135
  }
136
136
  }
137
+
137
138
  // modifier lg size
138
139
  &--lg {
139
- @apply text-lg px-4 py-3;
140
+ @apply text-base px-4 py-2.5;
140
141
  &-icon {
141
142
  @apply p-3;
142
143
  }
143
- :deep(svg) {
144
- @apply size-7;
144
+ }
145
+
146
+ // modifier xl size
147
+ &--xl {
148
+ @apply text-base leading-6 px-4.5 py-3;
149
+ &-icon {
150
+ @apply p-3.5;
145
151
  }
146
152
  }
147
- :deep(svg) {
148
- // @apply stroke-1;
153
+
154
+ // modifier 2xl size
155
+ &--2xl {
156
+ @apply text-lg leading-7 px-5 py-4;
157
+ &-icon {
158
+ @apply p-4.5;
159
+ }
160
+ :deep(svg) {
161
+ @apply size-6;
162
+ }
149
163
  }
150
164
  }
151
165
  </style>
@@ -9,8 +9,15 @@ import ButtonSlot from './ButtonSlot.vue'
9
9
  <style lang="scss" scoped>
10
10
  .rsui-button-tertiary {
11
11
  // default colors
12
- @apply bg-tertiary text-tertiary-content border-tertiary-content;
12
+ @apply text-rsui-grey-700 bg-white border-rsui-grey-400;
13
+ // default hover state
14
+ @apply hover:text-rsui-grey-900 hover:bg-rsui-grey-200 hover:border-rsui-grey-200;
15
+ // default focus state
16
+ @apply focus-visible:ring-rsui-grey-400 focus-visible:border-rsui-grey-400;
13
17
  // default active state
14
- @apply active:border-tertiary-content active:bg-tertiary;
18
+ @apply active:bg-white active:border-rsui-grey-400;
19
+ // default disabled state
20
+ @apply disabled:bg-white disabled:border-rsui-grey-100 disabled:text-rsui-grey-400;
21
+ @apply disabled:active:bg-white disabled:active:border-rsui-grey-100;
15
22
  }
16
23
  </style>
@@ -1,37 +1,19 @@
1
- import ButtonDanger from './ButtonDanger.vue'
2
- import ButtonDangerFull from './ButtonDangerFull.vue'
3
- import ButtonDangerFullRounded from './ButtonDangerFullRounded.vue'
4
- import ButtonDangerRounded from './ButtonDangerRounded.vue'
5
1
  import ButtonPrimary from './ButtonPrimary.vue'
6
2
  import ButtonPrimaryFull from './ButtonPrimaryFull.vue'
7
- import ButtonPrimaryFullRounded from './ButtonPrimaryFullRounded.vue'
8
- import ButtonPrimaryRounded from './ButtonPrimaryRounded.vue'
9
3
  import ButtonSecondary from './ButtonSecondary.vue'
10
4
  import ButtonSecondaryFull from './ButtonSecondaryFull.vue'
11
- import ButtonSecondaryFullRounded from './ButtonSecondaryFullRounded.vue'
12
- import ButtonSecondaryRounded from './ButtonSecondaryRounded.vue'
13
- import ButtonSlot from './ButtonSlot.vue'
5
+ import ButtonSecondaryBrand from './ButtonSecondaryBrand.vue'
6
+ import ButtonSecondaryBrandFull from './ButtonSecondaryBrandFull.vue'
14
7
  import ButtonTertiary from './ButtonTertiary.vue'
15
8
  import ButtonTertiaryFull from './ButtonTertiaryFull.vue'
16
- import ButtonTertiaryFullRounded from './ButtonTertiaryFullRounded.vue'
17
- import ButtonTertiaryRounded from './ButtonTertiaryRounded.vue'
18
9
 
19
10
  export {
20
- ButtonDanger,
21
- ButtonDangerFull,
22
- ButtonDangerFullRounded,
23
- ButtonDangerRounded,
24
11
  ButtonPrimary,
25
12
  ButtonPrimaryFull,
26
- ButtonPrimaryFullRounded,
27
- ButtonPrimaryRounded,
28
13
  ButtonSecondary,
29
14
  ButtonSecondaryFull,
30
- ButtonSecondaryFullRounded,
31
- ButtonSecondaryRounded,
32
- ButtonSlot,
15
+ ButtonSecondaryBrand,
16
+ ButtonSecondaryBrandFull,
33
17
  ButtonTertiary,
34
18
  ButtonTertiaryFull,
35
- ButtonTertiaryFullRounded,
36
- ButtonTertiaryRounded,
37
19
  }
@@ -38,13 +38,13 @@ const buttonClass = computed(() => [
38
38
  // default shape
39
39
  @apply first:rounded-l-md last:rounded-r-md first:border-l border-r border-y ring-0;
40
40
  // default colors
41
- @apply bg-segment text-segment-content border-rsui-grey-300;
41
+ @apply bg-white text-rsui-grey-700 border-rsui-grey-400;
42
42
  // default hover state
43
43
  @apply hover:bg-rsui-grey-200;
44
44
  // default active/pressed state
45
- @apply active:ring-0 active:bg-segment;
45
+ @apply active:ring-0 active:bg-white;
46
46
  // default disabled state
47
- @apply disabled:text-rsui-grey-200 disabled:bg-white;
47
+ @apply disabled:text-rsui-grey-400 disabled:bg-white;
48
48
  &--selected {
49
49
  @apply bg-rsui-grey-200 active:bg-rsui-grey-200 cursor-default;
50
50
  }
@@ -109,15 +109,15 @@ function handleClick(event) {
109
109
  @apply max-w-80 w-80 bg-white border border-rsui-grey-200 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-light;
112
+ @apply focus-visible:ring-4 focus-visible:ring-rsui-grey-400;
113
113
 
114
114
  &--flexible {
115
115
  @apply max-w-full w-full;
116
116
  }
117
117
 
118
118
  &--selected {
119
- @apply focus-visible:ring-0 border-primary;
120
- @apply after:absolute after:content-[''] after:inset-0 after:bg-primary;
119
+ @apply focus-visible:ring-0 border-primary-background;
120
+ @apply after:absolute after:content-[''] after:inset-0 after:bg-primary-background;
121
121
  @apply after:rounded-md after:opacity-10;
122
122
  }
123
123
 
@@ -128,7 +128,7 @@ function handleClick(event) {
128
128
  }
129
129
 
130
130
  &__title-row {
131
- @apply relative text-base font-medium text-rsui-default line-clamp-2 min-h-6 pr-8;
131
+ @apply relative text-base font-medium text-rsui-grey-900 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,15 +137,15 @@ 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-light after:bg-white;
140
+ @apply after:border after:border-rsui-grey-400 after:bg-white;
141
141
  // Radio button event
142
- @apply group-hover/radio-card:after:border-rsui-medium;
143
- @apply group-focus-visible/radio-card:after:border-rsui-medium;
142
+ @apply group-hover/radio-card:after:border-rsui-grey-700;
143
+ @apply group-focus-visible/radio-card:after:border-rsui-grey-700;
144
144
 
145
145
  &--selected {
146
- @apply after:border-6 after:border-primary;
147
- @apply group-hover/radio-card:after:border-primary;
148
- @apply group-focus-visible/radio-card:after:border-primary;
146
+ @apply after:border-6 after:border-primary-background;
147
+ @apply group-hover/radio-card:after:border-primary-background;
148
+ @apply group-focus-visible/radio-card:after:border-primary-background;
149
149
  }
150
150
 
151
151
  &--disabled {
@@ -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-light;
156
+ @apply after:border-6 after:border-white after:bg-rsui-grey-400;
157
157
  @apply group-hover/radio-card:after:border-white;
158
158
  @apply group-focus-visible/radio-card:after:border-white;
159
159
  }
160
160
  }
161
161
 
162
162
  &__content-row {
163
- @apply text-sm font-normal text-rsui-medium;
163
+ @apply text-sm font-normal text-rsui-grey-700;
164
164
  }
165
165
 
166
166
  &__meta-row {
@@ -94,20 +94,28 @@ const showNotFoundMessage = computed(() => !props.totalItems && props.controlApp
94
94
  <template #image>
95
95
  <slot name="empty-image"></slot>
96
96
  </template>
97
+
97
98
  <template #title v-if="$slots['empty-title']">
98
99
  <slot name="empty-title"></slot>
99
100
  </template>
101
+
102
+ <slot name="empty-description">It looks like there's nothing here yet.</slot>
103
+
104
+ <template #actions="{ isWide }" v-if="$slots['empty-actions']">
105
+ <slot name="empty-actions" :isWide="isWide"></slot>
106
+ </template>
107
+
100
108
  <template #primary-action-label v-if="$slots['empty-action-label']">
101
109
  <slot name="empty-action-label"></slot>
102
110
  </template>
111
+
103
112
  <template #secondary-action-label v-if="$slots['empty-secondary-action-label']">
104
113
  <slot name="empty-secondary-action-label"></slot>
105
114
  </template>
115
+
106
116
  <template #tertiary-action-label v-if="$slots['empty-tertiary-action-label']">
107
117
  <slot name="empty-tertiary-action-label"></slot>
108
118
  </template>
109
-
110
- <slot name="empty-description">It looks like there's nothing here yet.</slot>
111
119
  </Empty>
112
120
  </div>
113
121
  <div v-if="showNotFoundMessage" class="rsui-card-group">
@@ -10,7 +10,7 @@ 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-default transition;
13
+ @apply cursor-pointer p-4 bg-white rounded-md text-base text-rsui-grey-900 transition;
14
14
  @apply hover:bg-rsui-grey-200;
15
15
  }
16
16
  </style>
@@ -93,7 +93,7 @@ const emptyClass = computed(() => [
93
93
  <style lang="scss" scoped>
94
94
  .rsui-empty {
95
95
  @apply w-full flex flex-col items-center justify-center gap-5;
96
- @apply px-3 py-4 rounded-md text-rsui-default;
96
+ @apply px-3 py-4 rounded-md text-rsui-grey-900;
97
97
  &--wide {
98
98
  .rsui-empty__image {
99
99
  :deep(svg) {
@@ -20,7 +20,7 @@ defineOptions({
20
20
  fieldset {
21
21
  }
22
22
  legend {
23
- @apply text-base text-rsui-default font-semibold;
23
+ @apply text-base text-rsui-grey-900 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-default;
40
+ @apply text-base text-rsui-grey-900;
41
41
 
42
42
  &__image {
43
43
  @apply mb-8;
@@ -51,7 +51,7 @@
51
51
  }
52
52
 
53
53
  &-or {
54
- @apply relative z-1 bg-white px-6 text-rsui-default;
54
+ @apply relative z-1 bg-white px-6 text-rsui-grey-900;
55
55
  }
56
56
  }
57
57
 
@@ -61,19 +61,19 @@ function check(event) {
61
61
  &__label {
62
62
  @apply ml-2 font-normal;
63
63
  &--required {
64
- @apply after:content-['*'] after:text-danger;
64
+ @apply after:content-['*'] after:text-rsui-error-500;
65
65
  }
66
66
  }
67
67
  &__check {
68
68
  @apply size-6 shrink-0 relative bg-white rounded-md cursor-pointer;
69
- @apply has-[:disabled]:text-rsui-light has-[:disabled]:cursor-default;
69
+ @apply has-[:disabled]:text-rsui-grey-400 has-[:disabled]:cursor-default;
70
70
 
71
71
  input[type="checkbox"] {
72
72
  @apply appearance-none absolute inset-0 z-0 rounded-md transition focus:outline-none cursor-pointer;
73
- @apply w-full h-full text-rsui-default border border-rsui-grey-200 text-transparent bg-none;
74
- @apply focus:ring focus:ring-highlight focus:border-highlight;
75
- @apply invalid:border-danger invalid:ring-0;
76
- @apply disabled:text-rsui-light disabled:bg-rsui-grey-200 disabled:cursor-default;
73
+ @apply w-full h-full text-rsui-grey-900 border border-rsui-grey-200 text-transparent bg-none;
74
+ @apply focus:ring focus:ring-rsui-grey-400 focus:border-rsui-grey-400;
75
+ @apply invalid:border-rsui-error-500 invalid:ring-0;
76
+ @apply disabled:text-rsui-grey-400 disabled:bg-rsui-grey-200 disabled:cursor-default;
77
77
  }
78
78
  svg {
79
79
  @apply size-full relative z-1;