ropav 0.1.4 → 0.1.5

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 (79) hide show
  1. package/README.md +16 -0
  2. package/dist/alert.css +18 -18
  3. package/dist/alert.js +15 -10
  4. package/dist/avatar.css +19 -19
  5. package/dist/avatar.js +14 -9
  6. package/dist/badge.css +16 -16
  7. package/dist/badge.js +12 -7
  8. package/dist/base.css +196 -56
  9. package/dist/button-link.css +32 -28
  10. package/dist/button-link.js +9 -5
  11. package/dist/button.css +32 -28
  12. package/dist/button.js +9 -5
  13. package/dist/checkbox.css +32 -32
  14. package/dist/checkbox.js +17 -9
  15. package/dist/chevron-right.js +12 -0
  16. package/dist/collectionNavigation.js +120 -0
  17. package/dist/color-input.js +2 -1
  18. package/dist/componentColors.js +94 -22
  19. package/dist/components/alert/types.d.ts +1 -0
  20. package/dist/components/alert/useAlertColor.d.ts +1 -1
  21. package/dist/components/avatar/types.d.ts +1 -0
  22. package/dist/components/avatar/useAvatarColor.d.ts +1 -1
  23. package/dist/components/badge/types.d.ts +1 -0
  24. package/dist/components/badge/useBadgeColor.d.ts +1 -1
  25. package/dist/components/button/types.d.ts +1 -0
  26. package/dist/components/button/useButtonColor.d.ts +1 -1
  27. package/dist/components/button-link/types.d.ts +1 -0
  28. package/dist/components/checkbox/types.d.ts +1 -0
  29. package/dist/components/dropdown-menu/dropdown-menu-primitive-core.d.ts +1 -0
  30. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -2
  31. package/dist/components/dropdown-menu/index.d.ts +1 -0
  32. package/dist/components/dropdown-menu/types.d.ts +4 -0
  33. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +2 -1
  34. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +1 -0
  35. package/dist/components/icon-button/types.d.ts +1 -0
  36. package/dist/components/pagination/index.d.ts +4 -0
  37. package/dist/components/pagination/index.js +2 -0
  38. package/dist/components/pagination/pagination.d.ts +49 -0
  39. package/dist/components/pagination/types.d.ts +54 -0
  40. package/dist/components/pagination/usePagination.d.ts +19 -0
  41. package/dist/components/radio/types.d.ts +3 -0
  42. package/dist/components/select/useSelect.d.ts +1 -1
  43. package/dist/components/slider/range-slider-tooltip.d.ts +2 -0
  44. package/dist/components/slider/types.d.ts +1 -1
  45. package/dist/components/slider/useRangeSlider.d.ts +2 -0
  46. package/dist/components/slider/useSlider.d.ts +2 -0
  47. package/dist/components/toast/types.d.ts +2 -0
  48. package/dist/components/toast/useToastColor.d.ts +1 -1
  49. package/dist/components/tooltip/types.d.ts +1 -0
  50. package/dist/components/tooltip/useTooltip.d.ts +1 -1
  51. package/dist/dropdown-menu.js +55 -30
  52. package/dist/icon-button.css +39 -35
  53. package/dist/icon-button.js +9 -5
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.js +2 -1
  56. package/dist/input.js +2 -1
  57. package/dist/number-input.js +2 -1
  58. package/dist/pagination.css +140 -0
  59. package/dist/pagination.js +442 -0
  60. package/dist/radio.js +15 -5
  61. package/dist/select.js +65 -46
  62. package/dist/slider.css +191 -191
  63. package/dist/slider.js +49 -31
  64. package/dist/switch.js +2 -1
  65. package/dist/textarea.js +2 -1
  66. package/dist/toast.css +26 -26
  67. package/dist/toast.js +16 -9
  68. package/dist/tooltip.css +12 -12
  69. package/dist/tooltip.js +13 -8
  70. package/dist/unplugin-icons.js +38 -25
  71. package/dist/useButtonColor.js +6 -3
  72. package/dist/useControllableValue.js +27 -0
  73. package/dist/useFormControl.js +2 -27
  74. package/dist/utils/componentColors.d.ts +14 -1
  75. package/docs/public-styles-api.md +1 -1
  76. package/docs/public-tokens.md +648 -508
  77. package/package.json +7 -1
  78. package/src/styles/_tokens.scss +459 -319
  79. package/src/styles/styles-manifest.json +1122 -2
package/README.md CHANGED
@@ -37,6 +37,22 @@ Import the components you need:
37
37
  import { Button } from 'ropav';
38
38
  ```
39
39
 
40
+ ## Custom color contrast
41
+
42
+ `autoContrast` selects foreground colors for preset colors and opaque custom color literals. A
43
+ translucent custom color depends on the surface behind the component, so its contrast cannot be
44
+ determined from the color alone. Pass `contrastColor` explicitly whenever a custom background has
45
+ alpha:
46
+
47
+ ```vue
48
+ <Button color="rgba(255, 255, 255, 0.2)" contrast-color="var(--rp-color-white)" variant="solid">
49
+ Continue
50
+ </Button>
51
+ ```
52
+
53
+ In development, Ropav warns when auto contrast receives a translucent custom color without an
54
+ explicit `contrastColor`. The production fallback remains `var(--rp-color-white)`.
55
+
40
56
  ## Progress and interactive ranges
41
57
 
42
58
  Use `Progress` for read-only status and `Slider` when the user can change the value. A media seek
package/dist/alert.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-alert[data-v-8e95a4b4] {
2
+ .rp-alert[data-v-433c81a2] {
3
3
  --_rp-alert-bg: var(--rp-color-cyan-light);
4
4
  --_rp-alert-fg: var(--rp-color-text);
5
5
  --_rp-alert-title-fg: var(--rp-color-cyan-light-color);
@@ -22,25 +22,25 @@
22
22
  border-radius: var(--_rp-alert-radius);
23
23
  transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast);
24
24
  }
25
- .rp-alert--radius-none[data-v-8e95a4b4] {
25
+ .rp-alert--radius-none[data-v-433c81a2] {
26
26
  --_rp-alert-radius: var(--rp-radius-none);
27
27
  }
28
- .rp-alert--radius-xs[data-v-8e95a4b4] {
28
+ .rp-alert--radius-xs[data-v-433c81a2] {
29
29
  --_rp-alert-radius: var(--rp-radius-xs);
30
30
  }
31
- .rp-alert--radius-sm[data-v-8e95a4b4] {
31
+ .rp-alert--radius-sm[data-v-433c81a2] {
32
32
  --_rp-alert-radius: var(--rp-radius-sm);
33
33
  }
34
- .rp-alert--radius-md[data-v-8e95a4b4] {
34
+ .rp-alert--radius-md[data-v-433c81a2] {
35
35
  --_rp-alert-radius: var(--rp-radius-md);
36
36
  }
37
- .rp-alert--radius-lg[data-v-8e95a4b4] {
37
+ .rp-alert--radius-lg[data-v-433c81a2] {
38
38
  --_rp-alert-radius: var(--rp-radius-lg);
39
39
  }
40
- .rp-alert--radius-xl[data-v-8e95a4b4] {
40
+ .rp-alert--radius-xl[data-v-433c81a2] {
41
41
  --_rp-alert-radius: var(--rp-radius-xl);
42
42
  }
43
- .rp-alert__icon[data-v-8e95a4b4] {
43
+ .rp-alert__icon[data-v-433c81a2] {
44
44
  display: inline-flex;
45
45
  flex: 0 0 auto;
46
46
  align-items: center;
@@ -49,37 +49,37 @@
49
49
  color: var(--_rp-alert-icon-fg);
50
50
  line-height: 0;
51
51
  }
52
- .rp-alert__icon[data-v-8e95a4b4] > svg {
52
+ .rp-alert__icon[data-v-433c81a2] > svg {
53
53
  display: block;
54
54
  width: 1rem;
55
55
  height: 1rem;
56
56
  }
57
- .rp-alert__content[data-v-8e95a4b4] {
57
+ .rp-alert__content[data-v-433c81a2] {
58
58
  display: grid;
59
59
  flex: 1 1 auto;
60
60
  min-width: 0;
61
61
  gap: var(--rp-spacing-1);
62
62
  }
63
- .rp-alert__title[data-v-8e95a4b4] {
63
+ .rp-alert__title[data-v-433c81a2] {
64
64
  color: var(--_rp-alert-title-fg);
65
65
  font-size: var(--rp-font-size-md);
66
66
  font-weight: var(--rp-font-weight-semibold);
67
67
  line-height: var(--rp-line-height-xs);
68
68
  }
69
- .rp-alert__description[data-v-8e95a4b4] {
69
+ .rp-alert__description[data-v-433c81a2] {
70
70
  margin: 0;
71
71
  }
72
- .rp-alert__body[data-v-8e95a4b4], .rp-alert__description[data-v-8e95a4b4] {
72
+ .rp-alert__body[data-v-433c81a2], .rp-alert__description[data-v-433c81a2] {
73
73
  min-width: 0;
74
74
  color: var(--_rp-alert-fg);
75
75
  }
76
- .rp-alert__action[data-v-8e95a4b4] {
76
+ .rp-alert__action[data-v-433c81a2] {
77
77
  display: inline-flex;
78
78
  flex: 0 0 auto;
79
79
  align-items: center;
80
80
  margin-left: auto;
81
81
  }
82
- .rp-alert__close[data-v-8e95a4b4] {
82
+ .rp-alert__close[data-v-433c81a2] {
83
83
  box-sizing: border-box;
84
84
  display: inline-flex;
85
85
  flex: 0 0 auto;
@@ -96,14 +96,14 @@
96
96
  cursor: pointer;
97
97
  transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast);
98
98
  }
99
- .rp-alert__close[data-v-8e95a4b4]:hover {
99
+ .rp-alert__close[data-v-433c81a2]:hover {
100
100
  background-color: color-mix(in srgb, var(--_rp-alert-icon-fg) 12%, transparent);
101
101
  }
102
- .rp-alert__close[data-v-8e95a4b4]:focus-visible {
102
+ .rp-alert__close[data-v-433c81a2]:focus-visible {
103
103
  outline: var(--rp-border-width-medium) solid var(--rp-color-focus-ring);
104
104
  outline-offset: 2px;
105
105
  }
106
- .rp-alert__close[data-v-8e95a4b4] > svg {
106
+ .rp-alert__close[data-v-433c81a2] > svg {
107
107
  display: block;
108
108
  width: 1rem;
109
109
  height: 1rem;
package/dist/alert.js CHANGED
@@ -6,14 +6,15 @@ import { i as getComponentVariantColorRoles, t as componentColors } from "./comp
6
6
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
7
7
  import { computed, createComponent, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, txt, unref, useSlots, watch } from "vue";
8
8
  //#region src/components/alert/useAlertColor.ts
9
- function getAlertColorStyle(color, variant, autoContrast) {
9
+ function getAlertColorStyle(color, variant, autoContrast, contrastColor) {
10
10
  if (!color && !variant) return void 0;
11
11
  const resolvedVariant = variant ?? "subtle";
12
12
  const roles = getComponentVariantColorRoles({
13
13
  color,
14
14
  variant: resolvedVariant,
15
15
  defaultColor: "cyan",
16
- autoContrast
16
+ autoContrast,
17
+ contrastColor
17
18
  });
18
19
  if (!roles) return void 0;
19
20
  return {
@@ -26,12 +27,12 @@ function getAlertColorStyle(color, variant, autoContrast) {
26
27
  }
27
28
  //#endregion
28
29
  //#region src/components/alert/alert.vue?vue&type=script&setup=true&vapor=true&lang.ts
29
- var t0 = template("<div data-v-8e95a4b4>");
30
+ var t0 = template("<div data-v-433c81a2>");
30
31
  var t1 = template(" ");
31
- var t2 = template("<p data-v-8e95a4b4> ");
32
- var t3 = template("<div data-v-8e95a4b4 class=rp-alert__content>");
33
- var t4 = template("<button data-v-8e95a4b4>");
34
- var t5 = template("<div data-v-8e95a4b4>", 1);
32
+ var t2 = template("<p data-v-433c81a2> ");
33
+ var t3 = template("<div data-v-433c81a2 class=rp-alert__content>");
34
+ var t4 = template("<button data-v-433c81a2>");
35
+ var t5 = template("<div data-v-433c81a2>", 1);
35
36
  delegateEvents("click");
36
37
  //#endregion
37
38
  //#region src/components/alert/alert.vue
@@ -48,7 +49,11 @@ var alert_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
48
49
  description: { default: "" },
49
50
  variant: {},
50
51
  color: {},
51
- autoContrast: { type: Boolean },
52
+ autoContrast: {
53
+ type: Boolean,
54
+ default: true
55
+ },
56
+ contrastColor: {},
52
57
  radius: {},
53
58
  role: { default: "alert" },
54
59
  closable: {
@@ -78,7 +83,7 @@ var alert_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
78
83
  [props.variant ?? ""]: Boolean(props.variant),
79
84
  [`radius-${props.radius}`]: Boolean(props.radius)
80
85
  }));
81
- const rootStyle = computed(() => getAlertColorStyle(props.color, props.variant, props.autoContrast));
86
+ const rootStyle = computed(() => getAlertColorStyle(props.color, props.variant, props.autoContrast, props.contrastColor));
82
87
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
83
88
  const rootAttrs = computed(() => getRootAttrs({
84
89
  class: rootClass.value,
@@ -159,7 +164,7 @@ var alert_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
159
164
  return n30;
160
165
  });
161
166
  }
162
- }), [["__scopeId", "data-v-8e95a4b4"]]);
167
+ }), [["__scopeId", "data-v-433c81a2"]]);
163
168
  //#endregion
164
169
  //#region src/components/alert/types.ts
165
170
  var alertParts = [
package/dist/avatar.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-avatar[data-v-0561357f] {
2
+ .rp-avatar[data-v-416c3281] {
3
3
  --_rp-avatar-size: var(--rp-size-control-md);
4
4
  --_rp-avatar-font-size: var(--rp-font-size-md);
5
5
  --_rp-avatar-radius: var(--rp-radius-full);
@@ -27,72 +27,72 @@
27
27
  border-radius: var(--_rp-avatar-radius);
28
28
  user-select: none;
29
29
  }
30
- .rp-avatar--surface[data-v-0561357f], .rp-avatar--outline[data-v-0561357f] {
30
+ .rp-avatar--surface[data-v-416c3281], .rp-avatar--outline[data-v-416c3281] {
31
31
  --_rp-avatar-border-width: var(--rp-border-width-thin);
32
32
  }
33
- .rp-avatar--size-xs[data-v-0561357f] {
33
+ .rp-avatar--size-xs[data-v-416c3281] {
34
34
  --_rp-avatar-size: var(--rp-size-control-xs);
35
35
  --_rp-avatar-font-size: var(--rp-font-size-xs);
36
36
  }
37
- .rp-avatar--size-sm[data-v-0561357f] {
37
+ .rp-avatar--size-sm[data-v-416c3281] {
38
38
  --_rp-avatar-size: var(--rp-size-control-sm);
39
39
  --_rp-avatar-font-size: var(--rp-font-size-sm);
40
40
  }
41
- .rp-avatar--size-md[data-v-0561357f] {
41
+ .rp-avatar--size-md[data-v-416c3281] {
42
42
  --_rp-avatar-size: var(--rp-size-control-md);
43
43
  --_rp-avatar-font-size: var(--rp-font-size-md);
44
44
  }
45
- .rp-avatar--size-lg[data-v-0561357f] {
45
+ .rp-avatar--size-lg[data-v-416c3281] {
46
46
  --_rp-avatar-size: var(--rp-size-control-lg);
47
47
  --_rp-avatar-font-size: var(--rp-font-size-lg);
48
48
  }
49
- .rp-avatar--size-xl[data-v-0561357f] {
49
+ .rp-avatar--size-xl[data-v-416c3281] {
50
50
  --_rp-avatar-size: var(--rp-size-control-xl);
51
51
  --_rp-avatar-font-size: var(--rp-font-size-xl);
52
52
  }
53
- .rp-avatar--radius-none[data-v-0561357f] {
53
+ .rp-avatar--radius-none[data-v-416c3281] {
54
54
  --_rp-avatar-radius: var(--rp-radius-none);
55
55
  }
56
- .rp-avatar--radius-xs[data-v-0561357f] {
56
+ .rp-avatar--radius-xs[data-v-416c3281] {
57
57
  --_rp-avatar-radius: var(--rp-radius-xs);
58
58
  }
59
- .rp-avatar--radius-sm[data-v-0561357f] {
59
+ .rp-avatar--radius-sm[data-v-416c3281] {
60
60
  --_rp-avatar-radius: var(--rp-radius-sm);
61
61
  }
62
- .rp-avatar--radius-md[data-v-0561357f] {
62
+ .rp-avatar--radius-md[data-v-416c3281] {
63
63
  --_rp-avatar-radius: var(--rp-radius-md);
64
64
  }
65
- .rp-avatar--radius-lg[data-v-0561357f] {
65
+ .rp-avatar--radius-lg[data-v-416c3281] {
66
66
  --_rp-avatar-radius: var(--rp-radius-lg);
67
67
  }
68
- .rp-avatar--radius-xl[data-v-0561357f] {
68
+ .rp-avatar--radius-xl[data-v-416c3281] {
69
69
  --_rp-avatar-radius: var(--rp-radius-xl);
70
70
  }
71
- .rp-avatar--radius-full[data-v-0561357f] {
71
+ .rp-avatar--radius-full[data-v-416c3281] {
72
72
  --_rp-avatar-radius: var(--rp-radius-full);
73
73
  }
74
- .rp-avatar__image[data-v-0561357f] {
74
+ .rp-avatar__image[data-v-416c3281] {
75
75
  display: block;
76
76
  width: 100%;
77
77
  height: 100%;
78
78
  object-fit: cover;
79
79
  }
80
- .rp-avatar__fallback[data-v-0561357f] {
80
+ .rp-avatar__fallback[data-v-416c3281] {
81
81
  display: inline-flex;
82
82
  align-items: center;
83
83
  justify-content: center;
84
84
  width: 100%;
85
85
  height: 100%;
86
86
  }
87
- .rp-avatar__fallback[data-v-0561357f] > svg {
87
+ .rp-avatar__fallback[data-v-416c3281] > svg {
88
88
  display: block;
89
89
  width: 50%;
90
90
  height: 50%;
91
91
  }
92
- .rp-avatar__initials[data-v-0561357f] {
92
+ .rp-avatar__initials[data-v-416c3281] {
93
93
  text-transform: uppercase;
94
94
  }
95
- .rp-avatar__icon[data-v-0561357f] {
95
+ .rp-avatar__icon[data-v-416c3281] {
96
96
  width: 50%;
97
97
  height: 50%;
98
98
  }
package/dist/avatar.js CHANGED
@@ -15,12 +15,13 @@ var user_default = markRaw(defineVaporComponent({
15
15
  }));
16
16
  //#endregion
17
17
  //#region src/components/avatar/useAvatarColor.ts
18
- function getAvatarColorStyle(color, variant, autoContrast) {
18
+ function getAvatarColorStyle(color, variant, autoContrast, contrastColor) {
19
19
  if (!color && !variant) return void 0;
20
20
  const roles = getComponentVariantColorRoles({
21
21
  color,
22
22
  variant: variant ?? "solid",
23
- autoContrast
23
+ autoContrast,
24
+ contrastColor
24
25
  });
25
26
  if (!roles) return void 0;
26
27
  return {
@@ -31,10 +32,10 @@ function getAvatarColorStyle(color, variant, autoContrast) {
31
32
  }
32
33
  //#endregion
33
34
  //#region src/components/avatar/avatar.vue?vue&type=script&setup=true&vapor=true&lang.ts
34
- var t0 = template("<img data-v-0561357f>");
35
- var t1 = template("<span data-v-0561357f class=rp-avatar__initials> ");
36
- var t2 = template("<span data-v-0561357f>");
37
- var t3 = template("<span data-v-0561357f>", 1);
35
+ var t0 = template("<img data-v-416c3281>");
36
+ var t1 = template("<span data-v-416c3281 class=rp-avatar__initials> ");
37
+ var t2 = template("<span data-v-416c3281>");
38
+ var t3 = template("<span data-v-416c3281>", 1);
38
39
  //#endregion
39
40
  //#region src/components/avatar/avatar.vue
40
41
  var avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -48,7 +49,11 @@ var avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
48
49
  name: {},
49
50
  variant: {},
50
51
  color: {},
51
- autoContrast: { type: Boolean },
52
+ autoContrast: {
53
+ type: Boolean,
54
+ default: true
55
+ },
56
+ contrastColor: {},
52
57
  size: {},
53
58
  radius: {},
54
59
  classNames: {},
@@ -76,7 +81,7 @@ var avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
76
81
  [`size-${props.size}`]: Boolean(props.size),
77
82
  [`radius-${props.radius}`]: Boolean(props.radius)
78
83
  }));
79
- const rootStyle = computed(() => getAvatarColorStyle(props.color, props.variant, props.autoContrast));
84
+ const rootStyle = computed(() => getAvatarColorStyle(props.color, props.variant, props.autoContrast, props.contrastColor));
80
85
  const rootAttrs = computed(() => getRootAttrs({
81
86
  class: rootClass.value,
82
87
  style: rootStyle.value,
@@ -137,7 +142,7 @@ var avatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
137
142
  }, 261);
138
143
  return n13;
139
144
  }
140
- }), [["__scopeId", "data-v-0561357f"]]);
145
+ }), [["__scopeId", "data-v-416c3281"]]);
141
146
  //#endregion
142
147
  //#region src/components/avatar/types.ts
143
148
  var avatarParts = [
package/dist/badge.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-badge[data-v-0b9a55a5] {
2
+ .rp-badge[data-v-1bf7c45c] {
3
3
  --_rp-badge-height: 20px;
4
4
  --_rp-badge-padding-x: 10px;
5
5
  --_rp-badge-font-size: 11px;
@@ -28,65 +28,65 @@
28
28
  border-radius: var(--_rp-badge-radius);
29
29
  transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast);
30
30
  }
31
- .rp-badge--size-xs[data-v-0b9a55a5] {
31
+ .rp-badge--size-xs[data-v-1bf7c45c] {
32
32
  --_rp-badge-height: 16px;
33
33
  --_rp-badge-padding-x: 6px;
34
34
  --_rp-badge-font-size: 9px;
35
35
  }
36
- .rp-badge--size-sm[data-v-0b9a55a5] {
36
+ .rp-badge--size-sm[data-v-1bf7c45c] {
37
37
  --_rp-badge-height: 18px;
38
38
  --_rp-badge-padding-x: 8px;
39
39
  --_rp-badge-font-size: 10px;
40
40
  }
41
- .rp-badge--size-md[data-v-0b9a55a5] {
41
+ .rp-badge--size-md[data-v-1bf7c45c] {
42
42
  --_rp-badge-height: 20px;
43
43
  --_rp-badge-padding-x: 10px;
44
44
  --_rp-badge-font-size: 11px;
45
45
  }
46
- .rp-badge--size-lg[data-v-0b9a55a5] {
46
+ .rp-badge--size-lg[data-v-1bf7c45c] {
47
47
  --_rp-badge-height: 26px;
48
48
  --_rp-badge-padding-x: 12px;
49
49
  --_rp-badge-font-size: 13px;
50
50
  }
51
- .rp-badge--size-xl[data-v-0b9a55a5] {
51
+ .rp-badge--size-xl[data-v-1bf7c45c] {
52
52
  --_rp-badge-height: 32px;
53
53
  --_rp-badge-padding-x: 16px;
54
54
  --_rp-badge-font-size: 16px;
55
55
  }
56
- .rp-badge--radius-none[data-v-0b9a55a5] {
56
+ .rp-badge--radius-none[data-v-1bf7c45c] {
57
57
  --_rp-badge-radius: var(--rp-radius-none);
58
58
  }
59
- .rp-badge--radius-xs[data-v-0b9a55a5] {
59
+ .rp-badge--radius-xs[data-v-1bf7c45c] {
60
60
  --_rp-badge-radius: var(--rp-radius-xs);
61
61
  }
62
- .rp-badge--radius-sm[data-v-0b9a55a5] {
62
+ .rp-badge--radius-sm[data-v-1bf7c45c] {
63
63
  --_rp-badge-radius: var(--rp-radius-sm);
64
64
  }
65
- .rp-badge--radius-md[data-v-0b9a55a5] {
65
+ .rp-badge--radius-md[data-v-1bf7c45c] {
66
66
  --_rp-badge-radius: var(--rp-radius-md);
67
67
  }
68
- .rp-badge--radius-lg[data-v-0b9a55a5] {
68
+ .rp-badge--radius-lg[data-v-1bf7c45c] {
69
69
  --_rp-badge-radius: var(--rp-radius-lg);
70
70
  }
71
- .rp-badge--radius-xl[data-v-0b9a55a5] {
71
+ .rp-badge--radius-xl[data-v-1bf7c45c] {
72
72
  --_rp-badge-radius: var(--rp-radius-xl);
73
73
  }
74
- .rp-badge--radius-full[data-v-0b9a55a5] {
74
+ .rp-badge--radius-full[data-v-1bf7c45c] {
75
75
  --_rp-badge-radius: var(--rp-radius-full);
76
76
  }
77
- .rp-badge__left[data-v-0b9a55a5], .rp-badge__right[data-v-0b9a55a5] {
77
+ .rp-badge__left[data-v-1bf7c45c], .rp-badge__right[data-v-1bf7c45c] {
78
78
  display: inline-flex;
79
79
  align-items: center;
80
80
  justify-content: center;
81
81
  flex: 0 0 auto;
82
82
  line-height: 0;
83
83
  }
84
- .rp-badge__left[data-v-0b9a55a5] > svg, .rp-badge__right[data-v-0b9a55a5] > svg {
84
+ .rp-badge__left[data-v-1bf7c45c] > svg, .rp-badge__right[data-v-1bf7c45c] > svg {
85
85
  display: block;
86
86
  width: 1em;
87
87
  height: 1em;
88
88
  }
89
- .rp-badge__label[data-v-0b9a55a5] {
89
+ .rp-badge__label[data-v-1bf7c45c] {
90
90
  display: inline-block;
91
91
  min-width: 0;
92
92
  overflow: hidden;
package/dist/badge.js CHANGED
@@ -5,12 +5,13 @@ import { i as getComponentVariantColorRoles, t as componentColors } from "./comp
5
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
6
  import { computed, createIf, createSlot, defineVaporComponent, renderEffect, setDynamicProps, setInsertionState, template, unref } from "vue";
7
7
  //#region src/components/badge/useBadgeColor.ts
8
- function getBadgeColorStyle(color, variant, autoContrast) {
8
+ function getBadgeColorStyle(color, variant, autoContrast, contrastColor) {
9
9
  if (!color && !variant) return void 0;
10
10
  const roles = getComponentVariantColorRoles({
11
11
  color,
12
12
  variant: variant ?? "solid",
13
- autoContrast
13
+ autoContrast,
14
+ contrastColor
14
15
  });
15
16
  if (!roles) return void 0;
16
17
  return {
@@ -21,8 +22,8 @@ function getBadgeColorStyle(color, variant, autoContrast) {
21
22
  }
22
23
  //#endregion
23
24
  //#region src/components/badge/badge.vue?vue&type=script&setup=true&vapor=true&lang.ts
24
- var t0 = template("<span data-v-0b9a55a5>");
25
- var t1 = template("<span data-v-0b9a55a5>", 1);
25
+ var t0 = template("<span data-v-1bf7c45c>");
26
+ var t1 = template("<span data-v-1bf7c45c>", 1);
26
27
  //#endregion
27
28
  //#region src/components/badge/badge.vue
28
29
  var badge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -32,7 +33,11 @@ var badge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
32
33
  props: {
33
34
  variant: {},
34
35
  color: {},
35
- autoContrast: { type: Boolean },
36
+ autoContrast: {
37
+ type: Boolean,
38
+ default: true
39
+ },
40
+ contrastColor: {},
36
41
  size: {},
37
42
  radius: {},
38
43
  ariaLabel: {},
@@ -46,7 +51,7 @@ var badge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
46
51
  [`size-${props.size}`]: Boolean(props.size),
47
52
  [`radius-${props.radius}`]: Boolean(props.radius)
48
53
  }));
49
- const rootStyle = computed(() => getBadgeColorStyle(props.color, props.variant, props.autoContrast));
54
+ const rootStyle = computed(() => getBadgeColorStyle(props.color, props.variant, props.autoContrast, props.contrastColor));
50
55
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
51
56
  const rootAttrs = computed(() => getRootAttrs({
52
57
  class: rootClass.value,
@@ -81,7 +86,7 @@ var badge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
81
86
  });
82
87
  return n12;
83
88
  }
84
- }), [["__scopeId", "data-v-0b9a55a5"]]);
89
+ }), [["__scopeId", "data-v-1bf7c45c"]]);
85
90
  //#endregion
86
91
  //#region src/components/badge/types.ts
87
92
  var badgeParts = [