@guoyg578/k-ui 0.1.0 → 0.1.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.
- package/README.md +75 -29
- package/dist/components/KAffix.vue.d.ts +17 -0
- package/dist/components/KAffix.vue.js +7 -0
- package/dist/components/KAffix.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/components/KAlert.vue.d.ts +1 -1
- package/dist/components/{KAlert.js → KAlert.vue.js} +2 -2
- package/dist/components/KAlert.vue_vue_type_script_setup_true_lang.js +35 -32
- package/dist/components/KAnchor.vue.d.ts +14 -0
- package/dist/components/KAnchor.vue.js +7 -0
- package/dist/components/KAnchor.vue_vue_type_script_setup_true_lang.js +40 -0
- package/dist/components/KAutoComplete.vue.d.ts +26 -0
- package/dist/components/KAutoComplete.vue.js +8 -0
- package/dist/components/KAutoComplete.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/components/{KAvatar.js → KAvatar.vue.js} +1 -1
- package/dist/components/{KAvatarGroup.js → KAvatarGroup.vue.js} +1 -1
- package/dist/components/KBackTop.vue.d.ts +24 -0
- package/dist/components/KBackTop.vue.js +7 -0
- package/dist/components/KBackTop.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/components/KBadge.vue.d.ts +31 -0
- package/dist/components/KBadge.vue.js +7 -0
- package/dist/components/KBadge.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/KBreadcrumb.vue.d.ts +30 -1
- package/dist/components/{KBreadcrumb.js → KBreadcrumb.vue.js} +2 -2
- package/dist/components/KBreadcrumb.vue_vue_type_script_setup_true_lang.js +36 -21
- package/dist/components/KButton.vue.d.ts +17 -2
- package/dist/components/{KButton.js → KButton.vue.js} +2 -2
- package/dist/components/KButton.vue_vue_type_script_setup_true_lang.js +51 -17
- package/dist/components/KButtonGroup.vue.d.ts +18 -0
- package/dist/components/KButtonGroup.vue.js +6 -0
- package/dist/components/KButtonGroup.vue_vue_type_script_setup_true_lang.js +14 -0
- package/dist/components/KCalendar.vue.d.ts +33 -0
- package/dist/components/KCalendar.vue.js +7 -0
- package/dist/components/KCalendar.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/components/KCard.vue.d.ts +5 -3
- package/dist/components/{KCard.js → KCard.vue.js} +2 -2
- package/dist/components/KCard.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/{KCarousel.js → KCarousel.vue.js} +1 -1
- package/dist/components/KCascader.vue.d.ts +29 -0
- package/dist/components/KCascader.vue.js +8 -0
- package/dist/components/KCascader.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/components/{KCheckbox.js → KCheckbox.vue.js} +1 -1
- package/dist/components/{KCheckboxGroup.js → KCheckboxGroup.vue.js} +1 -1
- package/dist/components/KCode.vue.d.ts +27 -0
- package/dist/components/KCode.vue.js +7 -0
- package/dist/components/KCode.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/components/KCollapse.vue.d.ts +25 -0
- package/dist/components/KCollapse.vue.js +7 -0
- package/dist/components/KCollapse.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/components/KCollapseItem.vue.d.ts +22 -0
- package/dist/components/KCollapseItem.vue.js +7 -0
- package/dist/components/KCollapseItem.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/components/KColorPicker.vue.d.ts +40 -0
- package/dist/components/KColorPicker.vue.js +7 -0
- package/dist/components/KColorPicker.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/components/{KCombobox.js → KCombobox.vue.js} +2 -2
- package/dist/components/{KCommandPalette.js → KCommandPalette.vue.js} +1 -1
- package/dist/components/KConfigProvider.vue.d.ts +26 -0
- package/dist/components/KConfigProvider.vue.js +5 -0
- package/dist/components/KConfigProvider.vue_vue_type_script_setup_true_lang.js +17 -0
- package/dist/components/{KConfirmDialog.js → KConfirmDialog.vue.js} +1 -1
- package/dist/components/KCountdown.vue.d.ts +15 -0
- package/dist/components/KCountdown.vue.js +7 -0
- package/dist/components/KCountdown.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/KDataTable.vue.d.ts +33 -10
- package/dist/components/{KDataTable.js → KDataTable.vue.js} +2 -2
- package/dist/components/KDataTable.vue_vue_type_script_setup_true_lang.js +128 -30
- package/dist/components/{KDatePicker.js → KDatePicker.vue.js} +1 -1
- package/dist/components/KDatePicker.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/KDescriptions.vue.d.ts +30 -0
- package/dist/components/KDescriptions.vue.js +6 -0
- package/dist/components/KDescriptions.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/KDescriptionsItem.vue.d.ts +17 -0
- package/dist/components/KDescriptionsItem.vue.js +5 -0
- package/dist/components/KDescriptionsItem.vue_vue_type_script_setup_true_lang.js +17 -0
- package/dist/components/KDialog.vue.d.ts +1 -0
- package/dist/components/{KDialog.js → KDialog.vue.js} +2 -2
- package/dist/components/KDialog.vue_vue_type_script_setup_true_lang.js +45 -38
- package/dist/components/{KDiff.js → KDiff.vue.js} +1 -1
- package/dist/components/KDivider.vue.d.ts +21 -0
- package/dist/components/KDivider.vue.js +7 -0
- package/dist/components/KDivider.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/KDrawer.vue.d.ts +7 -3
- package/dist/components/{KDrawer.js → KDrawer.vue.js} +2 -2
- package/dist/components/KDrawer.vue_vue_type_script_setup_true_lang.js +41 -29
- package/dist/components/KDropdown.vue.d.ts +8 -5
- package/dist/components/{KDropdown.js → KDropdown.vue.js} +2 -2
- package/dist/components/KDropdown.vue_vue_type_script_setup_true_lang.js +40 -38
- package/dist/components/KDynamicInput.vue.d.ts +33 -0
- package/dist/components/KDynamicInput.vue.js +7 -0
- package/dist/components/KDynamicInput.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/components/KDynamicTags.vue.d.ts +20 -0
- package/dist/components/KDynamicTags.vue.js +7 -0
- package/dist/components/KDynamicTags.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/components/KEmpty.vue.d.ts +8 -4
- package/dist/components/KEmpty.vue_vue_type_script_setup_true_lang.js +17 -14
- package/dist/components/KForm.vue.d.ts +12 -6
- package/dist/components/{KForm.js → KForm.vue.js} +2 -2
- package/dist/components/KForm.vue_vue_type_script_setup_true_lang.js +31 -15
- package/dist/components/KFormField.vue.d.ts +3 -2
- package/dist/components/{KFormField.js → KFormField.vue.js} +2 -2
- package/dist/components/KFormField.vue_vue_type_script_setup_true_lang.js +41 -28
- package/dist/components/KGrid.vue.d.ts +29 -0
- package/dist/components/KGrid.vue.js +7 -0
- package/dist/components/KGrid.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/KGridItem.vue.d.ts +20 -0
- package/dist/components/KGridItem.vue.js +7 -0
- package/dist/components/KGridItem.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/components/KIcon.vue.d.ts +22 -0
- package/dist/components/KIcon.vue.js +7 -0
- package/dist/components/KIcon.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/KImage.vue.d.ts +3 -3
- package/dist/components/{KImage.js → KImage.vue.js} +1 -1
- package/dist/components/KImage.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/{KImageViewer.js → KImageViewer.vue.js} +1 -1
- package/dist/components/KInput.vue.d.ts +11 -5
- package/dist/components/{KInput.js → KInput.vue.js} +2 -2
- package/dist/components/KInput.vue_vue_type_script_setup_true_lang.js +62 -38
- package/dist/components/KInputNumber.vue.d.ts +18 -4
- package/dist/components/{KInputNumber.js → KInputNumber.vue.js} +2 -2
- package/dist/components/KInputNumber.vue_vue_type_script_setup_true_lang.js +80 -62
- package/dist/components/KLayout.vue.d.ts +19 -0
- package/dist/components/KLayout.vue.js +7 -0
- package/dist/components/KLayout.vue_vue_type_script_setup_true_lang.js +14 -0
- package/dist/components/KLayoutContent.vue.d.ts +17 -0
- package/dist/components/KLayoutContent.vue.js +7 -0
- package/dist/components/KLayoutContent.vue_vue_type_script_setup_true_lang.js +11 -0
- package/dist/components/KLayoutHeader.vue.d.ts +19 -0
- package/dist/components/KLayoutHeader.vue.js +7 -0
- package/dist/components/KLayoutHeader.vue_vue_type_script_setup_true_lang.js +14 -0
- package/dist/components/KLayoutSider.vue.d.ts +28 -0
- package/dist/components/KLayoutSider.vue.js +7 -0
- package/dist/components/KLayoutSider.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/KList.vue.d.ts +24 -0
- package/dist/components/KList.vue.js +7 -0
- package/dist/components/KList.vue_vue_type_script_setup_true_lang.js +39 -0
- package/dist/components/KListItem.vue.d.ts +17 -0
- package/dist/components/KListItem.vue.js +7 -0
- package/dist/components/KListItem.vue_vue_type_script_setup_true_lang.js +22 -0
- package/dist/components/{KLoadingOverlay.js → KLoadingOverlay.vue.js} +1 -1
- package/dist/components/KMention.vue.d.ts +27 -0
- package/dist/components/KMention.vue.js +8 -0
- package/dist/components/KMention.vue_vue_type_script_setup_true_lang.js +73 -0
- package/dist/components/KMenu.vue.d.ts +30 -0
- package/dist/components/KMenu.vue.js +9 -0
- package/dist/components/KMenu.vue_vue_type_script_setup_true_lang.js +134 -0
- package/dist/components/KMenuItem.vue.d.ts +10 -0
- package/dist/components/KMenuItem.vue.js +7 -0
- package/dist/components/KMenuItem.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/components/KMessage.js +1 -1
- package/dist/components/{KMessageContainer.js → KMessageContainer.vue.js} +1 -1
- package/dist/components/KNotification.d.ts +36 -0
- package/dist/components/KNotification.js +55 -0
- package/dist/components/KNotificationContainer.vue.d.ts +20 -0
- package/dist/components/KNotificationContainer.vue.js +7 -0
- package/dist/components/KNotificationContainer.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/components/KNotificationProvider.vue.d.ts +13 -0
- package/dist/components/KNotificationProvider.vue.js +10 -0
- package/dist/components/KNumberAnimation.vue.d.ts +33 -0
- package/dist/components/KNumberAnimation.vue.js +7 -0
- package/dist/components/KNumberAnimation.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/components/{KPagination.js → KPagination.vue.js} +1 -1
- package/dist/components/KPopconfirm.vue.d.ts +46 -0
- package/dist/components/KPopconfirm.vue.js +6 -0
- package/dist/components/KPopconfirm.vue_vue_type_script_setup_true_lang.js +81 -0
- package/dist/components/KPopover.vue.d.ts +1 -1
- package/dist/components/{KPopover.js → KPopover.vue.js} +1 -1
- package/dist/components/KProgress.vue.d.ts +3 -2
- package/dist/components/{KProgress.js → KProgress.vue.js} +2 -2
- package/dist/components/KProgress.vue_vue_type_script_setup_true_lang.js +23 -20
- package/dist/components/KRadio.vue.d.ts +4 -2
- package/dist/components/{KRadio.js → KRadio.vue.js} +2 -2
- package/dist/components/KRadio.vue_vue_type_script_setup_true_lang.js +24 -11
- package/dist/components/KRadioGroup.vue.d.ts +3 -0
- package/dist/components/{KRadioGroup.js → KRadioGroup.vue.js} +2 -2
- package/dist/components/KRadioGroup.vue_vue_type_script_setup_true_lang.js +17 -12
- package/dist/components/KRate.vue.d.ts +25 -0
- package/dist/components/KRate.vue.js +7 -0
- package/dist/components/KRate.vue_vue_type_script_setup_true_lang.js +77 -0
- package/dist/components/{KResizablePanel.js → KResizablePanel.vue.js} +1 -1
- package/dist/components/{KResult.js → KResult.vue.js} +1 -1
- package/dist/components/KSelect.vue.d.ts +10 -3
- package/dist/components/{KSelect.js → KSelect.vue.js} +4 -4
- package/dist/components/KSelect.vue_vue_type_script_setup_true_lang.js +89 -48
- package/dist/components/{KSkeleton.js → KSkeleton.vue.js} +1 -1
- package/dist/components/KSlider.vue.d.ts +24 -0
- package/dist/components/KSlider.vue.js +7 -0
- package/dist/components/KSlider.vue_vue_type_script_setup_true_lang.js +82 -0
- package/dist/components/KSpace.vue.d.ts +32 -0
- package/dist/components/KSpace.vue.js +7 -0
- package/dist/components/KSpace.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/KSpin.vue.d.ts +23 -0
- package/dist/components/KSpin.vue.js +7 -0
- package/dist/components/KSpin.vue_vue_type_script_setup_true_lang.js +35 -0
- package/dist/components/KStatistic.vue.d.ts +23 -0
- package/dist/components/KStatistic.vue.js +7 -0
- package/dist/components/KStatistic.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/KSteps.vue.d.ts +1 -1
- package/dist/components/{KSteps.js → KSteps.vue.js} +1 -1
- package/dist/components/KSwitch.vue.d.ts +2 -2
- package/dist/components/{KSwitch.js → KSwitch.vue.js} +2 -2
- package/dist/components/KSwitch.vue_vue_type_script_setup_true_lang.js +12 -11
- package/dist/components/KTabs.vue.d.ts +10 -5
- package/dist/components/{KTabs.js → KTabs.vue.js} +2 -2
- package/dist/components/KTabs.vue_vue_type_script_setup_true_lang.js +31 -21
- package/dist/components/KTag.vue.d.ts +3 -3
- package/dist/components/{KTag.js → KTag.vue.js} +2 -2
- package/dist/components/KTag.vue_vue_type_script_setup_true_lang.js +14 -13
- package/dist/components/KText.vue.d.ts +26 -0
- package/dist/components/KText.vue.js +7 -0
- package/dist/components/KText.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/KTextarea.vue.d.ts +17 -2
- package/dist/components/{KTextarea.js → KTextarea.vue.js} +2 -2
- package/dist/components/KTextarea.vue_vue_type_script_setup_true_lang.js +51 -22
- package/dist/components/{KThemeToggleButton.js → KThemeToggleButton.vue.js} +1 -1
- package/dist/components/KTime.vue.d.ts +14 -0
- package/dist/components/KTime.vue.js +7 -0
- package/dist/components/KTime.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/components/KTimePicker.vue.d.ts +19 -0
- package/dist/components/KTimePicker.vue.js +8 -0
- package/dist/components/KTimePicker.vue_vue_type_script_setup_true_lang.js +116 -0
- package/dist/components/KTimeline.vue.d.ts +13 -0
- package/dist/components/KTimeline.vue.js +7 -0
- package/dist/components/KTimeline.vue_vue_type_script_setup_true_lang.js +10 -0
- package/dist/components/KTimelineItem.vue.d.ts +29 -0
- package/dist/components/KTimelineItem.vue.js +7 -0
- package/dist/components/KTimelineItem.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/{KTooltip.js → KTooltip.vue.js} +1 -1
- package/dist/components/KTransfer.vue.d.ts +24 -0
- package/dist/components/KTransfer.vue.js +7 -0
- package/dist/components/KTransfer.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/components/{KTreeNode.js → KTreeNode.vue.js} +1 -1
- package/dist/components/KTreeSelect.vue.d.ts +22 -0
- package/dist/components/KTreeSelect.vue.js +8 -0
- package/dist/components/KTreeSelect.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/components/{KTreeView.js → KTreeView.vue.js} +1 -1
- package/dist/components/KTreeView.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/KTypography.vue.d.ts +13 -0
- package/dist/components/KTypography.vue.js +7 -0
- package/dist/components/KTypography.vue_vue_type_script_setup_true_lang.js +10 -0
- package/dist/components/KUpload.vue.d.ts +100 -4
- package/dist/components/{KUpload.js → KUpload.vue.js} +2 -2
- package/dist/components/KUpload.vue_vue_type_script_setup_true_lang.js +189 -94
- package/dist/components/KUploadDragger.vue.d.ts +13 -0
- package/dist/components/KUploadDragger.vue.js +7 -0
- package/dist/components/KUploadDragger.vue_vue_type_script_setup_true_lang.js +12 -0
- package/dist/components/{KVirtualList.js → KVirtualList.vue.js} +1 -1
- package/dist/components/KWatermark.vue.d.ts +27 -0
- package/dist/components/KWatermark.vue.js +7 -0
- package/dist/components/KWatermark.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/form-context.d.ts +7 -3
- package/dist/components/list-context.d.ts +6 -0
- package/dist/components/list-context.js +4 -0
- package/dist/components/menu-context.d.ts +26 -0
- package/dist/components/menu-context.js +4 -0
- package/dist/components/radio-context.d.ts +6 -0
- package/dist/components/radio-context.js +4 -0
- package/dist/components/upload-context.d.ts +6 -0
- package/dist/components/upload-context.js +4 -0
- package/dist/index.d.ts +60 -3
- package/dist/index.js +104 -55
- package/dist/k-ui.css +1 -1
- package/package.json +6 -12
- /package/dist/components/{KEmpty.js → KEmpty.vue.js} +0 -0
- /package/dist/components/{KGridSkeleton.js → KGridSkeleton.vue.js} +0 -0
- /package/dist/components/{KListSkeleton.js → KListSkeleton.vue.js} +0 -0
- /package/dist/components/{KRefetchOverlay.js → KRefetchOverlay.vue.js} +0 -0
- /package/dist/components/{KSearchBar.js → KSearchBar.vue.js} +0 -0
package/README.md
CHANGED
|
@@ -1,44 +1,46 @@
|
|
|
1
1
|
# k-ui
|
|
2
2
|
|
|
3
|
-
一套可复用的 Vue 3 组件库(K 前缀),基于 reka-ui(headless)+ Tailwind v4
|
|
3
|
+
一套可复用的 Vue 3 组件库(K 前缀),基于 reka-ui(headless)+ Tailwind v4 设计令牌。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 安装
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @guoyg578/k-ui
|
|
9
|
+
# 必需 peer 依赖
|
|
10
|
+
pnpm add vue reka-ui lucide-vue-next
|
|
11
|
+
# 可选:仅用到 KDatePicker 时
|
|
12
|
+
pnpm add @vuepic/vue-datepicker date-fns
|
|
13
|
+
```
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
- **选择**:`KSelect` · `KCombobox`(可搜索+多选)· `KDatePicker`
|
|
11
|
-
- **表单**:`KSwitch` · `KCheckbox`(+`KCheckboxGroup`) · `KRadio`(+`KRadioGroup`) · `KForm` · `KFormField`
|
|
12
|
-
- **反馈 / 弹层**:`KConfirmDialog` · `KDialog` · `KDrawer` · `KTooltip` · `KAlert` · `KMessage`(函数式 toast)
|
|
13
|
-
- **数据展示**:`KDataTable` · `KPagination` · `KEmpty` · `KLoadingOverlay` · `KRefetchOverlay` · `KProgress` · `KAvatar`(+`KAvatarGroup`)
|
|
14
|
-
- **骨架屏**:`KSkeleton` · `KListSkeleton` · `KGridSkeleton`
|
|
15
|
-
- **导航**:`KTabs` · `KBreadcrumb`
|
|
16
|
-
- **容器**:`KCard` · `KResult` · `KSteps`
|
|
17
|
-
- **媒体**:`KImage` · `KImageViewer` · `KUpload`
|
|
18
|
-
- **高级**:`KCommandPalette`(Cmd+K)· `KVirtualList` · `KResizablePanel` · `KTreeView` · `KDiff`(LCS 文本对比)
|
|
19
|
-
- **主题**:`KThemeToggleButton`(**无状态**,`v-model:mode`,状态由宿主管理)
|
|
20
|
-
- **指令**:`v-reveal`(滚动入场)/ `v-spotlight`(鼠标跟随光晕),需 `installDirectives(app)`
|
|
15
|
+
> 需要 **Tailwind v4**:组件大量使用工具类(`bg-ink-200` / `text-brand-500` / `size-4` …),这些类必须由你项目自己的 Tailwind 生成。
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
## 引入样式 ⚠️ 最关键
|
|
23
18
|
|
|
24
|
-
|
|
19
|
+
在全局 CSS 入口(即 `@import "tailwindcss"` 所在文件):
|
|
25
20
|
|
|
26
|
-
|
|
21
|
+
```css
|
|
22
|
+
@import "tailwindcss";
|
|
27
23
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
/* 设计令牌 + 组件基础类(含 @theme / @layer,必须交给 Tailwind 处理)*/
|
|
25
|
+
@import "@guoyg578/k-ui/styles/tokens.css";
|
|
26
|
+
@import "@guoyg578/k-ui/styles/components.css";
|
|
27
|
+
|
|
28
|
+
/* 已编译的组件作用域样式(纯 CSS,含弹层 menu / 日期选择器样式)*/
|
|
29
|
+
@import "@guoyg578/k-ui/css";
|
|
30
|
+
|
|
31
|
+
/* ⚠️ 让 Tailwind 扫描 k-ui 产物里出现的工具类,否则颜色/间距全部散架。
|
|
32
|
+
路径相对本 CSS 文件,按你的目录层级调整到 node_modules。 */
|
|
33
|
+
@source "../../node_modules/@guoyg578/k-ui/dist";
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
> - Tailwind v4 默认**不扫描 node_modules**,`@source` 那一行必不可少。
|
|
37
|
+
> - 暗色模式:`tokens.css` 自带 `:root[data-theme="dark"]` 覆盖,设 `<html data-theme="dark">` 即生效;不设则保持亮色。
|
|
36
38
|
|
|
37
39
|
## 快速上手
|
|
38
40
|
|
|
39
41
|
```vue
|
|
40
42
|
<script setup lang="ts">
|
|
41
|
-
import { KButton, KDialog, KMessage } from '
|
|
43
|
+
import { KButton, KDialog, KMessage } from '@guoyg578/k-ui'
|
|
42
44
|
import { ref } from 'vue'
|
|
43
45
|
const open = ref(false)
|
|
44
46
|
</script>
|
|
@@ -51,9 +53,53 @@ const open = ref(false)
|
|
|
51
53
|
</template>
|
|
52
54
|
```
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
- `KConfirmDialog`(配 `useConfirm`):在根组件挂一次 `<KConfirmDialog />`。
|
|
57
|
+
- `v-reveal` / `v-spotlight` 指令:`import { installDirectives } from '@guoyg578/k-ui'` 后 `installDirectives(app)`。
|
|
58
|
+
- `KMessage`(函数式 toast)开箱即用,首次调用自动挂载容器。
|
|
59
|
+
|
|
60
|
+
## 组件清单(70+,对标 naive-ui 常用组件)
|
|
61
|
+
|
|
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
|
+
- **骨架屏**:`KSkeleton` · `KListSkeleton` · `KGridSkeleton`
|
|
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`
|
|
73
|
+
- **高级**:`KCommandPalette`(Cmd+K)· `KVirtualList` · `KResizablePanel` · `KTreeView` · `KDiff`(LCS 文本对比)
|
|
74
|
+
- **主题**:`KThemeToggleButton`(**无状态**,`v-model:mode`,状态由宿主管理)
|
|
75
|
+
- **指令**:`v-reveal`(滚动入场)/ `v-spotlight`(鼠标跟随光晕),需 `installDirectives(app)`
|
|
76
|
+
|
|
77
|
+
辅助导出:`useConfirm()`、`KMessage`、`installDirectives`、类型 `ConfirmOptions` / `ThemeMode` / `FormRule` / `FormFieldRef` / `TreeNode` / `CmdItem` / `UploadFile` / `MessageOptions`。
|
|
78
|
+
|
|
79
|
+
## 依赖(peer dependencies)
|
|
80
|
+
|
|
81
|
+
| 依赖 | 用途 |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `vue` ^3.5 | 运行时 |
|
|
84
|
+
| `reka-ui` ^2 | 大量 headless 组件(Dialog / Select / Tooltip / Tabs …) |
|
|
85
|
+
| `lucide-vue-next` ^1 | 图标 |
|
|
86
|
+
| **Tailwind v4** | 工具类 + 设计令牌(`tokens.css` / `components.css`) |
|
|
87
|
+
| `@vuepic/vue-datepicker` + `date-fns` | **可选** —— 仅 `KDatePicker` 用到(v13 依赖 date-fns 的 zhCN locale) |
|
|
88
|
+
|
|
89
|
+
> 本库**不依赖任何路由库**。`KBreadcrumb` 的链接项渲染为原生 `<a href>`,点击派发 `item-click` 事件,由宿主自行导航(如 `router.push`)。
|
|
90
|
+
|
|
91
|
+
## 排错速查
|
|
92
|
+
|
|
93
|
+
| 现象 | 原因 | 解决 |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| 颜色全是默认 / 输入框无边框 / 骨架屏不动 | 漏了引入样式 | 引入 `tokens.css` + `components.css` + `css` |
|
|
96
|
+
| 工具类(`size-4`、`rounded-lg`)不生效 | 缺 `@source`,或项目不是 Tailwind v4 | 加 `@source ".../@guoyg578/k-ui/dist"`,接入 Tailwind v4 |
|
|
97
|
+
| 切换主题按钮点了没反应 | `KThemeToggleButton` 无状态 | 接 `v-model:mode` 并自行应用 `data-theme` |
|
|
98
|
+
| 暗色模式不生效 | 没设 `<html data-theme="dark">` | 自己控制该属性 |
|
|
99
|
+
| `KConfirmDialog` 不弹出 | 没在根组件挂载,或挂了多个 | 全局只挂一个 `<KConfirmDialog />` |
|
|
100
|
+
| 图标不显示 | 没装 `lucide-vue-next` | `pnpm add lucide-vue-next` |
|
|
55
101
|
|
|
56
102
|
## 备注
|
|
57
103
|
|
|
58
104
|
- 文案中文硬编码(「搜索」「确定」「暂无数据」等),需 i18n 自行替换。
|
|
59
|
-
-
|
|
105
|
+
- CSS 类与设计令牌统一用 `k-` 前缀(`k-input` / `--k-surface` …),与宿主项目自有样式一般不冲突。
|
|
@@ -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 };
|
|
@@ -26,8 +26,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
26
26
|
onClose?: (() => any) | undefined;
|
|
27
27
|
}>, {
|
|
28
28
|
type: AlertType;
|
|
29
|
-
closable: boolean;
|
|
30
29
|
variant: "tint" | "outline";
|
|
30
|
+
closable: boolean;
|
|
31
31
|
icon: boolean;
|
|
32
32
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
33
33
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
2
|
import t from "./KAlert.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
//#region components/KAlert.vue
|
|
5
|
-
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-
|
|
5
|
+
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-e5ce1f58"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { n as default };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { computed as e, createBlock as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, createVNode as o, defineComponent as s,
|
|
2
|
-
import { AlertCircle as
|
|
1
|
+
import { computed as e, createBlock as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createTextVNode as a, createVNode as o, defineComponent as s, getCurrentInstance as c, normalizeClass as l, openBlock as u, ref as d, renderSlot as f, resolveDynamicComponent as p, toDisplayString as m, unref as h, watch as g } from "vue";
|
|
2
|
+
import { AlertCircle as _, AlertTriangle as v, CheckCircle2 as y, Info as b, X as x } from "lucide-vue-next";
|
|
3
3
|
//#region components/KAlert.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
-
var
|
|
4
|
+
var S = { class: "k-alert__body" }, C = {
|
|
5
5
|
key: 0,
|
|
6
6
|
class: "k-alert__title"
|
|
7
|
-
},
|
|
7
|
+
}, w = {
|
|
8
8
|
key: 1,
|
|
9
9
|
class: "k-alert__desc"
|
|
10
|
-
},
|
|
10
|
+
}, T = {
|
|
11
11
|
key: 2,
|
|
12
12
|
class: "k-alert__actions"
|
|
13
|
-
},
|
|
13
|
+
}, E = /* @__PURE__ */ s({
|
|
14
14
|
__name: "KAlert",
|
|
15
15
|
props: {
|
|
16
16
|
type: { default: "info" },
|
|
@@ -28,49 +28,52 @@ var x = { class: "k-alert__body" }, S = {
|
|
|
28
28
|
modelValue: { type: Boolean }
|
|
29
29
|
},
|
|
30
30
|
emits: ["update:modelValue", "close"],
|
|
31
|
-
setup(s, { emit:
|
|
32
|
-
let
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
setup(s, { emit: E }) {
|
|
32
|
+
let D = s, O = E, k = c(), A = e(() => {
|
|
33
|
+
let e = k?.vnode.props ?? {};
|
|
34
|
+
return "modelValue" in e || "model-value" in e;
|
|
35
|
+
}), j = d(!0);
|
|
36
|
+
g(() => [
|
|
37
|
+
D.type,
|
|
38
|
+
D.title,
|
|
39
|
+
D.description
|
|
37
40
|
], () => {
|
|
38
|
-
|
|
41
|
+
A.value || (j.value = !0);
|
|
39
42
|
});
|
|
40
|
-
let
|
|
41
|
-
function
|
|
42
|
-
|
|
43
|
+
let M = e(() => A.value ? D.modelValue : j.value);
|
|
44
|
+
function N() {
|
|
45
|
+
A.value ? O("update:modelValue", !1) : j.value = !1, O("close");
|
|
43
46
|
}
|
|
44
|
-
let
|
|
45
|
-
info:
|
|
46
|
-
success:
|
|
47
|
-
warning:
|
|
48
|
-
error:
|
|
47
|
+
let P = {
|
|
48
|
+
info: b,
|
|
49
|
+
success: y,
|
|
50
|
+
warning: v,
|
|
51
|
+
error: _
|
|
49
52
|
};
|
|
50
|
-
return (e,
|
|
53
|
+
return (e, c) => M.value ? (u(), r("div", {
|
|
51
54
|
key: 0,
|
|
52
|
-
class:
|
|
55
|
+
class: l(["k-alert", [`k-alert--${s.type}`, `k-alert--${s.variant}`]]),
|
|
53
56
|
role: "alert"
|
|
54
57
|
}, [
|
|
55
|
-
s.icon ? (
|
|
58
|
+
s.icon ? (u(), t(p(P[s.type]), {
|
|
56
59
|
key: 0,
|
|
57
60
|
size: 16,
|
|
58
61
|
class: "k-alert__icon"
|
|
59
62
|
})) : n("", !0),
|
|
60
|
-
i("div",
|
|
61
|
-
s.title || e.$slots.title ? (
|
|
62
|
-
s.description || e.$slots.default ? (
|
|
63
|
-
e.$slots.actions ? (
|
|
63
|
+
i("div", S, [
|
|
64
|
+
s.title || e.$slots.title ? (u(), r("div", C, [f(e.$slots, "title", {}, () => [a(m(s.title), 1)], !0)])) : n("", !0),
|
|
65
|
+
s.description || e.$slots.default ? (u(), r("div", w, [f(e.$slots, "default", {}, () => [a(m(s.description), 1)], !0)])) : n("", !0),
|
|
66
|
+
e.$slots.actions ? (u(), r("div", T, [f(e.$slots, "actions", {}, void 0, !0)])) : n("", !0)
|
|
64
67
|
]),
|
|
65
|
-
s.closable ? (
|
|
68
|
+
s.closable ? (u(), r("button", {
|
|
66
69
|
key: 1,
|
|
67
70
|
type: "button",
|
|
68
71
|
class: "k-alert__close",
|
|
69
72
|
"aria-label": "关闭",
|
|
70
|
-
onClick:
|
|
71
|
-
}, [o(
|
|
73
|
+
onClick: N
|
|
74
|
+
}, [o(h(x), { size: 14 })])) : n("", !0)
|
|
72
75
|
], 2)) : n("", !0);
|
|
73
76
|
}
|
|
74
77
|
});
|
|
75
78
|
//#endregion
|
|
76
|
-
export {
|
|
79
|
+
export { E 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 };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
2
|
import t from "./KAvatar.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
//#region components/KAvatar.vue
|
|
5
5
|
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-14ccf4af"]]);
|
|
6
6
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import e from "../_virtual/_plugin-vue_export-helper.js";
|
|
2
2
|
import t from "./KAvatarGroup.vue_vue_type_script_setup_true_lang.js";
|
|
3
|
-
/* empty css
|
|
3
|
+
/* empty css */
|
|
4
4
|
//#region components/KAvatarGroup.vue
|
|
5
5
|
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-00da4b72"]]);
|
|
6
6
|
//#endregion
|
|
@@ -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 };
|