ropav 0.0.8 → 0.0.9

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 (146) hide show
  1. package/dist/accordion.css +10 -10
  2. package/dist/accordion.js +2 -2
  3. package/dist/alert.css +109 -0
  4. package/dist/alert.js +168 -0
  5. package/dist/aspect-ratio.css +17 -0
  6. package/dist/aspect-ratio.js +26 -0
  7. package/dist/avatar.css +97 -0
  8. package/dist/avatar.js +161 -0
  9. package/dist/badge.css +40 -115
  10. package/dist/badge.js +19 -16
  11. package/dist/base.css +609 -180
  12. package/dist/button-link.css +161 -0
  13. package/dist/button-link.js +108 -0
  14. package/dist/button.css +50 -229
  15. package/dist/button.js +7 -9
  16. package/dist/card.css +12 -12
  17. package/dist/check.js +12 -0
  18. package/dist/checkbox.css +16 -57
  19. package/dist/checkbox.js +14 -31
  20. package/dist/collapse.css +2 -2
  21. package/dist/collapse.js +1 -1
  22. package/dist/color-input.css +108 -0
  23. package/dist/color-input.js +344 -0
  24. package/dist/color-picker.css +304 -0
  25. package/dist/color-picker.js +717 -0
  26. package/dist/color-picker2.js +18 -0
  27. package/dist/color-swatch.css +50 -0
  28. package/dist/color-swatch.js +73 -0
  29. package/dist/color.js +190 -0
  30. package/dist/componentColors.js +206 -13
  31. package/dist/components/alert/alert.d.ts +30 -0
  32. package/dist/components/alert/index.d.ts +3 -0
  33. package/dist/components/alert/index.js +2 -0
  34. package/dist/components/alert/types.d.ts +20 -0
  35. package/dist/components/alert/useAlertColor.d.ts +3 -0
  36. package/dist/components/aspect-ratio/aspect-ratio.d.ts +21 -0
  37. package/dist/components/aspect-ratio/index.d.ts +2 -0
  38. package/dist/components/aspect-ratio/index.js +2 -0
  39. package/dist/components/aspect-ratio/types.d.ts +3 -0
  40. package/dist/components/avatar/avatar.d.ts +24 -0
  41. package/dist/components/avatar/index.d.ts +3 -0
  42. package/dist/components/avatar/index.js +2 -0
  43. package/dist/components/avatar/types.d.ts +20 -0
  44. package/dist/components/avatar/useAvatarColor.d.ts +3 -0
  45. package/dist/components/badge/types.d.ts +2 -1
  46. package/dist/components/badge/useBadgeColor.d.ts +3 -8
  47. package/dist/components/button/types.d.ts +1 -0
  48. package/dist/components/button/useButtonColor.d.ts +3 -13
  49. package/dist/components/button-link/button-link.d.ts +27 -0
  50. package/dist/components/button-link/index.d.ts +2 -0
  51. package/dist/components/button-link/index.js +2 -0
  52. package/dist/components/button-link/types.d.ts +20 -0
  53. package/dist/components/checkbox/types.d.ts +1 -0
  54. package/dist/components/checkbox/useCheckbox.d.ts +2 -4
  55. package/dist/components/color-input/color-input.d.ts +29 -0
  56. package/dist/components/color-input/index.d.ts +2 -0
  57. package/dist/components/color-input/index.js +2 -0
  58. package/dist/components/color-input/types.d.ts +34 -0
  59. package/dist/components/color-input/useColorInput.d.ts +27 -0
  60. package/dist/components/color-input/useColorInputEyeDropper.d.ts +13 -0
  61. package/dist/components/color-input/useColorInputPopover.d.ts +11 -0
  62. package/dist/components/color-input/useColorInputValue.d.ts +8 -0
  63. package/dist/components/color-picker/color-picker-saturation.d.ts +21 -0
  64. package/dist/components/color-picker/color-picker-slider.d.ts +21 -0
  65. package/dist/components/color-picker/color-picker-utils.d.ts +23 -0
  66. package/dist/components/color-picker/color-picker.d.ts +23 -0
  67. package/dist/components/color-picker/index.d.ts +3 -0
  68. package/dist/components/color-picker/index.js +3 -0
  69. package/dist/components/color-picker/types.d.ts +39 -0
  70. package/dist/components/color-picker/useColorPickerDrag.d.ts +11 -0
  71. package/dist/components/color-picker/useColorPickerSwatches.d.ts +21 -0
  72. package/dist/components/color-picker/useColorPickerValue.d.ts +15 -0
  73. package/dist/components/color-swatch/color-swatch.d.ts +21 -0
  74. package/dist/components/color-swatch/index.d.ts +2 -0
  75. package/dist/components/color-swatch/index.js +2 -0
  76. package/dist/components/color-swatch/types.d.ts +6 -0
  77. package/dist/components/color-swatch/useColorSwatchColor.d.ts +5 -0
  78. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  79. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +1 -1
  80. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +1 -1
  81. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +1 -1
  82. package/dist/components/field/types.d.ts +0 -2
  83. package/dist/components/field/useField.d.ts +0 -2
  84. package/dist/components/icon-button/types.d.ts +1 -0
  85. package/dist/components/input/types.d.ts +3 -0
  86. package/dist/components/number-input/index.d.ts +2 -0
  87. package/dist/components/number-input/index.js +2 -0
  88. package/dist/components/number-input/number-input.d.ts +29 -0
  89. package/dist/components/number-input/types.d.ts +34 -0
  90. package/dist/components/number-input/useNumberInput.d.ts +31 -0
  91. package/dist/components/popover/index.d.ts +1 -0
  92. package/dist/components/popover/index.js +2 -1
  93. package/dist/components/popover/types.d.ts +2 -1
  94. package/dist/components/progress/types.d.ts +1 -1
  95. package/dist/components/radio/types.d.ts +3 -0
  96. package/dist/components/radio/useRadio.d.ts +2 -4
  97. package/dist/components/select/index.d.ts +1 -1
  98. package/dist/components/select/types.d.ts +3 -0
  99. package/dist/components/slider/index.d.ts +2 -1
  100. package/dist/components/slider/index.js +2 -2
  101. package/dist/components/slider/range-slider.d.ts +45 -0
  102. package/dist/components/slider/types.d.ts +14 -2
  103. package/dist/components/slider/useRangeSlider.d.ts +59 -0
  104. package/dist/components/slider/useRangeSliderTooltipCollision.d.ts +7 -0
  105. package/dist/components/slider/useRangeSliderTooltipTransition.d.ts +4 -0
  106. package/dist/components/switch/useSwitch.d.ts +2 -3
  107. package/dist/components/tooltip/types.d.ts +1 -0
  108. package/dist/dropdown-menu.css +17 -17
  109. package/dist/field.css +15 -18
  110. package/dist/field.js +17 -35
  111. package/dist/icon-button.css +57 -236
  112. package/dist/icon-button.js +5 -6
  113. package/dist/index.d.ts +8 -0
  114. package/dist/index.js +16 -4
  115. package/dist/input.css +40 -46
  116. package/dist/input.js +39 -21
  117. package/dist/minus.js +12 -0
  118. package/dist/modal.css +9 -9
  119. package/dist/modal.js +1 -1
  120. package/dist/number-input.css +86 -0
  121. package/dist/number-input.js +350 -0
  122. package/dist/overlay.css +5 -5
  123. package/dist/overlay.js +3 -3
  124. package/dist/popover.css +54 -21
  125. package/dist/popover.js +8 -5
  126. package/dist/popover2.js +17 -0
  127. package/dist/progress.css +9 -30
  128. package/dist/progress.js +3 -6
  129. package/dist/radio.css +34 -62
  130. package/dist/radio.js +28 -16
  131. package/dist/select.css +105 -61
  132. package/dist/select.js +12 -8
  133. package/dist/slider.css +508 -41
  134. package/dist/slider.js +1122 -48
  135. package/dist/switch.css +19 -44
  136. package/dist/switch.js +4 -5
  137. package/dist/tabs.css +36 -36
  138. package/dist/tabs.js +1 -1
  139. package/dist/textarea.css +33 -25
  140. package/dist/tooltip.css +7 -35
  141. package/dist/tooltip.js +13 -8
  142. package/dist/useButtonColor.js +16 -14
  143. package/package.json +40 -8
  144. package/src/styles/_mixins.scss +25 -41
  145. package/src/styles/_tokens.scss +615 -182
  146. package/src/styles/_variables.scss +177 -49
package/dist/radio.css CHANGED
@@ -1,9 +1,9 @@
1
- .rp-radio[data-v-18269eb4] {
2
- --_rp-radio-color: var(--_rp-radio-custom-color, var(--rp-color-control-selected-bg));
3
- --_rp-radio-on-color: var(--_rp-radio-custom-on-color, var(--rp-color-control-selected-fg));
4
- --_rp-radio-size: 18px;
5
- --_rp-radio-dot: 8px;
6
- --_rp-radio-font-size: var(--rp-font-size-base);
1
+ .rp-radio[data-v-c9fb5041] {
2
+ --_rp-radio-color: var(--rp-color-control-selected-bg);
3
+ --_rp-radio-on-color: var(--rp-color-control-selected-fg);
4
+ --_rp-radio-size: 24px;
5
+ --_rp-radio-dot: 10px;
6
+ --_rp-radio-font-size: var(--rp-font-size-md);
7
7
  --_rp-radio-checked-bg: var(--_rp-radio-color);
8
8
  --_rp-radio-checked-border: var(--_rp-radio-color);
9
9
  --_rp-radio-checked-dot: var(--_rp-radio-on-color);
@@ -13,15 +13,15 @@
13
13
  font-family: var(--rp-font-family);
14
14
  user-select: none;
15
15
  }
16
- .rp-radio--disabled[data-v-18269eb4] {
16
+ .rp-radio--disabled[data-v-c9fb5041] {
17
17
  opacity: var(--rp-opacity-disabled);
18
18
  cursor: not-allowed;
19
19
  }
20
- .rp-radio[data-v-18269eb4] {
20
+ .rp-radio[data-v-c9fb5041] {
21
21
  gap: var(--rp-spacing-2);
22
22
  font-size: var(--_rp-radio-font-size);
23
23
  }
24
- .rp-radio__native[data-v-18269eb4] {
24
+ .rp-radio__native[data-v-c9fb5041] {
25
25
  position: absolute;
26
26
  width: 1px;
27
27
  height: 1px;
@@ -33,11 +33,11 @@
33
33
  border-width: 0;
34
34
  pointer-events: none;
35
35
  }
36
- .rp-radio__native:focus-visible + .rp-radio__dot[data-v-18269eb4] {
37
- border-color: var(--rp-color-primary);
36
+ .rp-radio__native:focus-visible + .rp-radio__dot[data-v-c9fb5041] {
37
+ border-color: var(--rp-color-control-border-focus);
38
38
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
39
39
  }
40
- .rp-radio__dot[data-v-18269eb4] {
40
+ .rp-radio__dot[data-v-c9fb5041] {
41
41
  display: inline-flex;
42
42
  align-items: center;
43
43
  justify-content: center;
@@ -49,7 +49,7 @@
49
49
  background-color: var(--rp-color-control-bg);
50
50
  transition: background-color var(--rp-transition-fast), border-color var(--rp-transition-fast);
51
51
  }
52
- .rp-radio__dot[data-v-18269eb4]::after {
52
+ .rp-radio__dot[data-v-c9fb5041]::after {
53
53
  content: "";
54
54
  width: var(--_rp-radio-dot);
55
55
  height: var(--_rp-radio-dot);
@@ -58,75 +58,47 @@
58
58
  transform: scale(0);
59
59
  transition: transform var(--rp-transition-fast);
60
60
  }
61
- .rp-radio--checked .rp-radio__dot[data-v-18269eb4] {
61
+ .rp-radio--checked .rp-radio__dot[data-v-c9fb5041] {
62
62
  background-color: var(--_rp-radio-checked-bg);
63
63
  border-color: var(--_rp-radio-checked-border);
64
64
  }
65
- .rp-radio--checked .rp-radio__dot[data-v-18269eb4]::after {
65
+ .rp-radio--checked .rp-radio__dot[data-v-c9fb5041]::after {
66
66
  transform: scale(1);
67
67
  }
68
- .rp-radio__label[data-v-18269eb4] {
69
- line-height: var(--rp-line-height-normal);
68
+ .rp-radio__label[data-v-c9fb5041] {
69
+ line-height: var(--rp-line-height-md);
70
70
  color: var(--rp-color-text);
71
71
  }
72
- .rp-radio--color-primary[data-v-18269eb4] {
73
- --_rp-radio-color: var(--rp-color-primary);
74
- --_rp-radio-on-color: var(--rp-color-on-primary);
75
- }
76
- .rp-radio--color-secondary[data-v-18269eb4] {
77
- --_rp-radio-color: var(--rp-color-secondary);
78
- --_rp-radio-on-color: var(--rp-color-on-secondary);
79
- }
80
- .rp-radio--color-success[data-v-18269eb4] {
81
- --_rp-radio-color: var(--rp-color-success);
82
- --_rp-radio-on-color: var(--rp-color-on-success);
83
- }
84
- .rp-radio--color-warning[data-v-18269eb4] {
85
- --_rp-radio-color: var(--rp-color-warning);
86
- --_rp-radio-on-color: var(--rp-color-on-warning);
87
- }
88
- .rp-radio--color-danger[data-v-18269eb4] {
89
- --_rp-radio-color: var(--rp-color-danger);
90
- --_rp-radio-on-color: var(--rp-color-on-danger);
91
- }
92
- .rp-radio--color-info[data-v-18269eb4] {
93
- --_rp-radio-color: var(--rp-color-info);
94
- --_rp-radio-on-color: var(--rp-color-on-info);
95
- }
96
- .rp-radio--color-neutral[data-v-18269eb4] {
97
- --_rp-radio-color: var(--rp-color-neutral);
98
- --_rp-radio-on-color: var(--rp-color-on-neutral);
99
- }
100
- .rp-radio--outline[data-v-18269eb4] {
72
+ .rp-radio--outline[data-v-c9fb5041] {
101
73
  --_rp-radio-checked-bg: var(--rp-color-control-bg);
102
74
  --_rp-radio-checked-border: var(--_rp-radio-color);
103
75
  --_rp-radio-checked-dot: var(--_rp-radio-color);
104
76
  }
105
- .rp-radio--size-xs[data-v-18269eb4] {
106
- --_rp-radio-size: 14px;
77
+ .rp-radio--size-xs[data-v-c9fb5041] {
78
+ --_rp-radio-size: 16px;
107
79
  --_rp-radio-dot: 6px;
108
80
  --_rp-radio-font-size: var(--rp-font-size-xs);
109
81
  }
110
- .rp-radio--size-sm[data-v-18269eb4] {
111
- --_rp-radio-size: 16px;
112
- --_rp-radio-dot: 7px;
113
- --_rp-radio-font-size: var(--rp-font-size-sm);
114
- }
115
- .rp-radio--size-md[data-v-18269eb4] {
116
- --_rp-radio-size: 18px;
82
+ .rp-radio--size-sm[data-v-c9fb5041] {
83
+ --_rp-radio-size: 20px;
117
84
  --_rp-radio-dot: 8px;
118
- --_rp-radio-font-size: var(--rp-font-size-base);
85
+ --_rp-radio-font-size: var(--rp-font-size-sm);
119
86
  }
120
- .rp-radio--size-lg[data-v-18269eb4] {
121
- --_rp-radio-size: 22px;
87
+ .rp-radio--size-md[data-v-c9fb5041] {
88
+ --_rp-radio-size: 24px;
122
89
  --_rp-radio-dot: 10px;
90
+ --_rp-radio-font-size: var(--rp-font-size-md);
91
+ }
92
+ .rp-radio--size-lg[data-v-c9fb5041] {
93
+ --_rp-radio-size: 30px;
94
+ --_rp-radio-dot: 14px;
123
95
  --_rp-radio-font-size: var(--rp-font-size-lg);
124
96
  }
125
- .rp-radio--size-xl[data-v-18269eb4] {
126
- --_rp-radio-size: 26px;
127
- --_rp-radio-dot: 12px;
97
+ .rp-radio--size-xl[data-v-c9fb5041] {
98
+ --_rp-radio-size: 36px;
99
+ --_rp-radio-dot: 16px;
128
100
  --_rp-radio-font-size: var(--rp-font-size-xl);
129
- }.rp-radio-group[data-v-a2c46e46] {
101
+ }.rp-radio-group[data-v-4ef9fed2] {
130
102
  display: flex;
131
103
  flex-direction: column;
132
104
  gap: var(--rp-spacing-3);
package/dist/radio.js CHANGED
@@ -1,21 +1,22 @@
1
1
  import './radio.css';
2
- import { t as useRequiredInject } from "./useRequiredInject.js";
3
2
  import { t as bem } from "./bem.js";
3
+ import { n as getComponentColorValue, r as getComponentContrastColor } from "./componentColors.js";
4
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
- import { n as getComponentCustomColor, r as isComponentPresetColor } from "./componentColors.js";
5
+ import { t as useRequiredInject } from "./useRequiredInject.js";
6
6
  import { t as useControlState } from "./useControlState.js";
7
7
  import { child, computed, createIf, createSlot, defineVaporComponent, on, provide, renderEffect, setAttr, setClass, setInsertionState, setProp, setStyle, setValue, template, unref, useId } from "vue";
8
8
  //#region src/components/radio/types.ts
9
9
  var radioGroupKey = Symbol("radioGroup");
10
10
  //#endregion
11
11
  //#region src/components/radio/useRadio.ts
12
- function getRadioColorStyle(color) {
13
- const customColor = getComponentCustomColor(color);
14
- if (!customColor) return void 0;
15
- return {
16
- "--_rp-radio-custom-color": customColor,
17
- "--_rp-radio-custom-on-color": "var(--rp-color-on-primary)"
18
- };
12
+ function getRadioColorStyle(color, autoContrast) {
13
+ const colorValue = getComponentColorValue(color);
14
+ if (color && !colorValue) return void 0;
15
+ if (!colorValue && !autoContrast) return void 0;
16
+ const style = {};
17
+ if (colorValue) style["--_rp-radio-color"] = colorValue;
18
+ if (autoContrast) style["--_rp-radio-on-color"] = getComponentContrastColor(color ?? "primary", { autoContrast });
19
+ return style;
19
20
  }
20
21
  function useRadio(props) {
21
22
  const group = useRequiredInject(radioGroupKey, "RpRadio");
@@ -23,15 +24,15 @@ function useRadio(props) {
23
24
  const isDisabled = computed(() => props.disabled || group.disabled);
24
25
  const variant = computed(() => props.variant ?? group.variant);
25
26
  const color = computed(() => props.color ?? group.color);
27
+ const autoContrast = computed(() => props.autoContrast ?? group.autoContrast);
26
28
  const size = computed(() => props.size ?? group.size);
27
29
  const rootClass = computed(() => bem("rp-radio", {
28
30
  checked: isChecked.value,
29
31
  disabled: isDisabled.value,
30
32
  [variant.value ?? ""]: Boolean(variant.value),
31
- [`color-${color.value}`]: isComponentPresetColor(color.value),
32
33
  [`size-${size.value}`]: Boolean(size.value)
33
34
  }));
34
- const rootStyle = computed(() => getRadioColorStyle(color.value));
35
+ const rootStyle = computed(() => getRadioColorStyle(color.value, autoContrast.value));
35
36
  function onSelect() {
36
37
  if (isDisabled.value) return;
37
38
  group.select(props.value);
@@ -72,6 +73,9 @@ function useRadioGroup(props, emitUpdate) {
72
73
  get color() {
73
74
  return props.color;
74
75
  },
76
+ get autoContrast() {
77
+ return props.autoContrast;
78
+ },
75
79
  get size() {
76
80
  return props.size;
77
81
  },
@@ -86,8 +90,8 @@ function useRadioGroup(props, emitUpdate) {
86
90
  }
87
91
  //#endregion
88
92
  //#region src/components/radio/radio.vue?vue&type=script&setup=true&vapor=true&lang.ts
89
- var t0$1 = template("<span data-v-18269eb4 class=rp-radio__label>");
90
- var t1 = template("<label data-v-18269eb4><input data-v-18269eb4 type=radio class=rp-radio__native><span data-v-18269eb4 class=rp-radio__dot></span>", 1);
93
+ var t0$1 = template("<span data-v-c9fb5041 class=rp-radio__label>");
94
+ var t1 = template("<label data-v-c9fb5041><input data-v-c9fb5041 type=radio class=rp-radio__native><span data-v-c9fb5041 class=rp-radio__dot></span>", 1);
91
95
  //#endregion
92
96
  //#region src/components/radio/radio.vue
93
97
  var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -97,6 +101,10 @@ var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
97
101
  value: {},
98
102
  variant: { default: void 0 },
99
103
  color: { default: void 0 },
104
+ autoContrast: {
105
+ type: Boolean,
106
+ default: void 0
107
+ },
100
108
  size: { default: void 0 },
101
109
  disabled: {
102
110
  type: Boolean,
@@ -130,10 +138,10 @@ var radio_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
130
138
  });
131
139
  return n5;
132
140
  }
133
- }), [["__scopeId", "data-v-18269eb4"]]);
141
+ }), [["__scopeId", "data-v-c9fb5041"]]);
134
142
  //#endregion
135
143
  //#region src/components/radio/radio-group.vue?vue&type=script&setup=true&vapor=true&lang.ts
136
- var t0 = template("<div data-v-a2c46e46 role=radiogroup>", 1);
144
+ var t0 = template("<div data-v-4ef9fed2 role=radiogroup>", 1);
137
145
  //#endregion
138
146
  //#region src/components/radio/radio-group.vue
139
147
  var radio_group_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -145,6 +153,10 @@ var radio_group_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
145
153
  modelValue: {},
146
154
  variant: { default: void 0 },
147
155
  color: { default: void 0 },
156
+ autoContrast: {
157
+ type: Boolean,
158
+ default: void 0
159
+ },
148
160
  size: { default: void 0 },
149
161
  disabled: {
150
162
  type: Boolean,
@@ -187,6 +199,6 @@ var radio_group_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
187
199
  createSlot("default", null, null, 1);
188
200
  return n1;
189
201
  }
190
- }), [["__scopeId", "data-v-a2c46e46"]]);
202
+ }), [["__scopeId", "data-v-4ef9fed2"]]);
191
203
  //#endregion
192
204
  export { radio_default as n, radio_group_default as t };
package/dist/select.css CHANGED
@@ -1,33 +1,77 @@
1
- .rp-select[data-v-9838513c] {
1
+ .rp-select[data-v-abf4b97a] {
2
+ --_rp-select-height: var(--rp-size-control-md);
3
+ --_rp-select-padding-x: calc(var(--rp-size-control-md) / 3);
4
+ --_rp-select-font-size: var(--rp-font-size-md);
5
+ --_rp-select-option-min-height: calc(var(--rp-size-control-md) - var(--rp-spacing-4));
6
+ --_rp-select-option-padding-y: var(--rp-spacing-1);
2
7
  --_rp-select-radius: var(--rp-radius-sm);
3
- --_rp-select-invalid-border: var(--rp-color-danger);
4
- --_rp-select-invalid-ring: color-mix(in srgb, var(--rp-color-danger) 32%, transparent);
5
- --_rp-select-option-focused-bg: var(--rp-color-surface-hover);
8
+ --_rp-select-invalid-border: var(--rp-color-red-filled);
9
+ --_rp-select-invalid-ring: color-mix(in srgb, var(--rp-color-red-filled) 32%, transparent);
10
+ --_rp-select-option-focused-bg: var(--rp-color-default-hover);
6
11
  position: relative;
7
12
  display: inline-flex;
8
13
  font-family: var(--rp-font-family);
9
14
  font-weight: var(--rp-font-weight-normal);
10
- line-height: var(--rp-line-height-none);
11
- }
12
- html.dark .rp-select[data-v-9838513c] {
13
- --_rp-select-invalid-border: var(--rp-color-danger-fg);
14
- --_rp-select-invalid-ring: color-mix(in srgb, var(--rp-color-danger-fg) 32%, transparent);
15
- --_rp-select-option-focused-bg: var(--rp-color-button-default-bg-active);
16
- }
17
- .rp-select--disabled[data-v-9838513c] {
15
+ line-height: 1;
16
+ }
17
+ .rp-select--size-xs[data-v-abf4b97a] {
18
+ --_rp-select-height: var(--rp-size-control-xs);
19
+ --_rp-select-padding-x: calc(var(--rp-size-control-xs) / 3);
20
+ --_rp-select-font-size: var(--rp-font-size-xs);
21
+ --_rp-select-option-min-height: calc(var(--rp-size-control-xs) - var(--rp-spacing-2));
22
+ --_rp-select-option-padding-y: calc(var(--rp-spacing-1) / 2);
23
+ }
24
+ .rp-select--size-sm[data-v-abf4b97a] {
25
+ --_rp-select-height: var(--rp-size-control-sm);
26
+ --_rp-select-padding-x: calc(var(--rp-size-control-sm) / 3);
27
+ --_rp-select-font-size: var(--rp-font-size-sm);
28
+ --_rp-select-option-min-height: calc(var(--rp-size-control-sm) - var(--rp-spacing-3));
29
+ --_rp-select-option-padding-y: var(--rp-spacing-1);
30
+ }
31
+ .rp-select--size-md[data-v-abf4b97a] {
32
+ --_rp-select-height: var(--rp-size-control-md);
33
+ --_rp-select-padding-x: calc(var(--rp-size-control-md) / 3);
34
+ --_rp-select-font-size: var(--rp-font-size-md);
35
+ --_rp-select-option-min-height: calc(var(--rp-size-control-md) - var(--rp-spacing-4));
36
+ --_rp-select-option-padding-y: var(--rp-spacing-1);
37
+ }
38
+ .rp-select--size-lg[data-v-abf4b97a] {
39
+ --_rp-select-height: var(--rp-size-control-lg);
40
+ --_rp-select-padding-x: calc(var(--rp-size-control-lg) / 3);
41
+ --_rp-select-font-size: var(--rp-font-size-lg);
42
+ --_rp-select-option-min-height: calc(var(--rp-size-control-lg) - var(--rp-spacing-5));
43
+ --_rp-select-option-padding-y: calc(var(--rp-spacing-3) / 2);
44
+ }
45
+ .rp-select--size-xl[data-v-abf4b97a] {
46
+ --_rp-select-height: var(--rp-size-control-xl);
47
+ --_rp-select-padding-x: calc(var(--rp-size-control-xl) / 3);
48
+ --_rp-select-font-size: var(--rp-font-size-xl);
49
+ --_rp-select-option-min-height: calc(var(--rp-size-control-xl) - var(--rp-spacing-6));
50
+ --_rp-select-option-padding-y: var(--rp-spacing-2);
51
+ }
52
+ html.dark .rp-select[data-v-abf4b97a], [data-rp-color-scheme=dark] .rp-select[data-v-abf4b97a] {
53
+ --_rp-select-invalid-border: var(--rp-color-red-light-color);
54
+ --_rp-select-invalid-ring: color-mix(
55
+ in srgb,
56
+ var(--rp-color-red-light-color) 32%,
57
+ transparent
58
+ );
59
+ --_rp-select-option-focused-bg: var(--rp-color-default-hover);
60
+ }
61
+ .rp-select--disabled[data-v-abf4b97a] {
18
62
  opacity: var(--rp-opacity-disabled);
19
63
  cursor: not-allowed;
20
64
  }
21
- .rp-select__trigger[data-v-9838513c] {
65
+ .rp-select__trigger[data-v-abf4b97a] {
22
66
  display: inline-flex;
23
67
  align-items: center;
24
68
  justify-content: center;
25
69
  justify-content: space-between;
26
70
  width: 100%;
27
71
  min-width: 180px;
28
- height: var(--rp-size-control-md);
29
- padding: 0 var(--rp-spacing-3);
30
- font-size: var(--rp-font-size-base);
72
+ height: var(--_rp-select-height);
73
+ padding: 0 var(--_rp-select-padding-x);
74
+ font-size: var(--_rp-select-font-size);
31
75
  background-color: var(--rp-color-control-bg);
32
76
  border: var(--rp-border-width-thin) solid var(--rp-color-control-border);
33
77
  border-radius: var(--_rp-select-radius);
@@ -35,81 +79,81 @@ html.dark .rp-select[data-v-9838513c] {
35
79
  transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
36
80
  gap: var(--rp-spacing-2);
37
81
  }
38
- .rp-select__trigger[data-v-9838513c]:hover {
82
+ .rp-select__trigger[data-v-abf4b97a]:hover {
39
83
  border-color: var(--rp-color-control-border-hover);
40
84
  }
41
- .rp-select__trigger[data-v-9838513c]:focus-visible {
85
+ .rp-select__trigger[data-v-abf4b97a]:focus-visible {
42
86
  outline: none;
43
87
  border-color: var(--rp-color-control-border-focus);
44
88
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
45
89
  }
46
- .rp-select--radius-xs[data-v-9838513c] {
90
+ .rp-select--radius-xs[data-v-abf4b97a] {
47
91
  --_rp-select-radius: var(--rp-radius-xs);
48
92
  }
49
- .rp-select--radius-sm[data-v-9838513c] {
93
+ .rp-select--radius-sm[data-v-abf4b97a] {
50
94
  --_rp-select-radius: var(--rp-radius-sm);
51
95
  }
52
- .rp-select--radius-md[data-v-9838513c] {
96
+ .rp-select--radius-md[data-v-abf4b97a] {
53
97
  --_rp-select-radius: var(--rp-radius-md);
54
98
  }
55
- .rp-select--radius-lg[data-v-9838513c] {
99
+ .rp-select--radius-lg[data-v-abf4b97a] {
56
100
  --_rp-select-radius: var(--rp-radius-lg);
57
101
  }
58
- .rp-select--radius-xl[data-v-9838513c] {
102
+ .rp-select--radius-xl[data-v-abf4b97a] {
59
103
  --_rp-select-radius: var(--rp-radius-xl);
60
104
  }
61
- .rp-select--open .rp-select__trigger[data-v-9838513c] {
105
+ .rp-select--open .rp-select__trigger[data-v-abf4b97a] {
62
106
  border-color: var(--rp-color-control-border-focus);
63
107
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
64
108
  }
65
- .rp-select--invalid .rp-select__trigger[data-v-9838513c] {
109
+ .rp-select--invalid .rp-select__trigger[data-v-abf4b97a] {
66
110
  border-color: var(--_rp-select-invalid-border);
67
111
  }
68
- .rp-select--invalid .rp-select__trigger[data-v-9838513c]:focus-visible, .rp-select--open.rp-select--invalid .rp-select__trigger[data-v-9838513c] {
112
+ .rp-select--invalid .rp-select__trigger[data-v-abf4b97a]:focus-visible, .rp-select--open.rp-select--invalid .rp-select__trigger[data-v-abf4b97a] {
69
113
  border-color: var(--_rp-select-invalid-border);
70
114
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-select-invalid-ring);
71
115
  }
72
- .rp-select__value[data-v-9838513c] {
116
+ .rp-select__value[data-v-abf4b97a] {
73
117
  flex: 1;
74
118
  overflow: hidden;
75
119
  text-overflow: ellipsis;
76
120
  white-space: nowrap;
77
121
  color: var(--rp-color-control-fg);
78
122
  }
79
- .rp-select__placeholder[data-v-9838513c] {
123
+ .rp-select__placeholder[data-v-abf4b97a] {
80
124
  color: var(--rp-color-control-placeholder);
81
125
  }
82
- .rp-select__indicator[data-v-9838513c] {
126
+ .rp-select__indicator[data-v-abf4b97a] {
83
127
  display: inline-flex;
84
128
  align-items: center;
85
129
  width: 1em;
86
130
  height: 1em;
87
131
  flex-shrink: 0;
88
132
  }
89
- .rp-select__indicator svg[data-v-9838513c] {
133
+ .rp-select__indicator svg[data-v-abf4b97a] {
90
134
  width: 100%;
91
135
  height: 100%;
92
136
  }
93
- .rp-select__indicator[data-v-9838513c] {
137
+ .rp-select__indicator[data-v-abf4b97a] {
94
138
  position: relative;
95
139
  color: var(--rp-color-control-icon);
96
140
  transform: translateX(var(--rp-spacing-1));
97
141
  }
98
- .rp-select__arrow[data-v-9838513c] {
142
+ .rp-select__arrow[data-v-abf4b97a] {
99
143
  display: inline-flex;
100
144
  align-items: center;
101
145
  width: 1em;
102
146
  height: 1em;
103
147
  flex-shrink: 0;
104
148
  }
105
- .rp-select__arrow svg[data-v-9838513c] {
149
+ .rp-select__arrow svg[data-v-abf4b97a] {
106
150
  width: 100%;
107
151
  height: 100%;
108
152
  }
109
- .rp-select__arrow[data-v-9838513c] {
153
+ .rp-select__arrow[data-v-abf4b97a] {
110
154
  transition: opacity var(--rp-transition-fast);
111
155
  }
112
- .rp-select__clear[data-v-9838513c] {
156
+ .rp-select__clear[data-v-abf4b97a] {
113
157
  padding: 0;
114
158
  font: inherit;
115
159
  background: none;
@@ -121,11 +165,11 @@ html.dark .rp-select[data-v-9838513c] {
121
165
  height: 1em;
122
166
  flex-shrink: 0;
123
167
  }
124
- .rp-select__clear svg[data-v-9838513c] {
168
+ .rp-select__clear svg[data-v-abf4b97a] {
125
169
  width: 100%;
126
170
  height: 100%;
127
171
  }
128
- .rp-select__clear[data-v-9838513c] {
172
+ .rp-select__clear[data-v-abf4b97a] {
129
173
  position: absolute;
130
174
  inset: 0;
131
175
  z-index: 1;
@@ -134,24 +178,24 @@ html.dark .rp-select[data-v-9838513c] {
134
178
  pointer-events: none;
135
179
  transition: color var(--rp-transition-fast), opacity var(--rp-transition-fast);
136
180
  }
137
- .rp-select__clear[data-v-9838513c]:hover {
181
+ .rp-select__clear[data-v-abf4b97a]:hover {
138
182
  color: var(--rp-color-control-fg);
139
183
  }
140
- .rp-select__trigger:hover .rp-select__clear[data-v-9838513c] {
184
+ .rp-select__trigger:hover .rp-select__clear[data-v-abf4b97a] {
141
185
  opacity: 1;
142
186
  pointer-events: auto;
143
187
  }
144
- .rp-select__trigger:hover .rp-select__clear + .rp-select__arrow[data-v-9838513c] {
188
+ .rp-select__trigger:hover .rp-select__clear + .rp-select__arrow[data-v-abf4b97a] {
145
189
  opacity: 0;
146
190
  }
147
- .rp-select__dropdown[data-v-9838513c] {
191
+ .rp-select__dropdown[data-v-abf4b97a] {
148
192
  position: absolute;
149
193
  top: calc(100% + var(--rp-spacing-2));
150
194
  left: 0;
151
195
  right: 0;
152
196
  z-index: 100;
153
- background-color: var(--rp-color-surface-raised);
154
- border: var(--rp-border-width-thin) solid var(--rp-color-border);
197
+ background-color: var(--rp-color-default);
198
+ border: var(--rp-border-width-thin) solid var(--rp-color-default-border);
155
199
  border-radius: var(--_rp-select-radius);
156
200
  box-shadow: var(--rp-shadow-md);
157
201
  padding: var(--rp-spacing-1) 0;
@@ -159,41 +203,41 @@ html.dark .rp-select[data-v-9838513c] {
159
203
  overflow-y: auto;
160
204
  padding: var(--rp-spacing-1);
161
205
  }
162
- .rp-select__option[data-v-9838513c] {
206
+ .rp-select__option[data-v-abf4b97a] {
163
207
  display: flex;
164
208
  align-items: center;
165
- padding: var(--rp-spacing-2) var(--rp-spacing-4);
166
- border-radius: calc(var(--_rp-select-radius) - var(--rp-spacing-1));
167
- font-size: var(--rp-font-size-base);
209
+ min-height: var(--_rp-select-option-min-height);
210
+ padding: var(--_rp-select-option-padding-y) var(--_rp-select-padding-x);
211
+ border-radius: var(--_rp-select-radius);
212
+ font-size: var(--_rp-select-font-size);
168
213
  cursor: pointer;
169
- transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast);
214
+ transition: color var(--rp-transition-fast);
170
215
  color: var(--rp-color-control-fg);
171
216
  }
172
- .rp-select__option--focused[data-v-9838513c] {
217
+ .rp-select__option--focused[data-v-abf4b97a] {
173
218
  background-color: var(--_rp-select-option-focused-bg);
174
219
  }
175
- .rp-select__option--selected[data-v-9838513c] {
176
- color: var(--rp-color-primary-fg);
177
- font-weight: var(--rp-font-weight-medium);
220
+ .rp-select__option--selected[data-v-abf4b97a] {
221
+ color: var(--rp-primary-color-light-color);
178
222
  }
179
- .rp-select__option--disabled[data-v-9838513c] {
180
- color: var(--rp-color-text-disabled);
223
+ .rp-select__option--disabled[data-v-abf4b97a] {
224
+ color: var(--rp-color-disabled-color);
181
225
  cursor: not-allowed;
182
226
  }
183
- .rp-select__empty[data-v-9838513c] {
227
+ .rp-select__empty[data-v-abf4b97a] {
184
228
  display: flex;
185
229
  align-items: center;
186
230
  justify-content: center;
187
231
  padding: var(--rp-spacing-4);
188
- color: var(--rp-color-text-secondary);
189
- font-size: var(--rp-font-size-base);
232
+ color: var(--rp-color-dimmed);
233
+ font-size: var(--_rp-select-font-size);
190
234
  }
191
- .rp-select-dropdown-enter-active[data-v-9838513c],
192
- .rp-select-dropdown-leave-active[data-v-9838513c] {
235
+ .rp-select-dropdown-enter-active[data-v-abf4b97a],
236
+ .rp-select-dropdown-leave-active[data-v-abf4b97a] {
193
237
  transition: opacity var(--rp-transition-fast), transform var(--rp-transition-fast);
194
238
  }
195
- .rp-select-dropdown-enter-from[data-v-9838513c],
196
- .rp-select-dropdown-leave-to[data-v-9838513c] {
239
+ .rp-select-dropdown-enter-from[data-v-abf4b97a],
240
+ .rp-select-dropdown-leave-to[data-v-abf4b97a] {
197
241
  opacity: 0;
198
242
  transform: translateY(calc(-1 * var(--rp-spacing-1)));
199
243
  }
package/dist/select.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import './select.css';
2
+ import { t as x_default } from "./x.js";
2
3
  import { t as bem } from "./bem.js";
3
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
5
  import { t as useControlState } from "./useControlState.js";
5
6
  import { t as useClickOutside } from "./useClickOutside.js";
6
- import { t as x_default } from "./x.js";
7
7
  import { VaporTransition, child, computed, createComponent, createFor, createIf, createInvoker, createSelector, createSlot, createTemplateRefSetter, defineVaporComponent, delegateEvents, extend, markRaw, next, nextTick, on, ref, renderEffect, setAttr, setClass, setClassName, setInsertionState, setProp, setText, setValue, template, toDisplayString, txt, unref, useId, withModifiers, withVaporModifiers } from "vue";
8
8
  //#region ~icons/lucide/chevrons-up-down
9
9
  var t0$1 = template("<svg viewBox=\"0 0 24 24\"width=1.2em height=1.2em><path fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 d=\"m7 15l5 5l5-5M7 9l5-5l5 5\">", 3, 1);
@@ -104,6 +104,7 @@ function useSelect(props, emitUpdate) {
104
104
  const activeDescendantId = computed(() => getSelectActiveDescendantId(selectId, focusedIndex.value));
105
105
  const rootClass = computed(() => bem("rp-select", {
106
106
  open: isOpen.value,
107
+ [`size-${props.size}`]: Boolean(props.size),
107
108
  [`radius-${props.radius}`]: Boolean(props.radius),
108
109
  disabled: control.disabled,
109
110
  invalid: control.invalid
@@ -224,13 +225,13 @@ function useSelect(props, emitUpdate) {
224
225
  }
225
226
  //#endregion
226
227
  //#region src/components/select/select.vue?vue&type=script&setup=true&vapor=true&lang.ts
227
- var t0 = template("<input data-v-9838513c type=hidden>");
228
- var t1 = template("<button data-v-9838513c type=button class=rp-select__clear aria-label=\"Clear selection\"tabindex=-1></button>");
228
+ var t0 = template("<input data-v-abf4b97a type=hidden>");
229
+ var t1 = template("<button data-v-abf4b97a type=button class=rp-select__clear tabindex=-1></button>");
229
230
  var t2 = template("No options", 2);
230
- var t3 = template("<div data-v-9838513c class=rp-select__empty>");
231
- var t4 = template("<div data-v-9838513c role=option> ");
232
- var t5 = template("<div data-v-9838513c class=rp-select__dropdown role=listbox>");
233
- var t6 = template("<div data-v-9838513c><div data-v-9838513c class=rp-select__trigger role=combobox aria-haspopup=listbox><span data-v-9838513c> </span><span data-v-9838513c class=rp-select__indicator><span data-v-9838513c class=rp-select__arrow aria-hidden=true>", 1);
231
+ var t3 = template("<div data-v-abf4b97a class=rp-select__empty>");
232
+ var t4 = template("<div data-v-abf4b97a role=option> ");
233
+ var t5 = template("<div data-v-abf4b97a class=rp-select__dropdown role=listbox>");
234
+ var t6 = template("<div data-v-abf4b97a><div data-v-abf4b97a class=rp-select__trigger role=combobox aria-haspopup=listbox><span data-v-abf4b97a> </span><span data-v-abf4b97a class=rp-select__indicator><span data-v-abf4b97a class=rp-select__arrow aria-hidden=true>", 1);
234
235
  delegateEvents("mousedown", "click", "keydown");
235
236
  //#endregion
236
237
  //#region src/components/select/select.vue
@@ -242,12 +243,14 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
242
243
  name: {},
243
244
  modelValue: {},
244
245
  options: { default: () => [] },
246
+ size: {},
245
247
  radius: {},
246
248
  placeholder: { default: "Select..." },
247
249
  clearable: {
248
250
  type: Boolean,
249
251
  default: false
250
252
  },
253
+ clearLabel: { default: "Clear selection" },
251
254
  disabled: {
252
255
  type: Boolean,
253
256
  default: void 0
@@ -312,6 +315,7 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
312
315
  setInsertionState(n10, 0, 0);
313
316
  createIf(() => unref(canClear), () => {
314
317
  const n7 = t1();
318
+ renderEffect(() => setAttr(n7, "aria-label", __props.clearLabel));
315
319
  setInsertionState(n7, null, 0);
316
320
  createComponent(unref(x_default));
317
321
  n7.$evtmousedown = withVaporModifiers(() => {}, ["prevent"]);
@@ -373,6 +377,6 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
373
377
  _setTemplateRef(n25, selectRef, null, "selectRef");
374
378
  return n25;
375
379
  }
376
- }), [["__scopeId", "data-v-9838513c"]]);
380
+ }), [["__scopeId", "data-v-abf4b97a"]]);
377
381
  //#endregion
378
382
  export { select_default as t };