ropav 0.0.2

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 (94) hide show
  1. package/README.md +31 -0
  2. package/dist/_plugin-vue_export-helper.js +18 -0
  3. package/dist/_plugin-vue_export-helper.js.map +1 -0
  4. package/dist/base.css +147 -0
  5. package/dist/button.css +66 -0
  6. package/dist/button.js +62 -0
  7. package/dist/button.js.map +1 -0
  8. package/dist/checkbox.css +60 -0
  9. package/dist/checkbox.js +132 -0
  10. package/dist/checkbox.js.map +1 -0
  11. package/dist/components/_internal/icons/CheckIcon.d.ts +18 -0
  12. package/dist/components/_internal/icons/ChevronDownIcon.d.ts +18 -0
  13. package/dist/components/_internal/icons/MinusIcon.d.ts +18 -0
  14. package/dist/components/_internal/icons/index.d.ts +3 -0
  15. package/dist/components/_internal/optionList.d.ts +9 -0
  16. package/dist/components/button/button.d.ts +25 -0
  17. package/dist/components/button/index.d.ts +2 -0
  18. package/dist/components/button/index.js +2 -0
  19. package/dist/components/button/types.d.ts +6 -0
  20. package/dist/components/checkbox/checkbox.d.ts +23 -0
  21. package/dist/components/checkbox/index.d.ts +2 -0
  22. package/dist/components/checkbox/index.js +2 -0
  23. package/dist/components/checkbox/types.d.ts +12 -0
  24. package/dist/components/checkbox/useCheckbox.d.ts +6 -0
  25. package/dist/components/input/index.d.ts +2 -0
  26. package/dist/components/input/index.js +2 -0
  27. package/dist/components/input/input.d.ts +21 -0
  28. package/dist/components/input/types.d.ts +14 -0
  29. package/dist/components/radio/index.d.ts +3 -0
  30. package/dist/components/radio/index.js +2 -0
  31. package/dist/components/radio/radio-group.d.ts +23 -0
  32. package/dist/components/radio/radio.d.ts +21 -0
  33. package/dist/components/radio/types.d.ts +24 -0
  34. package/dist/components/radio/useRadio.d.ts +12 -0
  35. package/dist/components/select/index.d.ts +2 -0
  36. package/dist/components/select/index.js +2 -0
  37. package/dist/components/select/select.d.ts +23 -0
  38. package/dist/components/select/types.d.ts +18 -0
  39. package/dist/components/select/useSelect.d.ts +21 -0
  40. package/dist/components/switch/index.d.ts +2 -0
  41. package/dist/components/switch/index.js +2 -0
  42. package/dist/components/switch/switch.d.ts +23 -0
  43. package/dist/components/switch/types.d.ts +11 -0
  44. package/dist/components/switch/useSwitch.d.ts +6 -0
  45. package/dist/components/tabs/index.d.ts +5 -0
  46. package/dist/components/tabs/index.js +2 -0
  47. package/dist/components/tabs/tab-panel.d.ts +21 -0
  48. package/dist/components/tabs/tabs-list.d.ts +20 -0
  49. package/dist/components/tabs/tabs-trigger.d.ts +21 -0
  50. package/dist/components/tabs/tabs.d.ts +23 -0
  51. package/dist/components/tabs/types.d.ts +18 -0
  52. package/dist/components/tabs/useTabs.d.ts +19 -0
  53. package/dist/components/textarea/index.d.ts +2 -0
  54. package/dist/components/textarea/index.js +2 -0
  55. package/dist/components/textarea/textarea.d.ts +21 -0
  56. package/dist/components/textarea/types.d.ts +14 -0
  57. package/dist/components/textarea/useTextarea.d.ts +6 -0
  58. package/dist/components/tooltip/index.d.ts +2 -0
  59. package/dist/components/tooltip/index.js +2 -0
  60. package/dist/components/tooltip/tooltip.d.ts +23 -0
  61. package/dist/components/tooltip/types.d.ts +5 -0
  62. package/dist/components/tooltip/useTooltip.d.ts +8 -0
  63. package/dist/index.d.ts +9 -0
  64. package/dist/index.js +10 -0
  65. package/dist/input.css +51 -0
  66. package/dist/input.js +79 -0
  67. package/dist/input.js.map +1 -0
  68. package/dist/radio.css +66 -0
  69. package/dist/radio.js +160 -0
  70. package/dist/radio.js.map +1 -0
  71. package/dist/select.css +122 -0
  72. package/dist/select.js +362 -0
  73. package/dist/select.js.map +1 -0
  74. package/dist/switch.css +70 -0
  75. package/dist/switch.js +94 -0
  76. package/dist/switch.js.map +1 -0
  77. package/dist/tabs.css +45 -0
  78. package/dist/tabs.js +205 -0
  79. package/dist/tabs.js.map +1 -0
  80. package/dist/textarea.css +46 -0
  81. package/dist/textarea.js +91 -0
  82. package/dist/textarea.js.map +1 -0
  83. package/dist/tooltip.css +78 -0
  84. package/dist/tooltip.js +112 -0
  85. package/dist/tooltip.js.map +1 -0
  86. package/dist/useControlState.js +38 -0
  87. package/dist/useControlState.js.map +1 -0
  88. package/dist/useRequiredInject.js +11 -0
  89. package/dist/useRequiredInject.js.map +1 -0
  90. package/package.json +110 -0
  91. package/src/styles/_mixins.scss +128 -0
  92. package/src/styles/_tokens.scss +184 -0
  93. package/src/styles/_variables.scss +112 -0
  94. package/src/styles/base.scss +1 -0
package/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Ropav
2
+
3
+ Experimental UI component library for Vue Vapor.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pnpm add ropav vue
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```ts
14
+ import 'ropav/base.css'
15
+ import { Button, Input } from 'ropav'
16
+ ```
17
+
18
+ Deep imports are available for individual components:
19
+
20
+ ```ts
21
+ import { Button } from 'ropav/button'
22
+ ```
23
+
24
+ ## Development
25
+
26
+ ```bash
27
+ pnpm install
28
+ pnpm dev
29
+ pnpm test
30
+ pnpm build
31
+ ```
@@ -0,0 +1,18 @@
1
+ //#region src/utils/bem.ts
2
+ function bem(block, ...modifiers) {
3
+ const classes = [block];
4
+ for (const mod of modifiers) if (typeof mod === "string") classes.push(`${block}--${mod}`);
5
+ else for (const [key, val] of Object.entries(mod)) if (val) classes.push(`${block}--${key}`);
6
+ return classes;
7
+ }
8
+ //#endregion
9
+ //#region \0plugin-vue:export-helper
10
+ var _plugin_vue_export_helper_default = (sfc, props) => {
11
+ const target = sfc.__vccOpts || sfc;
12
+ for (const [key, val] of props) target[key] = val;
13
+ return target;
14
+ };
15
+ //#endregion
16
+ export { bem as n, _plugin_vue_export_helper_default as t };
17
+
18
+ //# sourceMappingURL=_plugin-vue_export-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_plugin-vue_export-helper.js","names":[],"sources":["../src/utils/bem.ts"],"sourcesContent":["type BemModifier = string | Record<string, boolean | undefined>;\n\nexport function bem(block: string, ...modifiers: BemModifier[]): string[] {\n const classes = [block];\n for (const mod of modifiers) {\n if (typeof mod === 'string') {\n classes.push(`${block}--${mod}`);\n } else {\n for (const [key, val] of Object.entries(mod)) {\n if (val) classes.push(`${block}--${key}`);\n }\n }\n }\n return classes;\n}\n"],"mappings":";AAEA,SAAgB,IAAI,OAAe,GAAG,WAAoC;CACtE,MAAM,UAAU,CAAC,KAAK;CACtB,KAAK,MAAM,OAAO,WACd,IAAI,OAAO,QAAQ,UACf,QAAQ,KAAK,GAAG,MAAM,IAAI,KAAK;MAE/B,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,GAAG,GACvC,IAAI,KAAK,QAAQ,KAAK,GAAG,MAAM,IAAI,KAAK;CAIpD,OAAO;AACX"}
package/dist/base.css ADDED
@@ -0,0 +1,147 @@
1
+ :root {
2
+ --rp-font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;
3
+ --rp-color-primary: #2563eb;
4
+ --rp-color-secondary: #4f46e5;
5
+ --rp-color-success: #15803d;
6
+ --rp-color-warning: #b45309;
7
+ --rp-color-danger: #dc2626;
8
+ --rp-color-info: #0e7490;
9
+ --rp-color-white: #ffffff;
10
+ --rp-color-black: #09090b;
11
+ --rp-color-gray-50: #fafafa;
12
+ --rp-color-gray-100: #f4f4f5;
13
+ --rp-color-gray-200: #e4e4e7;
14
+ --rp-color-gray-300: #d4d4d8;
15
+ --rp-color-gray-400: #a1a1aa;
16
+ --rp-color-gray-500: #71717a;
17
+ --rp-color-gray-600: #52525b;
18
+ --rp-color-gray-700: #3f3f46;
19
+ --rp-color-gray-800: #27272a;
20
+ --rp-color-gray-900: #18181b;
21
+ --rp-color-text: #18181b;
22
+ --rp-color-text-secondary: #52525b;
23
+ --rp-color-text-disabled: #71717a;
24
+ --rp-color-text-inverted: var(--rp-color-white);
25
+ --rp-color-background: #ffffff;
26
+ --rp-color-surface: var(--rp-color-white);
27
+ --rp-color-surface-raised: var(--rp-color-white);
28
+ --rp-color-surface-muted: var(--rp-color-gray-50);
29
+ --rp-color-surface-hover: var(--rp-color-gray-100);
30
+ --rp-color-surface-inverted: var(--rp-color-gray-900);
31
+ --rp-color-overlay: rgba(3, 7, 18, 0.55);
32
+ --rp-color-border: #e4e4e7;
33
+ --rp-color-border-hover: #a1a1aa;
34
+ --rp-color-focus-ring: color-mix(in srgb, var(--rp-color-primary) 32%, transparent);
35
+ --rp-color-control-bg: var(--rp-color-surface);
36
+ --rp-color-control-readonly-bg: var(--rp-color-surface-muted);
37
+ --rp-color-control-fg: var(--rp-color-text);
38
+ --rp-color-control-placeholder: var(--rp-color-text-secondary);
39
+ --rp-color-control-icon: var(--rp-color-text-secondary);
40
+ --rp-color-control-border: var(--rp-color-border);
41
+ --rp-color-control-border-hover: var(--rp-color-border-hover);
42
+ --rp-color-control-border-focus: var(--rp-color-primary);
43
+ --rp-color-control-track-bg: var(--rp-color-gray-300);
44
+ --rp-color-control-thumb-bg: var(--rp-color-white);
45
+ --rp-color-control-selected-bg: var(--rp-color-primary);
46
+ --rp-color-control-selected-fg: var(--rp-color-on-primary);
47
+ --rp-color-on-primary: #ffffff;
48
+ --rp-color-on-secondary: #ffffff;
49
+ --rp-color-on-success: #ffffff;
50
+ --rp-color-on-warning: #ffffff;
51
+ --rp-color-on-danger: #ffffff;
52
+ --rp-color-on-info: #ffffff;
53
+ --rp-color-primary-fg: var(--rp-color-primary);
54
+ --rp-color-secondary-fg: var(--rp-color-secondary);
55
+ --rp-color-success-fg: var(--rp-color-success);
56
+ --rp-color-warning-fg: var(--rp-color-warning);
57
+ --rp-color-danger-fg: var(--rp-color-danger);
58
+ --rp-color-info-fg: var(--rp-color-info);
59
+ --rp-font-size-xs: 0.75rem;
60
+ --rp-font-size-sm: 0.875rem;
61
+ --rp-font-size-base: 1rem;
62
+ --rp-font-size-lg: 1.125rem;
63
+ --rp-font-size-xl: 1.25rem;
64
+ --rp-font-size-2xl: 1.5rem;
65
+ --rp-font-size-3xl: 1.875rem;
66
+ --rp-font-weight-normal: 400;
67
+ --rp-font-weight-medium: 500;
68
+ --rp-font-weight-semibold: 600;
69
+ --rp-font-weight-bold: 700;
70
+ --rp-line-height-none: 1;
71
+ --rp-line-height-tight: 1.25;
72
+ --rp-line-height-normal: 1.4;
73
+ --rp-line-height-relaxed: 1.5;
74
+ --rp-line-height-loose: 1.6;
75
+ --rp-spacing-0: 0;
76
+ --rp-spacing-1: 0.25rem;
77
+ --rp-spacing-2: 0.5rem;
78
+ --rp-spacing-3: 0.75rem;
79
+ --rp-spacing-4: 1rem;
80
+ --rp-spacing-5: 1.25rem;
81
+ --rp-spacing-6: 1.5rem;
82
+ --rp-spacing-8: 2rem;
83
+ --rp-spacing-10: 2.5rem;
84
+ --rp-spacing-12: 3rem;
85
+ --rp-radius-none: 0;
86
+ --rp-radius-sm: 0.125rem;
87
+ --rp-radius-base: 0.25rem;
88
+ --rp-radius-md: 0.375rem;
89
+ --rp-radius-lg: 0.5rem;
90
+ --rp-radius-xl: 0.75rem;
91
+ --rp-radius-2xl: 1rem;
92
+ --rp-radius-full: 9999px;
93
+ --rp-border-width-thin: 1px;
94
+ --rp-border-width-medium: 2px;
95
+ --rp-size-control-sm: 32px;
96
+ --rp-size-control-md: 40px;
97
+ --rp-size-control-lg: 48px;
98
+ --rp-component-menu-min-width: 180px;
99
+ --rp-component-menu-max-height: 240px;
100
+ --rp-z-index-dropdown: 100;
101
+ --rp-z-index-tooltip: 1000;
102
+ --rp-opacity-disabled: 0.5;
103
+ --rp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
104
+ --rp-shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
105
+ --rp-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
106
+ --rp-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
107
+ --rp-transition-fast: 150ms ease;
108
+ --rp-transition-base: 200ms ease;
109
+ --rp-transition-slow: 300ms ease;
110
+ }
111
+
112
+ html.dark {
113
+ --rp-color-text: var(--rp-color-gray-50);
114
+ --rp-color-text-secondary: var(--rp-color-gray-400);
115
+ --rp-color-text-disabled: var(--rp-color-gray-600);
116
+ --rp-color-text-inverted: var(--rp-color-gray-900);
117
+ --rp-color-background: var(--rp-color-gray-900);
118
+ --rp-color-surface: var(--rp-color-gray-900);
119
+ --rp-color-surface-raised: var(--rp-color-gray-800);
120
+ --rp-color-surface-muted: var(--rp-color-gray-800);
121
+ --rp-color-surface-hover: var(--rp-color-gray-700);
122
+ --rp-color-surface-inverted: var(--rp-color-gray-100);
123
+ --rp-color-overlay: rgba(3, 7, 18, 0.75);
124
+ --rp-color-border: var(--rp-color-gray-700);
125
+ --rp-color-border-hover: var(--rp-color-gray-600);
126
+ --rp-color-focus-ring: color-mix(in srgb, var(--rp-color-primary) 45%, transparent);
127
+ --rp-color-control-bg: var(--rp-color-gray-900);
128
+ --rp-color-control-readonly-bg: var(--rp-color-gray-800);
129
+ --rp-color-control-fg: var(--rp-color-gray-50);
130
+ --rp-color-control-placeholder: var(--rp-color-gray-500);
131
+ --rp-color-control-icon: var(--rp-color-gray-400);
132
+ --rp-color-control-border: var(--rp-color-gray-700);
133
+ --rp-color-control-border-hover: var(--rp-color-gray-600);
134
+ --rp-color-control-border-focus: var(--rp-color-primary);
135
+ --rp-color-control-track-bg: var(--rp-color-gray-700);
136
+ --rp-color-control-thumb-bg: var(--rp-color-gray-50);
137
+ --rp-color-primary-fg: color-mix(in srgb, var(--rp-color-primary) 65%, var(--rp-color-white));
138
+ --rp-color-secondary-fg: color-mix(in srgb, var(--rp-color-secondary) 65%, var(--rp-color-white));
139
+ --rp-color-success-fg: color-mix(in srgb, var(--rp-color-success) 65%, var(--rp-color-white));
140
+ --rp-color-warning-fg: color-mix(in srgb, var(--rp-color-warning) 65%, var(--rp-color-white));
141
+ --rp-color-danger-fg: color-mix(in srgb, var(--rp-color-danger) 65%, var(--rp-color-white));
142
+ --rp-color-info-fg: color-mix(in srgb, var(--rp-color-info) 65%, var(--rp-color-white));
143
+ --rp-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
144
+ --rp-shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px -1px rgba(0, 0, 0, 0.3);
145
+ --rp-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
146
+ --rp-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.3);
147
+ }
@@ -0,0 +1,66 @@
1
+ .rp-button[data-v-c2d151de] {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ gap: var(--rp-spacing-2);
6
+ font-family: var(--rp-font-family);
7
+ font-weight: var(--rp-font-weight-normal);
8
+ line-height: var(--rp-line-height-none);
9
+ border: var(--rp-border-width-thin) solid transparent;
10
+ cursor: pointer;
11
+ transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
12
+ white-space: nowrap;
13
+ user-select: none;
14
+ height: var(--rp-size-control-md);
15
+ padding: 0 var(--rp-spacing-4);
16
+ font-size: var(--rp-font-size-base);
17
+ border-radius: var(--rp-radius-lg);
18
+ }
19
+ .rp-button--solid[data-v-c2d151de] {
20
+ background-color: var(--rp-color-primary);
21
+ color: var(--rp-color-on-primary);
22
+ }
23
+ .rp-button--solid[data-v-c2d151de]:hover:not(:disabled) {
24
+ background-color: color-mix(in srgb, var(--rp-color-primary) 90%, var(--rp-color-black));
25
+ }
26
+ .rp-button--solid[data-v-c2d151de]:active:not(:disabled) {
27
+ background-color: color-mix(in srgb, var(--rp-color-primary) 80%, var(--rp-color-black));
28
+ }
29
+ .rp-button--ghost[data-v-c2d151de] {
30
+ background-color: transparent;
31
+ color: var(--rp-color-primary-fg);
32
+ }
33
+ .rp-button--ghost[data-v-c2d151de]:hover:not(:disabled) {
34
+ background-color: color-mix(in srgb, var(--rp-color-primary) 14%, transparent);
35
+ }
36
+ .rp-button--ghost[data-v-c2d151de]:active:not(:disabled) {
37
+ background-color: color-mix(in srgb, var(--rp-color-primary) 18%, transparent);
38
+ }
39
+ .rp-button[data-v-c2d151de]:disabled {
40
+ opacity: var(--rp-opacity-disabled);
41
+ cursor: not-allowed;
42
+ }
43
+ .rp-button[data-v-c2d151de]:focus-visible {
44
+ outline: none;
45
+ border-color: var(--rp-color-control-border-focus);
46
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
47
+ }
48
+ .rp-button__prefix[data-v-c2d151de], .rp-button__suffix[data-v-c2d151de] {
49
+ display: inline-flex;
50
+ align-items: center;
51
+ flex-shrink: 0;
52
+ }
53
+ .rp-button__spinner[data-v-c2d151de] {
54
+ width: 1em;
55
+ height: 1em;
56
+ border: var(--rp-border-width-medium) solid currentColor;
57
+ border-right-color: transparent;
58
+ border-radius: var(--rp-radius-full);
59
+ flex-shrink: 0;
60
+ animation: rp-button-spin-c2d151de 700ms linear infinite;
61
+ }
62
+ @keyframes rp-button-spin-c2d151de {
63
+ to {
64
+ transform: rotate(360deg);
65
+ }
66
+ }
package/dist/button.js ADDED
@@ -0,0 +1,62 @@
1
+ import './button.css';
2
+ import { n as bem, t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
3
+ import { child, computed, createIf, createSlot, defineVaporComponent, renderEffect, setClass, setInsertionState, setProp, template } from "vue";
4
+ //#region src/components/button/button.vue?vue&type=script&setup=true&vapor=true&lang.ts
5
+ var t0 = template("<span data-v-c2d151de class=rp-button__spinner aria-hidden=true>", 2);
6
+ var t1 = template("<span data-v-c2d151de class=rp-button__prefix>");
7
+ var t2 = template("<span data-v-c2d151de class=rp-button__suffix>");
8
+ var t3 = template("<button data-v-c2d151de><span data-v-c2d151de class=rp-button__label></span>", 1);
9
+ //#endregion
10
+ //#region src/components/button/button.vue
11
+ var button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
12
+ name: "RpButton",
13
+ __name: "button",
14
+ props: {
15
+ variant: { default: "solid" },
16
+ type: { default: "button" },
17
+ disabled: {
18
+ type: Boolean,
19
+ default: false
20
+ },
21
+ loading: {
22
+ type: Boolean,
23
+ default: false
24
+ }
25
+ },
26
+ setup(__props, { slots: $slots }) {
27
+ const props = __props;
28
+ const rootClass = computed(() => bem("rp-button", props.variant));
29
+ const n13 = t3();
30
+ const n8 = child(n13, 2);
31
+ renderEffect(() => {
32
+ setClass(n13, rootClass.value);
33
+ setProp(n13, "disabled", __props.disabled || __props.loading || void 0);
34
+ setProp(n13, "type", __props.type);
35
+ });
36
+ setInsertionState(n13, 0, 0);
37
+ createIf(() => __props.loading, () => {
38
+ return t0();
39
+ }, null, 33);
40
+ setInsertionState(n13, 0, 1);
41
+ createIf(() => $slots.prefix && !__props.loading, () => {
42
+ const n6 = t1();
43
+ setInsertionState(n6, null, 0);
44
+ createSlot("prefix", null, null, 1);
45
+ return n6;
46
+ });
47
+ setInsertionState(n8, null, 0);
48
+ createSlot("default", null, null, 1);
49
+ setInsertionState(n13, null, 3);
50
+ createIf(() => $slots.suffix, () => {
51
+ const n12 = t2();
52
+ setInsertionState(n12, null, 0);
53
+ createSlot("suffix", null, null, 1);
54
+ return n12;
55
+ });
56
+ return n13;
57
+ }
58
+ }), [["__scopeId", "data-v-c2d151de"]]);
59
+ //#endregion
60
+ export { button_default as t };
61
+
62
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","names":[],"sources":["../src/components/button/button.vue","../src/components/button/button.vue"],"sourcesContent":["<template>\n <button :class=\"rootClass\" :disabled=\"disabled || loading || undefined\" :type=\"type\">\n <span v-if=\"loading\" class=\"rp-button__spinner\" aria-hidden=\"true\" />\n <span v-if=\"$slots.prefix && !loading\" class=\"rp-button__prefix\">\n <slot name=\"prefix\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.suffix\" class=\"rp-button__suffix\">\n <slot name=\"suffix\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n variant: 'solid',\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst rootClass = computed(() => bem('rp-button', props.variant));\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n","<template>\n <button :class=\"rootClass\" :disabled=\"disabled || loading || undefined\" :type=\"type\">\n <span v-if=\"loading\" class=\"rp-button__spinner\" aria-hidden=\"true\" />\n <span v-if=\"$slots.prefix && !loading\" class=\"rp-button__prefix\">\n <slot name=\"prefix\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.suffix\" class=\"rp-button__suffix\">\n <slot name=\"suffix\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n variant: 'solid',\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst rootClass = computed(() => bem('rp-button', props.variant));\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAsBA,MAAM,QAAQ;EAOd,MAAM,YAAY,eAAe,IAAI,aAAa,MAAM,OAAO,CAAC;;;;iBA5B5C,UAAA,KAAS;gBAAG,YAAU,QAAA,YAAY,QAAA,WAAW,KAAA,CAAS;gBAAG,QAAM,QAAA,IAAI;;;iBACnE,QAAA,eAAO;;;;iBACP,OAAM,UAAA,CAAY,QAAA,eAAO;;;cAC3B,UAAa,MAAA,MAAA,CAAA;;;;;;iBAKX,OAAM,cAAA;;;cACR,UAAa,MAAA,MAAA,CAAA"}
@@ -0,0 +1,60 @@
1
+ .rp-checkbox[data-v-03521fec] {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ cursor: pointer;
5
+ font-family: var(--rp-font-family);
6
+ user-select: none;
7
+ }
8
+ .rp-checkbox--disabled[data-v-03521fec] {
9
+ opacity: var(--rp-opacity-disabled);
10
+ cursor: not-allowed;
11
+ }
12
+ .rp-checkbox[data-v-03521fec] {
13
+ gap: var(--rp-spacing-2);
14
+ font-size: var(--rp-font-size-base);
15
+ --_checkbox-size: 18px;
16
+ }
17
+ .rp-checkbox__native[data-v-03521fec] {
18
+ position: absolute;
19
+ width: 1px;
20
+ height: 1px;
21
+ padding: 0;
22
+ margin: -1px;
23
+ overflow: hidden;
24
+ clip: rect(0, 0, 0, 0);
25
+ white-space: nowrap;
26
+ border-width: 0;
27
+ pointer-events: none;
28
+ }
29
+ .rp-checkbox__native:focus-visible + .rp-checkbox__box[data-v-03521fec] {
30
+ border-color: var(--rp-color-control-border-focus);
31
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
32
+ }
33
+ .rp-checkbox__box[data-v-03521fec] {
34
+ display: inline-flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ width: var(--_checkbox-size);
38
+ height: var(--_checkbox-size);
39
+ flex-shrink: 0;
40
+ border: var(--rp-border-width-medium) solid var(--rp-color-control-border);
41
+ border-radius: var(--rp-radius-base);
42
+ background-color: var(--rp-color-control-bg);
43
+ transition: background-color var(--rp-transition-fast), border-color var(--rp-transition-fast);
44
+ }
45
+ .rp-checkbox--checked .rp-checkbox__box[data-v-03521fec], .rp-checkbox--indeterminate .rp-checkbox__box[data-v-03521fec] {
46
+ background-color: var(--rp-color-control-selected-bg);
47
+ border-color: var(--rp-color-control-selected-bg);
48
+ }
49
+ .rp-checkbox--invalid .rp-checkbox__box[data-v-03521fec] {
50
+ border-color: var(--rp-color-danger-fg);
51
+ }
52
+ .rp-checkbox__icon[data-v-03521fec] {
53
+ width: 12px;
54
+ height: 12px;
55
+ color: var(--rp-color-control-selected-fg);
56
+ }
57
+ .rp-checkbox__label[data-v-03521fec] {
58
+ line-height: var(--rp-line-height-normal);
59
+ color: var(--rp-color-text);
60
+ }
@@ -0,0 +1,132 @@
1
+ import './checkbox.css';
2
+ import { n as bem, t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
3
+ import { t as useControlState } from "./useControlState.js";
4
+ import { child, computed, createComponent, createIf, createSlot, defineVaporComponent, next, on, renderEffect, setAttr, setClass, setInsertionState, setProp, template, unref } from "vue";
5
+ //#region src/components/_internal/icons/CheckIcon.vue?vue&type=script&setup=true&vapor=true&lang.ts
6
+ var t0$2 = template("<svg viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=2><path d=\"M3.5 8.5L6.5 11.5L12.5 4.5\">", 3, 1);
7
+ //#endregion
8
+ //#region src/components/_internal/icons/CheckIcon.vue
9
+ var CheckIcon_default = /* @__PURE__ */ defineVaporComponent({
10
+ name: "CheckIcon",
11
+ __name: "CheckIcon",
12
+ setup(__props) {
13
+ return t0$2();
14
+ }
15
+ });
16
+ //#endregion
17
+ //#region src/components/_internal/icons/MinusIcon.vue?vue&type=script&setup=true&vapor=true&lang.ts
18
+ var t0$1 = template("<svg viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=2><path d=\"M4 8h8\">", 3, 1);
19
+ //#endregion
20
+ //#region src/components/_internal/icons/MinusIcon.vue
21
+ var MinusIcon_default = /* @__PURE__ */ defineVaporComponent({
22
+ name: "MinusIcon",
23
+ __name: "MinusIcon",
24
+ setup(__props) {
25
+ return t0$1();
26
+ }
27
+ });
28
+ //#endregion
29
+ //#region src/components/checkbox/useCheckbox.ts
30
+ function useCheckbox(props, emitUpdate) {
31
+ const control = useControlState(props);
32
+ const rootClass = computed(() => bem("rp-checkbox", {
33
+ checked: props.modelValue,
34
+ indeterminate: props.indeterminate,
35
+ disabled: control.disabled,
36
+ invalid: control.invalid
37
+ }));
38
+ function onChange(e) {
39
+ emitUpdate(e.target.checked);
40
+ }
41
+ return {
42
+ control,
43
+ rootClass,
44
+ onChange
45
+ };
46
+ }
47
+ //#endregion
48
+ //#region src/components/checkbox/checkbox.vue?vue&type=script&setup=true&vapor=true&lang.ts
49
+ var t0 = template("<span data-v-03521fec class=rp-checkbox__label>");
50
+ var t1 = template("<label data-v-03521fec><input data-v-03521fec type=checkbox class=rp-checkbox__native><span data-v-03521fec class=rp-checkbox__box></span>", 1);
51
+ //#endregion
52
+ //#region src/components/checkbox/checkbox.vue
53
+ var checkbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
54
+ name: "RpCheckbox",
55
+ __name: "checkbox",
56
+ props: {
57
+ id: {},
58
+ name: {},
59
+ modelValue: { type: Boolean },
60
+ disabled: {
61
+ type: Boolean,
62
+ default: void 0
63
+ },
64
+ required: {
65
+ type: Boolean,
66
+ default: void 0
67
+ },
68
+ invalid: {
69
+ type: Boolean,
70
+ default: void 0
71
+ },
72
+ ariaLabel: {},
73
+ describedby: {},
74
+ labelledby: {},
75
+ indeterminate: {
76
+ type: Boolean,
77
+ default: false
78
+ }
79
+ },
80
+ emits: ["update:modelValue"],
81
+ setup(__props, { emit: __emit, slots: $slots }) {
82
+ const props = __props;
83
+ const emit = __emit;
84
+ const { control, rootClass, onChange } = useCheckbox(props, (value) => {
85
+ emit("update:modelValue", value);
86
+ });
87
+ const n11 = t1();
88
+ const n0 = child(n11);
89
+ const n6 = next(n0, 1);
90
+ on(n0, "change", (e) => unref(onChange)(e));
91
+ renderEffect(() => {
92
+ const _control = unref(control);
93
+ const _indeterminate = __props.indeterminate;
94
+ const _modelValue = __props.modelValue;
95
+ const _control_disabled = _control.disabled;
96
+ const _control_required = _control.required;
97
+ setClass(n11, unref(rootClass));
98
+ setAttr(n11, "data-disabled", _control_disabled || void 0);
99
+ setAttr(n11, "data-state", _indeterminate ? "indeterminate" : _modelValue ? "checked" : "unchecked");
100
+ setProp(n0, "id", _control.id);
101
+ setProp(n0, "name", __props.name);
102
+ setProp(n0, "checked", _modelValue);
103
+ setProp(n0, "disabled", _control_disabled || void 0);
104
+ setProp(n0, "required", _control_required || void 0);
105
+ setProp(n0, "indeterminate", _indeterminate);
106
+ setAttr(n0, "aria-checked", _indeterminate ? "mixed" : _modelValue);
107
+ setAttr(n0, "aria-label", __props.ariaLabel || void 0);
108
+ setAttr(n0, "aria-labelledby", _control.ariaLabelledby);
109
+ setAttr(n0, "aria-describedby", _control.ariaDescribedby);
110
+ setAttr(n0, "aria-invalid", _control.invalid || void 0);
111
+ setAttr(n0, "aria-required", _control_required || void 0);
112
+ });
113
+ setInsertionState(n6, null, 0);
114
+ createIf(() => __props.indeterminate, () => {
115
+ return createComponent(unref(MinusIcon_default), { class: "rp-checkbox__icon" });
116
+ }, () => createIf(() => __props.modelValue, () => {
117
+ return createComponent(unref(CheckIcon_default), { class: "rp-checkbox__icon" });
118
+ }), 261);
119
+ setInsertionState(n11, null, 2);
120
+ createIf(() => $slots.default, () => {
121
+ const n10 = t0();
122
+ setInsertionState(n10, null, 0);
123
+ createSlot("default", null, null, 1);
124
+ return n10;
125
+ });
126
+ return n11;
127
+ }
128
+ }), [["__scopeId", "data-v-03521fec"]]);
129
+ //#endregion
130
+ export { checkbox_default as t };
131
+
132
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","names":[],"sources":["../src/components/_internal/icons/CheckIcon.vue","../src/components/_internal/icons/CheckIcon.vue","../src/components/_internal/icons/MinusIcon.vue","../src/components/_internal/icons/MinusIcon.vue","../src/components/checkbox/useCheckbox.ts","../src/components/checkbox/checkbox.vue","../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M3.5 8.5L6.5 11.5L12.5 4.5\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'CheckIcon' });\n</script>\n","<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M3.5 8.5L6.5 11.5L12.5 4.5\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'CheckIcon' });\n</script>\n","<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 8h8\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'MinusIcon' });\n</script>\n","<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 8h8\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'MinusIcon' });\n</script>\n","import { computed } from 'vue';\nimport { useControlState } from '@/composables/useControlState';\nimport { bem } from '@/utils/bem';\nimport type { CheckboxProps } from './types';\n\nexport function useCheckbox(\n props: Readonly<CheckboxProps>,\n emitUpdate: (value: boolean) => void,\n) {\n const control = useControlState(props);\n\n const rootClass = computed(() =>\n bem('rp-checkbox', {\n checked: props.modelValue,\n indeterminate: props.indeterminate,\n disabled: control.disabled,\n invalid: control.invalid,\n }),\n );\n\n function onChange(e: Event) {\n emitUpdate((e.target as HTMLInputElement).checked);\n }\n\n return {\n control,\n rootClass,\n onChange,\n };\n}\n","<template>\n <label\n :class=\"rootClass\"\n :data-disabled=\"control.disabled || undefined\"\n :data-state=\"indeterminate ? 'indeterminate' : modelValue ? 'checked' : 'unchecked'\"\n >\n <input\n :id=\"control.id\"\n :name=\"name\"\n type=\"checkbox\"\n class=\"rp-checkbox__native\"\n :checked=\"modelValue\"\n :disabled=\"control.disabled || undefined\"\n :required=\"control.required || undefined\"\n :indeterminate=\"indeterminate\"\n :aria-checked=\"indeterminate ? 'mixed' : modelValue\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"control.ariaLabelledby\"\n :aria-describedby=\"control.ariaDescribedby\"\n :aria-invalid=\"control.invalid || undefined\"\n :aria-required=\"control.required || undefined\"\n @change=\"onChange\"\n />\n <span class=\"rp-checkbox__box\">\n <MinusIcon v-if=\"indeterminate\" class=\"rp-checkbox__icon\" />\n <CheckIcon v-else-if=\"modelValue\" class=\"rp-checkbox__icon\" />\n </span>\n <span v-if=\"$slots.default\" class=\"rp-checkbox__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { CheckIcon, MinusIcon } from '@/components/_internal/icons';\nimport { useCheckbox } from './useCheckbox';\nimport type { CheckboxProps } from './types';\n\ndefineOptions({ name: 'RpCheckbox' });\n\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n required: undefined,\n invalid: undefined,\n indeterminate: false,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst { control, rootClass, onChange } = useCheckbox(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./checkbox.scss\" lang=\"scss\" scoped></style>\n","<template>\n <label\n :class=\"rootClass\"\n :data-disabled=\"control.disabled || undefined\"\n :data-state=\"indeterminate ? 'indeterminate' : modelValue ? 'checked' : 'unchecked'\"\n >\n <input\n :id=\"control.id\"\n :name=\"name\"\n type=\"checkbox\"\n class=\"rp-checkbox__native\"\n :checked=\"modelValue\"\n :disabled=\"control.disabled || undefined\"\n :required=\"control.required || undefined\"\n :indeterminate=\"indeterminate\"\n :aria-checked=\"indeterminate ? 'mixed' : modelValue\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"control.ariaLabelledby\"\n :aria-describedby=\"control.ariaDescribedby\"\n :aria-invalid=\"control.invalid || undefined\"\n :aria-required=\"control.required || undefined\"\n @change=\"onChange\"\n />\n <span class=\"rp-checkbox__box\">\n <MinusIcon v-if=\"indeterminate\" class=\"rp-checkbox__icon\" />\n <CheckIcon v-else-if=\"modelValue\" class=\"rp-checkbox__icon\" />\n </span>\n <span v-if=\"$slots.default\" class=\"rp-checkbox__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { CheckIcon, MinusIcon } from '@/components/_internal/icons';\nimport { useCheckbox } from './useCheckbox';\nimport type { CheckboxProps } from './types';\n\ndefineOptions({ name: 'RpCheckbox' });\n\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n required: undefined,\n invalid: undefined,\n indeterminate: false,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst { control, rootClass, onChange } = useCheckbox(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./checkbox.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AIKA,SAAgB,YACZ,OACA,YACF;CACE,MAAM,UAAU,gBAAgB,KAAK;CAErC,MAAM,YAAY,eACd,IAAI,eAAe;EACf,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,UAAU,QAAQ;EAClB,SAAS,QAAQ;CACrB,CAAC,CACL;CAEA,SAAS,SAAS,GAAU;EACxB,WAAY,EAAE,OAA4B,OAAO;CACrD;CAEA,OAAO;EACH;EACA;EACA;CACJ;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECWA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAIb,MAAM,EAAE,SAAS,WAAW,aAAa,YAAY,QAAQ,UAAU;GACnE,KAAK,qBAAqB,KAAK;EACnC,CAAC;;;;SAhCY,WAAM,MAAE,MAAA,QAAA,CAAQ,CAAA,CAAA,CAAA;;;;;;;iBAnBb,MAAA,SAAA,CAAS;gBAChB,iBAAe,qBAAoB,KAAA,CAAS;gBAC5C,cAAY,iBAAa,kBAAqB,cAAU,YAAA,WAAA;eAGpD,MAAI,SAAO,EAAA;eACX,QAAM,QAAA,IAAI;eAGV,WAAS,WAAU;eACnB,YAAU,qBAAoB,KAAA,CAAS;eACvC,YAAU,qBAAoB,KAAA,CAAS;eACvC,iBAAe,cAAa;eAC5B,gBAAc,iBAAa,UAAa,WAAU;eAClD,cAAY,QAAA,aAAa,KAAA,CAAS;eAClC,mBAAiB,SAAO,cAAA;eACxB,oBAAkB,SAAO,eAAA;eACzB,gBAAc,SAAO,WAAY,KAAA,CAAS;eAC1C,iBAAe,qBAAoB,KAAA,CAAS;;;iBAI5B,QAAA,qBAAa;sDAAE,OAAM,oBAAmB,CAAA;0BACnC,QAAA,kBAAU;sDAAE,OAAM,oBAAmB,CAAA;;;iBAEnD,OAAM,eAAA"}
@@ -0,0 +1,18 @@
1
+ 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<{
2
+ props: import('vue').PublicProps & (typeof globalThis extends {
3
+ __VLS_PROPS_FALLBACK: infer P;
4
+ } ? P : {});
5
+ expose: (exposed: {}) => void;
6
+ attrs: any;
7
+ slots: {};
8
+ emit: {};
9
+ }>) => import('vue').VNode & {
10
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
11
+ };
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
15
+ [K in keyof T]: T[K];
16
+ } : {
17
+ [K in keyof T as K]: T[K];
18
+ }) & {};
@@ -0,0 +1,18 @@
1
+ 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<{
2
+ props: import('vue').PublicProps & (typeof globalThis extends {
3
+ __VLS_PROPS_FALLBACK: infer P;
4
+ } ? P : {});
5
+ expose: (exposed: {}) => void;
6
+ attrs: any;
7
+ slots: {};
8
+ emit: {};
9
+ }>) => import('vue').VNode & {
10
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
11
+ };
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
15
+ [K in keyof T]: T[K];
16
+ } : {
17
+ [K in keyof T as K]: T[K];
18
+ }) & {};
@@ -0,0 +1,18 @@
1
+ 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<{
2
+ props: import('vue').PublicProps & (typeof globalThis extends {
3
+ __VLS_PROPS_FALLBACK: infer P;
4
+ } ? P : {});
5
+ expose: (exposed: {}) => void;
6
+ attrs: any;
7
+ slots: {};
8
+ emit: {};
9
+ }>) => import('vue').VNode & {
10
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
11
+ };
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
15
+ [K in keyof T]: T[K];
16
+ } : {
17
+ [K in keyof T as K]: T[K];
18
+ }) & {};
@@ -0,0 +1,3 @@
1
+ export { default as CheckIcon } from './CheckIcon';
2
+ export { default as ChevronDownIcon } from './ChevronDownIcon';
3
+ export { default as MinusIcon } from './MinusIcon';
@@ -0,0 +1,9 @@
1
+ export interface OptionListItem {
2
+ label: string;
3
+ value: string | number;
4
+ disabled?: boolean;
5
+ }
6
+ export type OptionListValue = string | number | null;
7
+ export declare function hasOptionListValue(value: OptionListValue): boolean;
8
+ export declare function getOptionListDisplayLabel<T extends OptionListItem>(options: T[] | undefined, value: OptionListValue): string;
9
+ export declare function getOptionListActiveDescendantId(baseId: string, focusedIndex: number): string | undefined;
@@ -0,0 +1,25 @@
1
+ import { ButtonProps } 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<ButtonProps> & (typeof globalThis extends {
4
+ __VLS_PROPS_FALLBACK: infer P;
5
+ } ? P : {});
6
+ expose: (exposed: {}) => void;
7
+ attrs: any;
8
+ slots: {
9
+ prefix?: (props: {}) => any;
10
+ } & {
11
+ default?: (props: {}) => any;
12
+ } & {
13
+ suffix?: (props: {}) => any;
14
+ };
15
+ emit: {};
16
+ }>) => import('vue').VNode & {
17
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
18
+ };
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
21
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
22
+ [K in keyof T]: T[K];
23
+ } : {
24
+ [K in keyof T as K]: T[K];
25
+ }) & {};
@@ -0,0 +1,2 @@
1
+ export { default as Button } from './button';
2
+ export type { ButtonProps } from './types';
@@ -0,0 +1,2 @@
1
+ import { t as button_default } from "../../button.js";
2
+ export { button_default as Button };