@byyuurin/ui 0.0.10 → 0.0.11

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 (194) hide show
  1. package/README.md +2 -2
  2. package/dist/module.json +3 -3
  3. package/dist/module.mjs +1 -1
  4. package/dist/module.mjs.map +1 -1
  5. package/dist/runtime/app/injections.d.ts +388 -364
  6. package/dist/runtime/components/Accordion.vue +38 -67
  7. package/dist/runtime/components/Accordion.vue.d.ts +52 -0
  8. package/dist/runtime/components/Alert.vue +37 -75
  9. package/dist/runtime/components/Alert.vue.d.ts +59 -0
  10. package/dist/runtime/components/App.vue +25 -40
  11. package/dist/runtime/components/App.vue.d.ts +24 -0
  12. package/dist/runtime/components/Avatar.vue +31 -51
  13. package/dist/runtime/components/Avatar.vue.d.ts +25 -0
  14. package/dist/runtime/components/AvatarGroup.vue +38 -69
  15. package/dist/runtime/components/AvatarGroup.vue.d.ts +27 -0
  16. package/dist/runtime/components/Badge.vue +25 -51
  17. package/dist/runtime/components/Badge.vue.d.ts +44 -0
  18. package/dist/runtime/components/Breadcrumb.vue +36 -74
  19. package/dist/runtime/components/Breadcrumb.vue.d.ts +52 -0
  20. package/dist/runtime/components/Button.vue +62 -51
  21. package/dist/runtime/components/Button.vue.d.ts +29 -0
  22. package/dist/runtime/components/ButtonGroup.vue +17 -37
  23. package/dist/runtime/components/ButtonGroup.vue.d.ts +26 -0
  24. package/dist/runtime/components/Calendar.vue +75 -110
  25. package/dist/runtime/components/Calendar.vue.d.ts +75 -0
  26. package/dist/runtime/components/Card.vue +25 -42
  27. package/dist/runtime/components/Card.vue.d.ts +30 -0
  28. package/dist/runtime/components/Carousel.vue +118 -225
  29. package/dist/runtime/components/Carousel.vue.d.ts +104 -0
  30. package/dist/runtime/components/Checkbox.vue +46 -73
  31. package/dist/runtime/components/Checkbox.vue.d.ts +56 -0
  32. package/dist/runtime/components/Chip.vue +31 -48
  33. package/dist/runtime/components/Chip.vue.d.ts +30 -0
  34. package/dist/runtime/components/Collapsible.vue +22 -30
  35. package/dist/runtime/components/Collapsible.vue.d.ts +26 -0
  36. package/dist/runtime/components/Drawer.vue +51 -101
  37. package/dist/runtime/components/Drawer.vue.d.ts +80 -0
  38. package/dist/runtime/components/DropdownMenu.vue +37 -115
  39. package/dist/runtime/components/DropdownMenu.vue.d.ts +99 -0
  40. package/dist/runtime/components/DropdownMenuContent.vue +81 -77
  41. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +39 -0
  42. package/dist/runtime/components/Form.vue +140 -254
  43. package/dist/runtime/components/Form.vue.d.ts +78 -0
  44. package/dist/runtime/components/FormItem.vue +50 -89
  45. package/dist/runtime/components/FormItem.vue.d.ts +60 -0
  46. package/dist/runtime/components/Input.vue +79 -115
  47. package/dist/runtime/components/Input.vue.d.ts +64 -0
  48. package/dist/runtime/components/InputNumber.vue +74 -117
  49. package/dist/runtime/components/InputNumber.vue.d.ts +245 -0
  50. package/dist/runtime/components/Kbd.vue +18 -39
  51. package/dist/runtime/components/Kbd.vue.d.ts +28 -0
  52. package/dist/runtime/components/Link.vue +168 -257
  53. package/dist/runtime/components/Link.vue.d.ts +95 -0
  54. package/dist/runtime/components/LinkBase.vue +36 -54
  55. package/dist/runtime/components/LinkBase.vue.d.ts +28 -0
  56. package/dist/runtime/components/Modal.vue +49 -84
  57. package/dist/runtime/components/Modal.vue.d.ts +66 -0
  58. package/dist/runtime/components/OverlayProvider.vue +10 -14
  59. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  60. package/dist/runtime/components/Pagination.vue +55 -121
  61. package/dist/runtime/components/Pagination.vue.d.ts +93 -0
  62. package/dist/runtime/components/PinInput.vue +49 -58
  63. package/dist/runtime/components/PinInput.vue.d.ts +35 -0
  64. package/dist/runtime/components/Popover.vue +39 -68
  65. package/dist/runtime/components/Popover.vue.d.ts +45 -0
  66. package/dist/runtime/components/Progress.vue +68 -120
  67. package/dist/runtime/components/Progress.vue.d.ts +54 -0
  68. package/dist/runtime/components/RadioGroup.vue +67 -125
  69. package/dist/runtime/components/RadioGroup.vue.d.ts +74 -0
  70. package/dist/runtime/components/ScrollArea.vue +31 -31
  71. package/dist/runtime/components/ScrollArea.vue.d.ts +17 -0
  72. package/dist/runtime/components/Select.vue +114 -204
  73. package/dist/runtime/components/Select.vue.d.ts +119 -0
  74. package/dist/runtime/components/Separator.vue +26 -44
  75. package/dist/runtime/components/Separator.vue.d.ts +27 -0
  76. package/dist/runtime/components/Skeleton.vue +12 -21
  77. package/dist/runtime/components/Skeleton.vue.d.ts +19 -0
  78. package/dist/runtime/components/Slider.vue +52 -74
  79. package/dist/runtime/components/Slider.vue.d.ts +36 -0
  80. package/dist/runtime/components/Switch.vue +51 -71
  81. package/dist/runtime/components/Switch.vue.d.ts +49 -0
  82. package/dist/runtime/components/Table.vue +108 -194
  83. package/dist/runtime/components/Table.vue.d.ts +148 -0
  84. package/dist/runtime/components/Tabs.vue +36 -81
  85. package/dist/runtime/components/Tabs.vue.d.ts +65 -0
  86. package/dist/runtime/components/Textarea.vue +77 -124
  87. package/dist/runtime/components/Textarea.vue.d.ts +60 -0
  88. package/dist/runtime/components/Toast.vue +47 -75
  89. package/dist/runtime/components/Toast.vue.d.ts +131 -0
  90. package/dist/runtime/components/ToastProvider.vue +65 -101
  91. package/dist/runtime/components/ToastProvider.vue.d.ts +38 -0
  92. package/dist/runtime/components/Tooltip.vue +36 -47
  93. package/dist/runtime/components/Tooltip.vue.d.ts +31 -0
  94. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  95. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  96. package/dist/runtime/composables/useFormItem.d.ts +2 -2
  97. package/dist/runtime/composables/useKbd.d.ts +1 -1
  98. package/dist/runtime/composables/useLocale.d.ts +3 -3
  99. package/dist/runtime/composables/useTheme.d.ts +1 -1
  100. package/dist/runtime/composables/useToast.d.ts +1 -1
  101. package/dist/runtime/locale/en.d.ts +1 -1
  102. package/dist/runtime/locale/zh-tw.d.ts +1 -1
  103. package/dist/runtime/theme/accordion.d.ts +45 -51
  104. package/dist/runtime/theme/accordion.js +1 -1
  105. package/dist/runtime/theme/alert.d.ts +115 -121
  106. package/dist/runtime/theme/alert.js +1 -1
  107. package/dist/runtime/theme/avatar-group.d.ts +42 -48
  108. package/dist/runtime/theme/avatar-group.js +1 -1
  109. package/dist/runtime/theme/avatar.d.ts +46 -52
  110. package/dist/runtime/theme/avatar.js +1 -1
  111. package/dist/runtime/theme/badge.d.ts +60 -66
  112. package/dist/runtime/theme/badge.js +1 -1
  113. package/dist/runtime/theme/breadcrumb.d.ts +52 -58
  114. package/dist/runtime/theme/breadcrumb.js +1 -1
  115. package/dist/runtime/theme/button-group.d.ts +36 -42
  116. package/dist/runtime/theme/button.d.ts +162 -168
  117. package/dist/runtime/theme/button.js +1 -1
  118. package/dist/runtime/theme/calendar.d.ts +52 -50
  119. package/dist/runtime/theme/calendar.js +20 -3
  120. package/dist/runtime/theme/card.d.ts +52 -58
  121. package/dist/runtime/theme/card.js +1 -1
  122. package/dist/runtime/theme/carousel.d.ts +98 -104
  123. package/dist/runtime/theme/carousel.js +1 -1
  124. package/dist/runtime/theme/checkbox.d.ts +77 -83
  125. package/dist/runtime/theme/checkbox.js +1 -1
  126. package/dist/runtime/theme/chip.d.ts +50 -56
  127. package/dist/runtime/theme/chip.js +1 -1
  128. package/dist/runtime/theme/collapsible.d.ts +29 -35
  129. package/dist/runtime/theme/collapsible.js +1 -1
  130. package/dist/runtime/theme/drawer.d.ts +120 -126
  131. package/dist/runtime/theme/drawer.js +1 -1
  132. package/dist/runtime/theme/dropdown-menu.d.ts +55 -61
  133. package/dist/runtime/theme/dropdown-menu.js +1 -1
  134. package/dist/runtime/theme/form-item.d.ts +63 -69
  135. package/dist/runtime/theme/form-item.js +1 -1
  136. package/dist/runtime/theme/form.d.ts +1 -7
  137. package/dist/runtime/theme/input-number.d.ts +98 -104
  138. package/dist/runtime/theme/input-number.js +1 -1
  139. package/dist/runtime/theme/input.d.ts +153 -159
  140. package/dist/runtime/theme/input.js +1 -1
  141. package/dist/runtime/theme/kbd.d.ts +30 -36
  142. package/dist/runtime/theme/link.d.ts +37 -43
  143. package/dist/runtime/theme/modal.d.ts +36 -42
  144. package/dist/runtime/theme/modal.js +1 -1
  145. package/dist/runtime/theme/pagination.d.ts +71 -77
  146. package/dist/runtime/theme/pagination.js +1 -1
  147. package/dist/runtime/theme/pinInput.d.ts +80 -86
  148. package/dist/runtime/theme/pinInput.js +1 -1
  149. package/dist/runtime/theme/popover.d.ts +29 -35
  150. package/dist/runtime/theme/popover.js +1 -1
  151. package/dist/runtime/theme/progress.d.ts +163 -169
  152. package/dist/runtime/theme/progress.js +1 -1
  153. package/dist/runtime/theme/radio-group.d.ts +99 -105
  154. package/dist/runtime/theme/radio-group.js +1 -1
  155. package/dist/runtime/theme/scroll-area.d.ts +62 -68
  156. package/dist/runtime/theme/scroll-area.js +1 -1
  157. package/dist/runtime/theme/select.d.ts +165 -171
  158. package/dist/runtime/theme/select.js +1 -1
  159. package/dist/runtime/theme/separator.d.ts +62 -68
  160. package/dist/runtime/theme/separator.js +1 -1
  161. package/dist/runtime/theme/skeleton.d.ts +1 -7
  162. package/dist/runtime/theme/slider.d.ts +62 -68
  163. package/dist/runtime/theme/slider.js +1 -1
  164. package/dist/runtime/theme/switch.d.ts +111 -117
  165. package/dist/runtime/theme/switch.js +1 -1
  166. package/dist/runtime/theme/table.d.ts +75 -81
  167. package/dist/runtime/theme/table.js +1 -1
  168. package/dist/runtime/theme/tabs.d.ts +114 -120
  169. package/dist/runtime/theme/tabs.js +1 -1
  170. package/dist/runtime/theme/textarea.d.ts +76 -82
  171. package/dist/runtime/theme/textarea.js +1 -1
  172. package/dist/runtime/theme/toast-provider.d.ts +106 -112
  173. package/dist/runtime/theme/toast-provider.js +1 -1
  174. package/dist/runtime/theme/toast.d.ts +74 -80
  175. package/dist/runtime/theme/toast.js +1 -1
  176. package/dist/runtime/theme/tooltip.d.ts +35 -41
  177. package/dist/runtime/theme/tooltip.js +1 -1
  178. package/dist/runtime/types/utils.d.ts +5 -5
  179. package/dist/runtime/utils/link.d.ts +3 -5
  180. package/dist/runtime/utils/styler.d.ts +2 -2
  181. package/dist/runtime/utils/styler.js +2 -2
  182. package/dist/shared/ui.D1BTWZFB.mjs +5 -0
  183. package/dist/shared/ui.D1BTWZFB.mjs.map +1 -0
  184. package/dist/types.d.mts +1 -1
  185. package/dist/unocss.mjs +5 -4
  186. package/dist/unocss.mjs.map +1 -1
  187. package/dist/unplugin.mjs +1 -1
  188. package/dist/unplugin.mjs.map +1 -1
  189. package/dist/vite.mjs +1 -1
  190. package/package.json +77 -75
  191. package/dist/module.cjs +0 -5
  192. package/dist/shared/ui.3e7fad19.mjs +0 -5
  193. package/dist/shared/ui.3e7fad19.mjs.map +0 -1
  194. package/dist/types.d.ts +0 -1
@@ -0,0 +1,93 @@
1
+ import type { PaginationRootEmits, PaginationRootProps } from 'reka-ui';
2
+ import type { pagination } from '../theme/index.js';
3
+ import type { ButtonProps, ComponentAttrs } from '../types/index.js';
4
+ export interface PaginationEmits extends PaginationRootEmits {
5
+ }
6
+ export interface PaginationSlots {
7
+ first?: (props?: {}) => any;
8
+ prev?: (props?: {}) => any;
9
+ next?: (props?: {}) => any;
10
+ last?: (props?: {}) => any;
11
+ ellipsis?: (props?: {}) => any;
12
+ item?: (props: {
13
+ page: number;
14
+ pageCount: number;
15
+ item: {
16
+ type: 'ellipsis';
17
+ } | {
18
+ type: 'page';
19
+ value: number;
20
+ };
21
+ index: number;
22
+ }) => any;
23
+ }
24
+ export interface PaginationProps extends ComponentAttrs<typeof pagination>, Pick<PaginationRootProps, 'as' | 'defaultPage' | 'disabled' | 'itemsPerPage' | 'page' | 'showEdges' | 'siblingCount' | 'total'> {
25
+ /**
26
+ * The icon to use for the first page control.
27
+ * @default app.icons.doubleLeft
28
+ */
29
+ firstIcon?: string;
30
+ /**
31
+ * The icon to use for the last page control.
32
+ * @default app.icons.doubleRight
33
+ */
34
+ lastIcon?: string;
35
+ /**
36
+ * The icon to use for the previous page control.
37
+ * @default app.icons.chevronLeft
38
+ */
39
+ prevIcon?: string;
40
+ /**
41
+ * The icon to use for the next page control.
42
+ * @default app.icons.chevronRight
43
+ */
44
+ nextIcon?: string;
45
+ /**
46
+ * The icon to use for the ellipsis control.
47
+ * @default app.icons.ellipsis
48
+ */
49
+ ellipsisIcon?: string;
50
+ /**
51
+ * The size of the pagination controls.
52
+ * @default "md"
53
+ */
54
+ size?: ButtonProps['size'];
55
+ /**
56
+ * The variant of the pagination controls.
57
+ * @default "outline"
58
+ */
59
+ variant?: ButtonProps['variant'];
60
+ /**
61
+ * The variant of the active pagination control.
62
+ * @default "solid"
63
+ */
64
+ activeVariant?: ButtonProps['variant'];
65
+ /**
66
+ * Whether to show the first, previous, next, and last controls.
67
+ * @default true
68
+ */
69
+ showControls?: boolean;
70
+ /**
71
+ * A function to render page controls as links.
72
+ */
73
+ to?: (page: number) => ButtonProps['to'];
74
+ }
75
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<PaginationProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
76
+ "update:page": (value: number) => any;
77
+ }, string, import("vue").PublicProps, Readonly<PaginationProps> & Readonly<{
78
+ "onUpdate:page"?: ((value: number) => any) | undefined;
79
+ }>, {
80
+ variant: "solid" | "outline" | "soft" | "soft-outline" | "link" | "ghost";
81
+ itemsPerPage: number;
82
+ showEdges: boolean;
83
+ siblingCount: number;
84
+ total: number;
85
+ activeVariant: "solid" | "outline" | "soft" | "soft-outline" | "link" | "ghost";
86
+ showControls: boolean;
87
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PaginationSlots>;
88
+ export default _default;
89
+ type __VLS_WithSlots<T, S> = T & {
90
+ new (): {
91
+ $slots: S;
92
+ };
93
+ };
@@ -1,66 +1,53 @@
1
- <script lang="ts">
2
- import type { VariantProps } from '@byyuurin/ui-kit'
3
- import type { PinInputRootProps } from 'reka-ui'
4
- import type { pinInput } from '../theme'
5
- import type { ComponentAttrs } from '../types'
1
+ <script>
6
2
 
7
- export interface PinInputEmits {
8
- 'update:modelValue': [value: string[]]
9
- 'complete': [value: string[]]
10
- 'change': [payload: Event]
11
- 'blur': [payload: Event]
12
- }
13
-
14
- type PinInputVariants = VariantProps<typeof pinInput>
15
-
16
- export interface PinInputProps extends ComponentAttrs<typeof pinInput>, Pick<PinInputRootProps, 'as' | 'defaultValue' | 'disabled' | 'id' | 'mask' | 'modelValue' | 'name' | 'otp' | 'placeholder' | 'required' | 'type'> {
17
- variant?: PinInputVariants['variant']
18
- size?: PinInputVariants['size']
19
- length?: number | string
20
- underline?: boolean
21
- highlight?: boolean
22
- }
23
3
  </script>
24
4
 
25
- <script setup lang="ts">
26
- import { reactivePick } from '@vueuse/core'
27
- import { PinInputInput, PinInputRoot, useForwardPropsEmits } from 'reka-ui'
28
- import { computed, ref } from 'vue'
29
- import { useFormItem } from '../composables/useFormItem'
30
- import { useTheme } from '../composables/useTheme'
31
- import { looseToNumber } from '../utils'
32
-
33
- const props = withDefaults(defineProps<PinInputProps>(), {
34
- variant: 'outline',
35
- length: 5,
36
- type: 'text',
37
- })
38
-
39
- const emit = defineEmits<PinInputEmits>()
40
-
41
- const rootProps = useForwardPropsEmits(reactivePick(props, 'defaultValue', 'disabled', 'id', 'mask', 'modelValue', 'name', 'otp', 'placeholder', 'required', 'type'), emit)
42
-
43
- const completed = ref(false)
44
-
45
- const { id, name, size, highlight, disabled, ariaAttrs, emitFormInput, emitFormChange, emitFormFocus, emitFormBlur } = useFormItem<PinInputProps>(props)
46
- const { generateStyle } = useTheme()
47
- const style = computed(() => generateStyle('pinInput', {
5
+ <script setup>
6
+ import { reactivePick } from "@vueuse/core";
7
+ import { PinInputInput, PinInputRoot, useForwardPropsEmits } from "reka-ui";
8
+ import { computed, ref } from "vue";
9
+ import { useFormItem } from "../composables/useFormItem";
10
+ import { useTheme } from "../composables/useTheme";
11
+ import { looseToNumber } from "../utils";
12
+ const props = defineProps({
13
+ variant: { type: null, required: false, default: "outline" },
14
+ size: { type: null, required: false },
15
+ length: { type: [Number, String], required: false, default: 5 },
16
+ underline: { type: Boolean, required: false },
17
+ highlight: { type: Boolean, required: false },
18
+ class: { type: null, required: false },
19
+ ui: { type: null, required: false },
20
+ as: { type: null, required: false },
21
+ defaultValue: { type: Array, required: false },
22
+ disabled: { type: Boolean, required: false },
23
+ id: { type: String, required: false },
24
+ mask: { type: Boolean, required: false },
25
+ modelValue: { type: null, required: false },
26
+ name: { type: String, required: false },
27
+ otp: { type: Boolean, required: false },
28
+ placeholder: { type: String, required: false },
29
+ required: { type: Boolean, required: false },
30
+ type: { type: null, required: false, default: "text" }
31
+ });
32
+ const emit = defineEmits(["update:modelValue", "complete", "change", "blur"]);
33
+ const rootProps = useForwardPropsEmits(reactivePick(props, "defaultValue", "disabled", "id", "mask", "modelValue", "name", "otp", "required", "type"), emit);
34
+ const completed = ref(false);
35
+ const { id, name, size, highlight, disabled, ariaAttrs, emitFormInput, emitFormChange, emitFormFocus, emitFormBlur } = useFormItem(props);
36
+ const { generateStyle } = useTheme();
37
+ const style = computed(() => generateStyle("pinInput", {
48
38
  ...props,
49
39
  size: size.value,
50
- highlight: highlight.value,
51
- }))
52
-
53
- function onComplete(value: string[]) {
54
- // @ts-expect-error - 'target' does not exist in type 'EventInit'
55
- const event = new Event('change', { target: { value } })
56
- emit('change', event)
57
- emitFormChange()
40
+ highlight: highlight.value
41
+ }));
42
+ function onComplete(value) {
43
+ const event = new Event("change", { target: { value } });
44
+ emit("change", event);
45
+ emitFormChange();
58
46
  }
59
-
60
- function onBlur(event: FocusEvent) {
47
+ function onBlur(event) {
61
48
  if (!event.relatedTarget || completed.value) {
62
- emit('blur', event)
63
- emitFormBlur()
49
+ emit("blur", event);
50
+ emitFormBlur();
64
51
  }
65
52
  }
66
53
  </script>
@@ -68,21 +55,25 @@ function onBlur(event: FocusEvent) {
68
55
  <template>
69
56
  <PinInputRoot
70
57
  v-bind="{ ...rootProps, ...ariaAttrs, id, name }"
58
+ :placeholder="props.placeholder"
71
59
  :class="style.root({ class: [props.class, props.ui?.root] })"
60
+ data-part="root"
72
61
  @update:model-value="emitFormInput"
73
62
  @complete="onComplete"
74
63
  >
75
64
  <span
76
65
  v-for="(ids, index) in looseToNumber(props.length)"
77
66
  :key="ids"
67
+ :aria-disabled="disabled ? true : void 0"
78
68
  :class="style.container({ class: props.ui?.container })"
79
- :aria-disabled="disabled ? true : undefined"
69
+ data-part="container"
80
70
  >
81
71
  <PinInputInput
82
72
  v-bind="$attrs"
83
- :class="style.base({ class: props.ui?.base })"
84
73
  :index="index"
85
74
  :disabled="disabled"
75
+ :class="style.base({ class: props.ui?.base })"
76
+ data-part="base"
86
77
  @blur="onBlur"
87
78
  @focus="emitFormFocus"
88
79
  />
@@ -0,0 +1,35 @@
1
+ import type { VariantProps } from '@byyuurin/ui-kit';
2
+ import type { PinInputRootEmits, PinInputRootProps } from 'reka-ui';
3
+ import type { pinInput } from '../theme/index.js';
4
+ import type { ComponentAttrs } from '../types/index.js';
5
+ type PinInputType = 'text' | 'number';
6
+ export type PinInputEmits<T extends PinInputType = 'text' | 'number'> = PinInputRootEmits<T> & {
7
+ change: [payload: Event];
8
+ blur: [payload: Event];
9
+ };
10
+ type PinInputVariants = VariantProps<typeof pinInput>;
11
+ export interface PinInputProps<T extends PinInputType = 'text' | 'number'> extends ComponentAttrs<typeof pinInput>, Pick<PinInputRootProps<T>, 'as' | 'defaultValue' | 'disabled' | 'id' | 'mask' | 'modelValue' | 'name' | 'otp' | 'placeholder' | 'required' | 'type'> {
12
+ variant?: PinInputVariants['variant'];
13
+ size?: PinInputVariants['size'];
14
+ length?: number | string;
15
+ underline?: boolean;
16
+ highlight?: boolean;
17
+ }
18
+ declare const _default: <T extends PinInputType = "text" | "number">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
19
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
20
+ readonly onBlur?: ((payload: Event) => any) | undefined;
21
+ readonly onChange?: ((payload: Event) => any) | undefined;
22
+ readonly "onUpdate:modelValue"?: ((value: T extends "number" ? number[] : string[]) => any) | undefined;
23
+ readonly onComplete?: ((value: T extends "number" ? number[] : string[]) => any) | undefined;
24
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onBlur" | "onChange" | "onUpdate:modelValue" | "onComplete"> & PinInputProps<T> & Partial<{}>> & import("vue").PublicProps;
25
+ expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
26
+ attrs: any;
27
+ slots: {};
28
+ emit: ((evt: "blur", payload: Event) => void) & ((evt: "change", payload: Event) => void) & ((evt: "update:modelValue", value: T extends "number" ? number[] : string[]) => void) & ((evt: "complete", value: T extends "number" ? number[] : string[]) => void);
29
+ }>) => import("vue").VNode & {
30
+ __ctx?: Awaited<typeof __VLS_setup>;
31
+ };
32
+ export default _default;
33
+ type __VLS_PrettifyLocal<T> = {
34
+ [K in keyof T]: T[K];
35
+ } & {};
@@ -1,76 +1,46 @@
1
- <script lang="ts">
2
- import type { HoverCardRootProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui'
3
- import type { popover } from '../theme'
4
- import type { ComponentAttrs, EmitsToProps } from '../types'
1
+ <script>
5
2
 
6
- export interface PopoverEmits extends PopoverRootEmits {}
7
-
8
- export interface PopoverSlots {
9
- default?: (props: { open: boolean }) => any
10
- content?: (props?: {}) => any
11
- }
12
-
13
- export interface PopoverProps extends ComponentAttrs<typeof popover>, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
14
- /**
15
- * The display mode of the popover.
16
- * @default "click"
17
- */
18
- mode?: 'click' | 'hover'
19
- /** @default { side: 'bottom', sideOffset: 8, collisionPadding: 8 } */
20
- content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>
21
- arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>
22
- /** @default true */
23
- portal?: boolean
24
- /**
25
- * When `false`, the popover will not close when clicking outside or pressing escape.
26
- * @default true
27
- */
28
- dismissible?: boolean
29
- }
30
3
  </script>
31
4
 
32
- <script setup lang="ts">
33
- import { reactivePick } from '@vueuse/core'
34
- import { defu } from 'defu'
35
- import { useForwardPropsEmits } from 'reka-ui'
36
- import { HoverCard, Popover } from 'reka-ui/namespaced'
37
- import { computed, toRef } from 'vue'
38
- import { useTheme } from '../composables/useTheme'
39
-
40
- const props = withDefaults(defineProps<PopoverProps>(), {
41
- mode: 'click',
42
- portal: true,
43
- openDelay: 0,
44
- closeDelay: 0,
45
- dismissible: true,
46
- })
47
- const emit = defineEmits<PopoverEmits>()
48
- const slots = defineSlots<PopoverSlots>()
49
-
50
- const pick = props.mode === 'hover'
51
- ? reactivePick(props, 'defaultOpen', 'open', 'openDelay', 'closeDelay')
52
- : reactivePick(props, 'defaultOpen', 'open', 'modal')
53
-
54
- const rootProps = useForwardPropsEmits(pick, emit)
55
- const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, collisionPadding: 8 }) as PopoverContentProps)
56
-
5
+ <script setup>
6
+ import { reactivePick } from "@vueuse/core";
7
+ import { defu } from "defu";
8
+ import { useForwardPropsEmits } from "reka-ui";
9
+ import { HoverCard, Popover } from "reka-ui/namespaced";
10
+ import { computed, toRef } from "vue";
11
+ import { useTheme } from "../composables/useTheme";
12
+ const props = defineProps({
13
+ mode: { type: String, required: false, default: "click" },
14
+ content: { type: Object, required: false },
15
+ arrow: { type: [Boolean, Object], required: false },
16
+ portal: { type: Boolean, required: false, default: true },
17
+ dismissible: { type: Boolean, required: false, default: true },
18
+ class: { type: null, required: false },
19
+ ui: { type: null, required: false },
20
+ defaultOpen: { type: Boolean, required: false },
21
+ open: { type: Boolean, required: false },
22
+ modal: { type: Boolean, required: false },
23
+ openDelay: { type: Number, required: false, default: 0 },
24
+ closeDelay: { type: Number, required: false, default: 0 }
25
+ });
26
+ const emit = defineEmits(["update:open"]);
27
+ const slots = defineSlots();
28
+ const pick = props.mode === "hover" ? reactivePick(props, "defaultOpen", "open", "openDelay", "closeDelay") : reactivePick(props, "defaultOpen", "open", "modal");
29
+ const rootProps = useForwardPropsEmits(pick, emit);
30
+ const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8 }));
57
31
  const contentEvents = computed(() => {
58
32
  if (props.dismissible)
59
- return {}
60
-
33
+ return {};
61
34
  return {
62
- pointerDownOutside: (e: Event) => e.preventDefault(),
63
- interactOutside: (e: Event) => e.preventDefault(),
64
- escapeKeyDown: (e: Event) => e.preventDefault(),
65
- }
66
- })
67
-
68
- const arrowProps = toRef(() => props.arrow as PopoverArrowProps)
69
-
70
- const Component = computed(() => props.mode === 'hover' ? HoverCard : Popover)
71
-
72
- const { generateStyle } = useTheme()
73
- const style = computed(() => generateStyle('popover', props))
35
+ pointerDownOutside: (e) => e.preventDefault(),
36
+ interactOutside: (e) => e.preventDefault(),
37
+ escapeKeyDown: (e) => e.preventDefault()
38
+ };
39
+ });
40
+ const arrowProps = toRef(() => props.arrow);
41
+ const Component = computed(() => props.mode === "hover" ? HoverCard : Popover);
42
+ const { generateStyle } = useTheme();
43
+ const style = computed(() => generateStyle("popover", props));
74
44
  </script>
75
45
 
76
46
  <template>
@@ -83,11 +53,12 @@ const style = computed(() => generateStyle('popover', props))
83
53
  <Component.Content
84
54
  v-bind="contentProps"
85
55
  :class="style.content({ class: [!slots.default && props.class, props.ui?.content] })"
56
+ data-part="content"
86
57
  v-on="contentEvents"
87
58
  >
88
59
  <slot name="content"></slot>
89
60
 
90
- <Component.Arrow v-if="!!arrow" v-bind="arrowProps" :class="style.arrow({ class: props.ui?.arrow })" />
61
+ <Component.Arrow v-if="!!arrow" v-bind="arrowProps" :class="style.arrow({ class: props.ui?.arrow })" data-part="arrow" />
91
62
  </Component.Content>
92
63
  </Component.Portal>
93
64
  </Component.Root>
@@ -0,0 +1,45 @@
1
+ import type { HoverCardRootProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui';
2
+ import type { popover } from '../theme/index.js';
3
+ import type { ComponentAttrs, EmitsToProps } from '../types/index.js';
4
+ export interface PopoverEmits extends PopoverRootEmits {
5
+ }
6
+ export interface PopoverSlots {
7
+ default?: (props: {
8
+ open: boolean;
9
+ }) => any;
10
+ content?: (props?: {}) => any;
11
+ }
12
+ export interface PopoverProps extends ComponentAttrs<typeof popover>, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
13
+ /**
14
+ * The display mode of the popover.
15
+ * @default "click"
16
+ */
17
+ mode?: 'click' | 'hover';
18
+ /** @default { side: 'bottom', sideOffset: 8, collisionPadding: 8 } */
19
+ content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>;
20
+ arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>;
21
+ /** @default true */
22
+ portal?: boolean;
23
+ /**
24
+ * When `false`, the popover will not close when clicking outside or pressing escape.
25
+ * @default true
26
+ */
27
+ dismissible?: boolean;
28
+ }
29
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<PopoverProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
+ "update:open": (value: boolean) => any;
31
+ }, string, import("vue").PublicProps, Readonly<PopoverProps> & Readonly<{
32
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
33
+ }>, {
34
+ mode: "click" | "hover";
35
+ portal: boolean;
36
+ dismissible: boolean;
37
+ openDelay: number;
38
+ closeDelay: number;
39
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PopoverSlots>;
40
+ export default _default;
41
+ type __VLS_WithSlots<T, S> = T & {
42
+ new (): {
43
+ $slots: S;
44
+ };
45
+ };