@semantic-components/ui-lab 0.63.0 → 0.65.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/fesm2022/semantic-components-ui-lab.mjs +36276 -0
- package/fesm2022/semantic-components-ui-lab.mjs.map +1 -0
- package/package.json +17 -3
- package/types/semantic-components-ui-lab.d.ts +7454 -0
- package/eslint.config.mjs +0 -39
- package/ng-package.json +0 -7
- package/project.json +0 -28
- package/src/index.ts +0 -2
- package/src/lib/components/accordion/README.md +0 -269
- package/src/lib/components/accordion/TODO.md +0 -58
- package/src/lib/components/accordion/accordion-content.ts +0 -31
- package/src/lib/components/accordion/accordion-header.ts +0 -15
- package/src/lib/components/accordion/accordion-item.ts +0 -17
- package/src/lib/components/accordion/accordion-panel.ts +0 -42
- package/src/lib/components/accordion/accordion-trigger-icon.ts +0 -27
- package/src/lib/components/accordion/accordion-trigger.ts +0 -46
- package/src/lib/components/accordion/accordion.ts +0 -35
- package/src/lib/components/accordion/index.ts +0 -7
- package/src/lib/components/alert/README.md +0 -117
- package/src/lib/components/alert/alert-action.ts +0 -17
- package/src/lib/components/alert/alert-description.ts +0 -20
- package/src/lib/components/alert/alert-title.ts +0 -20
- package/src/lib/components/alert/alert.ts +0 -39
- package/src/lib/components/alert/index.ts +0 -4
- package/src/lib/components/alert-dialog/ARCHITECTURE.md +0 -808
- package/src/lib/components/alert-dialog/README.md +0 -215
- package/src/lib/components/alert-dialog/alert-dialog-action.ts +0 -32
- package/src/lib/components/alert-dialog/alert-dialog-cancel.ts +0 -32
- package/src/lib/components/alert-dialog/alert-dialog-description.ts +0 -24
- package/src/lib/components/alert-dialog/alert-dialog-footer.ts +0 -21
- package/src/lib/components/alert-dialog/alert-dialog-header.ts +0 -23
- package/src/lib/components/alert-dialog/alert-dialog-media.ts +0 -22
- package/src/lib/components/alert-dialog/alert-dialog-portal.ts +0 -8
- package/src/lib/components/alert-dialog/alert-dialog-provider.ts +0 -135
- package/src/lib/components/alert-dialog/alert-dialog-title.ts +0 -20
- package/src/lib/components/alert-dialog/alert-dialog-trigger.ts +0 -25
- package/src/lib/components/alert-dialog/alert-dialog.ts +0 -77
- package/src/lib/components/alert-dialog/index.ts +0 -11
- package/src/lib/components/animated-counter/README.md +0 -102
- package/src/lib/components/animated-counter/animated-counter-types.ts +0 -23
- package/src/lib/components/animated-counter/animated-counter.ts +0 -143
- package/src/lib/components/animated-counter/index.ts +0 -6
- package/src/lib/components/aspect-ratio/README.md +0 -97
- package/src/lib/components/aspect-ratio/aspect-ratio.ts +0 -19
- package/src/lib/components/aspect-ratio/index.ts +0 -1
- package/src/lib/components/audio-player/README.md +0 -252
- package/src/lib/components/audio-player/audio-player-audio.ts +0 -32
- package/src/lib/components/audio-player/audio-player-cover.ts +0 -39
- package/src/lib/components/audio-player/audio-player-info.ts +0 -40
- package/src/lib/components/audio-player/audio-player-next.ts +0 -40
- package/src/lib/components/audio-player/audio-player-play-button.ts +0 -39
- package/src/lib/components/audio-player/audio-player-previous.ts +0 -40
- package/src/lib/components/audio-player/audio-player-progress.ts +0 -77
- package/src/lib/components/audio-player/audio-player-repeat.ts +0 -38
- package/src/lib/components/audio-player/audio-player-shuffle.ts +0 -39
- package/src/lib/components/audio-player/audio-player-volume.ts +0 -91
- package/src/lib/components/audio-player/audio-player.ts +0 -246
- package/src/lib/components/audio-player/index.ts +0 -11
- package/src/lib/components/avatar/README.md +0 -117
- package/src/lib/components/avatar/avatar-fallback.ts +0 -25
- package/src/lib/components/avatar/avatar-image.ts +0 -39
- package/src/lib/components/avatar/avatar.ts +0 -25
- package/src/lib/components/avatar/index.ts +0 -3
- package/src/lib/components/avatar-group/README.md +0 -94
- package/src/lib/components/avatar-group/avatar-group-types.ts +0 -9
- package/src/lib/components/avatar-group/avatar-group.ts +0 -181
- package/src/lib/components/avatar-group/index.ts +0 -2
- package/src/lib/components/backdrop/backdrop.ts +0 -75
- package/src/lib/components/backdrop/index.ts +0 -1
- package/src/lib/components/badge/README.md +0 -66
- package/src/lib/components/badge/badge.ts +0 -43
- package/src/lib/components/badge/index.ts +0 -1
- package/src/lib/components/barcode-scanner/README.md +0 -144
- package/src/lib/components/barcode-scanner/barcode-scanner-simple.ts +0 -36
- package/src/lib/components/barcode-scanner/barcode-scanner.ts +0 -460
- package/src/lib/components/barcode-scanner/index.ts +0 -3
- package/src/lib/components/breadcrumb/README.md +0 -80
- package/src/lib/components/breadcrumb/breadcrumb-ellipsis.ts +0 -46
- package/src/lib/components/breadcrumb/breadcrumb-item.ts +0 -17
- package/src/lib/components/breadcrumb/breadcrumb-link.ts +0 -17
- package/src/lib/components/breadcrumb/breadcrumb-list.ts +0 -20
- package/src/lib/components/breadcrumb/breadcrumb-page.ts +0 -20
- package/src/lib/components/breadcrumb/breadcrumb-separator.ts +0 -45
- package/src/lib/components/breadcrumb/breadcrumb.ts +0 -10
- package/src/lib/components/breadcrumb/index.ts +0 -7
- package/src/lib/components/button-group/button-group-separator.ts +0 -26
- package/src/lib/components/button-group/button-group-text.ts +0 -20
- package/src/lib/components/button-group/button-group.ts +0 -43
- package/src/lib/components/button-group/index.ts +0 -10
- package/src/lib/components/calendar/CALENDAR-VIEWS.md +0 -443
- package/src/lib/components/calendar/README.md +0 -227
- package/src/lib/components/calendar/calendar-day-view.ts +0 -310
- package/src/lib/components/calendar/calendar-header.ts +0 -58
- package/src/lib/components/calendar/calendar-month-view.ts +0 -176
- package/src/lib/components/calendar/calendar-year-view.ts +0 -167
- package/src/lib/components/calendar/calendar.ts +0 -273
- package/src/lib/components/calendar/index.ts +0 -1
- package/src/lib/components/card/README.md +0 -86
- package/src/lib/components/card/card-content.ts +0 -15
- package/src/lib/components/card/card-description.ts +0 -17
- package/src/lib/components/card/card-footer.ts +0 -17
- package/src/lib/components/card/card-header.ts +0 -17
- package/src/lib/components/card/card-title.ts +0 -17
- package/src/lib/components/card/card.ts +0 -20
- package/src/lib/components/card/index.ts +0 -6
- package/src/lib/components/chart/README.md +0 -220
- package/src/lib/components/chart/bar-chart.ts +0 -186
- package/src/lib/components/chart/chart-container.ts +0 -33
- package/src/lib/components/chart/chart-legend.ts +0 -42
- package/src/lib/components/chart/chart-tooltip.ts +0 -42
- package/src/lib/components/chart/chart-types.ts +0 -21
- package/src/lib/components/chart/donut-chart.ts +0 -35
- package/src/lib/components/chart/index.ts +0 -9
- package/src/lib/components/chart/line-chart.ts +0 -223
- package/src/lib/components/chart/pie-chart.ts +0 -186
- package/src/lib/components/checkbox/README.md +0 -293
- package/src/lib/components/checkbox/checkbox-field.ts +0 -78
- package/src/lib/components/checkbox/checkbox-indicator.ts +0 -27
- package/src/lib/components/checkbox/checkbox-types.ts +0 -15
- package/src/lib/components/checkbox/checkbox.ts +0 -74
- package/src/lib/components/checkbox/index.ts +0 -5
- package/src/lib/components/checkbox/visual-checkbox.ts +0 -47
- package/src/lib/components/collapsible/README.md +0 -191
- package/src/lib/components/collapsible/collapsible-content.ts +0 -28
- package/src/lib/components/collapsible/collapsible-panel.ts +0 -42
- package/src/lib/components/collapsible/collapsible-trigger.ts +0 -48
- package/src/lib/components/collapsible/collapsible.ts +0 -33
- package/src/lib/components/collapsible/index.ts +0 -4
- package/src/lib/components/color-picker/README.md +0 -218
- package/src/lib/components/color-picker/color-picker-area.ts +0 -107
- package/src/lib/components/color-picker/color-picker-eyedropper.ts +0 -76
- package/src/lib/components/color-picker/color-picker-hue.ts +0 -92
- package/src/lib/components/color-picker/color-picker-input.ts +0 -70
- package/src/lib/components/color-picker/color-picker-preview.ts +0 -21
- package/src/lib/components/color-picker/color-picker-swatches.ts +0 -60
- package/src/lib/components/color-picker/color-picker.ts +0 -227
- package/src/lib/components/color-picker/index.ts +0 -8
- package/src/lib/components/combobox/README.md +0 -166
- package/src/lib/components/combobox/combobox-empty.ts +0 -17
- package/src/lib/components/combobox/combobox-icon.ts +0 -20
- package/src/lib/components/combobox/combobox-input.ts +0 -32
- package/src/lib/components/combobox/combobox-item-indicator.ts +0 -20
- package/src/lib/components/combobox/combobox-item.ts +0 -49
- package/src/lib/components/combobox/combobox-list.ts +0 -40
- package/src/lib/components/combobox/combobox-portal.ts +0 -111
- package/src/lib/components/combobox/combobox-trigger.ts +0 -20
- package/src/lib/components/combobox/combobox.ts +0 -42
- package/src/lib/components/combobox/index.ts +0 -9
- package/src/lib/components/command/README.md +0 -161
- package/src/lib/components/command/command-empty.ts +0 -17
- package/src/lib/components/command/command-group-heading.ts +0 -20
- package/src/lib/components/command/command-group.ts +0 -23
- package/src/lib/components/command/command-input.ts +0 -67
- package/src/lib/components/command/command-item.ts +0 -61
- package/src/lib/components/command/command-list.ts +0 -19
- package/src/lib/components/command/command-separator.ts +0 -18
- package/src/lib/components/command/command-shortcut.ts +0 -20
- package/src/lib/components/command/command.ts +0 -35
- package/src/lib/components/command/index.ts +0 -9
- package/src/lib/components/confetti/README.md +0 -103
- package/src/lib/components/confetti/confetti-types.ts +0 -47
- package/src/lib/components/confetti/confetti.ts +0 -220
- package/src/lib/components/confetti/index.ts +0 -7
- package/src/lib/components/context-menu/README.md +0 -149
- package/src/lib/components/context-menu/context-menu-content.ts +0 -46
- package/src/lib/components/context-menu/context-menu-item.ts +0 -44
- package/src/lib/components/context-menu/context-menu-label.ts +0 -22
- package/src/lib/components/context-menu/context-menu-separator.ts +0 -18
- package/src/lib/components/context-menu/context-menu-shortcut.ts +0 -20
- package/src/lib/components/context-menu/context-menu-sub-content.ts +0 -83
- package/src/lib/components/context-menu/context-menu-sub-trigger.ts +0 -91
- package/src/lib/components/context-menu/context-menu-sub.ts +0 -38
- package/src/lib/components/context-menu/context-menu-trigger.ts +0 -40
- package/src/lib/components/context-menu/context-menu.ts +0 -106
- package/src/lib/components/context-menu/index.ts +0 -10
- package/src/lib/components/copy-button/README.md +0 -211
- package/src/lib/components/copy-button/copy-button-with-text.ts +0 -53
- package/src/lib/components/copy-button/copy-button.ts +0 -137
- package/src/lib/components/copy-button/copy-code.ts +0 -42
- package/src/lib/components/copy-button/copy-input.ts +0 -54
- package/src/lib/components/copy-button/index.ts +0 -4
- package/src/lib/components/countdown/README.md +0 -168
- package/src/lib/components/countdown/countdown-simple.ts +0 -118
- package/src/lib/components/countdown/countdown.ts +0 -235
- package/src/lib/components/countdown/index.ts +0 -3
- package/src/lib/components/data-table/README.md +0 -330
- package/src/lib/components/data-table/data-table-body.ts +0 -28
- package/src/lib/components/data-table/data-table-cell.ts +0 -20
- package/src/lib/components/data-table/data-table-column-toggle.ts +0 -96
- package/src/lib/components/data-table/data-table-filter.ts +0 -45
- package/src/lib/components/data-table/data-table-head.ts +0 -96
- package/src/lib/components/data-table/data-table-header.ts +0 -28
- package/src/lib/components/data-table/data-table-pagination.ts +0 -152
- package/src/lib/components/data-table/data-table-row.ts +0 -23
- package/src/lib/components/data-table/data-table.ts +0 -181
- package/src/lib/components/data-table/index.ts +0 -15
- package/src/lib/components/date-picker/README.md +0 -101
- package/src/lib/components/date-picker/date-picker.ts +0 -175
- package/src/lib/components/date-picker/index.ts +0 -1
- package/src/lib/components/date-range-picker/README.md +0 -148
- package/src/lib/components/date-range-picker/date-range-picker.ts +0 -348
- package/src/lib/components/date-range-picker/index.ts +0 -3
- package/src/lib/components/dialog/ARCHITECTURE.md +0 -792
- package/src/lib/components/dialog/README.md +0 -208
- package/src/lib/components/dialog/dialog-close.ts +0 -33
- package/src/lib/components/dialog/dialog-description.ts +0 -23
- package/src/lib/components/dialog/dialog-footer.ts +0 -20
- package/src/lib/components/dialog/dialog-header.ts +0 -17
- package/src/lib/components/dialog/dialog-portal.ts +0 -8
- package/src/lib/components/dialog/dialog-provider.ts +0 -175
- package/src/lib/components/dialog/dialog-title.ts +0 -20
- package/src/lib/components/dialog/dialog-trigger.ts +0 -25
- package/src/lib/components/dialog/dialog.ts +0 -79
- package/src/lib/components/dialog/index.ts +0 -9
- package/src/lib/components/diff-viewer/README.md +0 -172
- package/src/lib/components/diff-viewer/diff-algorithm.ts +0 -337
- package/src/lib/components/diff-viewer/diff-viewer.ts +0 -369
- package/src/lib/components/diff-viewer/index.ts +0 -8
- package/src/lib/components/dock/README.md +0 -204
- package/src/lib/components/dock/dock-badge.ts +0 -36
- package/src/lib/components/dock/dock-item.ts +0 -76
- package/src/lib/components/dock/dock-items.ts +0 -31
- package/src/lib/components/dock/dock-types.ts +0 -25
- package/src/lib/components/dock/dock.ts +0 -101
- package/src/lib/components/dock/index.ts +0 -11
- package/src/lib/components/drawer/ARCHITECTURE.md +0 -972
- package/src/lib/components/drawer/README.md +0 -205
- package/src/lib/components/drawer/drawer-close.ts +0 -18
- package/src/lib/components/drawer/drawer-description.ts +0 -17
- package/src/lib/components/drawer/drawer-footer.ts +0 -17
- package/src/lib/components/drawer/drawer-handle.ts +0 -17
- package/src/lib/components/drawer/drawer-header.ts +0 -17
- package/src/lib/components/drawer/drawer-portal.ts +0 -8
- package/src/lib/components/drawer/drawer-provider.ts +0 -142
- package/src/lib/components/drawer/drawer-title.ts +0 -17
- package/src/lib/components/drawer/drawer-trigger.ts +0 -24
- package/src/lib/components/drawer/drawer.ts +0 -77
- package/src/lib/components/drawer/index.ts +0 -11
- package/src/lib/components/emoji-picker/README.md +0 -151
- package/src/lib/components/emoji-picker/emoji-picker-trigger.ts +0 -48
- package/src/lib/components/emoji-picker/emoji-picker.ts +0 -666
- package/src/lib/components/emoji-picker/index.ts +0 -3
- package/src/lib/components/empty/README.md +0 -72
- package/src/lib/components/empty/empty-content.ts +0 -20
- package/src/lib/components/empty/empty-description.ts +0 -20
- package/src/lib/components/empty/empty-header.ts +0 -17
- package/src/lib/components/empty/empty-media.ts +0 -29
- package/src/lib/components/empty/empty-title.ts +0 -17
- package/src/lib/components/empty/empty.ts +0 -20
- package/src/lib/components/empty/index.ts +0 -6
- package/src/lib/components/field/README.md +0 -326
- package/src/lib/components/field/field-content.ts +0 -20
- package/src/lib/components/field/field-description.ts +0 -22
- package/src/lib/components/field/field-error.ts +0 -18
- package/src/lib/components/field/field-group.ts +0 -20
- package/src/lib/components/field/field-legend.ts +0 -24
- package/src/lib/components/field/field-separator.ts +0 -20
- package/src/lib/components/field/field-set.ts +0 -20
- package/src/lib/components/field/field-title.ts +0 -20
- package/src/lib/components/field/field.ts +0 -89
- package/src/lib/components/field/index.ts +0 -9
- package/src/lib/components/file-upload/README.md +0 -256
- package/src/lib/components/file-upload/file-upload-dropzone.ts +0 -100
- package/src/lib/components/file-upload/file-upload-item-delete.ts +0 -59
- package/src/lib/components/file-upload/file-upload-item-name.ts +0 -17
- package/src/lib/components/file-upload/file-upload-item-preview.ts +0 -52
- package/src/lib/components/file-upload/file-upload-item-progress.ts +0 -33
- package/src/lib/components/file-upload/file-upload-item-size.ts +0 -39
- package/src/lib/components/file-upload/file-upload-item.ts +0 -35
- package/src/lib/components/file-upload/file-upload-list.ts +0 -17
- package/src/lib/components/file-upload/file-upload-trigger.ts +0 -70
- package/src/lib/components/file-upload/file-upload.ts +0 -156
- package/src/lib/components/file-upload/index.ts +0 -11
- package/src/lib/components/hover-card/ARCHITECTURE.md +0 -341
- package/src/lib/components/hover-card/README.md +0 -118
- package/src/lib/components/hover-card/hover-card-portal.ts +0 -142
- package/src/lib/components/hover-card/hover-card-provider.ts +0 -85
- package/src/lib/components/hover-card/hover-card-trigger.ts +0 -75
- package/src/lib/components/hover-card/hover-card.ts +0 -97
- package/src/lib/components/hover-card/index.ts +0 -5
- package/src/lib/components/image-annotator/README.md +0 -132
- package/src/lib/components/image-annotator/image-annotator-types.ts +0 -29
- package/src/lib/components/image-annotator/image-annotator.ts +0 -549
- package/src/lib/components/image-annotator/index.ts +0 -7
- package/src/lib/components/image-compare/README.md +0 -239
- package/src/lib/components/image-compare/image-compare-after.ts +0 -39
- package/src/lib/components/image-compare/image-compare-before.ts +0 -30
- package/src/lib/components/image-compare/image-compare-container.ts +0 -119
- package/src/lib/components/image-compare/image-compare-label.ts +0 -34
- package/src/lib/components/image-compare/image-compare-slider.ts +0 -103
- package/src/lib/components/image-compare/image-compare.ts +0 -79
- package/src/lib/components/image-compare/index.ts +0 -10
- package/src/lib/components/image-cropper/README.md +0 -322
- package/src/lib/components/image-cropper/image-cropper-aspect-ratio.ts +0 -65
- package/src/lib/components/image-cropper/image-cropper-container.ts +0 -294
- package/src/lib/components/image-cropper/image-cropper-controls.ts +0 -95
- package/src/lib/components/image-cropper/image-cropper-preview.ts +0 -66
- package/src/lib/components/image-cropper/image-cropper.ts +0 -459
- package/src/lib/components/image-cropper/index.ts +0 -10
- package/src/lib/components/index.ts +0 -106
- package/src/lib/components/infinite-scroll/README.md +0 -134
- package/src/lib/components/infinite-scroll/index.ts +0 -4
- package/src/lib/components/infinite-scroll/infinite-scroll-end.ts +0 -9
- package/src/lib/components/infinite-scroll/infinite-scroll-loader.ts +0 -9
- package/src/lib/components/infinite-scroll/infinite-scroll.ts +0 -199
- package/src/lib/components/infinite-scroll/virtual-scroll.ts +0 -83
- package/src/lib/components/input/README.md +0 -93
- package/src/lib/components/input/index.ts +0 -1
- package/src/lib/components/input/input.ts +0 -41
- package/src/lib/components/input-group/README.md +0 -60
- package/src/lib/components/input-group/index.ts +0 -6
- package/src/lib/components/input-group/input-group-addon.ts +0 -46
- package/src/lib/components/input-group/input-group-button.ts +0 -49
- package/src/lib/components/input-group/input-group-input.ts +0 -20
- package/src/lib/components/input-group/input-group-text.ts +0 -20
- package/src/lib/components/input-group/input-group-textarea.ts +0 -20
- package/src/lib/components/input-group/input-group.ts +0 -21
- package/src/lib/components/kanban-board/README.md +0 -238
- package/src/lib/components/kanban-board/index.ts +0 -12
- package/src/lib/components/kanban-board/kanban-board.ts +0 -281
- package/src/lib/components/kanban-board/kanban-card.ts +0 -241
- package/src/lib/components/kanban-board/kanban-column.ts +0 -371
- package/src/lib/components/kanban-board/kanban-types.ts +0 -52
- package/src/lib/components/kbd/README.md +0 -58
- package/src/lib/components/kbd/index.ts +0 -2
- package/src/lib/components/kbd/kbd-group.ts +0 -17
- package/src/lib/components/kbd/kbd.ts +0 -20
- package/src/lib/components/label/README.md +0 -90
- package/src/lib/components/label/index.ts +0 -1
- package/src/lib/components/label/label.ts +0 -32
- package/src/lib/components/language-switcher/index.ts +0 -4
- package/src/lib/components/language-switcher/language-button.ts +0 -98
- package/src/lib/components/language-switcher/language-select.ts +0 -65
- package/src/lib/components/language-switcher/language-toggle.ts +0 -98
- package/src/lib/components/language-switcher/language.service.ts +0 -239
- package/src/lib/components/language-switcher/styles.ts +0 -16
- package/src/lib/components/lightbox/README.md +0 -387
- package/src/lib/components/lightbox/index.ts +0 -9
- package/src/lib/components/lightbox/lightbox-container.ts +0 -338
- package/src/lib/components/lightbox/lightbox-gallery.ts +0 -81
- package/src/lib/components/lightbox/lightbox-trigger.ts +0 -19
- package/src/lib/components/lightbox/lightbox.ts +0 -210
- package/src/lib/components/lightbox/lightbox.types.ts +0 -7
- package/src/lib/components/marquee/README.md +0 -183
- package/src/lib/components/marquee/auto-marquee.ts +0 -73
- package/src/lib/components/marquee/index.ts +0 -6
- package/src/lib/components/marquee/marquee-clone.ts +0 -17
- package/src/lib/components/marquee/marquee-fade.ts +0 -53
- package/src/lib/components/marquee/marquee-item.ts +0 -17
- package/src/lib/components/marquee/marquee-text.ts +0 -80
- package/src/lib/components/marquee/marquee.ts +0 -96
- package/src/lib/components/masonry-grid/README.md +0 -204
- package/src/lib/components/masonry-grid/index.ts +0 -4
- package/src/lib/components/masonry-grid/masonry-grid.ts +0 -178
- package/src/lib/components/masonry-grid/masonry-item.ts +0 -66
- package/src/lib/components/masonry-grid/masonry-types.ts +0 -24
- package/src/lib/components/mention-input/README.md +0 -122
- package/src/lib/components/mention-input/index.ts +0 -2
- package/src/lib/components/mention-input/mention-input.ts +0 -279
- package/src/lib/components/menu/README.md +0 -176
- package/src/lib/components/menu/index.ts +0 -11
- package/src/lib/components/menu/menu-item.ts +0 -32
- package/src/lib/components/menu/menu-portal.ts +0 -53
- package/src/lib/components/menu/menu-provider.ts +0 -50
- package/src/lib/components/menu/menu-separator.ts +0 -19
- package/src/lib/components/menu/menu-sub-icon.ts +0 -18
- package/src/lib/components/menu/menu-sub-portal.ts +0 -53
- package/src/lib/components/menu/menu-sub-provider.ts +0 -52
- package/src/lib/components/menu/menu-sub-trigger.ts +0 -34
- package/src/lib/components/menu/menu-sub.ts +0 -41
- package/src/lib/components/menu/menu-trigger.ts +0 -27
- package/src/lib/components/menu/menu.ts +0 -41
- package/src/lib/components/multi-select/README.md +0 -155
- package/src/lib/components/multi-select/index.ts +0 -2
- package/src/lib/components/multi-select/multi-select.ts +0 -394
- package/src/lib/components/native-checkbox/README.md +0 -113
- package/src/lib/components/native-checkbox/index.ts +0 -1
- package/src/lib/components/native-checkbox/native-checkbox.ts +0 -116
- package/src/lib/components/navbar/ARCHITECTURE.md +0 -605
- package/src/lib/components/navbar/README.md +0 -246
- package/src/lib/components/navbar/index.ts +0 -9
- package/src/lib/components/navbar/navbar-actions.ts +0 -28
- package/src/lib/components/navbar/navbar-brand.ts +0 -24
- package/src/lib/components/navbar/navbar-group.ts +0 -28
- package/src/lib/components/navbar/navbar-mobile-link.ts +0 -28
- package/src/lib/components/navbar/navbar-mobile-menu.ts +0 -71
- package/src/lib/components/navbar/navbar-mobile-portal.ts +0 -118
- package/src/lib/components/navbar/navbar-mobile-trigger.ts +0 -51
- package/src/lib/components/navbar/navbar-provider.ts +0 -85
- package/src/lib/components/navbar/navbar.ts +0 -40
- package/src/lib/components/navigation-menu/README.md +0 -135
- package/src/lib/components/navigation-menu/index.ts +0 -8
- package/src/lib/components/navigation-menu/navigation-menu-content.ts +0 -80
- package/src/lib/components/navigation-menu/navigation-menu-indicator.ts +0 -35
- package/src/lib/components/navigation-menu/navigation-menu-item.ts +0 -88
- package/src/lib/components/navigation-menu/navigation-menu-link.ts +0 -29
- package/src/lib/components/navigation-menu/navigation-menu-list.ts +0 -20
- package/src/lib/components/navigation-menu/navigation-menu-trigger.ts +0 -52
- package/src/lib/components/navigation-menu/navigation-menu-viewport.ts +0 -35
- package/src/lib/components/navigation-menu/navigation-menu.ts +0 -39
- package/src/lib/components/notification-center/README.md +0 -365
- package/src/lib/components/notification-center/index.ts +0 -20
- package/src/lib/components/notification-center/notification-center-container.ts +0 -226
- package/src/lib/components/notification-center/notification-center.ts +0 -157
- package/src/lib/components/notification-center/notification-group.ts +0 -198
- package/src/lib/components/notification-center/notification-item.ts +0 -214
- package/src/lib/components/notification-center/notification-types.ts +0 -52
- package/src/lib/components/number-field/README.md +0 -369
- package/src/lib/components/number-field/index.ts +0 -6
- package/src/lib/components/number-field/number-field-decrement.ts +0 -57
- package/src/lib/components/number-field/number-field-increment.ts +0 -58
- package/src/lib/components/number-field/number-field-input-group.ts +0 -37
- package/src/lib/components/number-field/number-field-input.ts +0 -87
- package/src/lib/components/number-field/number-field-scrub-area.ts +0 -74
- package/src/lib/components/number-field/number-field.ts +0 -143
- package/src/lib/components/opt-field/index.ts +0 -7
- package/src/lib/components/opt-field/opt-field-separator.ts +0 -18
- package/src/lib/components/opt-field/opt-field-slot-caret.ts +0 -31
- package/src/lib/components/opt-field/opt-field-slot-char.ts +0 -19
- package/src/lib/components/opt-field/opt-field-slot-group.ts +0 -17
- package/src/lib/components/opt-field/opt-field-slot-input.ts +0 -60
- package/src/lib/components/opt-field/opt-field-slot.ts +0 -111
- package/src/lib/components/opt-field/opt-field.ts +0 -113
- package/src/lib/components/org-chart/README.md +0 -265
- package/src/lib/components/org-chart/index.ts +0 -8
- package/src/lib/components/org-chart/org-chart-node.ts +0 -253
- package/src/lib/components/org-chart/org-chart-types.ts +0 -22
- package/src/lib/components/org-chart/org-chart.ts +0 -67
- package/src/lib/components/pagination/ACCESSIBILITY_REVIEW.md +0 -530
- package/src/lib/components/pagination/KEYBOARD-NAVIGATION.md +0 -356
- package/src/lib/components/pagination/README.md +0 -359
- package/src/lib/components/pagination/REVIEW_SUMMARY.md +0 -55
- package/src/lib/components/pagination/SMART-PAGINATION.md +0 -345
- package/src/lib/components/pagination/index.ts +0 -11
- package/src/lib/components/pagination/pagination-ellipsis.ts +0 -32
- package/src/lib/components/pagination/pagination-first.ts +0 -75
- package/src/lib/components/pagination/pagination-item.ts +0 -15
- package/src/lib/components/pagination/pagination-last.ts +0 -77
- package/src/lib/components/pagination/pagination-link.ts +0 -70
- package/src/lib/components/pagination/pagination-list.ts +0 -17
- package/src/lib/components/pagination/pagination-next.ts +0 -78
- package/src/lib/components/pagination/pagination-page-size-select.ts +0 -44
- package/src/lib/components/pagination/pagination-previous.ts +0 -78
- package/src/lib/components/pagination/pagination.ts +0 -190
- package/src/lib/components/password-field/README.md +0 -247
- package/src/lib/components/password-field/index.ts +0 -7
- package/src/lib/components/password-field/password-field-input-group.ts +0 -32
- package/src/lib/components/password-field/password-field-input.ts +0 -55
- package/src/lib/components/password-field/password-field-requirements.ts +0 -90
- package/src/lib/components/password-field/password-field-strength-bar.ts +0 -64
- package/src/lib/components/password-field/password-field-strength.ts +0 -91
- package/src/lib/components/password-field/password-field-toggle.ts +0 -86
- package/src/lib/components/password-field/password-field.ts +0 -95
- package/src/lib/components/pdf-viewer/README.md +0 -221
- package/src/lib/components/pdf-viewer/index.ts +0 -47
- package/src/lib/components/pdf-viewer/pdf-viewer-container.ts +0 -54
- package/src/lib/components/pdf-viewer/pdf-viewer-content.ts +0 -60
- package/src/lib/components/pdf-viewer/pdf-viewer-download.ts +0 -34
- package/src/lib/components/pdf-viewer/pdf-viewer-empty.ts +0 -62
- package/src/lib/components/pdf-viewer/pdf-viewer-error.ts +0 -73
- package/src/lib/components/pdf-viewer/pdf-viewer-fullscreen.ts +0 -36
- package/src/lib/components/pdf-viewer/pdf-viewer-loading.ts +0 -44
- package/src/lib/components/pdf-viewer/pdf-viewer-nav.ts +0 -30
- package/src/lib/components/pdf-viewer/pdf-viewer-next-page.ts +0 -38
- package/src/lib/components/pdf-viewer/pdf-viewer-page-info.ts +0 -53
- package/src/lib/components/pdf-viewer/pdf-viewer-prev-page.ts +0 -38
- package/src/lib/components/pdf-viewer/pdf-viewer-print.ts +0 -34
- package/src/lib/components/pdf-viewer/pdf-viewer-retry.ts +0 -36
- package/src/lib/components/pdf-viewer/pdf-viewer-root.ts +0 -239
- package/src/lib/components/pdf-viewer/pdf-viewer-rotate-left.ts +0 -34
- package/src/lib/components/pdf-viewer/pdf-viewer-rotate-right.ts +0 -34
- package/src/lib/components/pdf-viewer/pdf-viewer-separator.ts +0 -28
- package/src/lib/components/pdf-viewer/pdf-viewer-spacer.ts +0 -24
- package/src/lib/components/pdf-viewer/pdf-viewer-toolbar-base.ts +0 -34
- package/src/lib/components/pdf-viewer/pdf-viewer-toolbar.ts +0 -391
- package/src/lib/components/pdf-viewer/pdf-viewer-types.ts +0 -52
- package/src/lib/components/pdf-viewer/pdf-viewer-zoom-in.ts +0 -37
- package/src/lib/components/pdf-viewer/pdf-viewer-zoom-out.ts +0 -37
- package/src/lib/components/pdf-viewer/pdf-viewer-zoom-select.ts +0 -61
- package/src/lib/components/pdf-viewer/pdf-viewer-zoom.ts +0 -30
- package/src/lib/components/pdf-viewer/pdf-viewer.ts +0 -417
- package/src/lib/components/phone-input/README.md +0 -173
- package/src/lib/components/phone-input/countries.ts +0 -69
- package/src/lib/components/phone-input/index.ts +0 -4
- package/src/lib/components/phone-input/phone-input-simple.ts +0 -141
- package/src/lib/components/phone-input/phone-input.ts +0 -304
- package/src/lib/components/popover/ARCHITECTURE.md +0 -569
- package/src/lib/components/popover/README.md +0 -247
- package/src/lib/components/popover/index.ts +0 -6
- package/src/lib/components/popover/popover-close.ts +0 -29
- package/src/lib/components/popover/popover-portal.ts +0 -161
- package/src/lib/components/popover/popover-provider.ts +0 -82
- package/src/lib/components/popover/popover-trigger.ts +0 -27
- package/src/lib/components/popover/popover.ts +0 -66
- package/src/lib/components/progress/README.md +0 -75
- package/src/lib/components/progress/index.ts +0 -1
- package/src/lib/components/progress/progress.ts +0 -62
- package/src/lib/components/qr-code/README.md +0 -124
- package/src/lib/components/qr-code/index.ts +0 -3
- package/src/lib/components/qr-code/qr-code-download.ts +0 -105
- package/src/lib/components/qr-code/qr-code.ts +0 -121
- package/src/lib/components/qr-code/qr-generator.ts +0 -479
- package/src/lib/components/radio-group/README.md +0 -273
- package/src/lib/components/radio-group/index.ts +0 -3
- package/src/lib/components/radio-group/radio-field.ts +0 -43
- package/src/lib/components/radio-group/radio-group.ts +0 -18
- package/src/lib/components/radio-group/radio.ts +0 -30
- package/src/lib/components/range-slider/README.md +0 -118
- package/src/lib/components/range-slider/index.ts +0 -1
- package/src/lib/components/range-slider/range-slider.ts +0 -304
- package/src/lib/components/rating-field/README.md +0 -150
- package/src/lib/components/rating-field/index.ts +0 -3
- package/src/lib/components/rating-field/rating-field.ts +0 -87
- package/src/lib/components/rating-field/rating-item-group.ts +0 -73
- package/src/lib/components/rating-field/rating-item.ts +0 -89
- package/src/lib/components/resizable/README.md +0 -133
- package/src/lib/components/resizable/index.ts +0 -4
- package/src/lib/components/resizable/resizable-handle.ts +0 -160
- package/src/lib/components/resizable/resizable-panel-group.ts +0 -38
- package/src/lib/components/resizable/resizable-panel.ts +0 -51
- package/src/lib/components/resizable/resizable.types.ts +0 -1
- package/src/lib/components/scroll-area/README.md +0 -76
- package/src/lib/components/scroll-area/index.ts +0 -2
- package/src/lib/components/scroll-area/scroll-area.ts +0 -87
- package/src/lib/components/scroll-area/scroll-bar.ts +0 -207
- package/src/lib/components/search-input/README.md +0 -99
- package/src/lib/components/search-input/index.ts +0 -6
- package/src/lib/components/search-input/search-input-types.ts +0 -21
- package/src/lib/components/search-input/search-input.ts +0 -302
- package/src/lib/components/select/README.md +0 -175
- package/src/lib/components/select/index.ts +0 -9
- package/src/lib/components/select/select-icon.ts +0 -20
- package/src/lib/components/select/select-input.ts +0 -32
- package/src/lib/components/select/select-item-indicator.ts +0 -20
- package/src/lib/components/select/select-item.ts +0 -48
- package/src/lib/components/select/select-list.ts +0 -42
- package/src/lib/components/select/select-portal.ts +0 -48
- package/src/lib/components/select/select-trigger.ts +0 -36
- package/src/lib/components/select/select-value.ts +0 -32
- package/src/lib/components/select/select.ts +0 -57
- package/src/lib/components/separator/README.md +0 -59
- package/src/lib/components/separator/index.ts +0 -1
- package/src/lib/components/separator/separator.ts +0 -29
- package/src/lib/components/sheet/ARCHITECTURE.md +0 -915
- package/src/lib/components/sheet/README.md +0 -248
- package/src/lib/components/sheet/index.ts +0 -10
- package/src/lib/components/sheet/sheet-close.ts +0 -32
- package/src/lib/components/sheet/sheet-description.ts +0 -20
- package/src/lib/components/sheet/sheet-footer.ts +0 -20
- package/src/lib/components/sheet/sheet-header.ts +0 -17
- package/src/lib/components/sheet/sheet-portal.ts +0 -8
- package/src/lib/components/sheet/sheet-provider.ts +0 -142
- package/src/lib/components/sheet/sheet-title.ts +0 -20
- package/src/lib/components/sheet/sheet-trigger.ts +0 -24
- package/src/lib/components/sheet/sheet.ts +0 -92
- package/src/lib/components/sidebar/README.md +0 -254
- package/src/lib/components/sidebar/index.ts +0 -24
- package/src/lib/components/sidebar/sidebar-content.ts +0 -20
- package/src/lib/components/sidebar/sidebar-footer.ts +0 -17
- package/src/lib/components/sidebar/sidebar-group-action.ts +0 -24
- package/src/lib/components/sidebar/sidebar-group-content.ts +0 -17
- package/src/lib/components/sidebar/sidebar-group-label.ts +0 -23
- package/src/lib/components/sidebar/sidebar-group.ts +0 -17
- package/src/lib/components/sidebar/sidebar-header.ts +0 -17
- package/src/lib/components/sidebar/sidebar-input.ts +0 -20
- package/src/lib/components/sidebar/sidebar-inset.ts +0 -21
- package/src/lib/components/sidebar/sidebar-menu-action.ts +0 -31
- package/src/lib/components/sidebar/sidebar-menu-badge.ts +0 -25
- package/src/lib/components/sidebar/sidebar-menu-button.ts +0 -55
- package/src/lib/components/sidebar/sidebar-menu-item.ts +0 -17
- package/src/lib/components/sidebar/sidebar-menu-skeleton.ts +0 -40
- package/src/lib/components/sidebar/sidebar-menu-sub-button.ts +0 -33
- package/src/lib/components/sidebar/sidebar-menu-sub-item.ts +0 -15
- package/src/lib/components/sidebar/sidebar-menu-sub.ts +0 -21
- package/src/lib/components/sidebar/sidebar-menu.ts +0 -17
- package/src/lib/components/sidebar/sidebar-provider.ts +0 -128
- package/src/lib/components/sidebar/sidebar-rail.ts +0 -39
- package/src/lib/components/sidebar/sidebar-separator.ts +0 -21
- package/src/lib/components/sidebar/sidebar-state.service.ts +0 -33
- package/src/lib/components/sidebar/sidebar-trigger.ts +0 -38
- package/src/lib/components/sidebar/sidebar.ts +0 -120
- package/src/lib/components/signature-pad/README.md +0 -236
- package/src/lib/components/signature-pad/index.ts +0 -8
- package/src/lib/components/signature-pad/signature-pad-canvas.ts +0 -228
- package/src/lib/components/signature-pad/signature-pad-clear-button.ts +0 -48
- package/src/lib/components/signature-pad/signature-pad-color-button.ts +0 -50
- package/src/lib/components/signature-pad/signature-pad-controls.ts +0 -26
- package/src/lib/components/signature-pad/signature-pad-toolbar.ts +0 -25
- package/src/lib/components/signature-pad/signature-pad-undo-button.ts +0 -48
- package/src/lib/components/signature-pad/signature-pad-width-button.ts +0 -50
- package/src/lib/components/signature-pad/signature-pad.ts +0 -97
- package/src/lib/components/skeleton/README.md +0 -80
- package/src/lib/components/skeleton/index.ts +0 -1
- package/src/lib/components/skeleton/skeleton.ts +0 -17
- package/src/lib/components/slider/README.md +0 -106
- package/src/lib/components/slider/index.ts +0 -4
- package/src/lib/components/slider/slider-range.ts +0 -28
- package/src/lib/components/slider/slider-thumb.ts +0 -73
- package/src/lib/components/slider/slider-track.ts +0 -31
- package/src/lib/components/slider/slider.ts +0 -185
- package/src/lib/components/sortable-list/README.md +0 -229
- package/src/lib/components/sortable-list/index.ts +0 -4
- package/src/lib/components/sortable-list/sortable-handle.ts +0 -72
- package/src/lib/components/sortable-list/sortable-item.ts +0 -162
- package/src/lib/components/sortable-list/sortable-list.ts +0 -127
- package/src/lib/components/sortable-list/sortable-overlay.ts +0 -31
- package/src/lib/components/speed-dial/README.md +0 -259
- package/src/lib/components/speed-dial/index.ts +0 -7
- package/src/lib/components/speed-dial/speed-dial-action.ts +0 -99
- package/src/lib/components/speed-dial/speed-dial-types.ts +0 -14
- package/src/lib/components/speed-dial/speed-dial.ts +0 -224
- package/src/lib/components/spinner/README.md +0 -41
- package/src/lib/components/spinner/index.ts +0 -1
- package/src/lib/components/spinner/spinner.ts +0 -20
- package/src/lib/components/split-button/README.md +0 -99
- package/src/lib/components/split-button/index.ts +0 -6
- package/src/lib/components/split-button/split-button-types.ts +0 -14
- package/src/lib/components/split-button/split-button.ts +0 -240
- package/src/lib/components/spotlight/README.md +0 -136
- package/src/lib/components/spotlight/index.ts +0 -5
- package/src/lib/components/spotlight/spotlight-actions.ts +0 -24
- package/src/lib/components/spotlight/spotlight-description.ts +0 -24
- package/src/lib/components/spotlight/spotlight-title.ts +0 -24
- package/src/lib/components/spotlight/spotlight.ts +0 -367
- package/src/lib/components/stat-card/README.md +0 -319
- package/src/lib/components/stat-card/REFACTORING-COMPLETE.md +0 -250
- package/src/lib/components/stat-card/REFACTORING-PLAN.md +0 -471
- package/src/lib/components/stat-card/index.ts +0 -11
- package/src/lib/components/stat-card/stat-card-change.ts +0 -27
- package/src/lib/components/stat-card/stat-card-description.ts +0 -17
- package/src/lib/components/stat-card/stat-card-icon.ts +0 -28
- package/src/lib/components/stat-card/stat-card-label.ts +0 -27
- package/src/lib/components/stat-card/stat-card-types.ts +0 -3
- package/src/lib/components/stat-card/stat-card-value.ts +0 -27
- package/src/lib/components/stat-card/stat-card.ts +0 -34
- package/src/lib/components/stepper/README.md +0 -250
- package/src/lib/components/stepper/index.ts +0 -12
- package/src/lib/components/stepper/stepper-content.ts +0 -25
- package/src/lib/components/stepper/stepper-description.ts +0 -17
- package/src/lib/components/stepper/stepper-item.ts +0 -35
- package/src/lib/components/stepper/stepper-list.ts +0 -26
- package/src/lib/components/stepper/stepper-next.ts +0 -41
- package/src/lib/components/stepper/stepper-previous.ts +0 -42
- package/src/lib/components/stepper/stepper-separator.ts +0 -35
- package/src/lib/components/stepper/stepper-title.ts +0 -17
- package/src/lib/components/stepper/stepper-trigger.ts +0 -67
- package/src/lib/components/stepper/stepper-types.ts +0 -10
- package/src/lib/components/stepper/stepper.ts +0 -46
- package/src/lib/components/switch/README.md +0 -99
- package/src/lib/components/switch/index.ts +0 -1
- package/src/lib/components/switch/switch.ts +0 -56
- package/src/lib/components/table/README.md +0 -105
- package/src/lib/components/table/index.ts +0 -8
- package/src/lib/components/table/table-body.ts +0 -17
- package/src/lib/components/table/table-caption.ts +0 -17
- package/src/lib/components/table/table-cell.ts +0 -17
- package/src/lib/components/table/table-footer.ts +0 -20
- package/src/lib/components/table/table-header-cell.ts +0 -20
- package/src/lib/components/table/table-header.ts +0 -17
- package/src/lib/components/table/table-row.ts +0 -20
- package/src/lib/components/table/table.ts +0 -17
- package/src/lib/components/tabs/README.md +0 -169
- package/src/lib/components/tabs/index.ts +0 -4
- package/src/lib/components/tabs/tab-list.ts +0 -38
- package/src/lib/components/tabs/tab-panel.ts +0 -45
- package/src/lib/components/tabs/tab.ts +0 -45
- package/src/lib/components/tabs/tabs.ts +0 -28
- package/src/lib/components/tag-input/README.md +0 -271
- package/src/lib/components/tag-input/index.ts +0 -5
- package/src/lib/components/tag-input/tag-input-clear.ts +0 -60
- package/src/lib/components/tag-input/tag-input-count.ts +0 -42
- package/src/lib/components/tag-input/tag-input-field.ts +0 -121
- package/src/lib/components/tag-input/tag-input-tag.ts +0 -70
- package/src/lib/components/tag-input/tag-input.ts +0 -118
- package/src/lib/components/textarea/README.md +0 -80
- package/src/lib/components/textarea/index.ts +0 -1
- package/src/lib/components/textarea/textarea.ts +0 -41
- package/src/lib/components/theme-toggle/README.md +0 -258
- package/src/lib/components/theme-toggle/index.ts +0 -4
- package/src/lib/components/theme-toggle/theme-field.ts +0 -40
- package/src/lib/components/theme-toggle/theme-select.ts +0 -56
- package/src/lib/components/theme-toggle/theme-toggle.ts +0 -76
- package/src/lib/components/theme-toggle/theme.service.ts +0 -81
- package/src/lib/components/time-picker/README.md +0 -188
- package/src/lib/components/time-picker/index.ts +0 -5
- package/src/lib/components/time-picker/time-picker-clock.ts +0 -195
- package/src/lib/components/time-picker/time-picker-input.ts +0 -174
- package/src/lib/components/time-picker/time-picker-period.ts +0 -89
- package/src/lib/components/time-picker/time-picker-separator.ts +0 -20
- package/src/lib/components/time-picker/time-picker.ts +0 -87
- package/src/lib/components/timeline/README.md +0 -177
- package/src/lib/components/timeline/index.ts +0 -8
- package/src/lib/components/timeline/timeline-connector.ts +0 -29
- package/src/lib/components/timeline/timeline-content.ts +0 -26
- package/src/lib/components/timeline/timeline-description.ts +0 -17
- package/src/lib/components/timeline/timeline-dot.ts +0 -45
- package/src/lib/components/timeline/timeline-item.ts +0 -28
- package/src/lib/components/timeline/timeline-time.ts +0 -17
- package/src/lib/components/timeline/timeline-title.ts +0 -17
- package/src/lib/components/timeline/timeline.ts +0 -17
- package/src/lib/components/timezone/index.ts +0 -5
- package/src/lib/components/timezone/timezone-badge.ts +0 -85
- package/src/lib/components/timezone/timezone-button.ts +0 -104
- package/src/lib/components/timezone/timezone-display.ts +0 -105
- package/src/lib/components/timezone/timezone-select.ts +0 -87
- package/src/lib/components/timezone/timezone.service.ts +0 -233
- package/src/lib/components/toast/README.md +0 -151
- package/src/lib/components/toast/index.ts +0 -8
- package/src/lib/components/toast/toast-action.ts +0 -27
- package/src/lib/components/toast/toast-close.ts +0 -29
- package/src/lib/components/toast/toast-description.ts +0 -17
- package/src/lib/components/toast/toast-stack.ts +0 -95
- package/src/lib/components/toast/toast-title.ts +0 -17
- package/src/lib/components/toast/toast.ts +0 -64
- package/src/lib/components/toast/toast.types.ts +0 -24
- package/src/lib/components/toast/toaster.ts +0 -67
- package/src/lib/components/toggle/README.md +0 -72
- package/src/lib/components/toggle/index.ts +0 -1
- package/src/lib/components/toggle/toggle.ts +0 -53
- package/src/lib/components/toggle-group/README.md +0 -101
- package/src/lib/components/toggle-group/index.ts +0 -2
- package/src/lib/components/toggle-group/toggle-group-item.ts +0 -62
- package/src/lib/components/toggle-group/toggle-group.ts +0 -53
- package/src/lib/components/toolbar/README.md +0 -76
- package/src/lib/components/toolbar/index.ts +0 -4
- package/src/lib/components/toolbar/toolbar-separator.ts +0 -32
- package/src/lib/components/toolbar/toolbar-widget-group.ts +0 -35
- package/src/lib/components/toolbar/toolbar-widget.ts +0 -48
- package/src/lib/components/toolbar/toolbar.ts +0 -44
- package/src/lib/components/tooltip/ANIMATIONS.md +0 -274
- package/src/lib/components/tooltip/README.md +0 -100
- package/src/lib/components/tooltip/index.ts +0 -3
- package/src/lib/components/tooltip/tooltip-manager.ts +0 -194
- package/src/lib/components/tooltip/tooltip-trigger.ts +0 -148
- package/src/lib/components/tooltip/tooltip.ts +0 -72
- package/src/lib/components/tour-guide/README.md +0 -158
- package/src/lib/components/tour-guide/index.ts +0 -2
- package/src/lib/components/tour-guide/tour-guide.ts +0 -492
- package/src/lib/components/transfer-list/README.md +0 -98
- package/src/lib/components/transfer-list/index.ts +0 -5
- package/src/lib/components/transfer-list/transfer-list-types.ts +0 -11
- package/src/lib/components/transfer-list/transfer-list.ts +0 -434
- package/src/lib/components/tree/README.md +0 -358
- package/src/lib/components/tree/TODO.md +0 -94
- package/src/lib/components/tree/index.ts +0 -6
- package/src/lib/components/tree/tree-item-group.ts +0 -40
- package/src/lib/components/tree/tree-item-icon.ts +0 -17
- package/src/lib/components/tree/tree-item-trigger-icon.ts +0 -26
- package/src/lib/components/tree/tree-item-trigger.ts +0 -51
- package/src/lib/components/tree/tree-item.ts +0 -64
- package/src/lib/components/tree/tree.ts +0 -21
- package/src/lib/components/video-player/README.md +0 -275
- package/src/lib/components/video-player/index.ts +0 -14
- package/src/lib/components/video-player/video-player-big-play-button.ts +0 -35
- package/src/lib/components/video-player/video-player-buffering.ts +0 -36
- package/src/lib/components/video-player/video-player-controls.ts +0 -28
- package/src/lib/components/video-player/video-player-fullscreen-button.ts +0 -38
- package/src/lib/components/video-player/video-player-pip-button.ts +0 -37
- package/src/lib/components/video-player/video-player-play-button.ts +0 -37
- package/src/lib/components/video-player/video-player-progress.ts +0 -56
- package/src/lib/components/video-player/video-player-skip-button.ts +0 -44
- package/src/lib/components/video-player/video-player-speed-button.ts +0 -74
- package/src/lib/components/video-player/video-player-time.ts +0 -31
- package/src/lib/components/video-player/video-player-types.ts +0 -13
- package/src/lib/components/video-player/video-player-video.ts +0 -127
- package/src/lib/components/video-player/video-player-volume.ts +0 -61
- package/src/lib/components/video-player/video-player.ts +0 -139
- package/src/lib/components/virtual-list/README.md +0 -120
- package/src/lib/components/virtual-list/index.ts +0 -2
- package/src/lib/components/virtual-list/virtual-list-types.ts +0 -9
- package/src/lib/components/virtual-list/virtual-list.ts +0 -174
- package/src/lib/layouts/auth-layout.ts +0 -30
- package/src/lib/layouts/index.ts +0 -3
- package/src/lib/layouts/sidebar-layout.ts +0 -37
- package/src/lib/layouts/stacked-layout/README.md +0 -84
- package/src/lib/layouts/stacked-layout/index.ts +0 -1
- package/src/lib/layouts/stacked-layout/stacked-layout.ts +0 -39
- package/tsconfig.json +0 -28
- package/tsconfig.lib.json +0 -12
- package/tsconfig.lib.prod.json +0 -9
|
@@ -1,605 +0,0 @@
|
|
|
1
|
-
# Navbar Mobile Menu Architecture
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The navbar mobile menu uses a simplified two-signal architecture pattern to ensure smooth animations before DOM cleanup. Similar to popover, it has **no backdrop** and uses CDK Overlay with flexible positioning for the mobile navigation menu.
|
|
6
|
-
|
|
7
|
-
**Navbar Mobile Menu-Specific Features:**
|
|
8
|
-
|
|
9
|
-
- Uses CDK Overlay with flexible positioning relative to navbar
|
|
10
|
-
- No backdrop (mobile menu slides from top)
|
|
11
|
-
- Positioned dynamically below the navbar
|
|
12
|
-
- Slide animations from top (300ms)
|
|
13
|
-
- Auto-closes on navigation events (route changes)
|
|
14
|
-
|
|
15
|
-
## Component Structure
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
ScNavbarProvider (Root State Manager)
|
|
19
|
-
└── ScNavbar (Navbar Container - provides overlay origin)
|
|
20
|
-
└── ScNavbarMobilePortal (CDK Overlay Manager)
|
|
21
|
-
└── ScNavbarMobileMenu (Mobile Menu Content)
|
|
22
|
-
├── ScNavbarMobileLink
|
|
23
|
-
└── ScNavbarActions
|
|
24
|
-
|
|
25
|
-
Plus: ScNavbarMobileTrigger (Hamburger menu button)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## The Two-Signal Pattern
|
|
29
|
-
|
|
30
|
-
Since navbar mobile menu has no backdrop, we only need to coordinate **one animation** (the menu itself). This simplifies the pattern to just two signals.
|
|
31
|
-
|
|
32
|
-
### Signal 1: `open` (Logical State)
|
|
33
|
-
|
|
34
|
-
**Purpose:** Controls what the mobile menu _should_ be doing
|
|
35
|
-
|
|
36
|
-
```typescript
|
|
37
|
-
// In ScNavbarProvider
|
|
38
|
-
readonly open = model<boolean>(false);
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
**Responsibilities:**
|
|
42
|
-
|
|
43
|
-
- Represents user intent ("should the menu be visible?")
|
|
44
|
-
- Triggers animation state changes
|
|
45
|
-
- When `true`: Triggers entry animation
|
|
46
|
-
- When `false`: Triggers exit animation
|
|
47
|
-
- Auto-closes on navigation events
|
|
48
|
-
|
|
49
|
-
### Signal 2: `overlayOpen` (Physical State)
|
|
50
|
-
|
|
51
|
-
**Purpose:** Controls whether DOM exists via overlay attachment
|
|
52
|
-
|
|
53
|
-
```typescript
|
|
54
|
-
// In ScNavbarProvider
|
|
55
|
-
readonly overlayOpen = signal<boolean>(false);
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Responsibilities:**
|
|
59
|
-
|
|
60
|
-
- Controls CDK overlay attachment/detachment
|
|
61
|
-
- Stays `true` during close animation (critical!)
|
|
62
|
-
- Only becomes `false` after animation completes
|
|
63
|
-
- Ensures animation can play before DOM removal
|
|
64
|
-
|
|
65
|
-
### Why Both Are Needed
|
|
66
|
-
|
|
67
|
-
**The Problem:**
|
|
68
|
-
|
|
69
|
-
CDK overlay's lifecycle is tied to manual attach/detach:
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
// ❌ This doesn't work:
|
|
73
|
-
if (open()) {
|
|
74
|
-
overlayRef.attach(portal);
|
|
75
|
-
} else {
|
|
76
|
-
overlayRef.detach(); // DOM removed IMMEDIATELY
|
|
77
|
-
// Animation never plays - element is gone!
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**The Solution:**
|
|
82
|
-
|
|
83
|
-
Separate signals allow animation completion:
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
// ✅ This works:
|
|
87
|
-
if (overlayOpen()) {
|
|
88
|
-
// Physical state
|
|
89
|
-
overlayRef.attach(portal); // DOM mounted
|
|
90
|
-
} else {
|
|
91
|
-
overlayRef.detach(); // DOM removed AFTER animation
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Meanwhile, open() controls animations:
|
|
95
|
-
if (open()) {
|
|
96
|
-
// Logical state
|
|
97
|
-
state = 'open'; // Entry animation
|
|
98
|
-
} else {
|
|
99
|
-
state = 'closed'; // Exit animation (DOM still mounted!)
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Animation Architecture
|
|
104
|
-
|
|
105
|
-
### Single Animated Layer
|
|
106
|
-
|
|
107
|
-
Like popover, navbar mobile menu has only **one animated element**:
|
|
108
|
-
|
|
109
|
-
1. **Mobile Menu Content** (300ms slide + fade)
|
|
110
|
-
- Slide from top + Fade effects
|
|
111
|
-
- Managed by Tailwind animate classes
|
|
112
|
-
- Completion detected via `animationend` event
|
|
113
|
-
- No backdrop to coordinate with
|
|
114
|
-
|
|
115
|
-
### Mobile Menu Content Animations
|
|
116
|
-
|
|
117
|
-
Applied via Tailwind classes in `navbar-mobile-menu.ts`:
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
protected readonly class = computed(() =>
|
|
121
|
-
cn(
|
|
122
|
-
// Base styles
|
|
123
|
-
'md:hidden',
|
|
124
|
-
'fixed inset-x-0 top-[calc(var(--navbar-height,57px))] bottom-0',
|
|
125
|
-
'z-50',
|
|
126
|
-
'flex flex-col gap-2 p-6',
|
|
127
|
-
'bg-background border-t border-border',
|
|
128
|
-
|
|
129
|
-
// Entry animation (fade + slide from top)
|
|
130
|
-
'animate-in fade-in-0 slide-in-from-top duration-300',
|
|
131
|
-
|
|
132
|
-
// Exit animation (triggered by data-state="closed")
|
|
133
|
-
'data-[state=closed]:animate-out',
|
|
134
|
-
'data-[state=closed]:fade-out-0',
|
|
135
|
-
'data-[state=closed]:slide-out-to-top',
|
|
136
|
-
'data-[state=closed]:duration-300',
|
|
137
|
-
),
|
|
138
|
-
);
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
**Animation Flow:**
|
|
142
|
-
|
|
143
|
-
1. `state` signal changes from `'open'` to `'closed'`
|
|
144
|
-
2. `data-state` attribute updates to `"closed"`
|
|
145
|
-
3. Tailwind applies exit animation classes
|
|
146
|
-
4. Animation plays for 300ms
|
|
147
|
-
5. `animationend` event fires
|
|
148
|
-
6. Provider sets `overlayOpen = false`
|
|
149
|
-
7. Portal detaches the overlay from DOM
|
|
150
|
-
|
|
151
|
-
**Why 300ms Duration?**
|
|
152
|
-
|
|
153
|
-
Mobile menus typically use standard animation timing (300ms) to provide smooth, natural transitions without feeling sluggish.
|
|
154
|
-
|
|
155
|
-
## Complete Animation Timeline
|
|
156
|
-
|
|
157
|
-
### Opening Sequence
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
User clicks hamburger trigger:
|
|
161
|
-
│
|
|
162
|
-
├─ t=0ms: Trigger calls open.set(true)
|
|
163
|
-
│ │
|
|
164
|
-
│ └─ Provider effect:
|
|
165
|
-
│ └─ overlayOpen.set(true) ← Effect responds immediately
|
|
166
|
-
│ └─ Portal effect (triggered by overlayOpen):
|
|
167
|
-
│ └─ overlayRef.attach(portal) ← DOM mounted
|
|
168
|
-
│
|
|
169
|
-
├─ t=0ms: Menu effect (triggered by open):
|
|
170
|
-
│ └─ state.set('open')
|
|
171
|
-
│ └─ data-state="open" → Entry animation starts
|
|
172
|
-
│ ├─ fade-in-0
|
|
173
|
-
│ ├─ slide-in-from-top
|
|
174
|
-
│ └─ duration-300
|
|
175
|
-
│
|
|
176
|
-
├─ t=0-300ms: Animation plays
|
|
177
|
-
│
|
|
178
|
-
└─ t=300ms: Animation complete, menu visible
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Closing Sequence
|
|
182
|
-
|
|
183
|
-
```
|
|
184
|
-
User clicks close button/navigates/presses Escape:
|
|
185
|
-
│
|
|
186
|
-
├─ t=0ms: Calls open.set(false)
|
|
187
|
-
│ │
|
|
188
|
-
│ └─ Menu effect (triggered by open):
|
|
189
|
-
│ └─ state.set('closed') ← Triggers animation
|
|
190
|
-
│ └─ data-state="closed" → Exit animation starts
|
|
191
|
-
│ ├─ animate-out
|
|
192
|
-
│ ├─ fade-out-0
|
|
193
|
-
│ ├─ slide-out-to-top
|
|
194
|
-
│ └─ duration-300
|
|
195
|
-
│
|
|
196
|
-
├─ IMPORTANT: overlayOpen is STILL true!
|
|
197
|
-
│ └─ DOM remains mounted so animation can play
|
|
198
|
-
│
|
|
199
|
-
├─ t=0-300ms: Animation plays
|
|
200
|
-
│
|
|
201
|
-
├─ t=~300ms: Menu animation completes
|
|
202
|
-
│ └─ onAnimationEnd(event) fires
|
|
203
|
-
│ └─ if (state === 'closed' && target === element):
|
|
204
|
-
│ └─ provider.onMenuAnimationComplete()
|
|
205
|
-
│ └─ overlayOpen.set(false) ← Cleanup triggered!
|
|
206
|
-
│
|
|
207
|
-
└─ t=~300ms: Portal effect (triggered by overlayOpen):
|
|
208
|
-
└─ overlayRef.detach() ← DOM removed cleanly after animation
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
## No Backdrop Coordination
|
|
212
|
-
|
|
213
|
-
Like popover, navbar mobile menu doesn't need to coordinate multiple animations:
|
|
214
|
-
|
|
215
|
-
- ❌ No backdrop animation
|
|
216
|
-
- ❌ No `animationsCompleted` counter
|
|
217
|
-
- ✅ Single animation to track (menu itself)
|
|
218
|
-
- ✅ Simpler cleanup logic
|
|
219
|
-
|
|
220
|
-
```typescript
|
|
221
|
-
// Navbar Mobile Menu (simplified - no counter needed)
|
|
222
|
-
onMenuAnimationComplete(): void {
|
|
223
|
-
if (!this.open()) {
|
|
224
|
-
this.overlayOpen.set(false); // Direct cleanup
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
## State Synchronization
|
|
230
|
-
|
|
231
|
-
### Provider Constructor Effects
|
|
232
|
-
|
|
233
|
-
```typescript
|
|
234
|
-
constructor() {
|
|
235
|
-
// Close mobile menu on navigation
|
|
236
|
-
this.router.events
|
|
237
|
-
.pipe(
|
|
238
|
-
filter((event) => event instanceof NavigationEnd),
|
|
239
|
-
filter(() => this.open()),
|
|
240
|
-
takeUntilDestroyed(),
|
|
241
|
-
)
|
|
242
|
-
.subscribe(() => this.open.set(false));
|
|
243
|
-
|
|
244
|
-
// Synchronize overlay state with logical state for opening
|
|
245
|
-
effect(() => {
|
|
246
|
-
if (this.open()) {
|
|
247
|
-
// Opening: Mount DOM immediately so animation can start
|
|
248
|
-
this.overlayOpen.set(true);
|
|
249
|
-
}
|
|
250
|
-
// Note: When closing (open = false), overlayOpen stays true
|
|
251
|
-
// until animation completes (handled by onMenuAnimationComplete)
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
**Navigation Integration:**
|
|
257
|
-
|
|
258
|
-
The navbar mobile menu automatically closes when the user navigates to a new route, providing a better UX for mobile navigation.
|
|
259
|
-
|
|
260
|
-
### Mobile Menu Constructor Effects
|
|
261
|
-
|
|
262
|
-
```typescript
|
|
263
|
-
constructor() {
|
|
264
|
-
// Effect: Sync animation state with logical state
|
|
265
|
-
effect(() => {
|
|
266
|
-
const isOpen = this.provider.open();
|
|
267
|
-
this.state.set(isOpen ? 'open' : 'closed');
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
### Portal Constructor Effects
|
|
273
|
-
|
|
274
|
-
```typescript
|
|
275
|
-
constructor() {
|
|
276
|
-
// Effect: Control overlay attachment based on overlayOpen
|
|
277
|
-
effect(() => {
|
|
278
|
-
if (this.provider.overlayOpen()) {
|
|
279
|
-
this.attachMenu();
|
|
280
|
-
} else {
|
|
281
|
-
this.detachMenu();
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
## Animation Completion Handling
|
|
288
|
-
|
|
289
|
-
### Mobile Menu Component
|
|
290
|
-
|
|
291
|
-
```typescript
|
|
292
|
-
protected onAnimationEnd(event: AnimationEvent): void {
|
|
293
|
-
// Only trigger cleanup when close animation completes
|
|
294
|
-
if (
|
|
295
|
-
this.state() === 'closed' &&
|
|
296
|
-
event.target === this.elementRef.nativeElement
|
|
297
|
-
) {
|
|
298
|
-
this.provider.onMenuAnimationComplete();
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
**Why check `event.target`?**
|
|
304
|
-
|
|
305
|
-
- `animationend` bubbles from child elements
|
|
306
|
-
- We only care about the menu's own animation
|
|
307
|
-
- Prevents false triggers from child element animations (links, buttons, etc.)
|
|
308
|
-
|
|
309
|
-
### Provider Component
|
|
310
|
-
|
|
311
|
-
```typescript
|
|
312
|
-
/**
|
|
313
|
-
* Called by mobile menu when its close animation completes
|
|
314
|
-
*/
|
|
315
|
-
onMenuAnimationComplete(): void {
|
|
316
|
-
if (!this.open()) {
|
|
317
|
-
this.overlayOpen.set(false); // Direct cleanup (no counter)
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
**Why check `!this.open()` before setting?**
|
|
323
|
-
|
|
324
|
-
- User might have reopened menu during close animation
|
|
325
|
-
- Guards against race conditions
|
|
326
|
-
- Example: User clicks close (close starts), then immediately clicks hamburger again (reopens)
|
|
327
|
-
- Without this check, overlayOpen would incorrectly be set to false for the new open cycle
|
|
328
|
-
|
|
329
|
-
## Comparison: Old vs New Implementation
|
|
330
|
-
|
|
331
|
-
### Old Implementation (Timer-Based)
|
|
332
|
-
|
|
333
|
-
```typescript
|
|
334
|
-
// ❌ Problems:
|
|
335
|
-
private detachMenu(): void {
|
|
336
|
-
if (this.overlayRef.hasAttached()) {
|
|
337
|
-
this.detachTimer = setTimeout(() => {
|
|
338
|
-
this.overlayRef.detach();
|
|
339
|
-
}, 300); // Assumes animation takes exactly 300ms
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
**Issues:**
|
|
345
|
-
|
|
346
|
-
1. Hardcoded timer with no actual animation completion detection
|
|
347
|
-
2. Browser rendering variations could cause timing differences
|
|
348
|
-
3. Animation might take longer or shorter
|
|
349
|
-
4. Race conditions if user reopens quickly
|
|
350
|
-
5. Memory leaks if timer not cleared properly
|
|
351
|
-
|
|
352
|
-
### New Implementation (Event-Driven)
|
|
353
|
-
|
|
354
|
-
```typescript
|
|
355
|
-
// ✅ Improvements:
|
|
356
|
-
onMenuAnimationComplete(): void {
|
|
357
|
-
if (!this.open()) {
|
|
358
|
-
this.overlayOpen.set(false); // Waits for actual completion
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
**Benefits:**
|
|
364
|
-
|
|
365
|
-
1. ✅ Event-driven (waits for actual animation end)
|
|
366
|
-
2. ✅ No timing assumptions
|
|
367
|
-
3. ✅ Handles browser rendering variations
|
|
368
|
-
4. ✅ Explicit completion signal
|
|
369
|
-
5. ✅ Guard pattern prevents race conditions
|
|
370
|
-
6. ✅ No manual timer cleanup needed
|
|
371
|
-
|
|
372
|
-
## Key Design Decisions
|
|
373
|
-
|
|
374
|
-
### 1. Separation of Concerns
|
|
375
|
-
|
|
376
|
-
**Decision:** Split logical state (`open`) from physical state (`overlayOpen`)
|
|
377
|
-
|
|
378
|
-
**Why:**
|
|
379
|
-
|
|
380
|
-
- Logical state drives animations
|
|
381
|
-
- Physical state drives DOM lifecycle
|
|
382
|
-
- Animation needs time to complete before DOM removal
|
|
383
|
-
- Clean separation makes flow easier to understand
|
|
384
|
-
|
|
385
|
-
### 2. Direct Cleanup (No Counter)
|
|
386
|
-
|
|
387
|
-
**Decision:** Set `overlayOpen = false` directly in animation complete handler
|
|
388
|
-
|
|
389
|
-
**Why:**
|
|
390
|
-
|
|
391
|
-
- Only one animation to track (no backdrop)
|
|
392
|
-
- No need for counter complexity
|
|
393
|
-
- Simpler code, easier to understand
|
|
394
|
-
- Still uses guard pattern for safety
|
|
395
|
-
|
|
396
|
-
### 3. Guard Pattern
|
|
397
|
-
|
|
398
|
-
**Decision:** Check `!open()` before setting `overlayOpen = false`
|
|
399
|
-
|
|
400
|
-
**Why:**
|
|
401
|
-
|
|
402
|
-
- User might reopen during close animation
|
|
403
|
-
- Prevents overlayOpen from being set to false during new open cycle
|
|
404
|
-
- Same guard pattern as other overlay components for consistency
|
|
405
|
-
|
|
406
|
-
### 4. Navigation Integration
|
|
407
|
-
|
|
408
|
-
**Decision:** Auto-close menu on route navigation
|
|
409
|
-
|
|
410
|
-
**Why:**
|
|
411
|
-
|
|
412
|
-
- Better mobile UX - menu shouldn't stay open after navigation
|
|
413
|
-
- Uses Angular Router events to detect navigation
|
|
414
|
-
- Automatically cleans up without manual intervention
|
|
415
|
-
- Common pattern in mobile navigation menus
|
|
416
|
-
|
|
417
|
-
### 5. Flexible Positioning
|
|
418
|
-
|
|
419
|
-
**Decision:** Update position strategy dynamically when origin becomes available
|
|
420
|
-
|
|
421
|
-
**Why:**
|
|
422
|
-
|
|
423
|
-
- Origin (navbar) might not be available immediately
|
|
424
|
-
- Effect watches for origin changes and updates position strategy
|
|
425
|
-
- Allows menu to position correctly below navbar
|
|
426
|
-
- Handles dynamic navbar height via CSS variable
|
|
427
|
-
|
|
428
|
-
## Animation Classes Reference
|
|
429
|
-
|
|
430
|
-
### Mobile Menu Content Classes
|
|
431
|
-
|
|
432
|
-
```typescript
|
|
433
|
-
// Entry animation
|
|
434
|
-
'animate-in fade-in-0 slide-in-from-top duration-300';
|
|
435
|
-
|
|
436
|
-
// Exit animation (via data-state="closed")
|
|
437
|
-
'data-[state=closed]:animate-out';
|
|
438
|
-
'data-[state=closed]:fade-out-0';
|
|
439
|
-
'data-[state=closed]:slide-out-to-top';
|
|
440
|
-
'data-[state=closed]:duration-300';
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
### Position Classes
|
|
444
|
-
|
|
445
|
-
```typescript
|
|
446
|
-
// Fixed positioning below navbar
|
|
447
|
-
'fixed inset-x-0 top-[calc(var(--navbar-height,57px))] bottom-0';
|
|
448
|
-
'z-50'; // Above navbar content
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
## Accessibility Considerations
|
|
452
|
-
|
|
453
|
-
The animation system preserves accessibility:
|
|
454
|
-
|
|
455
|
-
1. **Focus Management:** Menu receives tabindex="-1" for programmatic focus
|
|
456
|
-
2. **ARIA Attributes:** `role="navigation"`, `aria-label="Mobile navigation"`
|
|
457
|
-
3. **Screen Readers:** Announce menu immediately (not after animation)
|
|
458
|
-
4. **Keyboard:** Escape key works during animations to trigger close
|
|
459
|
-
5. **Navigation:** Auto-closes on route changes for better UX
|
|
460
|
-
6. **Reduced Motion:** Could add `@media (prefers-reduced-motion)` support
|
|
461
|
-
|
|
462
|
-
## Performance Considerations
|
|
463
|
-
|
|
464
|
-
### Efficient Rendering
|
|
465
|
-
|
|
466
|
-
- Uses `ChangeDetectionStrategy.OnPush` everywhere
|
|
467
|
-
- Effects only run when dependencies change
|
|
468
|
-
- No manual subscriptions to manage (except router events with cleanup)
|
|
469
|
-
- Overlay reused across open/close cycles
|
|
470
|
-
|
|
471
|
-
### Animation Performance
|
|
472
|
-
|
|
473
|
-
- CSS animations (GPU accelerated)
|
|
474
|
-
- Opacity and transform (composited properties)
|
|
475
|
-
- No layout thrashing
|
|
476
|
-
- Minimal JavaScript during animation
|
|
477
|
-
|
|
478
|
-
### Memory Management
|
|
479
|
-
|
|
480
|
-
- Effects auto-cleanup on destroy
|
|
481
|
-
- No timeout leaks (event-driven approach)
|
|
482
|
-
- Router subscription cleaned up via `takeUntilDestroyed()`
|
|
483
|
-
- Overlay disposed on component destruction
|
|
484
|
-
|
|
485
|
-
## Future Enhancements
|
|
486
|
-
|
|
487
|
-
### Potential Improvements
|
|
488
|
-
|
|
489
|
-
1. **Variable Animation Durations:**
|
|
490
|
-
- Input property for animation duration
|
|
491
|
-
- Configurable timing for different use cases
|
|
492
|
-
|
|
493
|
-
2. **Animation Events:**
|
|
494
|
-
- Output events for animation start/end
|
|
495
|
-
- External components can react to animation state
|
|
496
|
-
|
|
497
|
-
3. **Reduced Motion Support:**
|
|
498
|
-
- Detect `prefers-reduced-motion`
|
|
499
|
-
- Instant show/hide if user prefers
|
|
500
|
-
- Keep accessibility benefits
|
|
501
|
-
|
|
502
|
-
4. **Touch Gestures:**
|
|
503
|
-
- Swipe down to close menu
|
|
504
|
-
- Drag gesture support
|
|
505
|
-
- Touch-friendly interactions
|
|
506
|
-
|
|
507
|
-
5. **Custom Positioning:**
|
|
508
|
-
- Support for custom position strategies
|
|
509
|
-
- Configurable offset and alignment
|
|
510
|
-
|
|
511
|
-
## Testing Considerations
|
|
512
|
-
|
|
513
|
-
### What to Test
|
|
514
|
-
|
|
515
|
-
1. **State Transitions:**
|
|
516
|
-
- open: false → true → false
|
|
517
|
-
- overlayOpen follows correctly
|
|
518
|
-
- state syncs with open
|
|
519
|
-
|
|
520
|
-
2. **Animation Timing:**
|
|
521
|
-
- Animation plays for full duration (300ms)
|
|
522
|
-
- DOM not removed early
|
|
523
|
-
- Menu slides and fades correctly
|
|
524
|
-
|
|
525
|
-
3. **Navigation Integration:**
|
|
526
|
-
- Menu closes on route change
|
|
527
|
-
- Only closes if currently open
|
|
528
|
-
- Doesn't interfere with navigation
|
|
529
|
-
|
|
530
|
-
4. **Positioning:**
|
|
531
|
-
- Positions correctly below navbar
|
|
532
|
-
- Updates when navbar origin changes
|
|
533
|
-
- Respects navbar height CSS variable
|
|
534
|
-
|
|
535
|
-
5. **Interaction:**
|
|
536
|
-
- Escape key closes menu
|
|
537
|
-
- Trigger reopens after close
|
|
538
|
-
- Works during animation
|
|
539
|
-
|
|
540
|
-
6. **Edge Cases:**
|
|
541
|
-
- Rapid open/close
|
|
542
|
-
- Open during close animation
|
|
543
|
-
- Close during open animation
|
|
544
|
-
- Navigation during animation
|
|
545
|
-
|
|
546
|
-
7. **Cleanup:**
|
|
547
|
-
- No memory leaks
|
|
548
|
-
- Effects unsubscribe
|
|
549
|
-
- Router subscription cleaned up
|
|
550
|
-
|
|
551
|
-
### Testing Strategy
|
|
552
|
-
|
|
553
|
-
```typescript
|
|
554
|
-
// Example test structure
|
|
555
|
-
describe('Navbar Mobile Menu Animations', () => {
|
|
556
|
-
it('should keep DOM mounted during close animation', async () => {
|
|
557
|
-
// Open menu
|
|
558
|
-
provider.open.set(true);
|
|
559
|
-
fixture.detectChanges();
|
|
560
|
-
|
|
561
|
-
// Close menu
|
|
562
|
-
provider.open.set(false);
|
|
563
|
-
fixture.detectChanges();
|
|
564
|
-
|
|
565
|
-
// Immediately after close - overlayOpen should still be true
|
|
566
|
-
expect(provider.overlayOpen()).toBe(true);
|
|
567
|
-
|
|
568
|
-
// After animation completes - overlayOpen should be false
|
|
569
|
-
await delay(400); // Buffer for 300ms animation
|
|
570
|
-
expect(provider.overlayOpen()).toBe(false);
|
|
571
|
-
});
|
|
572
|
-
|
|
573
|
-
it('should close menu on navigation', () => {
|
|
574
|
-
provider.open.set(true);
|
|
575
|
-
fixture.detectChanges();
|
|
576
|
-
|
|
577
|
-
// Trigger navigation
|
|
578
|
-
router.navigateByUrl('/new-route');
|
|
579
|
-
fixture.detectChanges();
|
|
580
|
-
|
|
581
|
-
expect(provider.open()).toBe(false);
|
|
582
|
-
});
|
|
583
|
-
});
|
|
584
|
-
```
|
|
585
|
-
|
|
586
|
-
## Summary
|
|
587
|
-
|
|
588
|
-
The navbar mobile menu animation architecture achieves smooth, reliable animations through:
|
|
589
|
-
|
|
590
|
-
1. **Two-signal pattern:** Separates intent (`open`) from DOM lifecycle (`overlayOpen`)
|
|
591
|
-
2. **Event-driven completion:** Menu explicitly signals when animation is done
|
|
592
|
-
3. **Direct cleanup:** No counter needed (only one animation)
|
|
593
|
-
4. **Reactive updates:** Effects respond to state changes automatically
|
|
594
|
-
5. **Robust timing:** No assumptions, handles browser variations
|
|
595
|
-
6. **Navigation integration:** Auto-closes on route changes for better UX
|
|
596
|
-
|
|
597
|
-
This architecture provides:
|
|
598
|
-
|
|
599
|
-
- ✅ Reliable animation completion detection
|
|
600
|
-
- ✅ Clean separation of concerns
|
|
601
|
-
- ✅ Simpler than multi-animation overlay components
|
|
602
|
-
- ✅ No race conditions or timing assumptions
|
|
603
|
-
- ✅ Debuggable signal-based state
|
|
604
|
-
- ✅ Better user experience (smooth, never cut off)
|
|
605
|
-
- ✅ Mobile-optimized (300ms animations, auto-close on nav)
|