ropav 0.1.7 → 0.1.8

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 (153) hide show
  1. package/README.md +1 -1
  2. package/dist/ancestry.js +136 -0
  3. package/dist/calendar.css +173 -0
  4. package/dist/calendar.js +714 -0
  5. package/dist/calendar2.js +37 -0
  6. package/dist/chevron-left.js +12 -0
  7. package/dist/color-picker.js +38 -88
  8. package/dist/combobox.css +251 -0
  9. package/dist/combobox.js +410 -0
  10. package/dist/components/calendar/calendar.d.ts +30 -0
  11. package/dist/components/calendar/calendarBehavior.d.ts +49 -0
  12. package/dist/components/calendar/index.d.ts +3 -0
  13. package/dist/components/calendar/index.js +3 -0
  14. package/dist/components/calendar/types.d.ts +53 -0
  15. package/dist/components/calendar/useCalendar.d.ts +24 -0
  16. package/dist/components/color-picker/useColorPickerDrag.d.ts +1 -1
  17. package/dist/components/color-picker/useColorPickerSaturation.d.ts +1 -1
  18. package/dist/components/color-picker/useColorPickerSlider.d.ts +1 -1
  19. package/dist/components/combobox/combobox.d.ts +29 -0
  20. package/dist/components/combobox/comboboxModel.d.ts +4 -0
  21. package/dist/components/combobox/index.d.ts +3 -0
  22. package/dist/components/combobox/index.js +2 -0
  23. package/dist/components/combobox/types.d.ts +43 -0
  24. package/dist/components/combobox/useCombobox.d.ts +45 -0
  25. package/dist/components/date-picker/date-picker.d.ts +33 -0
  26. package/dist/components/date-picker/datePickerModel.d.ts +10 -0
  27. package/dist/components/date-picker/index.d.ts +4 -0
  28. package/dist/components/date-picker/index.js +2 -0
  29. package/dist/components/date-picker/types.d.ts +57 -0
  30. package/dist/components/date-picker/useDatePicker.d.ts +29 -0
  31. package/dist/components/date-picker/useDatePickerValueState.d.ts +21 -0
  32. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  33. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  34. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  35. package/dist/components/dropdown-menu/dropdownMenuContext.d.ts +7 -18
  36. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -3
  37. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +58 -29
  38. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +4 -3
  39. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +6 -4
  40. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +3 -4
  41. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +5 -5
  42. package/dist/components/dropzone/dropzone.d.ts +31 -0
  43. package/dist/components/dropzone/dropzoneModel.d.ts +16 -0
  44. package/dist/components/dropzone/index.d.ts +3 -0
  45. package/dist/components/dropzone/index.js +2 -0
  46. package/dist/components/dropzone/types.d.ts +56 -0
  47. package/dist/components/dropzone/useDropzone.d.ts +25 -0
  48. package/dist/components/file-input/file-input.d.ts +29 -0
  49. package/dist/components/file-input/index.d.ts +3 -0
  50. package/dist/components/file-input/index.js +2 -0
  51. package/dist/components/file-input/types.d.ts +37 -0
  52. package/dist/components/file-input/useFileInput.d.ts +15 -0
  53. package/dist/components/floating/index.js +1 -1
  54. package/dist/components/floating/useFloatingPosition.d.ts +1 -13
  55. package/dist/components/floating/useFloatingTargetLifecycle.d.ts +32 -0
  56. package/dist/components/floating/useHoverDisclosure.d.ts +10 -0
  57. package/dist/components/hover-card/hover-card.d.ts +25 -0
  58. package/dist/components/hover-card/index.d.ts +3 -0
  59. package/dist/components/hover-card/index.js +2 -0
  60. package/dist/components/hover-card/types.d.ts +45 -0
  61. package/dist/components/hover-card/useHoverCard.d.ts +22 -0
  62. package/dist/components/hover-card/useHoverCardDisclosure.d.ts +19 -0
  63. package/dist/components/multi-select/index.d.ts +3 -0
  64. package/dist/components/multi-select/index.js +2 -0
  65. package/dist/components/multi-select/multi-select.d.ts +30 -0
  66. package/dist/components/multi-select/multiSelectModel.d.ts +3 -0
  67. package/dist/components/multi-select/types.d.ts +49 -0
  68. package/dist/components/multi-select/useMultiSelect.d.ts +46 -0
  69. package/dist/components/number-input/useNumberInput.d.ts +1 -3
  70. package/dist/components/popover/usePopoverBindings.d.ts +3 -6
  71. package/dist/components/scroll-area/useScrollArea.d.ts +4 -4
  72. package/dist/components/scroll-area/useScrollAreaAttributes.d.ts +3 -3
  73. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +1 -1
  74. package/dist/components/segmented-control/index.d.ts +3 -0
  75. package/dist/components/segmented-control/index.js +2 -0
  76. package/dist/components/segmented-control/segmented-control.d.ts +26 -0
  77. package/dist/components/segmented-control/types.d.ts +47 -0
  78. package/dist/components/segmented-control/useSegmentedControl.d.ts +15 -0
  79. package/dist/components/select/useSelect.d.ts +31 -19
  80. package/dist/components/slider/useRangeSlider.d.ts +1 -1
  81. package/dist/components/slider/useRangeSliderPointer.d.ts +1 -1
  82. package/dist/components/tags-input/index.d.ts +3 -0
  83. package/dist/components/tags-input/index.js +2 -0
  84. package/dist/components/tags-input/tags-input.d.ts +27 -0
  85. package/dist/components/tags-input/tagsInputModel.d.ts +12 -0
  86. package/dist/components/tags-input/types.d.ts +37 -0
  87. package/dist/components/tags-input/useTagsInput.d.ts +23 -0
  88. package/dist/components/tooltip/useTooltipTargetBindings.d.ts +12 -0
  89. package/dist/date-picker.css +49 -0
  90. package/dist/date-picker.js +809 -0
  91. package/dist/dialog.js +9 -20
  92. package/dist/direction.js +6 -0
  93. package/dist/dropdown-menu.css +21 -3
  94. package/dist/dropdown-menu.js +341 -261
  95. package/dist/dropzone.css +135 -0
  96. package/dist/dropzone.js +431 -0
  97. package/dist/file-input.css +135 -0
  98. package/dist/file-input.js +198 -0
  99. package/dist/hover-card.css +80 -0
  100. package/dist/hover-card.js +402 -0
  101. package/dist/index.d.ts +9 -0
  102. package/dist/index.js +14 -3
  103. package/dist/internal/composables/useOverlayLayer.d.ts +12 -0
  104. package/dist/modal.js +1 -1
  105. package/dist/multi-select.css +316 -0
  106. package/dist/multi-select.js +481 -0
  107. package/dist/nativeChoice.js +169 -0
  108. package/dist/number-input.css +18 -18
  109. package/dist/number-input.js +36 -38
  110. package/dist/pagination.js +1 -10
  111. package/dist/pointerSession.js +130 -0
  112. package/dist/popover.css +21 -3
  113. package/dist/popover.js +37 -62
  114. package/dist/scroll-area.js +52 -62
  115. package/dist/segmented-control.css +176 -0
  116. package/dist/segmented-control.js +382 -0
  117. package/dist/select.css +50 -48
  118. package/dist/select.js +121 -271
  119. package/dist/slider.js +70 -129
  120. package/dist/tags-input.css +197 -0
  121. package/dist/tags-input.js +380 -0
  122. package/dist/tooltip.js +35 -30
  123. package/dist/useEditableOptionList.js +216 -0
  124. package/dist/useFlatOptionCollection.js +134 -0
  125. package/dist/useFloatingPosition.js +4 -160
  126. package/dist/useFloatingTargetLifecycle.js +127 -0
  127. package/dist/useFormControl.js +1 -0
  128. package/dist/{floating.js → useHoverDisclosure.js} +338 -421
  129. package/dist/useNativeChoiceTransaction.js +46 -0
  130. package/dist/useNativeFileSelection.js +86 -0
  131. package/dist/useOverlayZIndex.js +246 -15
  132. package/dist/utils/date.d.ts +13 -0
  133. package/dist/utils/dateAvailability.d.ts +7 -0
  134. package/dist/utils/dom/ancestry.d.ts +1 -0
  135. package/dist/utils/dom/direction.d.ts +2 -0
  136. package/dist/utils/dom/files.d.ts +3 -0
  137. package/dist/utils/dom/nativeChoice.d.ts +17 -0
  138. package/dist/utils/dom/pointerSession.d.ts +20 -0
  139. package/dist/utils/dom/scroll.d.ts +2 -1
  140. package/dist/utils/optionFilter.d.ts +5 -0
  141. package/docs/public-floating-api.md +7 -4
  142. package/docs/public-styles-api.md +25 -12
  143. package/package.json +39 -3
  144. package/src/styles/_mixins.scss +26 -0
  145. package/src/styles/styles-manifest.json +1 -2
  146. package/dist/components/floating/hoverDisclosureInteractionModel.d.ts +0 -42
  147. package/dist/components/floating/useHoverDisclosureInteractions.d.ts +0 -32
  148. package/dist/components/floating/useHoverDisclosureOpenState.d.ts +0 -25
  149. package/dist/components/floating/useHoverDisclosureTargetBinding.d.ts +0 -27
  150. package/dist/components/select/useSelectNativeControl.d.ts +0 -9
  151. package/dist/components/select/useSelectNativeValue.d.ts +0 -9
  152. package/dist/pointer.js +0 -9
  153. package/dist/utils/dom/pointer.d.ts +0 -2
@@ -0,0 +1,382 @@
1
+ import './segmented-control.css';
2
+ import { t as useStylesApi } from "./styles-api.js";
3
+ import { n as toPresenceAttribute } from "./attributes.js";
4
+ import { t as bem } from "./bem.js";
5
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { n as getComponentCheckedColorStyle, t as componentColors } from "./componentColors.js";
7
+ import { o as splitCompatibilityAttributes, t as composeEventHandlers } from "./attributes2.js";
8
+ import { t as useControlState } from "./useControlState.js";
9
+ import { t as useNativeChoiceTransaction } from "./useNativeChoiceTransaction.js";
10
+ import { child, computed, createFor, createSlot, createTemplateRefSetter, defineVaporComponent, next, renderEffect, setDynamicProps, setInsertionState, setText, shallowRef, template, toDisplayString, unref, useId } from "vue";
11
+ //#region src/internal/composables/useGroupedRadioChoiceTransaction.ts
12
+ function getFirstEnabledValue(choices) {
13
+ return choices?.find((choice) => !choice.disabled)?.value ?? null;
14
+ }
15
+ function getChoiceMetadata(choices) {
16
+ return choices?.map((choice) => [choice.value, Boolean(choice.disabled)]) ?? [];
17
+ }
18
+ function hasSameChoiceMetadata(previous, next) {
19
+ return previous.length === next.length && previous.every(([value, disabled], index) => value === next[index]?.[0] && disabled === next[index]?.[1]);
20
+ }
21
+ function useGroupedRadioChoiceTransaction(options) {
22
+ const inputsByValue = shallowRef(/* @__PURE__ */ new Map());
23
+ const inputRefs = computed(() => options.choices()?.map((choice) => inputsByValue.value.get(choice.value) ?? null) ?? []);
24
+ const explicitDefaultValue = options.value.defaultValue();
25
+ const hasExplicitEmptyDefault = explicitDefaultValue === null;
26
+ const initialValue = explicitDefaultValue === void 0 ? getFirstEnabledValue(options.choices()) : explicitDefaultValue;
27
+ let nativeResetValue = initialValue;
28
+ let choiceMetadata = getChoiceMetadata(options.choices());
29
+ let shouldSyncNativeDefault = true;
30
+ function findInputChoice(input) {
31
+ const index = inputRefs.value.indexOf(input);
32
+ return index < 0 ? void 0 : options.choices()?.[index];
33
+ }
34
+ function getResetValue(currentValue) {
35
+ if (hasExplicitEmptyDefault) return null;
36
+ const initialChoice = options.choices()?.find((choice) => choice.value === initialValue);
37
+ if (initialChoice && !initialChoice.disabled) return initialChoice.value;
38
+ const fallbackValue = getFirstEnabledValue(options.choices());
39
+ return currentValue === fallbackValue ? fallbackValue : initialValue;
40
+ }
41
+ function getValidationAnchor(currentValue) {
42
+ let firstEnabledInput;
43
+ for (const [index, choice] of (options.choices() ?? []).entries()) {
44
+ const input = inputRefs.value[index];
45
+ if (!input || options.disabled() || choice.disabled) continue;
46
+ firstEnabledInput ??= input;
47
+ if (choice.value === currentValue) return input;
48
+ }
49
+ return firstEnabledInput;
50
+ }
51
+ function syncInputs(value) {
52
+ for (const [index, input] of inputRefs.value.entries()) {
53
+ if (!input) continue;
54
+ input.checked = options.choices()?.[index]?.value === value;
55
+ }
56
+ if (!shouldSyncNativeDefault) return;
57
+ shouldSyncNativeDefault = false;
58
+ for (const [index, input] of inputRefs.value.entries()) if (input) input.defaultChecked = options.choices()?.[index]?.value === nativeResetValue;
59
+ }
60
+ const valueOptions = {
61
+ modelValue: options.value.modelValue,
62
+ defaultValue: () => initialValue,
63
+ onChange: options.value.onChange
64
+ };
65
+ let currentValue;
66
+ const transaction = useNativeChoiceTransaction({
67
+ value: valueOptions,
68
+ adapter: {
69
+ commitValue(_value, _initialValue, applyValue) {
70
+ applyValue();
71
+ },
72
+ controls: () => inputRefs.value,
73
+ readResetValue(controls) {
74
+ const checked = controls.find((control) => control.checked);
75
+ return checked ? findInputChoice(checked)?.value ?? null : null;
76
+ },
77
+ reconcileValue(value, _initialValue, isControlled) {
78
+ const nextChoiceMetadata = getChoiceMetadata(options.choices());
79
+ if (hasSameChoiceMetadata(choiceMetadata, nextChoiceMetadata)) return value;
80
+ choiceMetadata = nextChoiceMetadata;
81
+ let reconciledValue = value;
82
+ if (!isControlled && !(value === null && hasExplicitEmptyDefault)) reconciledValue = options.choices()?.some((choice) => choice.value === value && !choice.disabled) ? value : getFirstEnabledValue(options.choices());
83
+ nativeResetValue = getResetValue(reconciledValue);
84
+ shouldSyncNativeDefault = true;
85
+ return reconciledValue;
86
+ },
87
+ syncValue: syncInputs,
88
+ validationMessage(element) {
89
+ return element === getValidationAnchor(currentValue.value) ? options.validationMessage?.() : void 0;
90
+ }
91
+ }
92
+ });
93
+ currentValue = transaction.value;
94
+ function createInputRef(value) {
95
+ let mountedInput = null;
96
+ return (element) => {
97
+ const input = element instanceof HTMLInputElement ? element : null;
98
+ if (input) {
99
+ mountedInput = input;
100
+ input.defaultChecked = value === nativeResetValue;
101
+ const existingInput = inputsByValue.value.get(value);
102
+ const hasOtherRegistration = [...inputsByValue.value].some(([registeredValue, registeredInput]) => registeredValue !== value && registeredInput === input);
103
+ if (existingInput === input && !hasOtherRegistration) return;
104
+ const nextInputs = new Map(inputsByValue.value);
105
+ for (const [registeredValue, registeredInput] of nextInputs) if (registeredInput === input) nextInputs.delete(registeredValue);
106
+ nextInputs.set(value, input);
107
+ inputsByValue.value = nextInputs;
108
+ return;
109
+ }
110
+ const removedInput = mountedInput;
111
+ mountedInput = null;
112
+ if (!removedInput || inputsByValue.value.get(value) !== removedInput) return;
113
+ const nextInputs = new Map(inputsByValue.value);
114
+ nextInputs.delete(value);
115
+ inputsByValue.value = nextInputs;
116
+ };
117
+ }
118
+ return {
119
+ acceptValue: transaction.requestValueUpdate,
120
+ createInputRef,
121
+ inputRefs,
122
+ value: transaction.value
123
+ };
124
+ }
125
+ //#endregion
126
+ //#region src/components/segmented-control/useSegmentedControl.ts
127
+ function useSegmentedControl(props, emitUpdate) {
128
+ const control = useControlState(props);
129
+ const generatedId = useId();
130
+ const baseId = computed(() => props.id ?? generatedId);
131
+ const groupName = computed(() => props.name ?? `${baseId.value}-segmented-control`);
132
+ const transaction = useGroupedRadioChoiceTransaction({
133
+ choices: () => props.options,
134
+ disabled: () => control.disabled,
135
+ validationMessage: () => props.validationMessage,
136
+ value: {
137
+ modelValue: () => props.modelValue,
138
+ defaultValue: () => props.defaultValue,
139
+ onChange(value) {
140
+ if (value !== null) emitUpdate(value);
141
+ }
142
+ }
143
+ });
144
+ const inputRefs = transaction.inputRefs;
145
+ const selectedValue = transaction.value;
146
+ const rootClass = computed(() => bem("rp-segmented-control", {
147
+ [`size-${props.size ?? "md"}`]: true,
148
+ [`radius-${props.radius ?? "sm"}`]: true,
149
+ [props.orientation ?? "horizontal"]: true,
150
+ "full-width": props.fullWidth,
151
+ disabled: control.disabled,
152
+ invalid: control.invalid
153
+ }));
154
+ const rootStyle = computed(() => getComponentCheckedColorStyle({
155
+ color: props.color,
156
+ autoContrast: props.autoContrast,
157
+ contrastColor: props.contrastColor,
158
+ colorProperty: "--_rp-segmented-control-color",
159
+ checkedColorProperty: "--_rp-segmented-control-on-color"
160
+ }));
161
+ function isSelected(option) {
162
+ return option.value === selectedValue.value;
163
+ }
164
+ function isOptionDisabled(option) {
165
+ return control.disabled || Boolean(option.disabled);
166
+ }
167
+ function selectOption(option) {
168
+ if (isOptionDisabled(option)) return;
169
+ transaction.acceptValue(option.value);
170
+ }
171
+ function getInputId(index) {
172
+ return `${baseId.value}-option-${index}`;
173
+ }
174
+ function focus(options) {
175
+ const selectedInput = inputRefs.value.find((input) => input?.checked && !input.disabled);
176
+ const firstEnabledInput = inputRefs.value.find((input) => input && !input.disabled);
177
+ (selectedInput ?? firstEnabledInput)?.focus(options);
178
+ }
179
+ return {
180
+ control,
181
+ inputRefs,
182
+ selectedValue,
183
+ rootClass,
184
+ rootStyle,
185
+ groupName,
186
+ createInputRef: transaction.createInputRef,
187
+ isSelected,
188
+ isOptionDisabled,
189
+ selectOption,
190
+ getInputId,
191
+ focus
192
+ };
193
+ }
194
+ //#endregion
195
+ //#region src/components/segmented-control/segmented-control.vue?vue&type=script&setup=true&vapor=true&lang.ts
196
+ var t0 = template(" ");
197
+ var t1 = template("<label data-v-aba56e2a><input data-v-aba56e2a><span data-v-aba56e2a></span><span data-v-aba56e2a>");
198
+ var t2 = template("<div data-v-aba56e2a>", 1);
199
+ //#endregion
200
+ //#region src/components/segmented-control/segmented-control.vue
201
+ var segmented_control_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
202
+ name: "RpSegmentedControl",
203
+ inheritAttrs: false,
204
+ __name: "segmented-control",
205
+ props: {
206
+ id: {},
207
+ name: {},
208
+ form: {},
209
+ modelValue: { default: void 0 },
210
+ defaultValue: { default: void 0 },
211
+ options: { default: () => [] },
212
+ color: {},
213
+ autoContrast: {
214
+ type: Boolean,
215
+ default: true
216
+ },
217
+ contrastColor: {},
218
+ size: { default: "md" },
219
+ radius: { default: "sm" },
220
+ orientation: { default: "horizontal" },
221
+ fullWidth: {
222
+ type: Boolean,
223
+ default: false
224
+ },
225
+ disabled: {
226
+ type: Boolean,
227
+ default: false
228
+ },
229
+ required: {
230
+ type: Boolean,
231
+ default: false
232
+ },
233
+ invalid: {
234
+ type: Boolean,
235
+ default: false
236
+ },
237
+ ariaLabel: {},
238
+ describedby: {},
239
+ labelledby: {},
240
+ inputAttrs: {},
241
+ validationMessage: {},
242
+ classNames: {},
243
+ styles: {}
244
+ },
245
+ emits: ["update:modelValue"],
246
+ setup(__props, { expose: __expose, emit: __emit }) {
247
+ const props = __props;
248
+ const emit = __emit;
249
+ const { control, inputRefs, selectedValue, rootClass, rootStyle, groupName, createInputRef, isSelected, isOptionDisabled, selectOption, getInputId, focus } = useSegmentedControl(props, (value) => emit("update:modelValue", value));
250
+ const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
251
+ const rootAttrs = computed(() => getRootAttrs({
252
+ id: control.id,
253
+ class: rootClass.value,
254
+ style: rootStyle.value,
255
+ role: "radiogroup",
256
+ "data-value": selectedValue.value ?? void 0,
257
+ "data-size": props.size,
258
+ "data-orientation": props.orientation,
259
+ "data-disabled": toPresenceAttribute(control.disabled),
260
+ "data-invalid": toPresenceAttribute(control.invalid),
261
+ "aria-label": props.ariaLabel || void 0,
262
+ "aria-labelledby": control.ariaLabelledby,
263
+ "aria-describedby": control.ariaDescribedby,
264
+ "aria-orientation": props.orientation,
265
+ "aria-disabled": control.disabled || void 0,
266
+ "aria-invalid": control.invalid || void 0,
267
+ "aria-required": control.required || void 0
268
+ }));
269
+ function getControlAttrs(option) {
270
+ const selected = isSelected(option);
271
+ const disabled = isOptionDisabled(option);
272
+ return {
273
+ ...getPartAttrs("control", { class: ["rp-segmented-control__control", {
274
+ "rp-segmented-control__control--selected": selected,
275
+ "rp-segmented-control__control--disabled": disabled
276
+ }] }),
277
+ "data-state": selected ? "checked" : "unchecked",
278
+ "data-disabled": toPresenceAttribute(disabled)
279
+ };
280
+ }
281
+ function getInputAttrs(option) {
282
+ const attributes = props.inputAttrs ?? {};
283
+ const { compatibilityClass, compatibilityStyle, forwardedAttributes } = splitCompatibilityAttributes(attributes);
284
+ return {
285
+ ...forwardedAttributes,
286
+ ...getPartAttrs("input", {
287
+ class: "rp-segmented-control__input",
288
+ compatibilityClass,
289
+ compatibilityStyle
290
+ }),
291
+ onChange: composeEventHandlers(() => selectOption(option), attributes.onChange)
292
+ };
293
+ }
294
+ __expose({
295
+ nativeElements: inputRefs,
296
+ focus
297
+ });
298
+ const _setTemplateRef = createTemplateRefSetter();
299
+ const n9 = t2();
300
+ renderEffect(() => setDynamicProps(n9, [rootAttrs.value]));
301
+ setInsertionState(n9, null, 0);
302
+ createFor(() => __props.options, (_for_item0, _for_key0) => {
303
+ const n8 = t1();
304
+ const n2 = child(n8);
305
+ const n3 = next(n2, 1);
306
+ const n7 = next(n3, 2);
307
+ renderEffect(() => {
308
+ const _option = _for_item0.value;
309
+ const _control = unref(control);
310
+ const _isOptionDisabled = unref(isOptionDisabled);
311
+ const _toPresenceAttribute = unref(toPresenceAttribute);
312
+ const _getPartAttrs = unref(getPartAttrs);
313
+ const _control_required = _control.required;
314
+ const _isSelected_option_checked_unchecked = unref(isSelected)(_option) ? "checked" : "unchecked";
315
+ setDynamicProps(n8, [getControlAttrs(_option)]);
316
+ setDynamicProps(n2, [getInputAttrs(_option), {
317
+ id: unref(getInputId)(_for_key0.value),
318
+ type: "radio",
319
+ name: unref(groupName),
320
+ form: _control.form ?? __props.inputAttrs?.form,
321
+ value: String(_option.value),
322
+ checked: unref(isSelected)(_option),
323
+ disabled: _isOptionDisabled(_option) || void 0,
324
+ required: _control_required || void 0,
325
+ "aria-describedby": _control.ariaDescribedby,
326
+ "aria-invalid": _control.invalid || void 0,
327
+ "aria-required": _control_required || void 0,
328
+ "data-state": _isSelected_option_checked_unchecked,
329
+ "data-disabled": _toPresenceAttribute(_isOptionDisabled(_option)),
330
+ "data-invalid": _toPresenceAttribute(_control.invalid)
331
+ }]);
332
+ _setTemplateRef(n2, unref(createInputRef)(_option.value), true);
333
+ setDynamicProps(n3, [_getPartAttrs("indicator", { class: "rp-segmented-control__indicator" }), {
334
+ "aria-hidden": "true",
335
+ "data-state": _isSelected_option_checked_unchecked
336
+ }]);
337
+ setDynamicProps(n7, [_getPartAttrs("label", { class: "rp-segmented-control__label" })]);
338
+ });
339
+ setInsertionState(n7, null, 0);
340
+ createSlot("option", {
341
+ option: () => _for_item0.value,
342
+ selected: () => unref(isSelected)(_for_item0.value),
343
+ disabled: () => unref(isOptionDisabled)(_for_item0.value)
344
+ }, () => {
345
+ const n6 = t0();
346
+ renderEffect(() => setText(n6, toDisplayString(_for_item0.value.label)));
347
+ return n6;
348
+ }, 1);
349
+ return n8;
350
+ }, (option, index) => option.value, 9);
351
+ return n9;
352
+ }
353
+ }), [["__scopeId", "data-v-aba56e2a"]]);
354
+ //#endregion
355
+ //#region src/components/segmented-control/types.ts
356
+ var segmentedControlParts = [
357
+ "root",
358
+ "control",
359
+ "input",
360
+ "indicator",
361
+ "label"
362
+ ];
363
+ var segmentedControlColors = componentColors;
364
+ var segmentedControlSizes = [
365
+ "xs",
366
+ "sm",
367
+ "md",
368
+ "lg",
369
+ "xl"
370
+ ];
371
+ var segmentedControlRadiuses = [
372
+ "none",
373
+ "xs",
374
+ "sm",
375
+ "md",
376
+ "lg",
377
+ "xl",
378
+ "full"
379
+ ];
380
+ var segmentedControlOrientations = ["horizontal", "vertical"];
381
+ //#endregion
382
+ export { segmentedControlSizes as a, segmentedControlRadiuses as i, segmentedControlOrientations as n, segmented_control_default as o, segmentedControlParts as r, segmentedControlColors as t };
package/dist/select.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-select[data-v-b42a5b2f] {
2
+ .rp-select[data-v-097d7f90] {
3
3
  --_rp-select-height: var(--rp-size-control-md);
4
4
  --_rp-select-padding-x: calc(var(--rp-size-control-md) / 3);
5
5
  --_rp-select-font-size: var(--rp-font-size-md);
@@ -15,7 +15,7 @@
15
15
  font-weight: var(--rp-font-weight-normal);
16
16
  line-height: 1;
17
17
  }
18
- .rp-select__native[data-v-b42a5b2f] {
18
+ .rp-select__native[data-v-097d7f90] {
19
19
  position: absolute;
20
20
  width: 1px;
21
21
  height: 1px;
@@ -26,42 +26,42 @@
26
26
  white-space: nowrap;
27
27
  border-width: 0;
28
28
  }
29
- .rp-select--size-xs[data-v-b42a5b2f] {
29
+ .rp-select--size-xs[data-v-097d7f90] {
30
30
  --_rp-select-height: var(--rp-size-control-xs);
31
31
  --_rp-select-padding-x: calc(var(--rp-size-control-xs) / 3);
32
32
  --_rp-select-font-size: var(--rp-font-size-xs);
33
33
  --_rp-select-option-min-height: calc(var(--rp-size-control-xs) - var(--rp-spacing-2));
34
34
  --_rp-select-option-padding-y: calc(var(--rp-spacing-1) / 2);
35
35
  }
36
- .rp-select--size-sm[data-v-b42a5b2f] {
36
+ .rp-select--size-sm[data-v-097d7f90] {
37
37
  --_rp-select-height: var(--rp-size-control-sm);
38
38
  --_rp-select-padding-x: calc(var(--rp-size-control-sm) / 3);
39
39
  --_rp-select-font-size: var(--rp-font-size-sm);
40
40
  --_rp-select-option-min-height: calc(var(--rp-size-control-sm) - var(--rp-spacing-3));
41
41
  --_rp-select-option-padding-y: var(--rp-spacing-1);
42
42
  }
43
- .rp-select--size-md[data-v-b42a5b2f] {
43
+ .rp-select--size-md[data-v-097d7f90] {
44
44
  --_rp-select-height: var(--rp-size-control-md);
45
45
  --_rp-select-padding-x: calc(var(--rp-size-control-md) / 3);
46
46
  --_rp-select-font-size: var(--rp-font-size-md);
47
47
  --_rp-select-option-min-height: calc(var(--rp-size-control-md) - var(--rp-spacing-4));
48
48
  --_rp-select-option-padding-y: var(--rp-spacing-1);
49
49
  }
50
- .rp-select--size-lg[data-v-b42a5b2f] {
50
+ .rp-select--size-lg[data-v-097d7f90] {
51
51
  --_rp-select-height: var(--rp-size-control-lg);
52
52
  --_rp-select-padding-x: calc(var(--rp-size-control-lg) / 3);
53
53
  --_rp-select-font-size: var(--rp-font-size-lg);
54
54
  --_rp-select-option-min-height: calc(var(--rp-size-control-lg) - var(--rp-spacing-5));
55
55
  --_rp-select-option-padding-y: calc(var(--rp-spacing-3) / 2);
56
56
  }
57
- .rp-select--size-xl[data-v-b42a5b2f] {
57
+ .rp-select--size-xl[data-v-097d7f90] {
58
58
  --_rp-select-height: var(--rp-size-control-xl);
59
59
  --_rp-select-padding-x: calc(var(--rp-size-control-xl) / 3);
60
60
  --_rp-select-font-size: var(--rp-font-size-xl);
61
61
  --_rp-select-option-min-height: calc(var(--rp-size-control-xl) - var(--rp-spacing-6));
62
62
  --_rp-select-option-padding-y: var(--rp-spacing-2);
63
63
  }
64
- html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[data-v-b42a5b2f] {
64
+ html.dark .rp-select[data-v-097d7f90], [data-rp-color-scheme=dark] .rp-select[data-v-097d7f90] {
65
65
  --_rp-select-invalid-border: var(--rp-color-red-light-color);
66
66
  --_rp-select-invalid-ring: color-mix(
67
67
  in srgb,
@@ -70,11 +70,11 @@ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[da
70
70
  );
71
71
  --_rp-select-option-focused-bg: var(--rp-color-default-hover);
72
72
  }
73
- .rp-select--disabled[data-v-b42a5b2f] {
73
+ .rp-select--disabled[data-v-097d7f90] {
74
74
  opacity: var(--rp-opacity-disabled);
75
75
  cursor: not-allowed;
76
76
  }
77
- .rp-select__trigger[data-v-b42a5b2f] {
77
+ .rp-select__trigger[data-v-097d7f90] {
78
78
  display: inline-flex;
79
79
  align-items: center;
80
80
  justify-content: center;
@@ -91,81 +91,81 @@ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[da
91
91
  transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
92
92
  gap: var(--rp-spacing-2);
93
93
  }
94
- .rp-select__trigger[data-v-b42a5b2f]:hover {
94
+ .rp-select__trigger[data-v-097d7f90]:hover {
95
95
  border-color: var(--rp-color-control-border-hover);
96
96
  }
97
- .rp-select__trigger[data-v-b42a5b2f]:focus-visible {
97
+ .rp-select__trigger[data-v-097d7f90]:focus-visible {
98
98
  outline: none;
99
99
  border-color: var(--rp-color-control-border-focus);
100
100
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
101
101
  }
102
- .rp-select--radius-xs[data-v-b42a5b2f] {
102
+ .rp-select--radius-xs[data-v-097d7f90] {
103
103
  --_rp-select-radius: var(--rp-radius-xs);
104
104
  }
105
- .rp-select--radius-sm[data-v-b42a5b2f] {
105
+ .rp-select--radius-sm[data-v-097d7f90] {
106
106
  --_rp-select-radius: var(--rp-radius-sm);
107
107
  }
108
- .rp-select--radius-md[data-v-b42a5b2f] {
108
+ .rp-select--radius-md[data-v-097d7f90] {
109
109
  --_rp-select-radius: var(--rp-radius-md);
110
110
  }
111
- .rp-select--radius-lg[data-v-b42a5b2f] {
111
+ .rp-select--radius-lg[data-v-097d7f90] {
112
112
  --_rp-select-radius: var(--rp-radius-lg);
113
113
  }
114
- .rp-select--radius-xl[data-v-b42a5b2f] {
114
+ .rp-select--radius-xl[data-v-097d7f90] {
115
115
  --_rp-select-radius: var(--rp-radius-xl);
116
116
  }
117
- .rp-select--open .rp-select__trigger[data-v-b42a5b2f] {
117
+ .rp-select--open .rp-select__trigger[data-v-097d7f90] {
118
118
  border-color: var(--rp-color-control-border-focus);
119
119
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
120
120
  }
121
- .rp-select--invalid .rp-select__trigger[data-v-b42a5b2f] {
121
+ .rp-select--invalid .rp-select__trigger[data-v-097d7f90] {
122
122
  border-color: var(--_rp-select-invalid-border);
123
123
  }
124
- .rp-select--invalid .rp-select__trigger[data-v-b42a5b2f]:focus-visible, .rp-select--open.rp-select--invalid .rp-select__trigger[data-v-b42a5b2f] {
124
+ .rp-select--invalid .rp-select__trigger[data-v-097d7f90]:focus-visible, .rp-select--open.rp-select--invalid .rp-select__trigger[data-v-097d7f90] {
125
125
  border-color: var(--_rp-select-invalid-border);
126
126
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-select-invalid-ring);
127
127
  }
128
- .rp-select__value[data-v-b42a5b2f] {
128
+ .rp-select__value[data-v-097d7f90] {
129
129
  flex: 1;
130
130
  overflow: hidden;
131
131
  text-overflow: ellipsis;
132
132
  white-space: nowrap;
133
133
  color: var(--rp-color-control-fg);
134
134
  }
135
- .rp-select__placeholder[data-v-b42a5b2f] {
135
+ .rp-select__placeholder[data-v-097d7f90] {
136
136
  color: var(--rp-color-control-placeholder);
137
137
  }
138
- .rp-select__indicator[data-v-b42a5b2f] {
138
+ .rp-select__indicator[data-v-097d7f90] {
139
139
  display: inline-flex;
140
140
  align-items: center;
141
141
  width: 1em;
142
142
  height: 1em;
143
143
  flex-shrink: 0;
144
144
  }
145
- .rp-select__indicator svg[data-v-b42a5b2f] {
145
+ .rp-select__indicator svg[data-v-097d7f90] {
146
146
  width: 100%;
147
147
  height: 100%;
148
148
  }
149
- .rp-select__indicator[data-v-b42a5b2f] {
149
+ .rp-select__indicator[data-v-097d7f90] {
150
150
  position: relative;
151
151
  color: var(--rp-color-control-icon);
152
152
  transform: translateX(var(--rp-spacing-1));
153
153
  }
154
- .rp-select__arrow[data-v-b42a5b2f] {
154
+ .rp-select__arrow[data-v-097d7f90] {
155
155
  display: inline-flex;
156
156
  align-items: center;
157
157
  width: 1em;
158
158
  height: 1em;
159
159
  flex-shrink: 0;
160
160
  }
161
- .rp-select__arrow svg[data-v-b42a5b2f] {
161
+ .rp-select__arrow svg[data-v-097d7f90] {
162
162
  width: 100%;
163
163
  height: 100%;
164
164
  }
165
- .rp-select__arrow[data-v-b42a5b2f] {
165
+ .rp-select__arrow[data-v-097d7f90] {
166
166
  transition: opacity var(--rp-transition-fast);
167
167
  }
168
- .rp-select__clear[data-v-b42a5b2f] {
168
+ .rp-select__clear[data-v-097d7f90] {
169
169
  padding: 0;
170
170
  font: inherit;
171
171
  background: none;
@@ -177,11 +177,11 @@ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[da
177
177
  height: 1em;
178
178
  flex-shrink: 0;
179
179
  }
180
- .rp-select__clear svg[data-v-b42a5b2f] {
180
+ .rp-select__clear svg[data-v-097d7f90] {
181
181
  width: 100%;
182
182
  height: 100%;
183
183
  }
184
- .rp-select__clear[data-v-b42a5b2f] {
184
+ .rp-select__clear[data-v-097d7f90] {
185
185
  position: absolute;
186
186
  inset: 0;
187
187
  z-index: 1;
@@ -190,21 +190,19 @@ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[da
190
190
  pointer-events: none;
191
191
  transition: color var(--rp-transition-fast), opacity var(--rp-transition-fast);
192
192
  }
193
- .rp-select__clear[data-v-b42a5b2f]:hover {
193
+ .rp-select__clear[data-v-097d7f90]:hover {
194
194
  color: var(--rp-color-control-fg);
195
195
  }
196
- .rp-select__trigger:hover .rp-select__clear[data-v-b42a5b2f] {
196
+ .rp-select__trigger:hover .rp-select__clear[data-v-097d7f90] {
197
197
  opacity: 1;
198
198
  pointer-events: auto;
199
199
  }
200
- .rp-select__trigger:hover .rp-select__clear + .rp-select__arrow[data-v-b42a5b2f] {
200
+ .rp-select__trigger:hover .rp-select__clear + .rp-select__arrow[data-v-097d7f90] {
201
201
  opacity: 0;
202
202
  }
203
- .rp-select__dropdown[data-v-b42a5b2f] {
203
+ .rp-select__dropdown[data-v-097d7f90] {
204
204
  position: absolute;
205
- top: calc(100% + var(--rp-spacing-2));
206
- left: 0;
207
- right: 0;
205
+ width: 100%;
208
206
  z-index: 100;
209
207
  background-color: var(--rp-color-default);
210
208
  border: var(--rp-border-width-thin) solid var(--rp-color-default-border);
@@ -214,10 +212,10 @@ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[da
214
212
  max-height: 240px;
215
213
  padding: var(--rp-spacing-1);
216
214
  }
217
- .rp-select__dropdown[data-v-b42a5b2f] .rp-scroll-area__viewport {
215
+ .rp-select__dropdown[data-v-097d7f90] .rp-scroll-area__viewport {
218
216
  scroll-padding-block: var(--rp-spacing-1);
219
217
  }
220
- .rp-select__option[data-v-b42a5b2f] {
218
+ .rp-select__option[data-v-097d7f90] {
221
219
  display: flex;
222
220
  align-items: center;
223
221
  min-height: var(--_rp-select-option-min-height);
@@ -228,17 +226,17 @@ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[da
228
226
  transition: color var(--rp-transition-fast);
229
227
  color: var(--rp-color-control-fg);
230
228
  }
231
- .rp-select__option--focused[data-v-b42a5b2f] {
229
+ .rp-select__option--focused[data-v-097d7f90] {
232
230
  background-color: var(--_rp-select-option-focused-bg);
233
231
  }
234
- .rp-select__option--selected[data-v-b42a5b2f] {
232
+ .rp-select__option--selected[data-v-097d7f90] {
235
233
  color: var(--rp-primary-color-light-color);
236
234
  }
237
- .rp-select__option--disabled[data-v-b42a5b2f] {
235
+ .rp-select__option--disabled[data-v-097d7f90] {
238
236
  color: var(--rp-color-disabled-color);
239
237
  cursor: not-allowed;
240
238
  }
241
- .rp-select__empty[data-v-b42a5b2f] {
239
+ .rp-select__empty[data-v-097d7f90] {
242
240
  display: flex;
243
241
  align-items: center;
244
242
  justify-content: center;
@@ -246,13 +244,17 @@ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[da
246
244
  color: var(--rp-color-dimmed);
247
245
  font-size: var(--_rp-select-font-size);
248
246
  }
249
- .rp-select-dropdown-enter-active[data-v-b42a5b2f],
250
- .rp-select-dropdown-leave-active[data-v-b42a5b2f] {
247
+ .rp-select-dropdown-enter-active[data-v-097d7f90],
248
+ .rp-select-dropdown-leave-active[data-v-097d7f90] {
251
249
  transition: opacity var(--rp-transition-fast), transform var(--rp-transition-fast);
252
250
  }
253
- .rp-select-dropdown-enter-from[data-v-b42a5b2f],
254
- .rp-select-dropdown-leave-to[data-v-b42a5b2f] {
251
+ .rp-select-dropdown-enter-from[data-v-097d7f90],
252
+ .rp-select-dropdown-leave-to[data-v-097d7f90] {
255
253
  opacity: 0;
256
254
  transform: translateY(calc(-1 * var(--rp-spacing-1)));
257
255
  }
256
+ .rp-select__dropdown[data-side=top].rp-select-dropdown-enter-from[data-v-097d7f90],
257
+ .rp-select__dropdown[data-side=top].rp-select-dropdown-leave-to[data-v-097d7f90] {
258
+ transform: translateY(var(--rp-spacing-1));
259
+ }
258
260
  }