snice 4.28.0 → 4.29.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/adapters/react/action-bar.d.ts +30 -0
- package/adapters/react/action-bar.d.ts.map +1 -0
- package/adapters/react/action-bar.js +24 -0
- package/adapters/react/action-bar.js.map +1 -0
- package/adapters/react/action-bar.tsx +38 -0
- package/adapters/react/binpack.d.ts +35 -0
- package/adapters/react/binpack.d.ts.map +1 -0
- package/adapters/react/binpack.js +24 -0
- package/adapters/react/binpack.js.map +1 -0
- package/adapters/react/binpack.tsx +43 -0
- package/adapters/react/components.d.ts +4 -0
- package/adapters/react/components.d.ts.map +1 -1
- package/adapters/react/components.js +2 -0
- package/adapters/react/components.js.map +1 -1
- package/adapters/react/components.ts +4 -0
- package/adapters/react/useRequestHandler.d.ts +56 -0
- package/adapters/react/useRequestHandler.js +103 -0
- package/adapters/react/useRequestHandler.js.map +1 -0
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/accordion/snice-accordion.min.js +1 -1
- package/dist/cdn/action-bar/README.md +27 -0
- package/dist/cdn/action-bar/snice-action-bar.js +249 -0
- package/dist/cdn/action-bar/snice-action-bar.js.map +1 -0
- package/dist/cdn/action-bar/snice-action-bar.min.js +12 -0
- package/dist/cdn/action-bar/snice-action-bar.min.js.map +1 -0
- package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
- package/dist/cdn/alert/snice-alert.js +1 -1
- package/dist/cdn/alert/snice-alert.min.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
- package/dist/cdn/availability/snice-availability.js +1 -1
- package/dist/cdn/availability/snice-availability.min.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar/snice-avatar.min.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/badge/snice-badge.min.js +1 -1
- package/dist/cdn/banner/snice-banner.js +1 -1
- package/dist/cdn/banner/snice-banner.min.js +1 -1
- package/dist/cdn/binpack/README.md +27 -0
- package/dist/cdn/binpack/snice-binpack.js +1037 -0
- package/dist/cdn/binpack/snice-binpack.js.map +1 -0
- package/dist/cdn/binpack/snice-binpack.min.js +13 -0
- package/dist/cdn/binpack/snice-binpack.min.js.map +1 -0
- package/dist/cdn/book/snice-book.js +1 -1
- package/dist/cdn/book/snice-book.min.js +1 -1
- package/dist/cdn/booking/snice-booking.js +1 -1
- package/dist/cdn/booking/snice-booking.min.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
- package/dist/cdn/button/README.md +1 -1
- package/dist/cdn/button/snice-button.js +2 -2
- package/dist/cdn/button/snice-button.js.map +1 -1
- package/dist/cdn/button/snice-button.min.js +2 -2
- package/dist/cdn/button/snice-button.min.js.map +1 -1
- package/dist/cdn/calendar/snice-calendar.js +1 -1
- package/dist/cdn/calendar/snice-calendar.min.js +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera/snice-camera.min.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/card/snice-card.min.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/carousel/snice-carousel.min.js +1 -1
- package/dist/cdn/cart/snice-cart.js +1 -1
- package/dist/cdn/cart/snice-cart.min.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chart/snice-chart.min.js +1 -1
- package/dist/cdn/chat/snice-chat.js +1 -1
- package/dist/cdn/chat/snice-chat.min.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
- package/dist/cdn/chip/snice-chip.js +1 -1
- package/dist/cdn/chip/snice-chip.min.js +1 -1
- package/dist/cdn/code-block/snice-code-block.js +1 -1
- package/dist/cdn/code-block/snice-code-block.min.js +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-display/snice-color-display.min.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
- package/dist/cdn/comments/snice-comments.js +1 -1
- package/dist/cdn/comments/snice-comments.min.js +1 -1
- package/dist/cdn/countdown/snice-countdown.js +1 -1
- package/dist/cdn/countdown/snice-countdown.min.js +1 -1
- package/dist/cdn/cropper/snice-cropper.js +1 -1
- package/dist/cdn/cropper/snice-cropper.min.js +1 -1
- package/dist/cdn/data-card/snice-data-card.js +1 -1
- package/dist/cdn/data-card/snice-data-card.min.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
- package/dist/cdn/diff/snice-diff.js +1 -1
- package/dist/cdn/diff/snice-diff.min.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/divider/snice-divider.min.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/doc/snice-doc.min.js +1 -1
- package/dist/cdn/draw/snice-draw.js +1 -1
- package/dist/cdn/draw/snice-draw.min.js +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/drawer/snice-drawer.min.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
- package/dist/cdn/estimate/snice-estimate.js +1 -1
- package/dist/cdn/estimate/snice-estimate.min.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
- package/dist/cdn/flow/snice-flow.js +1 -1
- package/dist/cdn/flow/snice-flow.min.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
- package/dist/cdn/funnel/snice-funnel.js +1 -1
- package/dist/cdn/funnel/snice-funnel.min.js +1 -1
- package/dist/cdn/gantt/snice-gantt.js +1 -1
- package/dist/cdn/gantt/snice-gantt.min.js +1 -1
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/gauge/snice-gauge.min.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/image/snice-image.min.js +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/input/snice-input.min.js +1 -1
- package/dist/cdn/invoice/snice-invoice.js +1 -1
- package/dist/cdn/invoice/snice-invoice.min.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/kanban/snice-kanban.min.js +1 -1
- package/dist/cdn/key-value/snice-key-value.js +1 -1
- package/dist/cdn/key-value/snice-key-value.min.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/kpi/snice-kpi.min.js +1 -1
- package/dist/cdn/layout/snice-layout.js +1 -1
- package/dist/cdn/layout/snice-layout.min.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link/snice-link.min.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
- package/dist/cdn/list/snice-list.js +1 -1
- package/dist/cdn/list/snice-list.min.js +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/location/snice-location.min.js +1 -1
- package/dist/cdn/login/README.md +2 -2
- package/dist/cdn/login/snice-login.js +2 -2
- package/dist/cdn/login/snice-login.js.map +1 -1
- package/dist/cdn/login/snice-login.min.js +2 -2
- package/dist/cdn/login/snice-login.min.js.map +1 -1
- package/dist/cdn/map/snice-map.js +1 -1
- package/dist/cdn/map/snice-map.min.js +1 -1
- package/dist/cdn/markdown/snice-markdown.js +1 -1
- package/dist/cdn/markdown/snice-markdown.min.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/masonry/snice-masonry.min.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/menu/snice-menu.min.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.min.js +1 -1
- package/dist/cdn/metric-table/snice-metric-table.js +1 -1
- package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/modal/snice-modal.min.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/music-player/snice-music-player.min.js +1 -1
- package/dist/cdn/nav/snice-nav.js +1 -1
- package/dist/cdn/nav/snice-nav.min.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
- package/dist/cdn/pagination/snice-pagination.js +1 -1
- package/dist/cdn/pagination/snice-pagination.min.js +1 -1
- package/dist/cdn/paint/snice-paint.js +1 -1
- package/dist/cdn/paint/snice-paint.min.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
- package/dist/cdn/product-card/snice-product-card.js +1 -1
- package/dist/cdn/product-card/snice-product-card.min.js +1 -1
- package/dist/cdn/progress/snice-progress.js +1 -1
- package/dist/cdn/progress/snice-progress.min.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/radio/snice-radio.min.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
- package/dist/cdn/rating/snice-rating.js +1 -1
- package/dist/cdn/rating/snice-rating.min.js +1 -1
- package/dist/cdn/receipt/snice-receipt.js +1 -1
- package/dist/cdn/receipt/snice-receipt.min.js +1 -1
- package/dist/cdn/recipe/snice-recipe.js +1 -1
- package/dist/cdn/recipe/snice-recipe.min.js +1 -1
- package/dist/cdn/runtime/README.md +2 -2
- package/dist/cdn/runtime/snice-runtime.esm.js +73 -5
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +73 -4
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +7 -7
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.js +1 -1
- package/dist/cdn/sankey/snice-sankey.min.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
- package/dist/cdn/select/snice-select.js +1 -1
- package/dist/cdn/select/snice-select.min.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/slider/snice-slider.min.js +1 -1
- package/dist/cdn/sortable/snice-sortable.js +1 -1
- package/dist/cdn/sortable/snice-sortable.min.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/spinner/snice-spinner.min.js +1 -1
- package/dist/cdn/split-button/snice-split-button.js +1 -1
- package/dist/cdn/split-button/snice-split-button.min.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
- package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
- package/dist/cdn/step-input/snice-step-input.js +1 -1
- package/dist/cdn/step-input/snice-step-input.min.js +1 -1
- package/dist/cdn/stepper/snice-stepper.js +1 -1
- package/dist/cdn/stepper/snice-stepper.min.js +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/switch/snice-switch.min.js +1 -1
- package/dist/cdn/table/README.md +1 -1
- package/dist/cdn/table/snice-table.js +2 -2
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +2 -2
- package/dist/cdn/table/snice-table.min.js.map +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tabs/snice-tabs.min.js +1 -1
- package/dist/cdn/tag/snice-tag.js +1 -1
- package/dist/cdn/tag/snice-tag.min.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
- package/dist/cdn/terminal/snice-terminal.js +1 -1
- package/dist/cdn/terminal/snice-terminal.min.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.js +1 -1
- package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/textarea/snice-textarea.min.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timeline/snice-timeline.min.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/timer/snice-timer.min.js +1 -1
- package/dist/cdn/toast/snice-toast.js +1 -1
- package/dist/cdn/toast/snice-toast.min.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
- package/dist/cdn/tree/snice-tree.js +1 -1
- package/dist/cdn/tree/snice-tree.min.js +1 -1
- package/dist/cdn/treemap/snice-treemap.js +1 -1
- package/dist/cdn/treemap/snice-treemap.min.js +1 -1
- package/dist/cdn/user-card/snice-user-card.js +1 -1
- package/dist/cdn/user-card/snice-user-card.min.js +1 -1
- package/dist/cdn/video-player/snice-video-player.js +1 -1
- package/dist/cdn/video-player/snice-video-player.min.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
- package/dist/cdn/weather/snice-weather.js +1 -1
- package/dist/cdn/weather/snice-weather.min.js +1 -1
- package/dist/cdn/work-order/snice-work-order.js +1 -1
- package/dist/cdn/work-order/snice-work-order.min.js +1 -1
- package/dist/components/action-bar/snice-action-bar.d.ts +22 -0
- package/dist/components/action-bar/snice-action-bar.js +182 -0
- package/dist/components/action-bar/snice-action-bar.js.map +1 -0
- package/dist/components/action-bar/snice-action-bar.types.d.ts +17 -0
- package/dist/components/binpack/snice-binpack.d.ts +82 -0
- package/dist/components/binpack/snice-binpack.js +970 -0
- package/dist/components/binpack/snice-binpack.js.map +1 -0
- package/dist/components/binpack/snice-binpack.types.d.ts +52 -0
- package/dist/components/button/snice-button.js +1 -1
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/create-request-handler.d.ts +42 -0
- package/dist/index.cjs +70 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +70 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +70 -1
- package/dist/index.iife.js.map +1 -1
- package/dist/react/useRequestHandler.d.ts +56 -0
- package/dist/react/useRequestHandler.js +103 -0
- package/dist/react/useRequestHandler.js.map +1 -0
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/DEVELOPMENT.md +1 -1
- package/docs/ai/components/accordion.md +46 -80
- package/docs/ai/components/action-bar.md +75 -0
- package/docs/ai/components/activity-feed.md +7 -7
- package/docs/ai/components/alert.md +26 -44
- package/docs/ai/components/app-tiles.md +34 -39
- package/docs/ai/components/approval-flow.md +1 -1
- package/docs/ai/components/audio-recorder.md +35 -67
- package/docs/ai/components/availability.md +13 -34
- package/docs/ai/components/avatar-group.md +26 -13
- package/docs/ai/components/avatar.md +52 -36
- package/docs/ai/components/badge.md +21 -32
- package/docs/ai/components/banner.md +21 -43
- package/docs/ai/components/binpack.md +89 -0
- package/docs/ai/components/book.md +25 -23
- package/docs/ai/components/booking.md +31 -36
- package/docs/ai/components/breadcrumbs.md +36 -11
- package/docs/ai/components/button.md +33 -44
- package/docs/ai/components/calendar.md +37 -70
- package/docs/ai/components/camera-annotate.md +31 -64
- package/docs/ai/components/camera.md +38 -120
- package/docs/ai/components/candlestick.md +32 -52
- package/docs/ai/components/card.md +20 -30
- package/docs/ai/components/carousel.md +32 -32
- package/docs/ai/components/cart.md +24 -29
- package/docs/ai/components/chart.md +29 -114
- package/docs/ai/components/chat.md +38 -75
- package/docs/ai/components/checkbox.md +22 -41
- package/docs/ai/components/chip.md +18 -54
- package/docs/ai/components/code-block.md +57 -178
- package/docs/ai/components/color-display.md +12 -32
- package/docs/ai/components/color-picker.md +17 -39
- package/docs/ai/components/command-palette.md +49 -71
- package/docs/ai/components/comments.md +55 -36
- package/docs/ai/components/countdown.md +28 -30
- package/docs/ai/components/cropper.md +33 -33
- package/docs/ai/components/data-card.md +20 -14
- package/docs/ai/components/date-picker.md +40 -47
- package/docs/ai/components/date-range-picker.md +31 -15
- package/docs/ai/components/date-time-picker.md +23 -46
- package/docs/ai/components/diff.md +30 -31
- package/docs/ai/components/divider.md +17 -47
- package/docs/ai/components/doc.md +43 -68
- package/docs/ai/components/draw.md +35 -87
- package/docs/ai/components/drawer.md +48 -77
- package/docs/ai/components/empty-state.md +10 -44
- package/docs/ai/components/estimate.md +33 -58
- package/docs/ai/components/file-gallery.md +48 -100
- package/docs/ai/components/file-upload.md +17 -53
- package/docs/ai/components/flip-card.md +31 -23
- package/docs/ai/components/flow.md +37 -65
- package/docs/ai/components/form-builder.md +35 -75
- package/docs/ai/components/form-layout.md +10 -20
- package/docs/ai/components/funnel.md +33 -48
- package/docs/ai/components/gantt.md +27 -23
- package/docs/ai/components/gauge.md +16 -17
- package/docs/ai/components/heatmap.md +21 -21
- package/docs/ai/components/image.md +7 -13
- package/docs/ai/components/input.md +38 -70
- package/docs/ai/components/invoice.md +35 -36
- package/docs/ai/components/kanban.md +32 -61
- package/docs/ai/components/key-value.md +32 -16
- package/docs/ai/components/kpi.md +38 -73
- package/docs/ai/components/layout.md +29 -23
- package/docs/ai/components/leaderboard.md +28 -37
- package/docs/ai/components/link-preview.md +12 -18
- package/docs/ai/components/link.md +10 -7
- package/docs/ai/components/list.md +21 -5
- package/docs/ai/components/location.md +21 -25
- package/docs/ai/components/login.md +14 -9
- package/docs/ai/components/map.md +27 -33
- package/docs/ai/components/markdown.md +20 -24
- package/docs/ai/components/masonry.md +10 -14
- package/docs/ai/components/mentions.md +26 -12
- package/docs/ai/components/menu.md +54 -52
- package/docs/ai/components/message-strip.md +20 -20
- package/docs/ai/components/metric-table.md +14 -21
- package/docs/ai/components/modal.md +27 -18
- package/docs/ai/components/music-player.md +49 -41
- package/docs/ai/components/nav.md +34 -31
- package/docs/ai/components/network-graph.md +27 -42
- package/docs/ai/components/notification-center.md +31 -33
- package/docs/ai/components/order-tracker.md +36 -27
- package/docs/ai/components/org-chart.md +36 -31
- package/docs/ai/components/pagination.md +34 -26
- package/docs/ai/components/paint.md +53 -91
- package/docs/ai/components/pdf-viewer.md +35 -36
- package/docs/ai/components/permission-matrix.md +26 -31
- package/docs/ai/components/podcast-player.md +64 -70
- package/docs/ai/components/pricing-table.md +37 -48
- package/docs/ai/components/product-card.md +58 -41
- package/docs/ai/components/progress-ring.md +20 -24
- package/docs/ai/components/progress.md +28 -45
- package/docs/ai/components/qr-code.md +25 -27
- package/docs/ai/components/qr-reader.md +20 -23
- package/docs/ai/components/radio.md +17 -15
- package/docs/ai/components/range-slider.md +22 -11
- package/docs/ai/components/rating.md +29 -33
- package/docs/ai/components/receipt.md +50 -127
- package/docs/ai/components/recipe.md +44 -42
- package/docs/ai/components/sankey.md +21 -30
- package/docs/ai/components/scheduler.md +29 -41
- package/docs/ai/components/segmented-control.md +11 -15
- package/docs/ai/components/select.md +58 -102
- package/docs/ai/components/skeleton.md +16 -30
- package/docs/ai/components/slider.md +26 -20
- package/docs/ai/components/sortable.md +25 -27
- package/docs/ai/components/sparkline.md +21 -17
- package/docs/ai/components/spinner.md +9 -5
- package/docs/ai/components/split-button.md +10 -13
- package/docs/ai/components/split-pane.md +19 -14
- package/docs/ai/components/spotlight.md +31 -26
- package/docs/ai/components/spreadsheet.md +51 -97
- package/docs/ai/components/stat-group.md +9 -19
- package/docs/ai/components/step-input.md +17 -15
- package/docs/ai/components/stepper.md +14 -15
- package/docs/ai/components/switch.md +15 -9
- package/docs/ai/components/table.md +24 -84
- package/docs/ai/components/tabs.md +18 -10
- package/docs/ai/components/tag-input.md +18 -29
- package/docs/ai/components/tag.md +10 -22
- package/docs/ai/components/terminal.md +9 -9
- package/docs/ai/components/testimonial.md +9 -19
- package/docs/ai/components/textarea.md +15 -16
- package/docs/ai/components/theme.md +3 -3
- package/docs/ai/components/time-picker.md +30 -49
- package/docs/ai/components/time-range-picker.md +16 -15
- package/docs/ai/components/timeline.md +5 -4
- package/docs/ai/components/timer.md +8 -8
- package/docs/ai/components/toast.md +24 -18
- package/docs/ai/components/tooltip.md +11 -22
- package/docs/ai/components/tree.md +9 -9
- package/docs/ai/components/treemap.md +14 -13
- package/docs/ai/components/user-card.md +21 -27
- package/docs/ai/components/video-player.md +35 -52
- package/docs/ai/components/virtual-scroller.md +1 -1
- package/docs/ai/components/waterfall.md +17 -16
- package/docs/ai/components/weather.md +19 -34
- package/docs/ai/components/work-order.md +58 -134
- package/docs/ai/patterns.md +63 -0
- package/docs/components/accordion.md +72 -151
- package/docs/components/action-bar.md +185 -0
- package/docs/components/activity-feed.md +9 -14
- package/docs/components/alert.md +17 -109
- package/docs/components/app-tiles.md +58 -43
- package/docs/components/approval-flow.md +8 -14
- package/docs/components/audio-recorder.md +45 -51
- package/docs/components/availability.md +30 -45
- package/docs/components/avatar-group.md +34 -14
- package/docs/components/avatar.md +20 -55
- package/docs/components/badge.md +53 -470
- package/docs/components/banner.md +44 -30
- package/docs/components/binpack.md +208 -0
- package/docs/components/book.md +78 -57
- package/docs/components/booking.md +35 -87
- package/docs/components/breadcrumbs.md +74 -448
- package/docs/components/button.md +72 -603
- package/docs/components/calendar.md +77 -261
- package/docs/components/camera-annotate.md +44 -96
- package/docs/components/camera.md +94 -333
- package/docs/components/candlestick.md +79 -116
- package/docs/components/card.md +51 -689
- package/docs/components/carousel.md +29 -76
- package/docs/components/cart.md +44 -136
- package/docs/components/chart.md +95 -438
- package/docs/components/chat.md +175 -439
- package/docs/components/checkbox.md +52 -609
- package/docs/components/chip.md +45 -574
- package/docs/components/code-block.md +157 -421
- package/docs/components/color-display.md +45 -54
- package/docs/components/color-picker.md +103 -36
- package/docs/components/command-palette.md +98 -92
- package/docs/components/comments.md +16 -10
- package/docs/components/countdown.md +15 -20
- package/docs/components/cropper.md +14 -16
- package/docs/components/data-card.md +16 -15
- package/docs/components/date-picker.md +45 -25
- package/docs/components/date-range-picker.md +140 -87
- package/docs/components/date-time-picker.md +25 -28
- package/docs/components/diff.md +22 -17
- package/docs/components/divider.md +18 -20
- package/docs/components/doc.md +105 -197
- package/docs/components/draw.md +117 -223
- package/docs/components/drawer.md +113 -478
- package/docs/components/empty-state.md +13 -29
- package/docs/components/estimate.md +58 -118
- package/docs/components/file-gallery.md +123 -495
- package/docs/components/file-upload.md +36 -123
- package/docs/components/flip-card.md +30 -34
- package/docs/components/flow.md +74 -89
- package/docs/components/form-builder.md +59 -86
- package/docs/components/form-layout.md +21 -31
- package/docs/components/funnel.md +21 -22
- package/docs/components/gantt.md +5 -5
- package/docs/components/gauge.md +5 -23
- package/docs/components/heatmap.md +13 -55
- package/docs/components/image.md +28 -32
- package/docs/components/input.md +25 -14
- package/docs/components/invoice.md +34 -33
- package/docs/components/kanban.md +99 -394
- package/docs/components/key-value.md +22 -12
- package/docs/components/kpi.md +41 -112
- package/docs/components/layout.md +7 -13
- package/docs/components/leaderboard.md +52 -76
- package/docs/components/link-preview.md +20 -16
- package/docs/components/link.md +22 -19
- package/docs/components/list.md +44 -26
- package/docs/components/location.md +9 -13
- package/docs/components/login.md +42 -36
- package/docs/components/map.md +24 -46
- package/docs/components/markdown.md +14 -25
- package/docs/components/masonry.md +15 -13
- package/docs/components/mentions.md +36 -25
- package/docs/components/menu.md +39 -46
- package/docs/components/message-strip.md +15 -51
- package/docs/components/metric-table.md +50 -72
- package/docs/components/modal.md +32 -43
- package/docs/components/music-player.md +41 -49
- package/docs/components/nav.md +23 -13
- package/docs/components/network-graph.md +14 -13
- package/docs/components/notification-center.md +68 -172
- package/docs/components/order-tracker.md +72 -117
- package/docs/components/org-chart.md +58 -207
- package/docs/components/pagination.md +67 -89
- package/docs/components/paint.md +86 -172
- package/docs/components/pdf-viewer.md +46 -151
- package/docs/components/permission-matrix.md +61 -112
- package/docs/components/podcast-player.md +41 -119
- package/docs/components/pricing-table.md +104 -147
- package/docs/components/product-card.md +94 -197
- package/docs/components/progress-ring.md +29 -32
- package/docs/components/progress.md +30 -61
- package/docs/components/qr-code.md +53 -61
- package/docs/components/qr-reader.md +53 -42
- package/docs/components/radio.md +42 -40
- package/docs/components/range-slider.md +41 -30
- package/docs/components/rating.md +50 -84
- package/docs/components/receipt.md +91 -129
- package/docs/components/recipe.md +107 -216
- package/docs/components/sankey.md +47 -83
- package/docs/components/scheduler.md +81 -184
- package/docs/components/segmented-control.md +48 -40
- package/docs/components/select.md +107 -129
- package/docs/components/skeleton.md +33 -47
- package/docs/components/slider.md +49 -53
- package/docs/components/sortable.md +43 -186
- package/docs/components/sparkline.md +26 -25
- package/docs/components/spinner.md +32 -37
- package/docs/components/split-button.md +43 -23
- package/docs/components/split-pane.md +41 -58
- package/docs/components/spotlight.md +53 -145
- package/docs/components/spreadsheet.md +84 -307
- package/docs/components/stat-group.md +27 -61
- package/docs/components/step-input.md +44 -41
- package/docs/components/stepper.md +55 -89
- package/docs/components/switch.md +39 -39
- package/docs/components/table.md +27 -32
- package/docs/components/tabs.md +36 -27
- package/docs/components/tag-input.md +50 -176
- package/docs/components/tag.md +12 -50
- package/docs/components/terminal.md +32 -37
- package/docs/components/testimonial.md +24 -81
- package/docs/components/textarea.md +9 -14
- package/docs/components/theme.md +10 -23
- package/docs/components/time-picker.md +48 -72
- package/docs/components/time-range-picker.md +22 -41
- package/docs/components/timeline.md +7 -14
- package/docs/components/timer.md +16 -32
- package/docs/components/toast.md +19 -45
- package/docs/components/tooltip.md +13 -115
- package/docs/components/tree.md +2 -19
- package/docs/components/treemap.md +19 -43
- package/docs/components/user-card.md +13 -22
- package/docs/components/video-player.md +53 -227
- package/docs/components/virtual-scroller.md +11 -44
- package/docs/components/waterfall.md +58 -137
- package/docs/components/weather.md +94 -153
- package/docs/components/work-order.md +56 -143
- package/docs/plans/2026-03-09-action-bar-design.md +104 -0
- package/docs/plans/2026-03-09-action-bar-plan.md +676 -0
- package/docs/plans/2026-03-10-react-integration-design.md +166 -0
- package/docs/request-response.md +77 -0
- package/package.json +1 -1
|
@@ -1,35 +1,32 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/pagination.md -->
|
|
2
2
|
|
|
3
3
|
# Pagination
|
|
4
4
|
`<snice-pagination>`
|
|
5
5
|
|
|
6
|
-
A pagination navigation component
|
|
6
|
+
A pagination navigation component with page numbers, ellipsis, and first/previous/next/last navigation buttons.
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<script src="snice-runtime.min.js"></script>
|
|
18
|
-
<script src="snice-pagination.min.js"></script>
|
|
19
|
-
```
|
|
8
|
+
## Table of Contents
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [CSS Parts](#css-parts)
|
|
13
|
+
- [CSS Custom Properties](#css-custom-properties)
|
|
14
|
+
- [Basic Usage](#basic-usage)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Accessibility](#accessibility)
|
|
20
17
|
|
|
21
18
|
## Properties
|
|
22
19
|
|
|
23
20
|
| Property | Type | Default | Description |
|
|
24
21
|
|----------|------|---------|-------------|
|
|
25
|
-
| `current` | `number` | `1` |
|
|
22
|
+
| `current` | `number` | `1` | Current active page |
|
|
26
23
|
| `total` | `number` | `1` | Total number of pages |
|
|
27
|
-
| `siblings` | `number` | `1` |
|
|
28
|
-
| `showFirst` (attr: `show-first`) | `boolean` | `true` | Show
|
|
29
|
-
| `showLast` (attr: `show-last`) | `boolean` | `true` | Show
|
|
30
|
-
| `showPrev` (attr: `show-prev`) | `boolean` | `true` | Show
|
|
31
|
-
| `showNext` (attr: `show-next`) | `boolean` | `true` | Show
|
|
32
|
-
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` |
|
|
24
|
+
| `siblings` | `number` | `1` | Number of pages shown on each side of the current page |
|
|
25
|
+
| `showFirst` (attr: `show-first`) | `boolean` | `true` | Show first page button |
|
|
26
|
+
| `showLast` (attr: `show-last`) | `boolean` | `true` | Show last page button |
|
|
27
|
+
| `showPrev` (attr: `show-prev`) | `boolean` | `true` | Show previous page button |
|
|
28
|
+
| `showNext` (attr: `show-next`) | `boolean` | `true` | Show next page button |
|
|
29
|
+
| `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Button size |
|
|
33
30
|
| `variant` | `'default' \| 'rounded' \| 'text'` | `'default'` | Visual style |
|
|
34
31
|
|
|
35
32
|
## Methods
|
|
@@ -48,46 +45,38 @@ import 'snice/components/pagination/snice-pagination';
|
|
|
48
45
|
|-------|--------|-------------|
|
|
49
46
|
| `pagination-change` | `{ page: number, previousPage: number }` | Fired when the page changes |
|
|
50
47
|
|
|
51
|
-
## CSS Custom Properties
|
|
52
|
-
|
|
53
|
-
| Property | Description | Default |
|
|
54
|
-
|----------|-------------|---------|
|
|
55
|
-
| `--pagination-gap` | Gap between buttons | `4px` |
|
|
56
|
-
| `--pagination-button-size` | Button dimensions | `32px` |
|
|
57
|
-
| `--pagination-button-padding` | Button padding | `8px` |
|
|
58
|
-
| `--pagination-font-size` | Font size | `14px` |
|
|
59
|
-
| `--pagination-border-radius` | Button border radius | `4px` |
|
|
60
|
-
|
|
61
48
|
## CSS Parts
|
|
62
49
|
|
|
63
50
|
Style internal elements from outside the shadow DOM using `::part()`.
|
|
64
51
|
|
|
65
52
|
| Part | Element | Description |
|
|
66
53
|
|------|---------|-------------|
|
|
67
|
-
| `base` | `<nav>` | The
|
|
68
|
-
| `button` | `<button>` | All navigation buttons (shared) |
|
|
69
|
-
| `first-button` | `<button>` | The
|
|
70
|
-
| `prev-button` | `<button>` | The
|
|
71
|
-
| `pages` | `<div>` |
|
|
72
|
-
| `ellipsis` | `<span>` | The ellipsis
|
|
73
|
-
| `next-button` | `<button>` | The
|
|
74
|
-
| `last-button` | `<button>` | The
|
|
54
|
+
| `base` | `<nav>` | The pagination nav container |
|
|
55
|
+
| `button` | `<button>` | All navigation buttons (shared part) |
|
|
56
|
+
| `first-button` | `<button>` | The first page button |
|
|
57
|
+
| `prev-button` | `<button>` | The previous page button |
|
|
58
|
+
| `pages` | `<div>` | The page numbers container |
|
|
59
|
+
| `ellipsis` | `<span>` | The ellipsis indicators |
|
|
60
|
+
| `next-button` | `<button>` | The next page button |
|
|
61
|
+
| `last-button` | `<button>` | The last page button |
|
|
75
62
|
|
|
76
63
|
```css
|
|
77
|
-
snice-pagination::part(base) {
|
|
78
|
-
gap: 8px;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
64
|
snice-pagination::part(button) {
|
|
82
65
|
border-radius: 50%;
|
|
83
66
|
font-weight: 600;
|
|
84
67
|
}
|
|
85
|
-
|
|
86
|
-
snice-pagination::part(ellipsis) {
|
|
87
|
-
color: #9ca3af;
|
|
88
|
-
}
|
|
89
68
|
```
|
|
90
69
|
|
|
70
|
+
## CSS Custom Properties
|
|
71
|
+
|
|
72
|
+
| Property | Description | Default |
|
|
73
|
+
|----------|-------------|---------|
|
|
74
|
+
| `--pagination-gap` | Gap between buttons | `4px` |
|
|
75
|
+
| `--pagination-button-size` | Button width and height | `32px` |
|
|
76
|
+
| `--pagination-button-padding` | Button horizontal padding | `8px` |
|
|
77
|
+
| `--pagination-font-size` | Button font size | `14px` |
|
|
78
|
+
| `--pagination-border-radius` | Button border radius | `4px` |
|
|
79
|
+
|
|
91
80
|
## Basic Usage
|
|
92
81
|
|
|
93
82
|
```typescript
|
|
@@ -96,77 +85,66 @@ import 'snice/components/pagination/snice-pagination';
|
|
|
96
85
|
|
|
97
86
|
```html
|
|
98
87
|
<snice-pagination current="1" total="10"></snice-pagination>
|
|
88
|
+
|
|
89
|
+
<script type="module">
|
|
90
|
+
document.querySelector('snice-pagination').addEventListener('pagination-change', (e) => {
|
|
91
|
+
console.log('Page:', e.detail.page, 'Previous:', e.detail.previousPage);
|
|
92
|
+
});
|
|
93
|
+
</script>
|
|
99
94
|
```
|
|
100
95
|
|
|
101
96
|
## Examples
|
|
102
97
|
|
|
103
|
-
###
|
|
98
|
+
### Variants
|
|
104
99
|
|
|
105
|
-
Use the `
|
|
100
|
+
Use the `variant` attribute to change the button style.
|
|
106
101
|
|
|
107
102
|
```html
|
|
108
|
-
<snice-pagination total="
|
|
109
|
-
<snice-pagination total="
|
|
110
|
-
<snice-pagination total="
|
|
103
|
+
<snice-pagination total="20" variant="default"></snice-pagination>
|
|
104
|
+
<snice-pagination total="20" variant="rounded"></snice-pagination>
|
|
105
|
+
<snice-pagination total="20" variant="text"></snice-pagination>
|
|
111
106
|
```
|
|
112
107
|
|
|
113
|
-
###
|
|
108
|
+
### Sizes
|
|
114
109
|
|
|
115
|
-
Use the `
|
|
110
|
+
Use the `size` attribute to adjust button dimensions.
|
|
116
111
|
|
|
117
112
|
```html
|
|
118
|
-
<snice-pagination total="10"
|
|
119
|
-
<snice-pagination total="10"
|
|
120
|
-
<snice-pagination total="10"
|
|
113
|
+
<snice-pagination total="10" size="small"></snice-pagination>
|
|
114
|
+
<snice-pagination total="10" size="medium"></snice-pagination>
|
|
115
|
+
<snice-pagination total="10" size="large"></snice-pagination>
|
|
121
116
|
```
|
|
122
117
|
|
|
123
|
-
###
|
|
118
|
+
### Extended Siblings
|
|
124
119
|
|
|
125
|
-
Use
|
|
120
|
+
Use `siblings` to show more page numbers around the current page.
|
|
126
121
|
|
|
127
122
|
```html
|
|
128
|
-
|
|
129
|
-
<snice-pagination current="5" total="20" siblings="1"></snice-pagination>
|
|
130
|
-
|
|
131
|
-
<!-- 3 pages each side: [1] ... [7] [8] [9] [10] [11] [12] [13] ... [20] -->
|
|
132
|
-
<snice-pagination current="10" total="20" siblings="3"></snice-pagination>
|
|
123
|
+
<snice-pagination total="50" siblings="3"></snice-pagination>
|
|
133
124
|
```
|
|
134
125
|
|
|
135
|
-
###
|
|
126
|
+
### Minimal Navigation
|
|
136
127
|
|
|
137
|
-
Hide
|
|
128
|
+
Hide specific navigation buttons for a simpler layout.
|
|
138
129
|
|
|
139
130
|
```html
|
|
140
131
|
<snice-pagination total="10" show-first="false" show-last="false"></snice-pagination>
|
|
141
|
-
|
|
142
|
-
<!-- Page numbers only -->
|
|
143
|
-
<snice-pagination
|
|
144
|
-
total="10"
|
|
145
|
-
show-first="false"
|
|
146
|
-
show-last="false"
|
|
147
|
-
show-prev="false"
|
|
148
|
-
show-next="false">
|
|
149
|
-
</snice-pagination>
|
|
150
132
|
```
|
|
151
133
|
|
|
152
|
-
###
|
|
134
|
+
### Programmatic Navigation
|
|
153
135
|
|
|
154
|
-
|
|
155
|
-
<snice-pagination total="20"></snice-pagination>
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
```typescript
|
|
159
|
-
pagination.addEventListener('pagination-change', (e) => {
|
|
160
|
-
console.log(`Page ${e.detail.previousPage} → ${e.detail.page}`);
|
|
161
|
-
});
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Programmatic Control
|
|
136
|
+
Use methods to control pagination from JavaScript.
|
|
165
137
|
|
|
166
138
|
```typescript
|
|
139
|
+
const pagination = document.querySelector('snice-pagination');
|
|
167
140
|
pagination.goToPage(5);
|
|
168
141
|
pagination.nextPage();
|
|
169
142
|
pagination.previousPage();
|
|
170
|
-
pagination.firstPage();
|
|
171
|
-
pagination.lastPage();
|
|
172
143
|
```
|
|
144
|
+
|
|
145
|
+
## Accessibility
|
|
146
|
+
|
|
147
|
+
- The component uses a `<nav>` element with `aria-label="Pagination"`
|
|
148
|
+
- The active page has `aria-current="page"`
|
|
149
|
+
- Each button has an `aria-label` describing its action
|
|
150
|
+
- Boundary buttons are automatically disabled when at the first or last page
|
package/docs/components/paint.md
CHANGED
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/paint.md -->
|
|
2
2
|
|
|
3
3
|
# Paint
|
|
4
4
|
`<snice-paint>`
|
|
5
5
|
|
|
6
|
-
A self-contained drawing canvas with a built-in toolbar for
|
|
6
|
+
A self-contained drawing canvas with a built-in toolbar for colors, brush size, eraser, undo/redo, and clear.
|
|
7
7
|
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<script src="snice-paint.min.js"></script>
|
|
19
|
-
```
|
|
8
|
+
## Table of Contents
|
|
9
|
+
- [Properties](#properties)
|
|
10
|
+
- [Methods](#methods)
|
|
11
|
+
- [Events](#events)
|
|
12
|
+
- [Slots](#slots)
|
|
13
|
+
- [CSS Parts](#css-parts)
|
|
14
|
+
- [Basic Usage](#basic-usage)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Accessibility](#accessibility)
|
|
17
|
+
- [Data Types](#data-types)
|
|
20
18
|
|
|
21
19
|
## Properties
|
|
22
20
|
|
|
23
21
|
| Property | Type | Default | Description |
|
|
24
22
|
|----------|------|---------|-------------|
|
|
25
|
-
| `colors` | `string[]` | 8 default colors | Color palette (set via JSON attribute) |
|
|
26
23
|
| `color` | `string` | `'#3b82f6'` | Current brush color |
|
|
27
|
-
| `strokeWidth` (attr: `stroke-width`) | `number` | `3` |
|
|
28
|
-
| `minStrokeWidth` (attr: `min-stroke-width`) | `number` | `1` | Minimum
|
|
29
|
-
| `maxStrokeWidth` (attr: `max-stroke-width`) | `number` | `20` | Maximum
|
|
30
|
-
| `controls` | `string` | `'colors,size,eraser,undo,redo,clear'` |
|
|
24
|
+
| `strokeWidth` (attr: `stroke-width`) | `number` | `3` | Current brush stroke width |
|
|
25
|
+
| `minStrokeWidth` (attr: `min-stroke-width`) | `number` | `1` | Minimum brush size |
|
|
26
|
+
| `maxStrokeWidth` (attr: `max-stroke-width`) | `number` | `20` | Maximum brush size |
|
|
27
|
+
| `controls` | `string` | `'colors,size,eraser,undo,redo,clear'` | Comma-separated list of toolbar controls |
|
|
31
28
|
| `backgroundColor` (attr: `background-color`) | `string` | `'#ffffff'` | Canvas background color |
|
|
32
|
-
| `colorSelects` (attr: `color-selects`) | `number` | `0` | Number of
|
|
33
|
-
| `disabled` | `boolean` | `false` | Disable
|
|
29
|
+
| `colorSelects` (attr: `color-selects`) | `number` | `0` | Number of extra color picker dots in palette |
|
|
30
|
+
| `disabled` | `boolean` | `false` | Disable drawing interaction |
|
|
31
|
+
| `colors` | `string[]` | `['#3b82f6',...]` | Color palette (getter/setter, set via JS or JSON attribute) |
|
|
34
32
|
|
|
35
33
|
## Methods
|
|
36
34
|
|
|
@@ -38,82 +36,35 @@ import 'snice/components/paint/snice-paint';
|
|
|
38
36
|
|--------|-----------|-------------|
|
|
39
37
|
| `undo()` | -- | Undo the last stroke |
|
|
40
38
|
| `redo()` | -- | Redo the last undone stroke |
|
|
41
|
-
| `clear()` | -- | Clear the
|
|
42
|
-
| `toDataURL()` | `type?: string, quality?: number` | Export as data URL |
|
|
43
|
-
| `toBlob()` | `type?: string, quality?: number` | Export as Blob (async) |
|
|
44
|
-
| `download()` | `filename?: string` | Download as
|
|
45
|
-
| `getStrokes()` | -- | Get all strokes
|
|
46
|
-
| `setStrokes()` | `strokes: PaintStroke[]` |
|
|
39
|
+
| `clear()` | -- | Clear the canvas |
|
|
40
|
+
| `toDataURL()` | `type?: string, quality?: number` | Export canvas as a data URL |
|
|
41
|
+
| `toBlob()` | `type?: string, quality?: number` | Export canvas as a Blob (async) |
|
|
42
|
+
| `download()` | `filename?: string` | Download canvas as an image file |
|
|
43
|
+
| `getStrokes()` | -- | Get a copy of all strokes |
|
|
44
|
+
| `setStrokes()` | `strokes: PaintStroke[]` | Replace all strokes and redraw |
|
|
47
45
|
|
|
48
46
|
## Events
|
|
49
47
|
|
|
50
48
|
| Event | Detail | Description |
|
|
51
49
|
|-------|--------|-------------|
|
|
52
|
-
| `paint-start` | `{ point: Point }` |
|
|
53
|
-
| `paint-end` | `{ stroke: PaintStroke }` |
|
|
54
|
-
| `paint-clear` |
|
|
55
|
-
| `paint-undo` |
|
|
56
|
-
| `paint-redo` |
|
|
57
|
-
| `color-select` | `{ color: string, index: number }` |
|
|
50
|
+
| `paint-start` | `{ point: Point }` | Fired when drawing starts |
|
|
51
|
+
| `paint-end` | `{ stroke: PaintStroke }` | Fired when a stroke is completed |
|
|
52
|
+
| `paint-clear` | `{}` | Fired when the canvas is cleared |
|
|
53
|
+
| `paint-undo` | `{}` | Fired when an undo is performed |
|
|
54
|
+
| `paint-redo` | `{}` | Fired when a redo is performed |
|
|
55
|
+
| `color-select` | `{ color: string, index: number }` | Fired when a custom color picker is used |
|
|
58
56
|
|
|
59
57
|
## Slots
|
|
60
58
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
| Slot | Behavior | Description |
|
|
59
|
+
| Name | Behavior | Description |
|
|
64
60
|
|------|----------|-------------|
|
|
65
|
-
| `toolbar-start` | Additive |
|
|
61
|
+
| `toolbar-start` | Additive | Content prepended before default controls |
|
|
66
62
|
| `colors` | Replaces default | Replaces the built-in color swatches |
|
|
67
|
-
| `size` | Replaces default | Replaces the built-in
|
|
68
|
-
| `tools` | Additive | Custom tool buttons
|
|
69
|
-
| `toolbar-end` | Additive |
|
|
70
|
-
|
|
71
|
-
The toolbar will automatically appear if any slot has content, even when `controls=""`.
|
|
63
|
+
| `size` | Replaces default | Replaces the built-in size slider |
|
|
64
|
+
| `tools` | Additive | Custom tool buttons (between eraser and undo/redo) |
|
|
65
|
+
| `toolbar-end` | Additive | Content appended after default controls |
|
|
72
66
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
Add extra tool buttons alongside the built-in eraser.
|
|
76
|
-
|
|
77
|
-
```html
|
|
78
|
-
<snice-paint>
|
|
79
|
-
<button slot="tools" onclick="...">🔲 Rectangle</button>
|
|
80
|
-
<button slot="tools" onclick="...">⭕ Circle</button>
|
|
81
|
-
<button slot="tools" onclick="...">📝 Text</button>
|
|
82
|
-
</snice-paint>
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Replacing the Color Picker
|
|
86
|
-
|
|
87
|
-
Swap the default swatch grid for a native color input or your own palette component.
|
|
88
|
-
|
|
89
|
-
```html
|
|
90
|
-
<snice-paint>
|
|
91
|
-
<input slot="colors" type="color" onchange="this.closest('snice-paint').color = this.value">
|
|
92
|
-
</snice-paint>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Adding a Save Button
|
|
96
|
-
|
|
97
|
-
Append controls after the built-in buttons.
|
|
98
|
-
|
|
99
|
-
```html
|
|
100
|
-
<snice-paint>
|
|
101
|
-
<button slot="toolbar-end" onclick="this.closest('snice-paint').download()">💾 Save</button>
|
|
102
|
-
</snice-paint>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Combining Slots
|
|
106
|
-
|
|
107
|
-
All slots can be used together.
|
|
108
|
-
|
|
109
|
-
```html
|
|
110
|
-
<snice-paint>
|
|
111
|
-
<span slot="toolbar-start" style="font-size:0.5rem;text-align:center">My App</span>
|
|
112
|
-
<input slot="colors" type="color" onchange="this.closest('snice-paint').color = this.value">
|
|
113
|
-
<button slot="tools" onclick="...">🔲 Rect</button>
|
|
114
|
-
<button slot="toolbar-end" onclick="this.closest('snice-paint').download()">💾 Save</button>
|
|
115
|
-
</snice-paint>
|
|
116
|
-
```
|
|
67
|
+
The toolbar auto-shows when any slot has content, even if `controls=""`.
|
|
117
68
|
|
|
118
69
|
## CSS Parts
|
|
119
70
|
|
|
@@ -122,21 +73,10 @@ Style internal elements from outside the shadow DOM using `::part()`.
|
|
|
122
73
|
| Part | Element | Description |
|
|
123
74
|
|------|---------|-------------|
|
|
124
75
|
| `base` | `<div>` | The outer paint container |
|
|
125
|
-
| `toolbar` | `<div>` | The toolbar with
|
|
126
|
-
| `canvas-wrap` | `<div>` | The wrapper
|
|
76
|
+
| `toolbar` | `<div>` | The toolbar with controls |
|
|
77
|
+
| `canvas-wrap` | `<div>` | The canvas wrapper element |
|
|
127
78
|
| `canvas` | `<canvas>` | The drawing canvas element |
|
|
128
79
|
|
|
129
|
-
```css
|
|
130
|
-
snice-paint::part(toolbar) {
|
|
131
|
-
background: #f9fafb;
|
|
132
|
-
border-bottom: 1px solid #e5e7eb;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
snice-paint::part(canvas) {
|
|
136
|
-
border-radius: 0 0 8px 8px;
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
80
|
## Basic Usage
|
|
141
81
|
|
|
142
82
|
```typescript
|
|
@@ -151,119 +91,93 @@ import 'snice/components/paint/snice-paint';
|
|
|
151
91
|
|
|
152
92
|
### Custom Colors
|
|
153
93
|
|
|
154
|
-
|
|
94
|
+
Set the color palette via a JSON attribute or JavaScript.
|
|
155
95
|
|
|
156
96
|
```html
|
|
157
|
-
<snice-paint colors='["#ff0000","#00ff00","#0000ff"
|
|
97
|
+
<snice-paint colors='["#ff0000","#00ff00","#0000ff"]'></snice-paint>
|
|
158
98
|
```
|
|
159
99
|
|
|
160
|
-
###
|
|
100
|
+
### Minimal Controls
|
|
161
101
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
```html
|
|
165
|
-
<snice-paint min-stroke-width="2" max-stroke-width="50" stroke-width="10"></snice-paint>
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### Minimal Toolbar
|
|
169
|
-
|
|
170
|
-
Use the `controls` attribute with a comma-separated list to show only specific controls.
|
|
102
|
+
Show only specific toolbar controls.
|
|
171
103
|
|
|
172
104
|
```html
|
|
173
105
|
<snice-paint controls="colors,undo"></snice-paint>
|
|
174
106
|
```
|
|
175
107
|
|
|
176
|
-
###
|
|
108
|
+
### Custom Size Range
|
|
177
109
|
|
|
178
|
-
|
|
110
|
+
Adjust the minimum and maximum brush sizes.
|
|
179
111
|
|
|
180
112
|
```html
|
|
181
|
-
<snice-paint
|
|
113
|
+
<snice-paint min-stroke-width="2" max-stroke-width="50"></snice-paint>
|
|
182
114
|
```
|
|
183
115
|
|
|
184
|
-
###
|
|
116
|
+
### Color Pickers
|
|
185
117
|
|
|
186
|
-
|
|
118
|
+
Add extra color picker inputs to the palette.
|
|
187
119
|
|
|
188
120
|
```html
|
|
189
|
-
<snice-paint
|
|
121
|
+
<snice-paint color-selects="2"></snice-paint>
|
|
190
122
|
```
|
|
191
123
|
|
|
192
|
-
### Custom
|
|
124
|
+
### Custom Toolbar Content
|
|
193
125
|
|
|
194
|
-
Use
|
|
126
|
+
Use slots to extend the toolbar with custom controls.
|
|
195
127
|
|
|
196
128
|
```html
|
|
197
|
-
<snice-paint
|
|
129
|
+
<snice-paint>
|
|
130
|
+
<button slot="tools" onclick="...">Rectangle</button>
|
|
131
|
+
<button slot="toolbar-end" onclick="this.closest('snice-paint').download()">Save</button>
|
|
132
|
+
</snice-paint>
|
|
198
133
|
```
|
|
199
134
|
|
|
200
|
-
###
|
|
135
|
+
### Replace Color Picker
|
|
201
136
|
|
|
202
|
-
|
|
137
|
+
Swap the default swatches for a native color input.
|
|
203
138
|
|
|
204
139
|
```html
|
|
205
|
-
<snice-paint
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
Listen for custom color selections:
|
|
209
|
-
|
|
210
|
-
```typescript
|
|
211
|
-
paint.addEventListener('color-select', (e) => {
|
|
212
|
-
console.log(`Custom color ${e.detail.index}: ${e.detail.color}`);
|
|
213
|
-
});
|
|
140
|
+
<snice-paint>
|
|
141
|
+
<input slot="colors" type="color" onchange="this.closest('snice-paint').color = this.value">
|
|
142
|
+
</snice-paint>
|
|
214
143
|
```
|
|
215
144
|
|
|
216
|
-
###
|
|
145
|
+
### Export and Save/Load
|
|
217
146
|
|
|
218
147
|
```typescript
|
|
219
|
-
//
|
|
220
|
-
paint.
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
// Undo / redo / clear
|
|
224
|
-
paint.undo();
|
|
225
|
-
paint.redo();
|
|
226
|
-
paint.clear();
|
|
227
|
-
|
|
228
|
-
// Export
|
|
229
|
-
paint.download('my-painting.png');
|
|
230
|
-
const dataURL = paint.toDataURL('image/png');
|
|
231
|
-
const blob = await paint.toBlob('image/jpeg', 0.9);
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### Save and Restore Strokes
|
|
148
|
+
// Export as image
|
|
149
|
+
paint.download('artwork.png');
|
|
150
|
+
const dataUrl = paint.toDataURL();
|
|
151
|
+
const blob = await paint.toBlob();
|
|
235
152
|
|
|
236
|
-
|
|
237
|
-
// Save strokes
|
|
153
|
+
// Save and restore strokes
|
|
238
154
|
const strokes = paint.getStrokes();
|
|
239
|
-
localStorage.setItem('
|
|
240
|
-
|
|
241
|
-
// Restore strokes
|
|
242
|
-
const saved = JSON.parse(localStorage.getItem('painting'));
|
|
243
|
-
paint.setStrokes(saved);
|
|
155
|
+
localStorage.setItem('drawing', JSON.stringify(strokes));
|
|
156
|
+
paint.setStrokes(JSON.parse(localStorage.getItem('drawing')));
|
|
244
157
|
```
|
|
245
158
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
```typescript
|
|
249
|
-
paint.addEventListener('paint-end', (e) => {
|
|
250
|
-
console.log(`Stroke with ${e.detail.stroke.points.length} points`);
|
|
251
|
-
});
|
|
159
|
+
## Accessibility
|
|
252
160
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
```
|
|
161
|
+
- Canvas supports pointer events for drawing on touch and mouse devices
|
|
162
|
+
- All toolbar buttons have `title` attributes for tooltips
|
|
163
|
+
- The `disabled` property prevents all drawing interaction
|
|
257
164
|
|
|
258
|
-
##
|
|
165
|
+
## Data Types
|
|
259
166
|
|
|
260
167
|
```typescript
|
|
168
|
+
interface Point {
|
|
169
|
+
x: number;
|
|
170
|
+
y: number;
|
|
171
|
+
}
|
|
172
|
+
|
|
261
173
|
interface PaintStroke {
|
|
262
|
-
id: string;
|
|
263
|
-
tool: 'pen' | 'eraser';
|
|
264
|
-
color: string;
|
|
265
|
-
width: number;
|
|
266
|
-
points: Point[];
|
|
267
|
-
timestamp: number;
|
|
174
|
+
id: string; // Unique stroke identifier
|
|
175
|
+
tool: 'pen' | 'eraser'; // Drawing tool used
|
|
176
|
+
color: string; // Stroke color
|
|
177
|
+
width: number; // Stroke width
|
|
178
|
+
points: Point[]; // Array of points in the stroke
|
|
179
|
+
timestamp: number; // When the stroke was created
|
|
268
180
|
}
|
|
181
|
+
|
|
182
|
+
type PaintControl = 'colors' | 'size' | 'eraser' | 'undo' | 'redo' | 'clear';
|
|
269
183
|
```
|