├── .eslintignore ├── .eslintrc.cjs ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ ├── feature_request.yml │ └── others.yml └── workflows │ ├── release.yml │ └── unit-test.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── CODE_OF_CONDUCT.md ├── CODE_OF_CONDUCT.zh-CN.md ├── CONTRIBUTING.md ├── CONTRIBUTING.zh-CN.md ├── LICENSE ├── README.md ├── components ├── Affix │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── affix.spec.ts.snap │ │ └── affix.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── types.d.ts │ │ └── utils.ts │ └── tsconfig.json ├── Alert │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── alert.spec.ts.snap │ │ ├── alert.spec.ts │ │ └── fixture │ │ │ ├── alert.close.test.svelte │ │ │ ├── alert.description.test.svelte │ │ │ ├── alert.icon.test.svelte │ │ │ └── alert.title.test.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── AutoComplete │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── auto-complete.spec.ts.snap │ │ ├── auto-complete.spec.ts │ │ └── fixture │ │ │ ├── autocomplete.basic.svelte │ │ │ ├── autocomplete.clear.svelte │ │ │ ├── autocomplete.default.svelte │ │ │ ├── autocomplete.disabled.svelte │ │ │ ├── autocomplete.fit.svelte │ │ │ └── autocomplete.slot.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── option.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Avatar │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── avatar.spec.ts.snap │ │ └── avatar.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Backtop │ ├── __test__ │ │ ├── backtop.spec.ts │ │ └── fixture │ │ │ └── backtop.test.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Badge │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── badge.spec.ts.snap │ │ └── badge.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Breadcrumb │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── breadcrumb.spec.ts.snap │ │ └── breadcrumb.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── BreadcrumbItem │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── breadcrumb-item.spec.ts.snap │ │ └── breadcrumb-item.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Button │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── button.spec.ts.snap │ │ ├── button.spec.ts │ │ └── fixtrue │ │ │ └── disabled.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── ButtonGroup │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Calendar │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── calendar.spec.ts.snap │ │ ├── calendar.spec.ts │ │ └── fixture │ │ │ ├── disabledDate.svelte │ │ │ ├── locale.svelte │ │ │ ├── mode.svelte │ │ │ ├── range.svelte │ │ │ ├── slot.dateCell.svelte │ │ │ ├── slot.dateFullCell.svelte │ │ │ ├── slot.header.svelte │ │ │ ├── slot.monthCell.svelte │ │ │ ├── slot.monthFullCell.svelte │ │ │ └── value.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── locale.ts │ │ ├── types.d.ts │ │ └── utils.ts │ └── tsconfig.json ├── Card │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── card.spec.ts.snap │ │ ├── card.spec.ts │ │ └── fixture │ │ │ ├── card.slot.default.test.svelte │ │ │ └── card.slot.header.test.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Carousel │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── carousel.spec.ts.snap │ │ ├── carousel.spec.ts │ │ └── fixture │ │ │ ├── api.goto.svelte │ │ │ ├── api.next.svelte │ │ │ ├── api.prev.svelte │ │ │ ├── arrow.always.svelte │ │ │ ├── arrow.hover.svelte │ │ │ ├── arrow.never.svelte │ │ │ ├── custom.svelte │ │ │ ├── event.api.svelte │ │ │ ├── event.play.svelte │ │ │ ├── event.svelte │ │ │ ├── init.svelte │ │ │ ├── loop.svelte │ │ │ ├── play.svelte │ │ │ ├── trigger.click.svelte │ │ │ └── trigger.hover.svelte │ ├── package.json │ ├── src │ │ ├── arrow.svelte │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Checkbox │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── checkbox.spec.ts.snap │ │ └── checkbox.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── CheckboxGroup │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── checkbox-group.spec.ts.snap │ │ ├── checkbox-group.spec.ts │ │ └── fixture │ │ │ ├── group.base.disabled.svelte │ │ │ ├── group.base.svelte │ │ │ ├── group.change.disabled.svelte │ │ │ ├── group.change.svelte │ │ │ ├── group.model.disabled.svelte │ │ │ ├── group.size.svelte │ │ │ ├── group.trigger.disabled.svelte │ │ │ └── group.trigger.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── ClientOnly │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Collapse │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── collapse.spec.ts.snap │ │ ├── collapse.spec.ts │ │ └── fixture │ │ │ ├── collapse.close.test.svelte │ │ │ ├── collapse.content.test.svelte │ │ │ └── collapse.title.test.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── CollapseWrapper │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── collapse-wrapper.spec.ts.snap │ │ └── collapse-wrapper.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── ColorPicker │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── color-picker.spec.ts.snap │ │ ├── color-picker.spec.ts │ │ └── fixtrue │ │ │ ├── control.svelte │ │ │ ├── event.formatChange.svelte │ │ │ ├── slot.default.svelte │ │ │ ├── slot.preset.svelte │ │ │ ├── slot.text.svelte │ │ │ └── slot.title.svelte │ ├── package.json │ ├── src │ │ ├── block.svelte │ │ ├── format.svelte │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── palette.svelte │ │ ├── preset.svelte │ │ ├── slider.svelte │ │ ├── types.d.ts │ │ └── utils.ts │ └── tsconfig.json ├── Contextmenu │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── contextmenu.spec.ts.snap │ │ ├── contextmenu.spec.ts │ │ └── fixture │ │ │ ├── contextmenu.base.svelte │ │ │ ├── contextmenu.disabled.svelte │ │ │ ├── contextmenu.event.change.svelte │ │ │ ├── contextmenu.event.contextmenu.svelte │ │ │ ├── contextmenu.item.disabled.svelte │ │ │ ├── contextmenu.item.divider.svelte │ │ │ ├── contextmenu.sub.disabled.svelte │ │ │ └── contextmenu.sub.svelte │ ├── package.json │ ├── src │ │ ├── contextmenu-item.svelte │ │ ├── contextmenu-sub-menu.svelte │ │ ├── contextmenu.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Countdown │ ├── __test__ │ │ └── countdown.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── types.d.ts │ │ └── utils.ts │ └── tsconfig.json ├── Descriptions │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── descriptions.spec.ts.snap │ │ ├── descriptions.spec.ts │ │ └── fixture │ │ │ ├── descriptions.direction.svelte │ │ │ ├── descriptions.extra.svelte │ │ │ └── descriptions.title.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── DescriptionsItem │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── descriptions-item.spec.ts.snap │ │ ├── descriptions-item.spec.ts │ │ └── fixture │ │ │ └── descriptions-item.label.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Divider │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── divider.spec.ts.snap │ │ ├── divider.spec.ts │ │ └── fixture │ │ │ └── divider.content.slot.test.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Drawer │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── drawer.spec.ts.snap │ │ ├── drawer.spec.ts │ │ └── fixture │ │ │ └── drawer.content.test.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Dropdown │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── dropdown.spec.ts.snap │ │ ├── dropdown.spec.ts │ │ └── fixture │ │ │ ├── change.svelte │ │ │ ├── command.svelte │ │ │ ├── disabled.svelte │ │ │ ├── disabledItem.svelte │ │ │ ├── divider.svelte │ │ │ ├── handleClose.svelte │ │ │ ├── handleOpen.svelte │ │ │ ├── maxHeight.svelte │ │ │ └── slots.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── item.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Ellipsis │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── ellipsis.spec.ts.snap │ │ └── ellipsis.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Empty │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── empty.spec.ts.snap │ │ ├── empty.spec.ts │ │ └── fixture │ │ │ ├── slot.default.svelte │ │ │ ├── slot.desc.svelte │ │ │ └── slot.image.svelte │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── no-data.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── EyeDropper │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Flex │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── flex.spec.ts.snap │ │ ├── fixture │ │ │ ├── align.svelte │ │ │ ├── gap.svelte │ │ │ ├── justify.svelte │ │ │ └── wrap.svelte │ │ └── flex.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Form │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── form.spec.ts.snap │ │ ├── fixture │ │ │ ├── clearValidateField.svelte │ │ │ ├── disabled.svelte │ │ │ ├── errorSlot.svelte │ │ │ ├── getForm.svelte │ │ │ ├── init.svelte │ │ │ ├── inputNumberReset.svelte │ │ │ ├── label.svelte │ │ │ ├── labelAlign.svelte │ │ │ ├── labelPosition.svelte │ │ │ ├── labelSlot.svelte │ │ │ ├── labelWidth.svelte │ │ │ ├── manualValidate.svelte │ │ │ ├── resetForm.svelte │ │ │ ├── setField.svelte │ │ │ ├── setForm.svelte │ │ │ ├── showMsg.svelte │ │ │ ├── size.svelte │ │ │ ├── validateEvent.svelte │ │ │ ├── validateEventSefField.svelte │ │ │ ├── validateEventvalidateField.svelte │ │ │ ├── validateField.svelte │ │ │ └── validateForm.svelte │ │ └── form.spec.ts │ ├── package.json │ ├── src │ │ ├── form-item.svelte │ │ ├── form.svelte │ │ ├── helpers │ │ │ ├── fields.ts │ │ │ ├── instance.ts │ │ │ └── rules.ts │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Grid │ ├── package.json │ ├── src │ │ ├── col.svelte │ │ ├── index.ts │ │ ├── row.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Icon │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── icon.spec.ts.snap │ │ ├── fixture │ │ │ └── customizable.icon.color.test.svelte │ │ └── icon.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Image │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── image.spec.ts.snap │ │ ├── fixture │ │ │ ├── fix.svelte │ │ │ └── placeholder.svelte │ │ └── image.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── ImageView │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── image-view.spec.ts.snap │ │ └── image-view.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Indicators │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── indicators.spec.ts.snap │ │ ├── fixture │ │ │ └── slots.svelte │ │ └── indicators.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Infinite │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── infinite.spec.ts.snap │ │ └── infinite.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Input │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── input.spec.ts.snap │ │ ├── fixture │ │ │ ├── input.bind.value.update.svelte │ │ │ ├── input.slots.append.svelte │ │ │ └── input.slots.svelte │ │ └── input.spec.ts │ ├── package.json │ ├── src │ │ ├── compute-textarea-h.ts │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── InputNumber │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── input-number.spec.ts.snap │ │ ├── fixture │ │ │ └── append.svelte │ │ └── input-number.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Layout │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── layout.spec.ts.snap │ │ ├── fixture │ │ │ ├── container.direction.svelte │ │ │ └── container.slot.svelte │ │ └── layout.spec.ts │ ├── package.json │ ├── src │ │ ├── aside.svelte │ │ ├── container.svelte │ │ ├── footer.svelte │ │ ├── header.svelte │ │ ├── index.ts │ │ ├── main.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Link │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── link.spec.ts.snap │ │ ├── fixture │ │ │ └── link.icon.svelte │ │ └── link.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Mask │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── mask.spec.ts.snap │ │ └── mask.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Menu │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── menu.spec.ts.snap │ │ ├── fixture │ │ │ ├── action.svelte │ │ │ ├── children.svelte │ │ │ ├── click.svelte │ │ │ ├── danger.svelte │ │ │ ├── delay.svelte │ │ │ ├── disabled.svelte │ │ │ ├── divider.svelte │ │ │ ├── expand-icon-slot.svelte │ │ │ ├── expand-icon.svelte │ │ │ ├── icon-slot.svelte │ │ │ ├── icon.svelte │ │ │ ├── inline-collapsed.svelte │ │ │ ├── inline-indent.svelte │ │ │ ├── label-slot.svelte │ │ │ ├── label.svelte │ │ │ ├── muiltiple.svelte │ │ │ ├── open-change.svelte │ │ │ ├── open-uids.svelte │ │ │ ├── popup-class-name.horizontal.svelte │ │ │ ├── popup-class-name.svelte │ │ │ ├── popup-class-name.vertical.svelte │ │ │ ├── select.svelte │ │ │ ├── selectable.svelte │ │ │ ├── selected-uids.svelte │ │ │ └── title-click.svelte │ │ └── menu.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── item.svelte │ │ ├── types.d.ts │ │ └── utils.ts │ └── tsconfig.json ├── Message │ ├── __test__ │ │ ├── fixture │ │ │ └── message.content.svelte │ │ └── message.spec.ts │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── MessageBox │ ├── __test__ │ │ ├── fixture │ │ │ ├── message-box.content.svelte │ │ │ └── message-box.title.svelte │ │ └── msg-box.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── Modal │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── modal.spec.ts.snap │ │ ├── fixture │ │ │ └── modal.slot.svelte │ │ └── modal.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Notification │ ├── __test__ │ │ ├── fixture │ │ │ ├── notification.content.svelte │ │ │ └── notification.title.svelte │ │ └── notification.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── PageHeader │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── page-header.spec.ts.snap │ │ ├── fixture │ │ │ ├── slot.breadcrumb.svelte │ │ │ ├── slot.content.svelte │ │ │ ├── slot.default.svelte │ │ │ ├── slot.extra.svelte │ │ │ ├── slot.icon.svelte │ │ │ └── slot.title.svelte │ │ └── page-header.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Pagination │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── pagination.spec.ts.snap │ │ └── pagination.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── jumper.svelte │ │ ├── pager.svelte │ │ ├── pagination.svelte │ │ ├── sizes.svelte │ │ ├── total.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Popconfirm │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── popconfirm.spec.ts.snap │ │ ├── fixture │ │ │ ├── popconfirm.async.svelte │ │ │ ├── popconfirm.base.svelte │ │ │ ├── popconfirm.btn.svelte │ │ │ ├── popconfirm.cancel.svelte │ │ │ ├── popconfirm.disabled.svelte │ │ │ ├── popconfirm.event.cancel.svelte │ │ │ ├── popconfirm.event.change.svelte │ │ │ ├── popconfirm.event.confirm.svelte │ │ │ ├── popconfirm.icon.svelte │ │ │ ├── popconfirm.slot.content.svelte │ │ │ ├── popconfirm.slot.footer.svelte │ │ │ ├── popconfirm.slot.title.svelte │ │ │ └── popconfirm.type.svelte │ │ └── popconfirm.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Popover │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── popover.spec.ts.snap │ │ ├── fixture │ │ │ ├── popover.arrow.svelte │ │ │ ├── popover.change.svelte │ │ │ ├── popover.delay.svelte │ │ │ ├── popover.disabled.svelte │ │ │ ├── popover.open.svelte │ │ │ ├── popover.placement.svelte │ │ │ ├── popover.slots.svelte │ │ │ └── popover.trigger.svelte │ │ └── popover.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Progress │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── progress.spec.ts.snap │ │ ├── fixture │ │ │ └── progress.slots.svelte │ │ └── progress.spec.ts │ ├── package.json │ ├── src │ │ ├── circle.svelte │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Radio │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── radio.spec.ts.snap │ │ └── radio.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── RadioGroup │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── radio-group.spec.ts.snap │ │ ├── fixture │ │ │ ├── group.base.disabled.svelte │ │ │ ├── group.base.svelte │ │ │ ├── group.change.disabled.svelte │ │ │ ├── group.change.svelte │ │ │ ├── group.model.disabled.svelte │ │ │ ├── group.size.svelte │ │ │ ├── group.trigger.disabled.svelte │ │ │ └── group.trigger.svelte │ │ └── radio-group.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Rate │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── rate.spec.ts.snap │ │ └── rate.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Scrollbar │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── scrollbar.spec.ts.snap │ │ └── scrollbar.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── types.d.ts │ │ └── utils.ts │ └── tsconfig.json ├── Segmented │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── segmented.spec.ts.snap │ │ ├── fixture │ │ │ ├── block.svelte │ │ │ ├── click.svelte │ │ │ ├── custom.svelte │ │ │ ├── disabled.svelte │ │ │ ├── icon.svelte │ │ │ ├── label.svelte │ │ │ ├── only.svelte │ │ │ ├── size.svelte │ │ │ └── value.svelte │ │ └── segmented.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── item.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Select │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── select.spec.ts.snap │ │ ├── fixture │ │ │ ├── select.change.svelte │ │ │ ├── select.clearable.svelte │ │ │ ├── select.custom.svelte │ │ │ ├── select.disabled.svelte │ │ │ ├── select.fit.svelte │ │ │ ├── select.number.svelte │ │ │ ├── select.object.svelte │ │ │ ├── select.remote.svelte │ │ │ ├── select.slots.svelte │ │ │ ├── select.string.svelte │ │ │ ├── select.updated.svelte │ │ │ └── select.value.svelte │ │ └── select.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── option.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Skeleton │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── skeleton.spec.ts.snap │ │ ├── fixture │ │ │ ├── active.svelte │ │ │ ├── avatar.svelte │ │ │ ├── image.slot.svelte │ │ │ ├── loading.svelte │ │ │ ├── overide.avatar.svelte │ │ │ ├── overide.paragraph.svelte │ │ │ ├── overide.round.svelte │ │ │ ├── overide.title.svelte │ │ │ ├── paragraph.svelte │ │ │ ├── round.svelte │ │ │ ├── size.svelte │ │ │ ├── slot.skeleton.svelte │ │ │ ├── slot.svelte │ │ │ └── title.svelte │ │ └── skeleton.spec.ts │ ├── package.json │ ├── src │ │ ├── avatar.svelte │ │ ├── button.svelte │ │ ├── image.svelte │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── input.svelte │ │ ├── paragraph.svelte │ │ ├── title.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Slider │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── slider.spec.ts.snap │ │ └── slider.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Spin │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── spin.spec.ts.snap │ │ ├── fixture │ │ │ ├── spin.bg.svelte │ │ │ ├── spin.full.svelte │ │ │ ├── spin.rotate.svelte │ │ │ ├── spin.show.svelte │ │ │ ├── spin.spinner.svelte │ │ │ └── spin.text.svelte │ │ └── spin.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── Statistic │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── statistic.spec.ts.snap │ │ ├── fixture │ │ │ ├── prefix.svelte │ │ │ └── suffix.svelte │ │ └── statistic.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Steps │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── steps.spec.ts.snap │ │ ├── fixture │ │ │ ├── active.svelte │ │ │ ├── change.svelte │ │ │ ├── direction.svelte │ │ │ ├── dot.svelte │ │ │ ├── nav.svelte │ │ │ └── slots.svelte │ │ └── steps.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── step.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Switch │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── switch.spec.ts.snap │ │ └── switch.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Tabs │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── tabs.spec.ts.snap │ │ ├── fixtrue │ │ │ ├── add-tab.svelte │ │ │ ├── add.svelte │ │ │ ├── before-leave.svelte │ │ │ ├── border.svelte │ │ │ ├── card.svelte │ │ │ ├── change.svelte │ │ │ ├── click.svelte │ │ │ ├── closeable.svelte │ │ │ ├── ediotable.svelte │ │ │ ├── edit.svelte │ │ │ ├── nav-options.svelte │ │ │ ├── remove.svelte │ │ │ ├── slot.add.svelte │ │ │ ├── slot.default.svelte │ │ │ └── value.svelte │ │ └── tabs.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── pane.svelte │ │ └── types.d.ts │ └── tsconfig.json ├── Tag │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── tag.spec.ts.snap │ │ ├── fixture │ │ │ └── tag.test.svelte │ │ └── tag.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Timeline │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── timeline.spec.ts.snap │ │ ├── fixture │ │ │ ├── basic.svelte │ │ │ ├── children.mode.alternate.svelte │ │ │ ├── children.mode.left.svelte │ │ │ ├── children.mode.right.svelte │ │ │ ├── color.svelte │ │ │ ├── label.mode.alternate.svelte │ │ │ ├── label.mode.left.svelte │ │ │ ├── label.mode.right.svelte │ │ │ ├── mode.label.svelte │ │ │ ├── mode.svelte │ │ │ ├── pending.string.svelte │ │ │ ├── pending.true.svelte │ │ │ ├── position.mode.alternate.svelte │ │ │ ├── position.mode.left.svelte │ │ │ ├── position.mode.right.svelte │ │ │ ├── position.svelte │ │ │ ├── reverse.pending.svelte │ │ │ ├── reverse.svelte │ │ │ ├── slots.children.svelte │ │ │ ├── slots.dot.svelte │ │ │ ├── slots.label.svelte │ │ │ ├── slots.pending-dot.svelte │ │ │ └── slots.pending.svelte │ │ └── timeline.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Tooltip │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── tooltip.spec.ts.snap │ │ ├── fixture │ │ │ ├── tooltip.placement.svelte │ │ │ ├── tooltip.slots.svelte │ │ │ └── tooltip.trigger.svelte │ │ └── tooltip.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── Tour │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── tour.spec.ts.snap │ │ ├── fixture │ │ │ ├── open.svelte │ │ │ ├── slots.btn.svelte │ │ │ ├── slots.close.svelte │ │ │ ├── slots.descr.svelte │ │ │ ├── slots.footer.svelte │ │ │ ├── slots.indicator.svelte │ │ │ └── slots.title.svelte │ │ └── tour.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ └── types.d.ts │ └── tsconfig.json ├── VirtualList │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── virtual-list.spec.ts.snap │ │ └── virtual-list.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── item.svelte │ │ ├── types.d.ts │ │ └── virtual.ts │ └── tsconfig.json ├── Watermark │ ├── __test__ │ │ ├── __snapshots__ │ │ │ └── watermark.spec.ts.snap │ │ ├── fixture │ │ │ └── watermark.slot.svelte │ │ └── watermark.spec.ts │ ├── package.json │ ├── src │ │ ├── index.svelte │ │ ├── index.ts │ │ ├── types.d.ts │ │ ├── useClips.ts │ │ └── utils.ts │ └── tsconfig.json ├── index.ts └── types.d.ts ├── docs ├── .vitepress │ ├── assets │ │ └── styles │ │ │ ├── atom-one-dark.css │ │ │ └── atom-one-light.css │ ├── components │ │ ├── demo-block │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ └── index.vue │ │ ├── highlight │ │ │ └── index.ts │ │ ├── logo-animate │ │ │ ├── index.ts │ │ │ └── src │ │ │ │ ├── black.vue │ │ │ │ ├── circle.vue │ │ │ │ ├── grey.vue │ │ │ │ └── index.vue │ │ └── theme-color │ │ │ ├── index.ts │ │ │ └── src │ │ │ └── index.vue │ ├── config.ts │ ├── env.d.ts │ ├── plugins │ │ └── code │ │ │ ├── index.ts │ │ │ └── plugin-demo-block.ts │ └── theme │ │ ├── index.ts │ │ └── style.css ├── components │ ├── KAffix.md │ ├── KAlert.md │ ├── KAutoComplete.md │ ├── KAvatar.md │ ├── KBacktop.md │ ├── KBadge.md │ ├── KBreadcrumb.md │ ├── KButton.md │ ├── KCalendar.md │ ├── KCard.md │ ├── KCarousel.md │ ├── KCheckbox.md │ ├── KClientOnly.md │ ├── KCollapse.md │ ├── KColorPicker.md │ ├── KContextmenu.md │ ├── KCountdown.md │ ├── KDescriptions.md │ ├── KDivider.md │ ├── KDrawer.md │ ├── KDropdown.md │ ├── KEllipsis.md │ ├── KEmpty.md │ ├── KEyeDropper.md │ ├── KFlex.md │ ├── KForm.md │ ├── KGrid.md │ ├── KIcon.md │ ├── KImage.md │ ├── KInfinite.md │ ├── KInput.md │ ├── KInputNumber.md │ ├── KLayout.md │ ├── KLink.md │ ├── KMask.md │ ├── KMenu.md │ ├── KMessage.md │ ├── KMessageBox.md │ ├── KModal.md │ ├── KNotification.md │ ├── KPageHeader.md │ ├── KPagination.md │ ├── KPopconfirm.md │ ├── KPopover.md │ ├── KProgress.md │ ├── KRadio.md │ ├── KRate.md │ ├── KScrollbar.md │ ├── KSegmented.md │ ├── KSelect.md │ ├── KSkeleton.md │ ├── KSlider.md │ ├── KSpin.md │ ├── KStatistics.md │ ├── KSteps.md │ ├── KSwitch.md │ ├── KTabs.md │ ├── KTag.md │ ├── KTimeline.md │ ├── KTooltip.md │ ├── KTour.md │ ├── KVirtualList.md │ └── KWatermark.md ├── example │ ├── affix │ │ ├── basic.svelte │ │ └── position.svelte │ ├── alert │ │ ├── basic.svelte │ │ ├── close-button.svelte │ │ ├── description.svelte │ │ └── icon.svelte │ ├── autocomplete │ │ ├── basic.svelte │ │ ├── clearable.svelte │ │ └── custom.svelte │ ├── avatar │ │ ├── basic.svelte │ │ ├── fallback.svelte │ │ ├── fit-container.svelte │ │ └── types.svelte │ ├── backtop │ │ ├── basic.svelte │ │ ├── custom.svelte │ │ └── ikun.svelte │ ├── badge │ │ ├── basic.svelte │ │ ├── customizations.svelte │ │ ├── dot-mark.svelte │ │ └── max-value.svelte │ ├── breadcrumb │ │ ├── basic.svelte │ │ └── separator-icon.svelte │ ├── button │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── ghost.svelte │ │ ├── group.svelte │ │ ├── icon.svelte │ │ ├── isBorder.svelte │ │ ├── link.svelte │ │ ├── plain.svelte │ │ └── size.svelte │ ├── calendar │ │ ├── basic.svelte │ │ ├── card.svelte │ │ └── custom.svelte │ ├── card │ │ ├── basic.svelte │ │ ├── shadow.svelte │ │ └── simple-card.svelte │ ├── carousel │ │ ├── arrows.svelte │ │ ├── basic.svelte │ │ ├── custom.svelte │ │ ├── height.svelte │ │ ├── indicator.svelte │ │ └── vertical.svelte │ ├── checkbox │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── group.svelte │ │ ├── indeterminate.svelte │ │ └── sizes.svelte │ ├── collapse │ │ ├── accordion.svelte │ │ ├── basic.svelte │ │ └── custom.svelte │ ├── color-picker │ │ ├── alpha.svelte │ │ ├── basic.svelte │ │ ├── clear.svelte │ │ ├── control.svelte │ │ ├── disabled.svelte │ │ ├── format.svelte │ │ ├── preset-custom.svelte │ │ ├── preset.svelte │ │ ├── size.svelte │ │ ├── text.svelte │ │ └── trigger.svelte │ ├── contextmenu │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── divider.svelte │ │ └── sub.svelte │ ├── countdown │ │ └── basic.svelte │ ├── descriptions │ │ ├── basic.svelte │ │ ├── sizes.svelte │ │ └── vertical.svelte │ ├── divider │ │ ├── basic.svelte │ │ ├── custom-content.svelte │ │ ├── line-style.svelte │ │ └── vertical-divider.svelte │ ├── drawer │ │ ├── basic.svelte │ │ ├── close-outside.svelte │ │ ├── custom.svelte │ │ └── placement.svelte │ ├── dropdown │ │ ├── basic.svelte │ │ ├── behavior.svelte │ │ ├── command.svelte │ │ ├── control.svelte │ │ └── trigger.svelte │ ├── ellipsis │ │ ├── basic.svelte │ │ ├── line-clamp.svelte │ │ ├── num.svelte │ │ └── position.svelte │ ├── empty │ │ ├── basic.svelte │ │ ├── bottom.svelte │ │ ├── image.svelte │ │ └── size.svelte │ ├── eye-dropper │ │ └── basic.svelte │ ├── flex │ │ ├── basic.svelte │ │ ├── gap.svelte │ │ ├── justify-align.svelte │ │ └── wrap.svelte │ ├── form │ │ ├── align.svelte │ │ ├── basic.svelte │ │ ├── custom-rules.svelte │ │ ├── size.svelte │ │ └── validation.svelte │ ├── grid │ │ ├── basic.svelte │ │ ├── gutter.svelte │ │ ├── hybrid.svelte │ │ ├── justify.svelte │ │ ├── offset.svelte │ │ └── responsive.svelte │ ├── icon │ │ ├── basic.svelte │ │ └── multi-color.svelte │ ├── image │ │ ├── basic.svelte │ │ ├── failed.svelte │ │ ├── lazy.svelte │ │ ├── placeholder.svelte │ │ └── preview.svelte │ ├── infinite │ │ ├── basic.svelte │ │ └── ikun.svelte │ ├── input-number │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── limit.svelte │ │ ├── precision.svelte │ │ ├── size.svelte │ │ ├── step.svelte │ │ └── strictly.svelte │ ├── input │ │ ├── append.svelte │ │ ├── basic.svelte │ │ ├── clearable.svelte │ │ ├── disabled.svelte │ │ ├── password.svelte │ │ ├── prefix.svelte │ │ ├── search.svelte │ │ ├── sizes.svelte │ │ └── textarea.svelte │ ├── layout │ │ ├── basic.svelte │ │ ├── basic2.svelte │ │ ├── basic3.svelte │ │ ├── basic4.svelte │ │ ├── basic5.svelte │ │ ├── basic6.svelte │ │ └── basic7.svelte │ ├── link │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── icon.svelte │ │ └── underline.svelte │ ├── mask │ │ ├── basic.svelte │ │ └── bg-color.svelte │ ├── menu │ │ ├── collapsed.svelte │ │ ├── custom.svelte │ │ ├── horizontal.svelte │ │ ├── inline.svelte │ │ ├── item-slot.svelte │ │ ├── theme.svelte │ │ ├── type.svelte │ │ └── vertical.svelte │ ├── message-box │ │ ├── alert.svelte │ │ ├── basic.svelte │ │ ├── btn-text.svelte │ │ ├── confirm.svelte │ │ ├── custom-content.svelte │ │ ├── custom-title.svelte │ │ ├── custom.svelte │ │ ├── prompt.svelte │ │ └── type.svelte │ ├── message │ │ ├── basic.svelte │ │ ├── close.svelte │ │ ├── custom-content.svelte │ │ ├── custom.svelte │ │ ├── offset.svelte │ │ ├── type.svelte │ │ └── update.svelte │ ├── modal │ │ ├── basic.svelte │ │ ├── custom.svelte │ │ ├── footer.svelte │ │ └── layout.svelte │ ├── notification │ │ ├── basic.svelte │ │ ├── close.svelte │ │ ├── custom-content.svelte │ │ ├── custom-title.svelte │ │ ├── custom.svelte │ │ ├── offset.svelte │ │ ├── type.svelte │ │ └── update.svelte │ ├── page-header │ │ ├── basic.svelte │ │ ├── breadcrumbs.svelte │ │ ├── complete.svelte │ │ ├── extra.svelte │ │ ├── icon.svelte │ │ ├── main.svelte │ │ └── no-icon.svelte │ ├── pagination │ │ ├── background.svelte │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── infinite.svelte │ │ ├── layout.svelte │ │ ├── next.svelte │ │ └── size.svelte │ ├── popconfirm │ │ ├── async.svelte │ │ ├── basic.svelte │ │ ├── btn.svelte │ │ ├── icon.svelte │ │ ├── placement.svelte │ │ ├── trigger.svelte │ │ └── type.svelte │ ├── popover │ │ ├── basic.svelte │ │ ├── placement.svelte │ │ └── trigger.svelte │ ├── progress │ │ ├── basic.svelte │ │ ├── circle.svelte │ │ ├── color.svelte │ │ ├── dashboard.svelte │ │ └── textInside.svelte │ ├── radio │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── group.svelte │ │ └── sizes.svelte │ ├── rate │ │ ├── allow-half.svelte │ │ ├── basic.svelte │ │ ├── clearable.svelte │ │ ├── more-icon.svelte │ │ ├── readonly.svelte │ │ ├── score-template.svelte │ │ ├── sizes.svelte │ │ └── with-text.svelte │ ├── scrollbar │ │ ├── basic.svelte │ │ └── custom.svelte │ ├── segmented │ │ ├── basic.svelte │ │ ├── block.svelte │ │ ├── custom.svelte │ │ ├── disabled.svelte │ │ ├── icon.svelte │ │ ├── only.svelte │ │ └── size.svelte │ ├── select │ │ ├── basic.svelte │ │ ├── clearable.svelte │ │ ├── custom.svelte │ │ ├── disabled.svelte │ │ ├── object.svelte │ │ ├── prefix.svelte │ │ ├── remote.svelte │ │ ├── sizes.svelte │ │ └── virtual.svelte │ ├── skeleton │ │ ├── active.svelte │ │ ├── basic.svelte │ │ ├── complex.svelte │ │ ├── custom.svelte │ │ └── option.svelte │ ├── slider │ │ ├── basic.svelte │ │ ├── disabled.svelte │ │ ├── discrete.svelte │ │ ├── range.svelte │ │ ├── render.svelte │ │ ├── sizes.svelte │ │ └── vertical.svelte │ ├── spin │ │ ├── basic.svelte │ │ ├── bg-color.svelte │ │ ├── custom.svelte │ │ ├── full.svelte │ │ └── ikun.svelte │ ├── statistics │ │ ├── basic.svelte │ │ └── card.svelte │ ├── steps │ │ ├── basic.svelte │ │ ├── change.svelte │ │ ├── custom.svelte │ │ ├── direction.svelte │ │ ├── dot.svelte │ │ ├── label-placement.svelte │ │ ├── nav.svelte │ │ └── status.svelte │ ├── switch │ │ ├── basic.svelte │ │ ├── color.svelte │ │ ├── disabled.svelte │ │ ├── loading.svelte │ │ ├── render.svelte │ │ ├── sizes.svelte │ │ └── value.svelte │ ├── tabs │ │ ├── add-tab.svelte │ │ ├── add.svelte │ │ ├── basic.svelte │ │ ├── before.svelte │ │ ├── border.svelte │ │ ├── card.svelte │ │ ├── close.svelte │ │ ├── disabled.svelte │ │ └── dynamic.svelte │ ├── tag │ │ ├── basic.svelte │ │ ├── icon.svelte │ │ └── removable.svelte │ ├── timeline │ │ ├── alternate.svelte │ │ ├── basic.svelte │ │ ├── color.svelte │ │ ├── custom.svelte │ │ ├── label.svelte │ │ ├── pending.svelte │ │ ├── reverse.svelte │ │ └── right.svelte │ ├── tooltip │ │ ├── basic.svelte │ │ ├── placement.svelte │ │ └── trigger.svelte │ ├── tour │ │ ├── basic.svelte │ │ ├── mask.svelte │ │ └── placement.svelte │ ├── virtual-list │ │ ├── basic.svelte │ │ ├── bottom.svelte │ │ ├── height.svelte │ │ ├── horizontal.svelte │ │ └── slot.svelte │ └── watermark │ │ ├── basic.svelte │ │ ├── content.svelte │ │ └── image.svelte ├── guide │ ├── install.md │ └── quick-start.md ├── index.md ├── package.json ├── public │ ├── WX20230805-132525@2x.png │ ├── WX20230805-132646@2x.png │ ├── logo.psd │ ├── logo.svg │ └── xhz.jpg ├── svelte.config.js ├── theme │ ├── Advanced.md │ ├── Api.md │ └── Basic.md ├── unocss.config.ts └── vite.config.ts ├── e2e ├── .gitignore ├── README.md ├── package.json ├── src │ ├── app.html │ ├── component │ │ ├── KSelect │ │ │ ├── __test__ │ │ │ │ └── k-select.test.ts │ │ │ └── located.test.svelte │ │ └── KVirtualList │ │ │ ├── __test__ │ │ │ └── k-virtual-list.test.ts │ │ │ ├── event-scroll.test.svelte │ │ │ ├── event-top-bottom.test.svelte │ │ │ ├── offset.test.svelte │ │ │ ├── slot-default.test.svelte │ │ │ ├── slot-footer.test.svelte │ │ │ ├── slot-header.test.svelte │ │ │ └── start.test.svelte │ ├── routes │ │ ├── +page.svelte │ │ ├── +page.ts │ │ ├── select │ │ │ ├── +page.svelte │ │ │ └── +page.ts │ │ └── virtual-list │ │ │ ├── +page.svelte │ │ │ └── +page.ts │ └── test-utils │ │ └── index.ts ├── static │ └── favicon.png ├── svelte.config.js ├── unocss.config.ts ├── vite.config.ts └── vitest.config.ts ├── netlify.toml ├── package.json ├── play ├── .gitignore ├── README.md ├── package.json ├── src │ ├── app.css │ ├── app.d.ts │ ├── app.html │ ├── lib │ │ └── index.js │ └── routes │ │ ├── +layout.svelte │ │ └── +page.ts ├── static │ └── favicon.png ├── svelte.config.js ├── unocss.config.ts └── vite.config.ts ├── playground └── package.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── preset ├── package.json ├── src │ ├── colors │ │ └── index.ts │ ├── index.ts │ ├── preset │ │ └── index.ts │ ├── rules │ │ ├── index.ts │ │ ├── set-main-color.ts │ │ └── src │ │ │ ├── base.ts │ │ │ ├── button.ts │ │ │ ├── card.ts │ │ │ ├── carousel.ts │ │ │ ├── color-picker.ts │ │ │ ├── descriptions-item.ts │ │ │ ├── descriptions.ts │ │ │ ├── grid.ts │ │ │ ├── icon.ts │ │ │ ├── ikun-color.ts │ │ │ ├── indicators.ts │ │ │ ├── input.ts │ │ │ ├── menu.ts │ │ │ ├── notify.ts │ │ │ ├── popover.ts │ │ │ ├── progress.ts │ │ │ ├── skeleton.ts │ │ │ ├── switch.ts │ │ │ ├── tab.ts │ │ │ └── timeline.ts │ ├── shortcuts │ │ ├── index.ts │ │ └── src │ │ │ ├── affix.ts │ │ │ ├── alert.ts │ │ │ ├── auto-complete.ts │ │ │ ├── avatar.ts │ │ │ ├── backtop.ts │ │ │ ├── badge.ts │ │ │ ├── base.ts │ │ │ ├── breadcrumb-item.ts │ │ │ ├── breadcrumb.ts │ │ │ ├── button-group.ts │ │ │ ├── button.ts │ │ │ ├── calendar.ts │ │ │ ├── card.ts │ │ │ ├── carousel.ts │ │ │ ├── checkbox.ts │ │ │ ├── collapse.ts │ │ │ ├── color-picker.ts │ │ │ ├── common.ts │ │ │ ├── contextmenu.ts │ │ │ ├── descriptions-item.ts │ │ │ ├── descriptions.ts │ │ │ ├── divider.ts │ │ │ ├── drawer.ts │ │ │ ├── dropdown.ts │ │ │ ├── ellipsis.ts │ │ │ ├── empty.ts │ │ │ ├── eye-dropper.ts │ │ │ ├── flex.ts │ │ │ ├── form.ts │ │ │ ├── grid.ts │ │ │ ├── icon.ts │ │ │ ├── image-view.ts │ │ │ ├── image.ts │ │ │ ├── indicators.ts │ │ │ ├── input-number.ts │ │ │ ├── input.ts │ │ │ ├── layout.ts │ │ │ ├── link.ts │ │ │ ├── mask.ts │ │ │ ├── menu.ts │ │ │ ├── message-box.ts │ │ │ ├── modal.ts │ │ │ ├── notification.ts │ │ │ ├── page-header.ts │ │ │ ├── pagination.ts │ │ │ ├── popconfirm.ts │ │ │ ├── popover.ts │ │ │ ├── progress.ts │ │ │ ├── radio.ts │ │ │ ├── rate.ts │ │ │ ├── scrollbar.ts │ │ │ ├── segmented.ts │ │ │ ├── select.ts │ │ │ ├── skeleton.ts │ │ │ ├── slider.ts │ │ │ ├── spin.ts │ │ │ ├── statistic.ts │ │ │ ├── steps.ts │ │ │ ├── swtich.ts │ │ │ ├── tabs.ts │ │ │ ├── tag.ts │ │ │ ├── timeline.ts │ │ │ ├── tour.ts │ │ │ └── virtual-list.ts │ ├── theme │ │ └── index.ts │ └── utils │ │ └── constant.ts ├── tsconfig.json └── tsup.config.ts ├── scripts ├── build.js ├── clean-deps.js ├── clean-root-deps.js ├── clean.js ├── new-component.js ├── play.js ├── pre-publish.js ├── publish.js └── utils.js ├── tsconfig.json ├── tsup.config.ts ├── utils ├── package.json ├── src │ ├── class-names.ts │ ├── dom.ts │ ├── index.ts │ ├── style.ts │ ├── symbol-key.ts │ └── types.ts ├── tsconfig.json └── tsup.config.ts ├── vertify-commit.js └── vitest.config.ts /.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | **/dist 10 | rollup.config.js 11 | play/**/* 12 | e2e/**/* 13 | 14 | # Ignore files for PNPM, NPM and YARN 15 | pnpm-lock.yaml 16 | package-lock.json 17 | yarn.lock 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 🧐 Long question or ideas? 4 | url: https://github.com/ikun-svelte/ikun-ui/discussions 5 | about: Ask long-form questions and discuss ideas. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/others.yml: -------------------------------------------------------------------------------- 1 | name: Others 2 | 3 | description: Create an issue for ikun-ui 4 | 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: Clear and concise description of the issue. Thanks! 11 | placeholder: There are some thing I want to ... 12 | validations: 13 | required: true 14 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | resolution-mode=highest 3 | # registry=https://registry.npmmirror.com 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | play/**/* 10 | e2e/**/* 11 | 12 | # Ignore files for PNPM, NPM and YARN 13 | pnpm-lock.yaml 14 | package-lock.json 15 | yarn.lock 16 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "overrides": [ 8 | { 9 | "files": "*.svelte", 10 | "options": { 11 | "parser": "svelte" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /components/Affix/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Affix from './index.svelte'; 3 | export { Affix as KAffix }; 4 | 5 | export default Affix; 6 | 7 | export * from './utils'; 8 | export type { KAffixProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Affix/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | import type { ScrollTarget } from './utils'; 4 | export type KAffixProps = { 5 | listenTo: string | ScrollTarget | (() => HTMLElement) | undefined; 6 | top: number | undefined; 7 | bottom: number | undefined; 8 | triggerTop: number | undefined; 9 | triggerBottom: number | undefined; 10 | positionOption: 'fixed' | 'absolute'; 11 | cls: ClassValue; 12 | attrs: Record; 13 | }; 14 | -------------------------------------------------------------------------------- /components/Affix/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Alert/__test__/fixture/alert.close.test.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | (visible = false)}> 8 | this is close slot 9 | 10 |
{visible}
11 | -------------------------------------------------------------------------------- /components/Alert/__test__/fixture/alert.description.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | this is description slot 7 | 8 | -------------------------------------------------------------------------------- /components/Alert/__test__/fixture/alert.icon.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | this is icon slot 7 | 8 | -------------------------------------------------------------------------------- /components/Alert/__test__/fixture/alert.title.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | this is title slot 7 | 8 | -------------------------------------------------------------------------------- /components/Alert/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Alert from './index.svelte'; 3 | export { Alert as KAlert }; 4 | 5 | export default Alert; 6 | 7 | export type { KAlertProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Alert/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { IKunTypeBase } from '@ikun-ui/utils'; 3 | import type { ClassValue } from 'clsx'; 4 | 5 | export type KAlertProps = { 6 | type: IKunTypeBase; 7 | title: string; 8 | description: string; 9 | showIcon: boolean; 10 | icon: string; 11 | closable: boolean; 12 | closeIcon: string; 13 | cls: ClassValue; 14 | attrs: Record; 15 | }; 16 | -------------------------------------------------------------------------------- /components/Alert/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/AutoComplete/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import AutoComplete from './index.svelte'; 3 | export { AutoComplete as KAutoComplete }; 4 | 5 | export default AutoComplete; 6 | 7 | export type { KAutoCompleteProps, FetchSuggestionType, AutoCompleteItems } from './types'; 8 | -------------------------------------------------------------------------------- /components/AutoComplete/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Avatar/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Avatar from './index.svelte'; 3 | 4 | export default Avatar; 5 | 6 | export { Avatar as KAvatar }; 7 | 8 | export type { KAvatarProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Avatar/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import type { ClassValue } from 'clsx'; 4 | 5 | export type KAvatarProps = { 6 | icon: string; 7 | src: string; 8 | srcSet: string; 9 | alt: string; 10 | fit: 'fill' | 'contain' | 'cover' | 'none' | 'scale-down'; 11 | size: string | number; 12 | radius: string | number; 13 | cls: ClassValue; 14 | attrs: Record; 15 | }; 16 | -------------------------------------------------------------------------------- /components/Avatar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Backtop/__test__/fixture/backtop.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /components/Backtop/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Backtop from './index.svelte'; 3 | export { Backtop as KBacktop }; 4 | 5 | export default Backtop; 6 | export type { KBacktopProps } from './types'; 7 | -------------------------------------------------------------------------------- /components/Backtop/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export type KBacktopProps = { 3 | cls: string; 4 | attrs: Record; 5 | }; 6 | -------------------------------------------------------------------------------- /components/Backtop/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Badge/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Badge from './index.svelte'; 3 | 4 | export default Badge; 5 | 6 | export { Badge as KBadge }; 7 | 8 | export type { KBadgeProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Badge/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | import type { IKunTypePro } from '@ikun-ui/utils'; 4 | 5 | export type KBadgeProps = { 6 | value: string | number; 7 | max: number; 8 | isDot: boolean; 9 | show: boolean; 10 | type: IKunTypePro; 11 | cls: ClassValue; 12 | attrs: Record; 13 | }; 14 | -------------------------------------------------------------------------------- /components/Badge/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Breadcrumb/__test__/__snapshots__/breadcrumb.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html 2 | 3 | exports[`Test: KBreadcrumb > props: cls 1`] = `"
"`; 4 | -------------------------------------------------------------------------------- /components/Breadcrumb/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Breadcrumb from './index.svelte'; 3 | export { Breadcrumb as KBreadcrumb }; 4 | 5 | export default Breadcrumb; 6 | export type { KBreadcrumbProps } from './types'; 7 | -------------------------------------------------------------------------------- /components/Breadcrumb/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export type KBreadcrumbProps = { 3 | separator: string; 4 | separatorIcon: string; 5 | cls: string; 6 | attrs: Record; 7 | }; 8 | -------------------------------------------------------------------------------- /components/Breadcrumb/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/BreadcrumbItem/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import BreadcrumbItem from './index.svelte'; 3 | export { BreadcrumbItem as KBreadcrumbItem }; 4 | 5 | export default BreadcrumbItem; 6 | 7 | export type { KBreadcrumbItemProps, KBreadcrumbItemPropsPropsInner } from './types'; 8 | -------------------------------------------------------------------------------- /components/BreadcrumbItem/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export type KBreadcrumbItemProps = { 3 | href: string; 4 | cls: string; 5 | attrs: Record; 6 | }; 7 | export type KBreadcrumbItemPropsPropsInner = Partial<{ 8 | separator: string; 9 | separatorIcon: string; 10 | }>; 11 | -------------------------------------------------------------------------------- /components/BreadcrumbItem/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Button/__test__/fixtrue/disabled.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | (disabled = !disabled)}> 7 | {disabled} 8 | 9 | -------------------------------------------------------------------------------- /components/Button/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Button from './index.svelte'; 3 | export default Button; 4 | 5 | export { Button as KButton }; 6 | export type { KButtonProps, KButtonGroupPropsInner } from './types'; 7 | -------------------------------------------------------------------------------- /components/Button/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false, 9 | "paths": { 10 | "@ikun-ui/utils": ["../../utils/index.ts"] 11 | } 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 14 | "exclude": ["node_modules/*", "**/*.spec.ts"] 15 | } 16 | -------------------------------------------------------------------------------- /components/ButtonGroup/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | // @ts-ignore 3 | import ButtonGroup from './index.svelte'; 4 | export default ButtonGroup; 5 | 6 | export { ButtonGroup as KButtonGroup }; 7 | export type { KButtonGroupProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/ButtonGroup/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { IKunTypePro } from '@ikun-ui/utils'; 3 | import type { ClassValue } from 'clsx'; 4 | import { IKunSize } from '@ikun-ui/utils'; 5 | 6 | export type KButtonGroupProps = { 7 | type: IKunTypePro; 8 | size: IKunSize; 9 | iconSize: number | null; 10 | isBorder: boolean; 11 | disabled: boolean; 12 | cls?: ClassValue; 13 | attrs?: Record; 14 | }; 15 | -------------------------------------------------------------------------------- /components/ButtonGroup/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false, 9 | "paths": { 10 | "@ikun-ui/utils": ["../../utils/index.ts"] 11 | } 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 14 | "exclude": ["node_modules/*", "**/*.spec.ts"] 15 | } 16 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/mode.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/range.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/slot.dateCell.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |
{date.instance.date()}
9 |
10 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/slot.dateFullCell.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |
{date.instance.date()}
9 |
10 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/slot.header.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |
{v.format('YYYY-MM-DD')}
9 |
10 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/slot.monthCell.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |
{month.instance.month()}
9 |
10 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/slot.monthFullCell.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |
{month.instance.month()}
9 |
10 | -------------------------------------------------------------------------------- /components/Calendar/__test__/fixture/value.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /components/Calendar/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Calendar from './index.svelte'; 3 | export { Calendar as KCalendar }; 4 | 5 | export default Calendar; 6 | -------------------------------------------------------------------------------- /components/Calendar/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | import type Dayjs from 'dayjs'; 4 | export type KCalendarProps = { 5 | value?: Dayjs; 6 | disabledDate?: (currentDate: Dayjs) => boolean; 7 | fullscreen?: boolean; 8 | locale: Record; 9 | mode?: 'month' | 'year'; 10 | validRange?: [Dayjs, Dayjs]; 11 | cls?: ClassValue; 12 | attrs?: Record; 13 | }; 14 | 15 | // TODO: dark mode 16 | // TODO: 月份切换失败 17 | -------------------------------------------------------------------------------- /components/Calendar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Card/__test__/fixture/card.slot.default.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
IKun UI
7 |
8 | -------------------------------------------------------------------------------- /components/Card/__test__/fixture/card.slot.header.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
IKun UI
7 |
8 | -------------------------------------------------------------------------------- /components/Card/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Card from './index.svelte'; 3 | export { Card as KCard }; 4 | 5 | export default Card; 6 | 7 | export type { KCardProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Card/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KCardProps = { 5 | title: string; 6 | shadow: 'always' | 'never' | 'hover'; 7 | cls: ClassValue; 8 | attrs: Record; 9 | }; 10 | -------------------------------------------------------------------------------- /components/Card/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Carousel/__test__/fixture/arrow.always.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Carousel/__test__/fixture/arrow.hover.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Carousel/__test__/fixture/arrow.never.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Carousel/__test__/fixture/init.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Carousel/__test__/fixture/play.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Carousel/__test__/fixture/trigger.click.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Carousel/__test__/fixture/trigger.hover.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Carousel/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Carousel from './index.svelte'; 3 | import Arrow from './arrow.svelte'; 4 | export { Carousel as KCarousel }; 5 | export { Arrow as KCarouselArrow }; 6 | export default Carousel; 7 | 8 | export type { KCarouselProps, KCarouselArrowProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Carousel/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Checkbox/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Checkbox from './index.svelte'; 3 | 4 | export default Checkbox; 5 | 6 | export { Checkbox as KCheckbox }; 7 | export type { KCheckboxProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Checkbox/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/CheckboxGroup/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import CheckboxGroup from './index.svelte'; 3 | export { CheckboxGroup as KCheckboxGroup }; 4 | 5 | export default CheckboxGroup; 6 | export type { 7 | checkboxGroupCtx, 8 | KCheckboxGroupProps, 9 | checkboxMapItem, 10 | checkboxMapType 11 | } from './types'; 12 | -------------------------------------------------------------------------------- /components/CheckboxGroup/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false, 9 | "paths": { 10 | "@ikun-ui/utils": ["../../utils/index.ts"] 11 | } 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 14 | "exclude": ["node_modules/*", "**/*.spec.ts"] 15 | } 16 | -------------------------------------------------------------------------------- /components/ClientOnly/src/index.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {#if BROWSER} 6 | 7 | {/if} 8 | -------------------------------------------------------------------------------- /components/ClientOnly/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import ClientOnly from './index.svelte'; 3 | 4 | export default ClientOnly; 5 | 6 | export { ClientOnly as KClientOnly }; 7 | -------------------------------------------------------------------------------- /components/ClientOnly/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /components/ClientOnly/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false, 9 | "paths": { 10 | "@ikun-ui/utils": ["../../utils/index.ts"] 11 | } 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 14 | "exclude": ["node_modules/*", "**/*.spec.ts"] 15 | } 16 | -------------------------------------------------------------------------------- /components/Collapse/__test__/fixture/collapse.close.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
🍓 closeIcon
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Collapse/__test__/fixture/collapse.content.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
🍞 Bread! Bread! We want to bread!
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Collapse/__test__/fixture/collapse.title.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
🍓 Germinal
8 |
9 |
10 | -------------------------------------------------------------------------------- /components/Collapse/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Collapse from './index.svelte'; 3 | 4 | export default Collapse; 5 | 6 | export { Collapse as KCollapse }; 7 | export type { KCollapseProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Collapse/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KCollapseProps = { 5 | title: string; 6 | content: string; 7 | show: boolean; 8 | showClose: boolean; 9 | uid: string; 10 | cls: ClassValue; 11 | attrs: Record; 12 | }; 13 | -------------------------------------------------------------------------------- /components/Collapse/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/CollapseWrapper/__test__/__snapshots__/collapse-wrapper.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html 2 | 3 | exports[`Test: KCollapseWrapper > props: cls 1`] = `"
"`; 4 | -------------------------------------------------------------------------------- /components/CollapseWrapper/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import CollapseWrapper from './index.svelte'; 3 | export { CollapseWrapper as KCollapseWrapper }; 4 | 5 | export default CollapseWrapper; 6 | 7 | export type { KCollapseWrapperProps, collapseMapType } from './types'; 8 | -------------------------------------------------------------------------------- /components/CollapseWrapper/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { type ClassValue } from 'clsx'; 3 | 4 | export type KCollapseWrapperProps = { 5 | accordion: boolean; 6 | cls: ClassValue; 7 | attrs: Record; 8 | }; 9 | 10 | export type collapseMapType = Record void>; 11 | -------------------------------------------------------------------------------- /components/CollapseWrapper/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/ColorPicker/__test__/fixtrue/slot.default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
ikun-ui
7 |
8 | -------------------------------------------------------------------------------- /components/ColorPicker/__test__/fixtrue/slot.text.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
ikun-ui
7 |
8 | -------------------------------------------------------------------------------- /components/ColorPicker/__test__/fixtrue/slot.title.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
ikun-ui
7 |
8 | -------------------------------------------------------------------------------- /components/ColorPicker/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Contextmenu/__test__/fixture/contextmenu.base.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | options 1 8 | options 2 9 | options 3 10 | 11 |
12 | -------------------------------------------------------------------------------- /components/Contextmenu/__test__/fixture/contextmenu.item.disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | options 1 8 | options 2 9 | options 3 10 | 11 |
12 | -------------------------------------------------------------------------------- /components/Contextmenu/__test__/fixture/contextmenu.item.divider.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | options 1 8 | options 2 9 | options 3 10 | 11 |
12 | -------------------------------------------------------------------------------- /components/Contextmenu/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Contextmenu from './contextmenu.svelte'; 3 | import ContextmenuItem from './contextmenu-item.svelte'; 4 | import ContextmenuSubMenu from './contextmenu-sub-menu.svelte'; 5 | export { Contextmenu as KContextmenu }; 6 | export { ContextmenuItem as KContextmenuItem }; 7 | export { ContextmenuSubMenu as KContextmenuSubMenu }; 8 | 9 | export type { KContextmenuProps } from './types'; 10 | -------------------------------------------------------------------------------- /components/Contextmenu/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KContextmenuProps = { 4 | disabled: boolean; 5 | divider: boolean; 6 | title: string; 7 | cls: ClassValue; 8 | attrs: Record; 9 | }; 10 | 11 | declare global { 12 | interface Window { 13 | __IKUN_CONTEXTMMENU_CLOSE: Array<() => void>; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /components/Contextmenu/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Countdown/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Countdown from './index.svelte'; 3 | export { Countdown as KCountdown }; 4 | 5 | export default Countdown; 6 | export * from './utils'; 7 | export type { KCountdownProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Countdown/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KCountdownProps = { 4 | format: string; 5 | value: number; 6 | prefix: string | undefined; 7 | suffix: string | undefined; 8 | title: string | undefined; 9 | valueStyle: string | undefined; 10 | cls: ClassValue; 11 | attrs: Record; 12 | }; 13 | -------------------------------------------------------------------------------- /components/Countdown/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Descriptions/__test__/fixture/descriptions.extra.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
Ikun Descriptions Extra
7 |
8 | -------------------------------------------------------------------------------- /components/Descriptions/__test__/fixture/descriptions.title.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
Ikun Descriptions Title
7 |
8 | -------------------------------------------------------------------------------- /components/Descriptions/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Descriptions from './index.svelte'; 3 | export { Descriptions as KDescriptions }; 4 | 5 | export default Descriptions; 6 | 7 | export type { 8 | KDescriptionsCtx, 9 | KDescriptionsProps, 10 | KDescriptionsMapItem, 11 | KDescriptionsItemMap 12 | } from './types'; 13 | -------------------------------------------------------------------------------- /components/Descriptions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/DescriptionsItem/__test__/fixture/descriptions-item.label.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
Ikun Descriptions Item Label
7 |
8 | -------------------------------------------------------------------------------- /components/DescriptionsItem/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import DescriptionsItem from './index.svelte'; 3 | export { DescriptionsItem as KDescriptionsItem }; 4 | 5 | export default DescriptionsItem; 6 | 7 | export type { KDescriptionsItemProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/DescriptionsItem/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KDescriptionsItemProps = { 5 | label: string; 6 | cls: ClassValue; 7 | attrs: Record; 8 | }; 9 | -------------------------------------------------------------------------------- /components/DescriptionsItem/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Divider/__test__/fixture/divider.content.slot.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | divider left text 6 | divider center text 7 | divider right text 8 | -------------------------------------------------------------------------------- /components/Divider/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Divider from './index.svelte'; 3 | export { Divider as KDivider }; 4 | 5 | export default Divider; 6 | 7 | export type { KDividerProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Divider/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KDividerProps = { 5 | direction: 'horizontal' | 'vertical'; 6 | borderColor: string; 7 | borderStyle: 'dotted' | 'dashed' | 'solid' | 'double' | 'groove' | 'ridge' | 'inset' | 'outset'; 8 | contentPosition: 'left' | 'center' | 'right'; 9 | cls: ClassValue; 10 | attrs: Record; 11 | }; 12 | -------------------------------------------------------------------------------- /components/Divider/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Drawer/__test__/fixture/drawer.content.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |

8 | A person's loneliness, never had the lonely mood is wrapped by this dark night. 9 |

10 |
11 |
12 | -------------------------------------------------------------------------------- /components/Drawer/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Drawer from './index.svelte'; 3 | 4 | export default Drawer; 5 | 6 | export { Drawer as KDrawer }; 7 | 8 | export type { KDrawerProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Drawer/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KDrawerProps = { 5 | placement: 'right' | 'left'; 6 | value: boolean; 7 | header: boolean; 8 | cls: ClassValue; 9 | attrs: Record; 10 | closeOnClickMask: boolean; 11 | }; 12 | -------------------------------------------------------------------------------- /components/Drawer/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Dropdown/__test__/fixture/disabled.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | Dropdown List 11 |
12 | 白发三千丈 13 |
14 |
15 | -------------------------------------------------------------------------------- /components/Dropdown/__test__/fixture/disabledItem.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Dropdown List 10 |
11 | 白发三千丈 12 |
13 |
14 | -------------------------------------------------------------------------------- /components/Dropdown/__test__/fixture/maxHeight.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Dropdown List 10 |
11 | 白发三千丈 12 |
13 |
14 | -------------------------------------------------------------------------------- /components/Dropdown/__test__/fixture/slots.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Dropdown List 10 |
11 | 白发三千丈 12 |
13 |
14 | -------------------------------------------------------------------------------- /components/Dropdown/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Dropdown from './index.svelte'; 3 | import DropdownItem from './item.svelte'; 4 | export { Dropdown as KDropdown }; 5 | export { DropdownItem as KDropdownItem }; 6 | export default Dropdown; 7 | 8 | export type { KDropdownProps, KDropdownItemProps, KDropdownCtx } from './types'; 9 | -------------------------------------------------------------------------------- /components/Dropdown/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Ellipsis/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Ellipsis from './index.svelte'; 3 | export { Ellipsis as KEllipsis }; 4 | 5 | export default Ellipsis; 6 | 7 | export type { KEllipsisProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Ellipsis/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KEllipsisProps = { 4 | cls: ClassValue; 5 | attrs: Record; 6 | content: string; 7 | text: string; 8 | expand: boolean; 9 | lineClamp: number | null; 10 | num: number; 11 | placement: 'left' | 'right' | 'center'; 12 | }; 13 | -------------------------------------------------------------------------------- /components/Ellipsis/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Empty/__test__/fixture/slot.default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /components/Empty/__test__/fixture/slot.desc.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /components/Empty/__test__/fixture/slot.image.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /components/Empty/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Empty from './index.svelte'; 3 | export { Empty as KEmpty }; 4 | 5 | export default Empty; 6 | 7 | export type { KEmptyProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Empty/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KEmptyProps = { 4 | cls: ClassValue; 5 | image?: string; 6 | imageSize?: number; 7 | emptyDescription: string; 8 | attrs: Record; 9 | }; 10 | -------------------------------------------------------------------------------- /components/Empty/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/EyeDropper/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import EyeDropper from './index.svelte'; 3 | 4 | export default EyeDropper; 5 | 6 | export { EyeDropper as KEyeDropper }; 7 | 8 | export type { KEyeDropperProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/EyeDropper/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KEyeDropperProps = { 4 | cls: ClassValue; 5 | attrs: Record; 6 | }; 7 | -------------------------------------------------------------------------------- /components/EyeDropper/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "noImplicitAny": false, 5 | "strict": true, 6 | "declaration": true, 7 | "sourceMap": false 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Flex/__test__/fixture/align.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /components/Flex/__test__/fixture/gap.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /components/Flex/__test__/fixture/justify.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /components/Flex/__test__/fixture/wrap.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /components/Flex/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Flex from './index.svelte'; 3 | export { Flex as KFlex }; 4 | 5 | export default Flex; 6 | export type { KFlexProps } from './types'; 7 | -------------------------------------------------------------------------------- /components/Flex/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Form/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Form from './form.svelte'; 3 | import FormItem from './form-item.svelte'; 4 | 5 | export { Form as KForm }; 6 | export { FormItem as KFormItem }; 7 | 8 | export { createForm } from './helpers/instance'; 9 | export type { 10 | IKunFormInstanceOption, 11 | ShowMsg, 12 | IKunFormInstance, 13 | FormValidateCallback, 14 | ValidateError, 15 | KFormProps, 16 | KFormItemProps, 17 | KFormRule, 18 | KFormRules 19 | } from './types'; 20 | -------------------------------------------------------------------------------- /components/Form/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false, 9 | "paths": { 10 | "@ikun-ui/utils": ["../../utils/index.ts"] 11 | } 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 14 | "exclude": ["node_modules/*", "**/*.spec.ts"] 15 | } 16 | -------------------------------------------------------------------------------- /components/Grid/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Row from './row.svelte'; 3 | import Col from './col.svelte'; 4 | export { Row as KRow }; 5 | export { Col as KCol }; 6 | export type { KGridCtx, KColProps, ResponsiveSize, KRowProps, KGridProps } from './types'; 7 | -------------------------------------------------------------------------------- /components/Grid/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Icon/__test__/fixture/customizable.icon.color.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /components/Icon/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Icon from './index.svelte'; 3 | 4 | export default Icon; 5 | 6 | export { Icon as KIcon }; 7 | export type { KIconProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Icon/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KIconProps = { 5 | icon: string; 6 | btn: boolean; 7 | width: string; 8 | height: string; 9 | color: string; 10 | /** 11 | * @internal 12 | */ 13 | theme?: 'dark' | 'light'; 14 | cls: ClassValue; 15 | attrs: Record; 16 | }; 17 | -------------------------------------------------------------------------------- /components/Icon/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "noImplicitAny": true, 5 | "strict": true, 6 | "declaration": true, 7 | "sourceMap": false, 8 | "lib": ["dom"] 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Image/__test__/fixture/placeholder.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |

test placeholder

8 |
9 | -------------------------------------------------------------------------------- /components/Image/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Image from './index.svelte'; 3 | export { Image as KImage }; 4 | 5 | export default Image; 6 | 7 | export type { KImageProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Image/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KImageProps = { 4 | scrollContainer: string | HTMLElement | undefined; 5 | loading: 'eager' | 'lazy' | undefined; 6 | previewSrcList: string[]; 7 | fit: undefined | 'fill' | 'contain' | 'cover' | 'none' | 'scale-down' | string; 8 | lazy: boolean; 9 | src: string; 10 | alt: string; 11 | cls: ClassValue; 12 | attrs: Record; 13 | }; 14 | -------------------------------------------------------------------------------- /components/Image/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/ImageView/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | // @ts-ignore 3 | import ImageView from './index.svelte'; 4 | export { ImageView as KImageView }; 5 | 6 | export default ImageView; 7 | 8 | export type { KImageViewProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/ImageView/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KImageViewProps = { 4 | urls: string[]; 5 | show: boolean; 6 | cls: ClassValue; 7 | attrs: Record; 8 | }; 9 | -------------------------------------------------------------------------------- /components/ImageView/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Indicators/__test__/fixture/slots.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | (index = e.detail.index)}> 7 |
{activeIndex}
8 |
9 | -------------------------------------------------------------------------------- /components/Indicators/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | // @ts-ignore 3 | import Indicators from './index.svelte'; 4 | export { Indicators as KIndicators }; 5 | 6 | export default Indicators; 7 | 8 | export type { KIndicatorsProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Indicators/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KIndicatorsProps = { 4 | defaultPageIndex: number; 5 | trigger: 'click' | 'hover'; 6 | count: number; 7 | cls: ClassValue; 8 | attrs: Record; 9 | direction: 'horizontal' | 'vertical'; 10 | }; 11 | -------------------------------------------------------------------------------- /components/Indicators/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Infinite/__test__/__snapshots__/infinite.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html 2 | 3 | exports[`Test: KInfinite > props: cls 1`] = `"
"`; 4 | -------------------------------------------------------------------------------- /components/Infinite/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Infinite from './index.svelte'; 3 | export { Infinite as KInfinite }; 4 | 5 | export default Infinite; 6 | 7 | export type { KInfiniteProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Infinite/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Input/__test__/fixture/input.bind.value.update.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | {value} 9 | -------------------------------------------------------------------------------- /components/Input/__test__/fixture/input.slots.append.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /components/Input/__test__/fixture/input.slots.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
prefix
7 |
suffix
8 |
9 | -------------------------------------------------------------------------------- /components/Input/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Input from './index.svelte'; 3 | 4 | export default Input; 5 | 6 | export { Input as KInput }; 7 | 8 | export type { KInputProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Input/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/InputNumber/__test__/fixture/append.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /components/InputNumber/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import InputNumber from './index.svelte'; 3 | export { InputNumber as KInputNumber }; 4 | 5 | export default InputNumber; 6 | 7 | export type { KInputNumberProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/InputNumber/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Layout/__test__/fixture/container.direction.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | KHeader 8 | KMain 9 | KFooter 10 | 11 | -------------------------------------------------------------------------------- /components/Layout/__test__/fixture/container.slot.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | KHeader 7 | KMain 8 | KFooter 9 | 10 | -------------------------------------------------------------------------------- /components/Layout/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KLayoutProps = { 4 | cls: ClassValue; 5 | attrs: Record; 6 | }; 7 | export type KHeaderFooterProps = { 8 | height: string; 9 | }; 10 | export type KAsideProps = { 11 | width: string; 12 | }; 13 | export type KContainerProps = { 14 | direction: 'vertical' | 'horizontal'; 15 | }; 16 | -------------------------------------------------------------------------------- /components/Layout/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Link/__test__/fixture/link.icon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /components/Link/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Link from './index.svelte'; 3 | export { Link as KLink }; 4 | export default Link; 5 | 6 | export type { KLinkProps } from './types'; 7 | -------------------------------------------------------------------------------- /components/Link/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | import type { IKunTypePro } from '@ikun-ui/utils'; 4 | export type KLinkProps = { 5 | cls: ClassValue; 6 | disabled: boolean; 7 | underline: boolean; 8 | href: string; 9 | icon: string; 10 | type: IKunTypePro | 'default'; 11 | attrs: Record; 12 | }; 13 | -------------------------------------------------------------------------------- /components/Link/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Mask/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Mask from './index.svelte'; 3 | 4 | export default Mask; 5 | 6 | export { Mask as KMask }; 7 | 8 | export type { KMaskProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Mask/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KMaskProps = { 5 | target: null | HTMLElement; 6 | value: boolean; 7 | color: string; 8 | cls: ClassValue; 9 | attrs: Record; 10 | }; 11 | -------------------------------------------------------------------------------- /components/Mask/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Menu/src/index.ts: -------------------------------------------------------------------------------- 1 | import Menu from './index.svelte'; 2 | import MenuItem from './item.svelte'; 3 | export { Menu as KMenu }; 4 | export { MenuItem as KMenuItem }; 5 | export default Menu; 6 | 7 | export type { 8 | KMenuInstanceOption, 9 | KMenuItemProps, 10 | KMenuInstance, 11 | KMenuProps, 12 | SubMenuType 13 | } from './types'; 14 | -------------------------------------------------------------------------------- /components/Menu/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Message/__test__/fixture/message.content.svelte: -------------------------------------------------------------------------------- 1 |
content
2 | -------------------------------------------------------------------------------- /components/Message/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/MessageBox/__test__/fixture/message-box.content.svelte: -------------------------------------------------------------------------------- 1 |
title
2 | -------------------------------------------------------------------------------- /components/MessageBox/__test__/fixture/message-box.title.svelte: -------------------------------------------------------------------------------- 1 |
title
2 | -------------------------------------------------------------------------------- /components/MessageBox/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Modal/__test__/fixture/modal.slot.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 🐔 8 |

💕

9 |
🏀
10 |
11 | -------------------------------------------------------------------------------- /components/Modal/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Modal from './index.svelte'; 3 | 4 | export default Modal; 5 | 6 | export { Modal as KModal }; 7 | 8 | export type { KModalProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Modal/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | 4 | export type KModalProps = { 5 | show: boolean; 6 | footer: boolean; 7 | layout: 'center' | 'right'; 8 | title: string; 9 | cls: ClassValue; 10 | attrs: Record; 11 | }; 12 | -------------------------------------------------------------------------------- /components/Modal/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Notification/__test__/fixture/notification.content.svelte: -------------------------------------------------------------------------------- 1 |
content
2 | -------------------------------------------------------------------------------- /components/Notification/__test__/fixture/notification.title.svelte: -------------------------------------------------------------------------------- 1 |
title
2 | -------------------------------------------------------------------------------- /components/Notification/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/PageHeader/__test__/fixture/slot.breadcrumb.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | custom breadcrumb 7 | 8 | -------------------------------------------------------------------------------- /components/PageHeader/__test__/fixture/slot.content.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | custom content 7 | 8 | -------------------------------------------------------------------------------- /components/PageHeader/__test__/fixture/slot.default.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | custom default 7 | 8 | -------------------------------------------------------------------------------- /components/PageHeader/__test__/fixture/slot.extra.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | custom extra 7 | 8 | -------------------------------------------------------------------------------- /components/PageHeader/__test__/fixture/slot.icon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | custom icon 7 | 8 | -------------------------------------------------------------------------------- /components/PageHeader/__test__/fixture/slot.title.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | custom title 7 | 8 | -------------------------------------------------------------------------------- /components/PageHeader/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import PageHeader from './index.svelte'; 3 | export { PageHeader as KPageHeader }; 4 | export default PageHeader; 5 | 6 | export type { KPageHeaderProps } from './types'; 7 | -------------------------------------------------------------------------------- /components/PageHeader/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KPageHeaderProps = { 4 | icon: string | null; 5 | title: string; 6 | content: string; 7 | cls: ClassValue; 8 | attrs: Record; 9 | }; 10 | -------------------------------------------------------------------------------- /components/PageHeader/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Pagination/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Pagination from './index.svelte'; 3 | export { Pagination as KPagination }; 4 | 5 | export default Pagination; 6 | 7 | export type { KPaginationProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Pagination/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.base.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
trigger
7 |
8 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.btn.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 13 |
trigger
14 |
15 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.cancel.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
trigger
7 |
8 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
trigger
7 |
8 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.event.cancel.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
trigger
12 |
13 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.event.change.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
trigger
12 |
13 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.event.confirm.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
trigger
12 |
13 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.icon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
trigger
7 |
8 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.slot.content.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
trigger
7 |
test content
8 |
9 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.slot.footer.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
trigger
7 |
test footer
8 |
9 | -------------------------------------------------------------------------------- /components/Popconfirm/__test__/fixture/popconfirm.slot.title.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
trigger
7 |
test title
8 |
9 | -------------------------------------------------------------------------------- /components/Popconfirm/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Popconfirm from './index.svelte'; 3 | export { Popconfirm as KPopconfirm }; 4 | 5 | export default Popconfirm; 6 | 7 | export type { KPopconfirmProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Popconfirm/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Popover/__test__/fixture/popover.arrow.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
top
7 |
8 |

有美一人,清扬婉兮

9 |
10 |
11 | -------------------------------------------------------------------------------- /components/Popover/__test__/fixture/popover.disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
top
7 |
8 |

有美一人,清扬婉兮

9 |
10 |
11 | -------------------------------------------------------------------------------- /components/Popover/__test__/fixture/popover.open.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
top
7 |
8 |

有美一人,清扬婉兮

9 |
10 |
11 | -------------------------------------------------------------------------------- /components/Popover/__test__/fixture/popover.placement.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
top
7 |
8 |

有美一人,清扬婉兮

9 |
10 |
11 | -------------------------------------------------------------------------------- /components/Popover/__test__/fixture/popover.slots.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
triggerEl
7 |
8 |

contentEl

9 |
10 |
11 | -------------------------------------------------------------------------------- /components/Popover/__test__/fixture/popover.trigger.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
top
7 |
8 |

有美一人,清扬婉兮

9 |
10 |
11 | -------------------------------------------------------------------------------- /components/Popover/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Popover from './index.svelte'; 3 | 4 | export default Popover; 5 | 6 | export { Popover as KPopover }; 7 | 8 | export type { KPopoverProps, OffsetsFunction, OffsetsFnPa } from './types'; 9 | -------------------------------------------------------------------------------- /components/Popover/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Progress/__test__/fixture/progress.slots.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 🏀 7 | 8 | -------------------------------------------------------------------------------- /components/Progress/src/index.ts: -------------------------------------------------------------------------------- 1 | import Progress from './index.svelte'; 2 | export default Progress; 3 | 4 | export { Progress as KProgress }; 5 | 6 | export type { KProgressProps } from './types'; 7 | -------------------------------------------------------------------------------- /components/Progress/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Radio/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Radio from './index.svelte'; 3 | 4 | export default Radio; 5 | 6 | export { Radio as KRadio }; 7 | 8 | export type { KRadioProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Radio/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | import type { IKunSize } from '@ikun-ui/utils'; 4 | 5 | export type KRadioProps = { 6 | value: boolean; 7 | label: string; 8 | uid: string | number; 9 | size: IKunSize; 10 | disabled: boolean; 11 | cls: ClassValue; 12 | attrs: Record; 13 | }; 14 | -------------------------------------------------------------------------------- /components/Radio/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/RadioGroup/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import RadioGroup from './index.svelte'; 3 | export { RadioGroup as KRadioGroup }; 4 | 5 | export default RadioGroup; 6 | export type { RadioGroupCtx, radioMapItem, KRadioGroupProps, radioMapType } from './types'; 7 | -------------------------------------------------------------------------------- /components/RadioGroup/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Rate/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Rate from './index.svelte'; 3 | export { Rate as KRate }; 4 | 5 | export default Rate; 6 | 7 | export type { KRateProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Rate/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Scrollbar/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Scrollbar from './index.svelte'; 3 | export { Scrollbar as KScrollbar }; 4 | export { scrollDefaultProps, genCSSVariable } from './utils'; 5 | export default Scrollbar; 6 | 7 | export * from './utils'; 8 | 9 | export type { KScrollbarProps } from './types'; 10 | -------------------------------------------------------------------------------- /components/Scrollbar/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | export type KScrollbarProps = { 4 | css: string; 5 | trackBackground: string; 6 | trackRadius: string; 7 | width: string; 8 | height: string; 9 | thumbBackground: string; 10 | thumbRadius: string; 11 | cls: ClassValue; 12 | attrs: Record; 13 | }; 14 | -------------------------------------------------------------------------------- /components/Scrollbar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Segmented/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Segmented from './index.svelte'; 3 | import SegmentedItem from './item.svelte'; 4 | export { Segmented as KSegmented }; 5 | export { SegmentedItem as KSegmentedItem }; 6 | export default Segmented; 7 | 8 | export type { 9 | KSegmentedProps, 10 | KSegmentedItemProps, 11 | SizeChangeFns, 12 | ValueChangeFns, 13 | KSegmentedContext 14 | } from './types'; 15 | -------------------------------------------------------------------------------- /components/Segmented/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Select/__test__/fixture/select.custom.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 |
prefix
12 |
suffix
13 | 14 |
15 | -------------------------------------------------------------------------------- /components/Select/__test__/fixture/select.number.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | {value} 11 | -------------------------------------------------------------------------------- /components/Select/__test__/fixture/select.slots.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
prefix
7 |
suffix
8 |
9 | -------------------------------------------------------------------------------- /components/Select/__test__/fixture/select.string.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 11 | {value} 12 | -------------------------------------------------------------------------------- /components/Select/__test__/fixture/select.value.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /components/Select/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Select from './index.svelte'; 3 | 4 | export default Select; 5 | 6 | export { Select as KSelect }; 7 | 8 | export type { KSelectProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Select/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/active.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
hello
8 |
9 | 10 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/avatar.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
hello
8 |
9 | 10 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/image.slot.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
hello
7 |
8 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/loading.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
hello
8 |
9 | 10 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/overide.avatar.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
hello
12 |
13 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/overide.paragraph.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
hello
12 |
13 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/overide.round.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
hello
8 |
9 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/overide.title.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
hello
12 |
13 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/paragraph.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
hello
8 |
9 | 10 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/round.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
hello
8 |
9 | 10 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/size.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
hello
7 |
8 | 9 |
hello
10 |
11 | 12 |
hello
13 |
14 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/slot.skeleton.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
hello
7 |
8 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/slot.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
hello
7 |
8 | -------------------------------------------------------------------------------- /components/Skeleton/__test__/fixture/title.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
hello
8 |
9 | 10 | -------------------------------------------------------------------------------- /components/Skeleton/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Slider/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Slider from './index.svelte'; 3 | 4 | export default Slider; 5 | 6 | export { Slider as KSlider }; 7 | 8 | export type { KSliderProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Slider/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Spin/__test__/fixture/spin.bg.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /components/Spin/__test__/fixture/spin.full.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /components/Spin/__test__/fixture/spin.rotate.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /components/Spin/__test__/fixture/spin.show.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | 15 |
16 | -------------------------------------------------------------------------------- /components/Spin/__test__/fixture/spin.spinner.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /components/Spin/__test__/fixture/spin.text.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 | 15 |
16 | -------------------------------------------------------------------------------- /components/Spin/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Statistic/__test__/fixture/prefix.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | prefix 7 | 8 | -------------------------------------------------------------------------------- /components/Statistic/__test__/fixture/suffix.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | suffix 7 | 8 | -------------------------------------------------------------------------------- /components/Statistic/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Statistic from './index.svelte'; 3 | export { Statistic as KStatistic }; 4 | 5 | export default Statistic; 6 | 7 | export type { KStatisticProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Statistic/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Steps/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Steps from './index.svelte'; 3 | import Step from './step.svelte'; 4 | export { Steps as KSteps }; 5 | export { Step as KStep }; 6 | export default Steps; 7 | 8 | export type { KStepsProps, KStepsItem, KStepsItems, KStepProps, KStepStatus } from './types.d'; 9 | -------------------------------------------------------------------------------- /components/Steps/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Switch/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Switch from './index.svelte'; 3 | 4 | export default Switch; 5 | 6 | export { Switch as KSwitch }; 7 | 8 | export type { KSwitchProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Switch/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Tabs/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Tabs from './index.svelte'; 3 | import TabPane from './pane.svelte'; 4 | export { Tabs as KTabs }; 5 | export { TabPane as KTabsPane }; 6 | export default Tabs; 7 | 8 | export type { KTabsProps, KTabsPaneProps, KTabsNav, KTabContext } from './types'; 9 | -------------------------------------------------------------------------------- /components/Tabs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Tag/__test__/fixture/tag.test.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | KTag 7 | 8 | -------------------------------------------------------------------------------- /components/Tag/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Tag from './index.svelte'; 3 | 4 | export default Tag; 5 | 6 | export { Tag as KTag }; 7 | 8 | export type { KTagProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Tag/src/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import type { ClassValue } from 'clsx'; 3 | import type { IKunTypePro } from '@ikun-ui/utils'; 4 | 5 | export type KTagProps = { 6 | type: IKunTypePro; 7 | bgColor: string; 8 | textColor: string; 9 | icon: string; 10 | border: boolean; 11 | closable: boolean; 12 | closeIcon: string; 13 | cls: ClassValue; 14 | attrs: Record; 15 | }; 16 | -------------------------------------------------------------------------------- /components/Tag/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/basic.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/children.mode.alternate.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/children.mode.left.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/children.mode.right.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/color.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/label.mode.alternate.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/label.mode.left.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/label.mode.right.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/pending.string.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/pending.true.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/position.mode.alternate.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/position.mode.left.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/position.mode.right.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/position.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/reverse.pending.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/reverse.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/slots.children.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 |
🍒 {children}
16 |
17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/slots.dot.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /components/Timeline/__test__/fixture/slots.pending.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 |
pending
16 |
17 | -------------------------------------------------------------------------------- /components/Timeline/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Timeline from './index.svelte'; 3 | export { Timeline as KTimeline }; 4 | 5 | export default Timeline; 6 | 7 | export type { KTimelineItem, KTimelineProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/Timeline/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/Tooltip/__test__/fixture/tooltip.placement.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
top
7 |
8 | -------------------------------------------------------------------------------- /components/Tooltip/__test__/fixture/tooltip.slots.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
triggerEl
7 |
8 | -------------------------------------------------------------------------------- /components/Tooltip/__test__/fixture/tooltip.trigger.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
top
7 |
8 | -------------------------------------------------------------------------------- /components/Tooltip/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Tooltip from './index.svelte'; 3 | 4 | export default Tooltip; 5 | 6 | export { Tooltip as KTooltip }; 7 | 8 | export type { KTooltipProps } from './types'; 9 | -------------------------------------------------------------------------------- /components/Tooltip/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Tour/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Tour from './index.svelte'; 3 | export { Tour as KTour }; 4 | 5 | export default Tour; 6 | 7 | export type { KTourProps, KTourStepsOption } from './types'; 8 | -------------------------------------------------------------------------------- /components/Tour/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/VirtualList/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import VirtualList from './index.svelte'; 3 | export { VirtualList as KVirtualList }; 4 | 5 | export default VirtualList; 6 | 7 | export type { KVirtualListProps } from './types'; 8 | -------------------------------------------------------------------------------- /components/VirtualList/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true, 8 | "sourceMap": false 9 | }, 10 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 11 | "exclude": ["node_modules/*", "**/*.spec.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /components/Watermark/__test__/__snapshots__/watermark.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html 2 | 3 | exports[`Test: KWatermark > props: cls 1`] = `"
"`; 4 | 5 | exports[`Test: KWatermark > slot: default 1`] = `"
"`; 6 | -------------------------------------------------------------------------------- /components/Watermark/__test__/fixture/watermark.slot.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /components/Watermark/src/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import Watermark from './index.svelte'; 3 | export { Watermark as KWatermark }; 4 | 5 | export default Watermark; 6 | 7 | export type { KWatermarkFont, KWatermarkProps } from './types'; 8 | 9 | export * from './utils'; 10 | export * from './useClips'; 11 | -------------------------------------------------------------------------------- /components/Watermark/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | 4 | "compilerOptions": { 5 | "noImplicitAny": true, 6 | "strict": true, 7 | "declaration": true 8 | }, 9 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.svelte"], 10 | "exclude": ["node_modules/*", "**/*.spec.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /components/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /docs/.vitepress/components/demo-block/index.ts: -------------------------------------------------------------------------------- 1 | import DemoBlock from './src/index.vue'; 2 | 3 | export default DemoBlock; 4 | -------------------------------------------------------------------------------- /docs/.vitepress/components/logo-animate/index.ts: -------------------------------------------------------------------------------- 1 | import logoAnimate from './src/index.vue'; 2 | 3 | export default logoAnimate; 4 | -------------------------------------------------------------------------------- /docs/.vitepress/components/theme-color/index.ts: -------------------------------------------------------------------------------- 1 | import ThemeColor from './src/index.vue'; 2 | 3 | export default ThemeColor; 4 | -------------------------------------------------------------------------------- /docs/.vitepress/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue'; 5 | 6 | const component: DefineComponent<{}, {}, any>; 7 | export default component; 8 | } 9 | -------------------------------------------------------------------------------- /docs/.vitepress/plugins/code/index.ts: -------------------------------------------------------------------------------- 1 | import { demoBlockPlugin } from './plugin-demo-block'; 2 | 3 | export function applyPlugins(md: any) { 4 | md.use(demoBlockPlugin); 5 | } 6 | -------------------------------------------------------------------------------- /docs/example/alert/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | success alert 7 | error alert 8 | warning alert 9 | info alert 10 |
11 | -------------------------------------------------------------------------------- /docs/example/alert/description.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 13 | This is the description 16 |
17 | -------------------------------------------------------------------------------- /docs/example/alert/icon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | success alert 7 | error alert 8 | warning alert 9 | info alert 10 |
11 | -------------------------------------------------------------------------------- /docs/example/avatar/basic.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 | 10 | 11 | 12 |
13 | -------------------------------------------------------------------------------- /docs/example/avatar/fallback.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/example/avatar/fit-container.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | {#each fits as fit} 10 |
11 |
{fit}
12 | 13 |
14 | {/each} 15 |
16 | -------------------------------------------------------------------------------- /docs/example/avatar/types.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 | User 9 |
10 | -------------------------------------------------------------------------------- /docs/example/backtop/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |

attention to the right _(:з」∠)_

6 | 7 | -------------------------------------------------------------------------------- /docs/example/backtop/custom.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |

attention to the right _(:з」∠)_

7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/example/badge/customizations.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Can't Eat Pancakes 8 | 9 | 10 | 11 | Consumption Pills 12 | 13 | -------------------------------------------------------------------------------- /docs/example/badge/dot-mark.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
🎤&💃
8 |
9 | 10 | 11 | 🤟&🏀 12 | 13 | -------------------------------------------------------------------------------- /docs/example/badge/max-value.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | count++}>Lychee 10 | 11 | 12 | 13 | Little Sunspot 14 | 15 | -------------------------------------------------------------------------------- /docs/example/breadcrumb/basic.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | IKun UI 8 | Breadcrumb 9 | 10 | -------------------------------------------------------------------------------- /docs/example/breadcrumb/separator-icon.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | IKun UI 8 | Breadcrumb 9 | 10 | -------------------------------------------------------------------------------- /docs/example/calendar/basic.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/example/calendar/card.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/example/card/shadow.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | Always 7 | Hover 8 | Never 9 |
10 | -------------------------------------------------------------------------------- /docs/example/card/simple-card.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 |
IKun UI is a component library based on svelte.
9 | {#each components as component} 10 |
{component}
11 | {/each} 12 |
13 | -------------------------------------------------------------------------------- /docs/example/color-picker/alpha.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 17 | -------------------------------------------------------------------------------- /docs/example/color-picker/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /docs/example/color-picker/clear.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 19 | -------------------------------------------------------------------------------- /docs/example/color-picker/disabled.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 17 | -------------------------------------------------------------------------------- /docs/example/color-picker/text.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | 17 | ikun ui 🎤 🤟 🏀 {value} 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/example/color-picker/trigger.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | 17 | ikun ui 🐔 {value} 18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/example/contextmenu/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | right click on me 🏀 7 | 8 | We were both young 9 | When I first saw you 10 | I closed my eyes 11 | 12 |
13 | -------------------------------------------------------------------------------- /docs/example/contextmenu/disabled.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | right click on me 🏀 7 | 8 | We were both young 9 | When I first saw you 10 | I closed my eyes 11 | 12 |
13 | -------------------------------------------------------------------------------- /docs/example/divider/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | The worst way to miss someone is to be sitting right beside them knowing you can’t have them. 8 | 9 | 10 | Life is like a box of chocolates, you never know what you are going to get. 11 |
12 | -------------------------------------------------------------------------------- /docs/example/divider/vertical-divider.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | apple 7 | 8 | banana 9 | 10 | orange 11 |
12 | -------------------------------------------------------------------------------- /docs/example/ellipsis/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /docs/example/ellipsis/line-clamp.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 12 |
13 | -------------------------------------------------------------------------------- /docs/example/ellipsis/num.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /docs/example/empty/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /docs/example/empty/bottom.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 | 8 | KButton 9 | 10 |
11 | -------------------------------------------------------------------------------- /docs/example/empty/image.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /docs/example/empty/size.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 10 |
11 | -------------------------------------------------------------------------------- /docs/example/flex/wrap.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | {#each arrs as item} 9 | button 10 | {/each} 11 | 12 | -------------------------------------------------------------------------------- /docs/example/grid/gutter.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |
7 |
8 |
9 |
10 | 11 | -------------------------------------------------------------------------------- /docs/example/icon/multi-color.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 11 | 16 |
17 | -------------------------------------------------------------------------------- /docs/example/input-number/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |

{num}

11 | -------------------------------------------------------------------------------- /docs/example/input-number/disabled.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/example/input-number/limit.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |

{num}

11 | -------------------------------------------------------------------------------- /docs/example/input-number/precision.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |

{num}

11 | -------------------------------------------------------------------------------- /docs/example/input-number/step.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |

{num}

11 | -------------------------------------------------------------------------------- /docs/example/input-number/strictly.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |

{num}

11 | -------------------------------------------------------------------------------- /docs/example/input/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |

{value}

11 | -------------------------------------------------------------------------------- /docs/example/input/clearable.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 |

{value}

19 | -------------------------------------------------------------------------------- /docs/example/input/disabled.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |

{value}

11 | -------------------------------------------------------------------------------- /docs/example/input/password.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 11 |

{value}

12 | -------------------------------------------------------------------------------- /docs/example/input/prefix.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 17 |

{value}

18 | -------------------------------------------------------------------------------- /docs/example/layout/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 风带来故事的种子,时间使之发芽(header) 8 | 9 | 10 | 你我同为异世界之旅人,在此相遇皆为命运之意志(main) 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/example/layout/basic3.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 |

飞翔吧,飞翔吧

8 |

就像飞鸟那样

9 |

(aside)

10 |
11 | 12 |

若你困于无风之地,我将奏响高天之歌

13 |

我将奏响高天之歌

14 |

(main)

15 |
16 |
17 | -------------------------------------------------------------------------------- /docs/example/mask/basic.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | (show = true)}>open mask 9 | 10 | (show = false)} cls="fixed z-1001 top-1/2 left-1/2"> 11 | close mask 12 | 13 | 14 |
15 | -------------------------------------------------------------------------------- /docs/example/message-box/custom-content.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/example/message-box/custom-title.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | title 7 |
8 | -------------------------------------------------------------------------------- /docs/example/message/basic.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | renderMessage('哇,真的是你啊~')}> 14 | render message 15 | 16 |
17 | -------------------------------------------------------------------------------- /docs/example/message/custom-content.svelte: -------------------------------------------------------------------------------- 1 |
荔枝?你要我怎么荔枝!? 🏀
2 | -------------------------------------------------------------------------------- /docs/example/message/custom.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | renderMessage()}>custom render 14 |
15 | -------------------------------------------------------------------------------- /docs/example/message/offset.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 | renderMessage('哇,真的是你啊~', 120)}>offset 14 |
15 | -------------------------------------------------------------------------------- /docs/example/modal/basic.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | (show = true)}>open modal 8 | 9 | (show = false)} {show}> 10 |

🥵 Sadness makes people more acute.

11 |
12 | -------------------------------------------------------------------------------- /docs/example/modal/layout.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | (show = true)}>open modal(layout) 8 | 9 | (show = false)} {show}> 10 |

🍞 Bread! Bread! We want to bread!

11 |
12 | -------------------------------------------------------------------------------- /docs/example/notification/custom-content.svelte: -------------------------------------------------------------------------------- 1 |
荔枝?你要我怎么荔枝!? 🏀
2 | -------------------------------------------------------------------------------- /docs/example/notification/custom-title.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | custom-title 8 |
9 | -------------------------------------------------------------------------------- /docs/example/page-header/basic.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | Title 14 | 15 | -------------------------------------------------------------------------------- /docs/example/page-header/icon.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | Title 14 | 15 | -------------------------------------------------------------------------------- /docs/example/page-header/no-icon.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | Title 14 | 15 | -------------------------------------------------------------------------------- /docs/example/pagination/background.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/example/pagination/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/example/pagination/infinite.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/example/popconfirm/basic.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | delete 8 | 9 | -------------------------------------------------------------------------------- /docs/example/popconfirm/btn.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 15 | delete 16 | 17 | -------------------------------------------------------------------------------- /docs/example/popconfirm/icon.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 13 | delete 14 | 15 | -------------------------------------------------------------------------------- /docs/example/popover/basic.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | trigger KPopover 8 |
9 |

亲手点燃黑暗森林的火星

10 | 前进四 11 |
12 |
13 | -------------------------------------------------------------------------------- /docs/example/progress/color.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/example/radio/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | You like playing 11 | 12 |
13 | -------------------------------------------------------------------------------- /docs/example/rate/allow-half.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 |
12 | -------------------------------------------------------------------------------- /docs/example/rate/clearable.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 |
11 | -------------------------------------------------------------------------------- /docs/example/rate/more-icon.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 | 12 |
13 | -------------------------------------------------------------------------------- /docs/example/rate/score-template.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/example/rate/sizes.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /docs/example/rate/with-text.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/example/select/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 11 |

{value}

12 | -------------------------------------------------------------------------------- /docs/example/select/clearable.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 15 |

{value}

16 | -------------------------------------------------------------------------------- /docs/example/select/disabled.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 15 |

{value}

16 | -------------------------------------------------------------------------------- /docs/example/select/prefix.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 |

{value}

17 | -------------------------------------------------------------------------------- /docs/example/skeleton/active.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/example/skeleton/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/example/skeleton/complex.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/example/slider/disabled.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |

value: {value}

12 | -------------------------------------------------------------------------------- /docs/example/slider/range.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 |

value: {value}

14 |

min: {min}

15 |

max: {max}

16 | -------------------------------------------------------------------------------- /docs/example/slider/render.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
🏀
12 |
13 |

value: {value}

14 | -------------------------------------------------------------------------------- /docs/example/slider/sizes.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/example/switch/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 | {value} 12 |
13 | -------------------------------------------------------------------------------- /docs/example/switch/color.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 16 | {value} 17 |
18 | -------------------------------------------------------------------------------- /docs/example/switch/disabled.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 |
12 | -------------------------------------------------------------------------------- /docs/example/switch/loading.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 |
12 | -------------------------------------------------------------------------------- /docs/example/switch/value.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 16 | {value} 17 |
18 | -------------------------------------------------------------------------------- /docs/example/tag/basic.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | info 7 | error 8 | success 9 | primary 10 | warning 11 | customize 12 |
13 | -------------------------------------------------------------------------------- /docs/example/tag/icon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | Error 8 | Settings 11 |
12 | -------------------------------------------------------------------------------- /docs/example/tag/removable.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | info 7 | success 8 | primary 9 |
10 | -------------------------------------------------------------------------------- /docs/example/tooltip/basic.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | trigger KTooltip 11 | 12 | -------------------------------------------------------------------------------- /docs/example/virtual-list/basic.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 |
12 | {data.label} 13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /docs/example/watermark/basic.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/example/watermark/content.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/example/watermark/image.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/public/WX20230805-132525@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ikun-svelte/ikun-ui/e1b1edbc9ac066d997d3069fa9488a4b369cbac0/docs/public/WX20230805-132525@2x.png -------------------------------------------------------------------------------- /docs/public/WX20230805-132646@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ikun-svelte/ikun-ui/e1b1edbc9ac066d997d3069fa9488a4b369cbac0/docs/public/WX20230805-132646@2x.png -------------------------------------------------------------------------------- /docs/public/logo.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ikun-svelte/ikun-ui/e1b1edbc9ac066d997d3069fa9488a4b369cbac0/docs/public/logo.psd -------------------------------------------------------------------------------- /docs/public/xhz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ikun-svelte/ikun-ui/e1b1edbc9ac066d997d3069fa9488a4b369cbac0/docs/public/xhz.jpg -------------------------------------------------------------------------------- /docs/svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess() 7 | }; 8 | -------------------------------------------------------------------------------- /e2e/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /dist 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | -------------------------------------------------------------------------------- /e2e/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /e2e/src/component/KVirtualList/offset.test.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 |
12 | {data.label} 13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /e2e/src/component/KVirtualList/slot-default.test.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 |
12 | {data.label} 13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /e2e/src/component/KVirtualList/start.test.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 |
12 | {data.label} 13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /e2e/src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 |
ikun-ui e2e test
2 | -------------------------------------------------------------------------------- /e2e/src/routes/+page.ts: -------------------------------------------------------------------------------- 1 | import 'virtual:uno.css'; 2 | -------------------------------------------------------------------------------- /e2e/src/routes/select/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /e2e/src/routes/select/+page.ts: -------------------------------------------------------------------------------- 1 | import 'virtual:uno.css'; 2 | -------------------------------------------------------------------------------- /e2e/src/routes/virtual-list/+page.ts: -------------------------------------------------------------------------------- 1 | import 'virtual:uno.css'; 2 | -------------------------------------------------------------------------------- /e2e/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ikun-svelte/ikun-ui/e1b1edbc9ac066d997d3069fa9488a4b369cbac0/e2e/static/favicon.png -------------------------------------------------------------------------------- /e2e/vite.config.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | import { sveltekit } from '@sveltejs/kit/vite'; 3 | import { defineConfig } from 'vitest/config'; 4 | import Unocss from 'unocss/vite'; 5 | export default defineConfig({ 6 | plugins: [sveltekit(), Unocss()] 7 | /* test: { 8 | include: ['components/!**!/!*.{test,spec}.{js,ts}'] 9 | }*/ 10 | }); 11 | -------------------------------------------------------------------------------- /e2e/vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config'; 2 | 3 | const timeout = process.env.CI ? 100000 : 50000; 4 | export default defineConfig({ 5 | test: { 6 | include: ['./src/**/*.test.[tj]s'], 7 | testTimeout: timeout, 8 | hookTimeout: timeout, 9 | reporters: 'dot', 10 | onConsoleLog(log) { 11 | if (log.match(/experimental|jit engine|emitted file|tailwind/i)) return false; 12 | } 13 | }, 14 | esbuild: { 15 | target: 'node14' 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build.environment] 2 | NODE_VERSION = "18" 3 | 4 | [build] 5 | base = "docs" 6 | publish = "/.vitepress/dist" 7 | command = "pnpm run docs:build" 8 | -------------------------------------------------------------------------------- /play/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /dist 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | src/routes/+page.svelte 13 | -------------------------------------------------------------------------------- /play/src/app.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | --at-apply: p0 m0 min-h-100vh bg-ikun-white; 4 | } 5 | html.dark, 6 | .dark body { 7 | --at-apply: bg-ikun-black; 8 | } 9 | -------------------------------------------------------------------------------- /play/src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | } 11 | 12 | export {}; 13 | -------------------------------------------------------------------------------- /play/src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /play/src/lib/index.js: -------------------------------------------------------------------------------- 1 | // Reexport your entry components here 2 | -------------------------------------------------------------------------------- /play/src/routes/+page.ts: -------------------------------------------------------------------------------- 1 | import 'virtual:uno.css'; 2 | import '../app.css' 3 | -------------------------------------------------------------------------------- /play/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ikun-svelte/ikun-ui/e1b1edbc9ac066d997d3069fa9488a4b369cbac0/play/static/favicon.png -------------------------------------------------------------------------------- /play/vite.config.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | import { sveltekit } from '@sveltejs/kit/vite'; 3 | import Inspect from 'vite-plugin-inspect'; 4 | import { defineConfig } from 'vitest/config'; 5 | import Unocss from 'unocss/vite'; 6 | export default defineConfig({ 7 | plugins: [sveltekit(), Unocss(), Inspect()], 8 | test: { 9 | include: ['components/**/*.{test,spec}.{js,ts}'] 10 | }, 11 | server: { 12 | port: 8001 13 | }, 14 | optimizeDeps: { 15 | // exclude: ['svelte'] 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /playground/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ikun-ui/playground", 3 | "version": "0.0.2" 4 | } 5 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - playground 3 | - docs 4 | - play 5 | - preset 6 | - utils 7 | - e2e 8 | - components/* 9 | -------------------------------------------------------------------------------- /preset/src/index.ts: -------------------------------------------------------------------------------- 1 | export { presetIkun } from './preset'; 2 | export * from './shortcuts/index'; 3 | // custom theme: colors + theme + rules 4 | export { defaultColors as ikunColors, getCSSPreflights } from './colors'; 5 | export { defaultTheme as ikunTheme } from './theme'; 6 | export { defaultRules as ikunRules } from './rules'; 7 | export { defaultShortcuts as ikunShortcuts } from './shortcuts'; 8 | -------------------------------------------------------------------------------- /preset/src/rules/src/card.ts: -------------------------------------------------------------------------------- 1 | export const cardRules = { 2 | 'k-card-shadow': { 'box-shadow': '0 0 12px rgba(0, 0, 0, 0.12)' }, 3 | // 'k-card-shadow__dark': { 'box-shadow': '0 0 12px rgba(0, 0, 0, 0.72)' }, 4 | 'k-card-transition-timer': { transition: 'all 0.3s linear' } 5 | }; 6 | -------------------------------------------------------------------------------- /preset/src/rules/src/carousel.ts: -------------------------------------------------------------------------------- 1 | export const carouselRules = { 2 | 'k-carousel-center': { top: 'calc(50% - 16px)' }, 3 | 'k-carousel-item': { transition: 'all .3s cubic-bezier(0.645, 0.045, 0.355, 1)' } 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/rules/src/descriptions-item.ts: -------------------------------------------------------------------------------- 1 | export function getDescriptionsItemGridColStartCls(colNum: number = 24) { 2 | const cls: Record> = {}; 3 | for (let i = 1; i < colNum + 1; i++) { 4 | cls[`k-descriptions-item--col-${i}`] = { 5 | 'grid-column-start': `${i}`, 6 | 'grid-column-end': '-1' 7 | }; 8 | cls[`ikun-last:k-descriptions-item--col-${i}`] = { 9 | '--at-apply': `last:k-descriptions-item--col-${i}` 10 | }; 11 | } 12 | return cls; 13 | } 14 | -------------------------------------------------------------------------------- /preset/src/rules/src/descriptions.ts: -------------------------------------------------------------------------------- 1 | export function getDescriptionsGridColCls(colNum: number = 24) { 2 | const cls: Record> = {}; 3 | for (let i = 1; i < colNum + 1; i++) { 4 | cls[`k-descriptions--cols-${i}`] = { 5 | grid: `auto-flow / repeat(${i}, auto)` 6 | }; 7 | } 8 | return cls; 9 | } 10 | -------------------------------------------------------------------------------- /preset/src/rules/src/icon.ts: -------------------------------------------------------------------------------- 1 | export const iconRules = { 2 | 'k-icon-transition': { transition: 'all 0.3s linear' } 3 | }; 4 | -------------------------------------------------------------------------------- /preset/src/rules/src/indicators.ts: -------------------------------------------------------------------------------- 1 | export const indicatorsRules = { 2 | 'k-indicators-tanslate-y-half': { transform: 'translateY(-50%)' } 3 | }; 4 | -------------------------------------------------------------------------------- /preset/src/rules/src/input.ts: -------------------------------------------------------------------------------- 1 | export const inputRules = { 2 | 'k-input-shadow': { 'box-shadow': '0 0 0 2px #ff787542' }, 3 | 'k-input-shadow--error': { 'box-shadow': '0 0 0 2px rgba(251,113,133,0.5)' } 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/rules/src/notify.ts: -------------------------------------------------------------------------------- 1 | export const notifyRules = { 2 | 'k-notify-transition': { transition: 'top 0.3s linear' } 3 | }; 4 | -------------------------------------------------------------------------------- /preset/src/rules/src/popover.ts: -------------------------------------------------------------------------------- 1 | export const popoverRules = { 2 | 'k-popover-shadow__left': { 'box-shadow': '0 0 10px rgb(0 0 0 / 0.25)' }, 3 | 'k-popover-shadow__top': { 'box-shadow': '0 0 10px rgb(0 0 0 / 0.25)' }, 4 | 'k-popover-shadow__bottom': { 'box-shadow': '0 0 10px rgb(0 0 0 / 0.25)' }, 5 | 'k-popover-shadow__right': { 'box-shadow': '0 0 10px rgb(0 0 0 / 0.25)' } 6 | }; 7 | -------------------------------------------------------------------------------- /preset/src/rules/src/progress.ts: -------------------------------------------------------------------------------- 1 | export const progressRules = { 2 | 'k-progress-transition__cd': { transition: 'stroke-dasharray 0.28s linear' }, 3 | 'k-progress-transition': { transition: 'width 0.28s linear' } 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/rules/src/skeleton.ts: -------------------------------------------------------------------------------- 1 | export const skeletonRules = { 2 | 'k-skeleton-bg': { 3 | background: 4 | 'linear-gradient(90deg, rgba(0, 0, 0, 0.06) 25%, rgba(0, 0, 0, 0.15) 37%, rgba(0, 0, 0, 0.06) 63%)', 5 | 'background-size': '400% 100%' 6 | }, 7 | 'k-skeleton-bg__dark': { 8 | background: 9 | 'linear-gradient(90deg, rgba(255, 255, 255, 0.06) 25%, rgba(255, 255, 255, 0.15) 37%, rgba(255, 255, 255, 0.06) 63%)', 10 | 'background-size': '400% 100%' 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /preset/src/rules/src/switch.ts: -------------------------------------------------------------------------------- 1 | export const switchRules = { 2 | 'k-switch-transition': { transition: 'right .1s linear' } 3 | }; 4 | -------------------------------------------------------------------------------- /preset/src/rules/src/tab.ts: -------------------------------------------------------------------------------- 1 | export const tabRules = { 2 | 'k-tab-transition': { transition: 'transform .3s linear' }, 3 | 'k-tab-transition-all': { transition: 'all .3s cubic-bezier(0.645, 0.045, 0.355, 1)' }, 4 | 'k-tab__nav-transition': { transition: 'padding .3s cubic-bezier(0.645, 0.045, 0.355, 1)' } 5 | }; 6 | -------------------------------------------------------------------------------- /preset/src/rules/src/timeline.ts: -------------------------------------------------------------------------------- 1 | export const timelineRules = { 2 | 'k-timeline-tx-cr': { 'inset-inline-start': 'calc(50% - 12px)', width: 'calc(50% - 12px)' }, 3 | 'k-timeline-tx-cl': { width: 'calc(50% - 12px)' } 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/affix.ts: -------------------------------------------------------------------------------- 1 | export const affixShortcuts: Record = { 2 | // affix 3 | 'k-affix': '[&.k-affix--affixed]:pf [&.k-affix--affixed.k-affix--absolute-positioned]:pa' 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/avatar.ts: -------------------------------------------------------------------------------- 1 | export const avatarShortcuts: Record = { 2 | // avatar 3 | 'k-avatar': 4 | 'infcc v-mid box-border text-ikun-tx-base text-14px text-center bg-ikun-light-700 overflow-hidden [&>img]:(block b-none max-w-full w-full h-full)', 5 | 6 | // dark 7 | 'k-avatar__dark': 'dark:bg-ikun-light-700' 8 | }; 9 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/backtop.ts: -------------------------------------------------------------------------------- 1 | export const backtopShortcuts: Record = { 2 | // backtop 3 | 'k-backtop--base': 4 | 'fcc shadow-lg shadow-ikun-main pf cursor-pointer bg-ikun-white z-100 rounded-full w-12 h-12', 5 | 6 | // dark 7 | 'k-backtop__dark': 'dark:bg-ikun-dark-300' 8 | }; 9 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/base.ts: -------------------------------------------------------------------------------- 1 | export const baseShortcuts: Record = { 2 | 'k-cur-disabled': '!cursor-not-allowed', 3 | 'k-cur-loading': 'cursor-wait ', 4 | 'k-border': 'border border-solid', 5 | 'k-bg-disabled': 'bg-ikun-disabled', 6 | 'k-reset-btn': 'p-0 text-[inherit] bg-transparent border-0 leading-[inherit]' 7 | }; 8 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/breadcrumb.ts: -------------------------------------------------------------------------------- 1 | export const breadcrumbShortcuts: Record = { 2 | // breadcrumb 3 | 'k-breadcrumb': 'flex text-14px before:table after:(table clear-both)' 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/drawer.ts: -------------------------------------------------------------------------------- 1 | export const drawerShortcuts: Record = { 2 | // drawer 3 | 'k-drawer--base': 'bg-ikun-white fixed z-1000 top-0 min-w-1/3 h-full p2', 4 | 'k-drawer--op': 'w-full fi', 5 | 'k-drawer--content': 'overflow-y-auto mt-2', 6 | 'k-drawer--header--icon__hover': 'hover:text-ikun-main', 7 | 'k-drawer--footer': 'p2 fi', 8 | 'k-drawer--footer--btn': 'mx-2', 9 | // dark 10 | 'k-drawer--base__dark': 'dark:bg-ikun-dark-300' 11 | }; 12 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/ellipsis.ts: -------------------------------------------------------------------------------- 1 | export const ellipsisShortcuts: Record = { 2 | // ellipsis 3 | 'k-ellipsis': 'k-reset-btn !cursor-text', 4 | 'k-ellipsis--line-clamp': 'k-reset-btn cursor-pointer' 5 | }; 6 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/eye-dropper.ts: -------------------------------------------------------------------------------- 1 | export const eyeDropperShortcuts: Record = { 2 | // eyeDropper 3 | 'k-eyedropper--base': 'w-full h-full' 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/icon.ts: -------------------------------------------------------------------------------- 1 | export const iconShortcuts: Record = { 2 | // icon 3 | 'k-icon--base': 'f-c', 4 | 'k-icon--role-button': 'cursor-pointer', 5 | // dark 6 | 'k-icon--base__dark': 'dark:text-ikun-white' 7 | }; 8 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/mask.ts: -------------------------------------------------------------------------------- 1 | export const maskShortcuts: Record = { 2 | // mask 3 | 'k-mask--base': 'ikun:50:bg-ikun-black z-999 absolute' 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/scrollbar.ts: -------------------------------------------------------------------------------- 1 | export const scrollbarShortcuts: Record = { 2 | // avatar 3 | 'k-scrollbar': 'overflow-auto' 4 | }; 5 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/spin.ts: -------------------------------------------------------------------------------- 1 | export const spinShortcuts: Record = { 2 | 'k-spin--spinner': 3 | 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-center text-ikun-main', 4 | 'k-spin--text': 'text-4 my-4 animate-bounce', 5 | 'k-spin--spinner__rotating': 'animate-spin animate-duration-3000 fcc' 6 | }; 7 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/statistic.ts: -------------------------------------------------------------------------------- 1 | export const statisticShortcuts: Record = { 2 | // statistic 3 | 'k-statistic__head': 'text-base text-ikun-tx-gr mb-4px leading-20px text-12px', 4 | 'k-statistic__content': 'text-base text-ikun-tx-base', 5 | 'k-statistic__value': 'inline-block', 6 | 'k-statistic__prefix': 'inline-block mr-4px align-middle', 7 | 'k-statistic__suffix': 'inline-block ml-4px align-middle' 8 | }; 9 | -------------------------------------------------------------------------------- /preset/src/shortcuts/src/virtual-list.ts: -------------------------------------------------------------------------------- 1 | export const virtualListShortcuts: Record = { 2 | // virtualList 3 | 'k-virtual-list--base': 'flex flex-row', 4 | 'k-virtual-list--wrapper': 'flex flex-row' 5 | }; 6 | -------------------------------------------------------------------------------- /preset/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup'; 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | clean: true, 6 | format: ['cjs', 'esm'], 7 | external: ['unocss'], 8 | dts: true, 9 | minify: false 10 | }); 11 | -------------------------------------------------------------------------------- /scripts/build.js: -------------------------------------------------------------------------------- 1 | import { runTask } from './utils.js'; 2 | 3 | runTask('pnpm run build', 'components', 'build'); 4 | -------------------------------------------------------------------------------- /scripts/clean-root-deps.js: -------------------------------------------------------------------------------- 1 | import { rm } from 'fs'; 2 | 3 | const ROOT_NODE_MODULES = 'node_modules'; 4 | async function doCleanRootDeps() { 5 | rm(ROOT_NODE_MODULES, { recursive: true }, (e) => { 6 | if (e) { 7 | console.error(e); 8 | } else { 9 | console.log('[ikun-ui]: Finished cleaning root deps.'); 10 | } 11 | }); 12 | } 13 | 14 | doCleanRootDeps(); 15 | -------------------------------------------------------------------------------- /scripts/publish.js: -------------------------------------------------------------------------------- 1 | import { runTask } from './utils.js'; 2 | async function doPublish() { 3 | try { 4 | await runTask('pnpm run publish:npm', 'components', 'publish'); 5 | await runTask('pnpm run publish:npm', 'preset', 'publish'); 6 | await runTask('pnpm run publish:npm', 'utils', 'publish'); 7 | } catch (e) { 8 | console.error(e); 9 | } 10 | } 11 | 12 | doPublish(); 13 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup'; 2 | 3 | export default defineConfig({ 4 | entry: ['components/index.ts'], 5 | clean: true, 6 | format: ['cjs', 'esm'], 7 | external: ['unocss'], 8 | dts: true, 9 | minify: false 10 | }); 11 | -------------------------------------------------------------------------------- /utils/src/class-names.ts: -------------------------------------------------------------------------------- 1 | export const getPrefixCls = (cls: string) => `k-${cls}`; 2 | -------------------------------------------------------------------------------- /utils/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './types'; 2 | 3 | export { getPrefixCls } from './class-names'; 4 | 5 | export { 6 | breadcrumbKey, 7 | buttonGroupKey, 8 | collapseWrapperKey, 9 | checkboxGroupKey, 10 | radioGroupKey, 11 | rowKey, 12 | contextmenuKey, 13 | formKey, 14 | formItemKey, 15 | tabsKey, 16 | dropDownKey, 17 | descriptionsKey, 18 | segmentedKey, 19 | menuKey 20 | } from './symbol-key'; 21 | export * from './dom'; 22 | -------------------------------------------------------------------------------- /utils/src/types.ts: -------------------------------------------------------------------------------- 1 | export declare type IKunTypeBase = 'success' | 'error' | 'warning' | 'info'; 2 | export declare type IKunTypePro = IKunTypeBase | 'primary'; 3 | export type IKunUncertainFunction = (...arg: any[]) => T | void; 4 | export type IKunSize = 'sm' | 'md' | 'lg'; 5 | export type IKunPlacement = 'top' | 'left' | 'right' | 'bottom'; 6 | export type IKunTrigger = 'manual' | 'click' | 'hover'; 7 | -------------------------------------------------------------------------------- /utils/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup'; 2 | 3 | export default defineConfig({ 4 | entry: ['src/index.ts'], 5 | clean: true, 6 | format: ['cjs', 'esm'], 7 | external: ['unocss'], 8 | dts: true, 9 | minify: false 10 | }); 11 | --------------------------------------------------------------------------------