snice 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -41
- package/dist/components/accordion/snice-accordion-item.d.ts +2 -2
- package/dist/components/accordion/snice-accordion-item.js +9 -9
- package/dist/components/accordion/snice-accordion-item.js.map +1 -1
- package/dist/components/accordion/snice-accordion.d.ts +2 -2
- package/dist/components/accordion/snice-accordion.js +9 -9
- package/dist/components/accordion/snice-accordion.js.map +1 -1
- package/dist/components/actions/snice-actions.d.ts +28 -0
- package/dist/components/actions/snice-actions.js +220 -0
- package/dist/components/actions/snice-actions.js.map +1 -0
- package/dist/components/actions/snice-actions.types.d.ts +27 -0
- package/dist/components/alert/snice-alert.d.ts +2 -2
- package/dist/components/alert/snice-alert.js +9 -9
- package/dist/components/alert/snice-alert.js.map +1 -1
- package/dist/components/audio-recorder/snice-audio-recorder.d.ts +58 -0
- package/dist/components/audio-recorder/snice-audio-recorder.js +413 -0
- package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -0
- package/dist/components/audio-recorder/snice-audio-recorder.types.d.ts +28 -0
- package/dist/components/avatar/snice-avatar.d.ts +2 -2
- package/dist/components/avatar/snice-avatar.js +9 -9
- package/dist/components/avatar/snice-avatar.js.map +1 -1
- package/dist/components/badge/snice-badge.d.ts +2 -2
- package/dist/components/badge/snice-badge.js +10 -10
- package/dist/components/badge/snice-badge.js.map +1 -1
- package/dist/components/banner/snice-banner.d.ts +22 -0
- package/dist/components/banner/snice-banner.js +180 -0
- package/dist/components/banner/snice-banner.js.map +1 -0
- package/dist/components/banner/snice-banner.types.d.ts +14 -0
- package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +2 -2
- package/dist/components/breadcrumbs/snice-breadcrumbs.js +9 -9
- package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/components/button/snice-button.d.ts +2 -2
- package/dist/components/button/snice-button.js +9 -9
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/components/calendar/snice-calendar.d.ts +46 -0
- package/dist/components/calendar/snice-calendar.js +294 -0
- package/dist/components/calendar/snice-calendar.js.map +1 -0
- package/dist/components/calendar/snice-calendar.types.d.ts +34 -0
- package/dist/components/camera/snice-camera.d.ts +39 -0
- package/dist/components/camera/snice-camera.js +286 -0
- package/dist/components/camera/snice-camera.js.map +1 -0
- package/dist/components/camera/snice-camera.types.d.ts +28 -0
- package/dist/components/card/snice-card.d.ts +2 -2
- package/dist/components/card/snice-card.js +9 -9
- package/dist/components/card/snice-card.js.map +1 -1
- package/dist/components/carousel/snice-carousel.d.ts +32 -0
- package/dist/components/carousel/snice-carousel.js +279 -0
- package/dist/components/carousel/snice-carousel.js.map +1 -0
- package/dist/components/carousel/snice-carousel.types.d.ts +22 -0
- package/dist/components/chart/snice-chart.d.ts +73 -0
- package/dist/components/chart/snice-chart.js +940 -0
- package/dist/components/chart/snice-chart.js.map +1 -0
- package/dist/components/chart/snice-chart.types.d.ts +71 -0
- package/dist/components/chat/snice-chat.d.ts +98 -0
- package/dist/components/chat/snice-chat.js +589 -0
- package/dist/components/chat/snice-chat.js.map +1 -0
- package/dist/components/chat/snice-chat.types.d.ts +141 -0
- package/dist/components/checkbox/snice-checkbox.d.ts +2 -2
- package/dist/components/checkbox/snice-checkbox.js +9 -9
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/chip/snice-chip.d.ts +2 -2
- package/dist/components/chip/snice-chip.js +9 -9
- package/dist/components/chip/snice-chip.js.map +1 -1
- package/dist/components/code-block/snice-code-block.d.ts +15 -0
- package/dist/components/code-block/snice-code-block.js +141 -0
- package/dist/components/code-block/snice-code-block.js.map +1 -0
- package/dist/components/code-block/snice-code-block.types.d.ts +15 -0
- package/dist/components/color-display/snice-color-display.d.ts +14 -0
- package/dist/components/color-display/snice-color-display.js +151 -0
- package/dist/components/color-display/snice-color-display.js.map +1 -0
- package/dist/components/color-display/snice-color-display.types.d.ts +10 -0
- package/dist/components/color-picker/snice-color-picker.d.ts +50 -0
- package/dist/components/color-picker/snice-color-picker.js +489 -0
- package/dist/components/color-picker/snice-color-picker.js.map +1 -0
- package/dist/components/color-picker/snice-color-picker.types.d.ts +19 -0
- package/dist/components/command-palette/snice-command-palette.d.ts +47 -0
- package/dist/components/command-palette/snice-command-palette.js +428 -0
- package/dist/components/command-palette/snice-command-palette.js.map +1 -0
- package/dist/components/command-palette/snice-command-palette.types.d.ts +49 -0
- package/dist/components/date-picker/snice-date-picker.d.ts +2 -2
- package/dist/components/date-picker/snice-date-picker.js +10 -10
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/divider/snice-divider.d.ts +2 -2
- package/dist/components/divider/snice-divider.js +9 -9
- package/dist/components/divider/snice-divider.js.map +1 -1
- package/dist/components/doc/snice-doc.d.ts +93 -0
- package/dist/components/doc/snice-doc.js +626 -0
- package/dist/components/doc/snice-doc.js.map +1 -0
- package/dist/components/doc/snice-doc.types.d.ts +118 -0
- package/dist/components/draw/snice-draw.d.ts +71 -0
- package/dist/components/draw/snice-draw.js +709 -0
- package/dist/components/draw/snice-draw.js.map +1 -0
- package/dist/components/draw/snice-draw.types.d.ts +41 -0
- package/dist/components/drawer/snice-drawer.d.ts +2 -2
- package/dist/components/drawer/snice-drawer.js +9 -9
- package/dist/components/drawer/snice-drawer.js.map +1 -1
- package/dist/components/empty-state/snice-empty-state.d.ts +13 -0
- package/dist/components/empty-state/snice-empty-state.js +121 -0
- package/dist/components/empty-state/snice-empty-state.js.map +1 -0
- package/dist/components/empty-state/snice-empty-state.types.d.ts +9 -0
- package/dist/components/file-upload/snice-file-upload.d.ts +44 -0
- package/dist/components/file-upload/snice-file-upload.js +387 -0
- package/dist/components/file-upload/snice-file-upload.js.map +1 -0
- package/dist/components/file-upload/snice-file-upload.types.d.ts +22 -0
- package/dist/components/gantt/snice-gantt.d.ts +29 -0
- package/dist/components/gantt/snice-gantt.js +268 -0
- package/dist/components/gantt/snice-gantt.js.map +1 -0
- package/dist/components/gantt/snice-gantt.types.d.ts +23 -0
- package/dist/components/image/snice-image.d.ts +22 -0
- package/dist/components/image/snice-image.js +201 -0
- package/dist/components/image/snice-image.js.map +1 -0
- package/dist/components/image/snice-image.types.d.ts +17 -0
- package/dist/components/input/snice-input.d.ts +2 -2
- package/dist/components/input/snice-input.js +9 -9
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/kanban/snice-kanban.d.ts +31 -0
- package/dist/components/kanban/snice-kanban.js +243 -0
- package/dist/components/kanban/snice-kanban.js.map +1 -0
- package/dist/components/kanban/snice-kanban.types.d.ts +29 -0
- package/dist/components/kpi/snice-kpi.d.ts +16 -0
- package/dist/components/kpi/snice-kpi.js +162 -0
- package/dist/components/kpi/snice-kpi.js.map +1 -0
- package/dist/components/kpi/snice-kpi.types.d.ts +12 -0
- package/dist/components/layout/snice-layout-blog.d.ts +2 -2
- package/dist/components/layout/snice-layout-blog.js +9 -9
- package/dist/components/layout/snice-layout-blog.js.map +1 -1
- package/dist/components/layout/snice-layout-card.d.ts +2 -2
- package/dist/components/layout/snice-layout-card.js +9 -9
- package/dist/components/layout/snice-layout-card.js.map +1 -1
- package/dist/components/layout/snice-layout-centered.d.ts +2 -2
- package/dist/components/layout/snice-layout-centered.js +9 -9
- package/dist/components/layout/snice-layout-centered.js.map +1 -1
- package/dist/components/layout/snice-layout-dashboard.d.ts +2 -2
- package/dist/components/layout/snice-layout-dashboard.js +9 -9
- package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
- package/dist/components/layout/snice-layout-fullscreen.d.ts +2 -2
- package/dist/components/layout/snice-layout-fullscreen.js +9 -9
- package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
- package/dist/components/layout/snice-layout-landing.d.ts +2 -2
- package/dist/components/layout/snice-layout-landing.js +9 -9
- package/dist/components/layout/snice-layout-landing.js.map +1 -1
- package/dist/components/layout/snice-layout-minimal.d.ts +2 -2
- package/dist/components/layout/snice-layout-minimal.js +9 -9
- package/dist/components/layout/snice-layout-minimal.js.map +1 -1
- package/dist/components/layout/snice-layout-sidebar.d.ts +2 -2
- package/dist/components/layout/snice-layout-sidebar.js +9 -9
- package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
- package/dist/components/layout/snice-layout-split.d.ts +2 -2
- package/dist/components/layout/snice-layout-split.js +9 -9
- package/dist/components/layout/snice-layout-split.js.map +1 -1
- package/dist/components/layout/snice-layout.d.ts +2 -2
- package/dist/components/layout/snice-layout.js +9 -9
- package/dist/components/layout/snice-layout.js.map +1 -1
- package/dist/components/link/snice-link.d.ts +13 -0
- package/dist/components/link/snice-link.js +137 -0
- package/dist/components/link/snice-link.js.map +1 -0
- package/dist/components/link/snice-link.types.d.ts +11 -0
- package/dist/components/list/snice-list-item.d.ts +6 -0
- package/dist/components/list/snice-list-item.js +68 -0
- package/dist/components/list/snice-list-item.js.map +1 -0
- package/dist/components/list/snice-list.d.ts +23 -0
- package/dist/components/list/snice-list.js +270 -0
- package/dist/components/list/snice-list.js.map +1 -0
- package/dist/components/list/snice-list.types.d.ts +28 -0
- package/dist/components/location/snice-location.d.ts +35 -0
- package/dist/components/location/snice-location.js +238 -0
- package/dist/components/location/snice-location.js.map +1 -0
- package/dist/components/location/snice-location.types.d.ts +35 -0
- package/dist/components/login/snice-login.d.ts +2 -2
- package/dist/components/login/snice-login.js +9 -9
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/menu/snice-menu-divider.d.ts +4 -0
- package/dist/components/menu/snice-menu-divider.js +53 -0
- package/dist/components/menu/snice-menu-divider.js.map +1 -0
- package/dist/components/menu/snice-menu-item.d.ts +10 -0
- package/dist/components/menu/snice-menu-item.js +99 -0
- package/dist/components/menu/snice-menu-item.js.map +1 -0
- package/dist/components/menu/snice-menu-item.types.d.ts +9 -0
- package/dist/components/menu/snice-menu.d.ts +27 -0
- package/dist/components/menu/snice-menu.js +199 -0
- package/dist/components/menu/snice-menu.js.map +1 -0
- package/dist/components/menu/snice-menu.types.d.ts +18 -0
- package/dist/components/modal/snice-modal.d.ts +2 -2
- package/dist/components/modal/snice-modal.js +9 -9
- package/dist/components/modal/snice-modal.js.map +1 -1
- package/dist/components/nav/snice-nav.js +1 -1
- package/dist/components/nav/snice-nav.js.map +1 -1
- package/dist/components/pagination/snice-pagination.d.ts +2 -2
- package/dist/components/pagination/snice-pagination.js +8 -8
- package/dist/components/pagination/snice-pagination.js.map +1 -1
- package/dist/components/progress/snice-progress.d.ts +2 -2
- package/dist/components/progress/snice-progress.js +9 -9
- package/dist/components/progress/snice-progress.js.map +1 -1
- package/dist/components/qr-code/qrcode.d.ts +28 -0
- package/dist/components/qr-code/qrcode.js +906 -0
- package/dist/components/qr-code/qrcode.js.map +1 -0
- package/dist/components/qr-code/snice-qr-code.d.ts +35 -0
- package/dist/components/qr-code/snice-qr-code.js +256 -0
- package/dist/components/qr-code/snice-qr-code.js.map +1 -0
- package/dist/components/qr-code/snice-qr-code.types.d.ts +33 -0
- package/dist/components/radio/snice-radio.d.ts +2 -2
- package/dist/components/radio/snice-radio.js +9 -9
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-option.d.ts +2 -2
- package/dist/components/select/snice-option.js +8 -8
- package/dist/components/select/snice-option.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +2 -2
- package/dist/components/select/snice-select.js +9 -9
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/skeleton/snice-skeleton.d.ts +2 -2
- package/dist/components/skeleton/snice-skeleton.js +9 -9
- package/dist/components/skeleton/snice-skeleton.js.map +1 -1
- package/dist/components/slider/snice-slider.d.ts +53 -0
- package/dist/components/slider/snice-slider.js +479 -0
- package/dist/components/slider/snice-slider.js.map +1 -0
- package/dist/components/slider/snice-slider.types.d.ts +26 -0
- package/dist/components/snice-cell-C0slgOpe.js +4 -0
- package/dist/components/snice-cell-C0slgOpe.js.map +1 -0
- package/dist/components/sparkline/snice-sparkline.d.ts +21 -0
- package/dist/components/sparkline/snice-sparkline.js +228 -0
- package/dist/components/sparkline/snice-sparkline.js.map +1 -0
- package/dist/components/sparkline/snice-sparkline.types.d.ts +16 -0
- package/dist/components/spinner/snice-spinner.d.ts +10 -0
- package/dist/components/spinner/snice-spinner.js +109 -0
- package/dist/components/spinner/snice-spinner.js.map +1 -0
- package/dist/components/spinner/snice-spinner.types.d.ts +8 -0
- package/dist/components/split-pane/snice-split-pane.d.ts +32 -0
- package/dist/components/split-pane/snice-split-pane.js +191 -0
- package/dist/components/split-pane/snice-split-pane.js.map +1 -0
- package/dist/components/split-pane/snice-split-pane.types.d.ts +19 -0
- package/dist/components/stat/snice-stat.d.ts +14 -0
- package/dist/components/stat/snice-stat.js +140 -0
- package/dist/components/stat/snice-stat.js.map +1 -0
- package/dist/components/stat/snice-stat.types.d.ts +12 -0
- package/dist/components/stepper/snice-stepper-panel.d.ts +8 -0
- package/dist/components/stepper/snice-stepper-panel.js +70 -0
- package/dist/components/stepper/snice-stepper-panel.js.map +1 -0
- package/dist/components/stepper/snice-stepper-panel.types.d.ts +4 -0
- package/dist/components/stepper/snice-stepper.d.ts +15 -0
- package/dist/components/stepper/snice-stepper.js +163 -0
- package/dist/components/stepper/snice-stepper.js.map +1 -0
- package/dist/components/stepper/snice-stepper.types.d.ts +13 -0
- package/dist/components/switch/snice-switch.d.ts +2 -2
- package/dist/components/switch/snice-switch.js +9 -9
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.d.ts +2 -2
- package/dist/components/table/snice-cell-actions.js +9 -9
- package/dist/components/table/snice-cell-actions.js.map +1 -1
- package/dist/components/table/snice-cell-boolean.d.ts +2 -2
- package/dist/components/table/snice-cell-boolean.js +9 -9
- package/dist/components/table/snice-cell-boolean.js.map +1 -1
- package/dist/components/table/snice-cell-color.d.ts +2 -2
- package/dist/components/table/snice-cell-color.js +9 -9
- package/dist/components/table/snice-cell-color.js.map +1 -1
- package/dist/components/table/snice-cell-currency.d.ts +2 -2
- package/dist/components/table/snice-cell-currency.js +9 -9
- package/dist/components/table/snice-cell-currency.js.map +1 -1
- package/dist/components/table/snice-cell-date.d.ts +2 -2
- package/dist/components/table/snice-cell-date.js +9 -9
- package/dist/components/table/snice-cell-date.js.map +1 -1
- package/dist/components/table/snice-cell-duration.d.ts +2 -2
- package/dist/components/table/snice-cell-duration.js +9 -9
- package/dist/components/table/snice-cell-duration.js.map +1 -1
- package/dist/components/table/snice-cell-email.d.ts +2 -2
- package/dist/components/table/snice-cell-email.js +9 -9
- package/dist/components/table/snice-cell-email.js.map +1 -1
- package/dist/components/table/snice-cell-filesize.d.ts +2 -2
- package/dist/components/table/snice-cell-filesize.js +9 -9
- package/dist/components/table/snice-cell-filesize.js.map +1 -1
- package/dist/components/table/snice-cell-image.d.ts +2 -2
- package/dist/components/table/snice-cell-image.js +9 -9
- package/dist/components/table/snice-cell-image.js.map +1 -1
- package/dist/components/table/snice-cell-json.d.ts +2 -2
- package/dist/components/table/snice-cell-json.js +9 -9
- package/dist/components/table/snice-cell-json.js.map +1 -1
- package/dist/components/table/snice-cell-link.d.ts +2 -2
- package/dist/components/table/snice-cell-link.js +9 -9
- package/dist/components/table/snice-cell-link.js.map +1 -1
- package/dist/components/table/snice-cell-location.d.ts +2 -2
- package/dist/components/table/snice-cell-location.js +9 -9
- package/dist/components/table/snice-cell-location.js.map +1 -1
- package/dist/components/table/snice-cell-number.d.ts +2 -2
- package/dist/components/table/snice-cell-number.js +9 -9
- package/dist/components/table/snice-cell-number.js.map +1 -1
- package/dist/components/table/snice-cell-percentage.d.ts +2 -2
- package/dist/components/table/snice-cell-percentage.js +9 -9
- package/dist/components/table/snice-cell-percentage.js.map +1 -1
- package/dist/components/table/snice-cell-phone.d.ts +2 -2
- package/dist/components/table/snice-cell-phone.js +9 -9
- package/dist/components/table/snice-cell-phone.js.map +1 -1
- package/dist/components/table/snice-cell-progress.d.ts +2 -2
- package/dist/components/table/snice-cell-progress.js +9 -9
- package/dist/components/table/snice-cell-progress.js.map +1 -1
- package/dist/components/table/snice-cell-rating.d.ts +2 -2
- package/dist/components/table/snice-cell-rating.js +9 -9
- package/dist/components/table/snice-cell-rating.js.map +1 -1
- package/dist/components/table/snice-cell-sparkline.d.ts +2 -2
- package/dist/components/table/snice-cell-sparkline.js +9 -9
- package/dist/components/table/snice-cell-sparkline.js.map +1 -1
- package/dist/components/table/snice-cell-status.d.ts +2 -2
- package/dist/components/table/snice-cell-status.js +9 -9
- package/dist/components/table/snice-cell-status.js.map +1 -1
- package/dist/components/table/snice-cell-tag.d.ts +2 -2
- package/dist/components/table/snice-cell-tag.js +9 -9
- package/dist/components/table/snice-cell-tag.js.map +1 -1
- package/dist/components/table/snice-cell-text.d.ts +2 -2
- package/dist/components/table/snice-cell-text.js +9 -9
- package/dist/components/table/snice-cell-text.js.map +1 -1
- package/dist/components/table/snice-cell.d.ts +2 -2
- package/dist/components/table/snice-cell.js +9 -9
- package/dist/components/table/snice-cell.js.map +1 -1
- package/dist/components/table/snice-column.d.ts +1 -1
- package/dist/components/table/snice-column.js +4 -4
- package/dist/components/table/snice-column.js.map +1 -1
- package/dist/components/table/snice-header.d.ts +2 -2
- package/dist/components/table/snice-header.js +9 -9
- package/dist/components/table/snice-header.js.map +1 -1
- package/dist/components/table/snice-progress.d.ts +2 -2
- package/dist/components/table/snice-progress.js +8 -8
- package/dist/components/table/snice-progress.js.map +1 -1
- package/dist/components/table/snice-rating.d.ts +2 -2
- package/dist/components/table/snice-rating.js +8 -8
- package/dist/components/table/snice-rating.js.map +1 -1
- package/dist/components/table/snice-row.d.ts +2 -2
- package/dist/components/table/snice-row.js +10 -10
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +2 -3
- package/dist/components/table/snice-table.js +9 -14
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
- package/dist/components/tabs/snice-tab-panel.js +9 -9
- package/dist/components/tabs/snice-tab-panel.js.map +1 -1
- package/dist/components/tabs/snice-tab.d.ts +2 -2
- package/dist/components/tabs/snice-tab.js +9 -9
- package/dist/components/tabs/snice-tab.js.map +1 -1
- package/dist/components/tabs/snice-tabs.d.ts +2 -2
- package/dist/components/tabs/snice-tabs.js +9 -9
- package/dist/components/tabs/snice-tabs.js.map +1 -1
- package/dist/components/terminal/snice-terminal.types.d.ts +133 -0
- package/dist/components/textarea/snice-textarea.d.ts +52 -0
- package/dist/components/textarea/snice-textarea.js +407 -0
- package/dist/components/textarea/snice-textarea.js.map +1 -0
- package/dist/components/textarea/snice-textarea.types.d.ts +30 -0
- package/dist/components/timeline/snice-timeline.d.ts +11 -0
- package/dist/components/timeline/snice-timeline.js +112 -0
- package/dist/components/timeline/snice-timeline.js.map +1 -0
- package/dist/components/timeline/snice-timeline.types.d.ts +16 -0
- package/dist/components/toast/snice-toast-container.d.ts +2 -2
- package/dist/components/toast/snice-toast-container.js +8 -8
- package/dist/components/toast/snice-toast-container.js.map +1 -1
- package/dist/components/toast/snice-toast.d.ts +2 -2
- package/dist/components/toast/snice-toast.js +8 -8
- package/dist/components/toast/snice-toast.js.map +1 -1
- package/dist/components/tooltip/snice-tooltip.d.ts +2 -2
- package/dist/components/tooltip/snice-tooltip.js +10 -10
- package/dist/components/tooltip/snice-tooltip.js.map +1 -1
- package/dist/components/tree/snice-tree-item.d.ts +35 -0
- package/dist/components/tree/snice-tree-item.js +301 -0
- package/dist/components/tree/snice-tree-item.js.map +1 -0
- package/dist/components/tree/snice-tree-item.types.d.ts +30 -0
- package/dist/components/tree/snice-tree.d.ts +45 -0
- package/dist/components/tree/snice-tree.js +390 -0
- package/dist/components/tree/snice-tree.js.map +1 -0
- package/dist/components/tree/snice-tree.types.d.ts +65 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.d.ts +31 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js +160 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.types.d.ts +19 -0
- package/dist/index.cjs +125 -158
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +125 -158
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +125 -158
- package/dist/index.iife.js.map +1 -1
- package/dist/parts.d.ts +13 -16
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/template.d.ts +0 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/README.md +10 -1
- package/docs/ai/components/actions.md +81 -0
- package/docs/ai/components/audio-recorder.md +97 -0
- package/docs/ai/components/banner.md +84 -0
- package/docs/ai/components/calendar.md +95 -0
- package/docs/ai/components/camera.md +130 -0
- package/docs/ai/components/carousel.md +49 -0
- package/docs/ai/components/chart.md +160 -0
- package/docs/ai/components/chat.md +189 -0
- package/docs/ai/components/code-block.md +32 -0
- package/docs/ai/components/color-display.md +48 -0
- package/docs/ai/components/color-picker.md +75 -0
- package/docs/ai/components/command-palette.md +117 -0
- package/docs/ai/components/doc.md +154 -0
- package/docs/ai/components/draw.md +140 -0
- package/docs/ai/components/empty-state.md +72 -0
- package/docs/ai/components/file-upload.md +93 -0
- package/docs/ai/components/gantt.md +95 -0
- package/docs/ai/components/image.md +60 -0
- package/docs/ai/components/kanban.md +102 -0
- package/docs/ai/components/kpi.md +158 -0
- package/docs/ai/components/layout.md +261 -0
- package/docs/ai/components/link.md +77 -0
- package/docs/ai/components/list.md +50 -0
- package/docs/ai/components/location.md +75 -0
- package/docs/ai/components/menu.md +114 -0
- package/docs/ai/components/popover.md +70 -0
- package/docs/ai/components/qr-code.md +106 -0
- package/docs/ai/components/slider.md +87 -0
- package/docs/ai/components/sparkline.md +168 -0
- package/docs/ai/components/spinner.md +47 -0
- package/docs/ai/components/split-pane.md +71 -0
- package/docs/ai/components/stat.md +29 -0
- package/docs/ai/components/stepper.md +216 -0
- package/docs/ai/components/textarea.md +87 -0
- package/docs/ai/components/timeline.md +77 -0
- package/docs/ai/components/tree.md +191 -0
- package/docs/ai/components/virtual-scroller.md +71 -0
- package/docs/components/actions.md +317 -0
- package/docs/components/alert.md +540 -0
- package/docs/components/audio-recorder.md +152 -0
- package/docs/components/badge.md +593 -0
- package/docs/components/banner.md +106 -0
- package/docs/components/breadcrumbs.md +568 -0
- package/docs/components/button.md +648 -0
- package/docs/components/calendar.md +397 -0
- package/docs/components/camera.md +383 -0
- package/docs/components/card.md +778 -0
- package/docs/components/carousel.md +63 -0
- package/docs/components/chart.md +526 -0
- package/docs/components/chat.md +482 -0
- package/docs/components/checkbox.md +714 -0
- package/docs/components/chip.md +670 -0
- package/docs/components/code-block.md +49 -0
- package/docs/components/color-display.md +96 -0
- package/docs/components/color-picker.md +81 -0
- package/docs/components/command-palette.md +159 -0
- package/docs/components/doc.md +357 -0
- package/docs/components/draw.md +307 -0
- package/docs/components/empty-state.md +79 -0
- package/docs/components/file-upload.md +263 -0
- package/docs/components/gantt.md +347 -0
- package/docs/components/image.md +110 -0
- package/docs/components/kanban.md +410 -0
- package/docs/components/kpi.md +251 -0
- package/docs/components/link.md +229 -0
- package/docs/components/list.md +65 -0
- package/docs/components/location.md +369 -0
- package/docs/components/menu.md +633 -0
- package/docs/components/popover.md +333 -0
- package/docs/components/qr-code.md +464 -0
- package/docs/components/slider.md +297 -0
- package/docs/components/sparkline.md +293 -0
- package/docs/components/spinner.md +63 -0
- package/docs/components/split-pane.md +315 -0
- package/docs/components/stat.md +45 -0
- package/docs/components/stepper.md +410 -0
- package/docs/components/textarea.md +235 -0
- package/docs/components/timeline.md +192 -0
- package/docs/components/tree.md +536 -0
- package/docs/components/virtual-scroller.md +298 -0
- package/package.json +2 -1
- package/dist/components/snice-cell-BLFVdxPp.js +0 -4
- package/dist/components/snice-cell-BLFVdxPp.js.map +0 -1
|
@@ -0,0 +1,714 @@
|
|
|
1
|
+
# Checkbox Component
|
|
2
|
+
|
|
3
|
+
The checkbox component provides a form-associated checkbox input with support for checked, indeterminate, and invalid states, multiple sizes, and full keyboard accessibility.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
- [Basic Usage](#basic-usage)
|
|
7
|
+
- [Properties](#properties)
|
|
8
|
+
- [Methods](#methods)
|
|
9
|
+
- [Events](#events)
|
|
10
|
+
- [Examples](#examples)
|
|
11
|
+
|
|
12
|
+
## Basic Usage
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<snice-checkbox label="Accept terms and conditions"></snice-checkbox>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import 'snice/components/checkbox/snice-checkbox';
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Properties
|
|
23
|
+
|
|
24
|
+
| Property | Type | Default | Description |
|
|
25
|
+
|----------|------|---------|-------------|
|
|
26
|
+
| `checked` | `boolean` | `false` | Whether the checkbox is checked |
|
|
27
|
+
| `indeterminate` | `boolean` | `false` | Show indeterminate (partial) state |
|
|
28
|
+
| `disabled` | `boolean` | `false` | Disable the checkbox |
|
|
29
|
+
| `required` | `boolean` | `false` | Mark as required field |
|
|
30
|
+
| `invalid` | `boolean` | `false` | Show invalid state styling |
|
|
31
|
+
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Checkbox size |
|
|
32
|
+
| `name` | `string` | `''` | Form field name |
|
|
33
|
+
| `value` | `string` | `'on'` | Form field value when checked |
|
|
34
|
+
| `label` | `string` | `''` | Label text |
|
|
35
|
+
|
|
36
|
+
## Methods
|
|
37
|
+
|
|
38
|
+
#### `focus(): void`
|
|
39
|
+
Focus the checkbox programmatically.
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
checkbox.focus();
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### `blur(): void`
|
|
46
|
+
Remove focus from the checkbox.
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
checkbox.blur();
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### `click(): void`
|
|
53
|
+
Programmatically click the checkbox.
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
checkbox.click();
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Events
|
|
60
|
+
|
|
61
|
+
#### `change`
|
|
62
|
+
Fired when the checkbox state changes.
|
|
63
|
+
|
|
64
|
+
**Event Detail:**
|
|
65
|
+
```typescript
|
|
66
|
+
{
|
|
67
|
+
checked: boolean;
|
|
68
|
+
indeterminate: boolean;
|
|
69
|
+
checkbox: SniceCheckboxElement;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Usage:**
|
|
74
|
+
```typescript
|
|
75
|
+
checkbox.addEventListener('change', (e) => {
|
|
76
|
+
console.log('Checked:', e.detail.checked);
|
|
77
|
+
console.log('Indeterminate:', e.detail.indeterminate);
|
|
78
|
+
});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Examples
|
|
82
|
+
|
|
83
|
+
### Basic Checkbox
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<!-- Unchecked checkbox -->
|
|
87
|
+
<snice-checkbox label="Subscribe to newsletter"></snice-checkbox>
|
|
88
|
+
|
|
89
|
+
<!-- Checked checkbox -->
|
|
90
|
+
<snice-checkbox label="I agree to the terms" checked></snice-checkbox>
|
|
91
|
+
|
|
92
|
+
<!-- Checkbox without label -->
|
|
93
|
+
<snice-checkbox></snice-checkbox>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Checkbox Sizes
|
|
97
|
+
|
|
98
|
+
```html
|
|
99
|
+
<snice-checkbox label="Small checkbox" size="small"></snice-checkbox>
|
|
100
|
+
<snice-checkbox label="Medium checkbox" size="medium"></snice-checkbox>
|
|
101
|
+
<snice-checkbox label="Large checkbox" size="large"></snice-checkbox>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Checkbox States
|
|
105
|
+
|
|
106
|
+
```html
|
|
107
|
+
<!-- Checked -->
|
|
108
|
+
<snice-checkbox label="Checked" checked></snice-checkbox>
|
|
109
|
+
|
|
110
|
+
<!-- Indeterminate (partial selection) -->
|
|
111
|
+
<snice-checkbox label="Indeterminate" indeterminate></snice-checkbox>
|
|
112
|
+
|
|
113
|
+
<!-- Disabled -->
|
|
114
|
+
<snice-checkbox label="Disabled" disabled></snice-checkbox>
|
|
115
|
+
|
|
116
|
+
<!-- Disabled and checked -->
|
|
117
|
+
<snice-checkbox label="Disabled checked" checked disabled></snice-checkbox>
|
|
118
|
+
|
|
119
|
+
<!-- Required -->
|
|
120
|
+
<snice-checkbox label="Required field" required></snice-checkbox>
|
|
121
|
+
|
|
122
|
+
<!-- Invalid -->
|
|
123
|
+
<snice-checkbox label="Invalid" invalid></snice-checkbox>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Form Integration
|
|
127
|
+
|
|
128
|
+
```html
|
|
129
|
+
<form id="signup-form">
|
|
130
|
+
<snice-checkbox
|
|
131
|
+
name="terms"
|
|
132
|
+
value="accepted"
|
|
133
|
+
label="I accept the terms and conditions"
|
|
134
|
+
required>
|
|
135
|
+
</snice-checkbox>
|
|
136
|
+
|
|
137
|
+
<snice-checkbox
|
|
138
|
+
name="newsletter"
|
|
139
|
+
value="yes"
|
|
140
|
+
label="Subscribe to newsletter">
|
|
141
|
+
</snice-checkbox>
|
|
142
|
+
|
|
143
|
+
<snice-checkbox
|
|
144
|
+
name="marketing"
|
|
145
|
+
value="yes"
|
|
146
|
+
label="Receive marketing emails">
|
|
147
|
+
</snice-checkbox>
|
|
148
|
+
|
|
149
|
+
<button type="submit">Sign Up</button>
|
|
150
|
+
</form>
|
|
151
|
+
|
|
152
|
+
<script type="module">
|
|
153
|
+
import 'snice/components/checkbox/snice-checkbox';
|
|
154
|
+
|
|
155
|
+
const form = document.getElementById('signup-form');
|
|
156
|
+
|
|
157
|
+
form.addEventListener('submit', (e) => {
|
|
158
|
+
e.preventDefault();
|
|
159
|
+
const formData = new FormData(form);
|
|
160
|
+
|
|
161
|
+
console.log('Terms accepted:', formData.get('terms'));
|
|
162
|
+
console.log('Newsletter:', formData.get('newsletter'));
|
|
163
|
+
console.log('Marketing:', formData.get('marketing'));
|
|
164
|
+
});
|
|
165
|
+
</script>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Select All Pattern
|
|
169
|
+
|
|
170
|
+
```html
|
|
171
|
+
<snice-checkbox id="select-all" label="Select all items"></snice-checkbox>
|
|
172
|
+
|
|
173
|
+
<div style="margin-left: 2rem;">
|
|
174
|
+
<snice-checkbox class="item-checkbox" label="Item 1" value="item1"></snice-checkbox>
|
|
175
|
+
<snice-checkbox class="item-checkbox" label="Item 2" value="item2"></snice-checkbox>
|
|
176
|
+
<snice-checkbox class="item-checkbox" label="Item 3" value="item3"></snice-checkbox>
|
|
177
|
+
<snice-checkbox class="item-checkbox" label="Item 4" value="item4"></snice-checkbox>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
<script type="module">
|
|
181
|
+
import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
|
|
182
|
+
|
|
183
|
+
const selectAll = document.getElementById('select-all') as SniceCheckboxElement;
|
|
184
|
+
const items = Array.from(document.querySelectorAll('.item-checkbox')) as SniceCheckboxElement[];
|
|
185
|
+
|
|
186
|
+
// Handle select all change
|
|
187
|
+
selectAll.addEventListener('change', (e) => {
|
|
188
|
+
items.forEach(item => {
|
|
189
|
+
item.checked = e.detail.checked;
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Handle individual item change
|
|
194
|
+
items.forEach(item => {
|
|
195
|
+
item.addEventListener('change', () => {
|
|
196
|
+
updateSelectAllState();
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
function updateSelectAllState() {
|
|
201
|
+
const checkedCount = items.filter(item => item.checked).length;
|
|
202
|
+
|
|
203
|
+
if (checkedCount === 0) {
|
|
204
|
+
selectAll.checked = false;
|
|
205
|
+
selectAll.indeterminate = false;
|
|
206
|
+
} else if (checkedCount === items.length) {
|
|
207
|
+
selectAll.checked = true;
|
|
208
|
+
selectAll.indeterminate = false;
|
|
209
|
+
} else {
|
|
210
|
+
selectAll.checked = false;
|
|
211
|
+
selectAll.indeterminate = true;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Initialize state
|
|
216
|
+
updateSelectAllState();
|
|
217
|
+
</script>
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Checkbox Group
|
|
221
|
+
|
|
222
|
+
```html
|
|
223
|
+
<fieldset>
|
|
224
|
+
<legend>Select your interests</legend>
|
|
225
|
+
|
|
226
|
+
<div style="display: flex; flex-direction: column; gap: 0.5rem;">
|
|
227
|
+
<snice-checkbox name="interests" value="technology" label="Technology"></snice-checkbox>
|
|
228
|
+
<snice-checkbox name="interests" value="design" label="Design"></snice-checkbox>
|
|
229
|
+
<snice-checkbox name="interests" value="business" label="Business"></snice-checkbox>
|
|
230
|
+
<snice-checkbox name="interests" value="marketing" label="Marketing"></snice-checkbox>
|
|
231
|
+
<snice-checkbox name="interests" value="finance" label="Finance"></snice-checkbox>
|
|
232
|
+
</div>
|
|
233
|
+
</fieldset>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Agreement Checkboxes
|
|
237
|
+
|
|
238
|
+
```html
|
|
239
|
+
<form id="agreement-form">
|
|
240
|
+
<div style="display: flex; flex-direction: column; gap: 1rem;">
|
|
241
|
+
<snice-checkbox
|
|
242
|
+
id="terms-cb"
|
|
243
|
+
name="terms"
|
|
244
|
+
label="I have read and agree to the Terms of Service"
|
|
245
|
+
required>
|
|
246
|
+
</snice-checkbox>
|
|
247
|
+
|
|
248
|
+
<snice-checkbox
|
|
249
|
+
id="privacy-cb"
|
|
250
|
+
name="privacy"
|
|
251
|
+
label="I have read and agree to the Privacy Policy"
|
|
252
|
+
required>
|
|
253
|
+
</snice-checkbox>
|
|
254
|
+
|
|
255
|
+
<snice-checkbox
|
|
256
|
+
id="age-cb"
|
|
257
|
+
name="age"
|
|
258
|
+
label="I confirm that I am at least 18 years old"
|
|
259
|
+
required>
|
|
260
|
+
</snice-checkbox>
|
|
261
|
+
|
|
262
|
+
<snice-checkbox
|
|
263
|
+
name="updates"
|
|
264
|
+
label="I want to receive product updates and news (optional)">
|
|
265
|
+
</snice-checkbox>
|
|
266
|
+
</div>
|
|
267
|
+
|
|
268
|
+
<button type="submit" style="margin-top: 1rem;">Continue</button>
|
|
269
|
+
</form>
|
|
270
|
+
|
|
271
|
+
<script type="module">
|
|
272
|
+
import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
|
|
273
|
+
|
|
274
|
+
const form = document.getElementById('agreement-form');
|
|
275
|
+
const requiredCheckboxes = [
|
|
276
|
+
document.getElementById('terms-cb'),
|
|
277
|
+
document.getElementById('privacy-cb'),
|
|
278
|
+
document.getElementById('age-cb')
|
|
279
|
+
] as SniceCheckboxElement[];
|
|
280
|
+
|
|
281
|
+
form.addEventListener('submit', (e) => {
|
|
282
|
+
e.preventDefault();
|
|
283
|
+
|
|
284
|
+
// Validate required checkboxes
|
|
285
|
+
let allValid = true;
|
|
286
|
+
requiredCheckboxes.forEach(cb => {
|
|
287
|
+
if (!cb.checked) {
|
|
288
|
+
cb.invalid = true;
|
|
289
|
+
allValid = false;
|
|
290
|
+
} else {
|
|
291
|
+
cb.invalid = false;
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
if (allValid) {
|
|
296
|
+
console.log('All agreements accepted');
|
|
297
|
+
// Submit form
|
|
298
|
+
} else {
|
|
299
|
+
alert('Please accept all required agreements');
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
// Clear invalid state when checked
|
|
304
|
+
requiredCheckboxes.forEach(cb => {
|
|
305
|
+
cb.addEventListener('change', () => {
|
|
306
|
+
if (cb.checked) {
|
|
307
|
+
cb.invalid = false;
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
</script>
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Settings Checkboxes
|
|
315
|
+
|
|
316
|
+
```html
|
|
317
|
+
<style>
|
|
318
|
+
.settings-section {
|
|
319
|
+
margin-bottom: 2rem;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.settings-section h3 {
|
|
323
|
+
margin-bottom: 1rem;
|
|
324
|
+
font-size: 1.125rem;
|
|
325
|
+
font-weight: 600;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.checkbox-list {
|
|
329
|
+
display: flex;
|
|
330
|
+
flex-direction: column;
|
|
331
|
+
gap: 0.75rem;
|
|
332
|
+
}
|
|
333
|
+
</style>
|
|
334
|
+
|
|
335
|
+
<div class="settings-section">
|
|
336
|
+
<h3>Notification Settings</h3>
|
|
337
|
+
<div class="checkbox-list">
|
|
338
|
+
<snice-checkbox
|
|
339
|
+
name="email-notifications"
|
|
340
|
+
label="Email notifications"
|
|
341
|
+
checked>
|
|
342
|
+
</snice-checkbox>
|
|
343
|
+
<snice-checkbox
|
|
344
|
+
name="push-notifications"
|
|
345
|
+
label="Push notifications"
|
|
346
|
+
checked>
|
|
347
|
+
</snice-checkbox>
|
|
348
|
+
<snice-checkbox
|
|
349
|
+
name="sms-notifications"
|
|
350
|
+
label="SMS notifications">
|
|
351
|
+
</snice-checkbox>
|
|
352
|
+
</div>
|
|
353
|
+
</div>
|
|
354
|
+
|
|
355
|
+
<div class="settings-section">
|
|
356
|
+
<h3>Privacy Settings</h3>
|
|
357
|
+
<div class="checkbox-list">
|
|
358
|
+
<snice-checkbox
|
|
359
|
+
name="profile-public"
|
|
360
|
+
label="Make my profile public">
|
|
361
|
+
</snice-checkbox>
|
|
362
|
+
<snice-checkbox
|
|
363
|
+
name="show-email"
|
|
364
|
+
label="Show my email address">
|
|
365
|
+
</snice-checkbox>
|
|
366
|
+
<snice-checkbox
|
|
367
|
+
name="show-activity"
|
|
368
|
+
label="Show my activity status"
|
|
369
|
+
checked>
|
|
370
|
+
</snice-checkbox>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Checkbox with Description
|
|
376
|
+
|
|
377
|
+
```html
|
|
378
|
+
<style>
|
|
379
|
+
.checkbox-with-description {
|
|
380
|
+
display: flex;
|
|
381
|
+
flex-direction: column;
|
|
382
|
+
gap: 1rem;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.checkbox-item {
|
|
386
|
+
display: flex;
|
|
387
|
+
align-items: start;
|
|
388
|
+
gap: 0.75rem;
|
|
389
|
+
padding: 1rem;
|
|
390
|
+
border: 1px solid #e5e7eb;
|
|
391
|
+
border-radius: 0.5rem;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.checkbox-item:hover {
|
|
395
|
+
background: #f9fafb;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.checkbox-content {
|
|
399
|
+
flex: 1;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.checkbox-content h4 {
|
|
403
|
+
margin: 0 0 0.25rem;
|
|
404
|
+
font-weight: 600;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.checkbox-content p {
|
|
408
|
+
margin: 0;
|
|
409
|
+
color: #6b7280;
|
|
410
|
+
font-size: 0.875rem;
|
|
411
|
+
}
|
|
412
|
+
</style>
|
|
413
|
+
|
|
414
|
+
<div class="checkbox-with-description">
|
|
415
|
+
<div class="checkbox-item">
|
|
416
|
+
<snice-checkbox name="feature1" value="analytics"></snice-checkbox>
|
|
417
|
+
<div class="checkbox-content">
|
|
418
|
+
<h4>Advanced Analytics</h4>
|
|
419
|
+
<p>Get detailed insights into your data with customizable dashboards and reports.</p>
|
|
420
|
+
</div>
|
|
421
|
+
</div>
|
|
422
|
+
|
|
423
|
+
<div class="checkbox-item">
|
|
424
|
+
<snice-checkbox name="feature2" value="api"></snice-checkbox>
|
|
425
|
+
<div class="checkbox-content">
|
|
426
|
+
<h4>API Access</h4>
|
|
427
|
+
<p>Integrate with your applications using our comprehensive REST API.</p>
|
|
428
|
+
</div>
|
|
429
|
+
</div>
|
|
430
|
+
|
|
431
|
+
<div class="checkbox-item">
|
|
432
|
+
<snice-checkbox name="feature3" value="support"></snice-checkbox>
|
|
433
|
+
<div class="checkbox-content">
|
|
434
|
+
<h4>Priority Support</h4>
|
|
435
|
+
<p>Get help when you need it with 24/7 priority email and chat support.</p>
|
|
436
|
+
</div>
|
|
437
|
+
</div>
|
|
438
|
+
</div>
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Task List
|
|
442
|
+
|
|
443
|
+
```html
|
|
444
|
+
<style>
|
|
445
|
+
.task-list {
|
|
446
|
+
max-width: 500px;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.task-item {
|
|
450
|
+
display: flex;
|
|
451
|
+
align-items: center;
|
|
452
|
+
gap: 0.75rem;
|
|
453
|
+
padding: 0.75rem;
|
|
454
|
+
border-bottom: 1px solid #e5e7eb;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.task-item.completed {
|
|
458
|
+
opacity: 0.6;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.task-item.completed .task-text {
|
|
462
|
+
text-decoration: line-through;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.task-text {
|
|
466
|
+
flex: 1;
|
|
467
|
+
}
|
|
468
|
+
</style>
|
|
469
|
+
|
|
470
|
+
<div class="task-list">
|
|
471
|
+
<h3>Today's Tasks</h3>
|
|
472
|
+
|
|
473
|
+
<div class="task-item">
|
|
474
|
+
<snice-checkbox class="task-cb" data-task="1"></snice-checkbox>
|
|
475
|
+
<span class="task-text">Review pull requests</span>
|
|
476
|
+
</div>
|
|
477
|
+
|
|
478
|
+
<div class="task-item">
|
|
479
|
+
<snice-checkbox class="task-cb" data-task="2"></snice-checkbox>
|
|
480
|
+
<span class="task-text">Update documentation</span>
|
|
481
|
+
</div>
|
|
482
|
+
|
|
483
|
+
<div class="task-item completed">
|
|
484
|
+
<snice-checkbox class="task-cb" data-task="3" checked></snice-checkbox>
|
|
485
|
+
<span class="task-text">Fix bug in authentication</span>
|
|
486
|
+
</div>
|
|
487
|
+
|
|
488
|
+
<div class="task-item">
|
|
489
|
+
<snice-checkbox class="task-cb" data-task="4"></snice-checkbox>
|
|
490
|
+
<span class="task-text">Deploy to production</span>
|
|
491
|
+
</div>
|
|
492
|
+
</div>
|
|
493
|
+
|
|
494
|
+
<script type="module">
|
|
495
|
+
import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
|
|
496
|
+
|
|
497
|
+
const taskCheckboxes = document.querySelectorAll('.task-cb') as NodeListOf<SniceCheckboxElement>;
|
|
498
|
+
|
|
499
|
+
taskCheckboxes.forEach(cb => {
|
|
500
|
+
cb.addEventListener('change', (e) => {
|
|
501
|
+
const taskItem = cb.closest('.task-item');
|
|
502
|
+
if (e.detail.checked) {
|
|
503
|
+
taskItem?.classList.add('completed');
|
|
504
|
+
} else {
|
|
505
|
+
taskItem?.classList.remove('completed');
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
});
|
|
509
|
+
</script>
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
### Filter Checkboxes
|
|
513
|
+
|
|
514
|
+
```html
|
|
515
|
+
<style>
|
|
516
|
+
.filter-panel {
|
|
517
|
+
max-width: 250px;
|
|
518
|
+
padding: 1rem;
|
|
519
|
+
background: #f9fafb;
|
|
520
|
+
border-radius: 0.5rem;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.filter-section {
|
|
524
|
+
margin-bottom: 1.5rem;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.filter-section:last-child {
|
|
528
|
+
margin-bottom: 0;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.filter-title {
|
|
532
|
+
font-weight: 600;
|
|
533
|
+
margin-bottom: 0.75rem;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.filter-options {
|
|
537
|
+
display: flex;
|
|
538
|
+
flex-direction: column;
|
|
539
|
+
gap: 0.5rem;
|
|
540
|
+
}
|
|
541
|
+
</style>
|
|
542
|
+
|
|
543
|
+
<div class="filter-panel">
|
|
544
|
+
<div class="filter-section">
|
|
545
|
+
<div class="filter-title">Category</div>
|
|
546
|
+
<div class="filter-options">
|
|
547
|
+
<snice-checkbox name="category" value="electronics" label="Electronics" size="small"></snice-checkbox>
|
|
548
|
+
<snice-checkbox name="category" value="clothing" label="Clothing" size="small"></snice-checkbox>
|
|
549
|
+
<snice-checkbox name="category" value="books" label="Books" size="small"></snice-checkbox>
|
|
550
|
+
<snice-checkbox name="category" value="home" label="Home & Garden" size="small"></snice-checkbox>
|
|
551
|
+
</div>
|
|
552
|
+
</div>
|
|
553
|
+
|
|
554
|
+
<div class="filter-section">
|
|
555
|
+
<div class="filter-title">Price Range</div>
|
|
556
|
+
<div class="filter-options">
|
|
557
|
+
<snice-checkbox name="price" value="under-25" label="Under $25" size="small"></snice-checkbox>
|
|
558
|
+
<snice-checkbox name="price" value="25-50" label="$25 - $50" size="small"></snice-checkbox>
|
|
559
|
+
<snice-checkbox name="price" value="50-100" label="$50 - $100" size="small"></snice-checkbox>
|
|
560
|
+
<snice-checkbox name="price" value="over-100" label="Over $100" size="small"></snice-checkbox>
|
|
561
|
+
</div>
|
|
562
|
+
</div>
|
|
563
|
+
|
|
564
|
+
<div class="filter-section">
|
|
565
|
+
<div class="filter-title">Features</div>
|
|
566
|
+
<div class="filter-options">
|
|
567
|
+
<snice-checkbox name="features" value="free-shipping" label="Free Shipping" size="small"></snice-checkbox>
|
|
568
|
+
<snice-checkbox name="features" value="on-sale" label="On Sale" size="small"></snice-checkbox>
|
|
569
|
+
<snice-checkbox name="features" value="new" label="New Arrivals" size="small"></snice-checkbox>
|
|
570
|
+
</div>
|
|
571
|
+
</div>
|
|
572
|
+
</div>
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
### Dynamic Checkbox Creation
|
|
576
|
+
|
|
577
|
+
```html
|
|
578
|
+
<div id="permissions-container"></div>
|
|
579
|
+
|
|
580
|
+
<script type="module">
|
|
581
|
+
import 'snice/components/checkbox/snice-checkbox';
|
|
582
|
+
|
|
583
|
+
const permissions = [
|
|
584
|
+
{ name: 'read', label: 'Read', checked: true },
|
|
585
|
+
{ name: 'write', label: 'Write', checked: true },
|
|
586
|
+
{ name: 'delete', label: 'Delete', checked: false },
|
|
587
|
+
{ name: 'admin', label: 'Administrator', checked: false }
|
|
588
|
+
];
|
|
589
|
+
|
|
590
|
+
const container = document.getElementById('permissions-container');
|
|
591
|
+
|
|
592
|
+
permissions.forEach(perm => {
|
|
593
|
+
const checkbox = document.createElement('snice-checkbox');
|
|
594
|
+
checkbox.name = 'permissions';
|
|
595
|
+
checkbox.value = perm.name;
|
|
596
|
+
checkbox.label = perm.label;
|
|
597
|
+
checkbox.checked = perm.checked;
|
|
598
|
+
|
|
599
|
+
checkbox.addEventListener('change', (e) => {
|
|
600
|
+
console.log(`${perm.label} permission:`, e.detail.checked);
|
|
601
|
+
});
|
|
602
|
+
|
|
603
|
+
container.appendChild(checkbox);
|
|
604
|
+
});
|
|
605
|
+
</script>
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
### Validation Example
|
|
609
|
+
|
|
610
|
+
```html
|
|
611
|
+
<form id="validation-form">
|
|
612
|
+
<snice-checkbox
|
|
613
|
+
id="consent-cb"
|
|
614
|
+
name="consent"
|
|
615
|
+
label="I consent to data processing"
|
|
616
|
+
required>
|
|
617
|
+
</snice-checkbox>
|
|
618
|
+
|
|
619
|
+
<div id="error-message" style="color: #ef4444; font-size: 0.875rem; margin-top: 0.5rem; display: none;">
|
|
620
|
+
You must consent to continue
|
|
621
|
+
</div>
|
|
622
|
+
|
|
623
|
+
<button type="submit" style="margin-top: 1rem;">Submit</button>
|
|
624
|
+
</form>
|
|
625
|
+
|
|
626
|
+
<script type="module">
|
|
627
|
+
import type { SniceCheckboxElement } from 'snice/components/checkbox/snice-checkbox.types';
|
|
628
|
+
|
|
629
|
+
const form = document.getElementById('validation-form');
|
|
630
|
+
const checkbox = document.getElementById('consent-cb') as SniceCheckboxElement;
|
|
631
|
+
const errorMessage = document.getElementById('error-message');
|
|
632
|
+
|
|
633
|
+
form.addEventListener('submit', (e) => {
|
|
634
|
+
e.preventDefault();
|
|
635
|
+
|
|
636
|
+
if (!checkbox.checked) {
|
|
637
|
+
checkbox.invalid = true;
|
|
638
|
+
errorMessage.style.display = 'block';
|
|
639
|
+
} else {
|
|
640
|
+
checkbox.invalid = false;
|
|
641
|
+
errorMessage.style.display = 'none';
|
|
642
|
+
console.log('Form submitted');
|
|
643
|
+
}
|
|
644
|
+
});
|
|
645
|
+
|
|
646
|
+
checkbox.addEventListener('change', () => {
|
|
647
|
+
if (checkbox.checked) {
|
|
648
|
+
checkbox.invalid = false;
|
|
649
|
+
errorMessage.style.display = 'none';
|
|
650
|
+
}
|
|
651
|
+
});
|
|
652
|
+
</script>
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
## Accessibility
|
|
656
|
+
|
|
657
|
+
- **Form-associated**: Full form integration as native element
|
|
658
|
+
- **Keyboard support**: Space to toggle, Tab to navigate
|
|
659
|
+
- **ARIA attributes**: Proper `aria-checked` (including "mixed" for indeterminate)
|
|
660
|
+
- **Screen reader friendly**: Label association and state announcements
|
|
661
|
+
- **Focus indicators**: Clear focus states for keyboard navigation
|
|
662
|
+
- **Invalid state**: `aria-invalid` for validation errors
|
|
663
|
+
|
|
664
|
+
## Browser Support
|
|
665
|
+
|
|
666
|
+
- Modern browsers (Chrome, Firefox, Safari, Edge)
|
|
667
|
+
- Requires Custom Elements v1, Shadow DOM, and Form-Associated Custom Elements support
|
|
668
|
+
|
|
669
|
+
## Best Practices
|
|
670
|
+
|
|
671
|
+
1. **Always provide labels**: Use the `label` property or wrap in a label element
|
|
672
|
+
2. **Use indeterminate appropriately**: For partial selections in hierarchical lists
|
|
673
|
+
3. **Validate required fields**: Show invalid state and error messages
|
|
674
|
+
4. **Group related checkboxes**: Use fieldsets for checkbox groups
|
|
675
|
+
5. **Make clickable area large**: Ensure label is clickable, not just the box
|
|
676
|
+
6. **Show validation feedback**: Indicate errors clearly near the checkbox
|
|
677
|
+
7. **Use appropriate sizes**: Match checkbox size to surrounding content
|
|
678
|
+
8. **Avoid too many checkboxes**: Consider alternative UI for long lists
|
|
679
|
+
9. **Test keyboard navigation**: Ensure all checkboxes work without a mouse
|
|
680
|
+
10. **Handle form submission**: Process checkbox values correctly
|
|
681
|
+
|
|
682
|
+
## Common Patterns
|
|
683
|
+
|
|
684
|
+
### Single Checkbox
|
|
685
|
+
```html
|
|
686
|
+
<snice-checkbox label="I agree to the terms" required></snice-checkbox>
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
### Checkbox Group
|
|
690
|
+
```html
|
|
691
|
+
<snice-checkbox name="option" value="1" label="Option 1"></snice-checkbox>
|
|
692
|
+
<snice-checkbox name="option" value="2" label="Option 2"></snice-checkbox>
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
### Select All
|
|
696
|
+
```html
|
|
697
|
+
<snice-checkbox id="select-all" label="Select all" indeterminate></snice-checkbox>
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
### Required Field
|
|
701
|
+
```html
|
|
702
|
+
<snice-checkbox label="Required" required invalid></snice-checkbox>
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
## Form Integration
|
|
706
|
+
|
|
707
|
+
The checkbox component is a form-associated custom element and works seamlessly with standard HTML forms:
|
|
708
|
+
|
|
709
|
+
```html
|
|
710
|
+
<form>
|
|
711
|
+
<snice-checkbox name="newsletter" value="yes"></snice-checkbox>
|
|
712
|
+
<!-- FormData will include: newsletter=yes when checked -->
|
|
713
|
+
</form>
|
|
714
|
+
```
|