cornet-ui 0.1.0-beta.1
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/LICENSE +21 -0
- package/README.md +95 -0
- package/components/Actions/du-button/du-button.types.ts +14 -0
- package/components/Actions/du-button/du-button.vue +149 -0
- package/components/Actions/du-dropdown/du-dropdown.types.ts +15 -0
- package/components/Actions/du-dropdown/du-dropdown.vue +75 -0
- package/components/Actions/du-fab/du-fab.types.ts +28 -0
- package/components/Actions/du-fab/du-fab.vue +270 -0
- package/components/Actions/du-modal/du-modal.types.ts +10 -0
- package/components/Actions/du-modal/du-modal.vue +123 -0
- package/components/Actions/du-swap/du-swap.types.ts +3 -0
- package/components/Actions/du-swap/du-swap.vue +68 -0
- package/components/DataDisplay/du-accordion/du-accordion-item.vue +37 -0
- package/components/DataDisplay/du-accordion/du-accordion.types.ts +15 -0
- package/components/DataDisplay/du-accordion/du-accordion.vue +73 -0
- package/components/DataDisplay/du-avatar/du-avatar.types.ts +59 -0
- package/components/DataDisplay/du-avatar/du-avatar.vue +139 -0
- package/components/DataDisplay/du-badge/du-badge.types.ts +21 -0
- package/components/DataDisplay/du-badge/du-badge.vue +81 -0
- package/components/DataDisplay/du-card/du-card.types.ts +18 -0
- package/components/DataDisplay/du-card/du-card.vue +86 -0
- package/components/DataDisplay/du-carousel/du-carousel-item.vue +11 -0
- package/components/DataDisplay/du-carousel/du-carousel.types.ts +15 -0
- package/components/DataDisplay/du-carousel/du-carousel.vue +46 -0
- package/components/DataDisplay/du-chat/du-chat-item.vue +56 -0
- package/components/DataDisplay/du-chat/du-chat.types.ts +31 -0
- package/components/DataDisplay/du-chat/du-chat.vue +71 -0
- package/components/DataDisplay/du-collapse/du-collapse.types.ts +15 -0
- package/components/DataDisplay/du-collapse/du-collapse.vue +59 -0
- package/components/DataDisplay/du-countdown/du-countdown-group.vue +88 -0
- package/components/DataDisplay/du-countdown/du-countdown.types.ts +15 -0
- package/components/DataDisplay/du-countdown/du-countdown.vue +180 -0
- package/components/DataDisplay/du-diff/du-diff.types.ts +9 -0
- package/components/DataDisplay/du-diff/du-diff.vue +44 -0
- package/components/DataDisplay/du-kbd/du-kbd.types.ts +9 -0
- package/components/DataDisplay/du-kbd/du-kbd.vue +21 -0
- package/components/DataDisplay/du-list/du-list-row.vue +12 -0
- package/components/DataDisplay/du-list/du-list.types.ts +3 -0
- package/components/DataDisplay/du-list/du-list.vue +11 -0
- package/components/DataDisplay/du-stat/du-stat.types.ts +12 -0
- package/components/DataDisplay/du-stat/du-stat.vue +28 -0
- package/components/DataDisplay/du-stats/du-stats.types.ts +3 -0
- package/components/DataDisplay/du-stats/du-stats.vue +91 -0
- package/components/DataDisplay/du-status/du-status.types.ts +21 -0
- package/components/DataDisplay/du-status/du-status.vue +51 -0
- package/components/DataDisplay/du-table/du-table-item.types.ts +6 -0
- package/components/DataDisplay/du-table/du-table-item.vue +24 -0
- package/components/DataDisplay/du-table/du-table.types.ts +26 -0
- package/components/DataDisplay/du-table/du-table.vue +125 -0
- package/components/DataDisplay/du-timeline/du-timeline-item.vue +85 -0
- package/components/DataDisplay/du-timeline/du-timeline.types.ts +22 -0
- package/components/DataDisplay/du-timeline/du-timeline.vue +138 -0
- package/components/DataInput/du-checkbox/du-checkbox.types.ts +17 -0
- package/components/DataInput/du-checkbox/du-checkbox.vue +40 -0
- package/components/DataInput/du-fieldset/du-fieldset.types.ts +4 -0
- package/components/DataInput/du-fieldset/du-fieldset.vue +16 -0
- package/components/DataInput/du-file-input/du-file-input.types.ts +29 -0
- package/components/DataInput/du-file-input/du-file-input.vue +31 -0
- package/components/DataInput/du-filter/du-filter.types.ts +30 -0
- package/components/DataInput/du-filter/du-filter.vue +47 -0
- package/components/DataInput/du-input-field/du-input-field.types.ts +43 -0
- package/components/DataInput/du-input-field/du-input-field.vue +47 -0
- package/components/DataInput/du-label/du-label.types.ts +3 -0
- package/components/DataInput/du-label/du-label.vue +28 -0
- package/components/DataInput/du-label-input-validator/du-label-input-validator.types.ts +7 -0
- package/components/DataInput/du-label-input-validator/du-label-input-validator.vue +51 -0
- package/components/DataInput/du-radio/du-radio.types.ts +15 -0
- package/components/DataInput/du-radio/du-radio.vue +27 -0
- package/components/DataInput/du-range/du-range.types.ts +18 -0
- package/components/DataInput/du-range/du-range.vue +60 -0
- package/components/DataInput/du-rating/du-rating-item.vue +65 -0
- package/components/DataInput/du-rating/du-rating.types.ts +46 -0
- package/components/DataInput/du-rating/du-rating.vue +127 -0
- package/components/DataInput/du-search/du-search.types.ts +44 -0
- package/components/DataInput/du-search/du-search.vue +425 -0
- package/components/DataInput/du-select/du-select.types.ts +31 -0
- package/components/DataInput/du-select/du-select.vue +384 -0
- package/components/DataInput/du-text-area/du-text-area.types.ts +11 -0
- package/components/DataInput/du-text-area/du-text-area.vue +41 -0
- package/components/Feedback/du-alert/du-alert.types.ts +16 -0
- package/components/Feedback/du-alert/du-alert.vue +113 -0
- package/components/Feedback/du-loading/du-loading.types.ts +11 -0
- package/components/Feedback/du-loading/du-loading.vue +33 -0
- package/components/Feedback/du-progress/du-progress.types.ts +8 -0
- package/components/Feedback/du-progress/du-progress.vue +23 -0
- package/components/Feedback/du-radial-progress/du-radial-progress.types.ts +9 -0
- package/components/Feedback/du-radial-progress/du-radial-progress.vue +64 -0
- package/components/Feedback/du-skeleton/du-skeleton.types.ts +3 -0
- package/components/Feedback/du-skeleton/du-skeleton.vue +11 -0
- package/components/Feedback/du-toast/du-toast.types.ts +11 -0
- package/components/Feedback/du-toast/du-toast.vue +54 -0
- package/components/Feedback/du-tooltip/du-tooltip.types.ts +12 -0
- package/components/Feedback/du-tooltip/du-tooltip.vue +55 -0
- package/components/Layout/du-drawer/du-drawer.types.ts +27 -0
- package/components/Layout/du-drawer/du-drawer.vue +224 -0
- package/components/Layout/du-join/du-join.types.ts +7 -0
- package/components/Layout/du-join/du-join.vue +31 -0
- package/components/Navigation/du-breadcrumbs/du-breadcrumbs.types.ts +13 -0
- package/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue +79 -0
- package/components/Navigation/du-button-link/du-button-link.types.ts +17 -0
- package/components/Navigation/du-button-link/du-button-link.vue +77 -0
- package/components/Navigation/du-dock/du-dock.types.ts +19 -0
- package/components/Navigation/du-dock/du-dock.vue +73 -0
- package/components/Navigation/du-link/du-link.types.ts +7 -0
- package/components/Navigation/du-link/du-link.vue +25 -0
- package/components/Navigation/du-menu/du-menu-item.vue +160 -0
- package/components/Navigation/du-menu/du-menu.types.ts +33 -0
- package/components/Navigation/du-menu/du-menu.vue +87 -0
- package/components/Navigation/du-navbar/du-navbar.types.ts +3 -0
- package/components/Navigation/du-navbar/du-navbar.vue +21 -0
- package/components/Navigation/du-pagination/du-pagination.types.ts +30 -0
- package/components/Navigation/du-pagination/du-pagination.vue +186 -0
- package/components/Navigation/du-step-item/du-step-item.types.ts +9 -0
- package/components/Navigation/du-step-item/du-step-item.vue +46 -0
- package/components/Navigation/du-steps/du-steps.types.ts +20 -0
- package/components/Navigation/du-steps/du-steps.vue +85 -0
- package/components/Navigation/du-tabs/du-tabs.types.ts +25 -0
- package/components/Navigation/du-tabs/du-tabs.vue +96 -0
- package/composables/useSizeProps.ts +26 -0
- package/composables/useVariantProps.ts +18 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
- package/dist/components/Actions/du-button/du-button.js +5 -0
- package/dist/components/Actions/du-button/du-button.types.d.ts +4 -0
- package/dist/components/Actions/du-button/du-button.vue.d.ts +58 -0
- package/dist/components/Actions/du-button/du-button.vue_vue_type_script_setup_true_lang.js +98 -0
- package/dist/components/Actions/du-dropdown/du-dropdown.js +5 -0
- package/dist/components/Actions/du-dropdown/du-dropdown.types.d.ts +4 -0
- package/dist/components/Actions/du-dropdown/du-dropdown.vue.d.ts +33 -0
- package/dist/components/Actions/du-dropdown/du-dropdown.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/components/Actions/du-fab/du-fab.js +5 -0
- package/dist/components/Actions/du-fab/du-fab.types.d.ts +24 -0
- package/dist/components/Actions/du-fab/du-fab.vue.d.ts +87 -0
- package/dist/components/Actions/du-fab/du-fab.vue_vue_type_script_setup_true_lang.js +204 -0
- package/dist/components/Actions/du-modal/du-modal.js +5 -0
- package/dist/components/Actions/du-modal/du-modal.types.d.ts +2 -0
- package/dist/components/Actions/du-modal/du-modal.vue.d.ts +48 -0
- package/dist/components/Actions/du-modal/du-modal.vue_vue_type_script_setup_true_lang.js +92 -0
- package/dist/components/Actions/du-swap/du-swap.js +5 -0
- package/dist/components/Actions/du-swap/du-swap.types.d.ts +2 -0
- package/dist/components/Actions/du-swap/du-swap.vue.d.ts +36 -0
- package/dist/components/Actions/du-swap/du-swap.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/components/DataDisplay/du-accordion/du-accordion-item.js +5 -0
- package/dist/components/DataDisplay/du-accordion/du-accordion-item.vue.d.ts +24 -0
- package/dist/components/DataDisplay/du-accordion/du-accordion-item.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/DataDisplay/du-accordion/du-accordion.js +5 -0
- package/dist/components/DataDisplay/du-accordion/du-accordion.types.d.ts +8 -0
- package/dist/components/DataDisplay/du-accordion/du-accordion.vue.d.ts +45 -0
- package/dist/components/DataDisplay/du-accordion/du-accordion.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/components/DataDisplay/du-avatar/du-avatar.js +7 -0
- package/dist/components/DataDisplay/du-avatar/du-avatar.types.d.ts +12 -0
- package/dist/components/DataDisplay/du-avatar/du-avatar.vue.d.ts +38 -0
- package/dist/components/DataDisplay/du-avatar/du-avatar.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/components/DataDisplay/du-avatar/du-avatar.vue_vue_type_style_index_0_scoped_fdc61ebe_lang.css +1 -0
- package/dist/components/DataDisplay/du-badge/du-badge.js +5 -0
- package/dist/components/DataDisplay/du-badge/du-badge.types.d.ts +4 -0
- package/dist/components/DataDisplay/du-badge/du-badge.vue.d.ts +32 -0
- package/dist/components/DataDisplay/du-badge/du-badge.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/components/DataDisplay/du-card/du-card.js +5 -0
- package/dist/components/DataDisplay/du-card/du-card.types.d.ts +4 -0
- package/dist/components/DataDisplay/du-card/du-card.vue.d.ts +43 -0
- package/dist/components/DataDisplay/du-card/du-card.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/components/DataDisplay/du-carousel/du-carousel-item.js +5 -0
- package/dist/components/DataDisplay/du-carousel/du-carousel-item.vue.d.ts +16 -0
- package/dist/components/DataDisplay/du-carousel/du-carousel-item.vue_vue_type_script_setup_true_lang.js +14 -0
- package/dist/components/DataDisplay/du-carousel/du-carousel.js +5 -0
- package/dist/components/DataDisplay/du-carousel/du-carousel.types.d.ts +9 -0
- package/dist/components/DataDisplay/du-carousel/du-carousel.vue.d.ts +27 -0
- package/dist/components/DataDisplay/du-carousel/du-carousel.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/components/DataDisplay/du-chat/du-chat-item.js +5 -0
- package/dist/components/DataDisplay/du-chat/du-chat-item.vue.d.ts +32 -0
- package/dist/components/DataDisplay/du-chat/du-chat-item.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/DataDisplay/du-chat/du-chat.js +5 -0
- package/dist/components/DataDisplay/du-chat/du-chat.types.d.ts +18 -0
- package/dist/components/DataDisplay/du-chat/du-chat.vue.d.ts +38 -0
- package/dist/components/DataDisplay/du-chat/du-chat.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/components/DataDisplay/du-collapse/du-collapse.js +5 -0
- package/dist/components/DataDisplay/du-collapse/du-collapse.types.d.ts +8 -0
- package/dist/components/DataDisplay/du-collapse/du-collapse.vue.d.ts +33 -0
- package/dist/components/DataDisplay/du-collapse/du-collapse.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/components/DataDisplay/du-countdown/du-countdown-group.js +5 -0
- package/dist/components/DataDisplay/du-countdown/du-countdown-group.vue.d.ts +23 -0
- package/dist/components/DataDisplay/du-countdown/du-countdown-group.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/components/DataDisplay/du-countdown/du-countdown.js +5 -0
- package/dist/components/DataDisplay/du-countdown/du-countdown.types.d.ts +8 -0
- package/dist/components/DataDisplay/du-countdown/du-countdown.vue.d.ts +27 -0
- package/dist/components/DataDisplay/du-countdown/du-countdown.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/DataDisplay/du-diff/du-diff.js +5 -0
- package/dist/components/DataDisplay/du-diff/du-diff.types.d.ts +2 -0
- package/dist/components/DataDisplay/du-diff/du-diff.vue.d.ts +25 -0
- package/dist/components/DataDisplay/du-diff/du-diff.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/DataDisplay/du-kbd/du-kbd.js +5 -0
- package/dist/components/DataDisplay/du-kbd/du-kbd.types.d.ts +2 -0
- package/dist/components/DataDisplay/du-kbd/du-kbd.vue.d.ts +19 -0
- package/dist/components/DataDisplay/du-kbd/du-kbd.vue_vue_type_script_setup_true_lang.js +13 -0
- package/dist/components/DataDisplay/du-list/du-list-row.js +5 -0
- package/dist/components/DataDisplay/du-list/du-list-row.vue.d.ts +17 -0
- package/dist/components/DataDisplay/du-list/du-list-row.vue_vue_type_script_setup_true_lang.js +22 -0
- package/dist/components/DataDisplay/du-list/du-list.js +5 -0
- package/dist/components/DataDisplay/du-list/du-list.types.d.ts +3 -0
- package/dist/components/DataDisplay/du-list/du-list.vue.d.ts +14 -0
- package/dist/components/DataDisplay/du-list/du-list.vue_vue_type_script_setup_true_lang.js +12 -0
- package/dist/components/DataDisplay/du-stat/du-stat.js +5 -0
- package/dist/components/DataDisplay/du-stat/du-stat.types.d.ts +12 -0
- package/dist/components/DataDisplay/du-stat/du-stat.vue.d.ts +27 -0
- package/dist/components/DataDisplay/du-stat/du-stat.vue_vue_type_script_setup_true_lang.js +37 -0
- package/dist/components/DataDisplay/du-stats/du-stats.js +7 -0
- package/dist/components/DataDisplay/du-stats/du-stats.types.d.ts +2 -0
- package/dist/components/DataDisplay/du-stats/du-stats.vue.d.ts +40 -0
- package/dist/components/DataDisplay/du-stats/du-stats.vue_vue_type_script_setup_true_lang.js +67 -0
- package/dist/components/DataDisplay/du-stats/du-stats.vue_vue_type_style_index_0_scoped_db955aa9_lang.css +1 -0
- package/dist/components/DataDisplay/du-status/du-status.js +5 -0
- package/dist/components/DataDisplay/du-status/du-status.types.d.ts +4 -0
- package/dist/components/DataDisplay/du-status/du-status.vue.d.ts +16 -0
- package/dist/components/DataDisplay/du-status/du-status.vue_vue_type_script_setup_true_lang.js +54 -0
- package/dist/components/DataDisplay/du-table/du-table-item.js +5 -0
- package/dist/components/DataDisplay/du-table/du-table-item.types.d.ts +6 -0
- package/dist/components/DataDisplay/du-table/du-table-item.vue.d.ts +19 -0
- package/dist/components/DataDisplay/du-table/du-table-item.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/DataDisplay/du-table/du-table.js +5 -0
- package/dist/components/DataDisplay/du-table/du-table.types.d.ts +23 -0
- package/dist/components/DataDisplay/du-table/du-table.vue.d.ts +42 -0
- package/dist/components/DataDisplay/du-table/du-table.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/components/DataDisplay/du-timeline/du-timeline-item.js +5 -0
- package/dist/components/DataDisplay/du-timeline/du-timeline-item.vue.d.ts +34 -0
- package/dist/components/DataDisplay/du-timeline/du-timeline-item.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/components/DataDisplay/du-timeline/du-timeline.js +5 -0
- package/dist/components/DataDisplay/du-timeline/du-timeline.types.d.ts +12 -0
- package/dist/components/DataDisplay/du-timeline/du-timeline.vue.d.ts +61 -0
- package/dist/components/DataDisplay/du-timeline/du-timeline.vue_vue_type_script_setup_true_lang.js +75 -0
- package/dist/components/DataInput/du-checkbox/du-checkbox.js +5 -0
- package/dist/components/DataInput/du-checkbox/du-checkbox.types.d.ts +14 -0
- package/dist/components/DataInput/du-checkbox/du-checkbox.vue.d.ts +19 -0
- package/dist/components/DataInput/du-checkbox/du-checkbox.vue_vue_type_script_setup_true_lang.js +47 -0
- package/dist/components/DataInput/du-fieldset/du-fieldset.js +5 -0
- package/dist/components/DataInput/du-fieldset/du-fieldset.types.d.ts +4 -0
- package/dist/components/DataInput/du-fieldset/du-fieldset.vue.d.ts +14 -0
- package/dist/components/DataInput/du-fieldset/du-fieldset.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/DataInput/du-file-input/du-file-input.js +5 -0
- package/dist/components/DataInput/du-file-input/du-file-input.types.d.ts +10 -0
- package/dist/components/DataInput/du-file-input/du-file-input.vue.d.ts +9 -0
- package/dist/components/DataInput/du-file-input/du-file-input.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/DataInput/du-filter/du-filter.js +5 -0
- package/dist/components/DataInput/du-filter/du-filter.types.d.ts +27 -0
- package/dist/components/DataInput/du-filter/du-filter.vue.d.ts +17 -0
- package/dist/components/DataInput/du-filter/du-filter.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/DataInput/du-input-field/du-input-field.js +5 -0
- package/dist/components/DataInput/du-input-field/du-input-field.types.d.ts +26 -0
- package/dist/components/DataInput/du-input-field/du-input-field.vue.d.ts +21 -0
- package/dist/components/DataInput/du-input-field/du-input-field.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/components/DataInput/du-label/du-label.js +5 -0
- package/dist/components/DataInput/du-label/du-label.types.d.ts +3 -0
- package/dist/components/DataInput/du-label/du-label.vue.d.ts +14 -0
- package/dist/components/DataInput/du-label/du-label.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.js +5 -0
- package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.types.d.ts +5 -0
- package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.vue.d.ts +37 -0
- package/dist/components/DataInput/du-label-input-validator/du-label-input-validator.vue_vue_type_script_setup_true_lang.js +90 -0
- package/dist/components/DataInput/du-radio/du-radio.js +5 -0
- package/dist/components/DataInput/du-radio/du-radio.types.d.ts +12 -0
- package/dist/components/DataInput/du-radio/du-radio.vue.d.ts +9 -0
- package/dist/components/DataInput/du-radio/du-radio.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/DataInput/du-range/du-range.js +5 -0
- package/dist/components/DataInput/du-range/du-range.types.d.ts +15 -0
- package/dist/components/DataInput/du-range/du-range.vue.d.ts +20 -0
- package/dist/components/DataInput/du-range/du-range.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/components/DataInput/du-rating/du-rating-item.js +5 -0
- package/dist/components/DataInput/du-rating/du-rating-item.vue.d.ts +15 -0
- package/dist/components/DataInput/du-rating/du-rating-item.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/components/DataInput/du-rating/du-rating.js +5 -0
- package/dist/components/DataInput/du-rating/du-rating.types.d.ts +38 -0
- package/dist/components/DataInput/du-rating/du-rating.vue.d.ts +34 -0
- package/dist/components/DataInput/du-rating/du-rating.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/components/DataInput/du-search/du-search.js +5 -0
- package/dist/components/DataInput/du-search/du-search.types.d.ts +40 -0
- package/dist/components/DataInput/du-search/du-search.vue.d.ts +52 -0
- package/dist/components/DataInput/du-search/du-search.vue_vue_type_script_setup_true_lang.js +270 -0
- package/dist/components/DataInput/du-select/du-select.js +7 -0
- package/dist/components/DataInput/du-select/du-select.types.d.ts +28 -0
- package/dist/components/DataInput/du-select/du-select.vue.d.ts +60 -0
- package/dist/components/DataInput/du-select/du-select.vue_vue_type_script_setup_true_lang.js +321 -0
- package/dist/components/DataInput/du-select/du-select.vue_vue_type_style_index_0_scoped_2bcf0acd_lang.css +1 -0
- package/dist/components/DataInput/du-text-area/du-text-area.js +5 -0
- package/dist/components/DataInput/du-text-area/du-text-area.types.d.ts +10 -0
- package/dist/components/DataInput/du-text-area/du-text-area.vue.d.ts +15 -0
- package/dist/components/DataInput/du-text-area/du-text-area.vue_vue_type_script_setup_true_lang.js +46 -0
- package/dist/components/Feedback/du-alert/du-alert.js +5 -0
- package/dist/components/Feedback/du-alert/du-alert.types.d.ts +14 -0
- package/dist/components/Feedback/du-alert/du-alert.vue.d.ts +25 -0
- package/dist/components/Feedback/du-alert/du-alert.vue_vue_type_script_setup_true_lang.js +94 -0
- package/dist/components/Feedback/du-loading/du-loading.js +5 -0
- package/dist/components/Feedback/du-loading/du-loading.types.d.ts +9 -0
- package/dist/components/Feedback/du-loading/du-loading.vue.d.ts +8 -0
- package/dist/components/Feedback/du-loading/du-loading.vue_vue_type_script_setup_true_lang.js +30 -0
- package/dist/components/Feedback/du-progress/du-progress.js +5 -0
- package/dist/components/Feedback/du-progress/du-progress.types.d.ts +7 -0
- package/dist/components/Feedback/du-progress/du-progress.vue.d.ts +9 -0
- package/dist/components/Feedback/du-progress/du-progress.vue_vue_type_script_setup_true_lang.js +29 -0
- package/dist/components/Feedback/du-radial-progress/du-radial-progress.js +7 -0
- package/dist/components/Feedback/du-radial-progress/du-radial-progress.types.d.ts +8 -0
- package/dist/components/Feedback/du-radial-progress/du-radial-progress.vue.d.ts +19 -0
- package/dist/components/Feedback/du-radial-progress/du-radial-progress.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/components/Feedback/du-radial-progress/du-radial-progress.vue_vue_type_style_index_0_scoped_4d489040_lang.css +1 -0
- package/dist/components/Feedback/du-skeleton/du-skeleton.js +5 -0
- package/dist/components/Feedback/du-skeleton/du-skeleton.types.d.ts +3 -0
- package/dist/components/Feedback/du-skeleton/du-skeleton.vue.d.ts +14 -0
- package/dist/components/Feedback/du-skeleton/du-skeleton.vue_vue_type_script_setup_true_lang.js +12 -0
- package/dist/components/Feedback/du-toast/du-toast.js +5 -0
- package/dist/components/Feedback/du-toast/du-toast.types.d.ts +9 -0
- package/dist/components/Feedback/du-toast/du-toast.vue.d.ts +20 -0
- package/dist/components/Feedback/du-toast/du-toast.vue_vue_type_script_setup_true_lang.js +45 -0
- package/dist/components/Feedback/du-tooltip/du-tooltip.js +5 -0
- package/dist/components/Feedback/du-tooltip/du-tooltip.types.d.ts +10 -0
- package/dist/components/Feedback/du-tooltip/du-tooltip.vue.d.ts +22 -0
- package/dist/components/Feedback/du-tooltip/du-tooltip.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/components/Layout/du-drawer/du-drawer.js +5 -0
- package/dist/components/Layout/du-drawer/du-drawer.types.d.ts +23 -0
- package/dist/components/Layout/du-drawer/du-drawer.vue.d.ts +58 -0
- package/dist/components/Layout/du-drawer/du-drawer.vue_vue_type_script_setup_true_lang.js +129 -0
- package/dist/components/Layout/du-join/du-join.js +5 -0
- package/dist/components/Layout/du-join/du-join.types.d.ts +6 -0
- package/dist/components/Layout/du-join/du-join.vue.d.ts +17 -0
- package/dist/components/Layout/du-join/du-join.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.js +7 -0
- package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.types.d.ts +11 -0
- package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue.d.ts +6 -0
- package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/components/Navigation/du-breadcrumbs/du-breadcrumbs.vue_vue_type_style_index_0_scoped_9364edec_lang.css +1 -0
- package/dist/components/Navigation/du-button-link/du-button-link.js +5 -0
- package/dist/components/Navigation/du-button-link/du-button-link.types.d.ts +16 -0
- package/dist/components/Navigation/du-button-link/du-button-link.vue.d.ts +27 -0
- package/dist/components/Navigation/du-button-link/du-button-link.vue_vue_type_script_setup_true_lang.js +71 -0
- package/dist/components/Navigation/du-dock/du-dock.js +5 -0
- package/dist/components/Navigation/du-dock/du-dock.types.d.ts +16 -0
- package/dist/components/Navigation/du-dock/du-dock.vue.d.ts +59 -0
- package/dist/components/Navigation/du-dock/du-dock.vue_vue_type_script_setup_true_lang.js +56 -0
- package/dist/components/Navigation/du-link/du-link.js +5 -0
- package/dist/components/Navigation/du-link/du-link.types.d.ts +6 -0
- package/dist/components/Navigation/du-link/du-link.vue.d.ts +18 -0
- package/dist/components/Navigation/du-link/du-link.vue_vue_type_script_setup_true_lang.js +28 -0
- package/dist/components/Navigation/du-menu/du-menu-item.js +5 -0
- package/dist/components/Navigation/du-menu/du-menu-item.vue.d.ts +17 -0
- package/dist/components/Navigation/du-menu/du-menu-item.vue_vue_type_script_setup_true_lang.js +186 -0
- package/dist/components/Navigation/du-menu/du-menu.js +6 -0
- package/dist/components/Navigation/du-menu/du-menu.types.d.ts +29 -0
- package/dist/components/Navigation/du-menu/du-menu.vue.d.ts +26 -0
- package/dist/components/Navigation/du-menu/du-menu.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/components/Navigation/du-menu/du-menu.vue_vue_type_style_index_0_lang.css +1 -0
- package/dist/components/Navigation/du-navbar/du-navbar.js +5 -0
- package/dist/components/Navigation/du-navbar/du-navbar.types.d.ts +2 -0
- package/dist/components/Navigation/du-navbar/du-navbar.vue.d.ts +20 -0
- package/dist/components/Navigation/du-navbar/du-navbar.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/components/Navigation/du-pagination/du-pagination.js +7 -0
- package/dist/components/Navigation/du-pagination/du-pagination.types.d.ts +29 -0
- package/dist/components/Navigation/du-pagination/du-pagination.vue.d.ts +51 -0
- package/dist/components/Navigation/du-pagination/du-pagination.vue_vue_type_script_setup_true_lang.js +156 -0
- package/dist/components/Navigation/du-pagination/du-pagination.vue_vue_type_style_index_0_scoped_7407b690_lang.css +1 -0
- package/dist/components/Navigation/du-step-item/du-step-item.js +5 -0
- package/dist/components/Navigation/du-step-item/du-step-item.types.d.ts +8 -0
- package/dist/components/Navigation/du-step-item/du-step-item.vue.d.ts +24 -0
- package/dist/components/Navigation/du-step-item/du-step-item.vue_vue_type_script_setup_true_lang.js +27 -0
- package/dist/components/Navigation/du-steps/du-steps.js +5 -0
- package/dist/components/Navigation/du-steps/du-steps.types.d.ts +17 -0
- package/dist/components/Navigation/du-steps/du-steps.vue.d.ts +40 -0
- package/dist/components/Navigation/du-steps/du-steps.vue_vue_type_script_setup_true_lang.js +44 -0
- package/dist/components/Navigation/du-tabs/du-tabs.js +5 -0
- package/dist/components/Navigation/du-tabs/du-tabs.types.d.ts +22 -0
- package/dist/components/Navigation/du-tabs/du-tabs.vue.d.ts +50 -0
- package/dist/components/Navigation/du-tabs/du-tabs.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/composables/useSizeProps.d.ts +15 -0
- package/dist/composables/useSizeProps.js +22 -0
- package/dist/composables/useVariantProps.d.ts +14 -0
- package/dist/composables/useVariantProps.js +7 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +65 -0
- package/dist/plugin-vite.d.ts +64 -0
- package/dist/plugin-vite.js +137 -0
- package/dist/types/index.d.ts +58 -0
- package/index.css +5 -0
- package/index.ts +69 -0
- package/package.json +99 -0
- package/plugin-vite.ts +286 -0
- package/types/index.ts +59 -0
- package/types/types.sh +80 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed } from 'vue'
|
|
3
|
+
import { type Size, useSizeMapping } from '../../../composables/useSizeProps'
|
|
4
|
+
|
|
5
|
+
const props = withDefaults(
|
|
6
|
+
defineProps<{
|
|
7
|
+
size?: Size
|
|
8
|
+
bordered?: boolean
|
|
9
|
+
dash?: boolean
|
|
10
|
+
side?: boolean
|
|
11
|
+
imageFull?: boolean
|
|
12
|
+
responsive?: boolean
|
|
13
|
+
title?: string
|
|
14
|
+
}>(),
|
|
15
|
+
{
|
|
16
|
+
size: 'default',
|
|
17
|
+
bordered: false,
|
|
18
|
+
dash: false,
|
|
19
|
+
side: false,
|
|
20
|
+
imageFull: false,
|
|
21
|
+
responsive: false,
|
|
22
|
+
title: '',
|
|
23
|
+
},
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
const { sizeClass } = useSizeMapping(props, 'card')
|
|
27
|
+
|
|
28
|
+
const borderedClass = computed(() => {
|
|
29
|
+
return props.bordered ? 'card-border' : ''
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
const dashClass = computed(() => {
|
|
33
|
+
return props.dash ? 'card-dash' : ''
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
const sideClass = computed(() => {
|
|
37
|
+
return props.side ? 'card-side' : ''
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
const responsiveClass = computed(() => {
|
|
41
|
+
return props.responsive ? 'card-compact sm:card-normal' : ''
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
const imageFullClass = computed(() => {
|
|
45
|
+
return props.imageFull ? 'image-full' : ''
|
|
46
|
+
})
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<template>
|
|
50
|
+
<div
|
|
51
|
+
:class="[
|
|
52
|
+
'card',
|
|
53
|
+
sizeClass,
|
|
54
|
+
borderedClass,
|
|
55
|
+
dashClass,
|
|
56
|
+
sideClass,
|
|
57
|
+
responsiveClass,
|
|
58
|
+
imageFullClass,
|
|
59
|
+
]"
|
|
60
|
+
>
|
|
61
|
+
<slot name="figure"></slot>
|
|
62
|
+
|
|
63
|
+
<template v-if="$slots.body">
|
|
64
|
+
<slot name="body"></slot>
|
|
65
|
+
<slot name="default"></slot>
|
|
66
|
+
</template>
|
|
67
|
+
|
|
68
|
+
<div
|
|
69
|
+
v-else-if="$slots.title || $slots.actions || $slots.default || title"
|
|
70
|
+
class="card-body"
|
|
71
|
+
>
|
|
72
|
+
<h2 v-if="title || $slots.title" class="card-title flex-wrap">
|
|
73
|
+
<template v-if="title">{{ title }}</template>
|
|
74
|
+
<slot name="title"></slot>
|
|
75
|
+
</h2>
|
|
76
|
+
|
|
77
|
+
<slot></slot>
|
|
78
|
+
|
|
79
|
+
<div v-if="$slots.actions" class="card-actions">
|
|
80
|
+
<slot name="actions"></slot>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<slot name="content"></slot>
|
|
85
|
+
</div>
|
|
86
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const CAROUSEL_POSITIONS = [
|
|
2
|
+
'carousel-start',
|
|
3
|
+
'carousel-center',
|
|
4
|
+
'carousel-end',
|
|
5
|
+
] as const
|
|
6
|
+
|
|
7
|
+
export type CAROUSELPosition = (typeof CAROUSEL_POSITIONS)[number]
|
|
8
|
+
|
|
9
|
+
export interface CarouselItem {
|
|
10
|
+
id?: string
|
|
11
|
+
src?: string
|
|
12
|
+
alt?: string
|
|
13
|
+
content?: string
|
|
14
|
+
customClass?: string
|
|
15
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed } from "vue"
|
|
3
|
+
import { type CarouselItem } from './du-carousel.types'
|
|
4
|
+
import DuCarouselItem from './du-carousel-item.vue'
|
|
5
|
+
|
|
6
|
+
const props = withDefaults(
|
|
7
|
+
defineProps<{
|
|
8
|
+
items?: CarouselItem[]
|
|
9
|
+
start?: boolean
|
|
10
|
+
center?: boolean
|
|
11
|
+
end?: boolean
|
|
12
|
+
vertical?: boolean
|
|
13
|
+
}>(),
|
|
14
|
+
{
|
|
15
|
+
items: undefined,
|
|
16
|
+
start: true,
|
|
17
|
+
center: false,
|
|
18
|
+
end: false,
|
|
19
|
+
vertical: false,
|
|
20
|
+
},
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
const positionClass = computed(() => {
|
|
24
|
+
if (props.center) return "carousel-center"
|
|
25
|
+
if (props.end) return "carousel-end"
|
|
26
|
+
if (props.start) return "carousel-start"
|
|
27
|
+
return null
|
|
28
|
+
})
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<template>
|
|
32
|
+
<div :class="['carousel', positionClass, { 'carousel-vertical': vertical }]">
|
|
33
|
+
<template v-if="items && items.length">
|
|
34
|
+
<DuCarouselItem
|
|
35
|
+
v-for="(item, index) in items"
|
|
36
|
+
:key="item.id ?? index"
|
|
37
|
+
:id="item.id"
|
|
38
|
+
:class="item.customClass"
|
|
39
|
+
>
|
|
40
|
+
<img v-if="item.src" :src="item.src" :alt="item.alt ?? `Slide ${index + 1}`" />
|
|
41
|
+
<template v-else-if="item.content">{{ item.content }}</template>
|
|
42
|
+
</DuCarouselItem>
|
|
43
|
+
</template>
|
|
44
|
+
<slot v-else></slot>
|
|
45
|
+
</div>
|
|
46
|
+
</template>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, inject } from "vue";
|
|
3
|
+
import { type Variant, useVariantMapping } from "../../../composables/useVariantProps";
|
|
4
|
+
import { type ChatPlacement } from "./du-chat.types";
|
|
5
|
+
|
|
6
|
+
interface ChatItemProps {
|
|
7
|
+
message?: string;
|
|
8
|
+
placement?: ChatPlacement;
|
|
9
|
+
variant?: Variant;
|
|
10
|
+
customClass?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const props = withDefaults(
|
|
14
|
+
defineProps<ChatItemProps>(),
|
|
15
|
+
{
|
|
16
|
+
message: "",
|
|
17
|
+
placement: undefined,
|
|
18
|
+
variant: "default",
|
|
19
|
+
customClass: "",
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
const defaultPlacement = inject("defaultChatPlacement", "start");
|
|
24
|
+
|
|
25
|
+
const finalPlacement = computed(() => props.placement || defaultPlacement);
|
|
26
|
+
|
|
27
|
+
const { colorClass } = useVariantMapping(props, "chat-bubble");
|
|
28
|
+
|
|
29
|
+
const placementClass = computed(() => {
|
|
30
|
+
return finalPlacement.value === "end" ? "chat-end" : "chat-start";
|
|
31
|
+
});
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<template>
|
|
35
|
+
<div :class="['chat', placementClass, customClass]">
|
|
36
|
+
<div v-if="$slots.image" class="chat-image avatar">
|
|
37
|
+
<div class="w-10 rounded-full">
|
|
38
|
+
<slot name="image"></slot>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<div v-if="$slots.header" class="chat-header">
|
|
43
|
+
<slot name="header"></slot>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div :class="['chat-bubble', colorClass]">
|
|
47
|
+
<slot name="message">
|
|
48
|
+
{{ message }}
|
|
49
|
+
</slot>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<div v-if="$slots.footer" class="chat-footer">
|
|
53
|
+
<slot name="footer"></slot>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</template>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const CHAT_COLORS = [
|
|
2
|
+
'chat-bubble-primary',
|
|
3
|
+
'chat-bubble-secondary',
|
|
4
|
+
'chat-bubble-accent',
|
|
5
|
+
'chat-bubble-neutral',
|
|
6
|
+
'chat-bubble-info',
|
|
7
|
+
'chat-bubble-success',
|
|
8
|
+
'chat-bubble-warning',
|
|
9
|
+
'chat-bubble-error',
|
|
10
|
+
] as const
|
|
11
|
+
|
|
12
|
+
export type CHATColor = (typeof CHAT_COLORS)[number]
|
|
13
|
+
|
|
14
|
+
export const DU_CHAT_PLACEMENTS = ["start", "end"] as const;
|
|
15
|
+
export type ChatPlacement = (typeof DU_CHAT_PLACEMENTS)[number];
|
|
16
|
+
|
|
17
|
+
export interface ChatItem {
|
|
18
|
+
message?: string;
|
|
19
|
+
image?: string;
|
|
20
|
+
header?: string;
|
|
21
|
+
footer?: string;
|
|
22
|
+
placement?: ChatPlacement;
|
|
23
|
+
variant?: CHATColor;
|
|
24
|
+
customClass?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface ChatProps {
|
|
28
|
+
items?: ChatItem[];
|
|
29
|
+
placement?: ChatPlacement;
|
|
30
|
+
customClass?: string;
|
|
31
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { provide } from "vue";
|
|
3
|
+
import { type ChatProps } from './du-chat.types';
|
|
4
|
+
|
|
5
|
+
const props = withDefaults(
|
|
6
|
+
defineProps<ChatProps>(),
|
|
7
|
+
{
|
|
8
|
+
items: undefined,
|
|
9
|
+
placement: "start",
|
|
10
|
+
customClass: "",
|
|
11
|
+
},
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
provide("defaultChatPlacement", props.placement);
|
|
15
|
+
|
|
16
|
+
const getPlacementClass = (itemPlacement: string | undefined) => {
|
|
17
|
+
const finalPlacement = itemPlacement || props.placement;
|
|
18
|
+
return finalPlacement === "end" ? "chat-end" : "chat-start";
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<!-- Dynamic items mode -->
|
|
24
|
+
<template v-if="items">
|
|
25
|
+
<div
|
|
26
|
+
v-for="(item, index) in items"
|
|
27
|
+
:key="index"
|
|
28
|
+
:class="[
|
|
29
|
+
'chat',
|
|
30
|
+
getPlacementClass(item.placement),
|
|
31
|
+
item.customClass || customClass,
|
|
32
|
+
]"
|
|
33
|
+
>
|
|
34
|
+
<div
|
|
35
|
+
v-if="item.image || $slots[`image-${index}`]"
|
|
36
|
+
class="chat-image avatar"
|
|
37
|
+
>
|
|
38
|
+
<div class="w-10 rounded-full">
|
|
39
|
+
<slot :name="`image-${index}`" :item="item" :index="index">
|
|
40
|
+
<img v-if="item.image" :src="item.image" alt="Chat avatar" />
|
|
41
|
+
</slot>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<div v-if="item.header || $slots[`header-${index}`]" class="chat-header">
|
|
46
|
+
<slot :name="`header-${index}`" :item="item" :index="index">
|
|
47
|
+
{{ item.header }}
|
|
48
|
+
</slot>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div
|
|
52
|
+
:class="['chat-bubble', item.variant ? `chat-bubble-${item.variant}` : '']"
|
|
53
|
+
>
|
|
54
|
+
<slot :name="`message-${index}`" :item="item" :index="index">
|
|
55
|
+
{{ item.message }}
|
|
56
|
+
</slot>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div v-if="item.footer || $slots[`footer-${index}`]" class="chat-footer">
|
|
60
|
+
<slot :name="`footer-${index}`" :item="item" :index="index">
|
|
61
|
+
{{ item.footer }}
|
|
62
|
+
</slot>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</template>
|
|
66
|
+
|
|
67
|
+
<!-- Manual mode -->
|
|
68
|
+
<template v-else>
|
|
69
|
+
<slot></slot>
|
|
70
|
+
</template>
|
|
71
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const COLLAPSE_MODIFIERS = [
|
|
2
|
+
'collapse-arrow',
|
|
3
|
+
'collapse-plus',
|
|
4
|
+
'collapse-open',
|
|
5
|
+
'collapse-close',
|
|
6
|
+
] as const
|
|
7
|
+
|
|
8
|
+
export interface COLLAPSEItem {
|
|
9
|
+
title?: string
|
|
10
|
+
content?: string
|
|
11
|
+
open?: boolean
|
|
12
|
+
customClass?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type COLLAPSEModifier = (typeof COLLAPSE_MODIFIERS)[number]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, provide } from 'vue'
|
|
3
|
+
import { type COLLAPSEItem } from './du-collapse.types'
|
|
4
|
+
|
|
5
|
+
withDefaults(
|
|
6
|
+
defineProps<{
|
|
7
|
+
items?: COLLAPSEItem[]
|
|
8
|
+
modifier?:
|
|
9
|
+
| 'collapse-arrow'
|
|
10
|
+
| 'collapse-plus'
|
|
11
|
+
| 'collapse-open'
|
|
12
|
+
| 'collapse-close'
|
|
13
|
+
customClass?: string
|
|
14
|
+
}>(),
|
|
15
|
+
{
|
|
16
|
+
items: undefined,
|
|
17
|
+
modifier: undefined,
|
|
18
|
+
customClass: '',
|
|
19
|
+
},
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
const collapseId = computed(
|
|
23
|
+
() => `collapse-${Math.random().toString(36).substring(2, 9)}`,
|
|
24
|
+
)
|
|
25
|
+
provide('collapseId', collapseId.value)
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<!-- Dynamic items mode -->
|
|
30
|
+
<template v-if="items">
|
|
31
|
+
<div
|
|
32
|
+
v-for="(item, index) in items"
|
|
33
|
+
:key="index"
|
|
34
|
+
:class="[
|
|
35
|
+
'collapse',
|
|
36
|
+
'bg-base-100 border border-base-300',
|
|
37
|
+
modifier,
|
|
38
|
+
item.customClass || customClass,
|
|
39
|
+
]"
|
|
40
|
+
>
|
|
41
|
+
<input type="checkbox" :checked="item.open ?? false" />
|
|
42
|
+
<div class="collapse-title">
|
|
43
|
+
<slot :name="`title-${index}`" :item="item" :index="index">
|
|
44
|
+
{{ item.title }}
|
|
45
|
+
</slot>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="collapse-content">
|
|
48
|
+
<slot :name="`content-${index}`" :item="item" :index="index">
|
|
49
|
+
{{ item.content }}
|
|
50
|
+
</slot>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
<!-- Manual mode -->
|
|
56
|
+
<template v-else>
|
|
57
|
+
<slot></slot>
|
|
58
|
+
</template>
|
|
59
|
+
</template>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import DuCountdown from "./du-countdown.vue"
|
|
3
|
+
import { type COUNTDOWNLabels } from './du-countdown.types'
|
|
4
|
+
|
|
5
|
+
withDefaults(
|
|
6
|
+
defineProps<{
|
|
7
|
+
targetDate?: Date
|
|
8
|
+
showDays?: boolean
|
|
9
|
+
showHours?: boolean
|
|
10
|
+
showMinutes?: boolean
|
|
11
|
+
showSeconds?: boolean
|
|
12
|
+
labels?: COUNTDOWNLabels
|
|
13
|
+
separator?: string
|
|
14
|
+
customClass?: string
|
|
15
|
+
}>(),
|
|
16
|
+
{
|
|
17
|
+
targetDate: undefined,
|
|
18
|
+
showDays: true,
|
|
19
|
+
showHours: true,
|
|
20
|
+
showMinutes: true,
|
|
21
|
+
showSeconds: true,
|
|
22
|
+
labels: () => ({
|
|
23
|
+
days: "days",
|
|
24
|
+
hours: "hours",
|
|
25
|
+
minutes: "min",
|
|
26
|
+
seconds: "sec",
|
|
27
|
+
}),
|
|
28
|
+
separator: ":",
|
|
29
|
+
customClass: "",
|
|
30
|
+
},
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<div :class="['flex items-center gap-2', customClass]">
|
|
37
|
+
<div v-if="showDays" class="flex flex-col items-center">
|
|
38
|
+
<DuCountdown
|
|
39
|
+
:target-date="targetDate"
|
|
40
|
+
format="days"
|
|
41
|
+
:separator="separator"
|
|
42
|
+
/>
|
|
43
|
+
<span class="text-xs mt-1">{{ labels.days }}</span>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<span
|
|
47
|
+
v-if="showDays && (showHours || showMinutes || showSeconds)"
|
|
48
|
+
class="text-xl"
|
|
49
|
+
>
|
|
50
|
+
{{ separator }}
|
|
51
|
+
</span>
|
|
52
|
+
|
|
53
|
+
<div v-if="showHours" class="flex flex-col items-center">
|
|
54
|
+
<DuCountdown
|
|
55
|
+
:target-date="targetDate"
|
|
56
|
+
format="hours"
|
|
57
|
+
:separator="separator"
|
|
58
|
+
/>
|
|
59
|
+
<span class="text-xs mt-1">{{ labels.hours }}</span>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<span v-if="showHours && (showMinutes || showSeconds)" class="text-xl">
|
|
63
|
+
{{ separator }}
|
|
64
|
+
</span>
|
|
65
|
+
|
|
66
|
+
<div v-if="showMinutes" class="flex flex-col items-center">
|
|
67
|
+
<DuCountdown
|
|
68
|
+
:target-date="targetDate"
|
|
69
|
+
format="minutes"
|
|
70
|
+
:separator="separator"
|
|
71
|
+
/>
|
|
72
|
+
<span class="text-xs mt-1">{{ labels.minutes }}</span>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<span v-if="showMinutes && showSeconds" class="text-xl">
|
|
76
|
+
{{ separator }}
|
|
77
|
+
</span>
|
|
78
|
+
|
|
79
|
+
<div v-if="showSeconds" class="flex flex-col items-center">
|
|
80
|
+
<DuCountdown
|
|
81
|
+
:target-date="targetDate"
|
|
82
|
+
format="seconds"
|
|
83
|
+
:separator="separator"
|
|
84
|
+
/>
|
|
85
|
+
<span class="text-xs mt-1">{{ labels.seconds }}</span>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const COUNTDOWN_FORMATS = [
|
|
2
|
+
'days',
|
|
3
|
+
'hours',
|
|
4
|
+
'minutes',
|
|
5
|
+
'seconds',
|
|
6
|
+
] as const
|
|
7
|
+
|
|
8
|
+
export type COUNTDOWNFormat = (typeof COUNTDOWN_FORMATS)[number]
|
|
9
|
+
|
|
10
|
+
export interface COUNTDOWNLabels {
|
|
11
|
+
days?: string
|
|
12
|
+
hours?: string
|
|
13
|
+
minutes?: string
|
|
14
|
+
seconds?: string
|
|
15
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, ref, onMounted, onBeforeUnmount, watch } from "vue"
|
|
3
|
+
import { type COUNTDOWNFormat } from './du-countdown.types'
|
|
4
|
+
|
|
5
|
+
const props = withDefaults(
|
|
6
|
+
defineProps<{
|
|
7
|
+
value?: number
|
|
8
|
+
targetDate?: Date
|
|
9
|
+
format?: COUNTDOWNFormat
|
|
10
|
+
separator?: string
|
|
11
|
+
customClass?: string
|
|
12
|
+
autoStart?: boolean
|
|
13
|
+
}>(),
|
|
14
|
+
{
|
|
15
|
+
value: undefined,
|
|
16
|
+
targetDate: undefined,
|
|
17
|
+
format: "seconds",
|
|
18
|
+
separator: ":",
|
|
19
|
+
customClass: "",
|
|
20
|
+
autoStart: true,
|
|
21
|
+
},
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
const currentValue = ref(props.value !== undefined ? props.value : 0)
|
|
25
|
+
const intervalId = ref<number | null>(null)
|
|
26
|
+
|
|
27
|
+
const calculateTimeRemaining = () => {
|
|
28
|
+
if (!props.targetDate) return 0
|
|
29
|
+
|
|
30
|
+
const now = new Date().getTime()
|
|
31
|
+
const target = props.targetDate.getTime()
|
|
32
|
+
const difference = Math.max(0, target - now)
|
|
33
|
+
|
|
34
|
+
const calculators = {
|
|
35
|
+
days: () => Math.floor(difference / (1000 * 60 * 60 * 24)),
|
|
36
|
+
hours: () =>
|
|
37
|
+
Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
|
|
38
|
+
minutes: () => Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)),
|
|
39
|
+
seconds: () => Math.floor((difference % (1000 * 60)) / 1000),
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return (calculators[props.format] || calculators.seconds)()
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Calculer le temps total restant en millisecondes
|
|
46
|
+
const getTotalTimeRemaining = () => {
|
|
47
|
+
if (!props.targetDate) return 0
|
|
48
|
+
const now = new Date().getTime()
|
|
49
|
+
const target = props.targetDate.getTime()
|
|
50
|
+
return Math.max(0, target - now)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Mettre à jour la valeur en fonction de la date cible
|
|
54
|
+
const updateFromTargetDate = () => {
|
|
55
|
+
if (props.targetDate) {
|
|
56
|
+
currentValue.value = calculateTimeRemaining()
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Nombre de chiffres à afficher (2 ou 3)
|
|
61
|
+
const digits = computed(() => {
|
|
62
|
+
return currentValue.value > 99 ? 3 : 2
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
// Formater la valeur pour l'affichage
|
|
66
|
+
const formattedValue = computed(() => {
|
|
67
|
+
const value = Math.min(999, Math.max(0, currentValue.value))
|
|
68
|
+
return value.toString().padStart(digits.value, '0')
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
// Valeur pour l'attribut aria-label
|
|
72
|
+
const ariaLabel = computed(() => {
|
|
73
|
+
return `${currentValue.value} ${props.format}`
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
// Définir l'émetteur d'événements
|
|
77
|
+
const emit = defineEmits<{
|
|
78
|
+
(e: "end"): void
|
|
79
|
+
}>()
|
|
80
|
+
|
|
81
|
+
// Démarrer le compte à rebours
|
|
82
|
+
const startCountdown = () => {
|
|
83
|
+
if (intervalId.value !== null) return
|
|
84
|
+
|
|
85
|
+
updateFromTargetDate()
|
|
86
|
+
|
|
87
|
+
intervalId.value = window.setInterval(() => {
|
|
88
|
+
if (props.targetDate) {
|
|
89
|
+
updateFromTargetDate()
|
|
90
|
+
// Vérifier si le temps total restant est 0, pas juste la valeur affichée
|
|
91
|
+
if (getTotalTimeRemaining() === 0) {
|
|
92
|
+
emit("end")
|
|
93
|
+
stopCountdown()
|
|
94
|
+
}
|
|
95
|
+
} else if (currentValue.value > 0) {
|
|
96
|
+
currentValue.value--
|
|
97
|
+
if (currentValue.value === 0) {
|
|
98
|
+
emit("end")
|
|
99
|
+
stopCountdown()
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
stopCountdown()
|
|
103
|
+
}
|
|
104
|
+
}, 1000)
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Arrêter le compte à rebours
|
|
108
|
+
const stopCountdown = () => {
|
|
109
|
+
if (intervalId.value !== null) {
|
|
110
|
+
clearInterval(intervalId.value)
|
|
111
|
+
intervalId.value = null
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Réinitialiser le compte à rebours
|
|
116
|
+
const resetCountdown = () => {
|
|
117
|
+
stopCountdown()
|
|
118
|
+
if (props.value !== undefined) {
|
|
119
|
+
currentValue.value = props.value
|
|
120
|
+
} else if (props.targetDate) {
|
|
121
|
+
updateFromTargetDate()
|
|
122
|
+
} else {
|
|
123
|
+
currentValue.value = 0
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Exposer les méthodes pour le contrôle externe
|
|
128
|
+
defineExpose({
|
|
129
|
+
start: startCountdown,
|
|
130
|
+
stop: stopCountdown,
|
|
131
|
+
reset: resetCountdown,
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
// Surveiller les changements de props
|
|
135
|
+
watch(
|
|
136
|
+
() => props.value,
|
|
137
|
+
(newValue) => {
|
|
138
|
+
if (newValue !== undefined) {
|
|
139
|
+
currentValue.value = newValue
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
watch(
|
|
145
|
+
() => props.targetDate,
|
|
146
|
+
() => {
|
|
147
|
+
resetCountdown()
|
|
148
|
+
if (props.autoStart) {
|
|
149
|
+
startCountdown()
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
// Démarrer le compte à rebours au montage si autoStart est true
|
|
155
|
+
onMounted(() => {
|
|
156
|
+
if (props.autoStart) {
|
|
157
|
+
startCountdown()
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
|
|
161
|
+
// Nettoyer l'intervalle avant de démonter le composant
|
|
162
|
+
onBeforeUnmount(() => {
|
|
163
|
+
stopCountdown()
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
const cssVars = computed(() => ({
|
|
167
|
+
'--value': Math.min(999, Math.max(0, currentValue.value)),
|
|
168
|
+
'--digits': digits.value
|
|
169
|
+
}))
|
|
170
|
+
</script>
|
|
171
|
+
|
|
172
|
+
<template>
|
|
173
|
+
<span
|
|
174
|
+
:class="['countdown', customClass]"
|
|
175
|
+
aria-live="polite"
|
|
176
|
+
:aria-label="ariaLabel"
|
|
177
|
+
>
|
|
178
|
+
<span :style="cssVars">{{ formattedValue }}</span>
|
|
179
|
+
</span>
|
|
180
|
+
</template>
|