@lifecorner/angular-ui-kit 3.4.1 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -2
- package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs +454 -0
- package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-alert.mjs +297 -0
- package/fesm2022/lifecorner-angular-ui-kit-alert.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs +190 -0
- package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs +446 -0
- package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs +158 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs +216 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-badge.mjs +121 -0
- package/fesm2022/lifecorner-angular-ui-kit-badge.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs +360 -0
- package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs +344 -0
- package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs +191 -0
- package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-button.mjs +423 -0
- package/fesm2022/lifecorner-angular-ui-kit-button.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs +368 -0
- package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-callout.mjs +203 -0
- package/fesm2022/lifecorner-angular-ui-kit-callout.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-card.mjs +323 -0
- package/fesm2022/lifecorner-angular-ui-kit-card.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-chat.mjs +790 -0
- package/fesm2022/lifecorner-angular-ui-kit-chat.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs +325 -0
- package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-chip.mjs +214 -0
- package/fesm2022/lifecorner-angular-ui-kit-chip.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs +375 -0
- package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs +518 -0
- package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs +278 -0
- package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs +688 -0
- package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs +494 -0
- package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-container.mjs +103 -0
- package/fesm2022/lifecorner-angular-ui-kit-container.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs +308 -0
- package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs +466 -0
- package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs +810 -0
- package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs +1761 -0
- package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs +165 -0
- package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs +356 -0
- package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-divider.mjs +119 -0
- package/fesm2022/lifecorner-angular-ui-kit-divider.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs +762 -0
- package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs +255 -0
- package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs +308 -0
- package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs +519 -0
- package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs +143 -0
- package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs +306 -0
- package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs +154 -0
- package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs +281 -0
- package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs +258 -0
- package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-footer.mjs +200 -0
- package/fesm2022/lifecorner-angular-ui-kit-footer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs +292 -0
- package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs +563 -0
- package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs +314 -0
- package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs +265 -0
- package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-header.mjs +955 -0
- package/fesm2022/lifecorner-angular-ui-kit-header.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs +305 -0
- package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-hero.mjs +168 -0
- package/fesm2022/lifecorner-angular-ui-kit-hero.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs +9 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon.mjs +1026 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-input.mjs +595 -0
- package/fesm2022/lifecorner-angular-ui-kit-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs +105 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs +50 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs +22 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs +319 -0
- package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs +413 -0
- package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-list.mjs +338 -0
- package/fesm2022/lifecorner-angular-ui-kit-list.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs +813 -0
- package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-logo.mjs +226 -0
- package/fesm2022/lifecorner-angular-ui-kit-logo.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs +756 -0
- package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-menu.mjs +321 -0
- package/fesm2022/lifecorner-angular-ui-kit-menu.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-modal.mjs +329 -0
- package/fesm2022/lifecorner-angular-ui-kit-modal.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-models.mjs +0 -0
- package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs +419 -0
- package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs +644 -0
- package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs +401 -0
- package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs +266 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs +127 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs +343 -0
- package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs +696 -0
- package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs +162 -0
- package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs +159 -0
- package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-popover.mjs +190 -0
- package/fesm2022/lifecorner-angular-ui-kit-popover.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs +190 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs +175 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs +255 -0
- package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs +309 -0
- package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-radio.mjs +708 -0
- package/fesm2022/lifecorner-angular-ui-kit-radio.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-rating.mjs +327 -0
- package/fesm2022/lifecorner-angular-ui-kit-rating.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs +718 -0
- package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs +415 -0
- package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs +290 -0
- package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-section.mjs +127 -0
- package/fesm2022/lifecorner-angular-ui-kit-section.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-select.mjs +650 -0
- package/fesm2022/lifecorner-angular-ui-kit-select.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs +691 -0
- package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs +144 -0
- package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-slider.mjs +204 -0
- package/fesm2022/lifecorner-angular-ui-kit-slider.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs +73 -0
- package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs +318 -0
- package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs +95 -0
- package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs +298 -0
- package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stack.mjs +162 -0
- package/fesm2022/lifecorner-angular-ui-kit-stack.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs +412 -0
- package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs +186 -0
- package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs +224 -0
- package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs +122 -0
- package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs +209 -0
- package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-switch.mjs +249 -0
- package/fesm2022/lifecorner-angular-ui-kit-switch.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-table.mjs +1434 -0
- package/fesm2022/lifecorner-angular-ui-kit-table.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs +407 -0
- package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs +380 -0
- package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs +440 -0
- package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-theme.mjs +145 -0
- package/fesm2022/lifecorner-angular-ui-kit-theme.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs +262 -0
- package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-toast.mjs +352 -0
- package/fesm2022/lifecorner-angular-ui-kit-toast.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs +215 -0
- package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs +134 -0
- package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs +225 -0
- package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs +386 -0
- package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs +509 -0
- package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-typography.mjs +209 -0
- package/fesm2022/lifecorner-angular-ui-kit-typography.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs +365 -0
- package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs +371 -0
- package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit.mjs +109 -38925
- package/package.json +449 -1
- package/types/lifecorner-angular-ui-kit-accordion.d.ts +239 -0
- package/types/lifecorner-angular-ui-kit-alert.d.ts +189 -0
- package/types/lifecorner-angular-ui-kit-app-shell.d.ts +148 -0
- package/types/lifecorner-angular-ui-kit-area-chart.d.ts +180 -0
- package/types/lifecorner-angular-ui-kit-avatar-group.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-avatar.d.ts +131 -0
- package/types/lifecorner-angular-ui-kit-badge.d.ts +59 -0
- package/types/lifecorner-angular-ui-kit-bar-chart.d.ts +157 -0
- package/types/lifecorner-angular-ui-kit-bottom-nav.d.ts +184 -0
- package/types/lifecorner-angular-ui-kit-breadcrumbs.d.ts +55 -0
- package/types/lifecorner-angular-ui-kit-button.d.ts +181 -0
- package/types/lifecorner-angular-ui-kit-calendar.d.ts +136 -0
- package/types/lifecorner-angular-ui-kit-callout.d.ts +77 -0
- package/types/lifecorner-angular-ui-kit-card.d.ts +213 -0
- package/types/lifecorner-angular-ui-kit-chat.d.ts +379 -0
- package/types/lifecorner-angular-ui-kit-checkbox.d.ts +116 -0
- package/types/lifecorner-angular-ui-kit-chip.d.ts +104 -0
- package/types/lifecorner-angular-ui-kit-choice-prompt.d.ts +186 -0
- package/types/lifecorner-angular-ui-kit-code-block.d.ts +85 -0
- package/types/lifecorner-angular-ui-kit-color-picker.d.ts +88 -0
- package/types/lifecorner-angular-ui-kit-combobox.d.ts +222 -0
- package/types/lifecorner-angular-ui-kit-confirm-dialog.d.ts +211 -0
- package/types/lifecorner-angular-ui-kit-container.d.ts +47 -0
- package/types/lifecorner-angular-ui-kit-copy-field.d.ts +89 -0
- package/types/lifecorner-angular-ui-kit-date-range-picker.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-datepicker.d.ts +363 -0
- package/types/lifecorner-angular-ui-kit-dependency-viewer.d.ts +568 -0
- package/types/lifecorner-angular-ui-kit-description-list.d.ts +137 -0
- package/types/lifecorner-angular-ui-kit-diff-viewer.d.ts +93 -0
- package/types/lifecorner-angular-ui-kit-divider.d.ts +66 -0
- package/types/lifecorner-angular-ui-kit-document-viewer.d.ts +256 -0
- package/types/lifecorner-angular-ui-kit-donut-chart.d.ts +92 -0
- package/types/lifecorner-angular-ui-kit-drawer.d.ts +124 -0
- package/types/lifecorner-angular-ui-kit-email-input.d.ts +292 -0
- package/types/lifecorner-angular-ui-kit-empty-state.d.ts +81 -0
- package/types/lifecorner-angular-ui-kit-error-display.d.ts +157 -0
- package/types/lifecorner-angular-ui-kit-field-group.d.ts +69 -0
- package/types/lifecorner-angular-ui-kit-file-upload.d.ts +122 -0
- package/types/lifecorner-angular-ui-kit-filter-bar.d.ts +116 -0
- package/types/lifecorner-angular-ui-kit-footer.d.ts +97 -0
- package/types/lifecorner-angular-ui-kit-funnel-chart.d.ts +97 -0
- package/types/lifecorner-angular-ui-kit-gallery.d.ts +240 -0
- package/types/lifecorner-angular-ui-kit-gantt-chart.d.ts +133 -0
- package/types/lifecorner-angular-ui-kit-gauge.d.ts +94 -0
- package/types/lifecorner-angular-ui-kit-header.d.ts +496 -0
- package/types/lifecorner-angular-ui-kit-heatmap.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-hero.d.ts +121 -0
- package/types/lifecorner-angular-ui-kit-icon-names.d.ts +21 -0
- package/types/lifecorner-angular-ui-kit-icon.d.ts +260 -0
- package/types/lifecorner-angular-ui-kit-input.d.ts +346 -0
- package/types/lifecorner-angular-ui-kit-internal-chart.d.ts +86 -0
- package/types/lifecorner-angular-ui-kit-internal-overlay.d.ts +31 -0
- package/types/lifecorner-angular-ui-kit-internal-url.d.ts +22 -0
- package/types/lifecorner-angular-ui-kit-kanban-board.d.ts +111 -0
- package/types/lifecorner-angular-ui-kit-line-chart.d.ts +186 -0
- package/types/lifecorner-angular-ui-kit-list.d.ts +215 -0
- package/types/lifecorner-angular-ui-kit-log-viewer.d.ts +355 -0
- package/types/lifecorner-angular-ui-kit-logo.d.ts +182 -0
- package/types/lifecorner-angular-ui-kit-markdown.d.ts +278 -0
- package/types/lifecorner-angular-ui-kit-menu.d.ts +152 -0
- package/types/lifecorner-angular-ui-kit-modal.d.ts +207 -0
- package/types/lifecorner-angular-ui-kit-models.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-next-step-card.d.ts +262 -0
- package/types/lifecorner-angular-ui-kit-notification-center.d.ts +237 -0
- package/types/lifecorner-angular-ui-kit-number-input.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-page-header.d.ts +178 -0
- package/types/lifecorner-angular-ui-kit-page-layout.d.ts +61 -0
- package/types/lifecorner-angular-ui-kit-pagination.d.ts +141 -0
- package/types/lifecorner-angular-ui-kit-password-input.d.ts +361 -0
- package/types/lifecorner-angular-ui-kit-pie-chart.d.ts +58 -0
- package/types/lifecorner-angular-ui-kit-pipeline.d.ts +89 -0
- package/types/lifecorner-angular-ui-kit-popover.d.ts +104 -0
- package/types/lifecorner-angular-ui-kit-progress-bar.d.ts +116 -0
- package/types/lifecorner-angular-ui-kit-progress-ring.d.ts +67 -0
- package/types/lifecorner-angular-ui-kit-provider-button.d.ts +137 -0
- package/types/lifecorner-angular-ui-kit-radar-chart.d.ts +113 -0
- package/types/lifecorner-angular-ui-kit-radio.d.ts +297 -0
- package/types/lifecorner-angular-ui-kit-rating.d.ts +115 -0
- package/types/lifecorner-angular-ui-kit-rich-text-editor.d.ts +226 -0
- package/types/lifecorner-angular-ui-kit-scatter-plot.d.ts +190 -0
- package/types/lifecorner-angular-ui-kit-search-input.d.ts +137 -0
- package/types/lifecorner-angular-ui-kit-section.d.ts +34 -0
- package/types/lifecorner-angular-ui-kit-select.d.ts +274 -0
- package/types/lifecorner-angular-ui-kit-sidenav.d.ts +368 -0
- package/types/lifecorner-angular-ui-kit-skeleton.d.ts +61 -0
- package/types/lifecorner-angular-ui-kit-slider.d.ts +79 -0
- package/types/lifecorner-angular-ui-kit-spacer.d.ts +27 -0
- package/types/lifecorner-angular-ui-kit-sparkline.d.ts +113 -0
- package/types/lifecorner-angular-ui-kit-spinner.d.ts +50 -0
- package/types/lifecorner-angular-ui-kit-split-pane.d.ts +131 -0
- package/types/lifecorner-angular-ui-kit-stack.d.ts +49 -0
- package/types/lifecorner-angular-ui-kit-stacked-bar-chart.d.ts +171 -0
- package/types/lifecorner-angular-ui-kit-stage-list.d.ts +69 -0
- package/types/lifecorner-angular-ui-kit-stat-trend.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-status-dot.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-stepper.d.ts +113 -0
- package/types/lifecorner-angular-ui-kit-switch.d.ts +141 -0
- package/types/lifecorner-angular-ui-kit-table.d.ts +632 -0
- package/types/lifecorner-angular-ui-kit-tabs.d.ts +196 -0
- package/types/lifecorner-angular-ui-kit-tag-input.d.ts +123 -0
- package/types/lifecorner-angular-ui-kit-textarea.d.ts +225 -0
- package/types/lifecorner-angular-ui-kit-theme.d.ts +91 -0
- package/types/lifecorner-angular-ui-kit-timeline.d.ts +162 -0
- package/types/lifecorner-angular-ui-kit-toast.d.ts +204 -0
- package/types/lifecorner-angular-ui-kit-toggle-group.d.ts +100 -0
- package/types/lifecorner-angular-ui-kit-tokens.d.ts +134 -0
- package/types/lifecorner-angular-ui-kit-toolbar.d.ts +120 -0
- package/types/lifecorner-angular-ui-kit-tooltip.d.ts +120 -0
- package/types/lifecorner-angular-ui-kit-tree-view.d.ts +231 -0
- package/types/lifecorner-angular-ui-kit-typography.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-verification-code-input.d.ts +187 -0
- package/types/lifecorner-angular-ui-kit-waterfall-chart.d.ts +163 -0
- package/types/lifecorner-angular-ui-kit.d.ts +109 -17401
- package/fesm2022/lifecorner-angular-ui-kit.mjs.map +0 -1
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input, model, output } from "@angular/core";
|
|
3
|
+
import { IconComponent } from "@lifecorner/angular-ui-kit/icon";
|
|
4
|
+
var AlertComponent = class AlertComponent {
|
|
5
|
+
variant = input("info", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
|
|
6
|
+
title = input(...ngDevMode ? [void 0, { debugName: "title" }] : /* istanbul ignore next */ []);
|
|
7
|
+
message = input(...ngDevMode ? [void 0, { debugName: "message" }] : /* istanbul ignore next */ []);
|
|
8
|
+
icon = input(...ngDevMode ? [void 0, { debugName: "icon" }] : /* istanbul ignore next */ []);
|
|
9
|
+
showIcon = input(true, ...ngDevMode ? [{ debugName: "showIcon" }] : /* istanbul ignore next */ []);
|
|
10
|
+
iconAriaLabel = input(void 0, ...ngDevMode ? [{ debugName: "iconAriaLabel" }] : /* istanbul ignore next */ []);
|
|
11
|
+
actionsLayout = input("inline", ...ngDevMode ? [{ debugName: "actionsLayout" }] : /* istanbul ignore next */ []);
|
|
12
|
+
dismissible = input(false, ...ngDevMode ? [{ debugName: "dismissible" }] : /* istanbul ignore next */ []);
|
|
13
|
+
ariaLabel = input(...ngDevMode ? [void 0, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
|
|
14
|
+
closeAriaLabel = input("Close alert", ...ngDevMode ? [{ debugName: "closeAriaLabel" }] : /* istanbul ignore next */ []);
|
|
15
|
+
dismissed = output();
|
|
16
|
+
visible = model(true, ...ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []);
|
|
17
|
+
hostClasses = computed(() => {
|
|
18
|
+
const classes = ["lc-alert", `lc-alert--${this.variant()}`];
|
|
19
|
+
if (this.actionsLayout() === "stacked") classes.push("lc-alert--actions-stacked");
|
|
20
|
+
if (this.showIcon()) classes.push("lc-alert--with-icon");
|
|
21
|
+
if (!this.visible()) classes.push("lc-alert--hidden");
|
|
22
|
+
return classes.join(" ");
|
|
23
|
+
}, ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
|
|
24
|
+
containerClasses = computed(() => {
|
|
25
|
+
return "lc-alert__container";
|
|
26
|
+
}, ...ngDevMode ? [{ debugName: "containerClasses" }] : /* istanbul ignore next */ []);
|
|
27
|
+
isUrgent = computed(() => {
|
|
28
|
+
const variant = this.variant();
|
|
29
|
+
return variant === "error" || variant === "warning";
|
|
30
|
+
}, ...ngDevMode ? [{ debugName: "isUrgent" }] : /* istanbul ignore next */ []);
|
|
31
|
+
role = computed(() => this.isUrgent() ? "alert" : "status", ...ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []);
|
|
32
|
+
ariaLive = computed(() => this.isUrgent() ? "assertive" : "polite", ...ngDevMode ? [{ debugName: "ariaLive" }] : /* istanbul ignore next */ []);
|
|
33
|
+
defaultIcon = computed(() => {
|
|
34
|
+
return this.icon() || {
|
|
35
|
+
success: "check-circle",
|
|
36
|
+
error: "x-circle",
|
|
37
|
+
warning: "exclamation-triangle",
|
|
38
|
+
info: "information-circle"
|
|
39
|
+
}[this.variant()];
|
|
40
|
+
}, ...ngDevMode ? [{ debugName: "defaultIcon" }] : /* istanbul ignore next */ []);
|
|
41
|
+
dismiss() {
|
|
42
|
+
this.visible.set(false);
|
|
43
|
+
this.dismissed.emit();
|
|
44
|
+
}
|
|
45
|
+
onCloseClick(event) {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
event.stopPropagation();
|
|
48
|
+
this.dismiss();
|
|
49
|
+
}
|
|
50
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
51
|
+
minVersion: "12.0.0",
|
|
52
|
+
version: "22.2.2",
|
|
53
|
+
ngImport: i0,
|
|
54
|
+
type: AlertComponent,
|
|
55
|
+
deps: [],
|
|
56
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
57
|
+
});
|
|
58
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
59
|
+
minVersion: "17.0.0",
|
|
60
|
+
version: "22.2.2",
|
|
61
|
+
type: AlertComponent,
|
|
62
|
+
isStandalone: true,
|
|
63
|
+
selector: "lc-alert",
|
|
64
|
+
inputs: {
|
|
65
|
+
variant: {
|
|
66
|
+
classPropertyName: "variant",
|
|
67
|
+
publicName: "variant",
|
|
68
|
+
isSignal: true,
|
|
69
|
+
isRequired: false,
|
|
70
|
+
transformFunction: null
|
|
71
|
+
},
|
|
72
|
+
title: {
|
|
73
|
+
classPropertyName: "title",
|
|
74
|
+
publicName: "title",
|
|
75
|
+
isSignal: true,
|
|
76
|
+
isRequired: false,
|
|
77
|
+
transformFunction: null
|
|
78
|
+
},
|
|
79
|
+
message: {
|
|
80
|
+
classPropertyName: "message",
|
|
81
|
+
publicName: "message",
|
|
82
|
+
isSignal: true,
|
|
83
|
+
isRequired: false,
|
|
84
|
+
transformFunction: null
|
|
85
|
+
},
|
|
86
|
+
icon: {
|
|
87
|
+
classPropertyName: "icon",
|
|
88
|
+
publicName: "icon",
|
|
89
|
+
isSignal: true,
|
|
90
|
+
isRequired: false,
|
|
91
|
+
transformFunction: null
|
|
92
|
+
},
|
|
93
|
+
showIcon: {
|
|
94
|
+
classPropertyName: "showIcon",
|
|
95
|
+
publicName: "showIcon",
|
|
96
|
+
isSignal: true,
|
|
97
|
+
isRequired: false,
|
|
98
|
+
transformFunction: null
|
|
99
|
+
},
|
|
100
|
+
iconAriaLabel: {
|
|
101
|
+
classPropertyName: "iconAriaLabel",
|
|
102
|
+
publicName: "iconAriaLabel",
|
|
103
|
+
isSignal: true,
|
|
104
|
+
isRequired: false,
|
|
105
|
+
transformFunction: null
|
|
106
|
+
},
|
|
107
|
+
actionsLayout: {
|
|
108
|
+
classPropertyName: "actionsLayout",
|
|
109
|
+
publicName: "actionsLayout",
|
|
110
|
+
isSignal: true,
|
|
111
|
+
isRequired: false,
|
|
112
|
+
transformFunction: null
|
|
113
|
+
},
|
|
114
|
+
dismissible: {
|
|
115
|
+
classPropertyName: "dismissible",
|
|
116
|
+
publicName: "dismissible",
|
|
117
|
+
isSignal: true,
|
|
118
|
+
isRequired: false,
|
|
119
|
+
transformFunction: null
|
|
120
|
+
},
|
|
121
|
+
ariaLabel: {
|
|
122
|
+
classPropertyName: "ariaLabel",
|
|
123
|
+
publicName: "ariaLabel",
|
|
124
|
+
isSignal: true,
|
|
125
|
+
isRequired: false,
|
|
126
|
+
transformFunction: null
|
|
127
|
+
},
|
|
128
|
+
closeAriaLabel: {
|
|
129
|
+
classPropertyName: "closeAriaLabel",
|
|
130
|
+
publicName: "closeAriaLabel",
|
|
131
|
+
isSignal: true,
|
|
132
|
+
isRequired: false,
|
|
133
|
+
transformFunction: null
|
|
134
|
+
},
|
|
135
|
+
visible: {
|
|
136
|
+
classPropertyName: "visible",
|
|
137
|
+
publicName: "visible",
|
|
138
|
+
isSignal: true,
|
|
139
|
+
isRequired: false,
|
|
140
|
+
transformFunction: null
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
outputs: {
|
|
144
|
+
dismissed: "dismissed",
|
|
145
|
+
visible: "visibleChange"
|
|
146
|
+
},
|
|
147
|
+
host: { properties: {
|
|
148
|
+
"class": "hostClasses()",
|
|
149
|
+
"attr.role": "role()",
|
|
150
|
+
"attr.aria-live": "ariaLive()",
|
|
151
|
+
"attr.aria-label": "ariaLabel()"
|
|
152
|
+
} },
|
|
153
|
+
ngImport: i0,
|
|
154
|
+
template: "@if (visible()) {\n <div [class]=\"containerClasses()\">\n @if (showIcon()) {\n <div class=\"lc-alert__icon\">\n <lc-icon\n [name]=\"defaultIcon()\"\n size=\"md\"\n [decorative]=\"!iconAriaLabel()\"\n [ariaLabel]=\"iconAriaLabel()\"\n />\n </div>\n }\n \n <div class=\"lc-alert__body\">\n @if (title()) {\n <div class=\"lc-alert__title\">{{ title() }}</div>\n }\n \n <div class=\"lc-alert__content\">\n @if (message()) {\n {{ message() }}\n } @else {\n <ng-content />\n }\n </div>\n </div>\n\n <div class=\"lc-alert__action\">\n <ng-content select=\"[slot='action']\" />\n </div>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"lc-alert__close\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"onCloseClick($event)\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" [decorative]=\"true\" />\n </button>\n }\n </div>\n}\n",
|
|
155
|
+
styles: [".lc-alert{display:block;width:100%;border-radius:var(--border-radius-md);border-width:1px;border-style:solid;transition:opacity .15s ease-in-out}.lc-alert--hidden{display:none}.lc-alert__container{display:flex;align-items:flex-start;gap:var(--spacing-3);padding:var(--lc-density-padding-md, var(--spacing-4))}.lc-alert__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.lc-alert__body{flex:1;min-width:0}.lc-alert__title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);line-height:var(--line-height-tight);margin-bottom:var(--spacing-1)}.lc-alert__content{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.lc-alert--actions-stacked{container:lc-alert/inline-size}.lc-alert--actions-stacked .lc-alert__container{flex-wrap:wrap}.lc-alert--actions-stacked .lc-alert__body{flex:1 1 0}.lc-alert--actions-stacked .lc-alert__action{order:1;flex:1 1 100%;align-self:auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--spacing-2, .5rem);margin-top:var(--spacing-1, .25rem)}.lc-alert--actions-stacked .lc-alert__action>lc-button>.btn{width:100%}.lc-alert--actions-stacked.lc-alert--with-icon .lc-alert__action{padding-inline-start:calc(1.5rem + var(--spacing-3, .75rem))}@container lc-alert (width >= 36rem){.lc-alert--actions-stacked .lc-alert__action{flex-direction:row;flex-wrap:wrap;align-items:center}.lc-alert--actions-stacked .lc-alert__action>lc-button>.btn{width:auto}}.lc-alert__action{flex-shrink:0;align-self:center}.lc-alert__action:empty{display:none}.lc-alert__close{flex-shrink:0;background:transparent;border:none;cursor:pointer;padding:var(--spacing-1);margin:calc(var(--spacing-1) * -1);border-radius:var(--border-radius-sm);transition:background-color .15s ease-in-out;display:flex;align-items:center;justify-content:center}.lc-alert__close:hover{background-color:var(--color-surface-hover)}.lc-alert__close:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:2px}.lc-alert--success{background-color:#8ea4751f;border-color:#8ea47566;color:var(--color-text-primary)}.lc-alert--success .lc-alert__icon{color:var(--color-success)}.lc-alert--success .lc-alert__close:hover{background-color:#8ea4752e}.lc-alert--error{background-color:#9d0e0e24;border-color:#9d0e0e73;color:var(--color-text-primary)}.lc-alert--error .lc-alert__icon{color:var(--color-error)}.lc-alert--error .lc-alert__close:hover{background-color:#9d0e0e33}.lc-alert--warning{background-color:#e1a04024;border-color:#e1a0406b;color:var(--color-text-primary)}.lc-alert--warning .lc-alert__icon{color:var(--color-warning)}.lc-alert--warning .lc-alert__close:hover{background-color:#e1a04033}.lc-alert--info{background-color:#3b658829;border-color:#3b65886b;color:var(--color-text-primary)}.lc-alert--info .lc-alert__icon{color:var(--color-info)}.lc-alert--info .lc-alert__close:hover{background-color:#3b658838}@media(prefers-reduced-motion:no-preference){.lc-alert--hidden{animation:fadeOut .15s ease-in-out}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}\n"],
|
|
156
|
+
dependencies: [{
|
|
157
|
+
kind: "component",
|
|
158
|
+
type: IconComponent,
|
|
159
|
+
selector: "lc-icon",
|
|
160
|
+
inputs: [
|
|
161
|
+
"name",
|
|
162
|
+
"variant",
|
|
163
|
+
"size",
|
|
164
|
+
"color",
|
|
165
|
+
"ariaLabel",
|
|
166
|
+
"decorative",
|
|
167
|
+
"strict"
|
|
168
|
+
]
|
|
169
|
+
}],
|
|
170
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
171
|
+
encapsulation: i0.ViewEncapsulation.None
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
175
|
+
minVersion: "12.0.0",
|
|
176
|
+
version: "22.2.2",
|
|
177
|
+
ngImport: i0,
|
|
178
|
+
type: AlertComponent,
|
|
179
|
+
decorators: [{
|
|
180
|
+
type: Component,
|
|
181
|
+
args: [{
|
|
182
|
+
selector: "lc-alert",
|
|
183
|
+
standalone: true,
|
|
184
|
+
imports: [IconComponent],
|
|
185
|
+
encapsulation: ViewEncapsulation.None,
|
|
186
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
187
|
+
host: {
|
|
188
|
+
"[class]": "hostClasses()",
|
|
189
|
+
"[attr.role]": "role()",
|
|
190
|
+
"[attr.aria-live]": "ariaLive()",
|
|
191
|
+
"[attr.aria-label]": "ariaLabel()"
|
|
192
|
+
},
|
|
193
|
+
template: "@if (visible()) {\n <div [class]=\"containerClasses()\">\n @if (showIcon()) {\n <div class=\"lc-alert__icon\">\n <lc-icon\n [name]=\"defaultIcon()\"\n size=\"md\"\n [decorative]=\"!iconAriaLabel()\"\n [ariaLabel]=\"iconAriaLabel()\"\n />\n </div>\n }\n \n <div class=\"lc-alert__body\">\n @if (title()) {\n <div class=\"lc-alert__title\">{{ title() }}</div>\n }\n \n <div class=\"lc-alert__content\">\n @if (message()) {\n {{ message() }}\n } @else {\n <ng-content />\n }\n </div>\n </div>\n\n <div class=\"lc-alert__action\">\n <ng-content select=\"[slot='action']\" />\n </div>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"lc-alert__close\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"onCloseClick($event)\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" [decorative]=\"true\" />\n </button>\n }\n </div>\n}\n",
|
|
194
|
+
styles: [".lc-alert{display:block;width:100%;border-radius:var(--border-radius-md);border-width:1px;border-style:solid;transition:opacity .15s ease-in-out}.lc-alert--hidden{display:none}.lc-alert__container{display:flex;align-items:flex-start;gap:var(--spacing-3);padding:var(--lc-density-padding-md, var(--spacing-4))}.lc-alert__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.lc-alert__body{flex:1;min-width:0}.lc-alert__title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);line-height:var(--line-height-tight);margin-bottom:var(--spacing-1)}.lc-alert__content{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.lc-alert--actions-stacked{container:lc-alert/inline-size}.lc-alert--actions-stacked .lc-alert__container{flex-wrap:wrap}.lc-alert--actions-stacked .lc-alert__body{flex:1 1 0}.lc-alert--actions-stacked .lc-alert__action{order:1;flex:1 1 100%;align-self:auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--spacing-2, .5rem);margin-top:var(--spacing-1, .25rem)}.lc-alert--actions-stacked .lc-alert__action>lc-button>.btn{width:100%}.lc-alert--actions-stacked.lc-alert--with-icon .lc-alert__action{padding-inline-start:calc(1.5rem + var(--spacing-3, .75rem))}@container lc-alert (width >= 36rem){.lc-alert--actions-stacked .lc-alert__action{flex-direction:row;flex-wrap:wrap;align-items:center}.lc-alert--actions-stacked .lc-alert__action>lc-button>.btn{width:auto}}.lc-alert__action{flex-shrink:0;align-self:center}.lc-alert__action:empty{display:none}.lc-alert__close{flex-shrink:0;background:transparent;border:none;cursor:pointer;padding:var(--spacing-1);margin:calc(var(--spacing-1) * -1);border-radius:var(--border-radius-sm);transition:background-color .15s ease-in-out;display:flex;align-items:center;justify-content:center}.lc-alert__close:hover{background-color:var(--color-surface-hover)}.lc-alert__close:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:2px}.lc-alert--success{background-color:#8ea4751f;border-color:#8ea47566;color:var(--color-text-primary)}.lc-alert--success .lc-alert__icon{color:var(--color-success)}.lc-alert--success .lc-alert__close:hover{background-color:#8ea4752e}.lc-alert--error{background-color:#9d0e0e24;border-color:#9d0e0e73;color:var(--color-text-primary)}.lc-alert--error .lc-alert__icon{color:var(--color-error)}.lc-alert--error .lc-alert__close:hover{background-color:#9d0e0e33}.lc-alert--warning{background-color:#e1a04024;border-color:#e1a0406b;color:var(--color-text-primary)}.lc-alert--warning .lc-alert__icon{color:var(--color-warning)}.lc-alert--warning .lc-alert__close:hover{background-color:#e1a04033}.lc-alert--info{background-color:#3b658829;border-color:#3b65886b;color:var(--color-text-primary)}.lc-alert--info .lc-alert__icon{color:var(--color-info)}.lc-alert--info .lc-alert__close:hover{background-color:#3b658838}@media(prefers-reduced-motion:no-preference){.lc-alert--hidden{animation:fadeOut .15s ease-in-out}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}\n"]
|
|
195
|
+
}]
|
|
196
|
+
}],
|
|
197
|
+
propDecorators: {
|
|
198
|
+
variant: [{
|
|
199
|
+
type: i0.Input,
|
|
200
|
+
args: [{
|
|
201
|
+
isSignal: true,
|
|
202
|
+
alias: "variant",
|
|
203
|
+
required: false
|
|
204
|
+
}]
|
|
205
|
+
}],
|
|
206
|
+
title: [{
|
|
207
|
+
type: i0.Input,
|
|
208
|
+
args: [{
|
|
209
|
+
isSignal: true,
|
|
210
|
+
alias: "title",
|
|
211
|
+
required: false
|
|
212
|
+
}]
|
|
213
|
+
}],
|
|
214
|
+
message: [{
|
|
215
|
+
type: i0.Input,
|
|
216
|
+
args: [{
|
|
217
|
+
isSignal: true,
|
|
218
|
+
alias: "message",
|
|
219
|
+
required: false
|
|
220
|
+
}]
|
|
221
|
+
}],
|
|
222
|
+
icon: [{
|
|
223
|
+
type: i0.Input,
|
|
224
|
+
args: [{
|
|
225
|
+
isSignal: true,
|
|
226
|
+
alias: "icon",
|
|
227
|
+
required: false
|
|
228
|
+
}]
|
|
229
|
+
}],
|
|
230
|
+
showIcon: [{
|
|
231
|
+
type: i0.Input,
|
|
232
|
+
args: [{
|
|
233
|
+
isSignal: true,
|
|
234
|
+
alias: "showIcon",
|
|
235
|
+
required: false
|
|
236
|
+
}]
|
|
237
|
+
}],
|
|
238
|
+
iconAriaLabel: [{
|
|
239
|
+
type: i0.Input,
|
|
240
|
+
args: [{
|
|
241
|
+
isSignal: true,
|
|
242
|
+
alias: "iconAriaLabel",
|
|
243
|
+
required: false
|
|
244
|
+
}]
|
|
245
|
+
}],
|
|
246
|
+
actionsLayout: [{
|
|
247
|
+
type: i0.Input,
|
|
248
|
+
args: [{
|
|
249
|
+
isSignal: true,
|
|
250
|
+
alias: "actionsLayout",
|
|
251
|
+
required: false
|
|
252
|
+
}]
|
|
253
|
+
}],
|
|
254
|
+
dismissible: [{
|
|
255
|
+
type: i0.Input,
|
|
256
|
+
args: [{
|
|
257
|
+
isSignal: true,
|
|
258
|
+
alias: "dismissible",
|
|
259
|
+
required: false
|
|
260
|
+
}]
|
|
261
|
+
}],
|
|
262
|
+
ariaLabel: [{
|
|
263
|
+
type: i0.Input,
|
|
264
|
+
args: [{
|
|
265
|
+
isSignal: true,
|
|
266
|
+
alias: "ariaLabel",
|
|
267
|
+
required: false
|
|
268
|
+
}]
|
|
269
|
+
}],
|
|
270
|
+
closeAriaLabel: [{
|
|
271
|
+
type: i0.Input,
|
|
272
|
+
args: [{
|
|
273
|
+
isSignal: true,
|
|
274
|
+
alias: "closeAriaLabel",
|
|
275
|
+
required: false
|
|
276
|
+
}]
|
|
277
|
+
}],
|
|
278
|
+
dismissed: [{
|
|
279
|
+
type: i0.Output,
|
|
280
|
+
args: ["dismissed"]
|
|
281
|
+
}],
|
|
282
|
+
visible: [{
|
|
283
|
+
type: i0.Input,
|
|
284
|
+
args: [{
|
|
285
|
+
isSignal: true,
|
|
286
|
+
alias: "visible",
|
|
287
|
+
required: false
|
|
288
|
+
}]
|
|
289
|
+
}, {
|
|
290
|
+
type: i0.Output,
|
|
291
|
+
args: ["visibleChange"]
|
|
292
|
+
}]
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
export { AlertComponent };
|
|
296
|
+
|
|
297
|
+
//# sourceMappingURL=lifecorner-angular-ui-kit-alert.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecorner-angular-ui-kit-alert.mjs","names":[],"sources":["../../../../libs/angular-ui-kit/src/lib/alert/alert.component.ts","../../../../libs/angular-ui-kit/src/lib/alert/alert.component.html"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n input,\n model,\n output,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IconComponent } from '@lifecorner/angular-ui-kit/icon';\n\nexport type AlertVariant = 'success' | 'error' | 'warning' | 'info';\n\n/**\n * Layout of the projected actions (`slot=\"action\"`).\n * - `inline`: one action right of the body, vertically centred (3.2)\n * - `stacked`: the actions in their own row below the title and message;\n * below 576 px of alert width one per line at full width, 8 px apart,\n * from 576 px side by side at their natural width\n */\nexport type AlertActionsLayout = 'inline' | 'stacked';\n\n/**\n * Alert component for inline notifications.\n *\n * Features:\n * - Semantic variants (success, warning, error, info)\n * - Optional title and icon display\n * - Auto-mapped variant icons\n * - Dismissible with close button; `visible` is two-way bindable so a\n * dismissed alert can be shown again\n * - Content projection for custom body\n * - Action slot for a button rendered right of the body (e.g. retry), or\n * several actions stacked below it (`actionsLayout=\"stacked\"`)\n * - The variant icon is decorative unless `iconAriaLabel` names it (the\n * title and the colour carry the tone; no built-in English word)\n * - Accessible: `role=\"alert\"` for error / warning, `role=\"status\"` otherwise\n *\n * @example\n * ```html\n * <lc-alert variant=\"success\" title=\"Success!\" [dismissible]=\"true\">\n * Your changes have been saved.\n * </lc-alert>\n *\n * <lc-alert variant=\"error\" title=\"Laden fehlgeschlagen\">\n * Die Liste konnte nicht geladen werden.\n * <lc-button slot=\"action\" variant=\"outline\" size=\"sm\">Erneut versuchen</lc-button>\n * </lc-alert>\n * ```\n */\n@Component({\n selector: 'lc-alert',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n encapsulation: ViewEncapsulation.None, // Required for dynamic variant class styling\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class AlertComponent {\n /**\n * Visual variant of the alert\n * @default 'info'\n */\n variant = input<AlertVariant>('info');\n\n /**\n * Alert title (optional)\n */\n title = input<string>();\n\n /**\n * Alert message (alternative to content projection)\n */\n message = input<string>();\n\n /**\n * Icon to display (defaults based on variant)\n */\n icon = input<string>();\n\n /**\n * Whether to show icon\n * @default true\n */\n showIcon = input<boolean>(true);\n\n /**\n * Accessible name of the variant icon, e.g. „Warnung“. Leave it unset when\n * the title already says what kind of message this is: the icon is then\n * decorative (`aria-hidden`). The kit sets no default text, so no English\n * word is read on a page in another language.\n */\n iconAriaLabel = input<string | undefined>(undefined);\n\n /**\n * Layout of the projected actions (`slot=\"action\"`): `inline` — one action\n * right of the body (3.2); `stacked` — the actions in their own row below\n * the title and message, one per line at full width and 8 px apart below\n * 576 px of alert width, side by side at their natural width from there.\n * @default 'inline'\n */\n actionsLayout = input<AlertActionsLayout>('inline');\n\n /**\n * Whether the alert can be dismissed\n * @default false\n */\n dismissible = input<boolean>(false);\n\n /**\n * ARIA label for accessibility\n */\n ariaLabel = input<string>();\n\n /** Accessible name of the close button (`dismissible`). */\n closeAriaLabel = input('Close alert');\n\n /**\n * Emitted when alert is dismissed\n */\n readonly dismissed = output<void>();\n\n /**\n * Visibility (two-way bindable). Dismissing sets it to `false`; the parent\n * can set it back to `true` to show the alert again.\n */\n visible = model<boolean>(true);\n\n /**\n * Computed host classes\n */\n protected hostClasses = computed(() => {\n const classes = ['lc-alert', `lc-alert--${this.variant()}`];\n if (this.actionsLayout() === 'stacked') {\n classes.push('lc-alert--actions-stacked');\n }\n if (this.showIcon()) {\n classes.push('lc-alert--with-icon');\n }\n if (!this.visible()) {\n classes.push('lc-alert--hidden');\n }\n return classes.join(' ');\n });\n\n /**\n * Computed container classes\n */\n protected containerClasses = computed(() => {\n return 'lc-alert__container';\n });\n\n /** Whether the variant should interrupt the user (error / warning). */\n private readonly isUrgent = computed(() => {\n const variant = this.variant();\n return variant === 'error' || variant === 'warning';\n });\n\n /**\n * Live-region role: `alert` (assertive) only for error / warning,\n * `status` (polite) for info / success.\n */\n protected role = computed(() => (this.isUrgent() ? 'alert' : 'status'));\n\n /**\n * Computed ARIA live region priority\n */\n protected ariaLive = computed(() => (this.isUrgent() ? 'assertive' : 'polite'));\n\n /**\n * Computed default icon based on variant\n */\n protected defaultIcon = computed(() => {\n const icons: Record<AlertVariant, string> = {\n success: 'check-circle',\n error: 'x-circle',\n warning: 'exclamation-triangle',\n info: 'information-circle',\n };\n return this.icon() || icons[this.variant()];\n });\n\n /**\n * Dismiss the alert\n */\n dismiss(): void {\n this.visible.set(false);\n this.dismissed.emit();\n }\n\n /**\n * Handle close button click\n */\n protected onCloseClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.dismiss();\n }\n}\n","@if (visible()) {\n <div [class]=\"containerClasses()\">\n @if (showIcon()) {\n <div class=\"lc-alert__icon\">\n <lc-icon\n [name]=\"defaultIcon()\"\n size=\"md\"\n [decorative]=\"!iconAriaLabel()\"\n [ariaLabel]=\"iconAriaLabel()\"\n />\n </div>\n }\n \n <div class=\"lc-alert__body\">\n @if (title()) {\n <div class=\"lc-alert__title\">{{ title() }}</div>\n }\n \n <div class=\"lc-alert__content\">\n @if (message()) {\n {{ message() }}\n } @else {\n <ng-content />\n }\n </div>\n </div>\n\n <div class=\"lc-alert__action\">\n <ng-content select=\"[slot='action']\" />\n </div>\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"lc-alert__close\"\n [attr.aria-label]=\"closeAriaLabel()\"\n (click)=\"onCloseClick($event)\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" [decorative]=\"true\" />\n </button>\n }\n </div>\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input } from "@angular/core";
|
|
3
|
+
var AppShellComponent = class AppShellComponent {
|
|
4
|
+
horizon = input(false, ...ngDevMode ? [{ debugName: "horizon" }] : /* istanbul ignore next */ []);
|
|
5
|
+
shellClasses = computed(() => {
|
|
6
|
+
const classes = ["lc-app-shell"];
|
|
7
|
+
if (this.horizon()) classes.push("lc-app-shell--horizon");
|
|
8
|
+
return classes.join(" ");
|
|
9
|
+
}, ...ngDevMode ? [{ debugName: "shellClasses" }] : /* istanbul ignore next */ []);
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
11
|
+
minVersion: "12.0.0",
|
|
12
|
+
version: "22.2.2",
|
|
13
|
+
ngImport: i0,
|
|
14
|
+
type: AppShellComponent,
|
|
15
|
+
deps: [],
|
|
16
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
17
|
+
});
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
19
|
+
minVersion: "17.0.0",
|
|
20
|
+
version: "22.2.2",
|
|
21
|
+
type: AppShellComponent,
|
|
22
|
+
isStandalone: true,
|
|
23
|
+
selector: "lc-app-shell",
|
|
24
|
+
inputs: { horizon: {
|
|
25
|
+
classPropertyName: "horizon",
|
|
26
|
+
publicName: "horizon",
|
|
27
|
+
isSignal: true,
|
|
28
|
+
isRequired: false,
|
|
29
|
+
transformFunction: null
|
|
30
|
+
} },
|
|
31
|
+
ngImport: i0,
|
|
32
|
+
template: "<div [class]=\"shellClasses()\">\n <div class=\"lc-app-shell__header\"><ng-content select=\"[shell-header]\" /></div>\n <div class=\"lc-app-shell__nav\"><ng-content select=\"[shell-nav]\" /></div>\n <div class=\"lc-app-shell__body\"><ng-content /></div>\n @if (horizon()) {\n <div class=\"lc-app-shell__horizon lc-horizon\"></div>\n }\n <div class=\"lc-app-shell__footer\"><ng-content select=\"[shell-footer]\" /></div>\n <div class=\"lc-app-shell__bottom-nav\"><ng-content select=\"[shell-bottom-nav]\" /></div>\n</div>\n",
|
|
33
|
+
styles: [":host{display:block}.lc-app-shell{--_nav-width: var(--lc-app-shell-nav-width, 240px);--_clearance: var(--lc-app-shell-bottom-clearance, calc(112px + env(safe-area-inset-bottom, 0px)) );display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto 1fr;grid-template-areas:\"header\" \"body\" \"end\";min-height:100vh;min-height:100dvh;box-sizing:border-box;background-color:var(--lc-app-shell-bg, var(--color-background));background-image:var(--lc-app-shell-bg-image, var(--app-background-image, none))}.lc-app-shell__header{grid-area:header;min-width:0;padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.lc-app-shell__body{grid-area:body;min-width:0;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.lc-app-shell__nav{display:none}.lc-app-shell__horizon{grid-area:end;min-width:0}.lc-app-shell__footer{grid-area:end;align-self:end;min-width:0;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.lc-app-shell--horizon .lc-app-shell__footer{position:relative;z-index:1}.lc-app-shell__footer:empty,.lc-app-shell__header:empty{display:none}.lc-app-shell__bottom-nav{display:contents}@media(max-width:1023.98px){.lc-app-shell:not(.lc-app-shell--horizon):has(>.lc-app-shell__bottom-nav:not(:empty)){padding-bottom:var(--_clearance)}}@media(min-width:1024px){.lc-app-shell{grid-template-columns:var(--_nav-width) minmax(0,1fr);grid-template-areas:\"header header\" \"nav body\" \"end end\"}.lc-app-shell:has(>.lc-app-shell__nav:empty){grid-template-columns:minmax(0,1fr);grid-template-areas:\"header\" \"body\" \"end\"}.lc-app-shell__nav{grid-area:nav;display:block;min-width:0;position:sticky;top:0;align-self:start;max-height:100vh;max-height:100dvh;overflow-y:auto;padding-left:env(safe-area-inset-left,0px)}.lc-app-shell__nav:empty{display:none}.lc-app-shell:not(:has(>.lc-app-shell__nav:empty)) .lc-app-shell__body{padding-left:0}.lc-app-shell__bottom-nav{display:none}}@media(min-width:1280px){.lc-app-shell:has(.lc-app-page__aside)>.lc-app-shell__header{--_aside-width: var(--lc-app-page-aside-width, 360px);--_hairline: var(--color-hairline, var(--color-border));background:linear-gradient(var(--_hairline),var(--_hairline)) right calc(var(--_aside-width) - 1px) top/1px 100% no-repeat,linear-gradient(var(--color-background-low),var(--color-background-low)) right top/var(--_aside-width) 100% no-repeat}}@media(min-width:1440px){.lc-app-shell{--_nav-width: var(--lc-app-shell-nav-width, 248px)}.lc-app-shell:has(.lc-app-page__aside)>.lc-app-shell__header{--_aside-width: var(--lc-app-page-aside-width, 400px)}}@media(min-width:1920px){.lc-app-shell{--_nav-width: var(--lc-app-shell-nav-width, 280px)}.lc-app-shell:has(.lc-app-page__aside)>.lc-app-shell__header{--_aside-width: var(--lc-app-page-aside-width, 460px)}}@media(forced-colors:active){.lc-app-shell__header{background:none}}\n"],
|
|
34
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
38
|
+
minVersion: "12.0.0",
|
|
39
|
+
version: "22.2.2",
|
|
40
|
+
ngImport: i0,
|
|
41
|
+
type: AppShellComponent,
|
|
42
|
+
decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{
|
|
45
|
+
selector: "lc-app-shell",
|
|
46
|
+
standalone: true,
|
|
47
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
48
|
+
template: "<div [class]=\"shellClasses()\">\n <div class=\"lc-app-shell__header\"><ng-content select=\"[shell-header]\" /></div>\n <div class=\"lc-app-shell__nav\"><ng-content select=\"[shell-nav]\" /></div>\n <div class=\"lc-app-shell__body\"><ng-content /></div>\n @if (horizon()) {\n <div class=\"lc-app-shell__horizon lc-horizon\"></div>\n }\n <div class=\"lc-app-shell__footer\"><ng-content select=\"[shell-footer]\" /></div>\n <div class=\"lc-app-shell__bottom-nav\"><ng-content select=\"[shell-bottom-nav]\" /></div>\n</div>\n",
|
|
49
|
+
styles: [":host{display:block}.lc-app-shell{--_nav-width: var(--lc-app-shell-nav-width, 240px);--_clearance: var(--lc-app-shell-bottom-clearance, calc(112px + env(safe-area-inset-bottom, 0px)) );display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto 1fr;grid-template-areas:\"header\" \"body\" \"end\";min-height:100vh;min-height:100dvh;box-sizing:border-box;background-color:var(--lc-app-shell-bg, var(--color-background));background-image:var(--lc-app-shell-bg-image, var(--app-background-image, none))}.lc-app-shell__header{grid-area:header;min-width:0;padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.lc-app-shell__body{grid-area:body;min-width:0;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.lc-app-shell__nav{display:none}.lc-app-shell__horizon{grid-area:end;min-width:0}.lc-app-shell__footer{grid-area:end;align-self:end;min-width:0;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}.lc-app-shell--horizon .lc-app-shell__footer{position:relative;z-index:1}.lc-app-shell__footer:empty,.lc-app-shell__header:empty{display:none}.lc-app-shell__bottom-nav{display:contents}@media(max-width:1023.98px){.lc-app-shell:not(.lc-app-shell--horizon):has(>.lc-app-shell__bottom-nav:not(:empty)){padding-bottom:var(--_clearance)}}@media(min-width:1024px){.lc-app-shell{grid-template-columns:var(--_nav-width) minmax(0,1fr);grid-template-areas:\"header header\" \"nav body\" \"end end\"}.lc-app-shell:has(>.lc-app-shell__nav:empty){grid-template-columns:minmax(0,1fr);grid-template-areas:\"header\" \"body\" \"end\"}.lc-app-shell__nav{grid-area:nav;display:block;min-width:0;position:sticky;top:0;align-self:start;max-height:100vh;max-height:100dvh;overflow-y:auto;padding-left:env(safe-area-inset-left,0px)}.lc-app-shell__nav:empty{display:none}.lc-app-shell:not(:has(>.lc-app-shell__nav:empty)) .lc-app-shell__body{padding-left:0}.lc-app-shell__bottom-nav{display:none}}@media(min-width:1280px){.lc-app-shell:has(.lc-app-page__aside)>.lc-app-shell__header{--_aside-width: var(--lc-app-page-aside-width, 360px);--_hairline: var(--color-hairline, var(--color-border));background:linear-gradient(var(--_hairline),var(--_hairline)) right calc(var(--_aside-width) - 1px) top/1px 100% no-repeat,linear-gradient(var(--color-background-low),var(--color-background-low)) right top/var(--_aside-width) 100% no-repeat}}@media(min-width:1440px){.lc-app-shell{--_nav-width: var(--lc-app-shell-nav-width, 248px)}.lc-app-shell:has(.lc-app-page__aside)>.lc-app-shell__header{--_aside-width: var(--lc-app-page-aside-width, 400px)}}@media(min-width:1920px){.lc-app-shell{--_nav-width: var(--lc-app-shell-nav-width, 280px)}.lc-app-shell:has(.lc-app-page__aside)>.lc-app-shell__header{--_aside-width: var(--lc-app-page-aside-width, 460px)}}@media(forced-colors:active){.lc-app-shell__header{background:none}}\n"]
|
|
50
|
+
}]
|
|
51
|
+
}],
|
|
52
|
+
propDecorators: { horizon: [{
|
|
53
|
+
type: i0.Input,
|
|
54
|
+
args: [{
|
|
55
|
+
isSignal: true,
|
|
56
|
+
alias: "horizon",
|
|
57
|
+
required: false
|
|
58
|
+
}]
|
|
59
|
+
}] }
|
|
60
|
+
});
|
|
61
|
+
var AppPageComponent = class AppPageComponent {
|
|
62
|
+
mainId = input("main", ...ngDevMode ? [{ debugName: "mainId" }] : /* istanbul ignore next */ []);
|
|
63
|
+
contentMaxWidth = input("880px", ...ngDevMode ? [{ debugName: "contentMaxWidth" }] : /* istanbul ignore next */ []);
|
|
64
|
+
asideLabelledby = input("", ...ngDevMode ? [{ debugName: "asideLabelledby" }] : /* istanbul ignore next */ []);
|
|
65
|
+
asideAriaLabel = input("", ...ngDevMode ? [{ debugName: "asideAriaLabel" }] : /* istanbul ignore next */ []);
|
|
66
|
+
busy = input(false, ...ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []);
|
|
67
|
+
hasAside = computed(() => !!(this.asideLabelledby() || this.asideAriaLabel()), ...ngDevMode ? [{ debugName: "hasAside" }] : /* istanbul ignore next */ []);
|
|
68
|
+
pageClasses = computed(() => {
|
|
69
|
+
const classes = ["lc-app-page"];
|
|
70
|
+
if (this.hasAside()) classes.push("lc-app-page--aside");
|
|
71
|
+
return classes.join(" ");
|
|
72
|
+
}, ...ngDevMode ? [{ debugName: "pageClasses" }] : /* istanbul ignore next */ []);
|
|
73
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
74
|
+
minVersion: "12.0.0",
|
|
75
|
+
version: "22.2.2",
|
|
76
|
+
ngImport: i0,
|
|
77
|
+
type: AppPageComponent,
|
|
78
|
+
deps: [],
|
|
79
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
80
|
+
});
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
82
|
+
minVersion: "17.0.0",
|
|
83
|
+
version: "22.2.2",
|
|
84
|
+
type: AppPageComponent,
|
|
85
|
+
isStandalone: true,
|
|
86
|
+
selector: "lc-app-page",
|
|
87
|
+
inputs: {
|
|
88
|
+
mainId: {
|
|
89
|
+
classPropertyName: "mainId",
|
|
90
|
+
publicName: "mainId",
|
|
91
|
+
isSignal: true,
|
|
92
|
+
isRequired: false,
|
|
93
|
+
transformFunction: null
|
|
94
|
+
},
|
|
95
|
+
contentMaxWidth: {
|
|
96
|
+
classPropertyName: "contentMaxWidth",
|
|
97
|
+
publicName: "contentMaxWidth",
|
|
98
|
+
isSignal: true,
|
|
99
|
+
isRequired: false,
|
|
100
|
+
transformFunction: null
|
|
101
|
+
},
|
|
102
|
+
asideLabelledby: {
|
|
103
|
+
classPropertyName: "asideLabelledby",
|
|
104
|
+
publicName: "asideLabelledby",
|
|
105
|
+
isSignal: true,
|
|
106
|
+
isRequired: false,
|
|
107
|
+
transformFunction: null
|
|
108
|
+
},
|
|
109
|
+
asideAriaLabel: {
|
|
110
|
+
classPropertyName: "asideAriaLabel",
|
|
111
|
+
publicName: "asideAriaLabel",
|
|
112
|
+
isSignal: true,
|
|
113
|
+
isRequired: false,
|
|
114
|
+
transformFunction: null
|
|
115
|
+
},
|
|
116
|
+
busy: {
|
|
117
|
+
classPropertyName: "busy",
|
|
118
|
+
publicName: "busy",
|
|
119
|
+
isSignal: true,
|
|
120
|
+
isRequired: false,
|
|
121
|
+
transformFunction: null
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
ngImport: i0,
|
|
125
|
+
template: "<div [class]=\"pageClasses()\" [style.--lc-app-page-content-max]=\"contentMaxWidth()\">\n <main class=\"lc-app-page__main\" [id]=\"mainId()\" [attr.aria-busy]=\"busy() ? 'true' : null\">\n <div class=\"lc-app-page__content\"><ng-content /></div>\n </main>\n @if (hasAside()) {\n <aside\n class=\"lc-app-page__aside\"\n [attr.aria-labelledby]=\"asideLabelledby() || null\"\n [attr.aria-label]=\"asideLabelledby() ? null : asideAriaLabel()\"\n >\n <ng-content select=\"[page-aside]\" />\n </aside>\n }\n</div>\n",
|
|
126
|
+
styles: [":host{display:block;min-width:0}.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 24px);--_pad-top: var(--lc-app-page-padding-top, 24px);--_gap: var(--lc-app-page-gap, 24px);--_aside-width: var(--lc-app-page-aside-width, 360px);display:grid;grid-template-columns:minmax(0,1fr);min-height:100%}.lc-app-page__main{display:block;min-width:0;padding:var(--_pad-top) var(--_pad-x) 16px}.lc-app-page__content{display:flex;flex-direction:column;gap:var(--_gap);max-width:var(--lc-app-page-content-max, 880px);margin-inline:auto}.lc-app-page__aside{display:none}@media(min-width:640px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 32px);--_pad-top: var(--lc-app-page-padding-top, 32px)}}@media(min-width:1024px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 48px);--_pad-top: var(--lc-app-page-padding-top, 48px);--_gap: var(--lc-app-page-gap, 40px)}.lc-app-page__main{padding-bottom:32px}}@media(min-width:1280px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 56px);--_pad-top: var(--lc-app-page-padding-top, 56px)}.lc-app-page--aside{grid-template-columns:minmax(0,1fr) var(--_aside-width)}.lc-app-page__aside{display:block;min-width:0;box-sizing:border-box;padding:max(16px,var(--_pad-top) - 32px) 40px 40px;background:linear-gradient(180deg,var(--color-background-low),transparent);border-left:1px solid var(--color-hairline, var(--color-border));border-image:linear-gradient(180deg,var(--color-hairline, var(--color-border)) 60%,transparent) 1}}@media(min-width:1440px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 72px);--_pad-top: var(--lc-app-page-padding-top, 72px);--_aside-width: var(--lc-app-page-aside-width, 400px)}}@media(min-width:1920px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 96px);--_pad-top: var(--lc-app-page-padding-top, 112px);--_aside-width: var(--lc-app-page-aside-width, 460px)}}@media(forced-colors:active){.lc-app-page__aside{background:none;border-image:none;border-left-color:CanvasText}}\n"],
|
|
127
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
131
|
+
minVersion: "12.0.0",
|
|
132
|
+
version: "22.2.2",
|
|
133
|
+
ngImport: i0,
|
|
134
|
+
type: AppPageComponent,
|
|
135
|
+
decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{
|
|
138
|
+
selector: "lc-app-page",
|
|
139
|
+
standalone: true,
|
|
140
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
141
|
+
template: "<div [class]=\"pageClasses()\" [style.--lc-app-page-content-max]=\"contentMaxWidth()\">\n <main class=\"lc-app-page__main\" [id]=\"mainId()\" [attr.aria-busy]=\"busy() ? 'true' : null\">\n <div class=\"lc-app-page__content\"><ng-content /></div>\n </main>\n @if (hasAside()) {\n <aside\n class=\"lc-app-page__aside\"\n [attr.aria-labelledby]=\"asideLabelledby() || null\"\n [attr.aria-label]=\"asideLabelledby() ? null : asideAriaLabel()\"\n >\n <ng-content select=\"[page-aside]\" />\n </aside>\n }\n</div>\n",
|
|
142
|
+
styles: [":host{display:block;min-width:0}.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 24px);--_pad-top: var(--lc-app-page-padding-top, 24px);--_gap: var(--lc-app-page-gap, 24px);--_aside-width: var(--lc-app-page-aside-width, 360px);display:grid;grid-template-columns:minmax(0,1fr);min-height:100%}.lc-app-page__main{display:block;min-width:0;padding:var(--_pad-top) var(--_pad-x) 16px}.lc-app-page__content{display:flex;flex-direction:column;gap:var(--_gap);max-width:var(--lc-app-page-content-max, 880px);margin-inline:auto}.lc-app-page__aside{display:none}@media(min-width:640px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 32px);--_pad-top: var(--lc-app-page-padding-top, 32px)}}@media(min-width:1024px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 48px);--_pad-top: var(--lc-app-page-padding-top, 48px);--_gap: var(--lc-app-page-gap, 40px)}.lc-app-page__main{padding-bottom:32px}}@media(min-width:1280px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 56px);--_pad-top: var(--lc-app-page-padding-top, 56px)}.lc-app-page--aside{grid-template-columns:minmax(0,1fr) var(--_aside-width)}.lc-app-page__aside{display:block;min-width:0;box-sizing:border-box;padding:max(16px,var(--_pad-top) - 32px) 40px 40px;background:linear-gradient(180deg,var(--color-background-low),transparent);border-left:1px solid var(--color-hairline, var(--color-border));border-image:linear-gradient(180deg,var(--color-hairline, var(--color-border)) 60%,transparent) 1}}@media(min-width:1440px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 72px);--_pad-top: var(--lc-app-page-padding-top, 72px);--_aside-width: var(--lc-app-page-aside-width, 400px)}}@media(min-width:1920px){.lc-app-page{--_pad-x: var(--lc-app-page-padding-x, 96px);--_pad-top: var(--lc-app-page-padding-top, 112px);--_aside-width: var(--lc-app-page-aside-width, 460px)}}@media(forced-colors:active){.lc-app-page__aside{background:none;border-image:none;border-left-color:CanvasText}}\n"]
|
|
143
|
+
}]
|
|
144
|
+
}],
|
|
145
|
+
propDecorators: {
|
|
146
|
+
mainId: [{
|
|
147
|
+
type: i0.Input,
|
|
148
|
+
args: [{
|
|
149
|
+
isSignal: true,
|
|
150
|
+
alias: "mainId",
|
|
151
|
+
required: false
|
|
152
|
+
}]
|
|
153
|
+
}],
|
|
154
|
+
contentMaxWidth: [{
|
|
155
|
+
type: i0.Input,
|
|
156
|
+
args: [{
|
|
157
|
+
isSignal: true,
|
|
158
|
+
alias: "contentMaxWidth",
|
|
159
|
+
required: false
|
|
160
|
+
}]
|
|
161
|
+
}],
|
|
162
|
+
asideLabelledby: [{
|
|
163
|
+
type: i0.Input,
|
|
164
|
+
args: [{
|
|
165
|
+
isSignal: true,
|
|
166
|
+
alias: "asideLabelledby",
|
|
167
|
+
required: false
|
|
168
|
+
}]
|
|
169
|
+
}],
|
|
170
|
+
asideAriaLabel: [{
|
|
171
|
+
type: i0.Input,
|
|
172
|
+
args: [{
|
|
173
|
+
isSignal: true,
|
|
174
|
+
alias: "asideAriaLabel",
|
|
175
|
+
required: false
|
|
176
|
+
}]
|
|
177
|
+
}],
|
|
178
|
+
busy: [{
|
|
179
|
+
type: i0.Input,
|
|
180
|
+
args: [{
|
|
181
|
+
isSignal: true,
|
|
182
|
+
alias: "busy",
|
|
183
|
+
required: false
|
|
184
|
+
}]
|
|
185
|
+
}]
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
export { AppPageComponent, AppShellComponent };
|
|
189
|
+
|
|
190
|
+
//# sourceMappingURL=lifecorner-angular-ui-kit-app-shell.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecorner-angular-ui-kit-app-shell.mjs","names":[],"sources":["../../../../libs/angular-ui-kit/src/lib/app-shell/app-shell.component.ts","../../../../libs/angular-ui-kit/src/lib/app-shell/app-shell.component.html","../../../../libs/angular-ui-kit/src/lib/app-shell/app-page.component.ts","../../../../libs/angular-ui-kit/src/lib/app-shell/app-page.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * App shell: the frame around every page of an app — header, side navigation,\n * page, bottom navigation bar, footer and the horizon — laid out for phones\n * first, with the DOCUMENT scrolling (not an inner container), so the iOS\n * status-bar tap, address-bar collapse and pull-to-refresh keep working.\n *\n * Slots (content projection by attribute):\n * - `[shell-header]` — the `lc-header`; scrolls away with the page. Gets the\n * top, left and right safe-area insets.\n * - `[shell-nav]` — the docked side navigation (`lc-sidenav mode=\"docked\"\n * [isOpen]=\"true\" width=\"100%\" [mobileBreakpoint]=\"0\"`), shown from\n * 1024 px in a column of 240 px (248 from 1440, 280 from 1920; override\n * with `--lc-app-shell-nav-width`) and sticky once the header has gone.\n * An empty slot takes no column.\n * - default — the page, usually an `lc-app-page` (or a `<router-outlet>`\n * whose pages use one). It spans to the window's right edge, so a page's\n * right column docks there.\n * - `[shell-bottom-nav]` — the `lc-bottom-nav`, shown below 1024 px. The shell\n * reserves its height at the end of the page (16 + 72 + 24 px plus the\n * safe-area inset; `--lc-app-shell-bottom-clearance`), so it never covers\n * content. With the horizon, the bar rests on the land instead.\n * - `[shell-footer]` — e.g. a compact `lc-footer`; on the horizon's land when\n * `horizon` is on, else after the page.\n *\n * `horizon` closes the page with the \"Weite\" horizon (`.lc-horizon` from the\n * kit's styles): full-bleed, below the side navigation and the page, filling\n * the rest of the screen — on Today, the sign-in pages and the shell pages.\n *\n * Needs `<meta name=\"viewport\" content=\"width=device-width, initial-scale=1,\n * viewport-fit=cover\">` for the safe-area insets. Breakpoints are fixed\n * (1024 px side navigation, 1440 / 1920 px widths), so the layout works\n * before JavaScript runs (SSR, prerendering).\n *\n * @example\n * ```html\n * <lc-app-shell [horizon]=\"isToday()\">\n * <lc-header shell-header variant=\"transparent\" [sticky]=\"false\" … />\n * <lc-sidenav shell-nav mode=\"docked\" [isOpen]=\"true\" width=\"100%\" [mobileBreakpoint]=\"0\"\n * variant=\"transparent\" [items]=\"nav\" [activeRoute]=\"url()\" />\n * <router-outlet />\n * <lc-bottom-nav shell-bottom-nav variant=\"floating\" [items]=\"nav\" [activeRoute]=\"url()\" />\n * </lc-app-shell>\n * ```\n */\n@Component({\n selector: 'lc-app-shell',\n standalone: true,\n templateUrl: './app-shell.component.html',\n styleUrl: './app-shell.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppShellComponent {\n /**\n * Close the page with the horizon (`.lc-horizon`): full width, below the\n * side navigation and the page, filling the rest of the screen; the footer\n * and the floating bar rest on its land.\n */\n readonly horizon = input(false);\n\n protected readonly shellClasses = computed(() => {\n const classes = ['lc-app-shell'];\n if (this.horizon()) classes.push('lc-app-shell--horizon');\n return classes.join(' ');\n });\n}\n","<div [class]=\"shellClasses()\">\n <div class=\"lc-app-shell__header\"><ng-content select=\"[shell-header]\" /></div>\n <div class=\"lc-app-shell__nav\"><ng-content select=\"[shell-nav]\" /></div>\n <div class=\"lc-app-shell__body\"><ng-content /></div>\n @if (horizon()) {\n <div class=\"lc-app-shell__horizon lc-horizon\"></div>\n }\n <div class=\"lc-app-shell__footer\"><ng-content select=\"[shell-footer]\" /></div>\n <div class=\"lc-app-shell__bottom-nav\"><ng-content select=\"[shell-bottom-nav]\" /></div>\n</div>\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n/**\n * A page inside `lc-app-shell`: the `<main>` landmark with the page's content\n * centred at a reading width, and an optional right column docked to the\n * window's right edge (LK-6).\n *\n * - `<main [id]=\"mainId\">` holds the default slot as a column (24 px apart,\n * 40 px from 1024 px), centred and capped at `contentMaxWidth` (880 px of\n * content). Side padding 24 · 32 · 48 · 56 · 72 · 96 px at 360 · 640 ·\n * 1024 · 1280 · 1440 · 1920 px.\n * - `[page-aside]` is the right column: an `<aside>` AFTER `<main>` in the DOM,\n * shown from 1280 px at 360 px (400 from 1440, 460 from 1920; override\n * with `--lc-app-page-aside-width`), with a tint and a hairline that fade\n * downwards; inside `lc-app-shell` they start at the top of the window,\n * behind a transparent header. Below 1280 px it is hidden: show the page's narrow equivalent\n * inside main instead (e.g. a member row). It renders only with an\n * accessible name — `asideLabelledby` (the id of its heading) or\n * `asideAriaLabel`.\n * - `busy` marks the page as loading: `aria-busy=\"true\"` on `<main>` while a\n * skeleton stands in for the content (AS-12). No visual change.\n *\n * @example\n * ```html\n * <lc-app-page asideLabelledby=\"members-title\">\n * <lc-page-header … />\n * <lc-next-step-card … />\n * <section page-aside>\n * <h2 id=\"members-title\">Mitglieder</h2>\n * <lc-list [items]=\"members\" />\n * </section>\n * </lc-app-page>\n * ```\n */\n@Component({\n selector: 'lc-app-page',\n standalone: true,\n templateUrl: './app-page.component.html',\n styleUrl: './app-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppPageComponent {\n /** Id of the `<main>` element (the skip link's target). */\n readonly mainId = input('main');\n\n /**\n * Widest the page content gets (CSS length; `none` for no cap). The default\n * keeps lines readable on wide screens: the page gains air, not line length.\n */\n readonly contentMaxWidth = input('880px');\n\n /** Id of the heading that names the right column (`aria-labelledby`). */\n readonly asideLabelledby = input('');\n\n /** Accessible name of the right column when it has no visible heading. */\n readonly asideAriaLabel = input('');\n\n /**\n * Marks the page as loading: `aria-busy=\"true\"` on its `<main>` while\n * `true`, no attribute while `false`. Set it while a skeleton stands in for\n * the content. Screen readers may hold back changes inside a busy region\n * until it clears, so a loading message that must be heard belongs outside\n * `<main>` (for example a `.sr-only` `role=\"status\"` next to the page) or is\n * static text. No visual change.\n * @default false\n */\n readonly busy = input(false);\n\n /** The right column renders only when it has an accessible name. */\n protected readonly hasAside = computed(() => !!(this.asideLabelledby() || this.asideAriaLabel()));\n\n protected readonly pageClasses = computed(() => {\n const classes = ['lc-app-page'];\n if (this.hasAside()) classes.push('lc-app-page--aside');\n return classes.join(' ');\n });\n}\n","<div [class]=\"pageClasses()\" [style.--lc-app-page-content-max]=\"contentMaxWidth()\">\n <main class=\"lc-app-page__main\" [id]=\"mainId()\" [attr.aria-busy]=\"busy() ? 'true' : null\">\n <div class=\"lc-app-page__content\"><ng-content /></div>\n </main>\n @if (hasAside()) {\n <aside\n class=\"lc-app-page__aside\"\n [attr.aria-labelledby]=\"asideLabelledby() || null\"\n [attr.aria-label]=\"asideLabelledby() ? null : asideAriaLabel()\"\n >\n <ng-content select=\"[page-aside]\" />\n </aside>\n }\n</div>\n"],"mappings":"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"}
|