@guoyg578/k-ui 0.1.1 → 0.1.3

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 (146) hide show
  1. package/README.md +11 -9
  2. package/dist/components/KAffix.vue.d.ts +17 -0
  3. package/dist/components/KAffix.vue.js +7 -0
  4. package/dist/components/KAffix.vue_vue_type_script_setup_true_lang.js +18 -0
  5. package/dist/components/KAnchor.vue.d.ts +14 -0
  6. package/dist/components/KAnchor.vue.js +7 -0
  7. package/dist/components/KAnchor.vue_vue_type_script_setup_true_lang.js +40 -0
  8. package/dist/components/KAutoComplete.vue.d.ts +26 -0
  9. package/dist/components/KAutoComplete.vue.js +8 -0
  10. package/dist/components/KAutoComplete.vue_vue_type_script_setup_true_lang.js +58 -0
  11. package/dist/components/KBackTop.vue.d.ts +24 -0
  12. package/dist/components/KBackTop.vue.js +7 -0
  13. package/dist/components/KBackTop.vue_vue_type_script_setup_true_lang.js +56 -0
  14. package/dist/components/KBadge.vue.d.ts +31 -0
  15. package/dist/components/KBadge.vue.js +7 -0
  16. package/dist/components/KBadge.vue_vue_type_script_setup_true_lang.js +48 -0
  17. package/dist/components/KButtonGroup.vue.d.ts +18 -0
  18. package/dist/components/KButtonGroup.vue.js +6 -0
  19. package/dist/components/KButtonGroup.vue_vue_type_script_setup_true_lang.js +14 -0
  20. package/dist/components/KCalendar.vue.d.ts +33 -0
  21. package/dist/components/KCalendar.vue.js +7 -0
  22. package/dist/components/KCalendar.vue_vue_type_script_setup_true_lang.js +78 -0
  23. package/dist/components/KCascader.vue.d.ts +29 -0
  24. package/dist/components/KCascader.vue.js +8 -0
  25. package/dist/components/KCascader.vue_vue_type_script_setup_true_lang.js +114 -0
  26. package/dist/components/KCode.vue.d.ts +27 -0
  27. package/dist/components/KCode.vue.js +7 -0
  28. package/dist/components/KCode.vue_vue_type_script_setup_true_lang.js +42 -0
  29. package/dist/components/KCollapse.vue.d.ts +25 -0
  30. package/dist/components/KCollapse.vue.js +7 -0
  31. package/dist/components/KCollapse.vue_vue_type_script_setup_true_lang.js +35 -0
  32. package/dist/components/KCollapseItem.vue.d.ts +22 -0
  33. package/dist/components/KCollapseItem.vue.js +7 -0
  34. package/dist/components/KCollapseItem.vue_vue_type_script_setup_true_lang.js +46 -0
  35. package/dist/components/KCountdown.vue.d.ts +15 -0
  36. package/dist/components/KCountdown.vue.js +7 -0
  37. package/dist/components/KCountdown.vue_vue_type_script_setup_true_lang.js +36 -0
  38. package/dist/components/KDescriptions.vue.d.ts +1 -1
  39. package/dist/components/KDivider.vue.d.ts +21 -0
  40. package/dist/components/KDivider.vue.js +7 -0
  41. package/dist/components/KDivider.vue_vue_type_script_setup_true_lang.js +33 -0
  42. package/dist/components/KDropdown.vue.d.ts +1 -1
  43. package/dist/components/KDropdown.vue.js +1 -1
  44. package/dist/components/KDynamicInput.vue.d.ts +33 -0
  45. package/dist/components/KDynamicInput.vue.js +7 -0
  46. package/dist/components/KDynamicInput.vue_vue_type_script_setup_true_lang.js +81 -0
  47. package/dist/components/KDynamicTags.vue.d.ts +20 -0
  48. package/dist/components/KDynamicTags.vue.js +7 -0
  49. package/dist/components/KDynamicTags.vue_vue_type_script_setup_true_lang.js +60 -0
  50. package/dist/components/KGrid.vue.d.ts +29 -0
  51. package/dist/components/KGrid.vue.js +7 -0
  52. package/dist/components/KGrid.vue_vue_type_script_setup_true_lang.js +33 -0
  53. package/dist/components/KGridItem.vue.d.ts +20 -0
  54. package/dist/components/KGridItem.vue.js +7 -0
  55. package/dist/components/KGridItem.vue_vue_type_script_setup_true_lang.js +18 -0
  56. package/dist/components/KImage.vue.d.ts +2 -0
  57. package/dist/components/KImage.vue.js +1 -1
  58. package/dist/components/KImage.vue_vue_type_script_setup_true_lang.js +15 -4
  59. package/dist/components/KImageViewer.vue.d.ts +2 -0
  60. package/dist/components/KImageViewer.vue.js +1 -1
  61. package/dist/components/KImageViewer.vue_vue_type_script_setup_true_lang.js +8 -2
  62. package/dist/components/KLayout.vue.d.ts +19 -0
  63. package/dist/components/KLayout.vue.js +7 -0
  64. package/dist/components/KLayout.vue_vue_type_script_setup_true_lang.js +14 -0
  65. package/dist/components/KLayoutContent.vue.d.ts +17 -0
  66. package/dist/components/KLayoutContent.vue.js +7 -0
  67. package/dist/components/KLayoutContent.vue_vue_type_script_setup_true_lang.js +11 -0
  68. package/dist/components/KLayoutHeader.vue.d.ts +19 -0
  69. package/dist/components/KLayoutHeader.vue.js +7 -0
  70. package/dist/components/KLayoutHeader.vue_vue_type_script_setup_true_lang.js +14 -0
  71. package/dist/components/KLayoutSider.vue.d.ts +28 -0
  72. package/dist/components/KLayoutSider.vue.js +7 -0
  73. package/dist/components/KLayoutSider.vue_vue_type_script_setup_true_lang.js +34 -0
  74. package/dist/components/KList.vue.d.ts +24 -0
  75. package/dist/components/KList.vue.js +7 -0
  76. package/dist/components/KList.vue_vue_type_script_setup_true_lang.js +39 -0
  77. package/dist/components/KListItem.vue.d.ts +17 -0
  78. package/dist/components/KListItem.vue.js +7 -0
  79. package/dist/components/KListItem.vue_vue_type_script_setup_true_lang.js +22 -0
  80. package/dist/components/KMention.vue.d.ts +27 -0
  81. package/dist/components/KMention.vue.js +8 -0
  82. package/dist/components/KMention.vue_vue_type_script_setup_true_lang.js +73 -0
  83. package/dist/components/KMenu.vue.d.ts +30 -0
  84. package/dist/components/KMenu.vue.js +9 -0
  85. package/dist/components/KMenu.vue_vue_type_script_setup_true_lang.js +134 -0
  86. package/dist/components/KMenuItem.vue.d.ts +10 -0
  87. package/dist/components/KMenuItem.vue.js +7 -0
  88. package/dist/components/KMenuItem.vue_vue_type_script_setup_true_lang.js +58 -0
  89. package/dist/components/KNumberAnimation.vue.d.ts +33 -0
  90. package/dist/components/KNumberAnimation.vue.js +7 -0
  91. package/dist/components/KNumberAnimation.vue_vue_type_script_setup_true_lang.js +45 -0
  92. package/dist/components/KPopconfirm.vue.d.ts +1 -1
  93. package/dist/components/KPopover.vue.d.ts +1 -1
  94. package/dist/components/KRadio.vue.d.ts +4 -2
  95. package/dist/components/KRadio.vue.js +1 -1
  96. package/dist/components/KRadio.vue_vue_type_script_setup_true_lang.js +24 -11
  97. package/dist/components/KRadioGroup.vue.d.ts +3 -0
  98. package/dist/components/KRadioGroup.vue.js +1 -1
  99. package/dist/components/KRadioGroup.vue_vue_type_script_setup_true_lang.js +17 -12
  100. package/dist/components/KRate.vue.d.ts +25 -0
  101. package/dist/components/KRate.vue.js +7 -0
  102. package/dist/components/KRate.vue_vue_type_script_setup_true_lang.js +77 -0
  103. package/dist/components/KSpace.vue.d.ts +32 -0
  104. package/dist/components/KSpace.vue.js +7 -0
  105. package/dist/components/KSpace.vue_vue_type_script_setup_true_lang.js +52 -0
  106. package/dist/components/KStatistic.vue.d.ts +23 -0
  107. package/dist/components/KStatistic.vue.js +7 -0
  108. package/dist/components/KStatistic.vue_vue_type_script_setup_true_lang.js +27 -0
  109. package/dist/components/KText.vue.d.ts +26 -0
  110. package/dist/components/KText.vue.js +7 -0
  111. package/dist/components/KText.vue_vue_type_script_setup_true_lang.js +31 -0
  112. package/dist/components/KTime.vue.d.ts +14 -0
  113. package/dist/components/KTime.vue.js +7 -0
  114. package/dist/components/KTime.vue_vue_type_script_setup_true_lang.js +56 -0
  115. package/dist/components/KTimePicker.vue.d.ts +19 -0
  116. package/dist/components/KTimePicker.vue.js +8 -0
  117. package/dist/components/KTimePicker.vue_vue_type_script_setup_true_lang.js +116 -0
  118. package/dist/components/KTimeline.vue.d.ts +13 -0
  119. package/dist/components/KTimeline.vue.js +7 -0
  120. package/dist/components/KTimeline.vue_vue_type_script_setup_true_lang.js +10 -0
  121. package/dist/components/KTimelineItem.vue.d.ts +29 -0
  122. package/dist/components/KTimelineItem.vue.js +7 -0
  123. package/dist/components/KTimelineItem.vue_vue_type_script_setup_true_lang.js +37 -0
  124. package/dist/components/KTransfer.vue.d.ts +24 -0
  125. package/dist/components/KTransfer.vue.js +7 -0
  126. package/dist/components/KTransfer.vue_vue_type_script_setup_true_lang.js +114 -0
  127. package/dist/components/KTreeSelect.vue.d.ts +22 -0
  128. package/dist/components/KTreeSelect.vue.js +8 -0
  129. package/dist/components/KTreeSelect.vue_vue_type_script_setup_true_lang.js +100 -0
  130. package/dist/components/KTypography.vue.d.ts +13 -0
  131. package/dist/components/KTypography.vue.js +7 -0
  132. package/dist/components/KTypography.vue_vue_type_script_setup_true_lang.js +10 -0
  133. package/dist/components/KUpload.vue.d.ts +1 -1
  134. package/dist/components/KWatermark.vue.d.ts +27 -0
  135. package/dist/components/KWatermark.vue.js +7 -0
  136. package/dist/components/KWatermark.vue_vue_type_script_setup_true_lang.js +28 -0
  137. package/dist/components/list-context.d.ts +6 -0
  138. package/dist/components/list-context.js +4 -0
  139. package/dist/components/menu-context.d.ts +26 -0
  140. package/dist/components/menu-context.js +4 -0
  141. package/dist/components/radio-context.d.ts +6 -0
  142. package/dist/components/radio-context.js +4 -0
  143. package/dist/index.d.ts +43 -0
  144. package/dist/index.js +102 -64
  145. package/dist/k-ui.css +1 -1
  146. package/package.json +1 -1
package/README.md CHANGED
@@ -57,17 +57,19 @@ const open = ref(false)
57
57
  - `v-reveal` / `v-spotlight` 指令:`import { installDirectives } from '@guoyg578/k-ui'` 后 `installDirectives(app)`。
58
58
  - `KMessage`(函数式 toast)开箱即用,首次调用自动挂载容器。
59
59
 
60
- ## 组件清单(45+)
60
+ ## 组件清单(70+,对标 naive-ui 常用组件)
61
61
 
62
- - **通用 / 输入**:`KButton` · `KInput` · `KTextarea` · `KInputNumber` · `KSearchBar` · `KTag`
63
- - **选择**:`KSelect` · `KCombobox`(可搜索+多选)· `KDatePicker`
64
- - **表单**:`KSwitch` · `KCheckbox`(+`KCheckboxGroup`) · `KRadio`(+`KRadioGroup`) · `KForm` · `KFormField`
65
- - **反馈 / 弹层**:`KConfirmDialog` · `KDialog` · `KDrawer` · `KTooltip` · `KAlert` · `KMessage`(函数式 toast
66
- - **数据展示**:`KDataTable` · `KPagination` · `KEmpty` · `KLoadingOverlay` · `KRefetchOverlay` · `KProgress` · `KAvatar`(+`KAvatarGroup`)
62
+ - **通用 / 输入**:`KButton`(+`KButtonGroup`) · `KInput` · `KTextarea` · `KInputNumber` · `KSearchBar` · `KTag` · `KText` · `KTime` · `KSpace`
63
+ - **选择**:`KSelect` · `KCombobox`(可搜索+多选)· `KAutoComplete` · `KCascader` · `KTreeSelect` · `KDatePicker` · `KTimePicker`
64
+ - **表单**:`KSwitch` · `KCheckbox`(+`KCheckboxGroup`) · `KRadio`(+`KRadioGroup`,含 `button` 分段态) · `KForm` · `KFormField` · `KRate` · `KDynamicTags` · `KDynamicInput` · `KTransfer` · `KMention`
65
+ - **反馈 / 弹层**:`KConfirmDialog` · `KDialog` · `KDrawer` · `KTooltip` · `KPopover` · `KPopconfirm` · `KDropdown` · `KAlert` · `KMessage`(函数式 toast)· `KNotification`
66
+ - **数据展示**:`KDataTable` · `KPagination` · `KEmpty` · `KLoadingOverlay` · `KRefetchOverlay` · `KProgress` · `KSpin` · `KAvatar`(+`KAvatarGroup`) · `KBadge` · `KStatistic` · `KCollapse`(+`KCollapseItem`) · `KTimeline`(+`KTimelineItem`) · `KList`(+`KListItem`) · `KCalendar` · `KCode` · `KDescriptions`
67
67
  - **骨架屏**:`KSkeleton` · `KListSkeleton` · `KGridSkeleton`
68
- - **导航**:`KTabs` · `KBreadcrumb`
69
- - **容器**:`KCard` · `KResult` · `KSteps`
70
- - **媒体**:`KImage` · `KImageViewer` · `KUpload`
68
+ - **布局**:`KLayout`(+`KLayoutHeader` / `KLayoutContent` / `KLayoutSider`) · `KDivider` · `KGrid`(+`KGridItem`)
69
+ - **导航**:`KTabs` · `KBreadcrumb` · `KMenu`(侧边菜单,含子菜单 / 折叠 hover 飞出,**路由无关**,`@select` 驱动导航)
70
+ - **容器**:`KCard` · `KResult` · `KSteps` · `KTypography`(原生 HTML 文章排版)
71
+ - **媒体**:`KImage` · `KImageViewer` · `KCarousel` · `KUpload`(+`KUploadDragger`)
72
+ - **页面辅助**:`KBackTop` · `KAffix` · `KAnchor` · `KWatermark` · `KNumberAnimation` · `KCountdown`
71
73
  - **高级**:`KCommandPalette`(Cmd+K)· `KVirtualList` · `KResizablePanel` · `KTreeView` · `KDiff`(LCS 文本对比)
72
74
  - **主题**:`KThemeToggleButton`(**无状态**,`v-model:mode`,状态由宿主管理)
73
75
  - **指令**:`v-reveal`(滚动入场)/ `v-spotlight`(鼠标跟随光晕),需 `installDirectives(app)`
@@ -0,0 +1,17 @@
1
+ type __VLS_Props = {
2
+ offsetTop?: number;
3
+ offsetBottom?: number;
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./KAffix.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region components/KAffix.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-5fdda9dc"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,18 @@
1
+ import { computed as e, createElementBlock as t, defineComponent as n, normalizeStyle as r, openBlock as i, renderSlot as a } from "vue";
2
+ //#region components/KAffix.vue?vue&type=script&setup=true&lang.ts
3
+ var o = /* @__PURE__ */ n({
4
+ __name: "KAffix",
5
+ props: {
6
+ offsetTop: {},
7
+ offsetBottom: {}
8
+ },
9
+ setup(n) {
10
+ let o = n, s = e(() => o.offsetBottom == null ? { top: `${o.offsetTop ?? 0}px` } : { bottom: `${o.offsetBottom}px` });
11
+ return (e, n) => (i(), t("div", {
12
+ class: "k-affix",
13
+ style: r(s.value)
14
+ }, [a(e.$slots, "default", {}, void 0, !0)], 4));
15
+ }
16
+ });
17
+ //#endregion
18
+ export { o as default };
@@ -0,0 +1,14 @@
1
+ export interface AnchorItem {
2
+ title: string;
3
+ /** 目标元素选择器,如 '#section-1' */
4
+ href: string;
5
+ }
6
+ type __VLS_Props = {
7
+ items: AnchorItem[];
8
+ offsetTop?: number;
9
+ };
10
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
11
+ offsetTop: number;
12
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./KAnchor.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region components/KAnchor.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-2498e7e0"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,40 @@
1
+ import { Fragment as e, createElementBlock as t, defineComponent as n, normalizeClass as r, onMounted as i, onUnmounted as a, openBlock as o, ref as s, renderList as c, toDisplayString as l } from "vue";
2
+ //#region components/KAnchor.vue?vue&type=script&setup=true&lang.ts
3
+ var u = { class: "k-anchor" }, d = ["href", "onClick"], f = /* @__PURE__ */ n({
4
+ __name: "KAnchor",
5
+ props: {
6
+ items: {},
7
+ offsetTop: { default: 80 }
8
+ },
9
+ setup(n) {
10
+ let f = n, p = s("");
11
+ function m() {
12
+ let e = "";
13
+ for (let t of f.items) {
14
+ let n = document.querySelector(t.href);
15
+ n && n.getBoundingClientRect().top - f.offsetTop <= 1 && (e = t.href);
16
+ }
17
+ p.value = e || f.items[0]?.href || "";
18
+ }
19
+ function h(e, t) {
20
+ t.preventDefault();
21
+ let n = document.querySelector(e.href);
22
+ if (!n) return;
23
+ let r = n.getBoundingClientRect().top + window.scrollY - f.offsetTop;
24
+ window.scrollTo({
25
+ top: r,
26
+ behavior: "smooth"
27
+ });
28
+ }
29
+ return i(() => {
30
+ window.addEventListener("scroll", m, { passive: !0 }), m();
31
+ }), a(() => window.removeEventListener("scroll", m)), (i, a) => (o(), t("nav", u, [(o(!0), t(e, null, c(n.items, (e) => (o(), t("a", {
32
+ key: e.href,
33
+ href: e.href,
34
+ class: r(["k-anchor__link", { "k-anchor__link--active": p.value === e.href }]),
35
+ onClick: (t) => h(e, t)
36
+ }, l(e.title), 11, d))), 128))]));
37
+ }
38
+ });
39
+ //#endregion
40
+ export { f as default };
@@ -0,0 +1,26 @@
1
+ interface AcOption {
2
+ label: string;
3
+ value: string;
4
+ }
5
+ type __VLS_Props = {
6
+ modelValue?: string;
7
+ options?: (string | AcOption)[];
8
+ placeholder?: string;
9
+ disabled?: boolean;
10
+ /** 是否按输入内容过滤候选 */
11
+ filter?: boolean;
12
+ };
13
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
14
+ select: (v: string) => any;
15
+ "update:modelValue": (v: string) => any;
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
+ onSelect?: ((v: string) => any) | undefined;
18
+ "onUpdate:modelValue"?: ((v: string) => any) | undefined;
19
+ }>, {
20
+ filter: boolean;
21
+ disabled: boolean;
22
+ modelValue: string;
23
+ options: (string | AcOption)[];
24
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
+ declare const _default: typeof __VLS_export;
26
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./KAutoComplete.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ /* empty css */
5
+ //#region components/KAutoComplete.vue
6
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-cfefb1e5"]]);
7
+ //#endregion
8
+ export { n as default };
@@ -0,0 +1,58 @@
1
+ import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, normalizeClass as o, openBlock as s, ref as c, renderList as l, toDisplayString as u, withModifiers as d } from "vue";
2
+ //#region components/KAutoComplete.vue?vue&type=script&setup=true&lang.ts
3
+ var f = { class: "k-ac" }, p = [
4
+ "value",
5
+ "placeholder",
6
+ "disabled"
7
+ ], m = {
8
+ key: 0,
9
+ class: "k-ac__list k-menu-surface"
10
+ }, h = ["onMousedown"], g = /* @__PURE__ */ a({
11
+ __name: "KAutoComplete",
12
+ props: {
13
+ modelValue: { default: "" },
14
+ options: { default: () => [] },
15
+ placeholder: {},
16
+ disabled: {
17
+ type: Boolean,
18
+ default: !1
19
+ },
20
+ filter: {
21
+ type: Boolean,
22
+ default: !0
23
+ }
24
+ },
25
+ emits: ["update:modelValue", "select"],
26
+ setup(a, { emit: g }) {
27
+ let _ = a, v = g, y = c(!1), b = t(() => (_.options ?? []).map((e) => typeof e == "string" ? {
28
+ label: e,
29
+ value: e
30
+ } : e)), x = t(() => {
31
+ if (!_.filter || !_.modelValue) return b.value;
32
+ let e = _.modelValue.toLowerCase();
33
+ return b.value.filter((t) => t.label.toLowerCase().includes(e));
34
+ }), S = t(() => y.value && !_.disabled && x.value.length > 0);
35
+ function C(e) {
36
+ v("update:modelValue", e.target.value);
37
+ }
38
+ function w(e) {
39
+ v("update:modelValue", e.value), v("select", e.value), y.value = !1;
40
+ }
41
+ return (t, c) => (s(), r("div", f, [i("input", {
42
+ class: "k-ac__input",
43
+ value: a.modelValue,
44
+ placeholder: a.placeholder,
45
+ disabled: a.disabled,
46
+ onInput: C,
47
+ onFocus: c[0] ||= (e) => y.value = !0,
48
+ onBlur: c[1] ||= (e) => y.value = !1
49
+ }, null, 40, p), S.value ? (s(), r("div", m, [(s(!0), r(e, null, l(x.value, (e) => (s(), r("button", {
50
+ key: e.value,
51
+ type: "button",
52
+ class: o(["k-ac__item", { "k-ac__item--active": e.value === a.modelValue }]),
53
+ onMousedown: d((t) => w(e), ["prevent"])
54
+ }, u(e.label), 43, h))), 128))])) : n("", !0)]));
55
+ }
56
+ });
57
+ //#endregion
58
+ export { g as default };
@@ -0,0 +1,24 @@
1
+ type __VLS_Props = {
2
+ visibilityHeight?: number;
3
+ right?: number;
4
+ bottom?: number;
5
+ /** 滚动容器选择器,默认 window */
6
+ target?: string;
7
+ };
8
+ declare var __VLS_13: {};
9
+ type __VLS_Slots = {} & {
10
+ default?: (props: typeof __VLS_13) => any;
11
+ };
12
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
13
+ right: number;
14
+ bottom: number;
15
+ visibilityHeight: number;
16
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./KBackTop.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region components/KBackTop.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-b45e5a2b"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,56 @@
1
+ import { Teleport as e, Transition as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createVNode as a, defineComponent as o, normalizeStyle as s, onMounted as c, onUnmounted as l, openBlock as u, ref as d, renderSlot as f, unref as p, withCtx as m } from "vue";
2
+ import { ChevronUp as h } from "lucide-vue-next";
3
+ //#region components/KBackTop.vue?vue&type=script&setup=true&lang.ts
4
+ var g = /* @__PURE__ */ o({
5
+ __name: "KBackTop",
6
+ props: {
7
+ visibilityHeight: { default: 180 },
8
+ right: { default: 24 },
9
+ bottom: { default: 24 },
10
+ target: {}
11
+ },
12
+ setup(o) {
13
+ let g = o, _ = d(!1);
14
+ function v() {
15
+ if (g.target) {
16
+ let e = document.querySelector(g.target);
17
+ if (e) return e;
18
+ }
19
+ return window;
20
+ }
21
+ function y(e) {
22
+ return e === window ? window.scrollY : e.scrollTop;
23
+ }
24
+ let b;
25
+ function x() {
26
+ _.value = y(b) > g.visibilityHeight;
27
+ }
28
+ function S() {
29
+ b === window ? window.scrollTo({
30
+ top: 0,
31
+ behavior: "smooth"
32
+ }) : b.scrollTo({
33
+ top: 0,
34
+ behavior: "smooth"
35
+ });
36
+ }
37
+ return c(() => {
38
+ b = v(), b.addEventListener("scroll", x, { passive: !0 }), x();
39
+ }), l(() => b?.removeEventListener("scroll", x)), (c, l) => (u(), n(e, { to: "body" }, [a(t, { name: "k-backtop" }, {
40
+ default: m(() => [_.value ? (u(), i("button", {
41
+ key: 0,
42
+ type: "button",
43
+ class: "k-backtop",
44
+ style: s({
45
+ right: `${o.right}px`,
46
+ bottom: `${o.bottom}px`
47
+ }),
48
+ "aria-label": "回到顶部",
49
+ onClick: S
50
+ }, [f(c.$slots, "default", {}, () => [a(p(h), { size: 20 })], !0)], 4)) : r("", !0)]),
51
+ _: 3
52
+ })]));
53
+ }
54
+ });
55
+ //#endregion
56
+ export { g as default };
@@ -0,0 +1,31 @@
1
+ type __VLS_Props = {
2
+ value?: number | string;
3
+ /** 数字封顶,超出显示 max+ */
4
+ max?: number;
5
+ dot?: boolean;
6
+ type?: 'default' | 'success' | 'error' | 'warning' | 'info';
7
+ /** value 为 0 时是否仍显示 */
8
+ showZero?: boolean;
9
+ /** 自定义颜色(覆盖 type) */
10
+ color?: string;
11
+ /** 呼吸脉冲动画 */
12
+ processing?: boolean;
13
+ };
14
+ declare var __VLS_1: {};
15
+ type __VLS_Slots = {} & {
16
+ default?: (props: typeof __VLS_1) => any;
17
+ };
18
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
19
+ type: "default" | "success" | "error" | "warning" | "info";
20
+ dot: boolean;
21
+ showZero: boolean;
22
+ processing: boolean;
23
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
25
+ declare const _default: typeof __VLS_export;
26
+ export default _default;
27
+ type __VLS_WithSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./KBadge.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region components/KBadge.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-e337d9fa"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,48 @@
1
+ import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createTextVNode as i, defineComponent as a, normalizeClass as o, normalizeStyle as s, openBlock as c, renderSlot as l, toDisplayString as u, unref as d, useSlots as f } from "vue";
2
+ //#region components/KBadge.vue?vue&type=script&setup=true&lang.ts
3
+ var p = /* @__PURE__ */ a({
4
+ __name: "KBadge",
5
+ props: {
6
+ value: {},
7
+ max: {},
8
+ dot: {
9
+ type: Boolean,
10
+ default: !1
11
+ },
12
+ type: { default: "error" },
13
+ showZero: {
14
+ type: Boolean,
15
+ default: !1
16
+ },
17
+ color: {},
18
+ processing: {
19
+ type: Boolean,
20
+ default: !1
21
+ }
22
+ },
23
+ setup(a) {
24
+ let p = a, m = f(), h = t(() => {
25
+ if (p.dot) return "";
26
+ let e = p.value;
27
+ return typeof e == "number" ? p.max != null && e > p.max ? `${p.max}+` : String(e) : e ?? "";
28
+ }), g = t(() => {
29
+ if (p.dot) return !1;
30
+ let e = p.value;
31
+ return e == null || e === "" || typeof e == "number" && e === 0 && !p.showZero;
32
+ });
33
+ return (t, f) => (c(), r("span", { class: o(["k-badge", { "k-badge--standalone": !d(m).default }]) }, [l(t.$slots, "default", {}, void 0, !0), g.value ? n("", !0) : (c(), r("sup", {
34
+ key: 0,
35
+ class: o(["k-badge__sup", [`k-badge--${a.type}`, {
36
+ "k-badge--dot": a.dot,
37
+ "k-badge--attached": !!d(m).default,
38
+ "k-badge--processing": a.processing
39
+ }]]),
40
+ style: s(a.color ? {
41
+ backgroundColor: a.color,
42
+ borderColor: a.color
43
+ } : void 0)
44
+ }, [a.dot ? n("", !0) : (c(), r(e, { key: 0 }, [i(u(h.value), 1)], 64))], 6))], 2));
45
+ }
46
+ });
47
+ //#endregion
48
+ export { p as default };
@@ -0,0 +1,18 @@
1
+ type __VLS_Props = {
2
+ vertical?: boolean;
3
+ };
4
+ declare var __VLS_1: {};
5
+ type __VLS_Slots = {} & {
6
+ default?: (props: typeof __VLS_1) => any;
7
+ };
8
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
9
+ vertical: boolean;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,6 @@
1
+ import e from "./KButtonGroup.vue_vue_type_script_setup_true_lang.js";
2
+ /* empty css */
3
+ //#region components/KButtonGroup.vue
4
+ var t = e;
5
+ //#endregion
6
+ export { t as default };
@@ -0,0 +1,14 @@
1
+ import { createElementBlock as e, defineComponent as t, normalizeClass as n, openBlock as r, renderSlot as i } from "vue";
2
+ //#region components/KButtonGroup.vue?vue&type=script&setup=true&lang.ts
3
+ var a = /* @__PURE__ */ t({
4
+ __name: "KButtonGroup",
5
+ props: { vertical: {
6
+ type: Boolean,
7
+ default: !1
8
+ } },
9
+ setup(t) {
10
+ return (a, o) => (r(), e("div", { class: n(["k-btn-group", { "k-btn-group--vertical": t.vertical }]) }, [i(a.$slots, "default")], 2));
11
+ }
12
+ });
13
+ //#endregion
14
+ export { a as default };
@@ -0,0 +1,33 @@
1
+ type __VLS_Props = {
2
+ modelValue?: number | Date | null;
3
+ };
4
+ declare var __VLS_11: {
5
+ date: Date;
6
+ isCurrentMonth: boolean;
7
+ };
8
+ type __VLS_Slots = {} & {
9
+ default?: (props: typeof __VLS_11) => any;
10
+ };
11
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
12
+ "update:modelValue": (v: number) => any;
13
+ panelChange: (p: {
14
+ year: number;
15
+ month: number;
16
+ }) => any;
17
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ "onUpdate:modelValue"?: ((v: number) => any) | undefined;
19
+ onPanelChange?: ((p: {
20
+ year: number;
21
+ month: number;
22
+ }) => any) | undefined;
23
+ }>, {
24
+ modelValue: number | Date | null;
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
27
+ declare const _default: typeof __VLS_export;
28
+ export default _default;
29
+ type __VLS_WithSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
@@ -0,0 +1,7 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./KCalendar.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region components/KCalendar.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-67422762"]]);
6
+ //#endregion
7
+ export { n as default };
@@ -0,0 +1,78 @@
1
+ import { Fragment as e, computed as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, ref as l, renderList as u, renderSlot as d, toDisplayString as f, unref as p } from "vue";
2
+ import { ChevronLeft as m, ChevronRight as h } from "lucide-vue-next";
3
+ //#region components/KCalendar.vue?vue&type=script&setup=true&lang.ts
4
+ var g = { class: "k-cal" }, _ = { class: "k-cal__head" }, v = { class: "k-cal__title" }, y = { class: "k-cal__nav" }, b = { class: "k-cal__grid k-cal__weekdays" }, x = { class: "k-cal__grid" }, S = ["onClick"], C = /* @__PURE__ */ o({
5
+ __name: "KCalendar",
6
+ props: { modelValue: { default: null } },
7
+ emits: ["update:modelValue", "panelChange"],
8
+ setup(o, { emit: C }) {
9
+ let w = o, T = C;
10
+ function E(e) {
11
+ return e == null ? null : e instanceof Date ? e : new Date(e);
12
+ }
13
+ let D = t(() => E(w.modelValue)), O = /* @__PURE__ */ new Date(), k = D.value ?? O, A = l({
14
+ y: k.getFullYear(),
15
+ m: k.getMonth()
16
+ }), j = [
17
+ "一",
18
+ "二",
19
+ "三",
20
+ "四",
21
+ "五",
22
+ "六",
23
+ "日"
24
+ ], M = t(() => `${A.value.y} 年 ${A.value.m + 1} 月`), N = t(() => {
25
+ let { y: e, m: t } = A.value, n = (new Date(e, t, 1).getDay() + 6) % 7, r = new Date(e, t, 1 - n);
26
+ return Array.from({ length: 42 }, (e, t) => {
27
+ let n = new Date(r);
28
+ return n.setDate(r.getDate() + t), n;
29
+ });
30
+ });
31
+ function P(e, t) {
32
+ return !!t && e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth() && e.getDate() === t.getDate();
33
+ }
34
+ function F(e) {
35
+ let { y: t, m: n } = A.value;
36
+ n += e, n < 0 ? (--t, n = 11) : n > 11 && (t += 1, n = 0), A.value = {
37
+ y: t,
38
+ m: n
39
+ }, T("panelChange", {
40
+ year: t,
41
+ month: n + 1
42
+ });
43
+ }
44
+ function I(e) {
45
+ T("update:modelValue", e.getTime());
46
+ }
47
+ return (t, o) => (c(), n("div", g, [
48
+ r("div", _, [r("span", v, f(M.value), 1), r("div", y, [r("button", {
49
+ type: "button",
50
+ onClick: o[0] ||= (e) => F(-1),
51
+ "aria-label": "上个月"
52
+ }, [a(p(m), { size: 16 })]), r("button", {
53
+ type: "button",
54
+ onClick: o[1] ||= (e) => F(1),
55
+ "aria-label": "下个月"
56
+ }, [a(p(h), { size: 16 })])])]),
57
+ r("div", b, [(c(), n(e, null, u(j, (e) => r("span", {
58
+ key: e,
59
+ class: "k-cal__weekday"
60
+ }, f(e), 1)), 64))]),
61
+ r("div", x, [(c(!0), n(e, null, u(N.value, (e, r) => (c(), n("button", {
62
+ key: r,
63
+ type: "button",
64
+ class: s(["k-cal__cell", {
65
+ "k-cal__cell--muted": e.getMonth() !== A.value.m,
66
+ "k-cal__cell--today": P(e, p(O)),
67
+ "k-cal__cell--selected": P(e, D.value)
68
+ }]),
69
+ onClick: (t) => I(e)
70
+ }, [d(t.$slots, "default", {
71
+ date: e,
72
+ isCurrentMonth: e.getMonth() === A.value.m
73
+ }, () => [i(f(e.getDate()), 1)], !0)], 10, S))), 128))])
74
+ ]));
75
+ }
76
+ });
77
+ //#endregion
78
+ export { C as default };
@@ -0,0 +1,29 @@
1
+ export interface CascaderOption {
2
+ label: string;
3
+ value: string | number;
4
+ children?: CascaderOption[];
5
+ disabled?: boolean;
6
+ }
7
+ type __VLS_Props = {
8
+ modelValue?: string | number | null;
9
+ options: CascaderOption[];
10
+ placeholder?: string;
11
+ disabled?: boolean;
12
+ clearable?: boolean;
13
+ separator?: string;
14
+ /** 允许选中非叶子节点 */
15
+ changeOnSelect?: boolean;
16
+ };
17
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
18
+ "update:modelValue": (v: string | number | null) => any;
19
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
20
+ "onUpdate:modelValue"?: ((v: string | number | null) => any) | undefined;
21
+ }>, {
22
+ disabled: boolean;
23
+ placeholder: string;
24
+ clearable: boolean;
25
+ separator: string;
26
+ changeOnSelect: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import e from "../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./KCascader.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ /* empty css */
5
+ //#region components/KCascader.vue
6
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-1578d394"]]);
7
+ //#endregion
8
+ export { n as default };