├── .github ├── CODEOWNERS └── ISSUE_TEMPLATE │ ├── config.yml │ └── feature_request.yml ├── docs ├── content │ ├── blog │ │ └── .gitkeep │ ├── docs │ │ ├── .navigation.yml │ │ ├── 2.components │ │ │ ├── 1.basic │ │ │ │ ├── .navigation.yml │ │ │ │ ├── 06.image.md │ │ │ │ ├── 07.tag.md │ │ │ │ ├── 08.divider.md │ │ │ │ ├── 09.swiper.md │ │ │ │ └── 10.backdrop.md │ │ │ ├── 2.form │ │ │ │ ├── .navigation.yml │ │ │ │ ├── 12.pin-input.md │ │ │ │ └── 11.datetime-picker.md │ │ │ ├── 4.info │ │ │ │ ├── .navigation.yml │ │ │ │ ├── 02.item.md │ │ │ │ ├── 01.chip.md │ │ │ │ ├── 03.steps.md │ │ │ │ └── 04.timeline.md │ │ │ ├── 3.feedback │ │ │ │ ├── .navigation.yml │ │ │ │ ├── 06.alert.md │ │ │ │ ├── 08.notify.md │ │ │ │ ├── 04.countdown.md │ │ │ │ ├── 05.action-sheet.md │ │ │ │ └── 07.notice-bar.md │ │ │ ├── 5.navigation │ │ │ │ ├── .navigation.yml │ │ │ │ ├── 01.tabs.md │ │ │ │ ├── 05.dropdown.md │ │ │ │ ├── 02.accordion.md │ │ │ │ ├── 03.swipe-action.md │ │ │ │ └── 04.segment-group.md │ │ │ └── .navigation.yml │ │ ├── 1.guide │ │ │ ├── .navigation.yml │ │ │ └── 03.communication.md │ │ └── 3.customization │ │ │ ├── .navigation.yml │ │ │ ├── 03.override.md │ │ │ └── 02.shapes.md │ └── index.md ├── app │ └── app.config.ts ├── public │ ├── h5 │ │ └── assets │ │ │ ├── field.Ccjhm7Cj.js │ │ │ ├── form.pFMRjkfN.js │ │ │ ├── use-parent.Dwjp3nL8.js │ │ │ ├── pages-feedback-spinner-base.BvSLQE7B.js │ │ │ ├── pages-index.BnfB37j4.js │ │ │ ├── pages-form-switch-base.D788Y1aK.js │ │ │ ├── pages-feedback-spinner-size.DABq3-ws.js │ │ │ ├── sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js │ │ │ ├── pages-feedback-spinner-variant.DoDJrv1n.js │ │ │ ├── pages-form-input-base.C-_EgGEW.js │ │ │ ├── pages-basic-icon-base.BqrXquzt.js │ │ │ ├── pages-basic-button-base.Bp_CkWl2.js │ │ │ ├── pages-basic-button-full.KdS69rUB.js │ │ │ ├── pages-basic-overlay-default-value.D1Ca8K4Y.js │ │ │ ├── pages-basic-icon-size.DiD--8HK.js │ │ │ ├── pages-feedback-spinner-color.DI_Bfa4J.js │ │ │ ├── pages-basic-button-disabled.RoU3ivzb.js │ │ │ ├── pages-basic-badge-base.nbmX8Zb4.js │ │ │ ├── pages-basic-button-label.CIRCsIHk.js │ │ │ ├── pages-basic-badge-content.jqN32-il.js │ │ │ ├── pages-basic-button-custom.DBLk0LIs.js │ │ │ ├── pages-form-switch-controlled.CKmokLFE.js │ │ │ ├── pages-basic-button-size.FdJY-zOq.js │ │ │ ├── pages-form-switch-readonly.COX6Ttvr.js │ │ │ ├── pages-basic-button-variant.DKO_bNbt.js │ │ │ ├── pages-form-slider-base.pXSBwW3m.js │ │ │ ├── pages-basic-icon-name.CqhaV2Bn.js │ │ │ ├── pages-form-slider-controlled.Ca2NgU7a.js │ │ │ ├── pages-form-input-controlled.WtlUxHSd.js │ │ │ ├── pages-basic-icon-color.Dw4y-C2Y.js │ │ │ ├── pages-basic-badge-boundless.BcYVmhQr.js │ │ │ ├── pages-form-input-maxlength.BZKasji5.js │ │ │ ├── pages-form-input-placeholder.18cNijLU.js │ │ │ ├── pages-basic-button-color.Bi8SAkv_.js │ │ │ ├── pages-form-textarea-base.4gTXFkSR.js │ │ │ ├── pages-basic-button-radius.BExQJWyU.js │ │ │ ├── pages-basic-roller-base.BMaJA7Ln.js │ │ │ ├── pages-form-checkbox-controlled.2xiR8U5k.js │ │ │ ├── pages-form-field-base.CoKuKSOu.js │ │ │ ├── pages-form-field-name.DHj90w9T.js │ │ │ ├── pages-form-textarea-placeholder.DP10FOUq.js │ │ │ ├── pages-form-number-input-base.dqUfc0Xo.js │ │ │ ├── pages-form-number-input-placeholder.DDdwyAft.js │ │ │ ├── pages-form-textarea-clearable.BBAuaRTu.js │ │ │ ├── pages-form-input-counter.DTpij4n2.js │ │ │ ├── use-provide.B_f5e336.js │ │ │ ├── pages-form-slider-disabled.COD3mkMX.js │ │ │ ├── pages-form-slider-show-value.DRlKRUpg.js │ │ │ ├── pages-basic-badge-shape.4VVoLC-C.js │ │ │ ├── pages-form-radio-base.CMCuyiQ-.js │ │ │ ├── pages-form-switch-icon.BtQQBAQR.js │ │ │ ├── pages-form-textarea-maxlength.CyMmKvkT.js │ │ │ ├── pages-basic-badge-size.5_2sacSf.js │ │ │ ├── pages-basic-badge-standalone.BGA-QI29.js │ │ │ ├── pages-form-textarea-readonly.Djsf_Ndf.js │ │ │ ├── pages-form-number-input-formatter.C7QEO9tk.js │ │ │ ├── pages-form-input-disabled.hwOqNwZO.js │ │ │ ├── pages-form-textarea-auto-height.CFRLzz9B.js │ │ │ ├── pages-basic-overlay-base.DYOm_8Gi.js │ │ │ ├── pages-form-input-password.BuLPi8ek.js │ │ │ ├── pages-form-input-readonly.Nh0jwgcG.js │ │ │ ├── pages-form-radio-group-controlled.dcFn2fab.js │ │ │ ├── pages-form-textarea-controlled.DITWlLR3.js │ │ │ ├── pages-basic-badge-custom.f5ldkF4L.js │ │ │ ├── pages-form-form-base.LabTlXiN.js │ │ │ ├── pages-form-radio-disabled.BFOswv4T.js │ │ │ ├── pages-form-radio-label.CzgzjUio.js │ │ │ ├── pages-form-field-required.Ccx7ByCv.js │ │ │ ├── pages-form-switch-disabled.Anw5cOVK.js │ │ │ ├── pages-basic-overlay-controlled.CkE0xeX2.js │ │ │ ├── pages-form-picker-base.KoU-h6oc.js │ │ │ ├── pages-form-radio-group-size.C8xjCKJ8.js │ │ │ ├── pages-basic-button-loading.CXMyPhzg.js │ │ │ ├── pages-form-checkbox-indeterminate.Ga-XS3mq.js │ │ │ ├── pages-form-number-input-step.DJvB1fkP.js │ │ │ ├── pages-form-radio-orientation.CxNY4EXB.js │ │ │ ├── pages-form-radio-group-disabled.Coexfx6C.js │ │ │ ├── pages-form-checkbox-label.C6UrvSi2.js │ │ │ ├── pages-form-radio-size.Ce98ny4p.js │ │ │ ├── pages-form-textarea-disabled.DrcqtkCI.js │ │ │ ├── pages-form-number-input-disabled.COFq54Lf.js │ │ │ ├── pages-form-number-input-readonly.DYV4a34J.js │ │ │ ├── pages-feedback-toast-base.CLH7sy6b.js │ │ │ ├── pages-form-number-input-min-max.B3oNLPcO.js │ │ │ ├── pages-form-checkbox-group-controlled.uQA66h7U.js │ │ │ ├── pages-form-number-input-step-strictly.QGnPJOOK.js │ │ │ ├── pages-form-radio-value.DqkTYEZ4.js │ │ │ ├── pages-feedback-toast-controlled.PXcaDosv.js │ │ │ ├── pages-basic-badge-placement.CEzxWa3w.js │ │ │ ├── pages-form-textarea-show-count.GLG-rQVX.js │ │ │ ├── pages-form-checkbox-value.gSx0nIJc.js │ │ │ ├── pages-feedback-toast-closable.BaiQ8ZWH.js │ │ │ ├── pages-form-slider-size.C44nbCpI.js │ │ │ ├── pages-feedback-toast-backdrop.CpU5F9pt.js │ │ │ ├── pages-form-form-size.D37MClCh.js │ │ │ ├── pages-form-input-custom.Cav57aOU.js │ │ │ ├── pages-form-input-type.DhFpkWlf.js │ │ │ ├── pages-form-input-size.CCQUkJN3.js │ │ │ ├── pages-form-radio-group-color.PAvB4U0C.js │ │ │ ├── pages-form-switch-size.WKP7ptvL.js │ │ │ ├── pages-form-checkbox-orientation.D0T7Spd2.js │ │ │ ├── pages-form-form-orientation.CJuAWtKz.js │ │ │ ├── pages-basic-button-icon.DQ0Cb55H.js │ │ │ ├── pages-basic-overlay-dismissable.CfqlWpm7.js │ │ │ ├── pages-basic-overlay-backdrop.DQvybdHq.js │ │ │ ├── pages-form-checkbox-group-size.WvMwHsAC.js │ │ │ ├── pages-form-radio-color.AlpZLQ7L.js │ │ │ ├── pages-form-checkbox-size.DJsMkwl-.js │ │ │ ├── pages-form-form-label-width.B4ZYotZl.js │ │ │ ├── pages-form-picker-controlled.CUWz42KD.js │ │ │ ├── pages-basic-badge-color.BYprcV88.js │ │ │ ├── pages-basic-badge-hidden.DEkpZRzM.js │ │ │ └── pages-form-checkbox-group-color.BIJxMBuE.js │ ├── favicon.ico │ ├── og-image.png │ ├── avatar │ │ └── skiyee.png │ ├── _robots.txt │ ├── qrcode │ │ └── group_1.jpg │ ├── _headers │ ├── logo-dark.svg │ └── logo-light.svg ├── tsconfig.json └── nuxt.config.ts ├── examples └── uni │ ├── src │ ├── composables │ │ └── useColorMode.ts │ ├── pages-form │ │ ├── switch │ │ │ ├── base.vue │ │ │ ├── controlled.vue │ │ │ ├── readonly.vue │ │ │ ├── icon.vue │ │ │ ├── disabled.vue │ │ │ ├── size.vue │ │ │ ├── color.vue │ │ │ └── loading.vue │ │ ├── input │ │ │ ├── base.vue │ │ │ ├── controlled.vue │ │ │ ├── placeholder.vue │ │ │ ├── maxlength.vue │ │ │ ├── disabled.vue │ │ │ ├── readonly.vue │ │ │ ├── counter.vue │ │ │ ├── type.vue │ │ │ ├── size.vue │ │ │ ├── password.vue │ │ │ └── custom.vue │ │ ├── field │ │ │ ├── base.vue │ │ │ ├── name.vue │ │ │ ├── required.vue │ │ │ ├── label-width.vue │ │ │ ├── disabled.vue │ │ │ ├── label.vue │ │ │ ├── description.vue │ │ │ └── size.vue │ │ ├── slider │ │ │ ├── base.vue │ │ │ ├── controlled.vue │ │ │ ├── disabled.vue │ │ │ ├── show-value.vue │ │ │ ├── size.vue │ │ │ ├── color.vue │ │ │ ├── formatter.vue │ │ │ ├── step.vue │ │ │ └── min-max.vue │ │ ├── checkbox │ │ │ ├── controlled.vue │ │ │ ├── group-controlled.vue │ │ │ ├── indeterminate.vue │ │ │ ├── label.vue │ │ │ ├── value.vue │ │ │ ├── orientation.vue │ │ │ ├── size.vue │ │ │ ├── group-size.vue │ │ │ ├── base.vue │ │ │ ├── group-color.vue │ │ │ ├── group-disabled.vue │ │ │ ├── disabled.vue │ │ │ └── color.vue │ │ ├── textarea │ │ │ ├── base.vue │ │ │ ├── placeholder.vue │ │ │ ├── clearable.vue │ │ │ ├── maxlength.vue │ │ │ ├── readonly.vue │ │ │ ├── auto-height.vue │ │ │ ├── controlled.vue │ │ │ ├── disabled.vue │ │ │ ├── show-count.vue │ │ │ └── size.vue │ │ ├── form │ │ │ ├── base.vue │ │ │ ├── size.vue │ │ │ ├── orientation.vue │ │ │ ├── label-width.vue │ │ │ ├── values.vue │ │ │ ├── schema-zod.vue │ │ │ ├── schema-arktype.vue │ │ │ └── disabled.vue │ │ ├── number-input │ │ │ ├── base.vue │ │ │ ├── placeholder.vue │ │ │ ├── step.vue │ │ │ ├── formatter.vue │ │ │ ├── disabled.vue │ │ │ ├── readonly.vue │ │ │ ├── min-max.vue │ │ │ ├── step-strictly.vue │ │ │ └── size.vue │ │ ├── radio │ │ │ ├── base.vue │ │ │ ├── group-controlled.vue │ │ │ ├── disabled.vue │ │ │ ├── label.vue │ │ │ ├── group-size.vue │ │ │ ├── group-disabled.vue │ │ │ ├── orientation.vue │ │ │ ├── size.vue │ │ │ ├── value.vue │ │ │ ├── group-color.vue │ │ │ └── color.vue │ │ └── picker │ │ │ ├── base.vue │ │ │ ├── controlled.vue │ │ │ ├── disabled.vue │ │ │ ├── item-height.vue │ │ │ └── multi-column.vue │ ├── pages-basic │ │ ├── button │ │ │ ├── base.vue │ │ │ ├── full.vue │ │ │ ├── label.vue │ │ │ ├── disabled.vue │ │ │ ├── custom.vue │ │ │ ├── size.vue │ │ │ ├── variant.vue │ │ │ ├── color.vue │ │ │ ├── radius.vue │ │ │ ├── loading.vue │ │ │ └── icon.vue │ │ ├── badge │ │ │ ├── base.vue │ │ │ ├── content.vue │ │ │ ├── shape.vue │ │ │ ├── custom.vue │ │ │ ├── standalone.vue │ │ │ ├── boundless.vue │ │ │ ├── size.vue │ │ │ ├── hidden.vue │ │ │ ├── placement.vue │ │ │ └── color.vue │ │ ├── overlay │ │ │ ├── default-value.vue │ │ │ ├── base.vue │ │ │ ├── controlled.vue │ │ │ ├── dismissable.vue │ │ │ ├── backdrop.vue │ │ │ └── z-index.vue │ │ ├── icon │ │ │ ├── base.vue │ │ │ ├── size.vue │ │ │ ├── color.vue │ │ │ └── name.vue │ │ └── roller │ │ │ ├── base.vue │ │ │ ├── controlled.vue │ │ │ ├── disabled.vue │ │ │ ├── item-height.vue │ │ │ └── visible-count.vue │ ├── pages-feedback │ │ ├── spinner │ │ │ ├── base.vue │ │ │ ├── size.vue │ │ │ ├── variant.vue │ │ │ └── color.vue │ │ ├── toast │ │ │ ├── base.vue │ │ │ ├── controlled.vue │ │ │ ├── closable.vue │ │ │ ├── backdrop.vue │ │ │ ├── custom.vue │ │ │ ├── message.vue │ │ │ └── placement.vue │ │ └── dialog │ │ │ ├── base.vue │ │ │ ├── dismissable.vue │ │ │ └── long-content.vue │ ├── App.ku.vue │ ├── pages │ │ └── index.vue │ ├── stores │ │ └── counter.ts │ ├── main.ts │ └── theme.json │ ├── uno.config.ts │ ├── tsconfig.json │ ├── pages.config.ts │ └── index.html ├── .npmrc ├── bump.config.ts ├── packages └── skiyee-uni-ui │ ├── src │ ├── utils │ │ ├── index.ts │ │ ├── is.ts │ │ ├── format.ts │ │ └── grammar.ts │ ├── composables │ │ └── index.ts │ ├── constants │ │ ├── index.ts │ │ ├── form.ts │ │ ├── field.ts │ │ ├── radio.ts │ │ ├── roller.ts │ │ └── checkbox.ts │ ├── types │ │ ├── common.ts │ │ ├── index.ts │ │ ├── roller.ts │ │ ├── radio.ts │ │ └── field.ts │ ├── components │ │ └── sk-uni.vue │ └── validator │ │ ├── index.ts │ │ └── schema.type.ts │ ├── uno.config.ts │ └── tsconfig.json ├── eslint.config.js ├── pnpm-workspace.yaml ├── .gitignore └── tsconfig.json /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @skiyee -------------------------------------------------------------------------------- /docs/content/blog/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/content/docs/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 文档 -------------------------------------------------------------------------------- /examples/uni/src/composables/useColorMode.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/app/app.config.ts: -------------------------------------------------------------------------------- 1 | export default defineAppConfig({}) 2 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/1.basic/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 基础组件 -------------------------------------------------------------------------------- /docs/content/docs/2.components/2.form/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 表单组件 -------------------------------------------------------------------------------- /docs/content/docs/2.components/4.info/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 信息组件 -------------------------------------------------------------------------------- /docs/content/docs/2.components/3.feedback/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 反馈组件 2 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/5.navigation/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 导航组件 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/field.Ccjhm7Cj.js: -------------------------------------------------------------------------------- 1 | const o=Symbol("sk-field");export{o as S}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/form.pFMRjkfN.js: -------------------------------------------------------------------------------- 1 | const o=Symbol("sk-form");export{o as S}; 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | strict-peer-dependencies=false -------------------------------------------------------------------------------- /docs/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skiyee/ui/HEAD/docs/public/favicon.ico -------------------------------------------------------------------------------- /docs/public/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skiyee/ui/HEAD/docs/public/og-image.png -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/base.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /docs/public/avatar/skiyee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skiyee/ui/HEAD/docs/public/avatar/skiyee.png -------------------------------------------------------------------------------- /docs/public/_robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | 4 | Sitemap: https://skiyee.js.org/sitemap.xml 5 | -------------------------------------------------------------------------------- /docs/public/qrcode/group_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skiyee/ui/HEAD/docs/public/qrcode/group_1.jpg -------------------------------------------------------------------------------- /docs/content/docs/1.guide/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 指南 2 | icon: i-lucide:rocket 3 | redirect: /docs/guide/introduction -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/base.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // https://nuxt.com/docs/guide/concepts/typescript 3 | "extends": "./.nuxt/tsconfig.json" 4 | } 5 | -------------------------------------------------------------------------------- /bump.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'bumpp' 2 | 3 | export default defineConfig({ 4 | tag: '@skiyee/uni-ui@v', 5 | }) 6 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 组件 2 | icon: i-lucide:shapes 3 | redirect: /docs/components/basic/button 4 | -------------------------------------------------------------------------------- /docs/content/docs/3.customization/.navigation.yml: -------------------------------------------------------------------------------- 1 | title: 定制 2 | icon: i-lucide:ferris-wheel 3 | redirect: /docs/customization/colors -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './format' 2 | export * from './grammar' 3 | export * from './physics' 4 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/spinner/base.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/base.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import { skiyee } from '@skiyee/eslint-config' 2 | 3 | export default skiyee({ 4 | vue: true, 5 | typescript: true, 6 | }) 7 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/full.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /examples/uni/src/App.ku.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/utils/is.ts: -------------------------------------------------------------------------------- 1 | export function isNil(value: unknown): value is null | undefined { 2 | return value === null || value === undefined 3 | } 4 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/base.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/content.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 🛠️ 技术问题咨询 4 | about: 需要技术指导请联系支持团队 5 | url: https://skiyee-ui.netlify.app/docs/guide/communication -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/label.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/base.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/custom.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/name.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/spinner/size.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/overlay/default-value.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/spinner/variant.vue: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/readonly.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/icon/base.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/size.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/base.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/base.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/variant.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/icon/size.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /examples/uni/src/pages/index.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/composables/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Composables 组合式函数模块 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | */ 8 | 9 | export { useParent } from './use-parent' 10 | export { useProvide } from './use-provide' 11 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - packages/* 3 | - examples/* 4 | - docs 5 | 6 | catalog: 7 | '@unocss/core': 66.0.0 8 | '@unocss/preset-icons': 66.0.0 9 | '@unocss/rule-utils': 66.0.0 10 | unocss: 66.0.0 11 | vite: 5.2.8 12 | vue: 3.4.21 13 | vue-tsc: 2.2.10 14 | -------------------------------------------------------------------------------- /docs/public/h5/assets/use-parent.Dwjp3nL8.js: -------------------------------------------------------------------------------- 1 | import{v as n,f as e,x as r,y as a,m as s}from"./index-CA6UagU_.js";function t(t){const i=n(t,null);if(!i)return{parent:i,index:e(-1)};const d=r(),{add:o,remove:x,children:f}=i;o(d),a(()=>x(d));return{parent:i,index:s(()=>f.indexOf(d))}}export{t as u}; 2 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/uno.config.ts: -------------------------------------------------------------------------------- 1 | import presetSkiyeeUI from '@skiyee/ui-preset' 2 | import { presetUni } from 'uni-unocss' 3 | import { defineConfig } from 'unocss' 4 | 5 | export default defineConfig({ 6 | presets: [ 7 | presetUni(), 8 | presetSkiyeeUI(), 9 | ], 10 | }) 11 | -------------------------------------------------------------------------------- /docs/nuxt.config.ts: -------------------------------------------------------------------------------- 1 | import process from 'node:process' 2 | 3 | export default defineNuxtConfig({ 4 | extends: [ 5 | ['github:skiyee/skdocs', { auth: process.env.GITHUB_TOKEN }], 6 | ], 7 | runtimeConfig: { 8 | public: { 9 | demo: 'bundle', 10 | }, 11 | }, 12 | }) 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/base.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /examples/uni/src/stores/counter.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | import { ref } from 'vue' 3 | 4 | export const useCounterStore = defineStore('counter', () => { 5 | const count = ref(0) 6 | function increment() { 7 | count.value++ 8 | } 9 | return { count, increment } 10 | }) 11 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/placeholder.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/placeholder.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/shape.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/base.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/placeholder.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/clearable.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /docs/content/docs/3.customization/03.override.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 样式覆写 3 | description: 覆写功能赋予组件库的生命活力以及定制化能力 4 | icon: i-lucide:paintbrush-vertical 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | --- 12 | 13 | # TODO -------------------------------------------------------------------------------- /examples/uni/src/main.ts: -------------------------------------------------------------------------------- 1 | import * as Pinia from 'pinia' 2 | import { createSSRApp } from 'vue' 3 | 4 | import App from './App.vue' 5 | 6 | import 'virtual:uno.css' 7 | 8 | export function createApp() { 9 | const app = createSSRApp(App) 10 | app.use(Pinia.createPinia()) 11 | return { 12 | app, 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/constants/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Constants 常量模块 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | */ 8 | 9 | export * from './checkbox' 10 | export * from './field' 11 | export * from './form' 12 | export * from './radio' 13 | export * from './roller' 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/custom.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/maxlength.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/required.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/maxlength.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/spinner/color.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/base.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/standalone.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/show-value.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/constants/form.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Form 表单常量 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | */ 8 | 9 | import type { InjectionKey } from 'vue' 10 | 11 | import type { FormContext } from '../types' 12 | 13 | export const SK_FORM_KEY: InjectionKey> = Symbol('sk-form') 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/color.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/toast/base.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/readonly.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /examples/uni/uno.config.ts: -------------------------------------------------------------------------------- 1 | import { presetSkiyeeUI } from '@skiyee/ui-preset' 2 | import { presetUni } from 'uni-unocss' 3 | import { defineConfig, transformerDirectives } from 'unocss' 4 | 5 | export default defineConfig({ 6 | presets: [ 7 | presetUni(), 8 | presetSkiyeeUI(), 9 | ], 10 | transformers: [ 11 | transformerDirectives(), 12 | ], 13 | }) 14 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/constants/field.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Field 字段常量 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | */ 8 | 9 | import type { InjectionKey } from 'vue' 10 | 11 | import type { FieldContext } from '../types' 12 | 13 | export const SK_FIELD_KEY: InjectionKey> = Symbol('sk-field') 14 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-spinner-base.BvSLQE7B.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-spinner.g15YERIx.js";import{_ as a,c as o,w as r,r as n,o as t,a as e,b as i}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const l=a({},[["render",function(a,l){const d=s,p=n("global-ku-root");return t(),o(p,null,{default:r(()=>[e("div",{class:"p-4"},[i(d)])]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-index.BnfB37j4.js: -------------------------------------------------------------------------------- 1 | import{_ as s,c as t,w as a,r as e,o,a as r}from"./index-CA6UagU_.js";const l=s({},[["render",function(s,l){const n=e("global-ku-root");return o(),t(n,null,{default:a(()=>[r("div",{class:"p-4"},[r("div",{class:"text-center"},[r("h1",{class:"text-2xl font-bold text-primary mb-2"}," @skiyee/uni-ui 组件库 ")])])]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/icon.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /docs/content/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 随心创造差异化 3 | --- 4 | 5 | :LandingHero 6 | 7 | :LandingBentoGrid 8 | 9 | :LandingTechStack 10 | 11 | 12 | 13 | :LandingTeamMember 14 | 15 | 22 | 23 | :LandingContribution 24 | 25 | :LandingScrollToTop 26 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/boundless.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/toast/controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/radius.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /docs/content/docs/1.guide/03.communication.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 加群 3 | description: 欢迎各位友好的小伙伴加入社区进行交流 4 | icon: i-lucide:message-circle-question 5 | --- 6 | 7 | ::tip 8 | 当前只提供 QQ群 作为交流渠道,如果不方便使用 QQ,请在 Issue 或者 Discussions 进行交流 9 | :: 10 | 11 | ## QQ 群 12 | 13 | 扫描以下二维码或者通过 [点击该链接加入群聊【skiyee/ui】](https://qm.qq.com/q/Q52XcRWZmW) 14 | 15 | :NuxtImg{src="/qrcode/group_1.jpg" width=300} 16 | 17 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/auto-height.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/loading.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/group-controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/size.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/constants/radio.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Radio 单选框常量 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | */ 8 | 9 | import type { InjectionKey } from 'vue' 10 | 11 | import type { RadioGroupContext } from '../types' 12 | 13 | export const SK_RADIO_GROUP_KEY: InjectionKey> = Symbol('sk-radio-group') 14 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/types/common.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Common 通用类型定义 3 | * 4 | * 定义组件库中通用的基础类型。 5 | * 6 | * @author sKy(skiyee) 7 | * @qq 319619193 8 | * @github https://github.com/skiyee 9 | * 10 | * @see 更多文档: https://skiyee-ui.netlify.app/docs/ 11 | */ 12 | 13 | /** 14 | * 可接受的模型值类型 15 | * 用于表单组件的 v-model 绑定 16 | */ 17 | export type AcceptableModelValue = string | number | null 18 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/constants/roller.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Roller 滚动选择器常量 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | */ 8 | 9 | import type { InjectionKey } from 'vue' 10 | 11 | import type { RollerGroupContext } from '../types' 12 | 13 | export const SK_ROLLER_GROUP_KEY: InjectionKey> = Symbol('sk-roller-group') 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/group-controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/types/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Types 类型定义模块 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | * 8 | * @see 更多文档: https://skiyee-ui.netlify.app/docs/ 9 | */ 10 | 11 | export type * from './common' 12 | export type * from './field' 13 | export type * from './form' 14 | export type * from './radio' 15 | export type * from './roller' 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/toast/closable.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/types/roller.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Roller 滚动选择器类型定义 3 | * 4 | * 定义滚动选择器相关的类型接口。 5 | * 6 | * @author sKy(skiyee) 7 | * @qq 319619193 8 | * @github https://github.com/skiyee 9 | * 10 | * @see 更多文档: https://skiyee-ui.netlify.app/docs/ 11 | */ 12 | 13 | export interface RollerGroupContext { 14 | props: { 15 | itemHeight?: number; 16 | visibleItemCount?: number; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dev/build outputs 2 | dist 3 | demo 4 | scripts 5 | .output 6 | .nuxt 7 | .data 8 | 9 | # Node dependencies 10 | node_modules 11 | 12 | # Logs 13 | logs 14 | *.log 15 | npm-debug.log* 16 | .pnpm-debug.log* 17 | trace-*.json 18 | 19 | # Misc 20 | .DS_Store 21 | .fleet 22 | .git 23 | .idea 24 | 25 | # Local env files 26 | .env 27 | .env.* 28 | !.env.example 29 | 30 | # Bundle 31 | tsdown.config.ts 32 | uni-hbx -------------------------------------------------------------------------------- /docs/content/docs/3.customization/02.shapes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 形态系统 3 | description: 版式、圆角、阴影的编辑与应用,支持自定义形态与拓展样式 4 | icon: i-lucide:swatch-book 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | --- 12 | 13 | ## 版式 Typography 14 | 15 | TODO 16 | 17 | ## 圆角 Radius 18 | 19 | TODO 20 | 21 | ## 阴影 Shadow 22 | 23 | TODO -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/icon/color.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/overlay/base.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/step.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/disabled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/indeterminate.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/label.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@vue/tsconfig/tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "types": ["node", "@dcloudio/types", "@uni-helper/uni-app-types"], 6 | "removeComments": true, 7 | }, 8 | "include": [ 9 | "src", 10 | "scripts" 11 | ], 12 | "vueCompilerOptions": { 13 | "plugins": ["@uni-helper/uni-app-types/volar-plugin"] 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/icon/name.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/orientation.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/formatter.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-switch-base.D788Y1aK.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-switch.vue_vue_type_script_setup_true_lang.e5Bovpr8.js";import{_ as t,c as r,w as e,r as o,o as a,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./field.Ccjhm7Cj.js";import"./index.Budg9xHA.js";const n=t({},[["render",function(t,n){const u=s,p=o("global-ku-root");return a(),r(p,null,{default:e(()=>[i(u)]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-spinner-size.DABq3-ws.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-spinner.g15YERIx.js";import{_ as a,c as e,w as r,r as o,o as i,a as l,b as n}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const t=a({},[["render",function(a,t){const m=s,d=o("global-ku-root");return i(),e(d,null,{default:r(()=>[l("div",{class:"p-4 flex gap-8"},[n(m,{size:"small"}),n(m,{size:"medium"}),n(m,{size:"large"})])]),_:1})}]]);export{t as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js: -------------------------------------------------------------------------------- 1 | import{e as s,h as i,o as e,q as t,n as a}from"./index-CA6UagU_.js";const n=s({inheritAttrs:!1,options:{virtualHost:!0},__name:"sk-icon",props:{name:{},size:{},clax:{}},emits:["click"],setup:s=>(s,n)=>(e(),i("span",{class:a(["shrink-0",[s.name,s.clax]]),style:t(s.size&&`width:${s.size};height:${s.size}`),onClick:n[0]||(n[0]=i=>s.$emit("click",i))},null,6))});export{n as _}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/readonly.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/label-width.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/min-max.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/label.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/group-size.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-spinner-variant.DoDJrv1n.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-spinner.g15YERIx.js";import{_ as a,c as r,w as t,r as e,o as n,a as o,b as i}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const c=a({},[["render",function(a,c){const l=s,u=e("global-ku-root");return n(),r(u,null,{default:t(()=>[o("div",{class:"p-4 flex items-center justify-center gap-8"},[i(l,{variant:"circular"}),i(l,{variant:"dots"})])]),_:1})}]]);export{c as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/values.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 18 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/readonly.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/step-strictly.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/group-disabled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/components/sk-uni.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "module": "ESNext", 5 | "moduleResolution": "Bundler", 6 | "resolveJsonModule": true, 7 | "types": ["node"], 8 | "strict": true, 9 | "strictNullChecks": true, 10 | "declaration": true, 11 | "noEmit": true, 12 | "removeComments": true, 13 | "esModuleInterop": true, 14 | "skipDefaultLibCheck": true, 15 | "skipLibCheck": true 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-base.C-_EgGEW.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{_ as t,c as r,w as a,r as e,o,a as u,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=t({},[["render",function(t,n){const p=s,l=e("global-ku-root");return o(),r(l,null,{default:a(()=>[u("div",{class:"p-4 w-full"},[i(p)])]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/value.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-icon-base.BqrXquzt.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as s,c as a,w as t,r,o as i,a as n,b as o}from"./index-CA6UagU_.js";const u=s({},[["render",function(s,u){const l=e,c=r("global-ku-root");return i(),a(c,null,{default:t(()=>[n("div",{class:"flex items-center gap-4 p-4"},[o(l,{name:"i-lucide:user"}),o(l,{name:"i-lucide:star"}),o(l,{name:"i-lucide:home"})])]),_:1})}]]);export{u as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/overlay/controlled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/toast/backdrop.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/orientation.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/show-count.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-base.Bp_CkWl2.js: -------------------------------------------------------------------------------- 1 | import{_ as t}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as s,c as r,w as o,r as e,o as a,b as u,d as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const l=s({},[["render",function(s,l){const p=t,_=e("global-ku-root");return a(),r(_,null,{default:o(()=>[u(p,null,{default:o(()=>[n(" 按钮 ")]),_:1})]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/roller/base.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/size.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/size.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/counter.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-full.KdS69rUB.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as t,c as r,w as a,r as o,o as e,a as l,b as u}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const n=t({},[["render",function(t,n){const p=s,i=o("global-ku-root");return e(),r(i,null,{default:a(()=>[l("div",{class:"w-full p-4"},[u(p,{label:"全宽按钮",full:""})])]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/orientation.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/size.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/size.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-overlay-default-value.D1Ca8K4Y.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import{_ as a,c as e,w as t,r,o as l,b as o,a as u}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const n=a({},[["render",function(a,n){const d=s,i=r("global-ku-root");return l(),e(i,null,{default:t(()=>[o(d,{"default-visible":""},{default:t(()=>[u("div",{class:"p-4 bg-page rounded-lg"},[u("span",null,"这是一个默认可见的弹窗内容")])]),_:1})]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/size.vue: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/color.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-icon-size.DiD--8HK.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as s,c as a,w as r,r as t,o as i,a as n,b as o}from"./index-CA6UagU_.js";const u=s({},[["render",function(s,u){const l=e,c=t("global-ku-root");return i(),a(c,null,{default:r(()=>[n("div",{class:"flex items-center gap-4 p-4"},[o(l,{name:"i-lucide:star",size:"48rpx"}),o(l,{name:"i-lucide:star",size:"24px"}),o(l,{name:"i-lucide:star",size:"1.5rem"})])]),_:1})}]]);export{u as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-spinner-color.DI_Bfa4J.js: -------------------------------------------------------------------------------- 1 | import{_ as o}from"./sk-spinner.g15YERIx.js";import{_ as r,c as s,w as a,r as n,o as l,a as c,b as e}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const t=r({},[["render",function(r,t){const i=o,u=n("global-ku-root");return l(),s(u,null,{default:a(()=>[c("div",{class:"p-4 flex gap-4"},[e(i,{color:"current"}),e(i,{color:"brand"}),e(i,{color:"danger"}),e(i,{color:"warning"}),e(i,{color:"success"}),e(i,{color:"neutral"})])]),_:1})}]]);export{t as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/group-size.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/value.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-disabled.RoU3ivzb.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as a,c as e,w as t,r,o,a as l,b as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const p=a({},[["render",function(a,p){const u=s,i=r("global-ku-root");return o(),e(i,null,{default:t(()=>[l("div",{class:"flex flex-wrap gap-3"},[n(u,{label:"正常按钮"}),n(u,{label:"禁用按钮",disabled:""})])]),_:1})}]]);export{p as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/base.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-base.nbmX8Zb4.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as t}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as s,c as r,w as a,r as o,o as _,b as u}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const n=s({},[["render",function(s,n){const i=t,l=e,p=o("global-ku-root");return _(),r(p,null,{default:a(()=>[u(l,{content:"6"},{default:a(()=>[u(i,{name:"i-lucide:bell",size:"40rpx"})]),_:1})]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-label.CIRCsIHk.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as t,c as a,w as e,r,o,a as l,b as u,d as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const p=t({},[["render",function(t,p){const i=s,_=r("global-ku-root");return o(),a(_,null,{default:e(()=>[l("div",{class:"flex gap-3"},[u(i,{label:"属性文本"}),u(i,null,{default:e(()=>[n(" 插槽文本 ")]),_:1})])]),_:1})}]]);export{p as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@vue/tsconfig/tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "paths": { 6 | "~/*": ["./src/*"] 7 | }, 8 | "types": ["node", "@dcloudio/types", "@uni-helper/uni-app-types"] 9 | }, 10 | "vueCompilerOptions": { 11 | "plugins": ["@uni-helper/uni-app-types/volar-plugin"] 12 | }, 13 | "include": [ 14 | "./**/*.d.ts", 15 | "src/**/*.ts", 16 | "src/**/*.tsx", 17 | "src/**/*.jsx", 18 | "src/**/*.vue" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-content.jqN32-il.js: -------------------------------------------------------------------------------- 1 | import{_ as t}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as e}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as s,c as a,w as r,r as o,o as _,b as u}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const n=s({},[["render",function(s,n){const i=e,p=t,c=o("global-ku-root");return _(),a(c,null,{default:r(()=>[u(p,{content:"cat"},{default:r(()=>[u(i,{name:"i-lucide:cat",size:"40rpx"})]),_:1})]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-custom.DBLk0LIs.js: -------------------------------------------------------------------------------- 1 | import{_ as t}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as r,c as s,w as e,r as o,o as a,b as u}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const n=r({},[["render",function(r,n){const i=t,l=o("global-ku-root");return a(),s(l,null,{default:e(()=>[u(i,{label:"渐变色按钮",radius:"huge",clax:"bg-gradient-to-tr from-blue-500 to-sky-500 text-white shadow-lg"})]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/group-color.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/type.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/size.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /examples/uni/pages.config.ts: -------------------------------------------------------------------------------- 1 | import { defineUniPages } from '@uni-helper/vite-plugin-uni-pages' 2 | 3 | export default defineUniPages({ 4 | pages: [], 5 | globalStyle: { 6 | backgroundColor: '@bgColor', 7 | backgroundColorBottom: '@bgColorBottom', 8 | backgroundColorTop: '@bgColorTop', 9 | backgroundTextStyle: '@bgTxtStyle', 10 | navigationBarBackgroundColor: '#000000', 11 | navigationBarTextStyle: '@navTxtStyle', 12 | navigationStyle: 'custom', 13 | navigationBarTitleText: 'skiyee/ui', 14 | }, 15 | }) 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/hidden.vue: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/picker/base.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/textarea/size.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/label-width.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/password.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/number-input/size.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-switch-controlled.CKmokLFE.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-switch.vue_vue_type_script_setup_true_lang.e5Bovpr8.js";import{e as s,f as t,c as a,w as o,r as l,o as r,b as u}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./field.Ccjhm7Cj.js";import"./index.Budg9xHA.js";const n=s({__name:"controlled",setup(s){const n=t(!1);return(s,t)=>{const p=e,m=l("global-ku-root");return r(),a(m,null,{default:o(()=>[u(p,{modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=e=>n.value=e)},null,8,["modelValue"])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/disabled.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-size.FdJY-zOq.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as e,c as a,w as r,r as t,o as l,a as o,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const u=e({},[["render",function(e,u){const n=s,p=t("global-ku-root");return l(),a(p,null,{default:r(()=>[o("div",{class:"flex flex-wrap gap-3"},[i(n,{label:"小型按钮",size:"small"}),i(n,{label:"中型按钮",size:"medium"}),i(n,{label:"大型按钮",size:"large"})])]),_:1})}]]);export{u as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-switch-readonly.COX6Ttvr.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-switch.vue_vue_type_script_setup_true_lang.e5Bovpr8.js";import{e as a,f as s,c as t,w as o,r as l,o as r,b as u}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./field.Ccjhm7Cj.js";import"./index.Budg9xHA.js";const n=a({__name:"readonly",setup(a){const n=s(!0);return(a,s)=>{const p=e,d=l("global-ku-root");return r(),t(d,null,{default:o(()=>[u(p,{modelValue:n.value,"onUpdate:modelValue":s[0]||(s[0]=e=>n.value=e),readonly:""},null,8,["modelValue"])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/1.basic/06.image.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Image 图片" 3 | description: "用于展示图片的组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-image.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/1.basic/07.tag.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Tag 标签" 3 | description: "用于标记和分类的标签组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-tag.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/4.info/02.item.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Item 列表项" 3 | description: "列表中的单个项目组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-item.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-variant.DKO_bNbt.js: -------------------------------------------------------------------------------- 1 | import{_ as a}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as t,c as s,w as r,r as e,o,a as l,b as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const i=t({},[["render",function(t,i){const p=a,u=e("global-ku-root");return o(),s(u,null,{default:r(()=>[l("div",{class:"p-4 flex flex-wrap gap-3"},[n(p,{label:"实心按钮",variant:"solid"}),n(p,{label:"边框按钮",variant:"bound"}),n(p,{label:"文字按钮",variant:"text"})])]),_:1})}]]);export{i as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/group-color.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/4.info/01.chip.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Chip 标签" 3 | description: "用于显示标签或可选择项的紧凑组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-chip.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/4.info/03.steps.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Steps 步骤条" 3 | description: "用于显示操作流程的步骤条组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-steps.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/formatter.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/1.basic/08.divider.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Divider 分割线" 3 | description: "用于分隔内容的分割线组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-divider.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/1.basic/09.swiper.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Swiper 轮播图" 3 | description: "用于图片或内容轮播展示的组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-swiper.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/3.feedback/06.alert.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Alert 警告提示" 3 | description: "用于显示警告信息的提示组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-alert.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/3.feedback/08.notify.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Notify 通知" 3 | description: "用于显示全局通知消息的组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-notify.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-slider-base.pXSBwW3m.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-slider.vue_vue_type_script_setup_true_lang.IBSPPtTE.js";import{e as s,f as a,c as l,w as t,r as o,o as u,a as r,b as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=s({__name:"base",setup(s){const p=a(50);return(s,a)=>{const d=e,i=o("global-ku-root");return u(),l(i,null,{default:t(()=>[r("div",{class:"p-4 w-full"},[n(d,{modelValue:p.value,"onUpdate:modelValue":a[0]||(a[0]=e=>p.value=e)},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/toast/custom.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 19 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/4.info/04.timeline.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Timeline 时间轴" 3 | description: "用于显示时间线信息的组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-timeline.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/5.navigation/01.tabs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Tabs 标签页" 3 | description: "用于在多个内容面板之间切换的导航组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-tabs.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/1.basic/10.backdrop.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Backdrop 遮罩层" 3 | description: "用于覆盖在内容上方的遮罩层组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-backdrop.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/3.feedback/04.countdown.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Countdown 倒计时" 3 | description: "用于显示倒计时的组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-countdown.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/5.navigation/05.dropdown.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Dropdown 下拉菜单" 3 | description: "用于显示下拉菜单选项的组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-dropdown.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-icon-name.CqhaV2Bn.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as a,c as s,w as i,r as n,o as t,a as r,b as u}from"./index-CA6UagU_.js";const l=a({},[["render",function(a,l){const c=e,o=n("global-ku-root");return t(),s(o,null,{default:i(()=>[r("div",{class:"flex items-center gap-4 p-4 flex-wrap"},[u(c,{name:"i-lucide:user"}),u(c,{name:"i-lucide:star"}),u(c,{name:"i-lucide:home"}),u(c,{name:"i-lucide:settings"}),u(c,{name:"i-lucide:search"}),u(c,{name:"i-lucide:network"}),u(c,{name:"i-lucide:menu"})])]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-slider-controlled.Ca2NgU7a.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-slider.vue_vue_type_script_setup_true_lang.IBSPPtTE.js";import{e as s,f as a,c as l,w as t,r as o,o as r,a as u,b as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=s({__name:"controlled",setup(s){const p=a(50);return(s,a)=>{const d=e,i=o("global-ku-root");return r(),l(i,null,{default:t(()=>[u("div",{class:"p-4 w-full"},[n(d,{modelValue:p.value,"onUpdate:modelValue":a[0]||(a[0]=e=>p.value=e)},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/2.form/12.pin-input.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Pin Input 识别码输入框" 3 | description: "用于输入密码或验证码的输入框组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-pin-input.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/5.navigation/02.accordion.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Accordion 手风琴" 3 | description: "可折叠展开的内容区域组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-accordion.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-controlled.WtlUxHSd.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as s,c as a,w as t,r as o,o as u,a as r,b as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=l({__name:"controlled",setup(l){const p=s("Hello");return(l,s)=>{const d=e,i=o("global-ku-root");return u(),a(i,null,{default:t(()=>[r("div",{class:"p-4 w-full"},[n(d,{modelValue:p.value,"onUpdate:modelValue":s[0]||(s[0]=e=>p.value=e)},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/3.feedback/05.action-sheet.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Action Sheet 操作面板" 3 | description: "从底部弹出的操作选择面板" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-action-sheet.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/content/docs/2.components/3.feedback/07.notice-bar.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Notice Bar 通知栏" 3 | description: "用于显示通知信息的横、纵向滚动栏" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-notice-bar.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/group-disabled.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/step.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/5.navigation/03.swipe-action.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Swipe Action 滑动操作" 3 | description: "支持左右滑动操作的手势组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-swipe-action.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-icon-color.Dw4y-C2Y.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as t,c as a,w as s,r,o as l,a as c,b as i}from"./index-CA6UagU_.js";const n=t({},[["render",function(t,n){const u=e,o=r("global-ku-root");return l(),a(o,null,{default:s(()=>[c("div",{class:"flex items-center gap-4 p-4"},[i(u,{name:"i-lucide:star",clax:"text-current"}),i(u,{name:"i-lucide:star",clax:"text-red"}),i(u,{name:"i-lucide:star",clax:"text-blue"}),i(u,{name:"i-lucide:star",clax:"text-green"}),i(u,{name:"i-lucide:star",clax:"text-[#ff6b35]"})])]),_:1})}]]);export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/button/icon.vue: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/overlay/dismissable.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/5.navigation/04.segment-group.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Segment Group 分段器" 3 | description: "用于在多个选项间切换的分段器组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/uni-ui/src/components/sk-segment-group.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/overlay/backdrop.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/disabled.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/radio/color.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/types/radio.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Radio 单选框类型定义 3 | * 4 | * 定义单选框相关的类型接口。 5 | * 6 | * @author sKy(skiyee) 7 | * @qq 319619193 8 | * @github https://github.com/skiyee 9 | * 10 | * @see 更多文档: https://skiyee-ui.netlify.app/docs/ 11 | */ 12 | 13 | import type { SkRadioUcvProps } from '../styles/sk-radio' 14 | 15 | export interface RadioGroupContext { 16 | props: { 17 | size?: SkRadioUcvProps['size']; 18 | color?: SkRadioUcvProps['color']; 19 | disabled?: boolean; 20 | }; 21 | state: { 22 | selectValue?: string; 23 | }; 24 | updateValue: (value: string) => void; 25 | } 26 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/schema-zod.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 23 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/validator/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Validator 验证器模块 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | * 8 | * @see 更多文档: https://skiyee-ui.netlify.app/docs/ 9 | */ 10 | 11 | export { createFormValidator } from './form' 12 | export type { FormFieldError, FormFieldErrors, FormValidationResult, FormValidatorConfig, SchemaIssues } from './form.type' 13 | 14 | export { validateSchema, validateSchemaSync, validateSchemaWithResult, validateSchemaWithResultSync } from './schema' 15 | export type { Schema, SchemaInferInput, SchemaInferOutput } from './schema.type' 16 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-boundless.BcYVmhQr.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as s,c as t,w as a,r as l,o as n,a as r,b as u}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const o=s({},[["render",function(s,o){const d=e,i=l("global-ku-root");return n(),t(i,null,{default:a(()=>[r("div",{class:"flex flex-wrap items-center gap-4 p-4"},[u(d,{content:6},{default:a(()=>[r("div",{class:"size-10 rounded-full bg-neutral-300"})]),_:1}),u(d,{content:6,boundless:""},{default:a(()=>[r("div",{class:"size-10 rounded-full bg-neutral-300"})]),_:1})])]),_:1})}]]);export{o as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-maxlength.BZKasji5.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as a,f as l,c as s,w as t,r as o,o as u,a as r,b as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=a({__name:"maxlength",setup(a){const p=l("");return(a,l)=>{const m=e,d=o("global-ku-root");return u(),s(d,null,{default:t(()=>[r("div",{class:"p-4 w-full"},[n(m,{modelValue:p.value,"onUpdate:modelValue":l[0]||(l[0]=e=>p.value=e),maxlength:10,placeholder:"最多输入10个字符"},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/dialog/base.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 24 | -------------------------------------------------------------------------------- /docs/content/docs/2.components/2.form/11.datetime-picker.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Datetime Picker 时间选择器" 3 | description: "用于选择日期和时间的专用选择器组件" 4 | badge: Dev 5 | authors: 6 | - name: sKy 7 | username: skiyee 8 | avatar: /avatar/skiyee.png 9 | to: https://github.com/skiyee 10 | target: _blank 11 | links: 12 | - label: Source 13 | icon: radix-icons:github-logo 14 | to: https://github.com/skiyee/ui/blob/main/packages/skiyee-uni-ui/src/components/sk-datetime-picker.vue 15 | target: _blank 16 | --- 17 | 18 | ::warning 19 | 该组件目前处于开发阶段,诚挚邀请开发者们访问 [GitHub仓库](https://github.com/skiyee/ui){:target="_blank"} 参与技术讨论或提交贡献 20 | :: -------------------------------------------------------------------------------- /examples/uni/src/pages-form/slider/min-max.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-placeholder.18cNijLU.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as a,c as s,w as o,r as t,o as u,a as r,b as p}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"placeholder",setup(l){const n=a("");return(l,a)=>{const d=e,i=t("global-ku-root");return u(),s(i,null,{default:o(()=>[r("div",{class:"flex flex-col gap-3 p-4 w-full"},[p(d,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),placeholder:"请输入您的姓名"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-color.Bi8SAkv_.js: -------------------------------------------------------------------------------- 1 | import{_ as o}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as l,c as r,w as a,r as e,o as s,a as t,b as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const c=l({},[["render",function(l,c){const u=o,i=e("global-ku-root");return s(),r(i,null,{default:a(()=>[t("div",{class:"flex flex-col gap-3"},[n(u,{label:"中性按钮",color:"neutral"}),n(u,{label:"品牌按钮",color:"brand"}),n(u,{label:"成功按钮",color:"success"}),n(u,{label:"警告按钮",color:"warning"}),n(u,{label:"危险按钮",color:"danger"})])]),_:1})}]]);export{c as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-base.4gTXFkSR.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as s,f as a,c as t,w as u,r as l,o,a as r,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const _=s({__name:"base",setup(s){const _=a("");return(s,a)=>{const n=e,i=l("global-ku-root");return o(),t(i,null,{default:u(()=>[r("div",{class:"p-4 w-full"},[p(n,{modelValue:_.value,"onUpdate:modelValue":a[0]||(a[0]=e=>_.value=e)},null,8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/placement.vue: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-radius.BExQJWyU.js: -------------------------------------------------------------------------------- 1 | import{_ as a}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as s,c as e,w as r,r as l,o as t,a as u,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const o=s({},[["render",function(s,o){const n=a,d=l("global-ku-root");return t(),e(d,null,{default:r(()=>[u("div",{class:"flex flex-wrap justify-center gap-3"},[i(n,{label:"微圆按钮",radius:"tiny"}),i(n,{label:"小圆按钮",radius:"small"}),i(n,{label:"中圆按钮",radius:"medium"}),i(n,{label:"大圆按钮",radius:"large"}),i(n,{label:"圆角按钮",radius:"huge"})])]),_:1})}]]);export{o as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-roller-base.BMaJA7Ln.js: -------------------------------------------------------------------------------- 1 | import{_ as a,a as e}from"./sk-roller.vue_vue_type_script_setup_true_lang.CuUGw2Ph.js";import{_ as l,c as s,w as r,r as t,o,a as u,b as n}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./use-parent.Dwjp3nL8.js";const p=l({},[["render",function(l,p){const i=e,_=a,b=t("global-ku-root");return o(),s(b,null,{default:r(()=>[u("div",{class:"p-4 w-full"},[n(_,null,{default:r(()=>[n(i,{options:[{label:"苹果",value:"apple"},{label:"香蕉",value:"banana"},{label:"橙子",value:"orange"},{label:"葡萄",value:"grape"},{label:"草莓",value:"strawberry"}]})]),_:1})])]),_:1})}]]);export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-controlled.2xiR8U5k.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as t,f as s,c as a,w as o,r as u,o as r,b as l,d as _}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=t({__name:"controlled",setup(t){const p=s(!1);return(t,s)=>{const n=e,d=u("global-ku-root");return r(),a(d,null,{default:o(()=>[l(n,{modelValue:p.value,"onUpdate:modelValue":s[0]||(s[0]=e=>p.value=e)},{default:o(()=>[_(" 确认输入信息无误 ")]),_:1},8,["modelValue"])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-field-base.CoKuKSOu.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-field.vue_vue_type_script_setup_true_lang.D9Tvordn.js";import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{_ as t,c as r,w as o,r as a,o as p,a as u,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./form.pFMRjkfN.js";import"./field.Ccjhm7Cj.js";const l=t({},[["render",function(t,l){const _=e,n=s,m=a("global-ku-root");return p(),r(m,null,{default:o(()=>[u("div",{class:"p-4 w-full"},[i(n,{label:"用户名"},{default:o(()=>[i(_,{placeholder:"请输入用户名"})]),_:1})])]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/schema-arktype.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 25 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/picker/controlled.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 23 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/color.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 26 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/constants/checkbox.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Checkbox 复选框常量 3 | * 4 | * @author sKy(skiyee) 5 | * @qq 319619193 6 | * @github https://github.com/skiyee 7 | */ 8 | 9 | import type { InjectionKey } from 'vue' 10 | 11 | import type { SkCheckboxUcvProps } from '../styles' 12 | 13 | export const SK_CHECKBOX_GROUP_KEY: InjectionKey<{ 14 | props: { 15 | // 当前选中的值数组 16 | modelValue?: string[]; 17 | size?: SkCheckboxUcvProps['size']; 18 | color?: SkCheckboxUcvProps['color']; 19 | disabled?: boolean; 20 | }; 21 | isChecked: (value: string) => boolean; 22 | updateValue: (value: string, checked: boolean) => void; 23 | }> = Symbol('sk-radio-group') 24 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/types/field.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Field 字段类型定义 3 | * 4 | * 定义字段相关的类型接口。 5 | * 6 | * @author sKy(skiyee) 7 | * @qq 319619193 8 | * @github https://github.com/skiyee 9 | * 10 | * @see 更多文档: https://skiyee-ui.netlify.app/docs/ 11 | */ 12 | 13 | import type { SkFieldUcvProps } from '../styles/sk-field' 14 | 15 | /** 16 | * 字段上下文接口 17 | * 用于提供字段相关的操作和状态 18 | */ 19 | export interface FieldContext { 20 | props: { 21 | name?: string; 22 | size?: SkFieldUcvProps['size']; 23 | disabled?: boolean; 24 | }; 25 | handleChange: (value: unknown) => void; 26 | handleBlur: (value: unknown) => void; 27 | handleFocus: (value: unknown) => void; 28 | } 29 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-field-name.DHj90w9T.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-field.vue_vue_type_script_setup_true_lang.D9Tvordn.js";import{_ as s}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{_ as r,c as t,w as a,r as o,o as p,a as u,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./form.pFMRjkfN.js";import"./field.Ccjhm7Cj.js";const l=r({},[["render",function(r,l){const _=s,n=e,m=o("global-ku-root");return p(),t(m,null,{default:a(()=>[u("div",{class:"p-4 w-full"},[i(n,{name:"username",label:"用户名"},{default:a(()=>[i(_,{placeholder:"请输入用户名"})]),_:1})])]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-placeholder.DP10FOUq.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as a,f as s,c as t,w as l,r as o,o as r,a as u,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const _=a({__name:"placeholder",setup(a){const _=s("");return(a,s)=>{const n=e,i=o("global-ku-root");return r(),t(i,null,{default:l(()=>[u("div",{class:"p-4 w-full"},[p(n,{modelValue:_.value,"onUpdate:modelValue":s[0]||(s[0]=e=>_.value=e),placeholder:"请输入您的意见和建议..."},null,8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-base.dqUfc0Xo.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as s,f as t,c as a,w as u,r as l,o as r,a as o,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=s({__name:"base",setup(s){const n=t(0);return(s,t)=>{const _=e,i=l("global-ku-root");return r(),a(i,null,{default:u(()=>[o("div",{class:"flex justify-center p-4 w-full"},[p(_,{modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=e=>n.value=e),placeholder:"请输入数字"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/roller/controlled.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 25 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-placeholder.DDdwyAft.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as s,f as a,c as l,w as t,r as o,o as u,a as r,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=s({__name:"placeholder",setup(s){const n=a();return(s,a)=>{const _=e,i=o("global-ku-root");return u(),l(i,null,{default:t(()=>[r("div",{class:"flex flex-col gap-3 p-4"},[p(_,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),placeholder:"请输入数字"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-clearable.BBAuaRTu.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as a,f as l,c as s,w as t,r,o as u,a as o,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const _=a({__name:"clearable",setup(a){const _=l("这是一些示例文本");return(a,l)=>{const n=e,i=r("global-ku-root");return u(),s(i,null,{default:t(()=>[o("div",{class:"flex p-4 w-full"},[p(n,{modelValue:_.value,"onUpdate:modelValue":l[0]||(l[0]=e=>_.value=e),clearable:"",placeholder:"可清空的文本域"},null,8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/label.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-counter.DTpij4n2.js: -------------------------------------------------------------------------------- 1 | import{_ as a}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e,f as s,c as l,w as t,r as o,o as u,a as r,b as n,n as p,t as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const m=e({__name:"counter",setup(e){const m=s("");return(e,s)=>{const d=a,_=o("global-ku-root");return u(),l(_,null,{default:t(()=>[r("div",{class:"p-4 w-full"},[n(d,{modelValue:m.value,"onUpdate:modelValue":s[0]||(s[0]=a=>m.value=a),placeholder:"写下你的名言...",maxlength:20},{trailing:t(({clax:a})=>[r("span",{class:p(a)},i(m.value.length)+"/20",3)]),_:1},8,["modelValue"])])]),_:1})}}});export{m as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/dialog/dismissable.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 25 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/checkbox/color.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 20 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/input/custom.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /docs/public/h5/assets/use-provide.B_f5e336.js: -------------------------------------------------------------------------------- 1 | import{K as e,L as n,M as r,x as i}from"./index-CA6UagU_.js";function o(o,s){const c=i(),d=e([]),t=e([]),u=e=>{e.proxy&&(t.push(r(e)),d.push(r(e.proxy)),function(e,n){const r=function(e){const n=[],r=e=>{Array.isArray(e)&&e.forEach(e=>{var i,o;(o=e)&&!0===o.__v_isVNode&&(n.push(e),(null==(i=e.component)?void 0:i.subTree)&&r(e.component.subTree.children),e.children&&r(e.children))})};return r(e),n}(e&&e.subTree&&e.subTree.children);n.sort((e,n)=>r.indexOf(e.vnode)-r.indexOf(n.vnode))}(c,t))},p=e=>{e.proxy&&(t.splice(t.indexOf(r(e)),1),d.splice(d.indexOf(r(e.proxy)),1))};return e=>(n(o,Object.assign({add:u,remove:p,children:t},e)),{internalChildren:t,publicChildren:d})}export{o as u}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-slider-disabled.COD3mkMX.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-slider.vue_vue_type_script_setup_true_lang.IBSPPtTE.js";import{e as l,f as a,c as s,w as u,r as o,o as t,a as d,b as r}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"disabled",setup(l){const n=a(60),p=a(40);return(l,a)=>{const m=e,i=o("global-ku-root");return t(),s(i,null,{default:u(()=>[d("div",{class:"flex flex-col p-4 gap-4 w-full"},[r(m,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e)},null,8,["modelValue"]),r(m,{modelValue:p.value,"onUpdate:modelValue":a[1]||(a[1]=e=>p.value=e),disabled:""},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/picker/disabled.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 25 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-slider-show-value.DRlKRUpg.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-slider.vue_vue_type_script_setup_true_lang.IBSPPtTE.js";import{e as l,f as a,c as s,w as u,r as o,o as t,a as r,b as d}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"show-value",setup(l){const n=a(30),p=a(70);return(l,a)=>{const m=e,i=o("global-ku-root");return t(),s(i,null,{default:u(()=>[r("div",{class:"flex flex-col p-4 gap-4 w-full"},[d(m,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e)},null,8,["modelValue"]),d(m,{modelValue:p.value,"onUpdate:modelValue":a[1]||(a[1]=e=>p.value=e),"show-value":""},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-shape.4VVoLC-C.js: -------------------------------------------------------------------------------- 1 | import{_ as t}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as s,c as a,w as r,r as u,o,a as _,b as l,d as n}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const p=s({},[["render",function(s,p){const d=e,f=t,i=u("global-ku-root");return o(),a(i,null,{default:r(()=>[_("div",{class:"flex items-center flex-wrap gap-4 p-4"},[l(f,{content:"6"},{default:r(()=>[l(d,null,{default:r(()=>[n("数字徽标")]),_:1})]),_:1}),l(f,{shape:"dot"},{default:r(()=>[l(d,null,{default:r(()=>[n("圆点徽标")]),_:1})]),_:1})])]),_:1})}]]);export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-base.CMCuyiQ-.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as s,f as t,c as o,w as u,r,o as l,a as p,b as _,d}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const i=s({__name:"base",setup(s){const i=t("");return(s,t)=>{const n=a,m=e,v=r("global-ku-root");return l(),o(v,null,{default:u(()=>[p("div",{class:"p-4"},[_(m,{modelValue:i.value,"onUpdate:modelValue":t[0]||(t[0]=e=>i.value=e)},{default:u(()=>[_(n,{value:"option1"},{default:u(()=>[d(" 单选框 ")]),_:1})]),_:1},8,["modelValue"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-switch-icon.BtQQBAQR.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-switch.vue_vue_type_script_setup_true_lang.e5Bovpr8.js";import{_ as s}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{e as t,f as a,c as l,w as o,r as u,o as r,b as n,i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./field.Ccjhm7Cj.js";import"./index.Budg9xHA.js";const _=t({__name:"icon",setup(t){const _=a(!1);return(t,a)=>{const p=s,c=e,m=u("global-ku-root");return r(),l(m,null,{default:o(()=>[n(c,{modelValue:_.value,"onUpdate:modelValue":a[0]||(a[0]=e=>_.value=e)},{thumbIcon:o(({selected:e,clax:s})=>[e?(r(),l(p,{key:0,name:"i-lucide:wind",clax:s},null,8,["clax"])):i("",!0)]),_:1},8,["modelValue"])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-maxlength.CyMmKvkT.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as a,f as t,c as s,w as l,r as o,o as u,a as r,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=a({__name:"maxlength",setup(a){const n=t("");return(a,t)=>{const _=e,m=o("global-ku-root");return u(),s(m,null,{default:l(()=>[r("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(_,{modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=e=>n.value=e),maxlength:50,"show-count":"",placeholder:"最大长度 50 字符"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-size.5_2sacSf.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as s,c as a,w as t,r as l,o as n,a as r,b as d}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const u=s({},[["render",function(s,u){const i=e,o=l("global-ku-root");return n(),a(o,null,{default:t(()=>[r("div",{class:"flex flex-wrap items-center gap-4 p-4"},[d(i,{content:"6",size:"small"},{default:t(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),d(i,{content:"6",size:"medium"},{default:t(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),d(i,{content:"6",size:"large"},{default:t(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1})])]),_:1})}]]);export{u as default}; 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: ✨ 功能需求请求 2 | description: 为 skiyee/ui 申请新功能或改进建议 3 | title: "[✨ feat]: " 4 | labels: ["request"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | ## 功能需求说明 10 | 11 | - type: textarea 12 | id: purpose 13 | attributes: 14 | label: 功能目的 15 | description: 请清晰描述该功能要解决的问题或带来的价值 16 | placeholder: "示例:提高用户上传文件时的操作效率..." 17 | - type: textarea 18 | id: solution 19 | attributes: 20 | label: 建议实现方式 21 | description: 如果有技术实现建议请说明(可选) 22 | - type: checkboxes 23 | id: code-ready 24 | attributes: 25 | label: 是否已有相关代码? 26 | options: 27 | - label: 我已准备好相关代码(PR欢迎) 28 | required: false -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-standalone.BGA-QI29.js: -------------------------------------------------------------------------------- 1 | import{_ as t}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as s,c as o,w as r,r as a,o as n,a as u,b as p,d as _}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const l=s({},[["render",function(s,l){const c=e,i=t,d=a("global-ku-root");return n(),o(d,null,{default:r(()=>[u("div",{class:"flex flex-wrap items-center gap-4 p-4"},[p(i,{content:6},{default:r(()=>[p(c,null,{default:r(()=>[_("包装模式")]),_:1})]),_:1}),p(i,{content:12}),p(i,{shape:"dot",color:"success"}),p(i,{content:999,color:"danger"})])]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-readonly.Djsf_Ndf.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as a,f as l,c as s,w as t,r as o,o as r,a as u,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=a({__name:"readonly",setup(a){const n=l("这是只读内容,无法编辑");return(a,l)=>{const _=e,d=o("global-ku-root");return r(),s(d,null,{default:t(()=>[u("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(_,{placeholder:"普通文本域"}),p(_,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=e=>n.value=e),placeholder:"只读文本域",readonly:""},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/toast/message.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 21 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/switch/loading.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/badge/color.vue: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-formatter.C7QEO9tk.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as t,f as s,c as a,w as r,r as l,o,a as u,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=t({__name:"formatter",setup(t){const n=s(1e3);return(t,s)=>{const _=e,i=l("global-ku-root");return o(),a(i,null,{default:r(()=>[u("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(_,{modelValue:n.value,"onUpdate:modelValue":s[0]||(s[0]=e=>n.value=e),"format-options":{style:"currency",currency:"CNY"},placeholder:"货币格式"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/form/disabled.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 30 | -------------------------------------------------------------------------------- /examples/uni/src/theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "light": { 3 | "bgColor": "#f6f6f6", 4 | "bgColorBottom": "#fcfcfc", 5 | "bgColorTop": "#ff6b00", 6 | "bgTxtStyle": "dark", 7 | "navBgColor": "#ff6b00", 8 | "navTxtStyle": "white", 9 | "tabBgColor": "#fcfcfc", 10 | "tabBorderStyle": "black", 11 | "tabFontColor": "#1f2937", 12 | "tabSelectedColor": "#ff6b00" 13 | }, 14 | "dark": { 15 | "bgColor": "#17171a", 16 | "bgColorBottom": "#181818", 17 | "bgColorTop": "#ff6b00", 18 | "bgTxtStyle": "light", 19 | "navBgColor": "#ff6b00", 20 | "navTxtStyle": "white", 21 | "tabBgColor": "#181818", 22 | "tabBorderStyle": "white", 23 | "tabFontColor": "#f3f4f6", 24 | "tabSelectedColor": "#ff6b00" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-disabled.hwOqNwZO.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as a,c as s,w as u,r as o,o as t,a as d,b as r}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=l({__name:"disabled",setup(l){const p=a(),n=a("这是禁用状态含值的输入框");return(l,a)=>{const i=e,m=o("global-ku-root");return t(),s(m,null,{default:u(()=>[d("div",{class:"flex flex-col gap-3 p-4 w-full"},[r(i,{modelValue:p.value,"onUpdate:modelValue":a[0]||(a[0]=e=>p.value=e),disabled:"",placeholder:"禁用状态,无法输入"},null,8,["modelValue"]),r(i,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=e=>n.value=e),disabled:""},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/description.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/roller/disabled.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 28 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-auto-height.CFRLzz9B.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as t,f as a,c as s,w as l,r as o,o as u,a as r,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=t({__name:"auto-height",setup(t){const n=a("这是一个自动高度的文本域示例。\n当您输入更多内容时,\n文本域会自动调整高度。\n继续输入更多文本来查看效果。");return(t,a)=>{const _=e,i=o("global-ku-root");return u(),s(i,null,{default:l(()=>[r("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(_,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),"auto-height":!0,placeholder:"自动高度文本域"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-overlay-base.DYOm_8Gi.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as a,f as t,c as r,w as l,r as o,o as u,b as p,a as i}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const n=a({__name:"base",setup(a){const n=t(!1);return(a,t)=>{const _=s,m=e,v=o("global-ku-root");return u(),r(v,null,{default:l(()=>[p(_,{label:"显示弹窗",onClick:t[0]||(t[0]=()=>n.value=!0)}),p(m,{visible:n.value,"onUpdate:visible":t[1]||(t[1]=e=>n.value=e)},{default:l(()=>[i("div",{class:"p-4 bg-page text-primary rounded-lg"},[i("span",null,"这是一个基础的弹窗内容")])]),_:1},8,["visible"])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-password.BuLPi8ek.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as a,c as s,w as o,r as u,o as t,a as r,b as p}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const d=l({__name:"password",setup(l){const d=a(),n=a();return(l,a)=>{const m=e,i=u("global-ku-root");return t(),s(i,null,{default:o(()=>[r("div",{class:"flex flex-col gap-3 p-4 w-full"},[p(m,{modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=e=>d.value=e),placeholder:"请输入密码",password:""},null,8,["modelValue"]),p(m,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=e=>n.value=e),type:"number",placeholder:"请输入6位数字密码",password:""},null,8,["modelValue"])])]),_:1})}}});export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-readonly.Nh0jwgcG.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as a,c as o,w as u,r as s,o as t,a as r,b as d}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"readonly",setup(l){const n=a(),p=a("含值的只读状态输入框");return(l,a)=>{const m=e,i=s("global-ku-root");return t(),o(i,null,{default:u(()=>[r("div",{class:"flex flex-col gap-3 p-4 w-full"},[d(m,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),placeholder:"只读状态,无法编辑",readonly:""},null,8,["modelValue"]),d(m,{modelValue:p.value,"onUpdate:modelValue":a[1]||(a[1]=e=>p.value=e),placeholder:"只读状态,有值",readonly:""},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-group-controlled.dcFn2fab.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as o}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as a,f as s,c as t,w as r,r as u,o as l,a as p,b as _}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const i=a({__name:"group-controlled",setup(a){const i=s("option");return(a,s)=>{const n=o,d=e,m=u("global-ku-root");return l(),t(m,null,{default:r(()=>[p("div",{class:"p-4"},[_(d,{modelValue:i.value,"onUpdate:modelValue":s[0]||(s[0]=e=>i.value=e)},{default:r(()=>[_(n,{value:"option1",label:"九寨沟"}),_(n,{value:"option2",label:"喀纳斯"})]),_:1},8,["modelValue"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-controlled.DITWlLR3.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as l,f as s,c as t,w as a,r as o,o as r,a as u,b as p,t as n}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const _=l({__name:"controlled",setup(l){const _=s("Hello World");return(l,s)=>{const d=e,i=o("global-ku-root");return r(),t(i,null,{default:a(()=>[u("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(d,{modelValue:_.value,"onUpdate:modelValue":s[0]||(s[0]=e=>_.value=e),placeholder:"请输入内容"},null,8,["modelValue"]),u("div",{class:"text-sm text-secondary"}," 当前值: "+n(_.value),1)])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-custom.f5ldkF4L.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as t}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as r,c as a,w as u,r as _,o,a as p,b as i,d as n}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const l=r({},[["render",function(r,l){const c=t,m=e,d=s,f=_("global-ku-root");return o(),a(f,null,{default:u(()=>[p("div",{class:"flex items-center gap-4 p-4"},[i(d,{color:"success"},{badge:u(()=>[i(c,{name:"i-lucide:settings-2",size:"20rpx"})]),default:u(()=>[i(m,null,{default:u(()=>[n("自定义内容")]),_:1})]),_:1})])]),_:1})}]]);export{l as default}; 2 | -------------------------------------------------------------------------------- /docs/public/_headers: -------------------------------------------------------------------------------- 1 | /* 2 | Cache-Control: public, max-age=0, must-revalidate 3 | 4 | /h5/* 5 | Cache-Control: public, max-age=31536000, immutable 6 | /fonts/* 7 | Cache-Control: public, max-age=31536000, immutable 8 | /avatar/* 9 | Cache-Control: public, max-age=31536000, immutable 10 | /qrcode/* 11 | Cache-Control: public, max-age=31536000, immutable 12 | 13 | /favicon.ico 14 | Cache-Control: public, max-age=31536000, immutable 15 | /logo-dark.svg 16 | Cache-Control: public, max-age=31536000, immutable 17 | /logo-light.svg 18 | Cache-Control: public, max-age=31536000, immutable 19 | 20 | /_nuxt/* 21 | Cache-Control: public, max-age=31536000, immutable 22 | /assets/* 23 | Cache-Control: public, max-age=31536000, immutable 24 | 25 | /sw.js 26 | Cache-Control: no-cache 27 | 28 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-form-base.LabTlXiN.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-form.vue_vue_type_script_setup_true_lang.C4zzUO0g.js";import{_ as s}from"./sk-field.vue_vue_type_script_setup_true_lang.D9Tvordn.js";import{_ as t}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{_ as r,c as a,w as u,r as o,o as _,a as p,b as l}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./form.pFMRjkfN.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const i=r({},[["render",function(r,i){const m=t,n=s,f=e,d=o("global-ku-root");return _(),a(d,null,{default:u(()=>[p("div",{class:"p-4 w-full"},[l(f,null,{default:u(()=>[l(n,{name:"username",label:"用户名"},{default:u(()=>[l(m,{placeholder:"请输入用户名"})]),_:1})]),_:1})])]),_:1})}]]);export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-disabled.BFOswv4T.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as s,f as o,c as t,w as l,r as u,o as r,a as p,b as i}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const d=s({__name:"disabled",setup(s){const d=o("option2");return(s,o)=>{const _=a,n=e,m=u("global-ku-root");return r(),t(m,null,{default:l(()=>[p("div",{class:"p-4"},[i(n,{modelValue:d.value,"onUpdate:modelValue":o[0]||(o[0]=e=>d.value=e)},{default:l(()=>[i(_,{value:"option1",label:"禁用未选",disabled:""}),i(_,{value:"option2",label:"禁用选中",disabled:""})]),_:1},8,["modelValue"])])]),_:1})}}});export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-label.CzgzjUio.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as o,f as s,c as t,w as l,r as u,o as r,a as p,b as _}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const i=o({__name:"label",setup(o){const i=s("option1");return(o,s)=>{const n=a,d=e,m=u("global-ku-root");return r(),t(m,null,{default:l(()=>[p("div",{class:"p-4"},[_(d,{modelValue:i.value,"onUpdate:modelValue":s[0]||(s[0]=e=>i.value=e)},{default:l(()=>[_(n,{value:"option1",label:"峨眉山"}),_(n,{value:"option2",label:"武当山"}),_(n,{value:"option3",label:"老君山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/dialog/long-content.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/field/size.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 22 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-field-required.Ccx7ByCv.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-field.vue_vue_type_script_setup_true_lang.D9Tvordn.js";import{_ as s}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as r,f as t,c as a,w as l,r as u,o,a as p,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./form.pFMRjkfN.js";import"./field.Ccjhm7Cj.js";const _=r({__name:"required",setup(r){const _=t("");return(r,t)=>{const d=s,m=e,n=u("global-ku-root");return o(),a(n,null,{default:l(()=>[p("div",{class:"p-4 w-full"},[i(m,{label:"姓名",required:""},{default:l(()=>[i(d,{modelValue:_.value,"onUpdate:modelValue":t[0]||(t[0]=e=>_.value=e),placeholder:"请输入您的姓名"},null,8,["modelValue"])]),_:1})])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-switch-disabled.Anw5cOVK.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-switch.vue_vue_type_script_setup_true_lang.e5Bovpr8.js";import{e as a,f as l,c as s,w as t,r as o,o as u,a as d,b as r,d as p}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./field.Ccjhm7Cj.js";import"./index.Budg9xHA.js";const i=a({__name:"disabled",setup(a){const i=l(!1),m=l(!0);return(a,l)=>{const n=e,_=o("global-ku-root");return u(),s(_,null,{default:t(()=>[d("div",{class:"p-4 flex flex-col gap-3"},[r(n,{modelValue:i.value,"onUpdate:modelValue":l[0]||(l[0]=e=>i.value=e),disabled:""},{default:t(()=>[p(" 禁用关闭状态 ")]),_:1},8,["modelValue"]),r(n,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=e=>m.value=e),disabled:""},{default:t(()=>[p(" 禁用开启状态 ")]),_:1},8,["modelValue"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-overlay-controlled.CkE0xeX2.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as a,f as t,c as l,w as o,r,o as u,a as p,b as i}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const n=a({__name:"controlled",setup(a){const n=t(!1);return(a,t)=>{const _=e,v=s,d=r("global-ku-root");return u(),l(d,null,{default:o(()=>[p("div",{class:"p-4"},[i(_,{label:"显示弹窗",onClick:t[0]||(t[0]=()=>n.value=!0)}),i(v,{visible:n.value,"onUpdate:visible":t[1]||(t[1]=s=>n.value=s)},{default:o(()=>[p("div",{class:"p-4 bg-page rounded-lg"},[p("span",null,"您可以在这里放置任何内容。")])]),_:1},8,["visible"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-picker-base.KoU-h6oc.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-picker.vue_vue_type_script_setup_true_lang.DxMCtJr-.js";import{e as a,f as l,c as s,w as u,r,o as t,a as o,b as p}from"./index-CA6UagU_.js";import"./sk-roller.vue_vue_type_script_setup_true_lang.CuUGw2Ph.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./use-parent.Dwjp3nL8.js";const n=a({__name:"base",setup(a){const n=l("banana"),_=[{label:"苹果",value:"apple"},{label:"香蕉",value:"banana"},{label:"橙子",value:"orange"},{label:"葡萄",value:"grape"},{label:"草莓",value:"strawberry"}];return(a,l)=>{const i=e,m=r("global-ku-root");return t(),s(m,null,{default:u(()=>[o("div",{class:"w-full p-4"},[p(i,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=e=>n.value=e),columns:_},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-group-size.C8xjCKJ8.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as s,f as o,c as t,w as l,r as u,o as r,a as p,b as i}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const _=s({__name:"group-size",setup(s){const _=o("");return(s,o)=>{const n=a,d=e,m=u("global-ku-root");return r(),t(m,null,{default:l(()=>[p("div",{class:"p-4"},[i(d,{modelValue:_.value,"onUpdate:modelValue":o[0]||(o[0]=e=>_.value=e)},{default:l(()=>[i(n,{value:"option1",label:"黄山",size:"large"}),i(n,{value:"option2",label:"庐山"}),i(n,{value:"option3",label:"雁荡山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-loading.CXMyPhzg.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as a}from"./sk-spinner.g15YERIx.js";import{_ as r,c as t,w as o,r as i,o as l,a as p,b as n,d as u}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const _=r({},[["render",function(r,_){const d=a,m=e,c=s,f=i("global-ku-root");return l(),t(f,null,{default:o(()=>[p("div",{class:"p-4 flex flex-wrap gap-3"},[n(m,{disabled:""},{default:o(()=>[n(d,{color:"current",size:"small"}),u(" 加载中... ")]),_:1}),n(m,{disabled:""},{default:o(()=>[n(c,{name:"i-lucide:loader",size:"32rpx",clax:"animate-spin"}),u(" 自定义加载图标 ")]),_:1})])]),_:1})}]]);export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-indeterminate.Ga-XS3mq.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as l,f as a,c as t,w as s,r as u,o,a as r,b as n}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=l({__name:"indeterminate",setup(l){const p=a(!1),i=a(!1);return(l,a)=>{const m=e,d=u("global-ku-root");return o(),t(d,null,{default:s(()=>[r("div",{class:"flex flex-col p-4 gap-3"},[n(m,{modelValue:p.value,"onUpdate:modelValue":a[0]||(a[0]=e=>p.value=e),label:"正常状态"},null,8,["modelValue"]),n(m,{modelValue:i.value,"onUpdate:modelValue":a[1]||(a[1]=e=>i.value=e),indeterminate:!0,label:"半选状态"},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-step.DJvB1fkP.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as l,f as a,c as s,w as t,r as u,o,a as p,b as r}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"step",setup(l){const n=a(0),d=a(0);return(l,a)=>{const m=e,_=u("global-ku-root");return o(),s(_,null,{default:t(()=>[p("div",{class:"flex flex-col p-4 gap-3"},[r(m,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),step:5,placeholder:"步长 5"},null,8,["modelValue"]),r(m,{modelValue:d.value,"onUpdate:modelValue":a[1]||(a[1]=e=>d.value=e),step:.1,placeholder:"步长 0.1"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-orientation.CxNY4EXB.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as o,f as t,c as s,w as l,r,o as u,a as i,b as p}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const n=o({__name:"orientation",setup(o){const n=t("");return(o,t)=>{const _=a,d=e,m=r("global-ku-root");return u(),s(m,null,{default:l(()=>[i("div",{class:"p-4"},[p(d,{modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=e=>n.value=e),orientation:"horizontal"},{default:l(()=>[p(_,{value:"option1",label:"黄山"}),p(_,{value:"option2",label:"庐山"}),p(_,{value:"option3",label:"雁荡山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/picker/item-height.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 25 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/utils/format.ts: -------------------------------------------------------------------------------- 1 | import { isNil } from './is' 2 | 3 | /** 4 | * 格式化值尺寸单位 5 | * @description 数值型(包括字符串类型)均默认采用rpx,否则原样返回 6 | */ 7 | export function formatSize(size: string | number) { 8 | const isNumeric = !Number.isNaN(Number(size)) 9 | return isNumeric ? `${size}rpx` : size 10 | } 11 | 12 | /** 13 | * 限制数值范围的工具函数 14 | * @param num 要限制的数值 15 | * @param min 最小值 16 | * @param max 最大值 17 | * @returns 限制后的数值 18 | */ 19 | export function clamp(num: number, min: number, max: number): number { 20 | return Math.min(Math.max(num, min), max) 21 | } 22 | 23 | /** 24 | * 将值转换为数组,无效值返回空数组 25 | * @param value 要转换的值 26 | */ 27 | 28 | export function toArray(value: T): T[] { 29 | if (isNil(value)) { 30 | return [] 31 | } 32 | 33 | return Array.isArray(value) ? value : [value] 34 | } 35 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-group-disabled.Coexfx6C.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as o,f as s,c as t,w as l,r as u,o as r,a as p,b as i}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const _=o({__name:"group-disabled",setup(o){const _=s("option1");return(o,s)=>{const d=a,n=e,m=u("global-ku-root");return r(),t(m,null,{default:l(()=>[p("div",{class:"p-4"},[i(n,{modelValue:_.value,"onUpdate:modelValue":s[0]||(s[0]=e=>_.value=e),disabled:""},{default:l(()=>[i(d,{value:"option1",label:"黄山"}),i(d,{value:"option2",label:"庐山"}),i(d,{value:"option3",label:"雁荡山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-label.C6UrvSi2.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as a,f as l,c as s,w as t,r as u,o,a as r,b as p,d as _}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const d=a({__name:"label",setup(a){const d=l(!1),n=l(!0);return(a,l)=>{const m=e,i=u("global-ku-root");return o(),s(i,null,{default:t(()=>[r("div",{class:"flex flex-col p-4 gap-3"},[p(m,{modelValue:d.value,"onUpdate:modelValue":l[0]||(l[0]=e=>d.value=e)},{default:t(()=>[_(" 我同意用户协议和隐私政策 ")]),_:1},8,["modelValue"]),p(m,{modelValue:n.value,"onUpdate:modelValue":l[1]||(l[1]=e=>n.value=e),label:"接收产品更新和营销信息"},null,8,["modelValue"])])]),_:1})}}});export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-size.Ce98ny4p.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as s,f as l,c as u,w as r,r as t,o,a as i,b as m}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const p=s({__name:"size",setup(s){const p=l("small");return(s,l)=>{const _=a,d=e,n=t("global-ku-root");return o(),u(n,null,{default:r(()=>[i("div",{class:"p-4"},[m(d,{modelValue:p.value,"onUpdate:modelValue":l[0]||(l[0]=e=>p.value=e)},{default:r(()=>[m(_,{label:"小型单项框",value:"small",size:"small"}),m(_,{label:"中型单项框",value:"medium",size:"medium"}),m(_,{label:"大型单项框",value:"large",size:"large"})]),_:1},8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-disabled.DrcqtkCI.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as l,f as a,c as s,w as t,r as u,o,a as r,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const d=l({__name:"disabled",setup(l){const d=a(""),n=a("这是禁用状态的文本域");return(l,a)=>{const _=e,i=u("global-ku-root");return o(),s(i,null,{default:t(()=>[r("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(_,{modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=e=>d.value=e),placeholder:"正常状态"},null,8,["modelValue"]),p(_,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=e=>n.value=e),disabled:"",placeholder:"禁用状态"},null,8,["modelValue"])])]),_:1})}}});export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-disabled.COFq54Lf.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as l,f as a,c as s,w as u,r as o,o as t,a as r,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const d=l({__name:"disabled",setup(l){const d=a(10),n=a(20);return(l,a)=>{const i=e,m=o("global-ku-root");return t(),s(m,null,{default:u(()=>[r("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(i,{modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=e=>d.value=e),placeholder:"正常状态"},null,8,["modelValue"]),p(i,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=e=>n.value=e),disabled:"",placeholder:"禁用状态"},null,8,["modelValue"])])]),_:1})}}});export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-readonly.DYV4a34J.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as l,f as a,c as u,w as o,r as s,o as t,a as r,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"readonly",setup(l){const n=a(10),d=a(20);return(l,a)=>{const m=e,_=s("global-ku-root");return t(),u(_,null,{default:o(()=>[r("div",{class:"flex flex-col p-4 gap-3 w-full"},[p(m,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),placeholder:"正常状态"},null,8,["modelValue"]),p(m,{modelValue:d.value,"onUpdate:modelValue":a[1]||(a[1]=e=>d.value=e),readonly:"",placeholder:"只读状态"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-toast-base.CLH7sy6b.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-toast.vue_vue_type_script_setup_true_lang.BXA4J7Pg.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as t,f as a,c as r,w as u,r as _,o,a as p,b as i}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const l=t({__name:"base",setup(t){const l=a(!1);return(t,a)=>{const n=e,v=s,m=_("global-ku-root");return o(),r(m,null,{default:u(()=>[p("div",{class:"p-4"},[i(n,{label:"显示提示",onClick:a[0]||(a[0]=()=>l.value=!0)}),i(v,{visible:l.value,"onUpdate:visible":a[1]||(a[1]=s=>l.value=s),message:"这是一个基础提示消息"},null,8,["visible"])])]),_:1})}}});export{l as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-min-max.B3oNLPcO.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as a,f as l,c as u,w as s,r as o,o as t,a as r,b as m}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=a({__name:"min-max",setup(a){const n=l(0),p=l(100);return(a,l)=>{const i=e,d=o("global-ku-root");return t(),u(d,null,{default:s(()=>[r("div",{class:"flex flex-col p-4 gap-3"},[m(i,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=e=>n.value=e),min:0,max:10,placeholder:"范围 0-10"},null,8,["modelValue"]),m(i,{modelValue:p.value,"onUpdate:modelValue":l[1]||(l[1]=e=>p.value=e),min:10,max:100,placeholder:"范围 10-100"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-group-controlled.uQA66h7U.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox-group.vue_vue_type_script_setup_true_lang.__cUSCGS.js";import{_ as o}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as t,f as s,c as u,w as a,r,o as p,b as l}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./field.Ccjhm7Cj.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";const _=t({__name:"group-controlled",setup(t){const _=s(["option1","option2"]);return(t,s)=>{const i=o,n=e,m=r("global-ku-root");return p(),u(m,null,{default:a(()=>[l(n,{modelValue:_.value,"onUpdate:modelValue":s[0]||(s[0]=e=>_.value=e)},{default:a(()=>[l(i,{value:"option1",label:"长白山"}),l(i,{value:"option2",label:"张家界"})]),_:1},8,["modelValue"])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-number-input-step-strictly.QGnPJOOK.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-number-input.vue_vue_type_script_setup_true_lang.4QX3HZim.js";import{e as l,f as t,c as s,w as a,r as u,o,a as p,b as r}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"step-strictly",setup(l){const n=t(7),d=t(10);return(l,t)=>{const i=e,m=u("global-ku-root");return o(),s(m,null,{default:a(()=>[p("div",{class:"flex flex-col p-4 gap-3"},[r(i,{modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=e=>n.value=e),step:5,placeholder:"普通步长模式"},null,8,["modelValue"]),r(i,{modelValue:d.value,"onUpdate:modelValue":t[1]||(t[1]=e=>d.value=e),step:5,"step-strictly":"",placeholder:"严格步长模式"},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/overlay/z-index.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 28 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-value.DqkTYEZ4.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as t,f as o,c as s,w as u,r as l,o as r,a as p,b as _,d as i}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const d=t({__name:"value",setup(t){const d=o("option1");return(t,o)=>{const n=a,m=e,v=l("global-ku-root");return r(),s(v,null,{default:u(()=>[p("div",{class:"p-4"},[_(m,{modelValue:d.value,"onUpdate:modelValue":o[0]||(o[0]=e=>d.value=e)},{default:u(()=>[_(n,{value:"option1"},{default:u(()=>[i(" 九华山 ")]),_:1}),_(n,{value:"option2"},{default:u(()=>[i(" 梵净山 ")]),_:1}),_(n,{value:"option3"},{default:u(()=>[i(" 三清山 ")]),_:1})]),_:1},8,["modelValue"])])]),_:1})}}});export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-toast-controlled.PXcaDosv.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-toast.vue_vue_type_script_setup_true_lang.BXA4J7Pg.js";import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as t,f as a,c as o,w as r,r as u,o as _,a as l,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const i=t({__name:"controlled",setup(t){const i=a(!1);return(t,a)=>{const n=s,v=e,m=u("global-ku-root");return _(),o(m,null,{default:r(()=>[l("div",{class:"p-4"},[p(n,{label:"展示Toast",onClick:a[0]||(a[0]=()=>i.value=!0)}),p(v,{visible:i.value,"onUpdate:visible":a[1]||(a[1]=e=>i.value=e),message:"Hello World"},null,8,["visible"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-placement.CEzxWa3w.js: -------------------------------------------------------------------------------- 1 | import{_ as t}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as e,c as a,w as s,r as l,o as n,a as o,b as r}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const d=e({},[["render",function(e,d){const u=t,i=l("global-ku-root");return n(),a(i,null,{default:s(()=>[o("div",{class:"grid grid-cols-2 gap-6 p-4"},[r(u,{content:"6",placement:"top-left"},{default:s(()=>[o("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),r(u,{content:"6",placement:"top-right"},{default:s(()=>[o("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),r(u,{content:"6",placement:"bottom-left"},{default:s(()=>[o("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),r(u,{content:"6",placement:"bottom-right"},{default:s(()=>[o("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1})])]),_:1})}]]);export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-textarea-show-count.GLG-rQVX.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-textarea.vue_vue_type_script_setup_true_lang.CHHYd7Vv.js";import{e as l,f as a,c as o,w as t,r as s,o as u,a as r,b as n}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=l({__name:"show-count",setup(l){const p=a(""),d=a("这是一些示例文本");return(l,a)=>{const m=e,_=s("global-ku-root");return u(),o(_,null,{default:t(()=>[r("div",{class:"flex flex-col p-4 gap-3 w-full"},[n(m,{modelValue:p.value,"onUpdate:modelValue":a[0]||(a[0]=e=>p.value=e),"show-count":!1,placeholder:"不显示字数统计"},null,8,["modelValue"]),n(m,{modelValue:d.value,"onUpdate:modelValue":a[1]||(a[1]=e=>d.value=e),"show-count":!0,"max-length":100,placeholder:"显示字数统计"},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-value.gSx0nIJc.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox-group.vue_vue_type_script_setup_true_lang.__cUSCGS.js";import{_ as s}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as t,f as a,c as o,w as u,r as l,o as p,a as r,b as _}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./field.Ccjhm7Cj.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";const i=t({__name:"value",setup(t){const i=a([]);return(t,a)=>{const n=s,m=e,v=l("global-ku-root");return p(),o(v,null,{default:u(()=>[r("div",{class:"p-4"},[_(m,{modelValue:i.value,"onUpdate:modelValue":a[0]||(a[0]=e=>i.value=e)},{default:u(()=>[_(n,{value:"option1",label:"黄山"}),_(n,{value:"option2",label:"庐山"}),_(n,{value:"option3",label:"雁荡山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/utils/grammar.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 动画帧请求 ID 类型 3 | * 在不同环境下可能是 number 或 NodeJS.Timeout 4 | */ 5 | export type AnimationFrameId = number | NodeJS.Timeout 6 | 7 | /** 8 | * 跨平台的动画帧请求函数 9 | * 在 H5 环境使用原生 requestAnimationFrame,在非 H5 环境使用 setTimeout 模拟 10 | * @param cb 回调函数 11 | * @returns 返回可用于取消的 ID 12 | */ 13 | export function skRequestAnimationFrame(cb: () => void): AnimationFrameId { 14 | // #ifndef H5 15 | return setTimeout(cb, 16) // 约 60fps 16 | // #endif 17 | // #ifdef H5 18 | return requestAnimationFrame(cb) 19 | // #endif 20 | } 21 | 22 | /** 23 | * 取消动画帧请求 24 | * @param id skRequestAnimationFrame 返回的 ID 25 | */ 26 | export function skCancelAnimationFrame(id: AnimationFrameId): void { 27 | // #ifndef H5 28 | clearTimeout(id as NodeJS.Timeout) 29 | // #endif 30 | // #ifdef H5 31 | cancelAnimationFrame(id as number) 32 | // #endif 33 | } 34 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-toast-closable.BaiQ8ZWH.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-toast.vue_vue_type_script_setup_true_lang.BXA4J7Pg.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as t,f as a,c as r,w as u,r as o,o as _,a as l,b as p}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const i=t({__name:"closable",setup(t){const i=a(!1);return(t,a)=>{const n=e,v=s,m=o("global-ku-root");return _(),r(m,null,{default:u(()=>[l("div",{class:"p-4"},[p(n,{label:"显示可关闭提示",onClick:a[0]||(a[0]=()=>i.value=!0)}),p(v,{visible:i.value,"onUpdate:visible":a[1]||(a[1]=s=>i.value=s),message:"这是一个可关闭的提示消息",closable:!0,duration:0},null,8,["visible"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-slider-size.C44nbCpI.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-slider.vue_vue_type_script_setup_true_lang.IBSPPtTE.js";import{e as l,f as a,c as u,w as s,r as o,o as t,a as d,b as m}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const r=l({__name:"size",setup(l){const r=a(30),n=a(50),i=a(70);return(l,a)=>{const p=e,v=o("global-ku-root");return t(),u(v,null,{default:s(()=>[d("div",{class:"flex flex-col p-4 gap-4 w-full"},[m(p,{modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=e=>r.value=e),"show-value":"",size:"small"},null,8,["modelValue"]),m(p,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=e=>n.value=e),"show-value":"",size:"medium"},null,8,["modelValue"]),m(p,{modelValue:i.value,"onUpdate:modelValue":a[2]||(a[2]=e=>i.value=e),"show-value":"",size:"large"},null,8,["modelValue"])])]),_:1})}}});export{r as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-feedback-toast-backdrop.CpU5F9pt.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-toast.vue_vue_type_script_setup_true_lang.BXA4J7Pg.js";import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as t,f as a,c as r,w as u,r as o,o as _,a as p,b as i}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const l=t({__name:"backdrop",setup(t){const l=a(!1);return(t,a)=>{const n=s,v=e,m=o("global-ku-root");return _(),r(m,null,{default:u(()=>[p("div",{class:"p-4"},[i(n,{label:"显示带背景层的提示",onClick:a[0]||(a[0]=()=>l.value=!0)}),i(v,{visible:l.value,"onUpdate:visible":a[1]||(a[1]=e=>l.value=e),message:"这是一个带背景层的提示消息",backdrop:!0,duration:3e3},null,8,["visible"])])]),_:1})}}});export{l as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-form-size.D37MClCh.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-form.vue_vue_type_script_setup_true_lang.C4zzUO0g.js";import{_ as s}from"./sk-field.vue_vue_type_script_setup_true_lang.D9Tvordn.js";import{_ as r}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{_ as t,c as a,w as l,r as o,o as u,a as _,b as p}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./form.pFMRjkfN.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const i=t({},[["render",function(t,i){const m=r,n=s,f=e,d=o("global-ku-root");return u(),a(d,null,{default:l(()=>[_("div",{class:"p-4 w-full"},[p(f,{size:"small"},{default:l(()=>[p(n,{name:"username",label:"用户名"},{default:l(()=>[p(m,{placeholder:"请输入用户名"})]),_:1}),p(n,{name:"hobby",label:"爱好",size:"large"},{default:l(()=>[p(m,{placeholder:"请输入爱好"})]),_:1})]),_:1})])]),_:1})}]]);export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-custom.Cav57aOU.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as a,c as o,w as r,r as s,o as t,a as u,b as d}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const n=l({__name:"custom",setup(l){const n=a(""),p=a("");return(l,a)=>{const m=e,c=s("global-ku-root");return t(),o(c,null,{default:r(()=>[u("div",{class:"flex flex-col gap-3 p-4 w-full"},[d(m,{modelValue:n.value,"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),placeholder:"圆角输入框",clax:{root:"rounded-full bg-transparent border-2 border-solid border-brand"}},null,8,["modelValue"]),d(m,{modelValue:p.value,"onUpdate:modelValue":a[1]||(a[1]=e=>p.value=e),placeholder:"渐变背景输入框",clax:{root:"bg-gradient-to-r from-brand/10 to-success/10 border border-brand/30"}},null,8,["modelValue"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-type.DhFpkWlf.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as a,c as u,w as o,r as t,o as s,a as p,b as d}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const r=l({__name:"type",setup(l){const r=a(),n=a(),m=a();return(l,a)=>{const i=e,c=t("global-ku-root");return s(),u(c,null,{default:o(()=>[p("div",{class:"flex flex-col p-4 gap-3 w-full"},[d(i,{modelValue:r.value,"onUpdate:modelValue":a[0]||(a[0]=e=>r.value=e),type:"text",placeholder:"请输入文本"},null,8,["modelValue"]),d(i,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=e=>n.value=e),type:"number",placeholder:"请输入数字"},null,8,["modelValue"]),d(i,{modelValue:m.value,"onUpdate:modelValue":a[2]||(a[2]=e=>m.value=e),type:"digit",placeholder:"请输入带小数点的数字"},null,8,["modelValue"])])]),_:1})}}});export{r as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-input-size.CCQUkJN3.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{e as l,f as a,c as u,w as o,r as s,o as t,a as d,b as r}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const m=l({__name:"size",setup(l){const m=a(""),p=a(""),n=a("");return(l,a)=>{const i=e,c=s("global-ku-root");return t(),u(c,null,{default:o(()=>[d("div",{class:"flex flex-col p-4 gap-3 w-full"},[r(i,{modelValue:m.value,"onUpdate:modelValue":a[0]||(a[0]=e=>m.value=e),size:"small",placeholder:"小尺寸输入框"},null,8,["modelValue"]),r(i,{modelValue:p.value,"onUpdate:modelValue":a[1]||(a[1]=e=>p.value=e),size:"medium",placeholder:"中尺寸输入框"},null,8,["modelValue"]),r(i,{modelValue:n.value,"onUpdate:modelValue":a[2]||(a[2]=e=>n.value=e),size:"large",placeholder:"大尺寸输入框"},null,8,["modelValue"])])]),_:1})}}});export{m as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-group-color.PAvB4U0C.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as o}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as a,f as l,c as t,w as r,r as s,o as u,a as p,b as n}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const i=a({__name:"group-color",setup(a){const i=l("");return(a,l)=>{const _=o,d=e,m=s("global-ku-root");return u(),t(m,null,{default:r(()=>[p("div",{class:"p-4"},[n(d,{modelValue:i.value,"onUpdate:modelValue":l[0]||(l[0]=e=>i.value=e),color:"warning"},{default:r(()=>[n(_,{value:"option1",label:"北岳恒山"}),n(_,{value:"option2",label:"西岳华山"}),n(_,{value:"option3",label:"中岳嵩山"}),n(_,{value:"option4",label:"东岳泰山",color:"danger"}),n(_,{value:"option5",label:"南岳衡山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-switch-size.WKP7ptvL.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-switch.vue_vue_type_script_setup_true_lang.e5Bovpr8.js";import{e as a,f as l,c as s,w as u,r as o,o as t,a as d,b as m,d as r}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./field.Ccjhm7Cj.js";import"./index.Budg9xHA.js";const i=a({__name:"size",setup(a){const i=l(!0);return(a,l)=>{const p=e,n=o("global-ku-root");return t(),s(n,null,{default:u(()=>[d("div",{class:"p-4 flex flex-col gap-3"},[m(p,{modelValue:i.value,"onUpdate:modelValue":l[0]||(l[0]=e=>i.value=e),size:"small"},{default:u(()=>[r(" 小尺寸开关 ")]),_:1},8,["modelValue"]),m(p,{modelValue:i.value,"onUpdate:modelValue":l[1]||(l[1]=e=>i.value=e),size:"medium"},{default:u(()=>[r(" 中等尺寸开关 ")]),_:1},8,["modelValue"]),m(p,{modelValue:i.value,"onUpdate:modelValue":l[2]||(l[2]=e=>i.value=e),size:"large"},{default:u(()=>[r(" 大尺寸开关 ")]),_:1},8,["modelValue"])])]),_:1})}}});export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-orientation.D0T7Spd2.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox-group.vue_vue_type_script_setup_true_lang.__cUSCGS.js";import{_ as t}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as o,f as a,c as s,w as u,r as l,o as r,a as p,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./field.Ccjhm7Cj.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";const _=o({__name:"orientation",setup(o){const _=a([]);return(o,a)=>{const n=t,m=e,c=l("global-ku-root");return r(),s(c,null,{default:u(()=>[p("div",{class:"p-4"},[i(m,{modelValue:_.value,"onUpdate:modelValue":a[0]||(a[0]=e=>_.value=e),orientation:"horizontal"},{default:u(()=>[i(n,{value:"option1",label:"黄山"}),i(n,{value:"option2",label:"庐山"}),i(n,{value:"option3",label:"雁荡山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-form-orientation.CJuAWtKz.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-form.vue_vue_type_script_setup_true_lang.C4zzUO0g.js";import{_ as t}from"./sk-field.vue_vue_type_script_setup_true_lang.D9Tvordn.js";import{_ as r}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{_ as s,c as a,w as o,r as l,o as i,a as p,b as u}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./form.pFMRjkfN.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const _=s({},[["render",function(s,_){const n=r,m=t,d=e,f=l("global-ku-root");return i(),a(f,null,{default:o(()=>[p("div",{class:"p-4 w-full"},[u(d,{orientation:"horizontal"},{default:o(()=>[u(m,{name:"username",label:"用户名",orientation:"vertical"},{default:o(()=>[u(n,{placeholder:"请输入用户名"})]),_:1}),u(m,{name:"password",label:"密码"},{default:o(()=>[u(n,{placeholder:"请输入密码"})]),_:1})]),_:1})])]),_:1})}]]);export{_ as default}; 2 | -------------------------------------------------------------------------------- /packages/skiyee-uni-ui/src/validator/schema.type.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Schema 验证器类型定义 3 | * 4 | * 定义 Schema 验证器相关的类型接口。 5 | * 6 | * @author sKy(skiyee) 7 | * @qq 319619193 8 | * @github https://github.com/skiyee 9 | * 10 | * @see 更多文档: https://skiyee-ui.netlify.app/docs/ 11 | */ 12 | 13 | import type { StandardSchemaV1 } from '@standard-schema/spec' 14 | 15 | // Schema 主接口 16 | export type Schema< 17 | Input extends object = object, 18 | Output extends object = Input, 19 | > = StandardSchemaV1 20 | 21 | // 验证结果类型 22 | export type SchemaResult = StandardSchemaV1.Result 23 | 24 | // 验证问题接口 25 | export type SchemaIssue = StandardSchemaV1.Issue 26 | 27 | // 类型推断工具 28 | export type SchemaInferInput< 29 | Schema extends StandardSchemaV1, 30 | > = StandardSchemaV1.InferInput 31 | 32 | export type SchemaInferOutput< 33 | Schema extends StandardSchemaV1, 34 | > = StandardSchemaV1.InferOutput 35 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-button-icon.DQ0Cb55H.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as a}from"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import{_ as s,c as u,w as i,r as l,o as t,a as r,b as p,d as n}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./form.pFMRjkfN.js";const o=s({},[["render",function(s,o){const _=a,d=e,c=l("global-ku-root");return t(),u(c,null,{default:i(()=>[r("div",{class:"p-4 flex flex-wrap gap-2"},[p(d,null,{default:i(()=>[p(_,{name:"i-lucide:cup-soda",size:"16px"})]),_:1}),p(d,null,{default:i(()=>[p(_,{name:"i-lucide:search",size:"16px"}),n(" 搜索 ")]),_:1}),p(d,null,{default:i(()=>[n(" 添加 "),p(_,{name:"i-lucide:book-marked",size:"16px"})]),_:1}),p(d,null,{default:i(()=>[p(_,{name:"i-lucide:search",size:"16px"}),n(" 左右 "),p(_,{name:"i-lucide:airplay",size:"16px"})]),_:1})])]),_:1})}]]);export{o as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-overlay-dismissable.CfqlWpm7.js: -------------------------------------------------------------------------------- 1 | import{_ as s}from"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import{_ as e}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as a,f as l,c as t,w as o,r,o as i,a as u,b as n}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const p=a({__name:"dismissable",setup(a){const p=l(!1);return(a,l)=>{const _=e,m=s,c=r("global-ku-root");return i(),t(c,null,{default:o(()=>[u("div",{class:"p-4"},[n(_,{label:"显示弹窗",onClick:l[0]||(l[0]=()=>p.value=!0)}),n(m,{visible:p.value,"onUpdate:visible":l[2]||(l[2]=s=>p.value=s),dismissable:!1},{default:o(()=>[u("div",{class:"text-center p-4 bg-page rounded-lg"},[u("span",{class:"block mb-2"},"点击背景层不会关闭弹窗"),n(_,{label:"手动关闭",color:"warning",size:"small",onClick:l[1]||(l[1]=()=>p.value=!1)})])]),_:1},8,["visible"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-feedback/toast/placement.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 23 | -------------------------------------------------------------------------------- /examples/uni/src/pages-form/picker/multi-column.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 32 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-overlay-backdrop.DQvybdHq.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-overlay.vue_vue_type_script_setup_true_lang.BM-WjAoQ.js";import{_ as s}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{e as a,f as t,c as l,w as o,r,o as u,a as i,b as p}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const n=a({__name:"backdrop",setup(a){const n=t(!1);return(a,t)=>{const _=s,c=e,v=r("global-ku-root");return u(),l(v,null,{default:o(()=>[i("div",{class:"p-4"},[p(_,{label:"显示弹窗",onClick:t[0]||(t[0]=()=>n.value=!0)}),p(c,{visible:n.value,"onUpdate:visible":t[2]||(t[2]=e=>n.value=e),backdrop:!1},{default:o(()=>[i("div",{class:"text-center p-4 text-white bg-page rounded-lg"},[i("span",{class:"block mb-3"},"这个弹窗没有背景层,需要手动关闭"),p(_,{label:"手动关闭",color:"danger",size:"small",onClick:t[1]||(t[1]=()=>n.value=!1)})])]),_:1},8,["visible"])])]),_:1})}}});export{n as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-group-size.WvMwHsAC.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox-group.vue_vue_type_script_setup_true_lang.__cUSCGS.js";import{_ as o}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as t,f as s,c as a,w as u,r as p,o as l,a as r,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./field.Ccjhm7Cj.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";const _=t({__name:"group-size",setup(t){const _=s(["option1","option2","option3"]);return(t,s)=>{const n=o,m=e,c=p("global-ku-root");return l(),a(c,null,{default:u(()=>[r("div",{class:"p-4"},[i(m,{modelValue:_.value,"onUpdate:modelValue":s[0]||(s[0]=e=>_.value=e)},{default:u(()=>[i(n,{value:"option1",label:"峨眉山"}),i(n,{value:"option2",label:"武当山"}),i(n,{value:"option3",label:"老君山",size:"large"})]),_:1},8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-radio-color.AlpZLQ7L.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-radio-group.vue_vue_type_script_setup_true_lang.Bx5vdBXR.js";import{_ as a}from"./sk-radio.vue_vue_type_script_setup_true_lang.D2nKJ0wv.js";import{e as l,f as r,c as o,w as s,r as u,o as t,a as n,b as p}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";const _=l({__name:"color",setup(l){const _=r("");return(l,r)=>{const c=a,d=e,i=u("global-ku-root");return t(),o(i,null,{default:s(()=>[n("div",{class:"p-4"},[p(d,{modelValue:_.value,"onUpdate:modelValue":r[0]||(r[0]=e=>_.value=e)},{default:s(()=>[p(c,{value:"brand",label:"品牌单选框",color:"brand"}),p(c,{value:"success",label:"成功单选框",color:"success"}),p(c,{value:"warning",label:"警告单选框",color:"warning"}),p(c,{value:"danger",label:"危险单选框",color:"danger"}),p(c,{value:"neutral",label:"中性单选框",color:"neutral"})]),_:1},8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/logo-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/public/logo-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/roller/item-height.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 30 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-size.DJsMkwl-.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as l,f as a,c as u,w as s,r as o,o as t,a as m,b as r}from"./index-CA6UagU_.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const p=l({__name:"size",setup(l){const p=a(!0),d=a(!0),n=a(!0);return(l,a)=>{const i=e,_=o("global-ku-root");return t(),u(_,null,{default:s(()=>[m("div",{class:"flex flex-col p-4 gap-3"},[r(i,{modelValue:p.value,"onUpdate:modelValue":a[0]||(a[0]=e=>p.value=e),label:"小型复选框",size:"small"},null,8,["modelValue"]),r(i,{modelValue:d.value,"onUpdate:modelValue":a[1]||(a[1]=e=>d.value=e),label:"中型复选框",size:"medium"},null,8,["modelValue"]),r(i,{modelValue:n.value,"onUpdate:modelValue":a[2]||(a[2]=e=>n.value=e),label:"大型复选框",size:"large"},null,8,["modelValue"])])]),_:1})}}});export{p as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-form-label-width.B4ZYotZl.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-form.vue_vue_type_script_setup_true_lang.C4zzUO0g.js";import{_ as t}from"./sk-field.vue_vue_type_script_setup_true_lang.D9Tvordn.js";import{_ as s}from"./sk-input.vue_vue_type_script_setup_true_lang.KuB6n2z2.js";import{_ as r,c as a,w as o,r as l,o as p,a as u,b as _}from"./index-CA6UagU_.js";import"./use-provide.B_f5e336.js";import"./form.pFMRjkfN.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./field.Ccjhm7Cj.js";const i=r({},[["render",function(r,i){const n=s,m=t,d=e,f=l("global-ku-root");return p(),a(f,null,{default:o(()=>[u("div",{class:"p-4 w-full"},[_(d,{"label-width":"40px",orientation:"horizontal"},{default:o(()=>[_(m,{name:"username","label-width":"60px",label:"用户名"},{default:o(()=>[_(n,{placeholder:"请输入用户名"})]),_:1}),_(m,{name:"password",label:"密码"},{default:o(()=>[_(n,{placeholder:"请输入密码"})]),_:1})]),_:1})])]),_:1})}]]);export{i as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-picker-controlled.CUWz42KD.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-picker.vue_vue_type_script_setup_true_lang.DxMCtJr-.js";import{e as a,f as l,c as s,w as t,r as u,o as r,a as o,b as n,P as p,d as i,t as m}from"./index-CA6UagU_.js";import"./sk-roller.vue_vue_type_script_setup_true_lang.CuUGw2Ph.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./use-parent.Dwjp3nL8.js";const _=a({__name:"controlled",setup(a){const _=l("orange"),d=[{label:"苹果",value:"apple"},{label:"香蕉",value:"banana"},{label:"橙子",value:"orange"},{label:"葡萄",value:"grape"},{label:"草莓",value:"strawberry"}];return(a,l)=>{const v=e,c=p,b=u("global-ku-root");return r(),s(b,null,{default:t(()=>[o("div",{class:"w-full p-4"},[n(v,{modelValue:_.value,"onUpdate:modelValue":l[0]||(l[0]=e=>_.value=e),columns:d},null,8,["modelValue"]),n(c,{class:"text-body-medium font-medium"},{default:t(()=>[i(" 选中值:"+m(JSON.stringify(_.value)),1)]),_:1})])]),_:1})}}});export{_ as default}; 2 | -------------------------------------------------------------------------------- /examples/uni/src/pages-basic/roller/visible-count.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 30 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-color.BYprcV88.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as s,c as t,w as a,r as l,o as n,a as r,b as o}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";const d=s({},[["render",function(s,d){const u=e,c=l("global-ku-root");return n(),t(c,null,{default:a(()=>[r("div",{class:"flex flex-wrap items-center gap-4 p-4"},[o(u,{content:"6",color:"brand"},{default:a(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),o(u,{content:"6",color:"success"},{default:a(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),o(u,{content:"6",color:"warning"},{default:a(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),o(u,{content:"6",color:"danger"},{default:a(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1}),o(u,{content:"6",color:"neutral"},{default:a(()=>[r("div",{class:"size-9 rounded-lg bg-neutral-200"})]),_:1})])]),_:1})}]]);export{d as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-basic-badge-hidden.DEkpZRzM.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-badge.vue_vue_type_script_setup_true_lang.DyLJIlq7.js";import{_ as t}from"./sk-button.vue_vue_type_script_setup_true_lang.BJfvD4eG.js";import{_ as s,c as a,w as l,r as u,o as n,a as o,b as r,d}from"./index-CA6UagU_.js";import"./index.Budg9xHA.js";import"./use-parent.Dwjp3nL8.js";import"./form.pFMRjkfN.js";const _=s({},[["render",function(s,_){const p=t,f=e,i=u("global-ku-root");return n(),a(i,null,{default:l(()=>[o("div",{class:"flex flex-wrap items-center gap-4 p-4"},[r(f,{content:"6",hidden:!1},{default:l(()=>[r(p,null,{default:l(()=>[d("显示")]),_:1})]),_:1}),r(f,{content:"6",hidden:""},{default:l(()=>[r(p,null,{default:l(()=>[d("隐藏")]),_:1})]),_:1}),r(f,{shape:"dot",color:"success"},{default:l(()=>[r(p,null,{default:l(()=>[d("点状显示")]),_:1})]),_:1}),r(f,{shape:"dot",color:"warning",hidden:""},{default:l(()=>[r(p,null,{default:l(()=>[d("点状隐藏")]),_:1})]),_:1})])]),_:1})}]]);export{_ as default}; 2 | -------------------------------------------------------------------------------- /docs/public/h5/assets/pages-form-checkbox-group-color.BIJxMBuE.js: -------------------------------------------------------------------------------- 1 | import{_ as e}from"./sk-checkbox-group.vue_vue_type_script_setup_true_lang.__cUSCGS.js";import{_ as o}from"./sk-checkbox.vue_vue_type_script_setup_true_lang.C4lIFiU-.js";import{e as s,f as t,c as a,w as u,r as l,o as r,a as p,b as i}from"./index-CA6UagU_.js";import"./use-parent.Dwjp3nL8.js";import"./index.Budg9xHA.js";import"./use-provide.B_f5e336.js";import"./field.Ccjhm7Cj.js";import"./sk-icon.vue_vue_type_script_setup_true_lang.BZYJbJTT.js";const _=s({__name:"group-color",setup(s){const _=t(["option1","option2","option3"]);return(s,t)=>{const n=o,c=e,m=l("global-ku-root");return r(),a(m,null,{default:u(()=>[p("div",{class:"p-4"},[i(c,{modelValue:_.value,"onUpdate:modelValue":t[0]||(t[0]=e=>_.value=e),color:"success"},{default:u(()=>[i(n,{value:"option1",label:"峨眉山"}),i(n,{value:"option2",label:"武当山",color:"warning"}),i(n,{value:"option3",label:"老君山"})]),_:1},8,["modelValue"])])]),_:1})}}});export{_ as default}; 2 | --------------------------------------------------------------------------------