@robuust-digital/vue-components 2.0.0-rc.4 → 2.0.0-rc.6

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 (36) hide show
  1. package/dist/_shared/{ButtonBase-CQjlJ85F.js → ButtonBase-DfkwHIhN.js} +10 -10
  2. package/dist/_shared/Modal-BXOR8t7c.js +199 -0
  3. package/dist/_shared/{Tooltip-BKXJoJ1x.js → Tooltip-B93ZF7IF.js} +16 -16
  4. package/dist/combobox/combobox.css +65 -34
  5. package/dist/combobox/index.js +46 -46
  6. package/dist/core/accordion.css +21 -10
  7. package/dist/core/alert.css +26 -20
  8. package/dist/core/badge.css +10 -10
  9. package/dist/core/button.css +31 -19
  10. package/dist/core/checkbox.css +14 -10
  11. package/dist/core/empty-state.css +6 -6
  12. package/dist/core/index.js +341 -335
  13. package/dist/core/input.css +13 -13
  14. package/dist/core/pagination.css +68 -9
  15. package/dist/core/radio.css +14 -10
  16. package/dist/core/select.css +15 -16
  17. package/dist/core/styles.css +3 -35
  18. package/dist/core/table.css +66 -5
  19. package/dist/core/tabs.css +20 -9
  20. package/dist/core/textarea.css +10 -10
  21. package/dist/core/utilities.css +12 -0
  22. package/dist/dialogs/drawer.css +140 -4
  23. package/dist/dialogs/index.js +93 -96
  24. package/dist/dialogs/modal.css +118 -22
  25. package/dist/dialogs/styles.css +20 -0
  26. package/dist/dropdown/dropdown.css +79 -49
  27. package/dist/dropdown/index.js +38 -38
  28. package/dist/lightswitch/lightswitch.css +8 -8
  29. package/dist/rich-text-editor/index.js +9 -9
  30. package/dist/rich-text-editor/rich-text.css +15 -10
  31. package/dist/toast/index.js +35 -34
  32. package/dist/toast/toast.css +54 -28
  33. package/dist/tooltip/index.js +1 -1
  34. package/dist/tooltip/tooltip.css +18 -16
  35. package/package.json +9 -2
  36. package/dist/_shared/Modal-CsI5mZlJ.js +0 -202
@@ -1,10 +1,10 @@
1
- import { createElementBlock as d, openBlock as n, createElementVNode as r, ref as h, computed as K, createBlock as g, unref as c, mergeProps as F, withCtx as x, createCommentVNode as C, renderSlot as v, createVNode as y, resolveDynamicComponent as N, withModifiers as P, Fragment as j, renderList as z, createTextVNode as Z, toDisplayString as S, normalizeClass as U } from "vue";
1
+ import { createElementBlock as d, openBlock as a, createElementVNode as r, ref as p, computed as K, createBlock as g, unref as c, mergeProps as F, withCtx as x, createCommentVNode as C, renderSlot as v, createVNode as y, resolveDynamicComponent as N, withModifiers as P, Fragment as j, renderList as z, createTextVNode as Z, toDisplayString as S, normalizeClass as U } from "vue";
2
2
  import { useDebounceFn as G } from "@vueuse/core";
3
3
  import { Combobox as H, ComboboxInput as J, ComboboxButton as Q, ComboboxOptions as W, ComboboxOption as X } from "@headlessui/vue";
4
4
  import { r as Y, _ } from "../_shared/ChevronDownIcon-z-5U4fIb.js";
5
5
  import { S as ee } from "../_shared/icon-spinner-CmxIOqaK.js";
6
6
  function te(e, $) {
7
- return n(), d("svg", {
7
+ return a(), d("svg", {
8
8
  xmlns: "http://www.w3.org/2000/svg",
9
9
  viewBox: "0 0 16 16",
10
10
  fill: "currentColor",
@@ -19,7 +19,7 @@ function te(e, $) {
19
19
  ]);
20
20
  }
21
21
  function le(e, $) {
22
- return n(), d("svg", {
22
+ return a(), d("svg", {
23
23
  xmlns: "http://www.w3.org/2000/svg",
24
24
  viewBox: "0 0 20 20",
25
25
  fill: "currentColor",
@@ -29,16 +29,16 @@ function le(e, $) {
29
29
  r("path", { d: "M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" })
30
30
  ]);
31
31
  }
32
- const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class: "rvc-combobox-wrapper" }, ie = {
32
+ const oe = { class: "rvc-combobox-container" }, ne = { class: "rvc-combobox-wrapper" }, ae = { class: "rvc-combobox-field" }, ie = {
33
33
  key: 0,
34
34
  class: "rvc-combobox-chips"
35
35
  }, ue = ["onClick"], re = {
36
36
  key: 0,
37
- class: "relative cursor-default select-none py-2 pl-3 pr-9 text-slate-500"
38
- }, se = { class: "flex items-center" }, ce = {
37
+ class: "rvc-combobox-content"
38
+ }, se = {
39
39
  key: 1,
40
- class: "relative cursor-default select-none py-2 pl-3 pr-9 text-slate-500"
41
- }, de = { class: "block truncate" }, pe = /* @__PURE__ */ Object.assign({
40
+ class: "rvc-combobox-content"
41
+ }, ce = { class: "rvc-combobox-option-text" }, ye = /* @__PURE__ */ Object.assign({
42
42
  inheritAttrs: !1
43
43
  }, {
44
44
  __name: "Combobox",
@@ -147,52 +147,52 @@ const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class:
147
147
  },
148
148
  emits: ["update:modelValue", "update:requestParams", "combobox:noResults", "combobox:error"],
149
149
  setup(e, { emit: $ }) {
150
- const a = e, m = $, s = h([]), b = h(!1), k = h(null), L = h(!0), q = h(null), f = K({
151
- get: () => a.multiple ? a.modelValue || [] : a.modelValue,
150
+ const n = e, m = $, s = p([]), f = p(!1), k = p(null), L = p(!0), q = p(null), b = K({
151
+ get: () => n.multiple ? n.modelValue || [] : n.modelValue,
152
152
  set: (t) => m("update:modelValue", t)
153
153
  }), O = K({
154
- get: () => a.requestParams,
154
+ get: () => n.requestParams,
155
155
  set: (t) => m("update:requestParams", t)
156
156
  }), D = (t) => new Promise((l) => {
157
157
  setTimeout(l, t);
158
158
  }), T = (t, l) => {
159
159
  s.value = [], m("combobox:error", t), m("combobox:noResults", l);
160
160
  }, A = async (t) => {
161
- if (!a.onSearch) return;
162
- if (a.searchOnly && !t) {
161
+ if (!n.onSearch) return;
162
+ if (n.searchOnly && !t) {
163
163
  s.value = [];
164
164
  return;
165
165
  }
166
- if (t && t.length < a.minLength) {
166
+ if (t && t.length < n.minLength) {
167
167
  s.value = [];
168
168
  return;
169
169
  }
170
- q.value && a.onCancel && a.onCancel(q.value), b.value = !0;
170
+ q.value && n.onCancel && n.onCancel(q.value), f.value = !0;
171
171
  const l = Date.now();
172
172
  try {
173
- const { data: i, error: p, cancel: w } = await a.onSearch(t, O.value, a.endpoint);
173
+ const { data: i, error: h, cancel: w } = await n.onSearch(t, O.value, n.endpoint);
174
174
  q.value = w;
175
- const o = a.responseData(i), u = Date.now() - l;
176
- !o.length && p && T(p, t), u < a.minLoadingTime && await D(a.minLoadingTime - u), o != null && o.length ? s.value = o : (s.value = [], m("combobox:noResults", t));
175
+ const o = n.responseData(i), u = Date.now() - l;
176
+ !o.length && h && T(h, t), u < n.minLoadingTime && await D(n.minLoadingTime - u), o != null && o.length ? s.value = o : (s.value = [], m("combobox:noResults", t));
177
177
  } catch (i) {
178
178
  i.cancelled || T(i, t);
179
179
  } finally {
180
- b.value = !1;
180
+ f.value = !1;
181
181
  }
182
- }, M = G(A, a.debounce), B = (t) => {
182
+ }, M = G(A, n.debounce), B = (t) => {
183
183
  L.value ? (L.value = !1, A(t)) : M(t);
184
184
  }, R = (t) => {
185
185
  var l;
186
- ((l = t.target.value) == null ? void 0 : l.length) === 0 && (s.value = [], m("update:modelValue", null)), a.manualInput && m("update:modelValue", O.value.query);
186
+ ((l = t.target.value) == null ? void 0 : l.length) === 0 && (s.value = [], m("update:modelValue", null)), n.manualInput && m("update:modelValue", O.value.query);
187
187
  }, V = (t) => {
188
188
  var l;
189
- return a.multiple ? f.value.some((i) => i[a.itemKey] === t) : ((l = f.value) == null ? void 0 : l[a.itemKey]) === t;
189
+ return n.multiple ? b.value.some((i) => i[n.itemKey] === t) : ((l = b.value) == null ? void 0 : l[n.itemKey]) === t;
190
190
  }, I = (t) => {
191
- f.value = f.value.filter((l) => l[a.itemKey] !== t[a.itemKey]);
191
+ b.value = b.value.filter((l) => l[n.itemKey] !== t[n.itemKey]);
192
192
  };
193
- return (t, l) => (n(), g(c(H), F({
194
- modelValue: f.value,
195
- "onUpdate:modelValue": l[4] || (l[4] = (i) => f.value = i),
193
+ return (t, l) => (a(), g(c(H), F({
194
+ modelValue: b.value,
195
+ "onUpdate:modelValue": l[4] || (l[4] = (i) => b.value = i),
196
196
  as: "div"
197
197
  }, e.rootAttrs, {
198
198
  multiple: e.multiple,
@@ -203,16 +203,16 @@ const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class:
203
203
  ]
204
204
  }), {
205
205
  default: x(() => {
206
- var i, p, w;
206
+ var i, h, w;
207
207
  return [
208
208
  r("div", oe, [
209
- r("div", ae, [
210
- r("div", ne, [
209
+ r("div", ne, [
210
+ r("div", ae, [
211
211
  e.prefixIcon ? v(t.$slots, "prefixIcon", {
212
212
  key: 0,
213
213
  icon: e.prefixIcon
214
214
  }, () => [
215
- (n(), g(N(e.prefixIcon), { "aria-hidden": "true" }))
215
+ (a(), g(N(e.prefixIcon), { "aria-hidden": "true" }))
216
216
  ]) : C("", !0),
217
217
  y(c(J), F(t.$attrs, {
218
218
  id: e.id,
@@ -231,23 +231,23 @@ const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class:
231
231
  default: x(() => {
232
232
  var o;
233
233
  return [
234
- b.value ? v(t.$slots, "spinner", {
234
+ f.value ? v(t.$slots, "spinner", {
235
235
  key: 0,
236
- spinning: b.value
236
+ spinning: f.value
237
237
  }, () => [
238
238
  y(c(ee), { class: "rvc-combobox-spinner" })
239
- ]) : (!e.searchOnly || (o = s.value) != null && o.length) && !b.value ? v(t.$slots, "icon", {
239
+ ]) : (!e.searchOnly || (o = s.value) != null && o.length) && !f.value ? v(t.$slots, "icon", {
240
240
  key: 1,
241
241
  icon: e.icon
242
242
  }, () => [
243
- (n(), g(N(e.icon ?? c(Y)), { "aria-hidden": "true" }))
243
+ (a(), g(N(e.icon ?? c(Y)), { "aria-hidden": "true" }))
244
244
  ]) : C("", !0)
245
245
  ];
246
246
  }),
247
247
  _: 3
248
248
  }, 8, ["disabled"])
249
249
  ]),
250
- e.clearable && ((i = e.modelValue) != null && i.length || (p = e.modelValue) != null && p.id) ? (n(), d("button", {
250
+ e.clearable && ((i = e.modelValue) != null && i.length || (h = e.modelValue) != null && h.id) ? (a(), d("button", {
251
251
  key: 0,
252
252
  type: "button",
253
253
  "aria-label": "Clear selection",
@@ -259,8 +259,8 @@ const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class:
259
259
  ])
260
260
  ])) : C("", !0)
261
261
  ]),
262
- e.multiple && f.value.length ? (n(), d("ul", ie, [
263
- (n(!0), d(j, null, z(f.value, (o) => (n(), d("li", {
262
+ e.multiple && b.value.length ? (a(), d("ul", ie, [
263
+ (a(!0), d(j, null, z(b.value, (o) => (a(), d("li", {
264
264
  key: `${e.id}-selected-option-${o[e.itemKey]}`
265
265
  }, [
266
266
  v(t.$slots, "chip", {
@@ -288,20 +288,20 @@ const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class:
288
288
  ])
289
289
  ]))), 128))
290
290
  ])) : C("", !0),
291
- (!e.searchOnly || (w = k.value) != null && w.length) && (!b.value || s.value.length) ? (n(), g(c(W), {
291
+ (!e.searchOnly || (w = k.value) != null && w.length) && (!f.value || s.value.length) ? (a(), g(c(W), {
292
292
  key: 1,
293
293
  class: "rvc-combobox-options"
294
294
  }, {
295
295
  default: x(() => {
296
296
  var o;
297
297
  return [
298
- ((o = k.value) == null ? void 0 : o.length) < e.minLength ? (n(), d("div", re, [
299
- r("div", se, [
298
+ ((o = k.value) == null ? void 0 : o.length) < e.minLength ? (a(), d("div", re, [
299
+ r("div", null, [
300
300
  r("em", null, "Minimal " + S(e.minLength) + " characters.", 1)
301
301
  ])
302
- ])) : !b.value && !s.value.length ? (n(), d("div", ce, l[5] || (l[5] = [
303
- r("div", { class: "flex items-center" }, " No results found. ", -1)
304
- ]))) : (n(!0), d(j, { key: 2 }, z(s.value, (u) => (n(), g(c(X), {
302
+ ])) : !f.value && !s.value.length ? (a(), d("div", se, l[5] || (l[5] = [
303
+ r("div", null, " No results found. ", -1)
304
+ ]))) : (a(!0), d(j, { key: 2 }, z(s.value, (u) => (a(), g(c(X), {
305
305
  key: u[e.itemKey],
306
306
  value: u,
307
307
  as: "template"
@@ -322,7 +322,7 @@ const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class:
322
322
  option: u[e.itemKey],
323
323
  isActive: V
324
324
  }),
325
- r("span", de, S(e.optionText(u)), 1),
325
+ r("span", ce, S(e.optionText(u)), 1),
326
326
  v(t.$slots, "optionSuffix", {
327
327
  option: u[e.itemKey],
328
328
  isActive: V
@@ -344,6 +344,6 @@ const oe = { class: "relative" }, ae = { class: "flex gap-x-1" }, ne = { class:
344
344
  }
345
345
  });
346
346
  export {
347
- pe as Combobox,
348
- pe as default
347
+ ye as Combobox,
348
+ ye as default
349
349
  };
@@ -15,20 +15,31 @@
15
15
  @layer components {
16
16
  .rvc-accordion {
17
17
  details {
18
- border-top-width: var(--rvc-accordion-border-width);
19
- border-top-color: var(--rvc-accordion-border-color);
20
- border-top-style: var(--rvc-accordion-border-style);
18
+ border-top: var(--rvc-accordion-border-width) var(--rvc-accordion-border-style) var(--rvc-accordion-border-color);
19
+
20
+ .rvc-accordion-icon {
21
+ width: calc(var(--spacing) * 5);
22
+ height: calc(var(--spacing) * 5);
23
+ transform: translateZ(0) var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y);
24
+ transition-property: transform, translate, scale, rotate;
25
+ transition-duration: var(--rvc-base-transition-duration);
26
+ transition-timing-function: var(--rvc-base-transition-timing-function);
27
+ }
28
+
29
+ &:open .rvc-accordion-icon {
30
+ transform: rotate(45deg);
31
+ }
21
32
  }
22
33
 
23
34
  summary {
24
- padding-block: var(--rvc-accordion-padding-y);
25
- font-weight: var(--rvc-accordion-summary-font-weight);
26
- font-size: var(--rvc-accordion-summary-font-size);
27
- color: var(--rvc-accordion-summary-color);
28
- width: 100%;
29
35
  display: flex;
30
36
  align-items: center;
31
37
  justify-content: space-between;
38
+ width: 100%;
39
+ padding-block: var(--rvc-accordion-padding-y);
40
+ color: var(--rvc-accordion-summary-color);
41
+ font-size: var(--rvc-accordion-summary-font-size);
42
+ font-weight: var(--rvc-accordion-summary-font-weight);
32
43
  cursor: pointer;
33
44
  user-select: none;
34
45
 
@@ -39,9 +50,9 @@
39
50
 
40
51
  .rvc-accordion-content {
41
52
  padding-bottom: var(--rvc-accordion-padding-y);
42
- font-weight: var(--rvc-accordion-font-weight);
43
- font-size: var(--rvc-accordion-font-size);
44
53
  color: var(--rvc-accordion-color);
54
+ font-size: var(--rvc-accordion-font-size);
55
+ font-weight: var(--rvc-accordion-font-weight);
45
56
  }
46
57
  }
47
58
  }
@@ -11,6 +11,7 @@
11
11
  --rvc-alert-icon-size: calc(var(--spacing) * 6);
12
12
  --rvc-alert-title-font-weight: var(--font-weight-medium);
13
13
  --rvc-alert-transition-property: color, background-color, border-color;
14
+ --rvc-alert-close-icon-size: calc(var(--spacing) * 5);
14
15
 
15
16
  /* Default color variables */
16
17
  --rvc-alert-bg-color: var(--color-blue-50);
@@ -56,23 +57,23 @@
56
57
 
57
58
  @layer components {
58
59
  .rvc-alert {
59
- gap: var(--rvc-alert-gap);
60
- padding-inline: var(--rvc-alert-padding-x);
60
+ display: flex;
61
+ position: relative;
61
62
  padding-block: var(--rvc-alert-padding-y);
63
+ padding-inline: var(--rvc-alert-padding-x);
64
+ overflow: hidden;
62
65
  border-radius: var(--rvc-alert-border-radius);
63
- font-size: var(--rvc-alert-font-size);
64
66
  background-color: var(--rvc-alert-bg-color);
65
67
  color: var(--rvc-alert-color);
66
- display: flex;
67
- position: relative;
68
- overflow: hidden;
68
+ font-size: var(--rvc-alert-font-size);
69
+ gap: var(--rvc-alert-gap);
69
70
 
70
71
  a {
71
- text-decoration: var(--rvc-alert-anchor-decoration);
72
72
  transition-property: var(--rvc-alert-transition-property);
73
73
  transition-duration: var(--rvc-alert-transition-duration);
74
74
  transition-timing-function: var(--rvc-alert-transition-timing-function);
75
75
  color: var(--rvc-alert-anchor-color);
76
+ text-decoration: var(--rvc-alert-anchor-decoration);
76
77
 
77
78
  &:hover {
78
79
  color: var(--rvc-alert-anchor-color-hover);
@@ -80,9 +81,9 @@
80
81
  }
81
82
 
82
83
  ul, ol {
83
- list-style-position: inside;
84
84
  margin: 0;
85
85
  padding-left: calc(var(--spacing) * 2);
86
+ list-style-position: inside;
86
87
  }
87
88
 
88
89
  ul {
@@ -94,19 +95,24 @@
94
95
  }
95
96
 
96
97
  .rvc-alert-close {
97
- background-color: var(--rvc-alert-close-bg-color);
98
- color: var(--rvc-alert-icon-color);
99
- border-bottom-left-radius: var(--rvc-alert-border-radius);
100
- transition-property: var(--rvc-alert-transition-property);
101
- transition-duration: var(--rvc-alert-transition-duration);
102
- transition-timing-function: var(--rvc-alert-transition-timing-function);
103
98
  display: inline-flex;
104
- justify-content: center;
105
- align-items: center;
106
99
  position: absolute;
107
100
  top: 0;
108
101
  right: 0;
102
+ align-items: center;
103
+ justify-content: center;
109
104
  padding: calc(var(--spacing) * 1.5);
105
+ transition-property: var(--rvc-alert-transition-property);
106
+ transition-duration: var(--rvc-alert-transition-duration);
107
+ transition-timing-function: var(--rvc-alert-transition-timing-function);
108
+ border-bottom-left-radius: var(--rvc-alert-border-radius);
109
+ background-color: var(--rvc-alert-close-bg-color);
110
+ color: var(--rvc-alert-icon-color);
111
+
112
+ svg {
113
+ width: var(--rvc-alert-close-icon-size);
114
+ height: var(--rvc-alert-close-icon-size);
115
+ }
110
116
 
111
117
  &:hover {
112
118
  background-color: var(--rvc-alert-close-bg-color-hover);
@@ -115,18 +121,18 @@
115
121
  }
116
122
 
117
123
  .rvc-alert-icon {
124
+ display: block;
125
+ flex-shrink: 0;
118
126
  width: var(--rvc-alert-icon-size);
119
127
  height: var(--rvc-alert-icon-size);
120
128
  color: var(--rvc-alert-icon-color);
121
- display: block;
122
- flex-shrink: 0;
123
129
  }
124
130
 
125
131
  .rvc-alert-title {
126
- color: var(--rvc-alert-title-color);
127
- font-weight: var(--rvc-alert-title-font-weight);
128
132
  display: block;
129
133
  margin-bottom: calc(var(--spacing) * 2);
134
+ color: var(--rvc-alert-title-color);
135
+ font-weight: var(--rvc-alert-title-font-weight);
130
136
 
131
137
  &:last-child {
132
138
  margin-bottom: 0;
@@ -53,23 +53,23 @@
53
53
 
54
54
  @layer components {
55
55
  .rvc-badge {
56
+ display: inline-flex;
57
+ position: relative;
58
+ align-items: center;
59
+ justify-content: center;
60
+ width: fit-content;
56
61
  height: var(--rvc-badge-height);
57
- padding-inline: var(--rvc-badge-padding-x);
58
62
  padding-block: var(--rvc-badge-padding-y);
59
- font-weight: var(--rvc-badge-font-weight);
63
+ padding-inline: var(--rvc-badge-padding-x);
60
64
  border-radius: var(--rvc-badge-border-radius);
61
- font-size: var(--rvc-badge-font-size);
62
- gap: var(--rvc-badge-gap);
63
65
  background-color: var(--rvc-badge-bg-color);
64
66
  color: var(--rvc-badge-color);
65
- display: inline-flex;
66
- align-items: center;
67
- justify-content: center;
67
+ font-size: var(--rvc-badge-font-size);
68
+ font-weight: var(--rvc-badge-font-weight);
68
69
  text-align: center;
69
- position: relative;
70
- width: fit-content;
71
- white-space: nowrap;
72
70
  text-decoration: none;
71
+ white-space: nowrap;
72
+ gap: var(--rvc-badge-gap);
73
73
 
74
74
  &.rvc-badge-gray {
75
75
  --rvc-badge-bg-color: var(--rvc-badge-bg-color-gray);
@@ -163,34 +163,34 @@
163
163
 
164
164
  @layer components {
165
165
  .rvc-button {
166
+ display: inline-flex;
167
+ position: relative;
168
+ align-items: center;
169
+ justify-content: center;
166
170
  height: var(--rvc-button-height);
167
- border-width: var(--rvc-button-border-width);
168
- border-color: var(--rvc-button-border-color);
171
+ padding-inline: var(--rvc-button-padding-x);
169
172
  transition-property: var(--rvc-button-transition-property);
170
173
  transition-duration: var(--rvc-button-transition-duration);
171
174
  transition-timing-function: var(--rvc-button-transition-timing-function);
172
- padding-inline: var(--rvc-button-padding-x);
173
- gap: var(--rvc-button-gap);
175
+ border-width: var(--rvc-button-border-width);
176
+ border-style: solid;
174
177
  border-radius: var(--rvc-button-border-radius);
175
- font-weight: var(--rvc-button-font-weight);
176
- font-size: var(--rvc-button-font-size);
178
+ border-color: var(--rvc-button-border-color);
177
179
  background-color: var(--rvc-button-bg-color);
178
- color: var(--rvc-button-color);
179
180
  box-shadow: var(--rvc-button-box-shadow);
180
- appearance: none;
181
- cursor: pointer;
182
- display: inline-flex;
183
- align-items: center;
184
- justify-content: center;
181
+ color: var(--rvc-button-color);
182
+ font-size: var(--rvc-button-font-size);
183
+ font-weight: var(--rvc-button-font-weight);
185
184
  text-align: center;
186
- border-style: solid;
187
- position: relative;
188
185
  white-space: nowrap;
186
+ cursor: pointer;
187
+ gap: var(--rvc-button-gap);
188
+ appearance: none;
189
189
 
190
190
  &:hover {
191
+ border-color: var(--rvc-button-border-color-hover);
191
192
  background-color: var(--rvc-button-bg-color-hover);
192
193
  color: var(--rvc-button-color-hover);
193
- border-color: var(--rvc-button-border-color-hover);
194
194
 
195
195
  & .rvc-button-icon {
196
196
  color: var(--rvc-button-icon-color-hover);
@@ -198,19 +198,31 @@
198
198
  }
199
199
 
200
200
  &:disabled {
201
- pointer-events: none;
202
201
  opacity: 0.5;
202
+ pointer-events: none;
203
203
  }
204
204
 
205
205
  .rvc-button-icon {
206
+ display: block;
207
+ flex-shrink: 0;
206
208
  width: var(--rvc-button-icon-size);
207
209
  height: var(--rvc-button-icon-size);
208
- color: var(--rvc-button-icon-color);
209
210
  transition-property: var(--rvc-button-transition-property);
210
211
  transition-duration: var(--rvc-button-transition-duration);
211
212
  transition-timing-function: var(--rvc-button-transition-timing-function);
212
- display: block;
213
- flex-shrink: 0;
213
+ color: var(--rvc-button-icon-color);
214
+ }
215
+
216
+ .rvc-button-label {
217
+ position: absolute;
218
+ width: 1px;
219
+ height: 1px;
220
+ margin: -1px;
221
+ padding: 0;
222
+ overflow: hidden;
223
+ clip: rect(0, 0, 0, 0);
224
+ border-width: 0;
225
+ white-space: nowrap;
214
226
  }
215
227
 
216
228
  .rvc-button-icon.rvc-button-icon-loading {
@@ -16,30 +16,30 @@
16
16
 
17
17
  @layer components {
18
18
  .rvc-checkbox {
19
- gap: var(--rvc-checkbox-gap);
20
- position: relative;
21
19
  display: flex;
20
+ position: relative;
22
21
  align-items: flex-start;
23
22
  cursor: pointer;
23
+ gap: var(--rvc-checkbox-gap);
24
24
 
25
25
  label {
26
+ display: block;
27
+ color: var(--rvc-checkbox-color);
26
28
  font-size: var(--rvc-checkbox-font-size);
27
29
  font-weight: var(--rvc-checkbox-font-weight);
28
- color: var(--rvc-checkbox-color);
29
- display: block;
30
30
  }
31
31
 
32
32
  .rvc-checkbox-input {
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
33
36
  width: var(--rvc-checkbox-input-size);
34
37
  height: var(--rvc-checkbox-input-size);
35
- border-radius: var(--rvc-checkbox-input-border-radius);
38
+ margin-top: calc(var(--spacing) * 0.5);
36
39
  border-width: var(--rvc-checkbox-input-border-width);
40
+ border-radius: var(--rvc-checkbox-input-border-radius);
37
41
  border-color: var(--rvc-checkbox-input-border-color);
38
42
  box-shadow: var(--rvc-checkbox-input-box-shadow);
39
- margin-top: calc(var(--spacing) * 0.5);
40
- display: flex;
41
- align-items: center;
42
- justify-content: center;
43
43
 
44
44
  svg {
45
45
  width: 100%;
@@ -49,12 +49,16 @@
49
49
  }
50
50
 
51
51
  input:checked + .rvc-checkbox-input {
52
- background-color: var(--rvc-checkbox-input-checked-bg-color);
53
52
  border-color: var(--rvc-checkbox-input-checked-border-color);
53
+ background-color: var(--rvc-checkbox-input-checked-bg-color);
54
54
 
55
55
  svg {
56
56
  color: var(--rvc-checkbox-input-checked-icon-color);
57
57
  }
58
58
  }
59
+
60
+ input:focus + .rvc-checkbox-input {
61
+ @apply rvc-focus;
62
+ }
59
63
  }
60
64
  }
@@ -19,17 +19,17 @@
19
19
  font-size: var(--rvc-empty-state-font-size);
20
20
 
21
21
  &.rvc-empty-state-bg {
22
- background-color: var(--rvc-empty-state-bg-color);
23
- padding: var(--rvc-empty-state-padding-y) var(--rvc-empty-state-padding-x);
24
- border-radius: var(--rvc-empty-state-border-radius);
25
22
  display: flex;
26
23
  flex-direction: column;
27
24
  align-items: center;
25
+ padding: var(--rvc-empty-state-padding-y) var(--rvc-empty-state-padding-x);
26
+ border-radius: var(--rvc-empty-state-border-radius);
27
+ background-color: var(--rvc-empty-state-bg-color);
28
28
  }
29
29
 
30
30
  a {
31
- text-decoration: var(--rvc-empty-state-anchor-decoration);
32
31
  color: var(--rvc-empty-state-anchor-color);
32
+ text-decoration: var(--rvc-empty-state-anchor-decoration);
33
33
 
34
34
  &:hover {
35
35
  color: var(--rvc-empty-state-anchor-color-hover);
@@ -41,10 +41,10 @@
41
41
  }
42
42
 
43
43
  .rvc-empty-state-title {
44
+ display: block;
45
+ margin-bottom: calc(var(--spacing) * 2);
44
46
  color: var(--rvc-empty-state-title-color);
45
47
  font-weight: var(--rvc-empty-state-title-font-weight);
46
- margin-bottom: calc(var(--spacing) * 2);
47
- display: block;
48
48
  }
49
49
 
50
50
  .rvc-empty-state-icon {