snice 4.27.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 +2 -2
- package/dist/cdn/badge/snice-badge.js.map +1 -1
- package/dist/cdn/badge/snice-badge.min.js +2 -2
- package/dist/cdn/badge/snice-badge.min.js.map +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 +11 -10
- package/dist/cdn/button/snice-button.js.map +1 -1
- package/dist/cdn/button/snice-button.min.js +3 -3
- 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 +11 -10
- package/dist/cdn/login/snice-login.js.map +1 -1
- package/dist/cdn/login/snice-login.min.js +5 -5
- 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 +152 -62
- 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 +152 -61
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js +8 -8
- 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 +11 -10
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +73 -73
- 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/badge/snice-badge.js +1 -1
- package/dist/components/badge/snice-badge.js.map +1 -1
- 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.d.ts +2 -2
- package/dist/components/button/snice-button.js +11 -10
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/create-request-handler.d.ts +42 -0
- package/dist/index.cjs +149 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +149 -59
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +149 -58
- package/dist/index.iife.js.map +1 -1
- package/dist/parts.d.ts +9 -7
- 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 +20 -10
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/calendar.md -->
|
|
2
2
|
|
|
3
3
|
# Calendar Component
|
|
4
4
|
|
|
5
|
-
Display and select dates with event support.
|
|
5
|
+
Display and select dates with event support, date restrictions, and locale-aware formatting.
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
- [Properties](#properties)
|
|
9
|
+
- [Methods](#methods)
|
|
10
|
+
- [Events](#events)
|
|
11
|
+
- [CSS Parts](#css-parts)
|
|
12
|
+
- [Basic Usage](#basic-usage)
|
|
13
|
+
- [Examples](#examples)
|
|
14
|
+
- [Keyboard Navigation](#keyboard-navigation)
|
|
15
|
+
- [Accessibility](#accessibility)
|
|
6
16
|
|
|
7
17
|
## Properties
|
|
8
18
|
|
|
@@ -11,89 +21,15 @@ Display and select dates with event support.
|
|
|
11
21
|
| `value` | `Date \| string` | `new Date()` | Selected date |
|
|
12
22
|
| `view` | `'month' \| 'week' \| 'day'` | `'month'` | Calendar view |
|
|
13
23
|
| `events` | `CalendarEvent[]` | `[]` | Calendar events |
|
|
14
|
-
| `minDate` | `Date \| string` | `''` | Minimum selectable date |
|
|
15
|
-
| `maxDate` | `Date \| string` | `''` | Maximum selectable date |
|
|
16
|
-
| `disabledDates` | `(Date \| string)[]` | `[]` | Disabled dates |
|
|
17
|
-
| `highlightToday` | `boolean` | `true` | Highlight today's date |
|
|
18
|
-
| `showWeekNumbers` | `boolean` | `false` | Show week numbers |
|
|
19
|
-
| `firstDayOfWeek` | `number` | `0` | First day of week (0=Sun, 1=Mon) |
|
|
24
|
+
| `minDate` (attr: `min-date`) | `Date \| string` | `''` | Minimum selectable date |
|
|
25
|
+
| `maxDate` (attr: `max-date`) | `Date \| string` | `''` | Maximum selectable date |
|
|
26
|
+
| `disabledDates` (attr: `disabled-dates`) | `(Date \| string)[]` | `[]` | Disabled dates |
|
|
27
|
+
| `highlightToday` (attr: `highlight-today`) | `boolean` | `true` | Highlight today's date |
|
|
28
|
+
| `showWeekNumbers` (attr: `show-week-numbers`) | `boolean` | `false` | Show week numbers |
|
|
29
|
+
| `firstDayOfWeek` (attr: `first-day-of-week`) | `number` | `0` | First day of week (0=Sun, 1=Mon) |
|
|
20
30
|
| `locale` | `string` | `'en-US'` | Locale for formatting |
|
|
21
31
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
### `goToToday(): void`
|
|
25
|
-
Navigate to today's date.
|
|
26
|
-
|
|
27
|
-
```javascript
|
|
28
|
-
calendar.goToToday();
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### `goToDate(date: Date | string): void`
|
|
32
|
-
Navigate to specific date.
|
|
33
|
-
|
|
34
|
-
```javascript
|
|
35
|
-
calendar.goToDate(new Date(2024, 5, 15));
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### `previousMonth(): void`
|
|
39
|
-
Navigate to previous month.
|
|
40
|
-
|
|
41
|
-
```javascript
|
|
42
|
-
calendar.previousMonth();
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### `nextMonth(): void`
|
|
46
|
-
Navigate to next month.
|
|
47
|
-
|
|
48
|
-
```javascript
|
|
49
|
-
calendar.nextMonth();
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### `previousWeek(): void`
|
|
53
|
-
Navigate to previous week.
|
|
54
|
-
|
|
55
|
-
```javascript
|
|
56
|
-
calendar.previousWeek();
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### `nextWeek(): void`
|
|
60
|
-
Navigate to next week.
|
|
61
|
-
|
|
62
|
-
```javascript
|
|
63
|
-
calendar.nextWeek();
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### `previousDay(): void`
|
|
67
|
-
Navigate to previous day.
|
|
68
|
-
|
|
69
|
-
```javascript
|
|
70
|
-
calendar.previousDay();
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### `nextDay(): void`
|
|
74
|
-
Navigate to next day.
|
|
75
|
-
|
|
76
|
-
```javascript
|
|
77
|
-
calendar.nextDay();
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### `getDisplayedMonth(): { month: number; year: number }`
|
|
81
|
-
Get currently displayed month.
|
|
82
|
-
|
|
83
|
-
```javascript
|
|
84
|
-
const { month, year } = calendar.getDisplayedMonth();
|
|
85
|
-
console.log(`Showing ${month + 1}/${year}`);
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### `getEventsForDate(date: Date | string): CalendarEvent[]`
|
|
89
|
-
Get events for specific date.
|
|
90
|
-
|
|
91
|
-
```javascript
|
|
92
|
-
const events = calendar.getEventsForDate(new Date());
|
|
93
|
-
console.log(`Today has ${events.length} events`);
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## CalendarEvent Interface
|
|
32
|
+
### CalendarEvent Interface
|
|
97
33
|
|
|
98
34
|
```typescript
|
|
99
35
|
interface CalendarEvent {
|
|
@@ -106,39 +42,37 @@ interface CalendarEvent {
|
|
|
106
42
|
}
|
|
107
43
|
```
|
|
108
44
|
|
|
109
|
-
##
|
|
110
|
-
|
|
111
|
-
### `calendar-change`
|
|
112
|
-
Dispatched when selected date changes.
|
|
113
|
-
|
|
114
|
-
```javascript
|
|
115
|
-
calendar.addEventListener('calendar-change', (e) => {
|
|
116
|
-
console.log('Selected:', e.detail.value);
|
|
117
|
-
});
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
**Detail:** `{ value: Date, calendar: SniceCalendarElement }`
|
|
45
|
+
## Methods
|
|
121
46
|
|
|
122
|
-
|
|
123
|
-
|
|
47
|
+
| Method | Arguments | Returns | Description |
|
|
48
|
+
|--------|-----------|---------|-------------|
|
|
49
|
+
| `goToToday()` | -- | `void` | Navigate to today's date |
|
|
50
|
+
| `goToDate()` | `date: Date \| string` | `void` | Navigate to specific date |
|
|
51
|
+
| `previousMonth()` | -- | `void` | Navigate to previous month |
|
|
52
|
+
| `nextMonth()` | -- | `void` | Navigate to next month |
|
|
53
|
+
| `previousWeek()` | -- | `void` | Navigate to previous week |
|
|
54
|
+
| `nextWeek()` | -- | `void` | Navigate to next week |
|
|
55
|
+
| `previousDay()` | -- | `void` | Navigate to previous day |
|
|
56
|
+
| `nextDay()` | -- | `void` | Navigate to next day |
|
|
57
|
+
| `getDisplayedMonth()` | -- | `{ month: number; year: number }` | Get currently displayed month |
|
|
58
|
+
| `getEventsForDate()` | `date: Date \| string` | `CalendarEvent[]` | Get events for specific date |
|
|
124
59
|
|
|
125
|
-
|
|
126
|
-
calendar.addEventListener('calendar-event-click', (e) => {
|
|
127
|
-
console.log('Event clicked:', e.detail.event);
|
|
128
|
-
});
|
|
129
|
-
```
|
|
60
|
+
## Events
|
|
130
61
|
|
|
131
|
-
|
|
62
|
+
| Event | Detail | Description |
|
|
63
|
+
|-------|--------|-------------|
|
|
64
|
+
| `calendar-change` | `{ value: Date, calendar: SniceCalendarElement }` | Fired when selected date changes |
|
|
65
|
+
| `calendar-event-click` | `{ event: CalendarEvent, calendar: SniceCalendarElement }` | Fired when an event is clicked |
|
|
132
66
|
|
|
133
67
|
## CSS Parts
|
|
134
68
|
|
|
135
69
|
Style internal elements from outside the shadow DOM using `::part()`.
|
|
136
70
|
|
|
137
|
-
| Part |
|
|
138
|
-
|
|
139
|
-
| `base` |
|
|
140
|
-
| `header` |
|
|
141
|
-
| `grid` |
|
|
71
|
+
| Part | Description |
|
|
72
|
+
|------|-------------|
|
|
73
|
+
| `base` | The main calendar container |
|
|
74
|
+
| `header` | The header with month title and navigation buttons |
|
|
75
|
+
| `grid` | The day cells grid |
|
|
142
76
|
|
|
143
77
|
```css
|
|
144
78
|
snice-calendar::part(base) {
|
|
@@ -150,10 +84,6 @@ snice-calendar::part(header) {
|
|
|
150
84
|
padding: 1rem;
|
|
151
85
|
font-weight: 600;
|
|
152
86
|
}
|
|
153
|
-
|
|
154
|
-
snice-calendar::part(grid) {
|
|
155
|
-
gap: 2px;
|
|
156
|
-
}
|
|
157
87
|
```
|
|
158
88
|
|
|
159
89
|
## Basic Usage
|
|
@@ -163,6 +93,8 @@ snice-calendar::part(grid) {
|
|
|
163
93
|
```
|
|
164
94
|
|
|
165
95
|
```typescript
|
|
96
|
+
import 'snice/components/calendar/snice-calendar';
|
|
97
|
+
|
|
166
98
|
calendar.addEventListener('calendar-change', (e) => {
|
|
167
99
|
console.log('Selected date:', e.detail.value);
|
|
168
100
|
});
|
|
@@ -170,42 +102,29 @@ calendar.addEventListener('calendar-change', (e) => {
|
|
|
170
102
|
|
|
171
103
|
## Examples
|
|
172
104
|
|
|
173
|
-
### Basic Calendar
|
|
174
|
-
|
|
175
|
-
```html
|
|
176
|
-
<snice-calendar></snice-calendar>
|
|
177
|
-
```
|
|
178
|
-
|
|
179
105
|
### With Events
|
|
180
106
|
|
|
107
|
+
Use the `events` property to display events on the calendar.
|
|
108
|
+
|
|
181
109
|
```typescript
|
|
182
110
|
calendar.events = [
|
|
183
|
-
{
|
|
184
|
-
|
|
185
|
-
title: 'Team Meeting',
|
|
186
|
-
start: new Date(2024, 5, 15, 10, 0),
|
|
187
|
-
color: '#2196f3'
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
id: 2,
|
|
191
|
-
title: 'Project Deadline',
|
|
192
|
-
start: new Date(2024, 5, 20),
|
|
193
|
-
color: '#f44336'
|
|
194
|
-
}
|
|
111
|
+
{ id: 1, title: 'Team Meeting', start: new Date(2024, 5, 15, 10, 0), color: '#2196f3' },
|
|
112
|
+
{ id: 2, title: 'Project Deadline', start: new Date(2024, 5, 20), color: '#f44336' }
|
|
195
113
|
];
|
|
196
114
|
```
|
|
197
115
|
|
|
198
|
-
###
|
|
116
|
+
### Date Restrictions
|
|
117
|
+
|
|
118
|
+
Use `min-date` and `max-date` to constrain the selectable date range.
|
|
199
119
|
|
|
200
120
|
```html
|
|
201
|
-
<snice-calendar
|
|
202
|
-
min-date="2024-01-01"
|
|
203
|
-
max-date="2024-12-31">
|
|
204
|
-
</snice-calendar>
|
|
121
|
+
<snice-calendar min-date="2024-01-01" max-date="2024-12-31"></snice-calendar>
|
|
205
122
|
```
|
|
206
123
|
|
|
207
124
|
### Disabled Dates
|
|
208
125
|
|
|
126
|
+
Use the `disabledDates` property to prevent selection of specific dates.
|
|
127
|
+
|
|
209
128
|
```javascript
|
|
210
129
|
calendar.disabledDates = [
|
|
211
130
|
new Date(2024, 5, 10),
|
|
@@ -216,11 +135,15 @@ calendar.disabledDates = [
|
|
|
216
135
|
|
|
217
136
|
### Week Starting Monday
|
|
218
137
|
|
|
138
|
+
Use `first-day-of-week` to change the starting day.
|
|
139
|
+
|
|
219
140
|
```html
|
|
220
141
|
<snice-calendar first-day-of-week="1"></snice-calendar>
|
|
221
142
|
```
|
|
222
143
|
|
|
223
|
-
###
|
|
144
|
+
### Locale
|
|
145
|
+
|
|
146
|
+
Use the `locale` attribute for locale-aware date formatting.
|
|
224
147
|
|
|
225
148
|
```html
|
|
226
149
|
<snice-calendar locale="fr-FR"></snice-calendar>
|
|
@@ -228,34 +151,32 @@ calendar.disabledDates = [
|
|
|
228
151
|
|
|
229
152
|
### With Week Numbers
|
|
230
153
|
|
|
154
|
+
Set `show-week-numbers` to display ISO week numbers.
|
|
155
|
+
|
|
231
156
|
```html
|
|
232
157
|
<snice-calendar show-week-numbers></snice-calendar>
|
|
233
158
|
```
|
|
234
159
|
|
|
235
160
|
### Programmatic Navigation
|
|
236
161
|
|
|
162
|
+
Use methods to control navigation from JavaScript.
|
|
163
|
+
|
|
237
164
|
```javascript
|
|
238
|
-
// Go to today
|
|
239
165
|
calendar.goToToday();
|
|
240
|
-
|
|
241
|
-
// Go to specific date
|
|
242
166
|
calendar.goToDate(new Date(2024, 11, 25));
|
|
243
|
-
|
|
244
|
-
// Navigate months
|
|
245
167
|
calendar.previousMonth();
|
|
246
168
|
calendar.nextMonth();
|
|
247
169
|
```
|
|
248
170
|
|
|
249
171
|
### Event Handling
|
|
250
172
|
|
|
173
|
+
Listen for date selection and event clicks.
|
|
174
|
+
|
|
251
175
|
```javascript
|
|
252
|
-
// Date selection
|
|
253
176
|
calendar.addEventListener('calendar-change', (e) => {
|
|
254
177
|
console.log('Date selected:', e.detail.value);
|
|
255
|
-
updateBookingForm(e.detail.value);
|
|
256
178
|
});
|
|
257
179
|
|
|
258
|
-
// Event clicks
|
|
259
180
|
calendar.addEventListener('calendar-event-click', (e) => {
|
|
260
181
|
showEventDetails(e.detail.event);
|
|
261
182
|
});
|
|
@@ -263,8 +184,9 @@ calendar.addEventListener('calendar-event-click', (e) => {
|
|
|
263
184
|
|
|
264
185
|
### Booking System
|
|
265
186
|
|
|
187
|
+
Combine events, disabled dates, and event handling for a booking workflow.
|
|
188
|
+
|
|
266
189
|
```typescript
|
|
267
|
-
// Load bookings
|
|
268
190
|
const bookings = await fetchBookings();
|
|
269
191
|
calendar.events = bookings.map(b => ({
|
|
270
192
|
id: b.id,
|
|
@@ -273,11 +195,8 @@ calendar.events = bookings.map(b => ({
|
|
|
273
195
|
color: b.confirmed ? '#4caf50' : '#ff9800'
|
|
274
196
|
}));
|
|
275
197
|
|
|
276
|
-
|
|
277
|
-
const fullyBooked = await getFullyBookedDates();
|
|
278
|
-
calendar.disabledDates = fullyBooked;
|
|
198
|
+
calendar.disabledDates = await getFullyBookedDates();
|
|
279
199
|
|
|
280
|
-
// Handle new booking
|
|
281
200
|
calendar.addEventListener('calendar-change', (e) => {
|
|
282
201
|
if (hasAvailability(e.detail.value)) {
|
|
283
202
|
showBookingForm(e.detail.value);
|
|
@@ -285,133 +204,30 @@ calendar.addEventListener('calendar-change', (e) => {
|
|
|
285
204
|
});
|
|
286
205
|
```
|
|
287
206
|
|
|
288
|
-
### Holiday Calendar
|
|
289
|
-
|
|
290
|
-
```javascript
|
|
291
|
-
calendar.events = [
|
|
292
|
-
{ id: 1, title: 'New Year', start: '2024-01-01', color: '#f44336' },
|
|
293
|
-
{ id: 2, title: 'Independence Day', start: '2024-07-04', color: '#2196f3' },
|
|
294
|
-
{ id: 3, title: 'Thanksgiving', start: '2024-11-28', color: '#ff9800' },
|
|
295
|
-
{ id: 4, title: 'Christmas', start: '2024-12-25', color: '#4caf50' }
|
|
296
|
-
];
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
### Meeting Scheduler
|
|
300
|
-
|
|
301
|
-
```typescript
|
|
302
|
-
// Show team meetings
|
|
303
|
-
calendar.events = teamMeetings.map(m => ({
|
|
304
|
-
id: m.id,
|
|
305
|
-
title: m.title,
|
|
306
|
-
start: m.startTime,
|
|
307
|
-
end: m.endTime,
|
|
308
|
-
color: m.recurring ? '#9c27b0' : '#2196f3',
|
|
309
|
-
data: m
|
|
310
|
-
}));
|
|
311
|
-
|
|
312
|
-
// Click to see meeting details
|
|
313
|
-
calendar.addEventListener('calendar-event-click', (e) => {
|
|
314
|
-
const meeting = e.detail.event;
|
|
315
|
-
showModal({
|
|
316
|
-
title: meeting.title,
|
|
317
|
-
attendees: meeting.data.attendees,
|
|
318
|
-
location: meeting.data.location
|
|
319
|
-
});
|
|
320
|
-
});
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
### Availability Checker
|
|
324
|
-
|
|
325
|
-
```javascript
|
|
326
|
-
// Mark unavailable dates
|
|
327
|
-
calendar.disabledDates = unavailableDates;
|
|
328
|
-
|
|
329
|
-
// Set date range
|
|
330
|
-
const today = new Date();
|
|
331
|
-
calendar.minDate = today;
|
|
332
|
-
calendar.maxDate = new Date(today.getFullYear(), today.getMonth() + 3, 0);
|
|
333
|
-
|
|
334
|
-
// Handle selection
|
|
335
|
-
calendar.addEventListener('calendar-change', (e) => {
|
|
336
|
-
checkAvailability(e.detail.value).then(slots => {
|
|
337
|
-
if (slots.length > 0) {
|
|
338
|
-
showTimeSlots(slots);
|
|
339
|
-
} else {
|
|
340
|
-
alert('No availability on this date');
|
|
341
|
-
}
|
|
342
|
-
});
|
|
343
|
-
});
|
|
344
|
-
```
|
|
345
|
-
|
|
346
207
|
### Multi-Event Days
|
|
347
208
|
|
|
209
|
+
Use `getEventsForDate()` to query events for a specific date.
|
|
210
|
+
|
|
348
211
|
```javascript
|
|
349
|
-
// Multiple events per day
|
|
350
212
|
calendar.events = [
|
|
351
213
|
{ id: 1, title: 'Morning Standup', start: '2024-06-15 09:00', color: '#2196f3' },
|
|
352
214
|
{ id: 2, title: 'Client Meeting', start: '2024-06-15 14:00', color: '#4caf50' },
|
|
353
215
|
{ id: 3, title: 'Team Sync', start: '2024-06-15 16:00', color: '#ff9800' }
|
|
354
216
|
];
|
|
355
217
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
const dayEvents = calendar.getEventsForDate(date);
|
|
359
|
-
console.log(`${dayEvents.length} events on ${date.toLocaleDateString()}`);
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### Vacation Planner
|
|
363
|
-
|
|
364
|
-
```javascript
|
|
365
|
-
// Show approved vacations
|
|
366
|
-
calendar.events = vacations.map(v => ({
|
|
367
|
-
id: v.id,
|
|
368
|
-
title: `${v.employee} - Vacation`,
|
|
369
|
-
start: v.startDate,
|
|
370
|
-
end: v.endDate,
|
|
371
|
-
color: '#9c27b0'
|
|
372
|
-
}));
|
|
373
|
-
|
|
374
|
-
// Block company holidays
|
|
375
|
-
calendar.disabledDates = companyHolidays;
|
|
376
|
-
|
|
377
|
-
// Request new vacation
|
|
378
|
-
calendar.addEventListener('calendar-change', (e) => {
|
|
379
|
-
if (canRequestVacation(e.detail.value)) {
|
|
380
|
-
showVacationRequestForm(e.detail.value);
|
|
381
|
-
}
|
|
382
|
-
});
|
|
218
|
+
const dayEvents = calendar.getEventsForDate(new Date(2024, 5, 15));
|
|
219
|
+
console.log(`${dayEvents.length} events on this date`);
|
|
383
220
|
```
|
|
384
221
|
|
|
385
|
-
|
|
222
|
+
## Keyboard Navigation
|
|
386
223
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
calendar.events = [...calendar.events, event];
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
// Remove event
|
|
394
|
-
function removeEvent(id) {
|
|
395
|
-
calendar.events = calendar.events.filter(e => e.id !== id);
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
// Update event
|
|
399
|
-
function updateEvent(id, updates) {
|
|
400
|
-
calendar.events = calendar.events.map(e =>
|
|
401
|
-
e.id === id ? { ...e, ...updates } : e
|
|
402
|
-
);
|
|
403
|
-
}
|
|
404
|
-
```
|
|
224
|
+
- Arrow keys to navigate between dates
|
|
225
|
+
- Enter to select a date
|
|
226
|
+
- Tab to move between controls
|
|
405
227
|
|
|
406
228
|
## Accessibility
|
|
407
229
|
|
|
408
|
-
- Keyboard navigation
|
|
230
|
+
- Keyboard navigation with arrow keys
|
|
409
231
|
- ARIA labels for dates and events
|
|
410
232
|
- Screen reader friendly
|
|
411
233
|
- Focus management
|
|
412
|
-
|
|
413
|
-
## Browser Support
|
|
414
|
-
|
|
415
|
-
- Modern browsers with Custom Elements v1 support
|
|
416
|
-
- Date formatting via Intl API
|
|
417
|
-
- Touch and mouse support
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<!-- AI: For
|
|
1
|
+
<!-- AI: For the AI-optimized version of this doc, see docs/ai/components/camera-annotate.md -->
|
|
2
2
|
|
|
3
3
|
# Camera Annotate Component
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Combines camera capture with freehand drawing and labeled annotations. Provides a workflow for taking pictures, drawing shapes on them, and adding descriptive labels to each annotation.
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
- [Properties](#properties)
|
|
@@ -11,46 +11,42 @@ The camera annotate component combines camera capture with freehand drawing and
|
|
|
11
11
|
- [CSS Parts](#css-parts)
|
|
12
12
|
- [Basic Usage](#basic-usage)
|
|
13
13
|
- [Examples](#examples)
|
|
14
|
-
- [Annotation Workflow](#annotation-workflow)
|
|
15
14
|
- [Accessibility](#accessibility)
|
|
16
|
-
- [Browser Support](#browser-support)
|
|
17
15
|
|
|
18
16
|
## Properties
|
|
19
17
|
|
|
20
18
|
| Property | Type | Default | Description |
|
|
21
19
|
|----------|------|---------|-------------|
|
|
22
20
|
| `mode` | `'camera' \| 'annotate'` | `'camera'` | Current mode of the component |
|
|
23
|
-
| `auto-rotate-colors` | `boolean` | `true` | Automatically cycle through preset colors for each new annotation |
|
|
24
|
-
| `show-labels-panel` | `boolean` | `true` | Show the sidebar panel with annotation labels |
|
|
21
|
+
| `autoRotateColors` (attr: `auto-rotate-colors`) | `boolean` | `true` | Automatically cycle through preset colors for each new annotation |
|
|
22
|
+
| `showLabelsPanel` (attr: `show-labels-panel`) | `boolean` | `true` | Show the sidebar panel with annotation labels |
|
|
25
23
|
|
|
26
24
|
## Methods
|
|
27
25
|
|
|
28
|
-
| Method |
|
|
29
|
-
|
|
30
|
-
| `capture()` | `Promise<void>` | Capture current camera frame and switch to annotate mode |
|
|
31
|
-
| `exportImage(
|
|
32
|
-
| `exportAnnotations()` | `AnnotationData` | Export all annotation data as a serializable object |
|
|
33
|
-
| `importAnnotations(
|
|
34
|
-
| `clearAnnotations()` | `void` | Remove all annotations and strokes |
|
|
26
|
+
| Method | Arguments | Returns | Description |
|
|
27
|
+
|--------|-----------|---------|-------------|
|
|
28
|
+
| `capture()` | -- | `Promise<void>` | Capture current camera frame and switch to annotate mode |
|
|
29
|
+
| `exportImage()` | `options?: { includeLabels?: boolean }` | `string` | Export annotated image as data URL |
|
|
30
|
+
| `exportAnnotations()` | -- | `AnnotationData` | Export all annotation data as a serializable object |
|
|
31
|
+
| `importAnnotations()` | `data: AnnotationData` | `void` | Load annotation data from a previously exported object |
|
|
32
|
+
| `clearAnnotations()` | -- | `void` | Remove all annotations and strokes |
|
|
35
33
|
|
|
36
34
|
## Events
|
|
37
35
|
|
|
38
36
|
| Event | Detail | Description |
|
|
39
37
|
|-------|--------|-------------|
|
|
40
|
-
| `capture` | `{ dataURL, width, height }` | Fired when an image is captured from the camera |
|
|
41
|
-
| `annotate` | `{ annotation }` | Fired when a new annotation (shape) is drawn |
|
|
42
|
-
| `annotation-change` | `{ annotations }` | Fired when annotations are modified (add, remove, visibility, label) |
|
|
38
|
+
| `capture` | `{ dataURL: string, width: number, height: number }` | Fired when an image is captured from the camera |
|
|
39
|
+
| `annotate` | `{ annotation: Annotation }` | Fired when a new annotation (shape) is drawn |
|
|
40
|
+
| `annotation-change` | `{ annotations: Annotation[] }` | Fired when annotations are modified (add, remove, visibility, label) |
|
|
43
41
|
|
|
44
42
|
## CSS Parts
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `toolbar` | `<div>` | Toolbar with capture/retake, undo, clear, and export buttons |
|
|
53
|
-
| `sidebar` | `<div>` | Sidebar panel with color palette and annotation labels |
|
|
44
|
+
| Part | Description |
|
|
45
|
+
|------|-------------|
|
|
46
|
+
| `base` | Outer layout container |
|
|
47
|
+
| `canvas` | Canvas area containing the video feed and drawing surface |
|
|
48
|
+
| `toolbar` | Toolbar with capture/retake, undo, clear, and export buttons |
|
|
49
|
+
| `sidebar` | Sidebar panel with color palette and annotation labels |
|
|
54
50
|
|
|
55
51
|
```css
|
|
56
52
|
snice-camera-annotate::part(base) {
|
|
@@ -76,26 +72,26 @@ import 'snice/components/camera-annotate/snice-camera-annotate';
|
|
|
76
72
|
|
|
77
73
|
## Examples
|
|
78
74
|
|
|
79
|
-
### Default Camera Annotator
|
|
80
|
-
|
|
81
|
-
```html
|
|
82
|
-
<snice-camera-annotate></snice-camera-annotate>
|
|
83
|
-
```
|
|
84
|
-
|
|
85
75
|
### Without Labels Panel
|
|
86
76
|
|
|
77
|
+
Hide the sidebar by setting `show-labels-panel` to false.
|
|
78
|
+
|
|
87
79
|
```html
|
|
88
80
|
<snice-camera-annotate show-labels-panel="false"></snice-camera-annotate>
|
|
89
81
|
```
|
|
90
82
|
|
|
91
83
|
### Manual Color Selection
|
|
92
84
|
|
|
85
|
+
Disable auto-rotation to choose colors manually from the palette.
|
|
86
|
+
|
|
93
87
|
```html
|
|
94
88
|
<snice-camera-annotate auto-rotate-colors="false"></snice-camera-annotate>
|
|
95
89
|
```
|
|
96
90
|
|
|
97
91
|
### Listening to Events
|
|
98
92
|
|
|
93
|
+
Use events to track capture and annotation changes.
|
|
94
|
+
|
|
99
95
|
```html
|
|
100
96
|
<snice-camera-annotate id="annotator"></snice-camera-annotate>
|
|
101
97
|
|
|
@@ -118,85 +114,37 @@ import 'snice/components/camera-annotate/snice-camera-annotate';
|
|
|
118
114
|
|
|
119
115
|
### Save and Load Annotations
|
|
120
116
|
|
|
121
|
-
|
|
122
|
-
<snice-camera-annotate id="annotator"></snice-camera-annotate>
|
|
117
|
+
Use `exportAnnotations()` and `importAnnotations()` to persist annotation data.
|
|
123
118
|
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
```javascript
|
|
120
|
+
// Save
|
|
121
|
+
const data = annotator.exportAnnotations();
|
|
122
|
+
localStorage.setItem('annotations', JSON.stringify(data));
|
|
126
123
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
// Load
|
|
134
|
-
function loadAnnotations() {
|
|
135
|
-
const json = localStorage.getItem('annotations');
|
|
136
|
-
if (json) {
|
|
137
|
-
annotator.importAnnotations(JSON.parse(json));
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
</script>
|
|
124
|
+
// Load
|
|
125
|
+
const json = localStorage.getItem('annotations');
|
|
126
|
+
if (json) {
|
|
127
|
+
annotator.importAnnotations(JSON.parse(json));
|
|
128
|
+
}
|
|
141
129
|
```
|
|
142
130
|
|
|
143
131
|
### Export Image
|
|
144
132
|
|
|
145
|
-
|
|
146
|
-
<snice-camera-annotate id="annotator"></snice-camera-annotate>
|
|
147
|
-
<button onclick="downloadImage()">Download</button>
|
|
148
|
-
|
|
149
|
-
<script type="module">
|
|
150
|
-
function downloadImage() {
|
|
151
|
-
const annotator = document.getElementById('annotator');
|
|
133
|
+
Use `exportImage()` to download the annotated image with or without labels.
|
|
152
134
|
|
|
153
|
-
|
|
154
|
-
|
|
135
|
+
```javascript
|
|
136
|
+
const imageOnly = annotator.exportImage();
|
|
137
|
+
const withLabels = annotator.exportImage({ includeLabels: true });
|
|
155
138
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const a = document.createElement('a');
|
|
161
|
-
a.href = withLabels;
|
|
162
|
-
a.download = 'annotated.png';
|
|
163
|
-
a.click();
|
|
164
|
-
}
|
|
165
|
-
</script>
|
|
139
|
+
const a = document.createElement('a');
|
|
140
|
+
a.href = withLabels;
|
|
141
|
+
a.download = 'annotated.png';
|
|
142
|
+
a.click();
|
|
166
143
|
```
|
|
167
144
|
|
|
168
|
-
## Annotation Workflow
|
|
169
|
-
|
|
170
|
-
1. **Camera Mode**: The component starts showing a live camera feed
|
|
171
|
-
2. **Capture**: Click the "Capture" button to take a photo
|
|
172
|
-
3. **Annotate Mode**: Draw shapes on the captured image using freehand strokes
|
|
173
|
-
4. **Label**: Type labels for each annotation in the sidebar
|
|
174
|
-
5. **Manage**: Show/hide individual annotations, toggle all, or delete specific ones
|
|
175
|
-
6. **Export**: Save annotation data as JSON or export the annotated image
|
|
176
|
-
7. **Retake**: Click "Retake" to return to camera mode and start fresh
|
|
177
|
-
|
|
178
|
-
### Color System
|
|
179
|
-
|
|
180
|
-
- **Preset Palette**: 12 preset colors displayed as swatches in the sidebar
|
|
181
|
-
- **Auto Rotate**: When enabled (default), each new annotation automatically gets the next color from the palette
|
|
182
|
-
- **Manual Selection**: Click any color swatch to set the active drawing color
|
|
183
|
-
|
|
184
|
-
### Visual Highlighting
|
|
185
|
-
|
|
186
|
-
When you hover over an annotation label in the sidebar:
|
|
187
|
-
- The corresponding shape is highlighted at full opacity
|
|
188
|
-
- All other shapes dim to 20% opacity with a grayscale filter
|
|
189
|
-
- This makes it easy to identify which shape belongs to which label
|
|
190
|
-
|
|
191
145
|
## Accessibility
|
|
192
146
|
|
|
193
147
|
- Color swatches have title attributes showing the hex value
|
|
194
148
|
- Annotation visibility toggles have descriptive title text
|
|
195
149
|
- Delete buttons have clear title labels
|
|
196
150
|
- The sidebar scrolls independently when annotations exceed available space
|
|
197
|
-
|
|
198
|
-
## Browser Support
|
|
199
|
-
|
|
200
|
-
- Modern browsers (Chrome, Firefox, Safari, Edge)
|
|
201
|
-
- Requires camera access via `getUserMedia`
|
|
202
|
-
- Requires Custom Elements v1 and Shadow DOM support
|