@keenthemes/ktui 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +88 -0
- package/LICENSE.md +21 -0
- package/README.md +124 -0
- package/dist/ktui.js +19201 -0
- package/dist/ktui.min.js +2 -0
- package/dist/ktui.min.js.map +1 -0
- package/lib/cjs/components/accordion/accordion.js +168 -0
- package/lib/cjs/components/accordion/accordion.js.map +1 -0
- package/lib/cjs/components/accordion/index.js +6 -0
- package/lib/cjs/components/accordion/index.js.map +1 -0
- package/lib/cjs/components/accordion/types.js +3 -0
- package/lib/cjs/components/accordion/types.js.map +1 -0
- package/lib/cjs/components/collapse/collapse.js +169 -0
- package/lib/cjs/components/collapse/collapse.js.map +1 -0
- package/lib/cjs/components/collapse/index.js +6 -0
- package/lib/cjs/components/collapse/index.js.map +1 -0
- package/lib/cjs/components/collapse/types.js +3 -0
- package/lib/cjs/components/collapse/types.js.map +1 -0
- package/lib/cjs/components/component.js +135 -0
- package/lib/cjs/components/component.js.map +1 -0
- package/lib/cjs/components/config.js +26 -0
- package/lib/cjs/components/config.js.map +1 -0
- package/lib/cjs/components/config.umd.js +23 -0
- package/lib/cjs/components/config.umd.js.map +1 -0
- package/lib/cjs/components/constants.js +15 -0
- package/lib/cjs/components/constants.js.map +1 -0
- package/lib/cjs/components/datatable/datatable.js +1464 -0
- package/lib/cjs/components/datatable/datatable.js.map +1 -0
- package/lib/cjs/components/datatable/index.js +6 -0
- package/lib/cjs/components/datatable/index.js.map +1 -0
- package/lib/cjs/components/datatable/types.js +3 -0
- package/lib/cjs/components/datatable/types.js.map +1 -0
- package/lib/cjs/components/dismiss/dismiss.js +131 -0
- package/lib/cjs/components/dismiss/dismiss.js.map +1 -0
- package/lib/cjs/components/dismiss/index.js +6 -0
- package/lib/cjs/components/dismiss/index.js.map +1 -0
- package/lib/cjs/components/dismiss/types.js +3 -0
- package/lib/cjs/components/dismiss/types.js.map +1 -0
- package/lib/cjs/components/drawer/drawer.js +347 -0
- package/lib/cjs/components/drawer/drawer.js.map +1 -0
- package/lib/cjs/components/drawer/index.js +6 -0
- package/lib/cjs/components/drawer/index.js.map +1 -0
- package/lib/cjs/components/drawer/types.js +3 -0
- package/lib/cjs/components/drawer/types.js.map +1 -0
- package/lib/cjs/components/dropdown/dropdown.js +403 -0
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -0
- package/lib/cjs/components/dropdown/index.js +6 -0
- package/lib/cjs/components/dropdown/index.js.map +1 -0
- package/lib/cjs/components/dropdown/types.js +3 -0
- package/lib/cjs/components/dropdown/types.js.map +1 -0
- package/lib/cjs/components/image-input/image-input.js +191 -0
- package/lib/cjs/components/image-input/image-input.js.map +1 -0
- package/lib/cjs/components/image-input/index.js +6 -0
- package/lib/cjs/components/image-input/index.js.map +1 -0
- package/lib/cjs/components/image-input/types.js +3 -0
- package/lib/cjs/components/image-input/types.js.map +1 -0
- package/lib/cjs/components/menu/index.js +6 -0
- package/lib/cjs/components/menu/index.js.map +1 -0
- package/lib/cjs/components/menu/menu.js +1021 -0
- package/lib/cjs/components/menu/menu.js.map +1 -0
- package/lib/cjs/components/menu/types.js +3 -0
- package/lib/cjs/components/menu/types.js.map +1 -0
- package/lib/cjs/components/modal/index.js +6 -0
- package/lib/cjs/components/modal/index.js.map +1 -0
- package/lib/cjs/components/modal/modal.js +316 -0
- package/lib/cjs/components/modal/modal.js.map +1 -0
- package/lib/cjs/components/modal/types.js +3 -0
- package/lib/cjs/components/modal/types.js.map +1 -0
- package/lib/cjs/components/reparent/index.js +6 -0
- package/lib/cjs/components/reparent/index.js.map +1 -0
- package/lib/cjs/components/reparent/reparent.js +93 -0
- package/lib/cjs/components/reparent/reparent.js.map +1 -0
- package/lib/cjs/components/reparent/types.js +3 -0
- package/lib/cjs/components/reparent/types.js.map +1 -0
- package/lib/cjs/components/scrollable/index.js +6 -0
- package/lib/cjs/components/scrollable/index.js.map +1 -0
- package/lib/cjs/components/scrollable/scrollable.js +259 -0
- package/lib/cjs/components/scrollable/scrollable.js.map +1 -0
- package/lib/cjs/components/scrollable/types.js +3 -0
- package/lib/cjs/components/scrollable/types.js.map +1 -0
- package/lib/cjs/components/scrollspy/index.js +6 -0
- package/lib/cjs/components/scrollspy/index.js.map +1 -0
- package/lib/cjs/components/scrollspy/scrollspy.js +174 -0
- package/lib/cjs/components/scrollspy/scrollspy.js.map +1 -0
- package/lib/cjs/components/scrollspy/types.js +3 -0
- package/lib/cjs/components/scrollspy/types.js.map +1 -0
- package/lib/cjs/components/scrollto/index.js +6 -0
- package/lib/cjs/components/scrollto/index.js.map +1 -0
- package/lib/cjs/components/scrollto/scrollto.js +103 -0
- package/lib/cjs/components/scrollto/scrollto.js.map +1 -0
- package/lib/cjs/components/scrollto/types.js +3 -0
- package/lib/cjs/components/scrollto/types.js.map +1 -0
- package/lib/cjs/components/stepper/index.js +6 -0
- package/lib/cjs/components/stepper/index.js.map +1 -0
- package/lib/cjs/components/stepper/stepper.js +258 -0
- package/lib/cjs/components/stepper/stepper.js.map +1 -0
- package/lib/cjs/components/stepper/types.js +3 -0
- package/lib/cjs/components/stepper/types.js.map +1 -0
- package/lib/cjs/components/sticky/index.js +6 -0
- package/lib/cjs/components/sticky/index.js.map +1 -0
- package/lib/cjs/components/sticky/sticky.js +297 -0
- package/lib/cjs/components/sticky/sticky.js.map +1 -0
- package/lib/cjs/components/sticky/types.js +3 -0
- package/lib/cjs/components/sticky/types.js.map +1 -0
- package/lib/cjs/components/tabs/index.js +6 -0
- package/lib/cjs/components/tabs/index.js.map +1 -0
- package/lib/cjs/components/tabs/tabs.js +146 -0
- package/lib/cjs/components/tabs/tabs.js.map +1 -0
- package/lib/cjs/components/tabs/types.js +3 -0
- package/lib/cjs/components/tabs/types.js.map +1 -0
- package/lib/cjs/components/theme/index.js +6 -0
- package/lib/cjs/components/theme/index.js.map +1 -0
- package/lib/cjs/components/theme/theme.js +147 -0
- package/lib/cjs/components/theme/theme.js.map +1 -0
- package/lib/cjs/components/theme/types.js +3 -0
- package/lib/cjs/components/theme/types.js.map +1 -0
- package/lib/cjs/components/toggle/index.js +6 -0
- package/lib/cjs/components/toggle/index.js.map +1 -0
- package/lib/cjs/components/toggle/toggle.js +139 -0
- package/lib/cjs/components/toggle/toggle.js.map +1 -0
- package/lib/cjs/components/toggle/types.js +3 -0
- package/lib/cjs/components/toggle/types.js.map +1 -0
- package/lib/cjs/components/toggle-password/index.js +6 -0
- package/lib/cjs/components/toggle-password/index.js.map +1 -0
- package/lib/cjs/components/toggle-password/toggle-password.js +131 -0
- package/lib/cjs/components/toggle-password/toggle-password.js.map +1 -0
- package/lib/cjs/components/toggle-password/types.js +3 -0
- package/lib/cjs/components/toggle-password/types.js.map +1 -0
- package/lib/cjs/components/tooltip/index.js +6 -0
- package/lib/cjs/components/tooltip/index.js.map +1 -0
- package/lib/cjs/components/tooltip/tooltip.js +271 -0
- package/lib/cjs/components/tooltip/tooltip.js.map +1 -0
- package/lib/cjs/components/tooltip/types.js +3 -0
- package/lib/cjs/components/tooltip/types.js.map +1 -0
- package/lib/cjs/helpers/data.js +33 -0
- package/lib/cjs/helpers/data.js.map +1 -0
- package/lib/cjs/helpers/dom.js +297 -0
- package/lib/cjs/helpers/dom.js.map +1 -0
- package/lib/cjs/helpers/event-handler.js +36 -0
- package/lib/cjs/helpers/event-handler.js.map +1 -0
- package/lib/cjs/helpers/utils.js +94 -0
- package/lib/cjs/helpers/utils.js.map +1 -0
- package/lib/cjs/index.js +105 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/types.js +3 -0
- package/lib/cjs/types.js.map +1 -0
- package/lib/esm/components/accordion/accordion.js +165 -0
- package/lib/esm/components/accordion/accordion.js.map +1 -0
- package/lib/esm/components/accordion/index.js +2 -0
- package/lib/esm/components/accordion/index.js.map +1 -0
- package/lib/esm/components/accordion/types.js +2 -0
- package/lib/esm/components/accordion/types.js.map +1 -0
- package/lib/esm/components/collapse/collapse.js +166 -0
- package/lib/esm/components/collapse/collapse.js.map +1 -0
- package/lib/esm/components/collapse/index.js +2 -0
- package/lib/esm/components/collapse/index.js.map +1 -0
- package/lib/esm/components/collapse/types.js +2 -0
- package/lib/esm/components/collapse/types.js.map +1 -0
- package/lib/esm/components/component.js +133 -0
- package/lib/esm/components/component.js.map +1 -0
- package/lib/esm/components/config.js +24 -0
- package/lib/esm/components/config.js.map +1 -0
- package/lib/esm/components/config.umd.js +23 -0
- package/lib/esm/components/config.umd.js.map +1 -0
- package/lib/esm/components/constants.js +12 -0
- package/lib/esm/components/constants.js.map +1 -0
- package/lib/esm/components/datatable/datatable.js +1461 -0
- package/lib/esm/components/datatable/datatable.js.map +1 -0
- package/lib/esm/components/datatable/index.js +2 -0
- package/lib/esm/components/datatable/index.js.map +1 -0
- package/lib/esm/components/datatable/types.js +2 -0
- package/lib/esm/components/datatable/types.js.map +1 -0
- package/lib/esm/components/dismiss/dismiss.js +128 -0
- package/lib/esm/components/dismiss/dismiss.js.map +1 -0
- package/lib/esm/components/dismiss/index.js +2 -0
- package/lib/esm/components/dismiss/index.js.map +1 -0
- package/lib/esm/components/dismiss/types.js +2 -0
- package/lib/esm/components/dismiss/types.js.map +1 -0
- package/lib/esm/components/drawer/drawer.js +344 -0
- package/lib/esm/components/drawer/drawer.js.map +1 -0
- package/lib/esm/components/drawer/index.js +2 -0
- package/lib/esm/components/drawer/index.js.map +1 -0
- package/lib/esm/components/drawer/types.js +2 -0
- package/lib/esm/components/drawer/types.js.map +1 -0
- package/lib/esm/components/dropdown/dropdown.js +400 -0
- package/lib/esm/components/dropdown/dropdown.js.map +1 -0
- package/lib/esm/components/dropdown/index.js +2 -0
- package/lib/esm/components/dropdown/index.js.map +1 -0
- package/lib/esm/components/dropdown/types.js +2 -0
- package/lib/esm/components/dropdown/types.js.map +1 -0
- package/lib/esm/components/image-input/image-input.js +188 -0
- package/lib/esm/components/image-input/image-input.js.map +1 -0
- package/lib/esm/components/image-input/index.js +2 -0
- package/lib/esm/components/image-input/index.js.map +1 -0
- package/lib/esm/components/image-input/types.js +2 -0
- package/lib/esm/components/image-input/types.js.map +1 -0
- package/lib/esm/components/menu/index.js +2 -0
- package/lib/esm/components/menu/index.js.map +1 -0
- package/lib/esm/components/menu/menu.js +1018 -0
- package/lib/esm/components/menu/menu.js.map +1 -0
- package/lib/esm/components/menu/types.js +2 -0
- package/lib/esm/components/menu/types.js.map +1 -0
- package/lib/esm/components/modal/index.js +2 -0
- package/lib/esm/components/modal/index.js.map +1 -0
- package/lib/esm/components/modal/modal.js +313 -0
- package/lib/esm/components/modal/modal.js.map +1 -0
- package/lib/esm/components/modal/types.js +2 -0
- package/lib/esm/components/modal/types.js.map +1 -0
- package/lib/esm/components/reparent/index.js +2 -0
- package/lib/esm/components/reparent/index.js.map +1 -0
- package/lib/esm/components/reparent/reparent.js +90 -0
- package/lib/esm/components/reparent/reparent.js.map +1 -0
- package/lib/esm/components/reparent/types.js +2 -0
- package/lib/esm/components/reparent/types.js.map +1 -0
- package/lib/esm/components/scrollable/index.js +2 -0
- package/lib/esm/components/scrollable/index.js.map +1 -0
- package/lib/esm/components/scrollable/scrollable.js +256 -0
- package/lib/esm/components/scrollable/scrollable.js.map +1 -0
- package/lib/esm/components/scrollable/types.js +2 -0
- package/lib/esm/components/scrollable/types.js.map +1 -0
- package/lib/esm/components/scrollspy/index.js +2 -0
- package/lib/esm/components/scrollspy/index.js.map +1 -0
- package/lib/esm/components/scrollspy/scrollspy.js +171 -0
- package/lib/esm/components/scrollspy/scrollspy.js.map +1 -0
- package/lib/esm/components/scrollspy/types.js +2 -0
- package/lib/esm/components/scrollspy/types.js.map +1 -0
- package/lib/esm/components/scrollto/index.js +2 -0
- package/lib/esm/components/scrollto/index.js.map +1 -0
- package/lib/esm/components/scrollto/scrollto.js +100 -0
- package/lib/esm/components/scrollto/scrollto.js.map +1 -0
- package/lib/esm/components/scrollto/types.js +2 -0
- package/lib/esm/components/scrollto/types.js.map +1 -0
- package/lib/esm/components/stepper/index.js +2 -0
- package/lib/esm/components/stepper/index.js.map +1 -0
- package/lib/esm/components/stepper/stepper.js +255 -0
- package/lib/esm/components/stepper/stepper.js.map +1 -0
- package/lib/esm/components/stepper/types.js +2 -0
- package/lib/esm/components/stepper/types.js.map +1 -0
- package/lib/esm/components/sticky/index.js +2 -0
- package/lib/esm/components/sticky/index.js.map +1 -0
- package/lib/esm/components/sticky/sticky.js +294 -0
- package/lib/esm/components/sticky/sticky.js.map +1 -0
- package/lib/esm/components/sticky/types.js +2 -0
- package/lib/esm/components/sticky/types.js.map +1 -0
- package/lib/esm/components/tabs/index.js +2 -0
- package/lib/esm/components/tabs/index.js.map +1 -0
- package/lib/esm/components/tabs/tabs.js +143 -0
- package/lib/esm/components/tabs/tabs.js.map +1 -0
- package/lib/esm/components/tabs/types.js +2 -0
- package/lib/esm/components/tabs/types.js.map +1 -0
- package/lib/esm/components/theme/index.js +2 -0
- package/lib/esm/components/theme/index.js.map +1 -0
- package/lib/esm/components/theme/theme.js +144 -0
- package/lib/esm/components/theme/theme.js.map +1 -0
- package/lib/esm/components/theme/types.js +2 -0
- package/lib/esm/components/theme/types.js.map +1 -0
- package/lib/esm/components/toggle/index.js +2 -0
- package/lib/esm/components/toggle/index.js.map +1 -0
- package/lib/esm/components/toggle/toggle.js +136 -0
- package/lib/esm/components/toggle/toggle.js.map +1 -0
- package/lib/esm/components/toggle/types.js +2 -0
- package/lib/esm/components/toggle/types.js.map +1 -0
- package/lib/esm/components/toggle-password/index.js +2 -0
- package/lib/esm/components/toggle-password/index.js.map +1 -0
- package/lib/esm/components/toggle-password/toggle-password.js +128 -0
- package/lib/esm/components/toggle-password/toggle-password.js.map +1 -0
- package/lib/esm/components/toggle-password/types.js +2 -0
- package/lib/esm/components/toggle-password/types.js.map +1 -0
- package/lib/esm/components/tooltip/index.js +2 -0
- package/lib/esm/components/tooltip/index.js.map +1 -0
- package/lib/esm/components/tooltip/tooltip.js +268 -0
- package/lib/esm/components/tooltip/tooltip.js.map +1 -0
- package/lib/esm/components/tooltip/types.js +2 -0
- package/lib/esm/components/tooltip/types.js.map +1 -0
- package/lib/esm/helpers/data.js +31 -0
- package/lib/esm/helpers/data.js.map +1 -0
- package/lib/esm/helpers/dom.js +295 -0
- package/lib/esm/helpers/dom.js.map +1 -0
- package/lib/esm/helpers/event-handler.js +34 -0
- package/lib/esm/helpers/event-handler.js.map +1 -0
- package/lib/esm/helpers/utils.js +92 -0
- package/lib/esm/helpers/utils.js.map +1 -0
- package/lib/esm/index.js +79 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types.js +2 -0
- package/lib/esm/types.js.map +1 -0
- package/package.json +85 -0
- package/prettier.config.js +9 -0
- package/src/components/accordion/accordion-menu.css +51 -0
- package/src/components/accordion/accordion.css +86 -0
- package/src/components/accordion/accordion.ts +221 -0
- package/src/components/accordion/index.ts +7 -0
- package/src/components/accordion/types.ts +16 -0
- package/src/components/alert/alert.css +282 -0
- package/src/components/avatar/avatar.css +46 -0
- package/src/components/badge/badge.css +176 -0
- package/src/components/breadcrumb/breadcrumb.css +38 -0
- package/src/components/btn/btn.css +227 -0
- package/src/components/card/card.css +158 -0
- package/src/components/checkbox/checkbox.css +74 -0
- package/src/components/collapse/collapse.css +14 -0
- package/src/components/collapse/collapse.ts +200 -0
- package/src/components/collapse/index.ts +7 -0
- package/src/components/collapse/types.ts +16 -0
- package/src/components/component.ts +132 -0
- package/src/components/constants.ts +16 -0
- package/src/components/datatable/datatable-checkbox.ts +236 -0
- package/src/components/datatable/datatable-sort.ts +154 -0
- package/src/components/datatable/datatable.css +110 -0
- package/src/components/datatable/datatable.ts +1657 -0
- package/src/components/datatable/index.ts +19 -0
- package/src/components/datatable/types.ts +203 -0
- package/src/components/datepicker/calendar.ts +1397 -0
- package/src/components/datepicker/config.ts +368 -0
- package/src/components/datepicker/datepicker.css +7 -0
- package/src/components/datepicker/datepicker.ts +1287 -0
- package/src/components/datepicker/dropdown.ts +757 -0
- package/src/components/datepicker/events.ts +149 -0
- package/src/components/datepicker/index.ts +10 -0
- package/src/components/datepicker/keyboard.ts +646 -0
- package/src/components/datepicker/locales.ts +80 -0
- package/src/components/datepicker/templates.ts +792 -0
- package/src/components/datepicker/types.ts +154 -0
- package/src/components/datepicker/utils.ts +631 -0
- package/src/components/dismiss/dismiss.css +10 -0
- package/src/components/dismiss/dismiss.ts +152 -0
- package/src/components/dismiss/index.ts +7 -0
- package/src/components/dismiss/types.ts +17 -0
- package/src/components/drawer/drawer.css +97 -0
- package/src/components/drawer/drawer.ts +437 -0
- package/src/components/drawer/index.ts +7 -0
- package/src/components/drawer/types.ts +25 -0
- package/src/components/dropdown/dropdown-menu.css +56 -0
- package/src/components/dropdown/dropdown.css +46 -0
- package/src/components/dropdown/dropdown.ts +549 -0
- package/src/components/dropdown/index.ts +7 -0
- package/src/components/dropdown/types.ts +28 -0
- package/src/components/form/form.css +54 -0
- package/src/components/image-input/image-input.css +56 -0
- package/src/components/image-input/image-input.ts +249 -0
- package/src/components/image-input/index.ts +10 -0
- package/src/components/image-input/types.ts +12 -0
- package/src/components/input/input-group.css +42 -0
- package/src/components/input/input.css +136 -0
- package/src/components/kbd/kbd.css +30 -0
- package/src/components/label/label.css +20 -0
- package/src/components/link/link.css +81 -0
- package/src/components/modal/index.ts +7 -0
- package/src/components/modal/modal.css +73 -0
- package/src/components/modal/modal.ts +382 -0
- package/src/components/modal/types.ts +21 -0
- package/src/components/pagination/pagination.css +26 -0
- package/src/components/popover/popover.css +22 -0
- package/src/components/progress/progress.css +51 -0
- package/src/components/radio/radio.css +51 -0
- package/src/components/reparent/index.ts +7 -0
- package/src/components/reparent/reparent.ts +109 -0
- package/src/components/reparent/types.ts +15 -0
- package/src/components/scrollable/index.ts +10 -0
- package/src/components/scrollable/scrollable.css +29 -0
- package/src/components/scrollable/scrollable.ts +297 -0
- package/src/components/scrollable/types.ts +16 -0
- package/src/components/scrollspy/index.ts +7 -0
- package/src/components/scrollspy/scrollspy.css +13 -0
- package/src/components/scrollspy/scrollspy.ts +224 -0
- package/src/components/scrollspy/types.ts +15 -0
- package/src/components/scrollto/index.ts +7 -0
- package/src/components/scrollto/scrollto.ts +127 -0
- package/src/components/scrollto/types.ts +15 -0
- package/src/components/select/combobox.ts +305 -0
- package/src/components/select/config.ts +324 -0
- package/src/components/select/dropdown.ts +510 -0
- package/src/components/select/index.ts +13 -0
- package/src/components/select/option.ts +43 -0
- package/src/components/select/remote.ts +477 -0
- package/src/components/select/search.ts +430 -0
- package/src/components/select/select.css +105 -0
- package/src/components/select/select.ts +1916 -0
- package/src/components/select/tags.ts +123 -0
- package/src/components/select/templates.ts +531 -0
- package/src/components/select/types.ts +36 -0
- package/src/components/select/utils.ts +747 -0
- package/src/components/select/variants.css +5 -0
- package/src/components/separator/separator.css +14 -0
- package/src/components/skeleton/skeleton.css +10 -0
- package/src/components/stepper/index.ts +7 -0
- package/src/components/stepper/stepper.css +49 -0
- package/src/components/stepper/stepper.ts +308 -0
- package/src/components/stepper/types.ts +13 -0
- package/src/components/sticky/index.ts +7 -0
- package/src/components/sticky/sticky.css +22 -0
- package/src/components/sticky/sticky.ts +381 -0
- package/src/components/sticky/types.ts +23 -0
- package/src/components/switch/switch.css +110 -0
- package/src/components/table/table.css +168 -0
- package/src/components/tabs/index.ts +7 -0
- package/src/components/tabs/tabs.css +40 -0
- package/src/components/tabs/tabs.ts +190 -0
- package/src/components/tabs/types.ts +13 -0
- package/src/components/textarea/textarea.css +35 -0
- package/src/components/theme-switch/index.ts +10 -0
- package/src/components/theme-switch/theme-switch.css +22 -0
- package/src/components/theme-switch/theme-switch.ts +176 -0
- package/src/components/theme-switch/types.ts +15 -0
- package/src/components/toggle/index.ts +7 -0
- package/src/components/toggle/toggle.css +13 -0
- package/src/components/toggle/toggle.ts +173 -0
- package/src/components/toggle/types.ts +18 -0
- package/src/components/toggle-group/toggle-group.css +55 -0
- package/src/components/toggle-password/index.ts +10 -0
- package/src/components/toggle-password/toggle-password.css +13 -0
- package/src/components/toggle-password/toggle-password.ts +159 -0
- package/src/components/toggle-password/types.ts +13 -0
- package/src/components/tooltip/index.ts +7 -0
- package/src/components/tooltip/tooltip.css +18 -0
- package/src/components/tooltip/tooltip.ts +361 -0
- package/src/components/tooltip/types.ts +28 -0
- package/src/helpers/data.ts +46 -0
- package/src/helpers/dom.ts +405 -0
- package/src/helpers/event-handler.ts +61 -0
- package/src/helpers/utils.ts +183 -0
- package/src/index.ts +113 -0
- package/src/types.ts +23 -0
- package/styles.css +48 -0
- package/tsconfig.json +17 -0
- package/webpack.config.js +113 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
@layer components {
|
|
7
|
+
.kt-form {
|
|
8
|
+
@apply space-y-6;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.kt-form-item {
|
|
12
|
+
@apply flex flex-col gap-2.5;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.kt-form-control {
|
|
16
|
+
@apply space-y-2.5;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.kt-form-control-inline {
|
|
20
|
+
@apply flex items-center space-y-0 gap-2.5;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.kt-form-label {
|
|
24
|
+
@apply flex items-center gap-2 w-full text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-50;
|
|
25
|
+
|
|
26
|
+
.kt-switch:disabled + &,
|
|
27
|
+
.kt-checkbox:disabled + &,
|
|
28
|
+
.kt-radio:disabled + & {
|
|
29
|
+
@apply cursor-not-allowed opacity-50;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.kt-form-description {
|
|
34
|
+
@apply text-xs text-secondary-foreground font-normal -mt-1;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.kt-form-message {
|
|
38
|
+
@apply hidden text-xs text-destructive font-normal -mt-1;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.kt-form-actions {
|
|
42
|
+
@apply flex items-center justify-end gap-2.5;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.kt-form-item:has([aria-invalid='true']) {
|
|
46
|
+
.kt-form-message {
|
|
47
|
+
@apply block;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.kt-form-description {
|
|
51
|
+
@apply hidden;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
@layer components {
|
|
7
|
+
.kt-image-input {
|
|
8
|
+
@apply relative inline-flex items-center justify-center size-20 cursor-pointer;
|
|
9
|
+
|
|
10
|
+
input[type='file'] {
|
|
11
|
+
@apply appearance-none absolute size-0 opacity-0;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.kt-image-input-remove {
|
|
16
|
+
@apply cursor-pointer absolute z-[1] size-5 top-0.25 end-0.25 rounded-full bg-background flex items-center justify-center border border-border shadow-sm;
|
|
17
|
+
|
|
18
|
+
i {
|
|
19
|
+
@apply text-muted-foreground text-[11px];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
svg {
|
|
23
|
+
@apply text-muted-foreground size-3.25;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&:hover {
|
|
27
|
+
i {
|
|
28
|
+
@apply text-foreground;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
svg {
|
|
32
|
+
@apply text-foreground;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.kt-image-input-placeholder {
|
|
38
|
+
@apply relative overflow-hidden size-full bg-cover bg-no-repeat rounded-full border border-border kt-image-input-empty:border-border;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.kt-image-input-preview {
|
|
42
|
+
@apply relative overflow-hidden size-full bg-cover bg-no-repeat rounded-full;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@custom-variant kt-image-input-empty {
|
|
47
|
+
[data-kt-image-input-initialized].empty & {
|
|
48
|
+
@slot;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@custom-variant image-input-changed {
|
|
53
|
+
[data-kt-image-input-initialized].changed & {
|
|
54
|
+
@slot;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import KTData from '../../helpers/data';
|
|
7
|
+
import KTEventHandler from '../../helpers/event-handler';
|
|
8
|
+
import KTComponent from '../component';
|
|
9
|
+
import { KTImageInputInterface, KTImageInputConfigInterface } from './types';
|
|
10
|
+
|
|
11
|
+
declare global {
|
|
12
|
+
interface Window {
|
|
13
|
+
KT_IMAGE_INPUT_INITIALIZED: boolean;
|
|
14
|
+
KTImageInput: typeof KTImageInput;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class KTImageInput extends KTComponent implements KTImageInputInterface {
|
|
19
|
+
protected override _name: string = 'image-input';
|
|
20
|
+
protected override _defaultConfig: KTImageInputConfigInterface = {
|
|
21
|
+
hiddenClass: 'hidden',
|
|
22
|
+
};
|
|
23
|
+
protected _inputElement: HTMLInputElement;
|
|
24
|
+
protected _hiddenElement: HTMLInputElement;
|
|
25
|
+
protected _removeElement: HTMLElement;
|
|
26
|
+
protected _previewElement: HTMLElement;
|
|
27
|
+
protected _previewUrl: string = '';
|
|
28
|
+
protected _lastMode: string;
|
|
29
|
+
|
|
30
|
+
constructor(
|
|
31
|
+
element: HTMLElement,
|
|
32
|
+
config: KTImageInputConfigInterface = null,
|
|
33
|
+
) {
|
|
34
|
+
super();
|
|
35
|
+
|
|
36
|
+
if (KTData.has(element as HTMLElement, this._name)) return;
|
|
37
|
+
|
|
38
|
+
this._init(element);
|
|
39
|
+
this._buildConfig(config);
|
|
40
|
+
|
|
41
|
+
this._inputElement = this._element.querySelector('input[type="file"]');
|
|
42
|
+
this._hiddenElement = this._element.querySelector('input[type="hidden"]');
|
|
43
|
+
this._removeElement = this._element.querySelector(
|
|
44
|
+
'[data-kt-image-input-remove]',
|
|
45
|
+
);
|
|
46
|
+
this._previewElement = this._element.querySelector(
|
|
47
|
+
'[data-kt-image-input-preview]',
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
this._update();
|
|
51
|
+
this._handlers();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
protected _handlers(): void {
|
|
55
|
+
KTEventHandler.on(
|
|
56
|
+
this._element,
|
|
57
|
+
'[data-kt-image-input-placeholder]',
|
|
58
|
+
'click',
|
|
59
|
+
(event: Event) => {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
|
|
62
|
+
this._inputElement.click();
|
|
63
|
+
},
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
this._inputElement.addEventListener('change', () => {
|
|
67
|
+
this._change();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
this._removeElement.addEventListener('click', () => {
|
|
71
|
+
this._remove();
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
protected _change(): void {
|
|
76
|
+
const payload = { cancel: false };
|
|
77
|
+
this._fireEvent('change', payload);
|
|
78
|
+
this._dispatchEvent('change', payload);
|
|
79
|
+
if (payload.cancel === true) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const reader = new FileReader();
|
|
84
|
+
|
|
85
|
+
reader.onload = () => {
|
|
86
|
+
this._previewElement.style.backgroundImage = `url(${reader.result})`;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
reader.readAsDataURL(this._inputElement.files[0]);
|
|
90
|
+
this._inputElement.value = '';
|
|
91
|
+
this._hiddenElement.value = '';
|
|
92
|
+
this._lastMode = 'new';
|
|
93
|
+
|
|
94
|
+
this._element.classList.add('changed');
|
|
95
|
+
this._removeElement.classList.remove('hidden');
|
|
96
|
+
this._element.classList.remove('empty');
|
|
97
|
+
|
|
98
|
+
this._fireEvent('changed');
|
|
99
|
+
this._dispatchEvent('changed');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
protected _remove(): void {
|
|
103
|
+
const payload = { cancel: false };
|
|
104
|
+
this._fireEvent('remove', payload);
|
|
105
|
+
this._dispatchEvent('remove', payload);
|
|
106
|
+
if (payload.cancel === true) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
this._element.classList.remove('empty');
|
|
111
|
+
this._element.classList.remove('changed');
|
|
112
|
+
|
|
113
|
+
if (this._lastMode == 'new') {
|
|
114
|
+
if (this._previewUrl == '')
|
|
115
|
+
this._removeElement.classList.add(
|
|
116
|
+
this._getOption('hiddenClass') as string,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
if (this._previewUrl) {
|
|
120
|
+
this._previewElement.style.backgroundImage = `url(${this._previewUrl})`;
|
|
121
|
+
} else {
|
|
122
|
+
this._previewElement.style.backgroundImage = 'none';
|
|
123
|
+
this._element.classList.add('empty');
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
this._inputElement.value = '';
|
|
127
|
+
this._hiddenElement.value = '';
|
|
128
|
+
|
|
129
|
+
this._lastMode = 'saved';
|
|
130
|
+
} else if (this._lastMode == 'saved') {
|
|
131
|
+
if (this._previewUrl == '')
|
|
132
|
+
this._removeElement.classList.add(
|
|
133
|
+
this._getOption('hiddenClass') as string,
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
this._previewElement.style.backgroundImage = 'none';
|
|
137
|
+
this._element.classList.add('empty');
|
|
138
|
+
|
|
139
|
+
this._hiddenElement.value = '1';
|
|
140
|
+
this._inputElement.value = '';
|
|
141
|
+
|
|
142
|
+
this._lastMode = 'placeholder';
|
|
143
|
+
} else if (this._lastMode == 'placeholder') {
|
|
144
|
+
if (this._previewUrl == '')
|
|
145
|
+
this._removeElement.classList.add(
|
|
146
|
+
this._getOption('hiddenClass') as string,
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
if (this._previewUrl) {
|
|
150
|
+
this._previewElement.style.backgroundImage = `url(${this._previewUrl})`;
|
|
151
|
+
} else {
|
|
152
|
+
this._element.classList.add('empty');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
this._inputElement.value = '';
|
|
156
|
+
this._hiddenElement.value = '';
|
|
157
|
+
|
|
158
|
+
this._lastMode = 'saved';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
this._fireEvent('remove');
|
|
162
|
+
this._dispatchEvent('remove');
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
protected _update() {
|
|
166
|
+
if (this._previewElement.style.backgroundImage) {
|
|
167
|
+
this._setPreviewUrl(this._previewElement.style.backgroundImage);
|
|
168
|
+
this._removeElement.classList.remove(
|
|
169
|
+
this._getOption('hiddenClass') as string,
|
|
170
|
+
);
|
|
171
|
+
this._lastMode = 'saved';
|
|
172
|
+
} else {
|
|
173
|
+
this._removeElement.classList.add(
|
|
174
|
+
this._getOption('hiddenClass') as string,
|
|
175
|
+
);
|
|
176
|
+
this._element.classList.add('empty');
|
|
177
|
+
this._lastMode = 'placeholder';
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
protected _getPreviewUrl(): string {
|
|
182
|
+
return this._previewUrl;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
protected _setPreviewUrl(url: string): void {
|
|
186
|
+
this._previewUrl = url.replace(/(url\(|\)|")/g, '');
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
public isEmpty(): boolean {
|
|
190
|
+
return this._inputElement.value.length === 0;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
public isChanged(): boolean {
|
|
194
|
+
return this._inputElement.value.length > 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
public remove(): void {
|
|
198
|
+
this._remove();
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
public update(): void {
|
|
202
|
+
this._update();
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
public setPreviewUrl(url: string): void {
|
|
206
|
+
this._setPreviewUrl(url);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
public getPreviewUrl(): string {
|
|
210
|
+
return this._getPreviewUrl();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
public static getInstance(element: HTMLElement): KTImageInput {
|
|
214
|
+
if (!element) return null;
|
|
215
|
+
|
|
216
|
+
if (KTData.has(element, 'image-input')) {
|
|
217
|
+
return KTData.get(element, 'image-input') as KTImageInput;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (element.getAttribute('data-kt-image-input')) {
|
|
221
|
+
return new KTImageInput(element);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
public static getOrCreateInstance(
|
|
228
|
+
element: HTMLElement,
|
|
229
|
+
config?: KTImageInputConfigInterface,
|
|
230
|
+
): KTImageInput {
|
|
231
|
+
return this.getInstance(element) || new KTImageInput(element, config);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
public static createInstances(): void {
|
|
235
|
+
const elements = document.querySelectorAll('[data-kt-image-input]');
|
|
236
|
+
|
|
237
|
+
elements.forEach((element) => {
|
|
238
|
+
new KTImageInput(element as HTMLElement);
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
public static init(): void {
|
|
243
|
+
KTImageInput.createInstances();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (typeof window !== 'undefined') {
|
|
248
|
+
window.KTImageInput = KTImageInput;
|
|
249
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
export { KTImageInput } from './image-input';
|
|
7
|
+
export type {
|
|
8
|
+
KTImageInputConfigInterface,
|
|
9
|
+
KTImageInputInterface,
|
|
10
|
+
} from './types';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
export interface KTImageInputConfigInterface {
|
|
7
|
+
hiddenClass: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface KTImageInputInterface {
|
|
11
|
+
remove(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
@layer components {
|
|
7
|
+
/* Base input group styles */
|
|
8
|
+
.kt-input-group {
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: stretch;
|
|
11
|
+
|
|
12
|
+
.kt-input {
|
|
13
|
+
flex-grow: 1;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.kt-input-addon:has(+ .kt-input) {
|
|
17
|
+
@apply rounded-e-none! border-e-0!;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.kt-input + .kt-input-addon {
|
|
21
|
+
@apply rounded-s-none! border-s-0!;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.kt-input-addon:has(+ .kt-btn) {
|
|
25
|
+
@apply rounded-e-none!;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.kt-input + .kt-btn {
|
|
29
|
+
@apply rounded-s-none!;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.kt-btn + .kt-input,
|
|
33
|
+
.kt-input-addon + .kt-input {
|
|
34
|
+
@apply rounded-s-none!;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.kt-input:has(+ .kt-btn),
|
|
38
|
+
.kt-input:has(+ .kt-input-addon) {
|
|
39
|
+
@apply rounded-e-none!;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
/* Base Styles */
|
|
7
|
+
@layer components {
|
|
8
|
+
/* Base */
|
|
9
|
+
.kt-input {
|
|
10
|
+
@apply outline-0 block w-full bg-background border border-input shadow-xs shadow-[rgba(0,0,0,0.05)] transition-[color,box-shadow] text-foreground placeholder:text-muted-foreground;
|
|
11
|
+
@apply focus-visible:ring-ring/30 focus-visible:border-ring focus-visible:outline-none focus-visible:ring-[3px];
|
|
12
|
+
@apply disabled:cursor-not-allowed disabled:opacity-50 [&[readonly]]:opacity-70 file:h-full [&[type=file]]:py-0;
|
|
13
|
+
@apply file:border-solid file:border-input file:bg-transparent file:font-medium file:not-italic file:text-foreground file:p-0 file:border-0 file:border-e;
|
|
14
|
+
@apply aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Size */
|
|
18
|
+
.kt-input {
|
|
19
|
+
@apply h-8.5 px-3 text-[0.8125rem] leading-(--text-sm--line-height) rounded-md file:pe-3 file:me-3;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.kt-input-lg {
|
|
23
|
+
@apply h-10 px-4 text-sm rounded-md file:pe-4 file:me-4;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.kt-input-sm {
|
|
27
|
+
@apply h-7 px-2.5 text-xs rounded-md file:pe-2.5 file:me-2.5;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Stacked */
|
|
32
|
+
@layer components {
|
|
33
|
+
.kt-input:not(input) {
|
|
34
|
+
@apply flex items-center gap-1.5;
|
|
35
|
+
|
|
36
|
+
&:has(input:focus-visible) {
|
|
37
|
+
@apply ring-ring/30 border-ring outline-none ring-[3px];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
input {
|
|
41
|
+
@apply flex w-full outline-none transition-[color] text-foreground placeholder:text-muted-foreground border-0 bg-transparent p-0 shadow-none focus-visible:ring-0 h-auto disabled:cursor-not-allowed disabled:opacity-50;
|
|
42
|
+
font-size: inherit;
|
|
43
|
+
list-style: inherit;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
i {
|
|
47
|
+
@apply text-base text-muted-foreground;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
svg {
|
|
51
|
+
@apply text-muted-foreground size-4;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&.kt-input-sm {
|
|
55
|
+
@apply gap-1.25;
|
|
56
|
+
|
|
57
|
+
i {
|
|
58
|
+
@apply text-sm;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
svg {
|
|
62
|
+
@apply text-muted-foreground size-3.5;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&.kt-input-lg {
|
|
67
|
+
@apply gap-1.5;
|
|
68
|
+
|
|
69
|
+
i {
|
|
70
|
+
@apply text-lg;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
svg {
|
|
74
|
+
@apply text-muted-foreground size-4;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* Addon */
|
|
81
|
+
@layer components {
|
|
82
|
+
.kt-input-addon {
|
|
83
|
+
@apply flex items-center shrink-0 justify-center bg-muted border border-input text-secondary-foreground shadow-xs shadow-[rgba(0,0,0,0.05)];
|
|
84
|
+
@apply rounded-md h-8.5 min-w-8.5 px-3 text-[0.8125rem] leading-(--text-sm--line-height);
|
|
85
|
+
|
|
86
|
+
i {
|
|
87
|
+
@apply text-lg;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
svg {
|
|
91
|
+
@apply size-4.5;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
&.kt-input-addon-sm {
|
|
95
|
+
@apply rounded-md h-7 min-w-7 text-xs px-2.5;
|
|
96
|
+
|
|
97
|
+
i {
|
|
98
|
+
@apply text-base;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
svg {
|
|
102
|
+
@apply size-3.5;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
&.kt-input-addon-lg {
|
|
107
|
+
@apply rounded-md h-10 min-w-10 px-4 text-sm;
|
|
108
|
+
|
|
109
|
+
i {
|
|
110
|
+
@apply text-lg;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
svg {
|
|
114
|
+
@apply size-4.5;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&.kt-input-addon-icon {
|
|
119
|
+
@apply px-0;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Utilities */
|
|
125
|
+
@layer components {
|
|
126
|
+
.kt-input-ghost {
|
|
127
|
+
@apply p-0 border-0 shadow-none bg-background focus-visible:ring-0 focus-visible:border-0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Dark Mode Styles */
|
|
132
|
+
@layer components {
|
|
133
|
+
.dark .kt-input {
|
|
134
|
+
@apply aria-invalid:border-destructive aria-invalid:ring-destructive/20;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
@layer components {
|
|
7
|
+
.kt-kbd {
|
|
8
|
+
@apply inline-flex items-center justify-center font-mono rounded-md;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.kt-kbd {
|
|
12
|
+
@apply bg-accent border border-border text-accent-foreground;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.kt-kbd-outline {
|
|
16
|
+
@apply bg-transparent text-accent-foreground border border-input;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.kt-kbd {
|
|
20
|
+
@apply h-7 min-w-7 px-1.5 text-xs [&_svg]:size-3.5;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.kt-kbd-xs {
|
|
24
|
+
@apply h-5 min-w-5 px-1 text-[0.6875rem] leading-[0.75rem] [&_svg]:size-3;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.kt-kbd-sm {
|
|
28
|
+
@apply h-6 min-w-6 px-1 text-[0.75rem] leading-[0.75rem] [&_svg]:size-3;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
@layer components {
|
|
7
|
+
.kt-label {
|
|
8
|
+
@apply text-sm font-medium leading-none text-foreground inline-flex items-center gap-2;
|
|
9
|
+
|
|
10
|
+
.kt-switch:disabled + &,
|
|
11
|
+
.kt-checkbox:disabled + &,
|
|
12
|
+
.kt-radio:disabled + & {
|
|
13
|
+
@apply cursor-not-allowed opacity-50;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.kt-label-secondary {
|
|
18
|
+
@apply font-normal;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KTUI - Free & Open-Source Tailwind UI Components by Keenthemes
|
|
3
|
+
* Copyright 2025 by Keenthemes Inc
|
|
4
|
+
* @version: 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
@layer components {
|
|
7
|
+
/* Base Link Styles */
|
|
8
|
+
.kt-link {
|
|
9
|
+
@apply cursor-pointer inline-flex items-center rounded-md font-medium focus:outline-none transition focus-visible:ring-2 focus-visible:ring-neutral-200 dark:focus-visible:ring-neutral-700 focus-visible:ring-offset-2;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Variants */
|
|
13
|
+
.kt-link {
|
|
14
|
+
@apply text-primary;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.kt-link-inverse {
|
|
18
|
+
@apply text-background;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.kt-link-mono {
|
|
22
|
+
@apply text-mono;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Sizes */
|
|
26
|
+
.kt-link {
|
|
27
|
+
@apply text-[0.8125rem] leading-(--text-sm--line-height) gap-1;
|
|
28
|
+
|
|
29
|
+
svg {
|
|
30
|
+
@apply size-4;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
i {
|
|
34
|
+
@apply text-base;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.kt-link-sm {
|
|
39
|
+
@apply text-xs gap-1;
|
|
40
|
+
|
|
41
|
+
svg {
|
|
42
|
+
@apply size-3.5;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
i {
|
|
46
|
+
@apply text-sm;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.kt-link-lg {
|
|
51
|
+
@apply text-sm gap-1.5;
|
|
52
|
+
|
|
53
|
+
svg {
|
|
54
|
+
@apply size-4;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
i {
|
|
58
|
+
@apply text-base;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* Styles */
|
|
63
|
+
/* When you want a hover underline (non-permanent) */
|
|
64
|
+
.kt-link-underline {
|
|
65
|
+
@apply hover:underline hover:underline-offset-4 decoration-solid;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* When the text should always be underlined */
|
|
69
|
+
.kt-link-underlined {
|
|
70
|
+
@apply underline underline-offset-4 decoration-solid;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.kt-link-dashed {
|
|
74
|
+
@apply decoration-1 decoration-dashed;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Disabled State */
|
|
78
|
+
.kt-link-disabled {
|
|
79
|
+
@apply opacity-50 pointer-events-none;
|
|
80
|
+
}
|
|
81
|
+
}
|