snice 2.5.4 → 3.2.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 +537 -869
- package/bin/templates/base/src/components/counter-button.ts +13 -26
- package/bin/templates/base/src/controllers/counter-controller.ts +3 -3
- package/dist/components/accordion/snice-accordion-item.d.ts +4 -5
- package/dist/components/accordion/snice-accordion-item.js +37 -39
- package/dist/components/accordion/snice-accordion-item.js.map +1 -1
- package/dist/components/accordion/snice-accordion.d.ts +5 -11
- package/dist/components/accordion/snice-accordion.js +51 -52
- package/dist/components/accordion/snice-accordion.js.map +1 -1
- package/dist/components/alert/snice-alert.d.ts +2 -6
- package/dist/components/alert/snice-alert.js +41 -56
- package/dist/components/alert/snice-alert.js.map +1 -1
- package/dist/components/avatar/snice-avatar.d.ts +2 -6
- package/dist/components/avatar/snice-avatar.js +64 -71
- package/dist/components/avatar/snice-avatar.js.map +1 -1
- package/dist/components/badge/snice-badge.d.ts +2 -3
- package/dist/components/badge/snice-badge.js +22 -23
- 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 +5 -12
- package/dist/components/breadcrumbs/snice-breadcrumbs.js +88 -89
- package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/components/button/snice-button.d.ts +3 -7
- package/dist/components/button/snice-button.js +37 -58
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/components/card/snice-card.d.ts +5 -8
- package/dist/components/card/snice-card.js +71 -56
- package/dist/components/card/snice-card.js.map +1 -1
- package/dist/components/checkbox/snice-checkbox.d.ts +4 -13
- package/dist/components/checkbox/snice-checkbox.js +66 -137
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/chip/snice-chip.d.ts +5 -11
- package/dist/components/chip/snice-chip.js +44 -47
- package/dist/components/chip/snice-chip.js.map +1 -1
- 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/date-picker/snice-date-picker.d.ts +11 -11
- package/dist/components/date-picker/snice-date-picker.js +134 -133
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/divider/snice-divider.d.ts +2 -4
- package/dist/components/divider/snice-divider.js +14 -22
- package/dist/components/divider/snice-divider.js.map +1 -1
- package/dist/components/drawer/snice-drawer.d.ts +4 -4
- package/dist/components/drawer/snice-drawer.js +25 -19
- 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 +45 -0
- package/dist/components/file-upload/snice-file-upload.js +394 -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/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 +8 -6
- package/dist/components/input/snice-input.js +122 -105
- package/dist/components/input/snice-input.js.map +1 -1
- 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 +4 -4
- package/dist/components/layout/snice-layout-blog.js +21 -19
- 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 +16 -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 +14 -7
- package/dist/components/layout/snice-layout-centered.js.map +1 -1
- package/dist/components/layout/snice-layout-dashboard.d.ts +5 -5
- package/dist/components/layout/snice-layout-dashboard.js +38 -30
- 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 +17 -10
- package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
- package/dist/components/layout/snice-layout-landing.d.ts +4 -4
- package/dist/components/layout/snice-layout-landing.js +21 -19
- 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 +17 -6
- package/dist/components/layout/snice-layout-minimal.js.map +1 -1
- package/dist/components/layout/snice-layout-sidebar.d.ts +5 -4
- package/dist/components/layout/snice-layout-sidebar.js +42 -20
- 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 +14 -7
- package/dist/components/layout/snice-layout-split.js.map +1 -1
- package/dist/components/layout/snice-layout.d.ts +4 -4
- package/dist/components/layout/snice-layout.js +16 -10
- 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/login/snice-login.d.ts +6 -11
- package/dist/components/login/snice-login.js +97 -71
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/modal/snice-modal.d.ts +5 -9
- package/dist/components/modal/snice-modal.js +47 -78
- package/dist/components/modal/snice-modal.js.map +1 -1
- package/dist/components/nav/snice-nav.d.ts +13 -7
- package/dist/components/nav/snice-nav.js +191 -100
- package/dist/components/nav/snice-nav.js.map +1 -1
- package/dist/components/nav/snice-nav.types.d.ts +3 -3
- package/dist/components/pagination/snice-pagination.d.ts +6 -7
- package/dist/components/pagination/snice-pagination.js +94 -81
- package/dist/components/pagination/snice-pagination.js.map +1 -1
- package/dist/components/progress/snice-progress.d.ts +2 -7
- package/dist/components/progress/snice-progress.js +41 -98
- package/dist/components/progress/snice-progress.js.map +1 -1
- package/dist/components/radio/snice-radio.d.ts +4 -4
- package/dist/components/radio/snice-radio.js +52 -44
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-option.d.ts +2 -1
- package/dist/components/select/snice-option.js +12 -5
- package/dist/components/select/snice-option.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +9 -21
- package/dist/components/select/snice-select.js +98 -170
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/skeleton/snice-skeleton.d.ts +2 -6
- package/dist/components/skeleton/snice-skeleton.js +18 -49
- 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/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 +38 -26
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.d.ts +24 -0
- package/dist/components/table/snice-cell-actions.js +149 -0
- package/dist/components/table/snice-cell-actions.js.map +1 -0
- package/dist/components/table/snice-cell-boolean.d.ts +2 -2
- package/dist/components/table/snice-cell-boolean.js +13 -7
- package/dist/components/table/snice-cell-boolean.js.map +1 -1
- package/dist/components/table/snice-cell-color.d.ts +18 -0
- package/dist/components/table/snice-cell-color.js +149 -0
- package/dist/components/table/snice-cell-color.js.map +1 -0
- package/dist/components/table/snice-cell-currency.d.ts +24 -0
- package/dist/components/table/snice-cell-currency.js +235 -0
- package/dist/components/table/snice-cell-currency.js.map +1 -0
- package/dist/components/table/snice-cell-date.d.ts +2 -2
- package/dist/components/table/snice-cell-date.js +14 -8
- 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 +12 -6
- package/dist/components/table/snice-cell-duration.js.map +1 -1
- package/dist/components/table/snice-cell-email.d.ts +15 -0
- package/dist/components/table/snice-cell-email.js +125 -0
- package/dist/components/table/snice-cell-email.js.map +1 -0
- package/dist/components/table/snice-cell-filesize.d.ts +2 -2
- package/dist/components/table/snice-cell-filesize.js +12 -6
- package/dist/components/table/snice-cell-filesize.js.map +1 -1
- package/dist/components/table/snice-cell-image.d.ts +20 -0
- package/dist/components/table/snice-cell-image.js +162 -0
- package/dist/components/table/snice-cell-image.js.map +1 -0
- package/dist/components/table/snice-cell-json.d.ts +20 -0
- package/dist/components/table/snice-cell-json.js +186 -0
- package/dist/components/table/snice-cell-json.js.map +1 -0
- package/dist/components/table/snice-cell-link.d.ts +17 -0
- package/dist/components/table/snice-cell-link.js +142 -0
- package/dist/components/table/snice-cell-link.js.map +1 -0
- package/dist/components/table/snice-cell-location.d.ts +19 -0
- package/dist/components/table/snice-cell-location.js +185 -0
- package/dist/components/table/snice-cell-location.js.map +1 -0
- package/dist/components/table/snice-cell-number.d.ts +2 -2
- package/dist/components/table/snice-cell-number.js +12 -6
- package/dist/components/table/snice-cell-number.js.map +1 -1
- package/dist/components/table/snice-cell-percentage.d.ts +22 -0
- package/dist/components/table/snice-cell-percentage.js +208 -0
- package/dist/components/table/snice-cell-percentage.js.map +1 -0
- package/dist/components/table/snice-cell-phone.d.ts +18 -0
- package/dist/components/table/snice-cell-phone.js +153 -0
- package/dist/components/table/snice-cell-phone.js.map +1 -0
- package/dist/components/table/snice-cell-progress.d.ts +2 -2
- package/dist/components/table/snice-cell-progress.js +12 -6
- 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 +12 -6
- 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 +13 -7
- package/dist/components/table/snice-cell-sparkline.js.map +1 -1
- package/dist/components/table/snice-cell-status.d.ts +17 -0
- package/dist/components/table/snice-cell-status.js +144 -0
- package/dist/components/table/snice-cell-status.js.map +1 -0
- package/dist/components/table/snice-cell-tag.d.ts +16 -0
- package/dist/components/table/snice-cell-tag.js +131 -0
- package/dist/components/table/snice-cell-tag.js.map +1 -0
- package/dist/components/table/snice-cell-text.d.ts +2 -2
- package/dist/components/table/snice-cell-text.js +14 -8
- 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 +12 -6
- 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 +6 -3
- package/dist/components/table/snice-column.js.map +1 -1
- package/dist/components/table/snice-header.d.ts +5 -5
- package/dist/components/table/snice-header.js +60 -50
- 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 +18 -11
- 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 +15 -8
- package/dist/components/table/snice-rating.js.map +1 -1
- package/dist/components/table/snice-row.d.ts +17 -6
- package/dist/components/table/snice-row.js +95 -44
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +18 -10
- package/dist/components/table/snice-table.js +355 -173
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/table/snice-table.types.d.ts +101 -2
- package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
- package/dist/components/tabs/snice-tab-panel.js +12 -6
- package/dist/components/tabs/snice-tab-panel.js.map +1 -1
- package/dist/components/tabs/snice-tab.d.ts +6 -5
- package/dist/components/tabs/snice-tab.js +36 -19
- package/dist/components/tabs/snice-tab.js.map +1 -1
- package/dist/components/tabs/snice-tabs.d.ts +5 -5
- package/dist/components/tabs/snice-tabs.js +38 -28
- package/dist/components/tabs/snice-tabs.js.map +1 -1
- 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 +7 -7
- package/dist/components/toast/snice-toast-container.js +19 -12
- package/dist/components/toast/snice-toast-container.js.map +1 -1
- package/dist/components/toast/snice-toast.d.ts +3 -15
- package/dist/components/toast/snice-toast.js +49 -108
- 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 +15 -8
- package/dist/components/tooltip/snice-tooltip.js.map +1 -1
- package/dist/context.d.ts +44 -0
- package/dist/element-ready.d.ts +40 -0
- package/dist/{types/element.d.ts → element.d.ts} +2 -8
- package/dist/{types/events.d.ts → events.d.ts} +0 -4
- package/dist/index.cjs +2556 -605
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +21 -0
- package/dist/index.esm.js +2535 -604
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +2556 -605
- package/dist/index.iife.js.map +1 -1
- package/dist/method-decorators.d.ts +121 -0
- package/dist/on.d.ts +59 -0
- package/dist/parts.d.ts +156 -0
- package/dist/render-debug.d.ts +27 -0
- package/dist/render-tracker.d.ts +14 -0
- package/dist/render.d.ts +96 -0
- package/dist/symbols.cjs +163 -0
- package/dist/symbols.cjs.map +1 -1
- package/dist/{types/symbols.d.ts → symbols.d.ts} +22 -0
- package/dist/symbols.esm.js +27 -3
- package/dist/symbols.esm.js.map +1 -1
- package/dist/template.d.ts +99 -0
- package/dist/transitions.cjs +219 -0
- package/dist/transitions.esm.js +2 -2
- package/dist/types/context.d.ts +48 -0
- package/dist/types/element-options.d.ts +26 -0
- package/dist/types/index.d.ts +25 -9
- package/dist/types/nav-context.d.ts +19 -0
- package/dist/types/{types/on-options.d.ts → on-options.d.ts} +2 -0
- package/dist/types/{types/placard.d.ts → placard.d.ts} +0 -1
- package/docs/ai/README.md +26 -0
- package/docs/ai/api.md +175 -0
- package/docs/ai/architecture.md +160 -0
- package/docs/ai/components/accordion.md +174 -0
- package/docs/ai/components/alert.md +77 -0
- package/docs/ai/components/avatar.md +61 -0
- package/docs/ai/components/badge.md +69 -0
- package/docs/ai/components/banner.md +84 -0
- package/docs/ai/components/breadcrumbs.md +74 -0
- package/docs/ai/components/button.md +75 -0
- package/docs/ai/components/card.md +61 -0
- package/docs/ai/components/checkbox.md +74 -0
- package/docs/ai/components/chip.md +73 -0
- package/docs/ai/components/color-display.md +48 -0
- package/docs/ai/components/color-picker.md +75 -0
- package/docs/ai/components/date-picker.md +75 -0
- package/docs/ai/components/divider.md +66 -0
- package/docs/ai/components/drawer.md +80 -0
- package/docs/ai/components/empty-state.md +72 -0
- package/docs/ai/components/file-upload.md +93 -0
- package/docs/ai/components/image.md +60 -0
- package/docs/ai/components/input.md +111 -0
- package/docs/ai/components/kpi.md +158 -0
- package/docs/ai/components/link.md +77 -0
- package/docs/ai/components/login.md +109 -0
- package/docs/ai/components/modal.md +67 -0
- package/docs/ai/components/nav.md +76 -0
- package/docs/ai/components/pagination.md +55 -0
- package/docs/ai/components/progress.md +72 -0
- package/docs/ai/components/radio.md +79 -0
- package/docs/ai/components/select.md +92 -0
- package/docs/ai/components/skeleton.md +57 -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/stepper.md +216 -0
- package/docs/ai/components/switch.md +53 -0
- package/docs/ai/components/table.md +227 -0
- package/docs/ai/components/tabs.md +83 -0
- package/docs/ai/components/textarea.md +87 -0
- package/docs/ai/components/timeline.md +77 -0
- package/docs/ai/components/toast.md +140 -0
- package/docs/ai/components/tooltip.md +146 -0
- package/docs/ai/patterns.md +244 -0
- package/docs/components/accordion.md +558 -0
- package/docs/components/banner.md +106 -0
- package/docs/components/color-display.md +96 -0
- package/docs/components/color-picker.md +81 -0
- package/docs/components/drawer.md +602 -0
- package/docs/components/empty-state.md +79 -0
- package/docs/components/file-upload.md +263 -0
- package/docs/components/image.md +110 -0
- package/docs/components/kpi.md +251 -0
- package/docs/components/link.md +229 -0
- package/docs/components/modal.md +558 -0
- package/docs/components/nav.md +239 -0
- package/docs/components/pagination.md +289 -0
- package/docs/components/select.md +599 -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/stepper.md +410 -0
- package/docs/components/switch.md +354 -0
- package/docs/components/tabs.md +546 -0
- package/docs/components/textarea.md +235 -0
- package/docs/components/timeline.md +192 -0
- package/docs/components/toast.md +506 -0
- package/docs/components/tooltip.md +523 -0
- package/docs/controllers.md +744 -0
- package/docs/elements.md +855 -0
- package/docs/events.md +807 -0
- package/docs/migration-v2-to-v3.md +569 -0
- package/docs/observe.md +588 -0
- package/docs/placards.md +401 -0
- package/docs/request-response.md +852 -0
- package/docs/routing.md +1186 -0
- package/package.json +11 -11
- package/dist/components/snice-cell-C9N6yGxQ.js +0 -4
- package/dist/components/snice-cell-C9N6yGxQ.js.map +0 -1
- package/dist/types/types/index.d.ts +0 -23
- /package/dist/{types/controller.d.ts → controller.d.ts} +0 -0
- /package/dist/{types/global.d.ts → global.d.ts} +0 -0
- /package/dist/{types/observe.d.ts → observe.d.ts} +0 -0
- /package/dist/{types/request-response.d.ts → request-response.d.ts} +0 -0
- /package/dist/{types/router.d.ts → router.d.ts} +0 -0
- /package/dist/{types/testing.d.ts → testing.d.ts} +0 -0
- /package/dist/{types/transitions.d.ts → transitions.d.ts} +0 -0
- /package/dist/types/{types/adopted-options.d.ts → adopted-options.d.ts} +0 -0
- /package/dist/types/{types/app-context.d.ts → app-context.d.ts} +0 -0
- /package/dist/types/{types/dispatch-options.d.ts → dispatch-options.d.ts} +0 -0
- /package/dist/types/{types/guard.d.ts → guard.d.ts} +0 -0
- /package/dist/types/{types/i-controller.d.ts → i-controller.d.ts} +0 -0
- /package/dist/types/{types/moved-options.d.ts → moved-options.d.ts} +0 -0
- /package/dist/types/{types/observe-options.d.ts → observe-options.d.ts} +0 -0
- /package/dist/types/{types/page-options.d.ts → page-options.d.ts} +0 -0
- /package/dist/types/{types/part-options.d.ts → part-options.d.ts} +0 -0
- /package/dist/types/{types/property-converter.d.ts → property-converter.d.ts} +0 -0
- /package/dist/types/{types/property-options.d.ts → property-options.d.ts} +0 -0
- /package/dist/types/{types/query-options.d.ts → query-options.d.ts} +0 -0
- /package/dist/types/{types/request-options.d.ts → request-options.d.ts} +0 -0
- /package/dist/types/{types/respond-options.d.ts → respond-options.d.ts} +0 -0
- /package/dist/types/{types/route-params.d.ts → route-params.d.ts} +0 -0
- /package/dist/types/{types/router-instance.d.ts → router-instance.d.ts} +0 -0
- /package/dist/types/{types/router-options.d.ts → router-options.d.ts} +0 -0
- /package/dist/types/{types/simple-array.d.ts → simple-array.d.ts} +0 -0
- /package/dist/types/{types/snice-element.d.ts → snice-element.d.ts} +0 -0
- /package/dist/types/{types/snice-global.d.ts → snice-global.d.ts} +0 -0
- /package/dist/types/{types/transition.d.ts → transition.d.ts} +0 -0
- /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# snice-kpi
|
|
2
|
+
|
|
3
|
+
Key performance indicator display with value, label, trend, sparkline, and sentiment.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
label: string = '' // Metric label/name
|
|
9
|
+
value: string | number = '' // Main metric value
|
|
10
|
+
trendValue?: string | number // Trend value (e.g., "+12.5%")
|
|
11
|
+
trendData?: number[] // Sparkline data array
|
|
12
|
+
sentiment?: KpiSentiment // 'up' | 'down' | 'neutral'
|
|
13
|
+
size: KpiSize = 'medium' // 'small' | 'medium' | 'large'
|
|
14
|
+
showSparkline: boolean = true // Show sparkline when data provided
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<!-- Basic -->
|
|
21
|
+
<snice-kpi label="Revenue" value="$45,231"></snice-kpi>
|
|
22
|
+
|
|
23
|
+
<!-- With trend -->
|
|
24
|
+
<snice-kpi
|
|
25
|
+
label="Monthly Revenue"
|
|
26
|
+
value="$54,239"
|
|
27
|
+
trend-value="+12.5%"
|
|
28
|
+
sentiment="up">
|
|
29
|
+
</snice-kpi>
|
|
30
|
+
|
|
31
|
+
<!-- With sparkline -->
|
|
32
|
+
<snice-kpi
|
|
33
|
+
id="sales"
|
|
34
|
+
label="Weekly Sales"
|
|
35
|
+
value="$28,450"
|
|
36
|
+
trend-value="+15.3%"
|
|
37
|
+
sentiment="up">
|
|
38
|
+
</snice-kpi>
|
|
39
|
+
<script>
|
|
40
|
+
document.getElementById('sales').trendData = [20, 25, 22, 30, 28, 35, 32];
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<!-- Sentiments -->
|
|
44
|
+
<snice-kpi sentiment="up"></snice-kpi> <!-- Green, ↑ -->
|
|
45
|
+
<snice-kpi sentiment="down"></snice-kpi> <!-- Red, ↓ -->
|
|
46
|
+
<snice-kpi sentiment="neutral"></snice-kpi> <!-- Gray, → -->
|
|
47
|
+
|
|
48
|
+
<!-- Sizes -->
|
|
49
|
+
<snice-kpi size="small"></snice-kpi>
|
|
50
|
+
<snice-kpi size="medium"></snice-kpi>
|
|
51
|
+
<snice-kpi size="large"></snice-kpi>
|
|
52
|
+
|
|
53
|
+
<!-- Without sparkline -->
|
|
54
|
+
<snice-kpi show-sparkline="false"></snice-kpi>
|
|
55
|
+
|
|
56
|
+
<!-- Dashboard grid -->
|
|
57
|
+
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
|
|
58
|
+
<snice-kpi
|
|
59
|
+
id="mrr"
|
|
60
|
+
label="MRR"
|
|
61
|
+
value="$127K"
|
|
62
|
+
trend-value="+22%"
|
|
63
|
+
sentiment="up">
|
|
64
|
+
</snice-kpi>
|
|
65
|
+
|
|
66
|
+
<snice-kpi
|
|
67
|
+
id="users"
|
|
68
|
+
label="Active Users"
|
|
69
|
+
value="2,345"
|
|
70
|
+
trend-value="+8.7%"
|
|
71
|
+
sentiment="up">
|
|
72
|
+
</snice-kpi>
|
|
73
|
+
|
|
74
|
+
<snice-kpi
|
|
75
|
+
id="churn"
|
|
76
|
+
label="Churn"
|
|
77
|
+
value="2.3%"
|
|
78
|
+
trend-value="+0.8%"
|
|
79
|
+
sentiment="down">
|
|
80
|
+
</snice-kpi>
|
|
81
|
+
</div>
|
|
82
|
+
<script>
|
|
83
|
+
document.getElementById('mrr').trendData = [100, 110, 105, 120, 115, 130, 127];
|
|
84
|
+
document.getElementById('users').trendData = [2000, 2100, 2200, 2250, 2300, 2345];
|
|
85
|
+
document.getElementById('churn').trendData = [1.5, 1.8, 2.0, 2.2, 2.1, 2.3];
|
|
86
|
+
</script>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## CSS Parts
|
|
90
|
+
|
|
91
|
+
```css
|
|
92
|
+
::part(container) /* Main container */
|
|
93
|
+
::part(header) /* Header section */
|
|
94
|
+
::part(main) /* Main content (label + value) */
|
|
95
|
+
::part(label) /* Label text */
|
|
96
|
+
::part(value) /* Value text */
|
|
97
|
+
::part(trend) /* Trend container */
|
|
98
|
+
::part(trend-icon) /* Trend icon (↑↓→) */
|
|
99
|
+
::part(trend-value) /* Trend value text */
|
|
100
|
+
::part(sparkline) /* Sparkline container */
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Styling
|
|
104
|
+
|
|
105
|
+
```css
|
|
106
|
+
--snice-color-background
|
|
107
|
+
--snice-color-border
|
|
108
|
+
--snice-color-text
|
|
109
|
+
--snice-color-text-secondary
|
|
110
|
+
--snice-color-success /* Up sentiment */
|
|
111
|
+
--snice-color-danger /* Down sentiment */
|
|
112
|
+
--snice-spacing-xs
|
|
113
|
+
--snice-spacing-sm
|
|
114
|
+
--snice-spacing-md
|
|
115
|
+
--snice-spacing-lg
|
|
116
|
+
--snice-font-size-xs
|
|
117
|
+
--snice-font-size-sm
|
|
118
|
+
--snice-font-size-md
|
|
119
|
+
--snice-font-size-2xl
|
|
120
|
+
--snice-font-size-3xl
|
|
121
|
+
--snice-font-size-4xl
|
|
122
|
+
--snice-font-weight-medium
|
|
123
|
+
--snice-font-weight-semibold
|
|
124
|
+
--snice-font-weight-bold
|
|
125
|
+
--snice-border-radius-md
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Common Patterns
|
|
129
|
+
|
|
130
|
+
```html
|
|
131
|
+
<!-- Financial metrics -->
|
|
132
|
+
<snice-kpi label="Revenue" value="$127K" trend-value="+22%" sentiment="up"></snice-kpi>
|
|
133
|
+
<snice-kpi label="Costs" value="$45K" trend-value="-5%" sentiment="down"></snice-kpi>
|
|
134
|
+
<snice-kpi label="Profit" value="$82K" trend-value="+35%" sentiment="up"></snice-kpi>
|
|
135
|
+
|
|
136
|
+
<!-- User metrics -->
|
|
137
|
+
<snice-kpi label="Total Users" value="12,345" trend-value="+234" sentiment="up"></snice-kpi>
|
|
138
|
+
<snice-kpi label="Active Users" value="8,901" trend-value="+156" sentiment="up"></snice-kpi>
|
|
139
|
+
<snice-kpi label="Churn Rate" value="2.3%" trend-value="+0.2%" sentiment="down"></snice-kpi>
|
|
140
|
+
|
|
141
|
+
<!-- Performance metrics -->
|
|
142
|
+
<snice-kpi label="Response Time" value="245ms" trend-value="-23ms" sentiment="down"></snice-kpi>
|
|
143
|
+
<snice-kpi label="Uptime" value="99.9%" trend-value="±0%" sentiment="neutral"></snice-kpi>
|
|
144
|
+
<snice-kpi label="Error Rate" value="0.12%" trend-value="-0.03%" sentiment="down"></snice-kpi>
|
|
145
|
+
|
|
146
|
+
<!-- Marketing metrics -->
|
|
147
|
+
<snice-kpi label="Conversion Rate" value="3.24%" trend-value="+0.5%" sentiment="up"></snice-kpi>
|
|
148
|
+
<snice-kpi label="CAC" value="$156" trend-value="-$12" sentiment="down"></snice-kpi>
|
|
149
|
+
<snice-kpi label="LTV" value="$1,245" trend-value="+$87" sentiment="up"></snice-kpi>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Notes
|
|
153
|
+
|
|
154
|
+
- Sparkline automatically uses sentiment color (success/danger/muted)
|
|
155
|
+
- Sentiment icons: up=↑, down=↓, neutral=→
|
|
156
|
+
- trendData array automatically renders sparkline
|
|
157
|
+
- Value can be string or number for formatting flexibility
|
|
158
|
+
- showSparkline=false hides sparkline even if data provided
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# snice-link
|
|
2
|
+
|
|
3
|
+
Link component with variants and external link handling.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
href: string = '' // Link URL
|
|
9
|
+
target: LinkTarget = '_self' // '_self' | '_blank' | '_parent' | '_top'
|
|
10
|
+
variant: LinkVariant = 'default' // 'default' | 'primary' | 'secondary' | 'muted'
|
|
11
|
+
disabled: boolean = false // Disable link
|
|
12
|
+
external: boolean = false // Auto _blank + noopener
|
|
13
|
+
underline: boolean = false // Show underline
|
|
14
|
+
hash: boolean = false // Auto prepend # to href (for hash routing)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Events
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
@dispatch('click') // Emitted on click (prevented if disabled)
|
|
21
|
+
@dispatch('navigate') // Emitted on hash link click (for router integration)
|
|
22
|
+
// detail: { href: string }
|
|
23
|
+
// cancelable: true
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<!-- Basic -->
|
|
30
|
+
<snice-link href="/page">Link text</snice-link>
|
|
31
|
+
|
|
32
|
+
<!-- External -->
|
|
33
|
+
<snice-link href="https://example.com" external>External</snice-link>
|
|
34
|
+
|
|
35
|
+
<!-- Variants -->
|
|
36
|
+
<snice-link href="/page" variant="primary">Primary</snice-link>
|
|
37
|
+
<snice-link href="/page" variant="secondary">Secondary</snice-link>
|
|
38
|
+
<snice-link href="/page" variant="muted">Muted</snice-link>
|
|
39
|
+
|
|
40
|
+
<!-- Underlined -->
|
|
41
|
+
<snice-link href="/page" underline>Underlined link</snice-link>
|
|
42
|
+
|
|
43
|
+
<!-- Disabled -->
|
|
44
|
+
<snice-link href="/page" disabled>Disabled</snice-link>
|
|
45
|
+
|
|
46
|
+
<!-- Hash links (for routing) -->
|
|
47
|
+
<snice-link href="home" hash>Home</snice-link>
|
|
48
|
+
<snice-link href="about" hash>About</snice-link>
|
|
49
|
+
<!-- Renders as: <a href="#home">Home</a> -->
|
|
50
|
+
|
|
51
|
+
<!-- Router integration -->
|
|
52
|
+
<snice-link href="profile" hash @navigate="${handleNavigate}">Profile</snice-link>
|
|
53
|
+
<script>
|
|
54
|
+
function handleNavigate(e) {
|
|
55
|
+
console.log('Navigate to:', e.detail.href);
|
|
56
|
+
// e.preventDefault() in the handler will cancel navigation
|
|
57
|
+
}
|
|
58
|
+
</script>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## CSS Parts
|
|
62
|
+
|
|
63
|
+
```css
|
|
64
|
+
::part(link) /* Anchor element */
|
|
65
|
+
::part(external-icon) /* External icon */
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Styling
|
|
69
|
+
|
|
70
|
+
```css
|
|
71
|
+
--snice-color-primary
|
|
72
|
+
--snice-color-primary-dark
|
|
73
|
+
--snice-color-text-secondary
|
|
74
|
+
--snice-color-text
|
|
75
|
+
--snice-color-text-muted
|
|
76
|
+
--snice-color-text-disabled
|
|
77
|
+
```
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# snice-login
|
|
2
|
+
|
|
3
|
+
Login form component with username, password, and optional features.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
variant: 'default'|'card'|'minimal' = 'default';
|
|
9
|
+
size: 'small'|'medium'|'large' = 'medium';
|
|
10
|
+
title: string = '';
|
|
11
|
+
disabled: boolean = false;
|
|
12
|
+
loading: boolean = false;
|
|
13
|
+
showRememberMe: boolean = false;
|
|
14
|
+
showForgotPassword: boolean = false;
|
|
15
|
+
actionText: string = 'Login';
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Methods
|
|
19
|
+
|
|
20
|
+
- `login(credentials)` - Programmatic login, returns {success, error?, data?}
|
|
21
|
+
- `reset()` - Clear form
|
|
22
|
+
- `setError(message)` - Display error message
|
|
23
|
+
- `clearError()` - Clear error message
|
|
24
|
+
|
|
25
|
+
## Events
|
|
26
|
+
|
|
27
|
+
- `submit` - {username, password, remember}
|
|
28
|
+
- `forgot-password` - User clicked forgot password link
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<!-- Basic -->
|
|
34
|
+
<snice-login title="Sign In"></snice-login>
|
|
35
|
+
|
|
36
|
+
<!-- Variants -->
|
|
37
|
+
<snice-login variant="card"></snice-login>
|
|
38
|
+
<snice-login variant="minimal"></snice-login>
|
|
39
|
+
|
|
40
|
+
<!-- With remember me and forgot password -->
|
|
41
|
+
<snice-login show-remember-me show-forgot-password></snice-login>
|
|
42
|
+
|
|
43
|
+
<!-- Custom action text -->
|
|
44
|
+
<snice-login action-text="Sign In"></snice-login>
|
|
45
|
+
|
|
46
|
+
<!-- Loading state -->
|
|
47
|
+
<snice-login loading></snice-login>
|
|
48
|
+
|
|
49
|
+
<!-- Disabled -->
|
|
50
|
+
<snice-login disabled></snice-login>
|
|
51
|
+
|
|
52
|
+
<!-- Sizes -->
|
|
53
|
+
<snice-login size="small"></snice-login>
|
|
54
|
+
<snice-login size="medium"></snice-login>
|
|
55
|
+
<snice-login size="large"></snice-login>
|
|
56
|
+
|
|
57
|
+
<!-- Event handling -->
|
|
58
|
+
<snice-login id="login"></snice-login>
|
|
59
|
+
<script>
|
|
60
|
+
const login = document.querySelector('#login');
|
|
61
|
+
|
|
62
|
+
login.addEventListener('submit', async (e) => {
|
|
63
|
+
const {username, password, remember} = e.detail;
|
|
64
|
+
|
|
65
|
+
login.loading = true;
|
|
66
|
+
const result = await fetch('/api/login', {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
body: JSON.stringify({username, password})
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
if (!result.ok) {
|
|
72
|
+
login.setError('Invalid credentials');
|
|
73
|
+
login.loading = false;
|
|
74
|
+
} else {
|
|
75
|
+
window.location = '/dashboard';
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
login.addEventListener('forgot-password', () => {
|
|
80
|
+
window.location = '/forgot-password';
|
|
81
|
+
});
|
|
82
|
+
</script>
|
|
83
|
+
|
|
84
|
+
<!-- Programmatic login -->
|
|
85
|
+
<script>
|
|
86
|
+
const result = await login.login({
|
|
87
|
+
username: 'user@example.com',
|
|
88
|
+
password: 'password123',
|
|
89
|
+
remember: true
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
if (result.success) {
|
|
93
|
+
console.log('Logged in:', result.data);
|
|
94
|
+
} else {
|
|
95
|
+
console.error('Login failed:', result.error);
|
|
96
|
+
}
|
|
97
|
+
</script>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Features
|
|
101
|
+
|
|
102
|
+
- 3 visual variants (default/card/minimal)
|
|
103
|
+
- 3 sizes
|
|
104
|
+
- Optional remember me checkbox
|
|
105
|
+
- Optional forgot password link
|
|
106
|
+
- Loading and disabled states
|
|
107
|
+
- Error message display
|
|
108
|
+
- Programmatic and event-based submission
|
|
109
|
+
- Keyboard accessible (Enter to submit)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# snice-modal
|
|
2
|
+
|
|
3
|
+
Dialog overlay with focus trap, backdrop dismiss, and accessibility.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
open: boolean = false; // Visibility state
|
|
9
|
+
size: 'small'|'medium'|'large'|'fullscreen' = 'medium';
|
|
10
|
+
noBackdropDismiss: boolean = false; // Prevent backdrop click close
|
|
11
|
+
noEscapeDismiss: boolean = false; // Prevent Escape key close
|
|
12
|
+
noFocusTrap: boolean = false; // Disable focus trapping
|
|
13
|
+
noCloseButton: boolean = false; // Hide close button
|
|
14
|
+
label: string = ''; // Accessible label
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Methods
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
show() // Open modal
|
|
21
|
+
close() // Close modal
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Events
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
'@snice/modal-open' // { modal }
|
|
28
|
+
'@snice/modal-close' // { modal }
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Slots
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<snice-modal>
|
|
35
|
+
<div slot="header">Title</div>
|
|
36
|
+
<div>Body content</div>
|
|
37
|
+
<div slot="footer">Actions</div>
|
|
38
|
+
</snice-modal>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Usage
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<snice-modal id="myModal" label="Confirm">
|
|
45
|
+
<div slot="header"><h2>Confirm</h2></div>
|
|
46
|
+
<p>Are you sure?</p>
|
|
47
|
+
<div slot="footer">
|
|
48
|
+
<button onclick="this.closest('snice-modal').close()">Cancel</button>
|
|
49
|
+
<button onclick="this.closest('snice-modal').close()">OK</button>
|
|
50
|
+
</div>
|
|
51
|
+
</snice-modal>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
const modal = document.querySelector('snice-modal');
|
|
56
|
+
modal.show();
|
|
57
|
+
modal.close();
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Features
|
|
61
|
+
|
|
62
|
+
- Body scroll lock when open
|
|
63
|
+
- Focus trap with Tab navigation
|
|
64
|
+
- Focus restoration on close
|
|
65
|
+
- Backdrop click to close
|
|
66
|
+
- Escape key to close
|
|
67
|
+
- ARIA attributes (role, aria-modal, aria-label, aria-hidden)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# snice-nav
|
|
2
|
+
|
|
3
|
+
Navigation menu from placard configurations, integrates with Snice routing.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
variant: 'flat'|'hierarchical'|'grouped' = 'flat';
|
|
9
|
+
orientation: 'horizontal'|'vertical' = 'horizontal';
|
|
10
|
+
isTopLevel: boolean = false; // Receive context updates
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Methods
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
update(placards, appContext?, currentRoute?, routeParams?) // Update nav with placard data
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Placard Structure
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
interface Placard {
|
|
23
|
+
name: string; // Route identifier
|
|
24
|
+
title: string; // Display text
|
|
25
|
+
icon?: string; // Icon character
|
|
26
|
+
order?: number; // Sort order
|
|
27
|
+
parent?: string; // Parent name (hierarchical)
|
|
28
|
+
group?: string; // Group name (grouped)
|
|
29
|
+
show?: boolean; // Visibility
|
|
30
|
+
description?: string; // Accessible label/tooltip
|
|
31
|
+
tooltip?: string; // Hover tooltip
|
|
32
|
+
hotkeys?: string[]; // Keyboard shortcuts
|
|
33
|
+
helpUrl?: string; // Help URL
|
|
34
|
+
searchTerms?: string[]; // Search keywords
|
|
35
|
+
attributes?: Record<string, any>; // Custom data attributes
|
|
36
|
+
visibleOn?: Function | Function[]; // Visibility guards
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<snice-nav id="nav" variant="flat" orientation="horizontal"></snice-nav>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
const nav = document.querySelector('snice-nav');
|
|
48
|
+
const placards = [
|
|
49
|
+
{ name: 'home', title: 'Home', icon: '🏠', order: 0 },
|
|
50
|
+
{ name: 'products', title: 'Products', icon: '📦', order: 1 },
|
|
51
|
+
];
|
|
52
|
+
nav.update(placards, undefined, 'home');
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Variants
|
|
56
|
+
|
|
57
|
+
- **flat**: Simple list (default)
|
|
58
|
+
- **hierarchical**: Nested with parent-child relationships
|
|
59
|
+
- **grouped**: Organized into labeled groups
|
|
60
|
+
|
|
61
|
+
## Context Integration
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<snice-nav is-top-level></snice-nav>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Auto-receives placards, routes, and app context from Snice context system.
|
|
68
|
+
|
|
69
|
+
## Features
|
|
70
|
+
|
|
71
|
+
- Active route tracking with `.nav__link--active` class
|
|
72
|
+
- `aria-current="page"` on active links
|
|
73
|
+
- `role="navigation"` on container
|
|
74
|
+
- Hotkeys via `data-hotkeys` attribute
|
|
75
|
+
- Custom attributes via placard `attributes` property
|
|
76
|
+
- Conditional visibility via `visibleOn` guards
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# snice-pagination
|
|
2
|
+
|
|
3
|
+
Pagination navigation component.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
current: number = 1; // Active page
|
|
9
|
+
total: number = 1; // Total pages
|
|
10
|
+
siblings: number = 1; // Pages shown each side of current
|
|
11
|
+
showFirst: boolean = true; // Show first button
|
|
12
|
+
showLast: boolean = true; // Show last button
|
|
13
|
+
showPrev: boolean = true; // Show previous button
|
|
14
|
+
showNext: boolean = true; // Show next button
|
|
15
|
+
size: 'small'|'medium'|'large' = 'medium';
|
|
16
|
+
variant: 'default'|'rounded'|'text' = 'default';
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Methods
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
goToPage(page: number) // Navigate to page
|
|
23
|
+
nextPage() // Next page
|
|
24
|
+
previousPage() // Previous page
|
|
25
|
+
firstPage() // First page
|
|
26
|
+
lastPage() // Last page
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Events
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
'@snice/pagination-change' // { page, previousPage }
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
```html
|
|
38
|
+
<snice-pagination current="1" total="10"></snice-pagination>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
pagination.addEventListener('@snice/pagination-change', (e) => {
|
|
43
|
+
console.log(e.detail.page);
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## CSS Variables
|
|
48
|
+
|
|
49
|
+
```css
|
|
50
|
+
--pagination-gap: 4px;
|
|
51
|
+
--pagination-button-size: 32px;
|
|
52
|
+
--pagination-button-padding: 8px;
|
|
53
|
+
--pagination-font-size: 14px;
|
|
54
|
+
--pagination-border-radius: 4px;
|
|
55
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# snice-progress
|
|
2
|
+
|
|
3
|
+
Progress indicator with linear or circular display.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
value: number = 0;
|
|
9
|
+
max: number = 100;
|
|
10
|
+
variant: 'linear'|'circular' = 'linear';
|
|
11
|
+
indeterminate: boolean = false;
|
|
12
|
+
size: 'small'|'medium'|'large' = 'medium';
|
|
13
|
+
color: string = '';
|
|
14
|
+
showLabel: boolean = false;
|
|
15
|
+
label: string = '';
|
|
16
|
+
striped: boolean = false;
|
|
17
|
+
animated: boolean = false;
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<!-- Basic linear -->
|
|
24
|
+
<snice-progress value="50"></snice-progress>
|
|
25
|
+
|
|
26
|
+
<!-- Circular -->
|
|
27
|
+
<snice-progress variant="circular" value="75"></snice-progress>
|
|
28
|
+
|
|
29
|
+
<!-- Indeterminate (loading) -->
|
|
30
|
+
<snice-progress indeterminate></snice-progress>
|
|
31
|
+
<snice-progress variant="circular" indeterminate></snice-progress>
|
|
32
|
+
|
|
33
|
+
<!-- With label -->
|
|
34
|
+
<snice-progress value="60" show-label></snice-progress>
|
|
35
|
+
<snice-progress value="60" label="Uploading..."></snice-progress>
|
|
36
|
+
|
|
37
|
+
<!-- Custom max -->
|
|
38
|
+
<snice-progress value="3" max="10"></snice-progress>
|
|
39
|
+
|
|
40
|
+
<!-- Striped and animated -->
|
|
41
|
+
<snice-progress value="70" striped></snice-progress>
|
|
42
|
+
<snice-progress value="70" striped animated></snice-progress>
|
|
43
|
+
|
|
44
|
+
<!-- Custom color -->
|
|
45
|
+
<snice-progress value="80" color="#3b82f6"></snice-progress>
|
|
46
|
+
|
|
47
|
+
<!-- Sizes -->
|
|
48
|
+
<snice-progress value="50" size="small"></snice-progress>
|
|
49
|
+
<snice-progress value="50" size="medium"></snice-progress>
|
|
50
|
+
<snice-progress value="50" size="large"></snice-progress>
|
|
51
|
+
|
|
52
|
+
<!-- Dynamic updates -->
|
|
53
|
+
<snice-progress id="prog" value="0"></snice-progress>
|
|
54
|
+
<script>
|
|
55
|
+
const prog = document.querySelector('#prog');
|
|
56
|
+
let val = 0;
|
|
57
|
+
setInterval(() => {
|
|
58
|
+
val = (val + 10) % 100;
|
|
59
|
+
prog.value = val;
|
|
60
|
+
}, 500);
|
|
61
|
+
</script>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Features
|
|
65
|
+
|
|
66
|
+
- Linear or circular variant
|
|
67
|
+
- Indeterminate mode for unknown progress
|
|
68
|
+
- Optional percentage label or custom text
|
|
69
|
+
- Striped and animated styles
|
|
70
|
+
- Custom color
|
|
71
|
+
- 3 sizes
|
|
72
|
+
- Reactive value updates
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# snice-radio
|
|
2
|
+
|
|
3
|
+
Form radio button input with grouping.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
checked: boolean = false;
|
|
9
|
+
disabled: boolean = false;
|
|
10
|
+
required: boolean = false;
|
|
11
|
+
invalid: boolean = false;
|
|
12
|
+
size: 'small'|'medium'|'large' = 'medium';
|
|
13
|
+
name: string = '';
|
|
14
|
+
value: string = '';
|
|
15
|
+
label: string = '';
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Methods
|
|
19
|
+
|
|
20
|
+
- `focus()` - Focus radio
|
|
21
|
+
- `blur()` - Blur radio
|
|
22
|
+
- `click()` - Programmatic click
|
|
23
|
+
|
|
24
|
+
## Events
|
|
25
|
+
|
|
26
|
+
- `change` - {checked, value, radio}
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<!-- Basic radio group -->
|
|
32
|
+
<snice-radio name="color" value="red" label="Red"></snice-radio>
|
|
33
|
+
<snice-radio name="color" value="green" label="Green"></snice-radio>
|
|
34
|
+
<snice-radio name="color" value="blue" label="Blue"></snice-radio>
|
|
35
|
+
|
|
36
|
+
<!-- Pre-selected -->
|
|
37
|
+
<snice-radio name="size" value="s" label="Small"></snice-radio>
|
|
38
|
+
<snice-radio name="size" value="m" label="Medium" checked></snice-radio>
|
|
39
|
+
<snice-radio name="size" value="l" label="Large"></snice-radio>
|
|
40
|
+
|
|
41
|
+
<!-- Disabled -->
|
|
42
|
+
<snice-radio label="Unavailable" disabled></snice-radio>
|
|
43
|
+
<snice-radio label="Selected but disabled" checked disabled></snice-radio>
|
|
44
|
+
|
|
45
|
+
<!-- Required -->
|
|
46
|
+
<snice-radio name="accept" value="yes" label="Accept" required></snice-radio>
|
|
47
|
+
|
|
48
|
+
<!-- Invalid -->
|
|
49
|
+
<snice-radio label="Invalid option" invalid></snice-radio>
|
|
50
|
+
|
|
51
|
+
<!-- Sizes -->
|
|
52
|
+
<snice-radio label="Small" size="small"></snice-radio>
|
|
53
|
+
<snice-radio label="Medium" size="medium"></snice-radio>
|
|
54
|
+
<snice-radio label="Large" size="large"></snice-radio>
|
|
55
|
+
|
|
56
|
+
<!-- Form integration -->
|
|
57
|
+
<form>
|
|
58
|
+
<snice-radio name="plan" value="free" label="Free"></snice-radio>
|
|
59
|
+
<snice-radio name="plan" value="pro" label="Pro"></snice-radio>
|
|
60
|
+
<snice-radio name="plan" value="enterprise" label="Enterprise"></snice-radio>
|
|
61
|
+
</form>
|
|
62
|
+
|
|
63
|
+
<!-- Event handling -->
|
|
64
|
+
<snice-radio id="rb" name="opt" value="a"></snice-radio>
|
|
65
|
+
<script>
|
|
66
|
+
document.querySelector('#rb').addEventListener('change', (e) => {
|
|
67
|
+
console.log('Selected:', e.detail.value);
|
|
68
|
+
});
|
|
69
|
+
</script>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Features
|
|
73
|
+
|
|
74
|
+
- Form-associated custom element
|
|
75
|
+
- Automatic radio group management by name
|
|
76
|
+
- 3 sizes
|
|
77
|
+
- Keyboard accessible (arrow keys navigate group)
|
|
78
|
+
- Change events
|
|
79
|
+
- Invalid state styling
|