ropav 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +20 -51
  2. package/dist/base.css +21 -0
  3. package/dist/button-group.css +50 -0
  4. package/dist/button-group.js +49 -0
  5. package/dist/button-group.js.map +1 -0
  6. package/dist/button.css +72 -42
  7. package/dist/button.js +41 -31
  8. package/dist/button.js.map +1 -1
  9. package/dist/checkbox.css +105 -102
  10. package/dist/checkbox.js +18 -6
  11. package/dist/checkbox.js.map +1 -1
  12. package/dist/componentColors.js +22 -0
  13. package/dist/componentColors.js.map +1 -0
  14. package/dist/components/button/button.d.ts +2 -0
  15. package/dist/components/button/types.d.ts +2 -1
  16. package/dist/components/button/useButtonColor.d.ts +13 -0
  17. package/dist/components/button-group/button-group.d.ts +21 -0
  18. package/dist/components/button-group/index.d.ts +2 -0
  19. package/dist/components/button-group/index.js +2 -0
  20. package/dist/components/button-group/types.d.ts +10 -0
  21. package/dist/components/checkbox/types.d.ts +2 -1
  22. package/dist/components/checkbox/useCheckbox.d.ts +4 -0
  23. package/dist/components/progress/index.d.ts +3 -0
  24. package/dist/components/progress/index.js +2 -0
  25. package/dist/components/progress/progress.d.ts +27 -0
  26. package/dist/components/progress/types.d.ts +24 -0
  27. package/dist/components/progress/useProgress.d.ts +28 -0
  28. package/dist/components/radio/types.d.ts +2 -1
  29. package/dist/components/radio/useRadio.d.ts +4 -0
  30. package/dist/components/slider/index.d.ts +3 -0
  31. package/dist/components/slider/index.js +2 -0
  32. package/dist/components/slider/slider.d.ts +35 -0
  33. package/dist/components/slider/types.d.ts +50 -0
  34. package/dist/components/slider/useSlider.d.ts +50 -0
  35. package/dist/components/switch/types.d.ts +2 -1
  36. package/dist/components/switch/useSwitch.d.ts +3 -0
  37. package/dist/components/textarea/index.d.ts +1 -1
  38. package/dist/components/textarea/types.d.ts +5 -0
  39. package/dist/components/textarea/useTextarea.d.ts +2 -0
  40. package/dist/components/tooltip/index.d.ts +2 -0
  41. package/dist/components/tooltip/index.js +2 -0
  42. package/dist/components/tooltip/tooltip.d.ts +27 -0
  43. package/dist/components/tooltip/types.d.ts +29 -0
  44. package/dist/components/tooltip/useTooltip.d.ts +17 -0
  45. package/dist/icon-button.css +82 -49
  46. package/dist/icon-button.js +13 -9
  47. package/dist/icon-button.js.map +1 -1
  48. package/dist/index.d.ts +4 -0
  49. package/dist/index.js +6 -1
  50. package/dist/progress.css +125 -0
  51. package/dist/progress.js +177 -0
  52. package/dist/progress.js.map +1 -0
  53. package/dist/radio.css +83 -83
  54. package/dist/radio.js +18 -6
  55. package/dist/radio.js.map +1 -1
  56. package/dist/select.css +3 -1
  57. package/dist/select.js +7 -0
  58. package/dist/select.js.map +1 -1
  59. package/dist/slider.css +438 -0
  60. package/dist/slider.js +412 -0
  61. package/dist/slider.js.map +1 -0
  62. package/dist/switch.css +77 -77
  63. package/dist/switch.js +15 -6
  64. package/dist/switch.js.map +1 -1
  65. package/dist/textarea.css +33 -26
  66. package/dist/textarea.js +106 -15
  67. package/dist/textarea.js.map +1 -1
  68. package/dist/tooltip.css +136 -0
  69. package/dist/tooltip.js +384 -0
  70. package/dist/tooltip.js.map +1 -0
  71. package/dist/useButtonColor.js +33 -0
  72. package/dist/useButtonColor.js.map +1 -0
  73. package/package.json +18 -2
  74. package/src/styles/_mixins.scss +17 -0
  75. package/src/styles/_utilities.scss +13 -0
  76. package/src/styles/base.scss +1 -0
  77. package/dist/loader-circle.js +0 -14
  78. package/dist/loader-circle.js.map +0 -1
@@ -4,6 +4,10 @@ export declare function useRadio(props: Readonly<RadioProps>): {
4
4
  isChecked: import('vue').ComputedRef<boolean>;
5
5
  isDisabled: import('vue').ComputedRef<boolean>;
6
6
  rootClass: import('vue').ComputedRef<string[]>;
7
+ rootStyle: import('vue').ComputedRef<{
8
+ '--_rp-radio-custom-color': string & {};
9
+ '--_rp-radio-custom-on-color': string;
10
+ } | undefined>;
7
11
  onSelect: () => void;
8
12
  };
9
13
  export declare function useRadioGroup(props: Readonly<RadioGroupProps>, emitUpdate: (value: string | number | null) => void): {
@@ -0,0 +1,3 @@
1
+ export { default as Slider } from './slider';
2
+ export { sliderColors, sliderOrientations, sliderSizes } from './types';
3
+ export type { SliderColor, SliderMark, SliderMarkColor, SliderMarkInput, SliderOrientation, SliderProps, SliderPresetColor, SliderSize, SliderThumbStyle, SliderTooltip, SliderTooltipMode, SliderTooltipOptions, SliderValueFormatter, } from './types';
@@ -0,0 +1,2 @@
1
+ import { i as sliderSizes, n as sliderColors, r as sliderOrientations, t as slider_default } from "../../slider.js";
2
+ export { slider_default as Slider, sliderColors, sliderOrientations, sliderSizes };
@@ -0,0 +1,35 @@
1
+ import { SliderProps } from './types';
2
+ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<SliderProps & {
4
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
5
+ }> & (typeof globalThis extends {
6
+ __VLS_PROPS_FALLBACK: infer P;
7
+ } ? P : {});
8
+ expose: (exposed: {}) => void;
9
+ attrs: any;
10
+ slots: {
11
+ default?: (props: {}) => any;
12
+ } & {
13
+ value?: (props: {
14
+ value: number;
15
+ formattedValue: string | number;
16
+ percent: number;
17
+ }) => any;
18
+ } & {
19
+ thumb?: (props: {
20
+ value: number;
21
+ formattedValue: string | number;
22
+ percent: number;
23
+ }) => any;
24
+ };
25
+ emit: (evt: "update:modelValue", value: number) => void;
26
+ }>) => import('vue').VNode & {
27
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
28
+ };
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;
31
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
32
+ [K in keyof T]: T[K];
33
+ } : {
34
+ [K in keyof T as K]: T[K];
35
+ }) & {};
@@ -0,0 +1,50 @@
1
+ import { TooltipProps } from '../tooltip/types';
2
+ export declare const sliderColors: readonly ["primary", "secondary", "success", "warning", "danger", "info", "neutral"];
3
+ export declare const sliderSizes: readonly ["xs", "sm", "md", "lg", "xl"];
4
+ export declare const sliderOrientations: readonly ["horizontal", "vertical"];
5
+ export type SliderPresetColor = (typeof sliderColors)[number];
6
+ export type SliderColor = SliderPresetColor | (string & {});
7
+ export type SliderSize = (typeof sliderSizes)[number];
8
+ export type SliderOrientation = (typeof sliderOrientations)[number];
9
+ export type SliderValueFormatter = (value: number) => string | number;
10
+ export type SliderTooltipMode = 'hover' | 'always';
11
+ export type SliderTooltipOptions = Pick<TooltipProps, 'id' | 'placement' | 'color' | 'offset' | 'openDelay' | 'arrow'> & {
12
+ mode?: SliderTooltipMode;
13
+ };
14
+ export type SliderTooltip = false | SliderTooltipMode | SliderTooltipOptions;
15
+ export type SliderMarkColor = SliderColor;
16
+ export interface SliderMark {
17
+ value: number;
18
+ label?: string | number;
19
+ color?: SliderMarkColor;
20
+ hidden?: boolean;
21
+ }
22
+ export type SliderMarkInput = number | SliderMark;
23
+ export interface SliderThumbStyle {
24
+ size?: number | string;
25
+ border?: number | string;
26
+ padding?: number | string;
27
+ }
28
+ export interface SliderProps {
29
+ id?: string;
30
+ name?: string;
31
+ modelValue: number;
32
+ min?: number;
33
+ max?: number;
34
+ step?: number | 'any';
35
+ marks?: SliderMarkInput[];
36
+ thumbStyle?: SliderThumbStyle;
37
+ tooltip?: SliderTooltip;
38
+ formatValue?: SliderValueFormatter;
39
+ color?: SliderColor;
40
+ size?: SliderSize;
41
+ orientation?: SliderOrientation;
42
+ disabled?: boolean;
43
+ required?: boolean;
44
+ invalid?: boolean;
45
+ valid?: boolean;
46
+ ariaLabel?: string;
47
+ ariaValueText?: string | SliderValueFormatter;
48
+ describedby?: string;
49
+ labelledby?: string;
50
+ }
@@ -0,0 +1,50 @@
1
+ import { CSSProperties } from 'vue';
2
+ import { SliderProps } from './types';
3
+ type SliderStateProps = Readonly<SliderProps & {
4
+ min: number;
5
+ max: number;
6
+ step: number | 'any';
7
+ tooltip: NonNullable<SliderProps['tooltip']>;
8
+ orientation: NonNullable<SliderProps['orientation']>;
9
+ }>;
10
+ export declare function normalizeSliderValue(value: number, min: number, max: number, step: number | 'any'): number;
11
+ export declare function normalizeSliderBounds(min: number, max: number): {
12
+ min: number;
13
+ max: number;
14
+ };
15
+ export declare function normalizeSliderStep(step: number | 'any'): number | "any";
16
+ export declare function getSliderValuePercent(value: number, min: number, max: number): number;
17
+ export declare function useSlider(props: SliderStateProps, emitUpdate: (value: number) => void): {
18
+ control: import('../../composables/useControlState').ControlState;
19
+ nativeMin: import('vue').ComputedRef<number>;
20
+ nativeMax: import('vue').ComputedRef<number>;
21
+ nativeStep: import('vue').ComputedRef<number | "any">;
22
+ rootClass: import('vue').ComputedRef<string[]>;
23
+ normalizedValue: import('vue').ComputedRef<number>;
24
+ valuePercent: import('vue').ComputedRef<number>;
25
+ formattedValue: import('vue').ComputedRef<string | number>;
26
+ ariaValueText: import('vue').ComputedRef<string | undefined>;
27
+ markItems: import('vue').ComputedRef<{
28
+ key: string;
29
+ value: number;
30
+ label: string | number | undefined;
31
+ hasLabel: boolean;
32
+ filled: boolean;
33
+ style: CSSProperties;
34
+ }[]>;
35
+ trackStyle: import('vue').ComputedRef<CSSProperties>;
36
+ tooltipVisible: import('vue').ComputedRef<boolean>;
37
+ tooltipOpen: import('vue').ComputedRef<boolean>;
38
+ tooltipPlacement: import('vue').ComputedRef<import('../tooltip').TooltipPlacement>;
39
+ tooltipId: import('vue').ComputedRef<string | undefined>;
40
+ tooltipColor: import('vue').ComputedRef<import('../../utils/componentColors').ComponentColorValue | undefined>;
41
+ tooltipOffset: import('vue').ComputedRef<import('../tooltip').TooltipOffset | undefined>;
42
+ tooltipOpenDelay: import('vue').ComputedRef<number>;
43
+ tooltipArrow: import('vue').ComputedRef<boolean>;
44
+ tooltipContent: import('vue').ComputedRef<string>;
45
+ onInput: (e: Event) => void;
46
+ openTooltip: () => void;
47
+ closeTooltip: () => void;
48
+ onTooltipKeydown: (event: KeyboardEvent) => void;
49
+ };
50
+ export {};
@@ -1,4 +1,5 @@
1
- export type SwitchColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
1
+ import { ComponentColorValue } from '../../utils/componentColors';
2
+ export type SwitchColor = ComponentColorValue;
2
3
  export type SwitchSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
4
  export interface SwitchProps {
4
5
  id?: string;
@@ -2,5 +2,8 @@ import { SwitchProps } from './types';
2
2
  export declare function useSwitch(props: Readonly<SwitchProps>, emitUpdate: (value: boolean) => void): {
3
3
  control: import('../../composables/useControlState').ControlState;
4
4
  rootClass: import('vue').ComputedRef<string[]>;
5
+ rootStyle: import('vue').ComputedRef<{
6
+ '--_rp-switch-custom-color': string & {};
7
+ } | undefined>;
5
8
  onChange: (e: Event) => void;
6
9
  };
@@ -1,2 +1,2 @@
1
1
  export { default as Textarea } from './textarea';
2
- export type { TextareaProps, TextareaRadius, TextareaSize } from './types';
2
+ export type { TextareaProps, TextareaRadius, TextareaResize, TextareaSize } from './types';
@@ -1,11 +1,16 @@
1
1
  export type TextareaRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2
2
  export type TextareaSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
+ export type TextareaResize = 'none' | 'vertical' | 'both';
3
4
  export interface TextareaProps {
4
5
  id?: string;
5
6
  name?: string;
6
7
  modelValue: string;
7
8
  size?: TextareaSize;
8
9
  radius?: TextareaRadius;
10
+ resize?: TextareaResize;
11
+ autosize?: boolean;
12
+ minRows?: number;
13
+ maxRows?: number;
9
14
  placeholder?: string;
10
15
  rows?: number;
11
16
  disabled?: boolean;
@@ -1,7 +1,9 @@
1
1
  import { TextareaProps } from './types';
2
2
  export declare function useTextarea(props: Readonly<TextareaProps>, emitUpdate: (value: string) => void): {
3
+ textareaRef: import('vue').Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
3
4
  control: import('../../composables/useControlState').ControlState;
4
5
  rootClass: import('vue').ComputedRef<string[]>;
6
+ nativeRows: import('vue').ComputedRef<number | undefined>;
5
7
  onInput: (e: Event) => void;
6
8
  focusTextarea: (e: MouseEvent) => void;
7
9
  };
@@ -0,0 +1,2 @@
1
+ export { default as Tooltip } from './tooltip';
2
+ export type { TooltipColor, TooltipOffset, TooltipOffsetOptions, TooltipPlacement, TooltipProps, TooltipSlotProps, TooltipTarget, TooltipTriggerProps, } from './types';
@@ -0,0 +1,2 @@
1
+ import { t as tooltip_default } from "../../tooltip.js";
2
+ export { tooltip_default as Tooltip };
@@ -0,0 +1,27 @@
1
+ import { TooltipProps } from './types';
2
+ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<TooltipProps & {
4
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
5
+ }> & (typeof globalThis extends {
6
+ __VLS_PROPS_FALLBACK: infer P;
7
+ } ? P : {});
8
+ expose: (exposed: {}) => void;
9
+ attrs: any;
10
+ slots: {
11
+ default?: (props: {
12
+ triggerProps: import('./types').TooltipTriggerProps;
13
+ }) => any;
14
+ } & {
15
+ content?: (props: {}) => any;
16
+ };
17
+ emit: (evt: "update:open", value: boolean) => void;
18
+ }>) => import('vue').VNode & {
19
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
20
+ };
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
24
+ [K in keyof T]: T[K];
25
+ } : {
26
+ [K in keyof T as K]: T[K];
27
+ }) & {};
@@ -0,0 +1,29 @@
1
+ import { Ref } from 'vue';
2
+ import { ComponentColorValue } from '../../utils/componentColors';
3
+ export type TooltipPlacement = 'top' | 'right' | 'bottom' | 'left';
4
+ export type TooltipColor = ComponentColorValue;
5
+ export type TooltipTarget = string | HTMLElement | Ref<HTMLElement | null | undefined>;
6
+ export interface TooltipOffsetOptions {
7
+ mainAxis?: number;
8
+ crossAxis?: number;
9
+ }
10
+ export type TooltipOffset = number | TooltipOffsetOptions;
11
+ export interface TooltipTriggerProps {
12
+ 'aria-describedby'?: string;
13
+ }
14
+ export interface TooltipSlotProps {
15
+ triggerProps: TooltipTriggerProps;
16
+ }
17
+ export interface TooltipProps {
18
+ id?: string;
19
+ content?: string;
20
+ target?: TooltipTarget | null;
21
+ placement?: TooltipPlacement;
22
+ color?: TooltipColor;
23
+ offset?: TooltipOffset;
24
+ open?: boolean;
25
+ openDelay?: number;
26
+ arrow?: boolean;
27
+ disabled?: boolean;
28
+ decorative?: boolean;
29
+ }
@@ -0,0 +1,17 @@
1
+ import { CSSProperties } from 'vue';
2
+ import { TooltipProps, TooltipTriggerProps } from './types';
3
+ export declare function useTooltip(props: Readonly<TooltipProps>, emitOpenChange?: (open: boolean) => void): {
4
+ tooltipId: import('vue').ComputedRef<string>;
5
+ isOpen: import('vue').ComputedRef<boolean>;
6
+ isVisible: import('vue').ComputedRef<boolean>;
7
+ isTargetMode: import('vue').ComputedRef<boolean>;
8
+ shouldRenderContent: import('vue').ComputedRef<boolean>;
9
+ rootClass: import('vue').ComputedRef<string[]>;
10
+ triggerProps: import('vue').ComputedRef<TooltipTriggerProps>;
11
+ contentRole: import('vue').ComputedRef<"tooltip" | undefined>;
12
+ contentAriaHidden: import('vue').ComputedRef<"true" | undefined>;
13
+ contentStyle: import('vue').ComputedRef<CSSProperties | undefined>;
14
+ openTooltip: () => void;
15
+ closeTooltip: () => void;
16
+ onKeydown: (event: KeyboardEvent) => void;
17
+ };
@@ -1,14 +1,26 @@
1
- .rp-button[data-v-4a239144] {
2
- --_rp-button-accent: var(--rp-color-primary);
3
- --_rp-button-accent-hover: var(--rp-color-primary-hover);
4
- --_rp-button-accent-active: var(--rp-color-primary-active);
5
- --_rp-button-accent-on: var(--rp-color-on-primary);
6
- --_rp-button-accent-subtle-bg: var(--rp-color-primary-subtle-bg);
7
- --_rp-button-accent-subtle-bg-hover: var(--rp-color-primary-subtle-bg-hover);
8
- --_rp-button-accent-subtle-bg-active: var(--rp-color-primary-subtle-bg-active);
9
- --_rp-button-accent-border: var(--rp-color-primary-border);
10
- --_rp-button-accent-border-hover: var(--rp-color-primary-border-hover);
11
- --_rp-button-accent-fg: var(--rp-color-primary-fg);
1
+ .rp-button[data-v-7005752e] {
2
+ --_rp-button-accent: var(--_rp-button-custom-color, var(--rp-color-primary));
3
+ --_rp-button-accent-hover: var(--_rp-button-custom-hover, var(--rp-color-primary-hover));
4
+ --_rp-button-accent-active: var(--_rp-button-custom-active, var(--rp-color-primary-active));
5
+ --_rp-button-accent-on: var(--_rp-button-custom-on, var(--rp-color-on-primary));
6
+ --_rp-button-accent-subtle-bg: var(
7
+ --_rp-button-custom-subtle-bg,
8
+ var(--rp-color-primary-subtle-bg)
9
+ );
10
+ --_rp-button-accent-subtle-bg-hover: var(
11
+ --_rp-button-custom-subtle-bg-hover,
12
+ var(--rp-color-primary-subtle-bg-hover)
13
+ );
14
+ --_rp-button-accent-subtle-bg-active: var(
15
+ --_rp-button-custom-subtle-bg-active,
16
+ var(--rp-color-primary-subtle-bg-active)
17
+ );
18
+ --_rp-button-accent-border: var(--_rp-button-custom-border, var(--rp-color-primary-border));
19
+ --_rp-button-accent-border-hover: var(
20
+ --_rp-button-custom-border-hover,
21
+ var(--rp-color-primary-border-hover)
22
+ );
23
+ --_rp-button-accent-fg: var(--_rp-button-custom-fg, var(--rp-color-primary-fg));
12
24
  --_rp-button-bg: var(--rp-color-button-default-bg);
13
25
  --_rp-button-bg-hover: var(--rp-color-button-default-bg-hover);
14
26
  --_rp-button-bg-active: var(--rp-color-button-default-bg-active);
@@ -26,8 +38,8 @@
26
38
  display: inline-flex;
27
39
  align-items: center;
28
40
  justify-content: center;
41
+ position: relative;
29
42
  box-sizing: border-box;
30
- gap: var(--rp-spacing-2);
31
43
  font-family: var(--rp-font-family);
32
44
  font-weight: var(--rp-font-weight-medium);
33
45
  line-height: var(--rp-line-height-none);
@@ -45,18 +57,18 @@
45
57
  font-size: var(--_rp-button-font-size);
46
58
  border-radius: var(--_rp-button-radius);
47
59
  }
48
- .rp-button[data-v-4a239144]:hover:not(:disabled) {
60
+ .rp-button[data-v-7005752e]:hover:not(:disabled) {
49
61
  background-color: var(--_rp-button-bg-hover);
50
62
  border-color: var(--_rp-button-border-hover);
51
63
  box-shadow: var(--_rp-button-shadow-hover);
52
64
  }
53
- .rp-button[data-v-4a239144]:active:not(:disabled) {
65
+ .rp-button[data-v-7005752e]:active:not(:disabled) {
54
66
  background-color: var(--_rp-button-bg-active);
55
67
  border-color: var(--_rp-button-border-active);
56
68
  box-shadow: var(--_rp-button-shadow-active);
57
69
  transform: translateY(1px);
58
70
  }
59
- .rp-button--color-primary[data-v-4a239144] {
71
+ .rp-button--color-primary[data-v-7005752e] {
60
72
  --_rp-button-accent: var(--rp-color-primary);
61
73
  --_rp-button-accent-hover: var(--rp-color-primary-hover);
62
74
  --_rp-button-accent-active: var(--rp-color-primary-active);
@@ -73,7 +85,7 @@
73
85
  --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
74
86
  --_rp-button-fg: var(--_rp-button-accent-fg);
75
87
  }
76
- .rp-button--color-secondary[data-v-4a239144] {
88
+ .rp-button--color-secondary[data-v-7005752e] {
77
89
  --_rp-button-accent: var(--rp-color-secondary);
78
90
  --_rp-button-accent-hover: var(--rp-color-secondary-hover);
79
91
  --_rp-button-accent-active: var(--rp-color-secondary-active);
@@ -90,7 +102,7 @@
90
102
  --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
91
103
  --_rp-button-fg: var(--_rp-button-accent-fg);
92
104
  }
93
- .rp-button--color-success[data-v-4a239144] {
105
+ .rp-button--color-success[data-v-7005752e] {
94
106
  --_rp-button-accent: var(--rp-color-success);
95
107
  --_rp-button-accent-hover: var(--rp-color-success-hover);
96
108
  --_rp-button-accent-active: var(--rp-color-success-active);
@@ -107,7 +119,7 @@
107
119
  --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
108
120
  --_rp-button-fg: var(--_rp-button-accent-fg);
109
121
  }
110
- .rp-button--color-warning[data-v-4a239144] {
122
+ .rp-button--color-warning[data-v-7005752e] {
111
123
  --_rp-button-accent: var(--rp-color-warning);
112
124
  --_rp-button-accent-hover: var(--rp-color-warning-hover);
113
125
  --_rp-button-accent-active: var(--rp-color-warning-active);
@@ -124,7 +136,7 @@
124
136
  --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
125
137
  --_rp-button-fg: var(--_rp-button-accent-fg);
126
138
  }
127
- .rp-button--color-danger[data-v-4a239144] {
139
+ .rp-button--color-danger[data-v-7005752e] {
128
140
  --_rp-button-accent: var(--rp-color-danger);
129
141
  --_rp-button-accent-hover: var(--rp-color-danger-hover);
130
142
  --_rp-button-accent-active: var(--rp-color-danger-active);
@@ -141,7 +153,7 @@
141
153
  --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
142
154
  --_rp-button-fg: var(--_rp-button-accent-fg);
143
155
  }
144
- .rp-button--color-info[data-v-4a239144] {
156
+ .rp-button--color-info[data-v-7005752e] {
145
157
  --_rp-button-accent: var(--rp-color-info);
146
158
  --_rp-button-accent-hover: var(--rp-color-info-hover);
147
159
  --_rp-button-accent-active: var(--rp-color-info-active);
@@ -158,7 +170,7 @@
158
170
  --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
159
171
  --_rp-button-fg: var(--_rp-button-accent-fg);
160
172
  }
161
- .rp-button--color-neutral[data-v-4a239144] {
173
+ .rp-button--color-neutral[data-v-7005752e] {
162
174
  --_rp-button-accent: var(--rp-color-neutral);
163
175
  --_rp-button-accent-hover: var(--rp-color-neutral-hover);
164
176
  --_rp-button-accent-active: var(--rp-color-neutral-active);
@@ -175,42 +187,42 @@
175
187
  --_rp-button-border-hover: var(--_rp-button-accent-border-hover);
176
188
  --_rp-button-fg: var(--_rp-button-accent-fg);
177
189
  }
178
- .rp-button--size-xs[data-v-4a239144] {
190
+ .rp-button--size-xs[data-v-7005752e] {
179
191
  --_rp-button-height: calc(var(--rp-size-control-sm) - var(--rp-spacing-1));
180
192
  --_rp-button-padding-x: var(--rp-spacing-2);
181
193
  --_rp-button-font-size: var(--rp-font-size-xs);
182
194
  }
183
- .rp-button--size-sm[data-v-4a239144] {
195
+ .rp-button--size-sm[data-v-7005752e] {
184
196
  --_rp-button-height: var(--rp-size-control-sm);
185
197
  --_rp-button-padding-x: var(--rp-spacing-3);
186
198
  --_rp-button-font-size: var(--rp-font-size-sm);
187
199
  }
188
- .rp-button--size-lg[data-v-4a239144] {
200
+ .rp-button--size-lg[data-v-7005752e] {
189
201
  --_rp-button-height: var(--rp-size-control-lg);
190
202
  --_rp-button-padding-x: var(--rp-spacing-5);
191
203
  --_rp-button-font-size: var(--rp-font-size-lg);
192
204
  }
193
- .rp-button--size-xl[data-v-4a239144] {
205
+ .rp-button--size-xl[data-v-7005752e] {
194
206
  --_rp-button-height: calc(var(--rp-size-control-lg) + var(--rp-spacing-2));
195
207
  --_rp-button-padding-x: var(--rp-spacing-6);
196
208
  --_rp-button-font-size: var(--rp-font-size-lg);
197
209
  }
198
- .rp-button--radius-xs[data-v-4a239144] {
210
+ .rp-button--radius-xs[data-v-7005752e] {
199
211
  --_rp-button-radius: var(--rp-radius-xs);
200
212
  }
201
- .rp-button--radius-sm[data-v-4a239144] {
213
+ .rp-button--radius-sm[data-v-7005752e] {
202
214
  --_rp-button-radius: var(--rp-radius-sm);
203
215
  }
204
- .rp-button--radius-md[data-v-4a239144] {
216
+ .rp-button--radius-md[data-v-7005752e] {
205
217
  --_rp-button-radius: var(--rp-radius-md);
206
218
  }
207
- .rp-button--radius-lg[data-v-4a239144] {
219
+ .rp-button--radius-lg[data-v-7005752e] {
208
220
  --_rp-button-radius: var(--rp-radius-lg);
209
221
  }
210
- .rp-button--radius-xl[data-v-4a239144] {
222
+ .rp-button--radius-xl[data-v-7005752e] {
211
223
  --_rp-button-radius: var(--rp-radius-xl);
212
224
  }
213
- .rp-button--solid[data-v-4a239144] {
225
+ .rp-button--solid[data-v-7005752e] {
214
226
  --_rp-button-bg: var(--_rp-button-accent);
215
227
  --_rp-button-bg-hover: var(--_rp-button-accent-hover);
216
228
  --_rp-button-bg-active: var(--_rp-button-accent-active);
@@ -219,7 +231,7 @@
219
231
  --_rp-button-border-active: var(--_rp-button-accent-active);
220
232
  --_rp-button-fg: var(--_rp-button-accent-on);
221
233
  }
222
- .rp-button--subtle[data-v-4a239144] {
234
+ .rp-button--subtle[data-v-7005752e] {
223
235
  --_rp-button-bg: var(--_rp-button-accent-subtle-bg);
224
236
  --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
225
237
  --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
@@ -231,7 +243,7 @@
231
243
  --_rp-button-shadow-hover: none;
232
244
  --_rp-button-shadow-active: none;
233
245
  }
234
- .rp-button--surface[data-v-4a239144] {
246
+ .rp-button--surface[data-v-7005752e] {
235
247
  --_rp-button-bg: var(--_rp-button-accent-subtle-bg);
236
248
  --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
237
249
  --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
@@ -243,7 +255,7 @@
243
255
  --_rp-button-shadow-hover: none;
244
256
  --_rp-button-shadow-active: none;
245
257
  }
246
- .rp-button--outline[data-v-4a239144] {
258
+ .rp-button--outline[data-v-7005752e] {
247
259
  --_rp-button-bg: transparent;
248
260
  --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
249
261
  --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
@@ -255,7 +267,7 @@
255
267
  --_rp-button-shadow-hover: none;
256
268
  --_rp-button-shadow-active: none;
257
269
  }
258
- .rp-button--ghost[data-v-4a239144] {
270
+ .rp-button--ghost[data-v-7005752e] {
259
271
  --_rp-button-bg: transparent;
260
272
  --_rp-button-bg-hover: var(--_rp-button-accent-subtle-bg-hover);
261
273
  --_rp-button-bg-active: var(--_rp-button-accent-subtle-bg-active);
@@ -267,7 +279,7 @@
267
279
  --_rp-button-shadow-hover: none;
268
280
  --_rp-button-shadow-active: none;
269
281
  }
270
- .rp-button--plain[data-v-4a239144] {
282
+ .rp-button--plain[data-v-7005752e] {
271
283
  --_rp-button-bg: transparent;
272
284
  --_rp-button-bg-hover: transparent;
273
285
  --_rp-button-bg-active: transparent;
@@ -279,60 +291,81 @@
279
291
  --_rp-button-shadow-hover: none;
280
292
  --_rp-button-shadow-active: none;
281
293
  }
282
- .rp-button[data-v-4a239144]:disabled {
294
+ .rp-button[data-v-7005752e]:disabled {
283
295
  opacity: var(--rp-opacity-disabled);
284
296
  cursor: not-allowed;
285
297
  box-shadow: none;
286
298
  transform: none;
287
299
  }
288
- .rp-button[data-v-4a239144]:focus-visible {
300
+ .rp-button[data-v-7005752e]:focus-visible {
289
301
  outline: none;
290
302
  border-color: var(--rp-color-primary);
291
303
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
292
304
  }
293
- .rp-button__left[data-v-4a239144], .rp-button__right[data-v-4a239144] {
305
+ .rp-button--loading .rp-button__content[data-v-7005752e] {
306
+ visibility: hidden;
307
+ }
308
+ .rp-button__content[data-v-7005752e] {
309
+ display: inline-flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ gap: var(--rp-spacing-2);
313
+ }
314
+ .rp-button__left[data-v-7005752e], .rp-button__right[data-v-7005752e] {
294
315
  display: inline-flex;
295
316
  align-items: center;
296
317
  flex-shrink: 0;
297
318
  }
298
- .rp-button__spinner[data-v-4a239144] {
319
+ .rp-button__loading[data-v-7005752e] {
320
+ display: inline-flex;
321
+ align-items: center;
322
+ justify-content: center;
323
+ position: absolute;
324
+ top: 50%;
325
+ left: 50%;
326
+ translate: -50% -50%;
327
+ }
328
+ .rp-button__spinner[data-v-7005752e] {
299
329
  display: block;
300
330
  width: 1em;
301
331
  height: 1em;
302
332
  flex-shrink: 0;
303
333
  transform-origin: center;
304
- animation: rp-button-spin-4a239144 700ms linear infinite;
334
+ animation: rp-spinner-spin-7005752e 700ms linear infinite;
305
335
  }
306
- @keyframes rp-button-spin-4a239144 {
336
+ @keyframes rp-spinner-spin-7005752e {
307
337
  to {
308
338
  transform: rotate(360deg);
309
339
  }
310
- }.rp-icon-button[data-v-4a239144] {
340
+ }.rp-icon-button[data-v-7005752e] {
311
341
  width: var(--_rp-button-height);
312
342
  padding: 0;
313
343
  }
314
- .rp-icon-button__icon[data-v-4a239144], .rp-icon-button__spinner[data-v-4a239144] {
344
+ .rp-icon-button__icon[data-v-7005752e] {
315
345
  width: 1em;
316
346
  height: 1em;
317
347
  flex-shrink: 0;
318
348
  }
319
- .rp-icon-button__icon[data-v-4a239144] {
349
+ .rp-icon-button__icon[data-v-7005752e] {
320
350
  display: inline-flex;
321
351
  align-items: center;
322
352
  justify-content: center;
323
353
  line-height: 0;
324
354
  }
325
- .rp-icon-button__icon svg[data-v-4a239144-s] {
355
+ .rp-icon-button__icon svg[data-v-7005752e-s] {
326
356
  display: block;
327
357
  width: 1em;
328
358
  height: 1em;
329
359
  }
330
- .rp-icon-button__spinner[data-v-4a239144] {
360
+ .rp-icon-button__spinner[data-v-7005752e] {
331
361
  display: block;
362
+ width: 1em;
363
+ height: 1em;
364
+ flex-shrink: 0;
332
365
  transform-origin: center;
333
- animation: rp-icon-button-spin-4a239144 700ms linear infinite;
366
+ animation: rp-spinner-spin-7005752e 700ms linear infinite;
334
367
  }
335
- @keyframes rp-icon-button-spin-4a239144 {
368
+ @keyframes rp-spinner-spin-7005752e {
336
369
  to {
337
370
  transform: rotate(360deg);
338
371
  }
@@ -1,10 +1,11 @@
1
1
  import './icon-button.css';
2
- import { t as loader_circle_default } from "./loader-circle.js";
2
+ import { n as loader_circle_default, t as getButtonColorStyle } from "./useButtonColor.js";
3
+ import { r as isComponentPresetColor } from "./componentColors.js";
3
4
  import { n as bem, t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
- import { computed, createComponent, createIf, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, setProp, template, unref } from "vue";
5
+ import { computed, createComponent, createIf, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, setProp, setStyle, template, unref } from "vue";
5
6
  //#region src/components/icon-button/icon-button.vue?vue&type=script&setup=true&vapor=true&lang.ts
6
- var t0 = template("<span data-v-4a239144 class=rp-icon-button__icon aria-hidden=true>");
7
- var t1 = template("<button data-v-4a239144>", 1);
7
+ var t0 = template("<span data-v-7005752e class=rp-icon-button__icon aria-hidden=true>");
8
+ var t1 = template("<button data-v-7005752e>", 1);
8
9
  //#endregion
9
10
  //#region src/components/icon-button/icon-button.vue
10
11
  var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -28,22 +29,25 @@ var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
28
29
  },
29
30
  setup(__props) {
30
31
  const props = __props;
31
- const isLoading = computed(() => props.loading && !props.disabled);
32
32
  const rootClass = computed(() => [...bem("rp-button", {
33
33
  [props.variant ?? ""]: Boolean(props.variant),
34
- [`color-${props.color}`]: Boolean(props.color),
34
+ [`color-${props.color}`]: isComponentPresetColor(props.color),
35
35
  [`size-${props.size}`]: Boolean(props.size),
36
36
  [`radius-${props.radius}`]: Boolean(props.radius)
37
37
  }), "rp-icon-button"]);
38
+ const rootStyle = computed(() => getButtonColorStyle(props.color));
38
39
  const n6 = t1();
39
40
  renderEffect(() => {
41
+ const _loading = __props.loading;
40
42
  setClass(n6, rootClass.value);
41
- setProp(n6, "disabled", __props.disabled || isLoading.value || void 0);
43
+ setStyle(n6, rootStyle.value);
44
+ setProp(n6, "disabled", __props.disabled || _loading || void 0);
42
45
  setProp(n6, "type", __props.type);
43
46
  setAttr(n6, "aria-label", __props.ariaLabel || void 0);
47
+ setAttr(n6, "aria-busy", _loading || void 0);
44
48
  });
45
49
  setInsertionState(n6, null, 0);
46
- createIf(() => isLoading.value, () => {
50
+ createIf(() => __props.loading, () => {
47
51
  return createComponent(unref(loader_circle_default), {
48
52
  class: "rp-icon-button__spinner",
49
53
  "aria-hidden": "true"
@@ -56,7 +60,7 @@ var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
56
60
  }, 261);
57
61
  return n6;
58
62
  }
59
- }), [["__scopeId", "data-v-4a239144"]]);
63
+ }), [["__scopeId", "data-v-7005752e"]]);
60
64
  //#endregion
61
65
  export { icon_button_default as t };
62
66