ropav 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/components/accordion/index.d.ts +1 -0
  2. package/dist/components/autocomplete/index.d.ts +1 -0
  3. package/dist/components/calendar/index.d.ts +1 -0
  4. package/dist/components/checkbox-group/index.d.ts +1 -0
  5. package/dist/components/color-slider/index.d.ts +1 -0
  6. package/dist/components/combo-box/index.d.ts +2 -0
  7. package/dist/components/date-field/index.d.ts +1 -0
  8. package/dist/components/date-picker/index.d.ts +2 -0
  9. package/dist/components/date-range-picker/index.d.ts +2 -0
  10. package/dist/components/date-range-picker/use-date-range-picker.js +1 -1
  11. package/dist/components/disclosure-group/index.d.ts +1 -0
  12. package/dist/components/dropdown/dropdown-menu.js +7 -3
  13. package/dist/components/dropdown/dropdown-root.js +1 -1
  14. package/dist/components/dropdown/dropdown-submenu-trigger.js +1 -1
  15. package/dist/components/dropdown/dropdown.context.d.ts +1 -1
  16. package/dist/components/dropdown/index.d.ts +1 -0
  17. package/dist/components/field-error/field-error-root.js +1 -1
  18. package/dist/components/form/form-root.js +1 -1
  19. package/dist/components/number-field/index.d.ts +1 -0
  20. package/dist/components/overlay/overlay-popover.js +1 -1
  21. package/dist/components/radio-group/index.d.ts +1 -0
  22. package/dist/components/range-calendar/index.d.ts +1 -0
  23. package/dist/components/segmented-control/index.d.ts +1 -0
  24. package/dist/components/select/index.d.ts +1 -0
  25. package/dist/components/slider/index.d.ts +1 -0
  26. package/dist/components/table/table-drag-handle.js +1 -1
  27. package/dist/components/tabs/index.d.ts +1 -0
  28. package/dist/components/tabs/tabs-root.js +5 -0
  29. package/dist/components/tabs/tabs.types.d.ts +8 -0
  30. package/dist/components/time-field/index.d.ts +2 -0
  31. package/dist/components/toggle-button/index.d.ts +1 -0
  32. package/dist/components/toggle-button-group/index.d.ts +1 -0
  33. package/dist/components/tooltip/index.d.ts +1 -0
  34. package/dist/composables/drag-manager.js +1 -1
  35. package/dist/composables/drag-modality.js +2 -1
  36. package/dist/composables/focus-scope-registry.d.ts +19 -0
  37. package/dist/composables/focus-scope-registry.js +38 -0
  38. package/dist/composables/form-context.d.ts +25 -0
  39. package/dist/composables/form-context.js +17 -0
  40. package/dist/composables/index.d.ts +0 -24
  41. package/dist/composables/interaction-modality.d.ts +42 -0
  42. package/dist/composables/interaction-modality.js +91 -0
  43. package/dist/composables/use-calendar-cell.js +1 -1
  44. package/dist/composables/use-checkbox-group-state.js +2 -1
  45. package/dist/composables/use-combo-box-state.d.ts +2 -1
  46. package/dist/composables/use-combo-box-state.js +3 -2
  47. package/dist/composables/use-css-variable.js +1 -5
  48. package/dist/composables/use-default-locale.d.ts +9 -0
  49. package/dist/composables/use-default-locale.js +39 -0
  50. package/dist/composables/use-dismissable.js +1 -1
  51. package/dist/composables/use-display-names.js +1 -1
  52. package/dist/composables/use-drag.js +1 -1
  53. package/dist/composables/use-droppable-collection.js +1 -1
  54. package/dist/composables/use-focus-scope.d.ts +0 -12
  55. package/dist/composables/use-focus-scope.js +4 -31
  56. package/dist/composables/use-form-validation-state.d.ts +1 -60
  57. package/dist/composables/use-form-validation-state.js +3 -134
  58. package/dist/composables/use-form-validation.d.ts +2 -1
  59. package/dist/composables/use-form-validation.js +2 -2
  60. package/dist/composables/use-interaction-states.d.ts +0 -36
  61. package/dist/composables/use-interaction-states.js +8 -91
  62. package/dist/composables/use-locale.d.ts +0 -14
  63. package/dist/composables/use-locale.js +4 -37
  64. package/dist/composables/use-localized-string-dictionary.d.ts +10 -0
  65. package/dist/composables/use-localized-string-dictionary.js +26 -0
  66. package/dist/composables/use-localized-string-formatter.d.ts +0 -9
  67. package/dist/composables/use-localized-string-formatter.js +3 -24
  68. package/dist/composables/use-long-press.d.ts +0 -2
  69. package/dist/composables/use-long-press.js +2 -2
  70. package/dist/composables/use-menu-trigger-state.d.ts +64 -0
  71. package/dist/composables/use-menu-trigger-state.js +90 -0
  72. package/dist/composables/use-menu-trigger.d.ts +2 -1
  73. package/dist/composables/use-modal-overlay.d.ts +2 -1
  74. package/dist/composables/use-modal-overlay.js +3 -2
  75. package/dist/composables/use-overlay-trigger-state.d.ts +0 -62
  76. package/dist/composables/use-overlay-trigger-state.js +2 -87
  77. package/dist/composables/use-page-size.d.ts +14 -0
  78. package/dist/composables/use-page-size.js +42 -0
  79. package/dist/composables/use-press.d.ts +0 -20
  80. package/dist/composables/use-press.js +3 -26
  81. package/dist/composables/use-range-calendar.js +1 -1
  82. package/dist/composables/use-select-state.d.ts +1 -1
  83. package/dist/composables/use-select-state.js +1 -1
  84. package/dist/composables/use-slider.js +1 -1
  85. package/dist/composables/use-toast-region.js +2 -1
  86. package/dist/composables/use-tooltip-trigger-state.js +1 -15
  87. package/dist/composables/use-tooltip-trigger.js +1 -1
  88. package/dist/composables/use-viewport-size.d.ts +0 -13
  89. package/dist/composables/use-viewport-size.js +1 -38
  90. package/dist/composables/validation-result.d.ts +37 -0
  91. package/dist/composables/validation-result.js +122 -0
  92. package/dist/composables/virtual-event.d.ts +20 -0
  93. package/dist/composables/virtual-event.js +28 -0
  94. package/dist/index.js +11 -35
  95. package/dist/ropav.min.css +1 -1
  96. package/dist/utils/date-validation.js +1 -1
  97. package/dist/version.js +1 -1
  98. package/package.json +2 -2
@@ -7,5 +7,6 @@ import AccordionRoot from "./accordion-root.js";
7
7
  import AccordionTrigger from "./accordion-trigger.js";
8
8
  export { AccordionRoot as Accordion, AccordionItem, AccordionHeading, AccordionTrigger, AccordionPanel, AccordionIndicator, AccordionBody, };
9
9
  export type { AccordionRootProps as AccordionProps, AccordionItemProps, AccordionHeadingProps, AccordionTriggerProps, AccordionPanelProps, AccordionIndicatorProps, AccordionBodyProps, } from "./accordion.types.js";
10
+ export type { DisclosureKey } from "../../composables/use-disclosure-group.js";
10
11
  export { accordionVariants } from "@ropav/styles";
11
12
  export type { AccordionVariants } from "@ropav/styles";
@@ -10,5 +10,6 @@ export type { AutocompleteClearButtonProps, AutocompleteFilterEmits, Autocomplet
10
10
  export { useAutocompleteContext } from "./autocomplete.context.js";
11
11
  export type { AutocompleteContext } from "./autocomplete.context.js";
12
12
  export type { UseSelectReturn } from "../../composables/use-select.js";
13
+ export type { SelectedItem, SelectedValue, UseSelectStateReturn, } from "../../composables/use-select-state.js";
13
14
  export { autocompleteVariants } from "@ropav/styles";
14
15
  export type { AutocompleteVariants } from "@ropav/styles";
@@ -14,5 +14,6 @@ export { provideCalendarOwnerContext, provideCalendarStateContext, useCalendarOw
14
14
  export type { CalendarOwnedProps, CalendarOwnerContext, CalendarStateContext, } from "./calendar.context.js";
15
15
  export type { AnyCalendarState, UseCalendarReturn } from "../../composables/use-calendar.js";
16
16
  export type { CalendarHeadingFormatOptions } from "../../composables/use-calendar-heading.js";
17
+ export type { CalendarSelectionMode, CalendarValue, PageBehavior, SelectionAlignment, } from "../../composables/use-calendar-state.js";
17
18
  export { calendarVariants } from "@ropav/styles";
18
19
  export type { CalendarVariants } from "@ropav/styles";
@@ -3,5 +3,6 @@ export { CheckboxGroupRoot as CheckboxGroup };
3
3
  export type { CheckboxGroupRootProps as CheckboxGroupProps, CheckboxGroupSlotProps, } from "./checkbox-group.types.js";
4
4
  export { useCheckboxGroupContext, provideCheckboxGroupContext } from "./checkbox-group.context.js";
5
5
  export type { CheckboxGroupContext } from "./checkbox-group.context.js";
6
+ export type { CheckboxGroupState } from "../../composables/use-checkbox-group-state.js";
6
7
  export { checkboxGroupVariants } from "@ropav/styles";
7
8
  export type { CheckboxGroupVariants } from "@ropav/styles";
@@ -4,5 +4,6 @@ import ColorSliderThumb from "./color-slider-thumb.js";
4
4
  import ColorSliderTrack from "./color-slider-track.js";
5
5
  export { ColorSliderRoot as ColorSlider, ColorSliderOutput, ColorSliderTrack, ColorSliderThumb };
6
6
  export type { ColorSliderRootProps as ColorSliderProps, ColorSliderOutputProps, ColorSliderTrackProps, ColorSliderThumbProps, ColorSliderSlotProps, ColorSliderThumbSlotProps, } from "./color-slider.types.js";
7
+ export type { SliderOrientation } from "../../composables/use-slider-state.js";
7
8
  export { colorSliderVariants } from "@ropav/styles";
8
9
  export type { ColorSliderVariants } from "@ropav/styles";
@@ -8,5 +8,7 @@ export type { ComboBoxInputGroupProps, ComboBoxInputGroupSlotProps, ComboBoxPopo
8
8
  export { useComboBoxContext } from "./combo-box.context.js";
9
9
  export type { ComboBoxContext } from "./combo-box.context.js";
10
10
  export type { UseComboBoxReturn } from "../../composables/use-combo-box.js";
11
+ export type { ComboBoxFilter, ComboBoxMenuTrigger, ComboBoxValidationValue, UseComboBoxStateReturn, } from "../../composables/use-combo-box-state.js";
12
+ export type { SelectSelectionMode, SelectedItem, SelectedValue, } from "../../composables/use-select-state.js";
11
13
  export { comboBoxVariants } from "@ropav/styles";
12
14
  export type { ComboBoxVariants } from "@ropav/styles";
@@ -4,5 +4,6 @@ export { DateInputGroupInput as DateFieldInput, DateInputGroupInputContainer as
4
4
  export { DateFieldRoot as DateField };
5
5
  export type { DateFieldRootProps as DateFieldProps, DateFieldRootSlotProps as DateFieldSlotProps, } from "./date-field.types.js";
6
6
  export type { DateInputGroupInputContainerProps as DateFieldInputContainerProps, DateInputGroupInputProps as DateFieldInputProps, DateInputGroupInputSlotProps as DateFieldInputSlotProps, DateInputGroupPrefixProps as DateFieldPrefixProps, DateInputGroupRootProps as DateFieldGroupProps, DateInputGroupRootSlotProps as DateFieldGroupSlotProps, DateInputGroupSegmentProps as DateFieldSegmentProps, DateInputGroupSuffixProps as DateFieldSuffixProps, } from "../date-input-group/index.js";
7
+ export type { DateSegment } from "../../composables/use-date-field-state.js";
7
8
  export { dateFieldVariants, dateInputGroupVariants } from "@ropav/styles";
8
9
  export type { DateFieldVariants, DateInputGroupVariants } from "@ropav/styles";
@@ -9,5 +9,7 @@ export type { DatePickerPopoverProps, DatePickerRootProps as DatePickerProps, Da
9
9
  export type { DateInputGroupInputContainerProps as DatePickerInputContainerProps, DateInputGroupInputProps as DatePickerInputProps, DateInputGroupInputSlotProps as DatePickerInputSlotProps, DateInputGroupPrefixProps as DatePickerPrefixProps, DateInputGroupRootProps as DatePickerGroupProps, DateInputGroupRootSlotProps as DatePickerGroupSlotProps, DateInputGroupSegmentProps as DatePickerSegmentProps, DateInputGroupSuffixProps as DatePickerSuffixProps, } from "../date-input-group/index.js";
10
10
  export { provideDatePickerContext, useDatePickerContext } from "./date-picker.context.js";
11
11
  export type { DatePickerContext } from "./date-picker.context.js";
12
+ export type { PageBehavior } from "../../composables/use-calendar-state.js";
13
+ export type { DateSegment } from "../../composables/use-date-field-state.js";
12
14
  export { dateInputGroupVariants, datePickerVariants } from "@ropav/styles";
13
15
  export type { DateInputGroupVariants, DatePickerVariants } from "@ropav/styles";
@@ -11,5 +11,7 @@ export type { DateInputGroupInputContainerProps as DateRangePickerInputContainer
11
11
  export { provideDateRangePickerContext, useDateRangePickerContext, } from "./date-range-picker.context.js";
12
12
  export type { DateRangePickerContext } from "./date-range-picker.context.js";
13
13
  export type { DateRange } from "../../composables/use-calendar.js";
14
+ export type { PageBehavior } from "../../composables/use-calendar-state.js";
15
+ export type { DateSegment } from "../../composables/use-date-field-state.js";
14
16
  export { dateInputGroupVariants, dateRangePickerVariants } from "@ropav/styles";
15
17
  export type { DateInputGroupVariants, DateRangePickerVariants } from "@ropav/styles";
@@ -1,7 +1,7 @@
1
1
  import { useId as useId$1 } from "../../composables/use-id.js";
2
2
  import { createFocusManager } from "../../utils/focus.js";
3
3
  import { useFieldIds } from "../../composables/use-field-ids.js";
4
- import { DEFAULT_VALIDATION_RESULT, mergeValidation } from "../../composables/use-form-validation-state.js";
4
+ import { DEFAULT_VALIDATION_RESULT, mergeValidation } from "../../composables/validation-result.js";
5
5
  import { useLocale } from "../../composables/use-locale.js";
6
6
  import { useLocalizedStringFormatter } from "../../composables/use-localized-string-formatter.js";
7
7
  import { useDescription } from "../../composables/use-description.js";
@@ -3,6 +3,7 @@ export { DisclosureGroupRoot as DisclosureGroup };
3
3
  export type { DisclosureGroupRootProps as DisclosureGroupProps } from "./disclosure-group.types.js";
4
4
  export { useDisclosureGroupContext } from "./disclosure-group.context.js";
5
5
  export type { DisclosureGroupContext } from "./disclosure-group.context.js";
6
+ export type { DisclosureKey, UseDisclosureGroupReturn, } from "../../composables/use-disclosure-group.js";
6
7
  export { useDisclosureGroupNavigation } from "../../composables/use-disclosure-group-navigation.js";
7
8
  export type { UseDisclosureGroupNavigationOptions, UseDisclosureGroupNavigationReturn, } from "../../composables/use-disclosure-group-navigation.js";
8
9
  export { disclosureGroupVariants } from "@ropav/styles";
@@ -2,6 +2,7 @@ import { provideSeparatorContext } from "../separator/separator.context.js";
2
2
  import { useMenu } from "../../composables/use-menu.js";
3
3
  import { useDropdownPopoverTarget } from "./dropdown.context.js";
4
4
  import { computed, createIf, createSlot, defineVaporComponent, renderEffect, setDynamicProps, setInsertionState, setTemplateRefBinding, template, unref, useSlots } from "vue";
5
+ import { menuVariants } from "@ropav/styles";
5
6
  //#region src/components/dropdown/dropdown-menu.vue?vue&type=script&setup=true&vapor=true&lang.ts
6
7
  var t0 = template("<div>");
7
8
  var t1 = template("<div>", 1);
@@ -36,6 +37,10 @@ var dropdown_menu_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
36
37
  const emit = __emit;
37
38
  const callerSlots = useSlots();
38
39
  const target = useDropdownPopoverTarget();
40
+ const styles = computed(() => menuVariants({
41
+ class: ["rp-dropdown__menu", props.class],
42
+ size: props.size
43
+ }));
39
44
  provideSeparatorContext({ elementType: "div" });
40
45
  const menu = useMenu({
41
46
  autoFocus: target.autoFocus,
@@ -62,12 +67,11 @@ var dropdown_menu_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__
62
67
  const hasEmptySlot = computed(() => Boolean(callerSlots["empty"]));
63
68
  const n5 = t1();
64
69
  renderEffect(() => {
65
- const _props = props;
66
70
  const _menu = unref(menu);
67
71
  setDynamicProps(n5, [
68
72
  {
69
- class: ["rp-menu rp-dropdown__menu", _props.class],
70
- "data-selection-mode": _props.selectionMode,
73
+ class: styles.value,
74
+ "data-selection-mode": props.selectionMode,
71
75
  "data-slot": "dropdown-menu"
72
76
  },
73
77
  _menu.menuAttributes.value,
@@ -1,5 +1,5 @@
1
1
  import { providePressResponder } from "../../composables/press-responder.js";
2
- import { useMenuTriggerState } from "../../composables/use-overlay-trigger-state.js";
2
+ import { useMenuTriggerState } from "../../composables/use-menu-trigger-state.js";
3
3
  import { useMenuTrigger } from "../../composables/use-menu-trigger.js";
4
4
  import { provideDropdownContext, provideDropdownPopoverTarget } from "./dropdown.context.js";
5
5
  import { computed, createSlot, defineVaporComponent } from "vue";
@@ -1,5 +1,5 @@
1
1
  import { useId as useId$1 } from "../../composables/use-id.js";
2
- import { useSubmenuTriggerState } from "../../composables/use-overlay-trigger-state.js";
2
+ import { useSubmenuTriggerState } from "../../composables/use-menu-trigger-state.js";
3
3
  import { provideMenuItemPopupContext } from "../menu-item/menu-item.context.js";
4
4
  import { useMenuContext } from "../menu/menu.context.js";
5
5
  import { provideDropdownPopoverTarget, useDropdownContext } from "./dropdown.context.js";
@@ -1,4 +1,4 @@
1
- import type { RootMenuTriggerState } from "../../composables/use-overlay-trigger-state.js";
1
+ import type { RootMenuTriggerState } from "../../composables/use-menu-trigger-state.js";
2
2
  import type { OverlayTargetContext } from "../overlay/index.js";
3
3
  import type { dropdownVariants } from "@ropav/styles";
4
4
  import type { ComputedRef } from "vue";
@@ -8,5 +8,6 @@ export type { DropdownMenuProps, DropdownPopoverProps, DropdownRootEmits as Drop
8
8
  export { useDropdownContext, useDropdownPopoverTarget } from "./dropdown.context.js";
9
9
  export type { DropdownContext, DropdownPopoverTarget } from "./dropdown.context.js";
10
10
  export type { MenuTriggerType } from "../../composables/use-menu-trigger.js";
11
+ export type { RootMenuTriggerState } from "../../composables/use-menu-trigger-state.js";
11
12
  export { dropdownVariants } from "@ropav/styles";
12
13
  export type { DropdownVariants } from "@ropav/styles";
@@ -1,4 +1,4 @@
1
- import { DEFAULT_VALIDATION_RESULT } from "../../composables/use-form-validation-state.js";
1
+ import { DEFAULT_VALIDATION_RESULT } from "../../composables/validation-result.js";
2
2
  import field_error_content_default from "./field-error-content.js";
3
3
  import { useFieldErrorContext } from "./field-error.context.js";
4
4
  import { computed, createComponent, createIf, createSlot, defineVaporComponent, extend, renderEffect, setText, template, toDisplayString } from "vue";
@@ -1,4 +1,4 @@
1
- import { provideFormContext } from "../../composables/use-form-validation-state.js";
1
+ import { provideFormContext } from "../../composables/form-context.js";
2
2
  import { computed, createSlot, defineVaporComponent, on, renderEffect, setClass, setInsertionState, setProp, shallowRef, template } from "vue";
3
3
  //#region src/components/form/form-root.vue?vue&type=script&setup=true&vapor=true&lang.ts
4
4
  var t0 = template("<form>", 1);
@@ -8,5 +8,6 @@ export type { NumberFieldRootProps as NumberFieldProps, NumberFieldRootSlotProps
8
8
  export { provideNumberFieldContext, useNumberFieldContext } from "./number-field.context.js";
9
9
  export type { NumberFieldContext } from "./number-field.context.js";
10
10
  export type { NumberFieldStepper, UseNumberFieldReturn } from "../../composables/use-number-field.js";
11
+ export type { NumberFieldCommitBehavior } from "../../composables/use-number-field-state.js";
11
12
  export { numberFieldVariants } from "@ropav/styles";
12
13
  export type { NumberFieldVariants } from "@ropav/styles";
@@ -1,8 +1,8 @@
1
1
  import { dataAttr } from "../../utils/assertion.js";
2
2
  import { provideSurfaceContext } from "../surface/surface.context.js";
3
3
  import { ariaHideOutside, keepVisible } from "../../utils/aria-hide-outside.js";
4
- import { useFocusScope } from "../../composables/use-focus-scope.js";
5
4
  import { useDismissable } from "../../composables/use-dismissable.js";
5
+ import { useFocusScope } from "../../composables/use-focus-scope.js";
6
6
  import { usePreventScroll } from "../../composables/use-prevent-scroll.js";
7
7
  import { useEnterExit } from "../../composables/use-enter-exit.js";
8
8
  import { provideOverlayGroupContext, useOverlayGroupContext, useOverlayTargetContext } from "./overlay.context.js";
@@ -3,5 +3,6 @@ export { RadioGroupRoot as RadioGroup };
3
3
  export type { RadioGroupRootProps as RadioGroupProps, RadioGroupSlotProps, } from "./radio-group.types.js";
4
4
  export { useRadioGroupContext, provideRadioGroupContext } from "./radio-group.context.js";
5
5
  export type { RadioGroupContext } from "./radio-group.context.js";
6
+ export type { RadioGroupState } from "../../composables/use-radio-group-state.js";
6
7
  export { radioGroupVariants } from "@ropav/styles";
7
8
  export type { RadioGroupVariants } from "@ropav/styles";
@@ -14,6 +14,7 @@ export { provideRangeCalendarContext, provideRangeCalendarOwnerContext, useRange
14
14
  export type { RangeCalendarContext, RangeCalendarOwnedProps, RangeCalendarOwnerContext, } from "./range-calendar.context.js";
15
15
  export type { AnyCalendarState, DateRange } from "../../composables/use-calendar.js";
16
16
  export type { CalendarHeadingFormatOptions } from "../../composables/use-calendar-heading.js";
17
+ export type { PageBehavior, SelectionAlignment } from "../../composables/use-calendar-state.js";
17
18
  export type { RangeCalendarCommitBehavior } from "../../composables/use-range-calendar.js";
18
19
  export { rangeCalendarVariants } from "@ropav/styles";
19
20
  export type { RangeCalendarVariants } from "@ropav/styles";
@@ -6,5 +6,6 @@ export { SegmentedControlRoot as SegmentedControl, SegmentedControlItem, Segment
6
6
  export type { SegmentedControlRootProps as SegmentedControlProps, SegmentedControlRootSlotProps as SegmentedControlSlotProps, SegmentedControlItemProps, SegmentedControlItemSlotProps, SegmentedControlIndicatorProps, SegmentedControlSeparatorProps, SegmentedControlOrientation, } from "./segmented-control.types.js";
7
7
  export { useSegmentedControlContext, useSegmentedControlItemContext, } from "./segmented-control.context.js";
8
8
  export type { SegmentedControlContext, SegmentedControlItemContext, } from "./segmented-control.context.js";
9
+ export type { UseSingleSelectListStateReturn } from "../../composables/use-single-select-list-state.js";
9
10
  export { segmentedControlVariants } from "@ropav/styles";
10
11
  export type { SegmentedControlVariants } from "@ropav/styles";
@@ -9,5 +9,6 @@ export type { SelectClearButtonProps, SelectIndicatorProps, SelectPopoverProps,
9
9
  export { useSelectContext } from "./select.context.js";
10
10
  export type { SelectContext } from "./select.context.js";
11
11
  export type { UseSelectReturn } from "../../composables/use-select.js";
12
+ export type { SelectSelectionMode, SelectedItem, SelectedValue, UseSelectStateReturn, } from "../../composables/use-select-state.js";
12
13
  export { selectVariants } from "@ropav/styles";
13
14
  export type { SelectVariants } from "@ropav/styles";
@@ -6,5 +6,6 @@ import SliderThumb from "./slider-thumb.js";
6
6
  import SliderTrack from "./slider-track.js";
7
7
  export { SliderRoot as Slider, SliderOutput, SliderTrack, SliderFill, SliderThumb, SliderMarks };
8
8
  export type { SliderRootProps as SliderProps, SliderOutputProps, SliderTrackProps, SliderFillProps, SliderThumbProps, SliderMarksProps, SliderSlotProps, SliderThumbSlotProps, } from "./slider.types.js";
9
+ export type { SliderOrientation } from "../../composables/use-slider-state.js";
9
10
  export { sliderVariants } from "@ropav/styles";
10
11
  export type { SliderVariants } from "@ropav/styles";
@@ -1,5 +1,5 @@
1
1
  import { providePressResponder } from "../../composables/press-responder.js";
2
- import { isVirtualClick, isVirtualPointerEvent } from "../../composables/use-press.js";
2
+ import { isVirtualClick, isVirtualPointerEvent } from "../../composables/virtual-event.js";
3
3
  import { useTableRowContext } from "./table.context.js";
4
4
  import { computed, createSlot, defineVaporComponent, shallowRef } from "vue";
5
5
  //#region src/components/table/table-drag-handle.vue?vue&type=script&setup=true&vapor=true&lang.ts
@@ -9,5 +9,6 @@ export { TabsRoot as Tabs, TabsListContainer, TabsList, TabsTab, TabsIndicator,
9
9
  export type { TabsRootProps as TabsProps, TabsRootSlotProps as TabsSlotProps, TabsListContainerProps, TabsListProps, TabsTabProps, TabsTabSlotProps, TabsIndicatorProps, TabsSeparatorProps, TabsPanelProps, TabsPanelSlotProps, TabsKeyboardActivation, TabsOrientation, } from "./tabs.types.js";
10
10
  export { useTabsContext, useTabsTabContext } from "./tabs.context.js";
11
11
  export type { TabsContext, TabsTabContext } from "./tabs.context.js";
12
+ export type { UseTabListStateReturn } from "../../composables/use-tab-list-state.js";
12
13
  export { tabsVariants } from "@ropav/styles";
13
14
  export type { TabsVariants } from "@ropav/styles";
@@ -13,6 +13,10 @@ var tabs_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
13
13
  props: {
14
14
  class: {},
15
15
  align: { default: void 0 },
16
+ fullWidth: {
17
+ type: Boolean,
18
+ default: void 0
19
+ },
16
20
  selectedKey: {},
17
21
  defaultSelectedKey: {},
18
22
  disabledKeys: {},
@@ -34,6 +38,7 @@ var tabs_root_vue_vue_type_script_setup_true_vapor_true_lang_default = /*@__PURE
34
38
  const isDisabled = computed(() => Boolean(props.isDisabled));
35
39
  const slots = computed(() => tabsVariants({
36
40
  align: props.align,
41
+ fullWidth: props.fullWidth,
37
42
  variant: props.variant
38
43
  }));
39
44
  const state = useTabListState({
@@ -14,6 +14,14 @@ export interface TabsRootProps {
14
14
  * @default "center"
15
15
  */
16
16
  align?: TabsVariants["align"];
17
+ /**
18
+ * Whether the tabs share the row between them. `false` sizes each tab to its label and starts
19
+ * the row at the inline start, which is the header-bar layout; the primary track then hugs the
20
+ * tabs too. A vertical list is unaffected — its tabs always take the widest one's width.
21
+ *
22
+ * @default true
23
+ */
24
+ fullWidth?: boolean;
17
25
  /** The selected tab, when the caller drives it. */
18
26
  selectedKey?: CollectionKey;
19
27
  /** The initially selected tab. Falls back to the first tab that is not disabled. */
@@ -4,5 +4,7 @@ export { DateInputGroupInput as TimeFieldInput, DateInputGroupInputContainer as
4
4
  export { TimeFieldRoot as TimeField };
5
5
  export type { TimeFieldRootProps as TimeFieldProps, TimeFieldRootSlotProps as TimeFieldSlotProps, } from "./time-field.types.js";
6
6
  export type { DateInputGroupInputContainerProps as TimeFieldInputContainerProps, DateInputGroupInputProps as TimeFieldInputProps, DateInputGroupInputSlotProps as TimeFieldInputSlotProps, DateInputGroupPrefixProps as TimeFieldPrefixProps, DateInputGroupRootProps as TimeFieldGroupProps, DateInputGroupRootSlotProps as TimeFieldGroupSlotProps, DateInputGroupSegmentProps as TimeFieldSegmentProps, DateInputGroupSuffixProps as TimeFieldSuffixProps, } from "../date-input-group/index.js";
7
+ export type { DateSegment } from "../../composables/use-date-field-state.js";
8
+ export type { TimeGranularity } from "../../composables/use-time-field-state.js";
7
9
  export { dateInputGroupVariants, timeFieldVariants } from "@ropav/styles";
8
10
  export type { DateInputGroupVariants, TimeFieldVariants } from "@ropav/styles";
@@ -1,5 +1,6 @@
1
1
  import ToggleButtonRoot from "./toggle-button-root.js";
2
2
  export { ToggleButtonRoot as ToggleButton };
3
3
  export type { ToggleButtonRootProps as ToggleButtonProps, ToggleButtonSlotProps, } from "./toggle-button.types.js";
4
+ export type { ToggleGroupKey } from "../../composables/use-toggle-group-state.js";
4
5
  export { toggleButtonVariants } from "@ropav/styles";
5
6
  export type { ToggleButtonVariants } from "@ropav/styles";
@@ -4,5 +4,6 @@ export { ToggleButtonGroupRoot as ToggleButtonGroup, ToggleButtonGroupSeparator
4
4
  export type { ToggleButtonGroupRootProps as ToggleButtonGroupProps, ToggleButtonGroupSeparatorProps, } from "./toggle-button-group.types.js";
5
5
  export { useToggleButtonGroupContext } from "./toggle-button-group.context.js";
6
6
  export type { ToggleButtonGroupContext } from "./toggle-button-group.context.js";
7
+ export type { ToggleGroupKey, ToggleGroupSelectionMode, UseToggleGroupStateReturn, } from "../../composables/use-toggle-group-state.js";
7
8
  export { toggleButtonGroupVariants } from "@ropav/styles";
8
9
  export type { ToggleButtonGroupVariants } from "@ropav/styles";
@@ -6,5 +6,6 @@ export { TooltipArrow, TooltipContent, TooltipRoot as Tooltip, TooltipTrigger };
6
6
  export type { TooltipArrowProps, TooltipContentProps, TooltipRootEmits as TooltipEmits, TooltipRootProps as TooltipProps, TooltipTriggerProps, } from "./tooltip.types.js";
7
7
  export { useTooltipContext } from "./tooltip.context.js";
8
8
  export type { TooltipContext } from "./tooltip.context.js";
9
+ export type { TooltipTriggerState } from "../../composables/use-tooltip-trigger-state.js";
9
10
  export { tooltipVariants } from "@ropav/styles";
10
11
  export type { TooltipVariants } from "@ropav/styles";
@@ -1,5 +1,5 @@
1
1
  import { ariaHideOutside } from "../utils/aria-hide-outside.js";
2
- import { isVirtualClick, isVirtualPointerEvent } from "./use-press.js";
2
+ import { isVirtualClick, isVirtualPointerEvent } from "./virtual-event.js";
3
3
  import { announce } from "../utils/live-announcer.js";
4
4
  import { getTypes } from "../utils/dnd-data-transfer.js";
5
5
  import { getDragModality } from "./drag-modality.js";
@@ -1,4 +1,5 @@
1
- import { getInteractionModality, useInteractionModality } from "./use-interaction-states.js";
1
+ import { getInteractionModality } from "./interaction-modality.js";
2
+ import { useInteractionModality } from "./use-interaction-states.js";
2
3
  import { computed } from "vue";
3
4
  //#region src/composables/drag-modality.ts
4
5
  var mapModality = (modality) => {
@@ -0,0 +1,19 @@
1
+ export interface RegisteredScope {
2
+ root: () => HTMLElement | null;
3
+ contain: () => boolean;
4
+ }
5
+ export declare const innermostContainingScope: () => RegisteredScope | null;
6
+ /**
7
+ * Whether the element sits inside any registered scope.
8
+ *
9
+ * Any scope rather than only the descendants of one, because an overlay opened from inside
10
+ * another is a **sibling** in the DOM rather than a descendant — a submenu renders into its root
11
+ * popover's container, and a dropdown opened from a popover makes a container of its own. There
12
+ * is no tree to walk here, so a scope boundary is the thing that answers "focus is still in an
13
+ * overlay". React Aria walks its scope tree and asks the narrower question; the difference shows
14
+ * only when two unrelated overlays are open at once and focus moves between them, where this
15
+ * errs towards leaving them open.
16
+ */
17
+ export declare const isElementInAnyFocusScope: (element: Element) => boolean;
18
+ /** Add a scope as the innermost, returning its removal. */
19
+ export declare const registerFocusScope: (scope: RegisteredScope) => (() => void);
@@ -0,0 +1,38 @@
1
+ //#region src/composables/focus-scope-registry.ts
2
+ /**
3
+ * Registered scopes, outermost first.
4
+ *
5
+ * Module-level because containment is a question about the whole page, not about one overlay:
6
+ * only the innermost containing scope may hold focus, and focus moving into a scope nested
7
+ * inside it has to be allowed through rather than pulled back.
8
+ */
9
+ var scopes = [];
10
+ var innermostContainingScope = () => {
11
+ for (let index = scopes.length - 1; index >= 0; index--) {
12
+ const scope = scopes[index];
13
+ if (scope.contain()) return scope;
14
+ }
15
+ return null;
16
+ };
17
+ /**
18
+ * Whether the element sits inside any registered scope.
19
+ *
20
+ * Any scope rather than only the descendants of one, because an overlay opened from inside
21
+ * another is a **sibling** in the DOM rather than a descendant — a submenu renders into its root
22
+ * popover's container, and a dropdown opened from a popover makes a container of its own. There
23
+ * is no tree to walk here, so a scope boundary is the thing that answers "focus is still in an
24
+ * overlay". React Aria walks its scope tree and asks the narrower question; the difference shows
25
+ * only when two unrelated overlays are open at once and focus moves between them, where this
26
+ * errs towards leaving them open.
27
+ */
28
+ var isElementInAnyFocusScope = (element) => scopes.some((scope) => scope.root()?.contains(element));
29
+ /** Add a scope as the innermost, returning its removal. */
30
+ var registerFocusScope = (scope) => {
31
+ scopes.push(scope);
32
+ return () => {
33
+ const index = scopes.indexOf(scope);
34
+ if (index >= 0) scopes.splice(index, 1);
35
+ };
36
+ };
37
+ //#endregion
38
+ export { innermostContainingScope, isElementInAnyFocusScope, registerFocusScope };
@@ -0,0 +1,25 @@
1
+ import type { FormValidationErrors, ValidationBehavior } from "./use-form-validation-state.js";
2
+ import type { ComputedRef, Ref } from "vue";
3
+ export interface FormContext {
4
+ /** Errors keyed by field `name`, shown until the user edits the value. */
5
+ validationErrors: ComputedRef<FormValidationErrors>;
6
+ /** Default for every field inside, unless the field names its own. */
7
+ validationBehavior: ComputedRef<ValidationBehavior>;
8
+ /**
9
+ * Bumped by every submit attempt.
10
+ *
11
+ * Under `"native"` a field learns of a failed submit from the browser, which fires `invalid` at
12
+ * it. Under `"aria"` the browser is not involved, so this is the only thing that tells a field
13
+ * holding an unrevealed error that it is now being asked for.
14
+ */
15
+ submitCount?: Readonly<Ref<number>>;
16
+ }
17
+ /**
18
+ * React splits this in two — `FormValidationContext` in react-stately for the errors,
19
+ * `FormContext` in react-aria-components for the behaviour — only because the two live in
20
+ * different packages. Here one provider hands out both, so a field injects once and the two
21
+ * halves cannot drift apart.
22
+ *
23
+ * Loose: a field outside a form is the normal case, not an error.
24
+ */
25
+ export declare const useFormContext: () => FormContext | null, provideFormContext: (value: FormContext | null) => FormContext | null;
@@ -0,0 +1,17 @@
1
+ import { createContext } from "../utils/create-context.js";
2
+ //#region src/composables/form-context.ts
3
+ /**
4
+ * React splits this in two — `FormValidationContext` in react-stately for the errors,
5
+ * `FormContext` in react-aria-components for the behaviour — only because the two live in
6
+ * different packages. Here one provider hands out both, so a field injects once and the two
7
+ * halves cannot drift apart.
8
+ *
9
+ * Loose: a field outside a form is the normal case, not an error.
10
+ */
11
+ var [useFormContext, provideFormContext] = createContext({
12
+ defaultValue: null,
13
+ name: "FormContext",
14
+ strict: false
15
+ });
16
+ //#endregion
17
+ export { provideFormContext, useFormContext };
@@ -1,23 +1,10 @@
1
1
  export * from "./focus-responder.js";
2
2
  export * from "./press-responder.js";
3
- export * from "./use-calendar-state.js";
4
- export * from "./use-checkbox-group-state.js";
5
3
  export * from "./use-collator.js";
6
4
  export * from "./use-collection.js";
7
- export * from "./use-color-area-state.js";
8
- export * from "./use-color-channel-field-state.js";
9
- export * from "./use-color-field-state.js";
10
- export * from "./use-color-picker-state.js";
11
- export * from "./use-color-slider-state.js";
12
- export * from "./use-combo-box-state.js";
13
5
  export * from "./use-controllable-state.js";
14
- export * from "./use-css-variable.js";
15
- export * from "./use-date-field-state.js";
16
6
  export * from "./use-date-formatter.js";
17
- export * from "./use-date-picker-state.js";
18
- export * from "./use-date-range-picker-state.js";
19
7
  export * from "./use-description.js";
20
- export * from "./use-disclosure-group.js";
21
8
  export * from "./use-dismissable.js";
22
9
  export * from "./use-drag-and-drop.js";
23
10
  export * from "./use-drop.js";
@@ -29,7 +16,6 @@ export * from "./use-form-reset.js";
29
16
  export * from "./use-form-validation-state.js";
30
17
  export * from "./use-id.js";
31
18
  export * from "./use-interaction-states.js";
32
- export * from "./use-labels.js";
33
19
  export * from "./use-list-data.js";
34
20
  export * from "./use-list-keyboard.js";
35
21
  export * from "./use-locale.js";
@@ -37,22 +23,12 @@ export * from "./use-localized-string-formatter.js";
37
23
  export * from "./use-long-press.js";
38
24
  export * from "./use-media-query.js";
39
25
  export * from "./use-move.js";
40
- export * from "./use-number-field-state.js";
41
26
  export * from "./use-number-formatter.js";
42
27
  export * from "./use-overlay-position.js";
43
28
  export * from "./use-overlay-trigger-state.js";
44
29
  export * from "./use-press.js";
45
30
  export * from "./use-prevent-scroll.js";
46
- export * from "./use-radio-group-state.js";
47
- export * from "./use-range-calendar-state.js";
48
- export * from "./use-select-state.js";
49
31
  export * from "./use-selection-manager.js";
50
- export * from "./use-single-select-list-state.js";
51
- export * from "./use-slider-state.js";
52
- export * from "./use-tab-list-state.js";
53
- export * from "./use-time-field-state.js";
54
32
  export * from "./use-toast.js";
55
- export * from "./use-toggle-group-state.js";
56
- export * from "./use-tooltip-trigger-state.js";
57
33
  export * from "./use-typeahead.js";
58
34
  export * from "./use-viewport-size.js";
@@ -0,0 +1,42 @@
1
+ import type { InteractionModality } from "./use-interaction-states.js";
2
+ /**
3
+ * Keep the shared modality listeners attached, returning the release.
4
+ *
5
+ * For a component that has to ask how the user is driving the page without otherwise taking part
6
+ * in the interaction lifecycle — a tooltip trigger, which opens on hover only for a real pointer.
7
+ * Without this the answer would be whatever it was when the last interactive component unmounted.
8
+ */
9
+ export declare const retainInteractionModality: () => (() => void);
10
+ /**
11
+ * How the user is driving the page right now.
12
+ *
13
+ * Ported from React Aria's `getInteractionModality`. Not reactive on purpose — read it inside an
14
+ * event handler, where the answer is the one that matters.
15
+ */
16
+ export declare const getInteractionModality: () => InteractionModality;
17
+ /**
18
+ * Whether focus arriving right now is the kind that came from a keyboard.
19
+ *
20
+ * Ported from React Aria's `isFocusVisible`, and reads the same answer React Aria reads — the one
21
+ * that follows the pointer as it moves. Read it inside a handler: a tooltip asks it on focus to
22
+ * tell tabbing to a button apart from clicking it, and only the pointer-following answer knows the
23
+ * user had already reached for the mouse.
24
+ *
25
+ * Not the answer that decides whether a ring is painted. That one lives on `useInteractionStates`
26
+ * and deliberately ignores a bare mouse move, so moving the pointer cannot erase a ring that is
27
+ * already there. The two can disagree, and that is the point.
28
+ */
29
+ export declare const isFocusVisible: () => boolean;
30
+ /**
31
+ * Declare how the last interaction reached the page.
32
+ *
33
+ * Ported from React Aria's `setInteractionModality`. A component that moves focus itself —
34
+ * a slider label handing focus to its first thumb — has to say that the move came from the
35
+ * keyboard, or the ring it just earned would not be painted.
36
+ */
37
+ export declare const setInteractionModality: (next: InteractionModality) => void;
38
+ /**
39
+ * The answer that decides whether a ring is painted: moved by a keystroke or a press, never by a
40
+ * bare mouse move. Reactive when read inside a computed.
41
+ */
42
+ export declare const getFocusRingModality: () => InteractionModality;