@koobiq/components 20.4.2 → 21.0.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/accordion/accordion-trigger.scss +3 -10
- package/accordion/accordion.scss +4 -6
- package/actions-panel/actions-panel-container.scss +45 -1
- package/alert/alert.component.scss +3 -2
- package/app-switcher/_app-switcher-theme.scss +0 -4
- package/app-switcher/app-switcher-dropdown-app.scss +3 -2
- package/app-switcher/app-switcher-dropdown-site.scss +2 -1
- package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
- package/app-switcher/app-switcher-tokens.scss +15 -0
- package/app-switcher/app-switcher.scss +14 -4
- package/autocomplete/autocomplete.scss +7 -6
- package/badge/badge.component.scss +5 -8
- package/breadcrumbs/breadcrumbs.scss +25 -10
- package/button/_button-base.scss +30 -7
- package/button/_button-theme.scss +16 -0
- package/button/button-group.scss +7 -0
- package/button/button-tokens.scss +0 -2
- package/button/button.scss +34 -2
- package/button-toggle/_button-toggle-theme.scss +7 -2
- package/button-toggle/button-toggle.scss +65 -15
- package/checkbox/_checkbox-theme.scss +4 -3
- package/checkbox/checkbox.scss +3 -6
- package/clamped-text/clamped-text.scss +6 -2
- package/code-block/code-block-tokens.scss +0 -224
- package/code-block/code-block.scss +20 -9
- package/content-panel/content-panel-aside.scss +3 -2
- package/content-panel/content-panel-container.scss +37 -0
- package/content-panel/content-panel.scss +4 -3
- package/core/highlight/_highlight-theme.scss +3 -1
- package/core/option/action-container.scss +2 -2
- package/core/option/action.scss +2 -1
- package/core/option/option.scss +2 -1
- package/core/pop-up/_pop-up.scss +0 -37
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
- package/core/styles/_core.scss +3 -0
- package/core/styles/_koobiq-theme.scss +5 -6
- package/core/styles/common/_animation.scss +44 -16
- package/core/styles/common/_groups-mixins.scss +21 -19
- package/core/styles/common/_groups.scss +4 -32
- package/core/styles/common/_index.scss +0 -2
- package/core/styles/common/_link.scss +117 -0
- package/core/styles/common/_list.scss +0 -26
- package/core/styles/common/_overlay.scss +8 -10
- package/core/styles/common/_rtl.scss +0 -14
- package/core/styles/common/_select.scss +33 -15
- package/core/styles/common/_squircle.scss +63 -0
- package/core/styles/common/_tokens.scss +0 -11
- package/core/styles/common/_vendor-prefixes.scss +0 -20
- package/core/styles/functions/_timing.scss +0 -22
- package/core/styles/theming/_scrollbar-theme.scss +6 -1
- package/core/styles/theming/_theming.scss +13 -65
- package/core/styles/typography/_index.scss +0 -1
- package/core/styles/typography/_typography.scss +0 -143
- package/core/styles/visual/_body.scss +1 -6
- package/core/styles/visual/_layout.scss +0 -12
- package/datepicker/calendar-body.scss +3 -1
- package/datepicker/calendar-header.scss +0 -1
- package/datepicker/datepicker-content.scss +33 -1
- package/datepicker/datepicker-toggle.scss +0 -38
- package/dl/dl-tokens.scss +10 -0
- package/dl/dl.scss +113 -13
- package/dropdown/_dropdown-theme.scss +4 -16
- package/dropdown/dropdown-item.scss +4 -10
- package/dropdown/dropdown.scss +2 -1
- package/empty-state/_empty-state-theme.scss +10 -4
- package/empty-state/empty-state-tokens.scss +4 -4
- package/empty-state/empty-state.scss +4 -0
- package/fesm2022/koobiq-components-accordion.mjs +347 -229
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +39 -39
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +46 -48
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +332 -116
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +172 -132
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +791 -609
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +260 -143
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +4342 -1595
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +73 -36
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +447 -89
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +703 -599
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
- package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +116 -60
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +550 -290
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2871 -2595
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +79 -24
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +389 -525
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +400 -149
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +601 -459
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
- package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-link.mjs +328 -125
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +583 -433
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +55 -78
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +853 -475
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +895 -556
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +680 -310
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +684 -285
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +450 -231
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-resizer.mjs +127 -21
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
- package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +883 -693
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +207 -88
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +815 -41
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +109 -88
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
- package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
- package/fesm2022/koobiq-components-splitter.mjs +890 -501
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +63 -49
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +1062 -603
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +886 -733
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +213 -185
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +299 -147
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +233 -245
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +344 -142
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +229 -145
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +463 -143
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +177 -130
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +657 -214
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +61 -32
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +734 -488
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +1700 -617
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +290 -135
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/dropzone.scss +31 -3
- package/file-upload/file-upload-tokens.scss +2 -22
- package/file-upload/file-upload.scss +6 -0
- package/file-upload/multiple-file-upload.component.scss +14 -12
- package/file-upload/single-file-upload.component.scss +3 -2
- package/filter-bar/filters.scss +7 -0
- package/filter-bar/pipes/base-pipe.scss +3 -3
- package/filter-bar/pipes/pipe-date.scss +8 -1
- package/flag/flag-tokens.scss +22 -0
- package/flag/flag.scss +34 -21
- package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
- package/form-field/_form-field-theme.scss +4 -9
- package/form-field/cleaner.scss +3 -1
- package/form-field/fieldset.scss +3 -4
- package/form-field/form-field.scss +26 -21
- package/form-field/password-toggle.scss +3 -1
- package/icon/_icon-button-theme.scss +7 -0
- package/icon/_icon-theme.scss +10 -7
- package/icon/icon-button.scss +0 -2
- package/icon/icon-tokens.scss +12 -9
- package/inline-edit/inline-edit.scss +40 -54
- package/input/input.scss +4 -0
- package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
- package/link/deprecated/link-tokens.scss +27 -0
- package/link/link-tokens.scss +6 -25
- package/link/link.scss +137 -0
- package/list/list.scss +3 -2
- package/loader-overlay/_loader-overlay-theme.scss +19 -10
- package/loader-overlay/loader-overlay-tokens.scss +0 -2
- package/loader-overlay/loader-overlay.scss +7 -1
- package/markdown/_markdown-theme.scss +16 -0
- package/markdown/markdown-tokens.scss +5 -0
- package/markdown/markdown.scss +2 -1
- package/modal/_modal-animation.scss +23 -14
- package/modal/modal-tokens.scss +2 -1
- package/modal/modal.scss +35 -31
- package/navbar/_navbar-item_horizontal.scss +8 -6
- package/navbar/_navbar-item_vertical.scss +18 -6
- package/navbar/_navbar-theme.scss +9 -1
- package/navbar/navbar-brand.scss +8 -6
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.scss +8 -9
- package/navbar/navbar-toggle.scss +3 -3
- package/navbar/navbar-tokens.scss +14 -0
- package/navbar/navbar.scss +1 -2
- package/navbar/vertical-navbar.scss +2 -2
- package/notification-center/_notification-center-theme.scss +11 -6
- package/notification-center/notification-center-tokens.scss +33 -0
- package/notification-center/notification-center.scss +58 -20
- package/notification-center/notification-item.scss +15 -6
- package/package.json +112 -81
- package/popover/popover-tokens.scss +0 -2
- package/popover/popover.scss +41 -19
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +20 -3
- package/progress-bar/progress-bar-tokens.scss +3 -0
- package/progress-bar/progress-bar.scss +36 -8
- package/progress-spinner/progress-spinner.scss +4 -3
- package/radio/_radio-theme.scss +21 -4
- package/radio/radio-tokens.scss +7 -3
- package/radio/radio.scss +55 -8
- package/schematics/collection.json +415 -18
- package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
- package/schematics/migrations/accordion-state-saving-default/data.cjs +75 -0
- package/schematics/migrations/accordion-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
- package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
- package/schematics/migrations/actions-panel-overlay-container/data.cjs +47 -0
- package/schematics/migrations/actions-panel-overlay-container/index.cjs +55 -0
- package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
- package/schematics/migrations/alert-signals/README.md +13 -7
- package/schematics/migrations/alert-signals/{data.js → data.cjs} +3 -0
- package/schematics/migrations/alert-signals/index.cjs +221 -0
- package/schematics/migrations/angular-animations-removal/README.md +46 -0
- package/schematics/migrations/angular-animations-removal/data.cjs +150 -0
- package/schematics/migrations/angular-animations-removal/index.cjs +21 -0
- package/schematics/migrations/angular-animations-removal/schema.json +15 -0
- package/schematics/migrations/app-switcher-signals/README.md +88 -0
- package/schematics/migrations/app-switcher-signals/data.cjs +136 -0
- package/schematics/migrations/app-switcher-signals/index.cjs +366 -0
- package/schematics/migrations/app-switcher-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
- package/schematics/migrations/autocomplete-panel-width-auto/{index.js → index.cjs} +6 -5
- package/schematics/migrations/autocomplete-signals/README.md +92 -0
- package/schematics/migrations/autocomplete-signals/data.cjs +149 -0
- package/schematics/migrations/autocomplete-signals/index.cjs +707 -0
- package/schematics/migrations/autocomplete-signals/schema.json +20 -0
- package/schematics/migrations/badge-signals/README.md +77 -0
- package/schematics/migrations/badge-signals/data.cjs +109 -0
- package/schematics/migrations/badge-signals/index.cjs +694 -0
- package/schematics/migrations/badge-signals/schema.json +20 -0
- package/schematics/migrations/button-state-and-styles/README.md +129 -0
- package/schematics/migrations/button-state-and-styles/data.cjs +136 -0
- package/schematics/migrations/button-state-and-styles/index.cjs +221 -0
- package/schematics/migrations/button-state-and-styles/schema.json +20 -0
- package/schematics/migrations/button-supported-colors/README.md +73 -0
- package/schematics/migrations/button-supported-colors/data.cjs +106 -0
- package/schematics/migrations/button-supported-colors/index.cjs +261 -0
- package/schematics/migrations/button-supported-colors/schema.json +20 -0
- package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
- package/schematics/migrations/button-toggle-signals-and-aria/data.cjs +200 -0
- package/schematics/migrations/button-toggle-signals-and-aria/index.cjs +497 -0
- package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/button-truncation/README.md +110 -0
- package/schematics/migrations/button-truncation/data.cjs +88 -0
- package/schematics/migrations/button-truncation/index.cjs +270 -0
- package/schematics/migrations/button-truncation/schema.json +20 -0
- package/schematics/migrations/checkbox-signals/README.md +76 -0
- package/schematics/migrations/checkbox-signals/data.cjs +114 -0
- package/schematics/migrations/checkbox-signals/index.cjs +635 -0
- package/schematics/migrations/checkbox-signals/schema.json +20 -0
- package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
- package/schematics/migrations/clamped-text-disclosure/data.cjs +101 -0
- package/schematics/migrations/clamped-text-disclosure/index.cjs +60 -0
- package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
- package/schematics/migrations/code-block-highlight-js-core/README.md +53 -0
- package/schematics/migrations/code-block-highlight-js-core/data.cjs +64 -0
- package/schematics/migrations/code-block-highlight-js-core/index.cjs +319 -0
- package/schematics/migrations/code-block-highlight-js-core/schema.json +20 -0
- package/schematics/migrations/code-block-signals/README.md +84 -0
- package/schematics/migrations/code-block-signals/data.cjs +121 -0
- package/schematics/migrations/code-block-signals/index.cjs +701 -0
- package/schematics/migrations/code-block-signals/schema.json +20 -0
- package/schematics/migrations/color-signals/README.md +46 -0
- package/schematics/migrations/color-signals/data.cjs +131 -0
- package/schematics/migrations/color-signals/index.cjs +20 -0
- package/schematics/migrations/color-signals/schema.json +20 -0
- package/schematics/migrations/core-mixins-removal/README.md +20 -0
- package/schematics/migrations/core-mixins-removal/data.cjs +27 -0
- package/schematics/migrations/core-mixins-removal/index.cjs +18 -0
- package/schematics/migrations/core-mixins-removal/schema.json +15 -0
- package/schematics/migrations/css-selectors/README.md +2 -2
- package/schematics/migrations/css-selectors/{index.js → index.cjs} +4 -3
- package/schematics/migrations/datepicker-signals/README.md +24 -0
- package/schematics/migrations/datepicker-signals/data.cjs +49 -0
- package/schematics/migrations/datepicker-signals/index.cjs +18 -0
- package/schematics/migrations/datepicker-signals/schema.json +15 -0
- package/schematics/migrations/deprecated-icons/README.md +2 -2
- package/schematics/migrations/deprecated-icons/{index.js → index.cjs} +8 -7
- package/schematics/migrations/design-tokens-v4/README.md +75 -0
- package/schematics/migrations/design-tokens-v4/index.cjs +60 -0
- package/schematics/migrations/design-tokens-v4/schema.json +15 -0
- package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
- package/schematics/migrations/divider-signals-and-aria/data.cjs +62 -0
- package/schematics/migrations/divider-signals-and-aria/index.cjs +212 -0
- package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
- package/schematics/migrations/dl-attribute-coercion/data.cjs +85 -0
- package/schematics/migrations/dl-attribute-coercion/index.cjs +162 -0
- package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
- package/schematics/migrations/dl-standalone-names/README.md +49 -0
- package/schematics/migrations/dl-standalone-names/data.cjs +44 -0
- package/schematics/migrations/dl-standalone-names/index.cjs +322 -0
- package/schematics/migrations/dl-standalone-names/schema.json +20 -0
- package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
- package/schematics/migrations/dropdown-demote-overlay/data.cjs +84 -0
- package/schematics/migrations/dropdown-demote-overlay/index.cjs +289 -0
- package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
- package/schematics/migrations/dropdown-signals/README.md +83 -0
- package/schematics/migrations/dropdown-signals/data.cjs +152 -0
- package/schematics/migrations/dropdown-signals/index.cjs +20 -0
- package/schematics/migrations/dropdown-signals/schema.json +20 -0
- package/schematics/migrations/empty-state-error-color/README.md +84 -0
- package/schematics/migrations/empty-state-error-color/data.cjs +85 -0
- package/schematics/migrations/empty-state-error-color/index.cjs +72 -0
- package/schematics/migrations/empty-state-error-color/schema.json +15 -0
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/empty-state-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
- package/schematics/migrations/file-upload-cva-and-primitives/data.cjs +97 -0
- package/schematics/migrations/file-upload-cva-and-primitives/index.cjs +61 -0
- package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
- package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
- package/schematics/migrations/file-upload-deprecated-outputs/data.cjs +20 -0
- package/schematics/migrations/file-upload-deprecated-outputs/index.cjs +71 -0
- package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
- package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
- package/schematics/migrations/filter-bar-rename-action/data.cjs +151 -0
- package/schematics/migrations/filter-bar-rename-action/index.cjs +178 -0
- package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
- package/schematics/migrations/filter-bar-signals/README.md +27 -16
- package/schematics/migrations/filter-bar-signals/{data.js → data.cjs} +1 -2
- package/schematics/migrations/filter-bar-signals/index.cjs +225 -0
- package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
- package/schematics/migrations/filter-bar-state-saving-default/data.cjs +87 -0
- package/schematics/migrations/filter-bar-state-saving-default/index.cjs +62 -0
- package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
- package/schematics/migrations/flag-inner-html/README.md +67 -0
- package/schematics/migrations/flag-inner-html/data.cjs +58 -0
- package/schematics/migrations/flag-inner-html/index.cjs +62 -0
- package/schematics/migrations/flag-inner-html/schema.json +15 -0
- package/schematics/migrations/form-field-signals/README.md +125 -0
- package/schematics/migrations/form-field-signals/data.cjs +288 -0
- package/schematics/migrations/form-field-signals/index.cjs +383 -0
- package/schematics/migrations/form-field-signals/schema.json +20 -0
- package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
- package/schematics/migrations/icon-semantics-and-api/data.cjs +97 -0
- package/schematics/migrations/icon-semantics-and-api/index.cjs +65 -0
- package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
- package/schematics/migrations/icons-replacement/README.md +5 -5
- package/schematics/migrations/icons-replacement/{index.js → index.cjs} +4 -3
- package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
- package/schematics/migrations/inline-edit-a11y-and-types/data.cjs +117 -0
- package/schematics/migrations/inline-edit-a11y-and-types/index.cjs +98 -0
- package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
- package/schematics/migrations/input-number-surface/README.md +140 -0
- package/schematics/migrations/input-number-surface/data.cjs +135 -0
- package/schematics/migrations/input-number-surface/index.cjs +293 -0
- package/schematics/migrations/input-number-surface/schema.json +20 -0
- package/schematics/migrations/input-signals/README.md +20 -0
- package/schematics/migrations/input-signals/data.cjs +30 -0
- package/schematics/migrations/input-signals/index.cjs +18 -0
- package/schematics/migrations/input-signals/schema.json +15 -0
- package/schematics/migrations/link-deprecated-path/README.md +144 -0
- package/schematics/migrations/link-deprecated-path/index.cjs +20 -0
- package/schematics/migrations/link-deprecated-path/schema.json +20 -0
- package/schematics/migrations/link-signals/README.md +71 -0
- package/schematics/migrations/link-signals/data.cjs +116 -0
- package/schematics/migrations/link-signals/index.cjs +416 -0
- package/schematics/migrations/link-signals/schema.json +20 -0
- package/schematics/migrations/list-signals/README.md +22 -0
- package/schematics/migrations/list-signals/data.cjs +35 -0
- package/schematics/migrations/list-signals/index.cjs +18 -0
- package/schematics/migrations/list-signals/schema.json +15 -0
- package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
- package/schematics/migrations/list-tree-multiple-input/data.cjs +74 -0
- package/schematics/migrations/list-tree-multiple-input/index.cjs +222 -0
- package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
- package/schematics/migrations/loader-overlay-signals/README.md +62 -0
- package/schematics/migrations/loader-overlay-signals/data.cjs +101 -0
- package/schematics/migrations/loader-overlay-signals/index.cjs +698 -0
- package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/{index.js → index.cjs} +6 -5
- package/schematics/migrations/locale-configuration-providers/README.md +163 -0
- package/schematics/migrations/locale-configuration-providers/data.cjs +257 -0
- package/schematics/migrations/locale-configuration-providers/index.cjs +295 -0
- package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
- package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
- package/schematics/migrations/mandatory-peer-dependencies/index.cjs +43 -0
- package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
- package/schematics/migrations/markdown-signals/README.md +58 -0
- package/schematics/migrations/markdown-signals/data.cjs +79 -0
- package/schematics/migrations/markdown-signals/index.cjs +640 -0
- package/schematics/migrations/markdown-signals/schema.json +20 -0
- package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
- package/schematics/migrations/modal-dialog-semantics/data.cjs +110 -0
- package/schematics/migrations/modal-dialog-semantics/index.cjs +59 -0
- package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
- package/schematics/migrations/modal-signals/README.md +88 -0
- package/schematics/migrations/modal-signals/data.cjs +132 -0
- package/schematics/migrations/modal-signals/index.cjs +20 -0
- package/schematics/migrations/modal-signals/schema.json +20 -0
- package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
- package/schematics/migrations/navbar-signals-and-aria/data.cjs +198 -0
- package/schematics/migrations/navbar-signals-and-aria/index.cjs +569 -0
- package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/new-icons-pack/README.md +10 -10
- package/schematics/migrations/new-icons-pack/{index.js → index.cjs} +8 -7
- package/schematics/migrations/notification-center-signals/README.md +67 -0
- package/schematics/migrations/notification-center-signals/data.cjs +66 -0
- package/schematics/migrations/notification-center-signals/index.cjs +62 -0
- package/schematics/migrations/notification-center-signals/schema.json +15 -0
- package/schematics/migrations/option-signals/README.md +37 -0
- package/schematics/migrations/option-signals/data.cjs +86 -0
- package/schematics/migrations/option-signals/index.cjs +20 -0
- package/schematics/migrations/option-signals/schema.json +20 -0
- package/schematics/migrations/popover-leave-delay/README.md +51 -0
- package/schematics/migrations/popover-leave-delay/data.cjs +61 -0
- package/schematics/migrations/popover-leave-delay/index.cjs +55 -0
- package/schematics/migrations/popover-leave-delay/schema.json +15 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/data.cjs +76 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/index.cjs +59 -0
- package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
- package/schematics/migrations/progress-spinner-signals/README.md +72 -0
- package/schematics/migrations/progress-spinner-signals/data.cjs +83 -0
- package/schematics/migrations/progress-spinner-signals/index.cjs +695 -0
- package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
- package/schematics/migrations/query-list-signals/README.md +32 -0
- package/schematics/migrations/query-list-signals/data.cjs +70 -0
- package/schematics/migrations/query-list-signals/index.cjs +18 -0
- package/schematics/migrations/query-list-signals/schema.json +15 -0
- package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
- package/schematics/migrations/radio-signals-and-aria/data.cjs +163 -0
- package/schematics/migrations/radio-signals-and-aria/index.cjs +40 -0
- package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
- package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
- package/schematics/migrations/read-state-dwell-handlers/data.cjs +45 -0
- package/schematics/migrations/read-state-dwell-handlers/index.cjs +216 -0
- package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
- package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
- package/schematics/migrations/scrollbar-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
- package/schematics/migrations/select-signal-inputs/README.md +61 -0
- package/schematics/migrations/select-signal-inputs/data.cjs +99 -0
- package/schematics/migrations/select-signal-inputs/index.cjs +58 -0
- package/schematics/migrations/select-signal-inputs/schema.json +15 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/data.cjs +111 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/index.cjs +58 -0
- package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
- package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
- package/schematics/migrations/signal-inputs-subclasses/data.cjs +69 -0
- package/schematics/migrations/signal-inputs-subclasses/index.cjs +18 -0
- package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
- package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
- package/schematics/migrations/split-button-optional-disabled/data.cjs +53 -0
- package/schematics/migrations/split-button-optional-disabled/index.cjs +58 -0
- package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
- package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
- package/schematics/migrations/splitter-deprecated-path/index.cjs +21 -0
- package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
- package/schematics/migrations/state-saving-default/README.md +67 -0
- package/schematics/migrations/state-saving-default/data.cjs +88 -0
- package/schematics/migrations/state-saving-default/index.cjs +63 -0
- package/schematics/migrations/state-saving-default/schema.json +15 -0
- package/schematics/migrations/table-cell-content/README.md +55 -0
- package/schematics/migrations/table-cell-content/data.cjs +66 -0
- package/schematics/migrations/table-cell-content/index.cjs +67 -0
- package/schematics/migrations/table-cell-content/schema.json +15 -0
- package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
- package/schematics/migrations/tabs-signals-and-aria/data.cjs +139 -0
- package/schematics/migrations/tabs-signals-and-aria/index.cjs +66 -0
- package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
- package/schematics/migrations/tag-list-cleaner/README.md +58 -0
- package/schematics/migrations/tag-list-cleaner/data.cjs +42 -0
- package/schematics/migrations/tag-list-cleaner/index.cjs +197 -0
- package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
- package/schematics/migrations/tag-slots/README.md +41 -0
- package/schematics/migrations/tag-slots/index.cjs +191 -0
- package/schematics/migrations/tag-slots/schema.json +20 -0
- package/schematics/migrations/tags-signals/README.md +85 -0
- package/schematics/migrations/tags-signals/data.cjs +103 -0
- package/schematics/migrations/tags-signals/index.cjs +674 -0
- package/schematics/migrations/tags-signals/schema.json +20 -0
- package/schematics/migrations/textarea-signals/README.md +72 -0
- package/schematics/migrations/textarea-signals/data.cjs +121 -0
- package/schematics/migrations/textarea-signals/index.cjs +380 -0
- package/schematics/migrations/textarea-signals/schema.json +20 -0
- package/schematics/migrations/time-range-title-for/README.md +164 -0
- package/schematics/migrations/time-range-title-for/data.cjs +139 -0
- package/schematics/migrations/time-range-title-for/index.cjs +164 -0
- package/schematics/migrations/time-range-title-for/schema.json +20 -0
- package/schematics/migrations/timepicker-signals/README.md +78 -0
- package/schematics/migrations/timepicker-signals/data.cjs +82 -0
- package/schematics/migrations/timepicker-signals/index.cjs +710 -0
- package/schematics/migrations/timepicker-signals/schema.json +20 -0
- package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
- package/schematics/migrations/timezone-grouping-utils/data.cjs +101 -0
- package/schematics/migrations/timezone-grouping-utils/index.cjs +65 -0
- package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
- package/schematics/migrations/title-encapsulation/README.md +49 -0
- package/schematics/migrations/title-encapsulation/data.cjs +69 -0
- package/schematics/migrations/title-encapsulation/index.cjs +58 -0
- package/schematics/migrations/title-encapsulation/schema.json +15 -0
- package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
- package/schematics/migrations/toast-stack-and-defaults/data.cjs +79 -0
- package/schematics/migrations/toast-stack-and-defaults/index.cjs +54 -0
- package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/data.cjs +89 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/index.cjs +61 -0
- package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
- package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
- package/schematics/migrations/top-bar-container-selectors/data.cjs +56 -0
- package/schematics/migrations/top-bar-container-selectors/index.cjs +85 -0
- package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
- package/schematics/migrations/tree-select-signals/README.md +61 -0
- package/schematics/migrations/tree-select-signals/data.cjs +106 -0
- package/schematics/migrations/tree-select-signals/index.cjs +59 -0
- package/schematics/migrations/tree-select-signals/schema.json +15 -0
- package/schematics/migrations/tree-signals/README.md +82 -0
- package/schematics/migrations/tree-signals/data.cjs +123 -0
- package/schematics/migrations/tree-signals/index.cjs +55 -0
- package/schematics/migrations/tree-signals/schema.json +15 -0
- package/schematics/migrations/tree-state-saving-default/README.md +66 -0
- package/schematics/migrations/tree-state-saving-default/data.cjs +78 -0
- package/schematics/migrations/tree-state-saving-default/index.cjs +61 -0
- package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
- package/schematics/migrations/username-pipe-injection/README.md +59 -0
- package/schematics/migrations/username-pipe-injection/data.cjs +78 -0
- package/schematics/migrations/username-pipe-injection/index.cjs +59 -0
- package/schematics/migrations/username-pipe-injection/schema.json +15 -0
- package/schematics/migrations/v20-upgrade/README.md +36 -16
- package/schematics/migrations/v20-upgrade/{data.js → data.cjs} +124 -77
- package/schematics/migrations/v20-upgrade/index.cjs +19 -0
- package/schematics/migrations/v21-upgrade/README.md +271 -0
- package/schematics/migrations/v21-upgrade/data.cjs +1371 -0
- package/schematics/migrations/v21-upgrade/index.cjs +95 -0
- package/schematics/migrations/v21-upgrade/schema.json +20 -0
- package/schematics/migrations/zoneless-change-detection/README.md +30 -0
- package/schematics/migrations/zoneless-change-detection/data.cjs +29 -0
- package/schematics/migrations/zoneless-change-detection/index.cjs +21 -0
- package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
- package/schematics/migrations.json +401 -6
- package/schematics/ng-add/index.cjs +266 -0
- package/schematics/ng-add/schema.json +15 -0
- package/schematics/utils/{angular-parsing.js → angular-parsing.cjs} +2 -2
- package/schematics/utils/deprecated-path-migration.cjs +62 -0
- package/schematics/utils/html-config.cjs +148 -0
- package/schematics/utils/{icon-migration.js → icon-migration.cjs} +2 -2
- package/schematics/utils/list-item-pattern.cjs +16 -0
- package/schematics/utils/{package-config.js → package-config.cjs} +3 -32
- package/schematics/utils/project-files.cjs +25 -0
- package/schematics/utils/replacement-driver.cjs +337 -0
- package/schematics/utils/safe-rule.cjs +23 -0
- package/schematics/utils/signal-members-migration.cjs +779 -0
- package/schematics/utils/tag-patterns.cjs +21 -0
- package/schematics/utils/template-ref-access.cjs +155 -0
- package/schematics/utils/{typescript.js → typescript.cjs} +1 -1
- package/schematics/utils/warn-only-migration.cjs +52 -0
- package/schematics/utils/workspace-styles.cjs +123 -0
- package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
- package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
- package/scrollbar/native-scrollbar.scss +68 -0
- package/scrollbar/scrollbar-tokens.scss +13 -22
- package/scrollbar/scrollbar-track.scss +94 -0
- package/scrollbar/scrollbar-viewport.scss +33 -0
- package/scrollbar/scrollbar.scss +24 -0
- package/search-expandable/search-expandable-tokens.scss +4 -0
- package/search-expandable/search-expandable.scss +4 -2
- package/select/_select-theme.scss +3 -16
- package/select/select.scss +0 -6
- package/sidebar/sidebar.scss +20 -0
- package/sidepanel/_sidepanel-theme.scss +1 -1
- package/sidepanel/sidepanel-tokens.scss +7 -1
- package/sidepanel/sidepanel.scss +41 -5
- package/skeleton/skeleton-presets.scss +350 -0
- package/skeleton/skeleton-tokens.scss +127 -0
- package/skeleton/skeleton.scss +53 -45
- package/split-button/_split-button-theme.scss +4 -4
- package/split-button/split-button.scss +2 -6
- package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
- package/splitter/deprecated/splitter.scss +51 -0
- package/splitter/splitter-tokens.scss +19 -0
- package/splitter/splitter.scss +148 -28
- package/table/_table-theme.scss +13 -12
- package/table/table-tokens.scss +8 -0
- package/table/table.scss +47 -22
- package/tabs/_tabs-common.scss +14 -14
- package/tabs/_tabs-theme.scss +4 -5
- package/tabs/tab-body.scss +49 -1
- package/tabs/tab-header.scss +2 -1
- package/tags/tag-list.scss +4 -0
- package/tags/tag.scss +19 -1
- package/time-range/time-range.scss +9 -0
- package/timezone/timezone-option.component.scss +4 -7
- package/timezone/timezone-select.component.scss +3 -0
- package/toast/_toast-theme.scss +1 -4
- package/toast/toast-container.component.scss +19 -13
- package/toast/toast-tokens.scss +12 -6
- package/toast/toast.component.scss +42 -19
- package/toggle/_toggle-theme.scss +4 -10
- package/toggle/toggle.scss +67 -26
- package/tooltip/_tooltip-theme.scss +7 -1
- package/tooltip/tooltip-tokens.scss +1 -2
- package/tooltip/tooltip.scss +55 -9
- package/top-bar/top-bar-tokens.scss +13 -2
- package/top-bar/top-bar.scss +24 -19
- package/tree/_tree-theme.scss +0 -1
- package/tree/toggle.scss +5 -9
- package/tree/tree-option.scss +2 -4
- package/tree/tree-tokens.scss +2 -1
- package/tree/tree.scss +3 -5
- package/tree-select/_tree-select-theme.scss +4 -15
- package/tree-select/tree-select-tokens.scss +16 -0
- package/tree-select/tree-select.scss +0 -6
- package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
- package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
- package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
- package/types/koobiq-components-app-switcher.d.ts +406 -0
- package/types/koobiq-components-autocomplete.d.ts +443 -0
- package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
- package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
- package/types/koobiq-components-button-toggle.d.ts +340 -0
- package/types/koobiq-components-button.d.ts +296 -0
- package/types/koobiq-components-checkbox.d.ts +172 -0
- package/types/koobiq-components-clamped-text.d.ts +184 -0
- package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +150 -88
- package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
- package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
- package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
- package/types/koobiq-components-divider.d.ts +43 -0
- package/types/koobiq-components-dl.d.ts +235 -0
- package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
- package/types/koobiq-components-ellipsis-center.d.ts +85 -0
- package/types/koobiq-components-empty-state.d.ts +106 -0
- package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
- package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
- package/types/koobiq-components-flag.d.ts +68 -0
- package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
- package/types/koobiq-components-icon.d.ts +333 -0
- package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
- package/types/koobiq-components-input.d.ts +477 -0
- package/types/koobiq-components-link-deprecated.d.ts +101 -0
- package/types/koobiq-components-link.d.ts +176 -0
- package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
- package/types/koobiq-components-loader-overlay.d.ts +101 -0
- package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
- package/types/koobiq-components-modal.d.ts +666 -0
- package/types/koobiq-components-navbar.d.ts +569 -0
- package/types/koobiq-components-notification-center.d.ts +500 -0
- package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
- package/types/koobiq-components-popover.d.ts +468 -0
- package/types/koobiq-components-progress-bar.d.ts +67 -0
- package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
- package/types/koobiq-components-radio.d.ts +294 -0
- package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
- package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
- package/types/koobiq-components-scrollbar.d.ts +154 -0
- package/types/koobiq-components-search-expandable.d.ts +164 -0
- package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
- package/types/koobiq-components-sidebar.d.ts +152 -0
- package/types/koobiq-components-sidepanel.d.ts +436 -0
- package/types/koobiq-components-skeleton.d.ts +234 -0
- package/types/koobiq-components-split-button.d.ts +65 -0
- package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
- package/types/koobiq-components-splitter.d.ts +406 -0
- package/types/koobiq-components-table.d.ts +44 -0
- package/types/koobiq-components-tabs.d.ts +888 -0
- package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
- package/types/koobiq-components-textarea.d.ts +178 -0
- package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
- package/types/koobiq-components-timepicker.d.ts +223 -0
- package/types/koobiq-components-timezone.d.ts +266 -0
- package/types/koobiq-components-title.d.ts +184 -0
- package/types/koobiq-components-toast.d.ts +289 -0
- package/types/koobiq-components-toggle.d.ts +121 -0
- package/types/koobiq-components-tooltip.d.ts +610 -0
- package/types/koobiq-components-top-bar.d.ts +61 -0
- package/types/koobiq-components-tree-select.d.ts +670 -0
- package/types/koobiq-components-tree.d.ts +1339 -0
- package/types/koobiq-components-username.d.ts +340 -0
- package/username/_username-theme.scss +35 -0
- package/username/username.scss +10 -34
- package/app-switcher/index.d.ts +0 -276
- package/autocomplete/index.d.ts +0 -286
- package/button/index.d.ts +0 -153
- package/button-toggle/index.d.ts +0 -162
- package/checkbox/index.d.ts +0 -163
- package/clamped-text/index.d.ts +0 -146
- package/core/styles/_tokens.scss +0 -7
- package/core/styles/common/_clearfix.scss +0 -13
- package/core/styles/common/_popup.scss +0 -6
- package/core/styles/functions/_index.scss +0 -3
- package/core/styles/functions/_number.scss +0 -60
- package/core/styles/functions/_string.scss +0 -18
- package/core/styles/theming/scrollbar-tokens.scss +0 -25
- package/core/styles/typography/_typography-utils.scss +0 -84
- package/divider/index.d.ts +0 -20
- package/dl/index.d.ts +0 -45
- package/ellipsis-center/index.d.ts +0 -71
- package/empty-state/index.d.ts +0 -45
- package/flag/index.d.ts +0 -44
- package/icon/index.d.ts +0 -200
- package/input/index.d.ts +0 -354
- package/link/index.d.ts +0 -56
- package/loader-overlay/index.d.ts +0 -57
- package/modal/index.d.ts +0 -339
- package/navbar/index.d.ts +0 -372
- package/notification-center/index.d.ts +0 -323
- package/popover/index.d.ts +0 -182
- package/prebuilt-themes/dark-theme.css +0 -1
- package/prebuilt-themes/light-theme.css +0 -1
- package/progress-bar/index.d.ts +0 -31
- package/radio/index.d.ts +0 -203
- package/schematics/migrations/alert-signals/index.js +0 -353
- package/schematics/migrations/filter-bar-signals/index.js +0 -319
- package/schematics/migrations/v20-upgrade/index.js +0 -225
- package/schematics/ng-add/index.js +0 -39
- package/search-expandable/index.d.ts +0 -101
- package/sidebar/index.d.ts +0 -94
- package/sidepanel/index.d.ts +0 -272
- package/skeleton/index.d.ts +0 -26
- package/split-button/index.d.ts +0 -46
- package/table/index.d.ts +0 -25
- package/tabs/index.d.ts +0 -677
- package/textarea/index.d.ts +0 -138
- package/timepicker/index.d.ts +0 -197
- package/timezone/index.d.ts +0 -125
- package/title/index.d.ts +0 -139
- package/toast/index.d.ts +0 -178
- package/toggle/index.d.ts +0 -104
- package/tooltip/index.d.ts +0 -335
- package/top-bar/index.d.ts +0 -33
- package/tree/index.d.ts +0 -802
- package/tree-select/index.d.ts +0 -475
- package/username/index.d.ts +0 -194
- /package/schematics/migrations/css-selectors/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/deprecated-icons/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/icons-replacement/{data.js → data.cjs} +0 -0
- /package/schematics/migrations/new-icons-pack/{data.js → data.cjs} +0 -0
- /package/schematics/utils/{ast.js → ast.cjs} +0 -0
- /package/schematics/utils/{messages.js → messages.cjs} +0 -0
- /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
- /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-username.mjs","sources":["../../../packages/components/username/types.ts","../../../packages/components/username/constants.ts","../../../packages/components/username/username.pipe.ts","../../../packages/components/username/username.ts","../../../packages/components/username/username.html","../../../packages/components/username/module.ts","../../../packages/components/username/koobiq-components-username.ts"],"sourcesContent":["/**\n * Keys for formatting username parts in short (initial) or full form.\n */\nexport enum KbqUsernameFormatKey {\n /**\n * Short form of the first name (e.g., \"John\" → \"J\")\n */\n FirstNameShort = 'f',\n\n /**\n * Full form of the first name (e.g., \"John\")\n */\n FirstNameFull = 'F',\n\n /**\n * Short form of the middle name (e.g., \"Henry\" → \"H\")\n */\n MiddleNameShort = 'm',\n\n /**\n * Full form of the middle name (e.g., \"Henry\")\n */\n MiddleNameFull = 'M',\n\n /**\n * Short form of the last name (e.g., \"Doe\" → \"D\")\n */\n LastNameShort = 'l',\n\n /**\n * Full form of the last name (e.g., \"Doe\")\n */\n LastNameFull = 'L',\n Dot = '.'\n}\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n */\nexport type KbqFormatKeyToProfileMapping<T = any> = {\n [\n key in Exclude<\n KbqUsernameFormatKey,\n KbqUsernameFormatKey.FirstNameFull | KbqUsernameFormatKey.MiddleNameFull | KbqUsernameFormatKey.LastNameFull\n >\n ]: keyof T | undefined;\n};\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n * @see KbqUsernameCustomPipe\n */\nexport type KbqFormatKeyToProfileMappingExtended<T = any> = {\n [key in KbqUsernameFormatKey]: keyof T | undefined;\n};\n\n/**\n * Layout mode for displaying a username and applying text-ellipsis.\n *\n * - `stacked`: Elements shown vertically.\n * - `inline`: Elements shown in one line. Text ellipsis is applied to both parts.\n * - `text`: Plain text, no layout styling. No text-ellipsis.\n */\nexport type KbqUsernameMode = 'stacked' | 'inline' | 'text';\n\n/**\n * Visual style of the username.\n *\n * - `default`: standard styling with primary and secondary colors.\n * - `error`: error colors (e.g., red).\n * - `accented`: no color theming; emphasizes via typography only.\n * - `inherit`: inherits parent styles, no theming. For example, useful when using inside links.\n */\nexport type KbqUsernameStyle = 'default' | 'error' | 'accented' | 'inherit';\n","import { InjectionToken } from '@angular/core';\nimport { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUsernameFormatKey } from './types';\n\n/** Default name format: Last name full, first and middle as initials. */\nexport const kbqDefaultFullNameFormatCustom = 'L f. m.';\n/** Default name format: Last name full, first and middle as initials. */\nexport const kbqDefaultFullNameFormat = 'lf.m.';\n\n/**\n * Throws an error when no profile field mapping is provided to the username pipe.\n * @docs-private\n */\nexport function KbqMappingMissingError() {\n return new Error('KbqUsernamePipe: profile field mapping is required but was not provided.');\n}\n\n/**\n * Injection token for providing a global username format-to-profile mapping.\n */\nexport const KBQ_PROFILE_MAPPING = new InjectionToken<\n KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n>('KBQ_PROFILE_MAPPING', {\n factory: () =>\n ({\n [KbqUsernameFormatKey.FirstNameShort]: 'firstName',\n [KbqUsernameFormatKey.MiddleNameShort]: 'middleName',\n [KbqUsernameFormatKey.LastNameShort]: 'lastName',\n [KbqUsernameFormatKey.Dot]: undefined\n }) satisfies KbqFormatKeyToProfileMapping<{ firstName: string; middleName: string; lastName: string }>\n});\n","import { inject, Injectable, Pipe, PipeTransform } from '@angular/core';\nimport {\n KBQ_PROFILE_MAPPING,\n kbqDefaultFullNameFormat,\n kbqDefaultFullNameFormatCustom,\n KbqMappingMissingError\n} from './constants';\nimport { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUsernameFormatKey } from './types';\nimport { KbqUserInfo } from './username';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqUsername',\n pure: true\n})\nexport class KbqUsernamePipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(profile: T, format = kbqDefaultFullNameFormat, customMapping?: KbqFormatKeyToProfileMapping): string {\n const resolvedMapping = customMapping || this.mapping;\n\n if (!resolvedMapping) {\n throw KbqMappingMissingError();\n }\n\n if (!profile || typeof profile !== 'object') return '';\n\n let result = '';\n\n const formatUnits = format.split('');\n\n formatUnits.forEach((letter: KbqUsernameFormatKey | string, index: number, array) => {\n if (letter !== KbqUsernameFormatKey.Dot) {\n const field: keyof T = resolvedMapping[letter];\n const fieldValue = profile[field];\n\n if (fieldValue) {\n const isShort = array[index + 1] === KbqUsernameFormatKey.Dot;\n const resolvedFieldValue = isShort ? `${fieldValue[0]}${KbqUsernameFormatKey.Dot}` : fieldValue;\n\n result += ` ${resolvedFieldValue}`;\n }\n }\n });\n\n return result.trim();\n }\n}\n\n/**\n * Pipe to format a user profile into a name string using a format pattern and field mapping.\n * Lowercase keys output initials; uppercase keys show full values.\n */\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'kbqUsernameCustom',\n pure: true\n})\nexport class KbqUsernameCustomPipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING, { optional: true });\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(\n profile: T,\n format = kbqDefaultFullNameFormatCustom,\n customMapping?: KbqFormatKeyToProfileMappingExtended<T>\n ): string {\n const resolvedMapping = customMapping || this.mapping;\n\n if (!resolvedMapping) {\n throw KbqMappingMissingError();\n }\n\n if (!profile || typeof profile !== 'object') return '';\n\n let result = '';\n\n const formatUnits = format.split('');\n\n formatUnits.forEach((letter: KbqUsernameFormatKey | string) => {\n const field: keyof T | undefined = resolvedMapping[letter];\n\n if (!field) {\n result += letter;\n\n return;\n }\n\n const isShort = letter === letter.toLowerCase();\n const fieldValue = profile[field] || '';\n\n result += fieldValue && isShort ? fieldValue[0] : fieldValue;\n });\n\n return result.trim();\n }\n}\n\nexport interface KbqUsernameTextOptions {\n /** Formats the login segment. Defaults to identity. */\n formatLogin?: (login: string) => string;\n /**\n * Formats the site segment.\n * Defaults to wrapping in parentheses, matching kbq-username display.\n */\n formatSite?: (site: string) => string;\n}\n\n/**\n * Builds a full username string from a pre-formatted name plus optional login and site,\n * mirroring the text rendered by `kbq-username`.\n *\n * Provide custom `formatLogin` / `formatSite` to tailor the output.\n */\nexport function kbqBuildUsernameText(\n data: { name: string } & Partial<Pick<KbqUserInfo, 'login' | 'site'>>,\n options?: KbqUsernameTextOptions\n): string {\n const formatLogin = options?.formatLogin ?? ((login) => login);\n const formatSite = options?.formatSite ?? ((site) => `(${site})`);\n\n return [data.name, data.login && formatLogin(data.login), data.site && formatSite(data.site)]\n .filter(Boolean)\n .join(' ');\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { kbqDefaultFullNameFormat } from './constants';\nimport { KbqUsernameMode, KbqUsernameStyle } from './types';\nimport { KbqUsernamePipe } from './username.pipe';\n\nconst baseClass = 'kbq-username';\n\n/**\n * Basic user info\n * @docs-private\n */\nexport type KbqUserInfo = {\n firstName?: string;\n lastName?: string;\n middleName?: string;\n login?: string;\n site?: string;\n};\n\n/** Styles the primary part of the username (e.g. full name). */\n@Directive({\n selector: '[kbqUsernamePrimary]',\n host: {\n class: `${baseClass}__primary`\n },\n exportAs: 'kbqUsernamePrimary'\n})\nexport class KbqUsernamePrimary {}\n\n/** Styles the secondary part. */\n@Directive({\n selector: '[kbqUsernameSecondary]',\n host: {\n class: `${baseClass}__secondary`\n },\n exportAs: 'kbqUsernameSecondary'\n})\nexport class KbqUsernameSecondary {}\n\n/** Styles a secondary hint. */\n@Directive({\n selector: '[kbqUsernameSecondaryHint]',\n host: {\n class: `${baseClass}__secondary-hint`\n },\n exportAs: 'kbqUsernameSecondaryHint'\n})\nexport class KbqUsernameSecondaryHint {}\n\n/** Custom content for `KbqUsername`, overrides default view. */\n@Directive({\n selector: 'kbq-username-custom-view, [kbq-username-custom-view]',\n host: {\n class: `${baseClass}__custom-view`\n },\n exportAs: 'kbqUsernameCustomView'\n})\nexport class KbqUsernameCustomView {}\n\n/**\n * Displays a user's name based on profile data.\n * Supports different display modes and visual styles.\n * A custom view can be provided via `<kbq-username-custom-view>` for full control over the output.\n * Accepts input profile data and optional formatting options.\n */\n@Component({\n selector: 'kbq-username',\n imports: [\n KbqTitleModule,\n KbqUsernamePipe,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint\n ],\n templateUrl: './username.html',\n styleUrls: ['./username.scss', './username-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: baseClass,\n '[class]': 'class()'\n },\n exportAs: 'kbqUsername'\n})\nexport class KbqUsername {\n /** User profile data used for display. */\n readonly userInfo = input<KbqUserInfo>();\n /** Enables compact display mode */\n readonly isCompact = input(false, { transform: booleanAttribute });\n /** Format string for rendering the user's full name. */\n readonly fullNameFormat = input<string>(kbqDefaultFullNameFormat);\n /**\n * Display mode of the username.\n * @default inline\n */\n readonly mode = input<KbqUsernameMode>('inline');\n /**\n * Visual style of the username.\n * @default default\n */\n readonly type = input<KbqUsernameStyle>('default');\n /**\n * Custom projected view for username rendering.\n * @docs-private\n */\n protected readonly customView = contentChild(KbqUsernameCustomView);\n\n /** @docs-private */\n protected readonly hasFullName = computed(() => {\n const userInfo = this.userInfo();\n\n if (!userInfo) return false;\n\n return userInfo?.lastName && userInfo?.firstName;\n });\n\n /** @docs-private */\n protected readonly class = computed(() => {\n return [this.type(), this.mode()].map((modificator) => `${baseClass}_${modificator}`).join(' ');\n });\n}\n","@let profile = userInfo();\n<ng-content select=\"kbq-username-custom-view,[kbq-username-custom-view]\" />\n\n@if (!customView() && profile) {\n @let fullName = profile | kbqUsername: fullNameFormat();\n\n @if (!isCompact()) {\n @if (hasFullName()) {\n <span kbq-title kbqUsernamePrimary>{{ fullName }}</span>\n }\n\n @if (profile.login) {\n <span kbq-title kbqUsernameSecondary>\n {{ profile.login }}\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n }\n } @else {\n <span kbq-title kbqUsernamePrimary>\n @if (hasFullName()) {\n <span>{{ fullName }}</span>\n }\n @if (!hasFullName() && profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span kbqUsernameSecondaryHint> ({{ profile.site }})</span>\n }\n </span>\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqUsername, KbqUsernameCustomView, KbqUsernamePrimary, KbqUsernameSecondary } from './username';\nimport { KbqUsernameCustomPipe, KbqUsernamePipe } from './username.pipe';\n\nconst COMPONENTS = [\n KbqUsername,\n KbqUsernameCustomView,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameCustomPipe,\n KbqUsernamePipe\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqUsernameModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-username.mjs","sources":["../../../packages/components/username/types.ts","../../../packages/components/username/constants.ts","../../../packages/components/username/username.pipe.ts","../../../packages/components/username/username.ts","../../../packages/components/username/username.html","../../../packages/components/username/module.ts","../../../packages/components/username/koobiq-components-username.ts"],"sourcesContent":["/**\n * Keys naming the profile field a format character stands for.\n *\n * The key identifies the *field* only. Whether it renders in full or as an initial is decided by the\n * pipe that reads the format: `KbqUsernamePipe` abbreviates a key that is followed by {@link Dot},\n * `KbqUsernameCustomPipe` abbreviates the lowercase keys. The two upper/lower pairs therefore exist so\n * that a single mapping serves both rules.\n */\nexport enum KbqUsernameFormatKey {\n /** First name, abbreviated by `KbqUsernameCustomPipe`. */\n FirstNameShort = 'f',\n\n /** First name, rendered in full by `KbqUsernameCustomPipe`. */\n FirstNameFull = 'F',\n\n /** Middle name, abbreviated by `KbqUsernameCustomPipe`. */\n MiddleNameShort = 'm',\n\n /** Middle name, rendered in full by `KbqUsernameCustomPipe`. */\n MiddleNameFull = 'M',\n\n /** Last name, abbreviated by `KbqUsernameCustomPipe`. */\n LastNameShort = 'l',\n\n /** Last name, rendered in full by `KbqUsernameCustomPipe`. */\n LastNameFull = 'L',\n\n /** Abbreviation mark. `KbqUsernamePipe` abbreviates the key it follows; never maps to a field. */\n Dot = '.'\n}\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n *\n * Excludes the uppercase keys: `KbqUsernamePipe` decides shortness from a following\n * {@link KbqUsernameFormatKey.Dot}, so a case pair would carry no meaning for it. The mapping that does\n * carry them is {@link KbqFormatKeyToProfileMappingExtended}.\n */\nexport type KbqFormatKeyToProfileMapping<T = any> = {\n [\n key in Exclude<\n KbqUsernameFormatKey,\n KbqUsernameFormatKey.FirstNameFull | KbqUsernameFormatKey.MiddleNameFull | KbqUsernameFormatKey.LastNameFull\n >\n ]: keyof T | undefined;\n};\n\n/**\n * Maps each format key to a property name in the user profile object.\n * Allows flexible formatting regardless of profile field names.\n *\n * Covers the uppercase keys as well, which is the pair {@link KbqUsernameCustomPipe} derives the form from.\n */\nexport type KbqFormatKeyToProfileMappingExtended<T = any> = {\n [key in KbqUsernameFormatKey]: keyof T | undefined;\n};\n\n/** Basic user info rendered by `kbq-username`. */\nexport type KbqUserInfo = {\n /** Given name. */\n firstName?: string;\n /** Family name. */\n lastName?: string;\n /** Middle name or patronymic. */\n middleName?: string;\n /** Account name, rendered as the secondary part. */\n login?: string;\n /** Site the account belongs to, rendered in parentheses after the login. */\n site?: string;\n};\n\n/**\n * Layout mode for displaying a username and applying text-ellipsis.\n *\n * - `stacked`: Elements shown vertically.\n * - `inline`: Elements shown in one line. Text ellipsis is applied to both parts.\n * - `text`: `display: inline`, so the username flows inside a sentence; nothing clips it, hence no title.\n */\nexport type KbqUsernameMode = 'stacked' | 'inline' | 'text';\n\n/**\n * Visual style of the username.\n *\n * - `default`: standard styling with primary and secondary colors.\n * - `error`: error colors (e.g., red).\n * - `accented`: no color theming; emphasizes via typography only.\n * - `inherit`: inherits parent styles, no theming. For example, useful when using inside links.\n */\nexport type KbqUsernameStyle = 'default' | 'error' | 'accented' | 'inherit';\n","import { InjectionToken, Provider, Signal } from '@angular/core';\nimport {\n KbqDeepPartial,\n kbqInjectLocaleConfiguration,\n kbqLocaleConfigurationOverrideProvider,\n KbqUsernameLocaleConfiguration,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport {\n KbqFormatKeyToProfileMapping,\n KbqFormatKeyToProfileMappingExtended,\n KbqUserInfo,\n KbqUsernameFormatKey\n} from './types';\n\n/**\n * Default format of `KbqUsernameCustomPipe`: full last name, first and middle names as initials.\n *\n * Written in that pipe's own syntax — uppercase keys render the full value, lowercase ones an initial,\n * and every other character is copied verbatim, which is where the spaces and the dots come from.\n */\nexport const kbqDefaultFullNameFormatCustom = 'L f. m.';\n\n/**\n * Default format of `KbqUsernamePipe` and of the `kbq-username` component: full last name, first and\n * middle names as initials.\n *\n * Written in that pipe's own syntax — a key followed by `.` renders an initial, any other key renders\n * the full value, and the separating spaces are inserted by the pipe rather than by the format.\n */\nexport const kbqDefaultFullNameFormat = 'lf.m.';\n\n/**\n * Mapping of every format key onto a field of {@link KbqUserInfo}. Backs {@link KBQ_PROFILE_MAPPING}\n * and is the fallback of both pipes, so a profile shaped like `KbqUserInfo` needs no mapping at all.\n *\n * Covers the uppercase keys as well, which is what makes `kbqDefaultFullNameFormatCustom` work out of\n * the box; spread it to map extra fields without losing the defaults.\n */\nexport const kbqDefaultProfileMapping = {\n [KbqUsernameFormatKey.FirstNameShort]: 'firstName',\n [KbqUsernameFormatKey.FirstNameFull]: 'firstName',\n [KbqUsernameFormatKey.MiddleNameShort]: 'middleName',\n [KbqUsernameFormatKey.MiddleNameFull]: 'middleName',\n [KbqUsernameFormatKey.LastNameShort]: 'lastName',\n [KbqUsernameFormatKey.LastNameFull]: 'lastName',\n [KbqUsernameFormatKey.Dot]: undefined\n} satisfies KbqFormatKeyToProfileMappingExtended<KbqUserInfo>;\n\n/**\n * Injection token for providing a global username format-to-profile mapping.\n *\n * Resolved where the `kbq-username` component or the pipe lives, so a component-level or route-level\n * provider applies to that subtree. Outside a template, resolve it from your own injection context —\n * `kbqInjectUsernameFormatter()` does exactly that.\n */\nexport const KBQ_PROFILE_MAPPING = new InjectionToken<\n KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n>('KBQ_PROFILE_MAPPING', { factory: () => kbqDefaultProfileMapping });\n\n/** Default localized strings of `kbq-username`. */\nexport const KBQ_USERNAME_DEFAULT_LOCALE_CONFIGURATION: KbqUsernameLocaleConfiguration = ruRULocaleData.username;\n\n/** Localization configuration provider for `kbq-username`. */\nexport const KBQ_USERNAME_LOCALE_CONFIGURATION = new InjectionToken<KbqUsernameLocaleConfiguration>(\n 'KbqUsernameLocaleConfiguration',\n { factory: () => KBQ_USERNAME_DEFAULT_LOCALE_CONFIGURATION }\n);\n\n/**\n * Utility provider. Only the strings you pass are overridden; the rest keep following the active locale.\n *\n * Provides {@link KBQ_USERNAME_LOCALE_CONFIGURATION}.\n */\nexport const kbqUsernameLocaleConfigurationProvider = (\n configuration: KbqDeepPartial<KbqUsernameLocaleConfiguration>\n): Provider => kbqLocaleConfigurationOverrideProvider('username', configuration);\n\n/**\n * Injection function that creates a reactive locale configuration signal for `kbq-username`.\n *\n * @docs-private\n */\nexport function kbqInjectUsernameLocaleConfiguration(): Signal<KbqUsernameLocaleConfiguration> {\n return kbqInjectLocaleConfiguration('username', KBQ_USERNAME_LOCALE_CONFIGURATION);\n}\n","import { inject, isDevMode, Pipe, PipeTransform } from '@angular/core';\nimport {\n KBQ_PROFILE_MAPPING,\n kbqDefaultFullNameFormat,\n kbqDefaultFullNameFormatCustom,\n kbqDefaultProfileMapping\n} from './constants';\nimport {\n KbqFormatKeyToProfileMapping,\n KbqFormatKeyToProfileMappingExtended,\n KbqUserInfo,\n KbqUsernameFormatKey\n} from './types';\n\n/** Format keys that name a profile field. `Dot` is a mark rather than a field and is deliberately absent. */\nconst fieldFormatKeys = new Set<string>([\n KbqUsernameFormatKey.FirstNameShort,\n KbqUsernameFormatKey.FirstNameFull,\n KbqUsernameFormatKey.MiddleNameShort,\n KbqUsernameFormatKey.MiddleNameFull,\n KbqUsernameFormatKey.LastNameShort,\n KbqUsernameFormatKey.LastNameFull\n]);\n\n/** Keys already reported by `warnAboutUnmappedKey`; a pure pipe runs on every check. */\nconst reportedUnmappedKeys = new Set<string>();\n\n/**\n * A format key with no mapped field is emitted verbatim, which is indistinguishable from a separator\n * and is how a wrong mapping ends up rendering a capital `L` where the surname should be.\n */\nconst warnAboutUnmappedKey = (letter: string): void => {\n if (!isDevMode() || !fieldFormatKeys.has(letter) || reportedUnmappedKeys.has(letter)) return;\n\n reportedUnmappedKeys.add(letter);\n\n // eslint-disable-next-line no-console\n console.warn(\n `KbqUsernameCustomPipe: format key \"${letter}\" is not mapped to a profile field, so it is rendered ` +\n 'as literal text. Provide it through KBQ_PROFILE_MAPPING (see kbqDefaultProfileMapping).'\n );\n};\n\n/** First character of a value, counted in code points so a surrogate pair survives as a single initial. */\nconst firstCharacter = (value: unknown): string => [...String(value)][0] ?? '';\n\n/** FIRST STRONG ISOLATE: opens a run whose base direction is taken from its own first strong character. */\nconst firstStrongIsolate = '\\u2068';\n\n/** POP DIRECTIONAL ISOLATE: closes the run opened by {@link firstStrongIsolate}. */\nconst popDirectionalIsolate = '\\u2069';\n\n/**\n * Formats a profile the way `KbqUsernamePipe` and `kbq-username` do: a key followed by\n * {@link KbqUsernameFormatKey.Dot} renders an initial, any other key renders the full value, and the\n * parts are joined with single spaces — a character that is neither a mapped key nor `.` is dropped.\n *\n * Fields the profile does not carry are skipped one by one, so a partial profile still renders whatever\n * it has.\n *\n * @param profile Profile to format. Anything that is not a record — null, a primitive, an array —\n * formats as an empty string.\n * @param format Format string, e.g. {@link kbqDefaultFullNameFormat}.\n * @param mapping Format key to profile field mapping, e.g. {@link kbqDefaultProfileMapping}. Resolve it\n * from your own injection context — `inject(KBQ_PROFILE_MAPPING)` — to honour a scoped override.\n */\nexport function kbqFormatUsername<T = unknown>(\n profile: T,\n format: string,\n mapping: KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n): string {\n if (!profile || typeof profile !== 'object' || Array.isArray(profile)) return '';\n\n const letters = format.split('');\n\n return letters\n .reduce<string[]>((parts, letter, index) => {\n if (letter === KbqUsernameFormatKey.Dot) return parts;\n\n const field = mapping[letter];\n const value = field === undefined ? undefined : profile[field];\n\n if (!value) return parts;\n\n const isShort = letters[index + 1] === KbqUsernameFormatKey.Dot;\n\n parts.push(isShort ? `${firstCharacter(value)}${KbqUsernameFormatKey.Dot}` : `${value}`);\n\n return parts;\n }, [])\n .join(' ');\n}\n\n/**\n * Formats a profile the way `KbqUsernameCustomPipe` does: a lowercase key renders an initial, an\n * uppercase one the full value, and every character with no mapped field — the separators — is emitted\n * verbatim, which is what lets the format carry its own punctuation.\n *\n * @param profile Profile to format. Anything that is not a record — null, a primitive, an array —\n * formats as an empty string.\n * @param format Format string, e.g. {@link kbqDefaultFullNameFormatCustom}.\n * @param mapping Format key to profile field mapping, e.g. {@link kbqDefaultProfileMapping}. Resolve it\n * from your own injection context — `inject(KBQ_PROFILE_MAPPING)` — to honour a scoped override.\n */\nexport function kbqFormatUsernameCustom<T = unknown>(\n profile: T,\n format: string,\n mapping: KbqFormatKeyToProfileMapping | KbqFormatKeyToProfileMappingExtended\n): string {\n if (!profile || typeof profile !== 'object' || Array.isArray(profile)) return '';\n\n return format\n .split('')\n .map((letter) => {\n const field = mapping[letter];\n\n if (!field) {\n warnAboutUnmappedKey(letter);\n\n return letter;\n }\n\n const value = profile[field];\n\n if (!value) return '';\n\n return letter === letter.toLowerCase() ? firstCharacter(value) : `${value}`;\n })\n .join('')\n .trim();\n}\n\n/**\n * Formats a user profile into a name string.\n *\n * A key followed by `.` renders an initial and any other key renders the full value; the separating\n * spaces are inserted by the pipe, so a character that is neither a mapped key nor `.` is dropped.\n *\n * {@link KbqUsernameCustomPipe} derives the form from the key's case instead, and keeps the format's own\n * punctuation.\n */\n@Pipe({\n name: 'kbqUsername'\n})\nexport class KbqUsernamePipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(profile: T, format = kbqDefaultFullNameFormat, customMapping?: KbqFormatKeyToProfileMapping): string {\n return kbqFormatUsername(profile, format, customMapping || this.mapping);\n }\n}\n\n/**\n * Formats a user profile into a name string.\n *\n * A lowercase key renders an initial and an uppercase one the full value; every character with no\n * mapped field is emitted verbatim, so the format carries its own separators.\n *\n * {@link KbqUsernamePipe} derives the form from a following `.` instead.\n */\n@Pipe({\n name: 'kbqUsernameCustom'\n})\nexport class KbqUsernameCustomPipe<T = unknown> implements PipeTransform {\n private readonly mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n /** Builds a formatted name string from the user profile using the provided format and mapping. */\n transform(\n profile: T,\n format = kbqDefaultFullNameFormatCustom,\n customMapping?: KbqFormatKeyToProfileMappingExtended<T>\n ): string {\n return kbqFormatUsernameCustom(profile, format, customMapping || this.mapping);\n }\n}\n\n/**\n * Returns the formatter `kbq-username` renders with, bound to the `KBQ_PROFILE_MAPPING` visible at the\n * call site. Use it wherever the displayed string is needed outside a template — a search filter, an\n * option label — so that a scoped mapping applies to both paths.\n *\n * Must run in an injection context.\n */\nexport function kbqInjectUsernameFormatter(): <T>(profile: T, format?: string) => string {\n const mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n return (profile, format = kbqDefaultFullNameFormat) => kbqFormatUsername(profile, format, mapping);\n}\n\nexport interface KbqUsernameTextOptions {\n /** Formats the login segment. Defaults to identity. */\n formatLogin?: (login: string) => string;\n\n /**\n * Formats the site segment.\n * Defaults to wrapping in parentheses, matching kbq-username display.\n */\n formatSite?: (site: string) => string;\n\n /**\n * Wraps every segment in `U+2068`/`U+2069` so that a right-to-left name keeps its order next to a\n * left-to-right login, and the parentheses around the site stay attached to it.\n *\n * Off by default: the isolates are invisible but real characters, and this string is commonly fed to\n * an `includes()` filter that would stop matching.\n */\n bidiIsolate?: boolean;\n}\n\n/**\n * Builds a full username string from a pre-formatted name plus optional login and site,\n * mirroring the text rendered by `kbq-username`.\n *\n * Provide custom `formatLogin` / `formatSite` to tailor the output.\n */\nexport function kbqBuildUsernameText(\n data: { name: string } & Partial<Pick<KbqUserInfo, 'login' | 'site'>>,\n options?: KbqUsernameTextOptions\n): string {\n const formatLogin = options?.formatLogin ?? ((login: string) => login);\n const formatSite = options?.formatSite ?? ((site: string) => `(${site})`);\n const isolate = (segment: string): string =>\n options?.bidiIsolate ? `${firstStrongIsolate}${segment}${popDirectionalIsolate}` : segment;\n\n return [data.name, data.login && formatLogin(data.login), data.site && formatSite(data.site)]\n .filter((segment): segment is string => !!segment)\n .map(isolate)\n .join(' ');\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport {\n KBQ_PROFILE_MAPPING,\n kbqDefaultFullNameFormat,\n kbqDefaultProfileMapping,\n kbqInjectUsernameLocaleConfiguration\n} from './constants';\nimport { KbqUserInfo, KbqUsernameMode, KbqUsernameStyle } from './types';\nimport { kbqFormatUsername } from './username.pipe';\n\nconst baseClass = 'kbq-username';\n\n/**\n * Unabbreviated counterpart of a format: every key renders in full, so the abbreviation marks go.\n *\n * The case is left alone. `kbqFormatUsername` resolves a key through the mapping whatever its case, and\n * upper-casing would miss every mapping typed `KbqFormatKeyToProfileMapping` — the shape the token is\n * documented with, which by design carries the lowercase keys only.\n */\nconst expandFormat = (format: string): string => format.replaceAll('.', '');\n\n/** Styles the primary part of the username (e.g. full name). */\n@Directive({\n selector: '[kbqUsernamePrimary]',\n host: {\n class: `${baseClass}__primary`\n },\n exportAs: 'kbqUsernamePrimary'\n})\nexport class KbqUsernamePrimary {}\n\n/** Styles the secondary part. */\n@Directive({\n selector: '[kbqUsernameSecondary]',\n host: {\n class: `${baseClass}__secondary`\n },\n exportAs: 'kbqUsernameSecondary'\n})\nexport class KbqUsernameSecondary {}\n\n/** Styles a secondary hint. */\n@Directive({\n selector: '[kbqUsernameSecondaryHint]',\n host: {\n class: `${baseClass}__secondary-hint`\n },\n exportAs: 'kbqUsernameSecondaryHint'\n})\nexport class KbqUsernameSecondaryHint {}\n\n/** Custom content for `KbqUsername`, overrides default view. */\n@Directive({\n selector: 'kbq-username-custom-view, [kbq-username-custom-view]',\n host: {\n class: `${baseClass}__custom-view`\n },\n exportAs: 'kbqUsernameCustomView'\n})\nexport class KbqUsernameCustomView {}\n\n/**\n * Displays a user's name based on profile data.\n * Supports different display modes and visual styles.\n * A custom view can be provided via `<kbq-username-custom-view>` for full control over the output.\n * Accepts input profile data and optional formatting options.\n */\n@Component({\n selector: 'kbq-username',\n imports: [\n KbqTitleModule,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint\n ],\n templateUrl: './username.html',\n styleUrls: ['./username.scss', './username-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: baseClass,\n '[class]': 'class()'\n },\n exportAs: 'kbqUsername'\n})\nexport class KbqUsername {\n /**\n * Resolved at the component's own injector, so a mapping scoped to a route or a host component\n * applies to what is rendered here.\n */\n private readonly mapping = inject(KBQ_PROFILE_MAPPING) ?? kbqDefaultProfileMapping;\n\n /** User profile data used for display. */\n readonly userInfo = input<KbqUserInfo>();\n /** Enables compact display mode */\n readonly isCompact = input(false, { transform: booleanAttribute });\n /** Format string for rendering the user's full name. */\n readonly fullNameFormat = input<string>(kbqDefaultFullNameFormat);\n\n /**\n * Display mode of the username. Defaults to `'inline'`.\n */\n readonly mode = input<KbqUsernameMode>('inline');\n\n /**\n * Visual style of the username. Defaults to `'default'`.\n */\n readonly type = input<KbqUsernameStyle>('default');\n\n /**\n * Custom projected view for username rendering.\n *\n * @docs-private\n */\n protected readonly customView = contentChild(KbqUsernameCustomView);\n\n /** @docs-private */\n protected readonly localeConfiguration = kbqInjectUsernameLocaleConfiguration();\n\n /**\n * Name as rendered, i.e. abbreviated according to `fullNameFormat`.\n *\n * @docs-private\n */\n protected readonly formattedName = computed(() =>\n kbqFormatUsername(this.userInfo(), this.fullNameFormat(), this.mapping)\n );\n\n /**\n * Whether the profile yields any name at all. A profile carrying only one of the name fields still\n * has a name, and the formatter degrades to whatever it finds.\n *\n * @docs-private\n */\n protected readonly hasName = computed(() => !!this.formattedName());\n\n /**\n * Unabbreviated name, offered as the tooltip of the truncated primary part.\n *\n * @docs-private\n */\n protected readonly expandedName = computed(() =>\n kbqFormatUsername(this.userInfo(), expandFormat(this.fullNameFormat()), this.mapping)\n );\n\n /**\n * Tooltip of the secondary part: the login with the site hint it renders inline.\n *\n * @docs-private\n */\n protected readonly secondaryTitle = computed(() => this.withSite(this.userInfo()?.login || ''));\n\n /**\n * Tooltip of the compact layout, whose single part carries the name — or the login when there is\n * none — followed by the site.\n *\n * @docs-private\n */\n protected readonly compactTitle = computed(() =>\n this.withSite(this.hasName() ? this.expandedName() || this.formattedName() : this.userInfo()?.login || '')\n );\n\n /**\n * Whether the layout can clip its text. `kbq-truncate-line()` is applied to `stacked` and `inline`\n * only, so in `text` mode nothing is ever clipped and the verdict `kbq-title` computes is known in\n * advance. Attaching it there would cost a `MutationObserver` per part and a forced layout read on\n * every resize and every content mutation, for a tooltip that could never show.\n *\n * @docs-private\n */\n protected readonly canTruncate = computed(() => this.mode() !== 'text');\n\n /** @docs-private */\n protected readonly class = computed(() => {\n return [this.type(), this.mode()].map((modificator) => `${baseClass}_${modificator}`).join(' ');\n });\n\n private withSite(text: string): string {\n const site = this.userInfo()?.site;\n\n return site ? `${text} (${site})`.trim() : text;\n }\n}\n","@let profile = userInfo();\n<ng-content select=\"kbq-username-custom-view,[kbq-username-custom-view]\" />\n\n@if (!customView() && profile) {\n @if (!isCompact()) {\n @if (hasName()) {\n @if (canTruncate()) {\n <span kbqUsernamePrimary dir=\"auto\" [kbq-title]=\"expandedName()\">{{ formattedName() }}</span>\n } @else {\n <span kbqUsernamePrimary dir=\"auto\">{{ formattedName() }}</span>\n }\n }\n\n @if (profile.login) {\n <!-- The two branches must stay in sync: `kbq-title` cannot be bound conditionally, and in\n `text` mode there is no ellipsis for it to detect. -->\n @if (canTruncate()) {\n <span kbqUsernameSecondary [kbq-title]=\"secondaryTitle()\">\n {{ profile.login }}\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n } @else {\n <span kbqUsernameSecondary>\n {{ profile.login }}\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint>({{ profile.site }})</span>\n }\n </span>\n }\n }\n } @else {\n @if (canTruncate()) {\n <span kbqUsernamePrimary [kbq-title]=\"compactTitle()\">\n @if (hasName()) {\n <span dir=\"auto\">{{ formattedName() }}</span>\n } @else if (profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint> ({{ profile.site }})</span>\n }\n </span>\n } @else {\n <span kbqUsernamePrimary>\n @if (hasName()) {\n <span dir=\"auto\">{{ formattedName() }}</span>\n } @else if (profile.login) {\n {{ profile.login }}\n }\n\n @if (profile.site) {\n <span class=\"cdk-visually-hidden\">{{ localeConfiguration().siteLabel }}</span>\n <span kbqUsernameSecondaryHint> ({{ profile.site }})</span>\n }\n </span>\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n KbqUsername,\n KbqUsernameCustomView,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint\n} from './username';\nimport { KbqUsernameCustomPipe, KbqUsernamePipe } from './username.pipe';\n\nconst COMPONENTS = [\n KbqUsername,\n KbqUsernameCustomView,\n KbqUsernamePrimary,\n KbqUsernameSecondary,\n KbqUsernameSecondaryHint,\n KbqUsernameCustomPipe,\n KbqUsernamePipe\n];\n\n/** Exports every `kbq-username` building block: the component, the styling directives and both pipes. */\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqUsernameModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
+
@use '../core/styles/common/animation';
|
|
2
|
+
@use '../core/styles/common/squircle' as *;
|
|
3
|
+
|
|
4
|
+
// `--kbq-background-overlay-theme` was dropped in @koobiq/design-tokens v4; it is now an opaque base
|
|
5
|
+
// plus `--kbq-opacity-overlay`. The two are normally composed with `opacity`, which is not available
|
|
6
|
+
// here — the overlay already animates its own appearance with it, and it would fade the dashed border
|
|
7
|
+
// and the empty state along with the background. Mixing keeps the alpha on the colour alone.
|
|
1
8
|
.kbq-dropzone-overlay {
|
|
2
9
|
--kbq-dropzone-padding: var(--kbq-size-s);
|
|
3
|
-
--kbq-dropzone-overlay-background:
|
|
4
|
-
|
|
10
|
+
--kbq-dropzone-overlay-background: color-mix(
|
|
11
|
+
in srgb,
|
|
12
|
+
var(--kbq-background-overlay-base-theme) /* color-mix only allows percentage value */
|
|
13
|
+
calc(var(--kbq-opacity-overlay) * 100%),
|
|
14
|
+
transparent
|
|
15
|
+
);
|
|
16
|
+
--kbq-dropzone-component-background: color-mix(
|
|
17
|
+
in srgb,
|
|
18
|
+
var(--kbq-background-overlay-base-theme) /* color-mix only allows percentage value */
|
|
19
|
+
calc(var(--kbq-opacity-overlay) * 100%),
|
|
20
|
+
transparent
|
|
21
|
+
);
|
|
5
22
|
--kbq-dropzone-border-color: var(--kbq-line-theme-fade);
|
|
6
23
|
|
|
7
24
|
padding: var(--kbq-dropzone-padding);
|
|
@@ -10,6 +27,10 @@
|
|
|
10
27
|
opacity: 0;
|
|
11
28
|
transition: opacity 100ms ease-in-out;
|
|
12
29
|
|
|
30
|
+
// The overlay covers the whole viewport, so the fade is the largest animated surface the library
|
|
31
|
+
// produces — the one a reduced-motion preference is most about.
|
|
32
|
+
@include animation.kbq-animations-off();
|
|
33
|
+
|
|
13
34
|
&.kbq-dropzone-overlay__attached {
|
|
14
35
|
opacity: 1;
|
|
15
36
|
}
|
|
@@ -21,7 +42,7 @@
|
|
|
21
42
|
align-items: center;
|
|
22
43
|
justify-content: center;
|
|
23
44
|
|
|
24
|
-
|
|
45
|
+
@include kbq-squircle(var(--kbq-size-border-radius));
|
|
25
46
|
border: var(--kbq-size-border-width) dashed var(--kbq-dropzone-border-color);
|
|
26
47
|
background-color: var(--kbq-dropzone-component-background);
|
|
27
48
|
|
|
@@ -55,3 +76,10 @@
|
|
|
55
76
|
--kbq-empty-state-size-normal-image-margin-bottom: var(--kbq-size-m);
|
|
56
77
|
--kbq-empty-state-size-normal-title-margin-bottom: var(--kbq-size-xs);
|
|
57
78
|
}
|
|
79
|
+
|
|
80
|
+
// Scoped to the dropzone, not to every kbq-file-upload-empty-state: inside the multiple file upload
|
|
81
|
+
// the caption is the secondary foreground, and it shares a line with a link that stays secondary —
|
|
82
|
+
// contrast there would split one sentence into two colors.
|
|
83
|
+
.kbq-dropzone-content .kbq-empty-state.kbq-multiple-file-upload__empty-state {
|
|
84
|
+
--kbq-empty-state-text-color: var(--kbq-foreground-contrast);
|
|
85
|
+
}
|
|
@@ -11,21 +11,17 @@
|
|
|
11
11
|
--kbq-file-upload-size-single-container-content-gap-horizontal: var(--kbq-size-s);
|
|
12
12
|
--kbq-file-upload-size-single-container-padding-vertical: var(--kbq-size-m);
|
|
13
13
|
--kbq-file-upload-size-single-container-padding-horizontal: var(--kbq-size-l);
|
|
14
|
-
--kbq-file-upload-size-single-text-block-padding-vertical: var(--kbq-size-3xs);
|
|
15
|
-
--kbq-file-upload-size-single-text-block-content-gap-horizontal: var(--kbq-size-xxs);
|
|
16
14
|
--kbq-file-upload-single-min-height: 44px;
|
|
15
|
+
/* Centers the 16px remove icon in the container: 16px + 2 x 13px fills the 42px content box. */
|
|
16
|
+
--kbq-file-upload-size-single-action-padding: 13px;
|
|
17
17
|
/* THEME TOKENS */
|
|
18
18
|
--kbq-file-upload-single-default-container-border: var(--kbq-line-contrast-fade);
|
|
19
19
|
--kbq-file-upload-single-default-container-background: var(--kbq-background-bg);
|
|
20
20
|
--kbq-file-upload-single-default-dropzone-icon-color: var(--kbq-icon-contrast-fade);
|
|
21
21
|
--kbq-file-upload-single-default-left-icon-color: var(--kbq-icon-contrast-fade);
|
|
22
|
-
--kbq-file-upload-single-default-text-block-color: var(--kbq-foreground-contrast);
|
|
23
22
|
--kbq-file-upload-single-default-file-size-text-color: var(--kbq-foreground-contrast-secondary);
|
|
24
23
|
--kbq-file-upload-single-states-on-drag-container-border: var(--kbq-line-theme-fade);
|
|
25
24
|
--kbq-file-upload-single-states-on-drag-container-background: var(--kbq-background-theme-fade);
|
|
26
|
-
--kbq-file-upload-single-states-on-drag-dropzone-icon-color: var(--kbq-icon-contrast-fade);
|
|
27
|
-
--kbq-file-upload-single-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);
|
|
28
|
-
--kbq-file-upload-single-states-on-drag-text-block-color: var(--kbq-foreground-contrast);
|
|
29
25
|
--kbq-file-upload-single-states-error-container-border: var(--kbq-line-error);
|
|
30
26
|
--kbq-file-upload-single-states-error-container-background: var(--kbq-background-error-less);
|
|
31
27
|
--kbq-file-upload-single-states-error-dropzone-icon-color: var(--kbq-icon-error);
|
|
@@ -38,7 +34,6 @@
|
|
|
38
34
|
--kbq-file-upload-single-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);
|
|
39
35
|
--kbq-file-upload-single-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);
|
|
40
36
|
--kbq-file-upload-single-states-disabled-file-size-text-color: var(--kbq-states-foreground-disabled);
|
|
41
|
-
--kbq-file-upload-single-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);
|
|
42
37
|
}
|
|
43
38
|
|
|
44
39
|
:where(.kbq-multiple-file-upload) {
|
|
@@ -50,14 +45,7 @@
|
|
|
50
45
|
--kbq-file-upload-size-multiple-big-container-min-width: 320px;
|
|
51
46
|
--kbq-file-upload-size-multiple-big-container-border-radius: var(--kbq-size-s);
|
|
52
47
|
--kbq-file-upload-size-multiple-big-container-border-width: 1px;
|
|
53
|
-
--kbq-file-upload-size-multiple-big-container-content-gap-horizontal: var(--kbq-size-m);
|
|
54
|
-
--kbq-file-upload-size-multiple-big-container-padding-vertical: var(--kbq-size-xxl);
|
|
55
|
-
--kbq-file-upload-size-multiple-big-container-padding-horizontal: var(--kbq-size-xxl);
|
|
56
|
-
--kbq-file-upload-size-multiple-big-dropzone-content-gap-horizontal: var(--kbq-size-s);
|
|
57
|
-
--kbq-file-upload-size-multiple-big-text-block-content-gap-vertical: 0px;
|
|
58
|
-
--kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal: var(--kbq-size-xxs);
|
|
59
48
|
--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal: var(--kbq-size-s);
|
|
60
|
-
--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical: var(--kbq-size-s);
|
|
61
49
|
--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal: var(--kbq-size-s);
|
|
62
50
|
--kbq-file-upload-size-multiple-big-grid-cell-file-size-width: var(--kbq-size-7xl);
|
|
63
51
|
/* THEME TOKENS */
|
|
@@ -67,16 +55,12 @@
|
|
|
67
55
|
--kbq-file-upload-multiple-default-dropzone-icon-color: var(--kbq-icon-contrast-fade);
|
|
68
56
|
--kbq-file-upload-multiple-default-left-icon-color: var(--kbq-icon-contrast-fade);
|
|
69
57
|
--kbq-file-upload-multiple-default-text-block-color: var(--kbq-foreground-contrast);
|
|
70
|
-
--kbq-file-upload-multiple-default-grid-divider-color: var(--kbq-line-contrast-less);
|
|
71
58
|
--kbq-file-upload-multiple-default-file-size-text-color: var(--kbq-foreground-contrast-secondary);
|
|
72
59
|
|
|
73
60
|
--kbq-file-upload-multiple-states-on-drag-container-border: var(--kbq-line-theme-fade);
|
|
74
61
|
--kbq-file-upload-multiple-states-on-drag-container-background: var(--kbq-background-theme-fade);
|
|
75
62
|
--kbq-file-upload-multiple-states-on-drag-upload-icon-color: var(--kbq-icon-contrast);
|
|
76
63
|
--kbq-file-upload-multiple-states-on-drag-dropzone-icon-color: var(--kbq-icon-contrast-fade);
|
|
77
|
-
--kbq-file-upload-multiple-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);
|
|
78
|
-
--kbq-file-upload-multiple-states-on-drag-text-block-color: var(--kbq-foreground-contrast);
|
|
79
|
-
--kbq-file-upload-multiple-states-on-drag-grid-divider-color: var(--kbq-line-contrast-less);
|
|
80
64
|
|
|
81
65
|
--kbq-file-upload-multiple-states-error-container-border: var(--kbq-line-error);
|
|
82
66
|
--kbq-file-upload-multiple-states-error-container-background: var(--kbq-background-error-less);
|
|
@@ -91,13 +75,9 @@
|
|
|
91
75
|
--kbq-file-upload-multiple-states-disabled-dropzone-icon-color: var(--kbq-states-icon-disabled);
|
|
92
76
|
--kbq-file-upload-multiple-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);
|
|
93
77
|
--kbq-file-upload-multiple-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);
|
|
94
|
-
--kbq-file-upload-multiple-states-disabled-grid-divider-color: var(--kbq-states-line-disabled);
|
|
95
|
-
--kbq-file-upload-multiple-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);
|
|
96
78
|
}
|
|
97
79
|
|
|
98
80
|
:where(.kbq-file-upload.kbq-file-upload_compact) {
|
|
99
|
-
--kbq-file-upload-multiple-compact-container-content-gap-horizontal: var(--kbq-size-s);
|
|
100
|
-
--kbq-file-upload-multiple-compact-text-block-padding-vertical: var(--kbq-size-3xs);
|
|
101
81
|
--kbq-file-upload-multiple-compact-container-padding-vertical: 11px;
|
|
102
82
|
--kbq-file-upload-multiple-compact-container-padding-horizontal: 15px;
|
|
103
83
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@use './file-upload-theme' as theme;
|
|
2
2
|
@use '../form-field/form-field';
|
|
3
|
+
@use '../core/styles/common/link';
|
|
3
4
|
|
|
4
5
|
.kbq-file-upload {
|
|
5
6
|
box-sizing: border-box;
|
|
@@ -19,6 +20,11 @@
|
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
|
|
23
|
+
// The file input of a browse link is visually hidden inside its label, so the link shows the keyboard focus
|
|
24
|
+
.kbq-file-loader.cdk-keyboard-focused > .kbq-file-upload__browse-link {
|
|
25
|
+
@include link.kbq-link-keyboard-focus-outline();
|
|
26
|
+
}
|
|
27
|
+
|
|
22
28
|
.kbq-file-upload__hint {
|
|
23
29
|
@include form-field.kbq-form-field-hint-geometry();
|
|
24
30
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@use '../core/styles/common/squircle' as *;
|
|
2
|
+
|
|
1
3
|
@mixin _kbq-list-item($state-name) {
|
|
2
4
|
--kbq-option-background: var(--kbq-list-#{$state-name}-container-background);
|
|
3
5
|
|
|
@@ -14,8 +16,8 @@
|
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
.kbq-multiple-file-upload__empty-state {
|
|
17
|
-
--kbq-empty-state-title: var(--kbq-file-upload-multiple-default-text-block-color);
|
|
18
|
-
--kbq-empty-state-color: var(--kbq-file-upload-multiple-default-text-block-color);
|
|
19
|
+
--kbq-empty-state-title-color: var(--kbq-file-upload-multiple-default-text-block-color);
|
|
20
|
+
--kbq-empty-state-text-color: var(--kbq-file-upload-multiple-default-text-block-color);
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
.kbq-multiple-file-upload__empty-state-upload-icon {
|
|
@@ -61,8 +63,8 @@
|
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
.kbq-multiple-file-upload__empty-state {
|
|
64
|
-
--kbq-empty-state-title: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
|
|
65
|
-
--kbq-empty-state-color: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
|
|
66
|
+
--kbq-empty-state-title-color: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
|
|
67
|
+
--kbq-empty-state-text-color: var(--kbq-file-upload-multiple-states-disabled-text-block-color);
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
.kbq-file-upload__dropzone-caption {
|
|
@@ -103,8 +105,8 @@
|
|
|
103
105
|
--kbq-file-upload-multiple-default-text-block-color
|
|
104
106
|
);
|
|
105
107
|
|
|
106
|
-
--kbq-empty-state-title: var(--kbq-file-upload-multiple-states-error-text-block-color);
|
|
107
|
-
--kbq-empty-state-color: var(--kbq-file-upload-multiple-states-error-text-block-color);
|
|
108
|
+
--kbq-empty-state-title-color: var(--kbq-file-upload-multiple-states-error-text-block-color);
|
|
109
|
+
--kbq-empty-state-text-color: var(--kbq-file-upload-multiple-states-error-text-block-color);
|
|
108
110
|
}
|
|
109
111
|
|
|
110
112
|
.kbq-file-upload__list-footer {
|
|
@@ -167,9 +169,9 @@
|
|
|
167
169
|
}
|
|
168
170
|
}
|
|
169
171
|
|
|
170
|
-
//
|
|
172
|
+
// TODO: needs a refactor — the nesting and specificity below are hard to follow.
|
|
171
173
|
.kbq-multiple-file-upload .kbq-file-upload {
|
|
172
|
-
|
|
174
|
+
@include kbq-squircle(var(--kbq-file-upload-size-multiple-big-container-border-radius));
|
|
173
175
|
border-width: var(--kbq-file-upload-size-multiple-big-container-border-width);
|
|
174
176
|
border-style: dashed;
|
|
175
177
|
|
|
@@ -204,7 +206,9 @@
|
|
|
204
206
|
--kbq-empty-state-size-normal-title-margin-bottom: var(--kbq-size-xs);
|
|
205
207
|
}
|
|
206
208
|
|
|
207
|
-
|
|
209
|
+
// The scroll viewport around the list, not the list itself: every declaration here sizes and pads
|
|
210
|
+
// the scrollport, and `<kbq-list>` sits inside it.
|
|
211
|
+
.kbq-file-upload__list-viewport {
|
|
208
212
|
// Content-box so that the height cap counts rows and is not eaten by the 27px of padding
|
|
209
213
|
// below — the same reasoning, and the same wording, as `%kbq-select-content` in
|
|
210
214
|
// `core/styles/common/_select.scss`. A global `border-box` reset in a consuming application
|
|
@@ -214,8 +218,6 @@
|
|
|
214
218
|
min-height: var(--kbq-file-upload-size-multiple-min-height);
|
|
215
219
|
max-height: var(--kbq-file-upload-size-multiple-max-height);
|
|
216
220
|
|
|
217
|
-
overflow-y: auto;
|
|
218
|
-
|
|
219
221
|
padding-top: calc(var(--kbq-size-xxs) - var(--kbq-size-border-width));
|
|
220
222
|
padding-bottom: var(--kbq-size-xxl);
|
|
221
223
|
}
|
|
@@ -294,7 +296,7 @@
|
|
|
294
296
|
padding: 0 calc(var(--kbq-size-xxs) - var(--kbq-size-border-width));
|
|
295
297
|
|
|
296
298
|
.kbq-file-upload__row {
|
|
297
|
-
|
|
299
|
+
@include kbq-squircle(var(--kbq-size-xs));
|
|
298
300
|
}
|
|
299
301
|
}
|
|
300
302
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@use '../core/styles/common/tokens' as *;
|
|
2
|
+
@use '../core/styles/common/squircle' as *;
|
|
2
3
|
|
|
3
4
|
@mixin _kbq-single-file-upload-theme() {
|
|
4
5
|
background-color: var(--kbq-file-upload-single-default-container-background);
|
|
@@ -107,7 +108,7 @@
|
|
|
107
108
|
.kbq-file-upload {
|
|
108
109
|
min-height: var(--kbq-file-upload-single-min-height);
|
|
109
110
|
|
|
110
|
-
|
|
111
|
+
@include kbq-squircle(var(--kbq-file-upload-size-single-container-border-radius));
|
|
111
112
|
border-width: var(--kbq-file-upload-size-single-container-border-width);
|
|
112
113
|
border-style: dashed;
|
|
113
114
|
|
|
@@ -141,7 +142,7 @@
|
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
.kbq-file-upload__action {
|
|
144
|
-
padding:
|
|
145
|
+
padding: var(--kbq-file-upload-size-single-action-padding);
|
|
145
146
|
}
|
|
146
147
|
|
|
147
148
|
@include _kbq-single-file-upload-theme();
|
package/filter-bar/filters.scss
CHANGED
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
& .kbq-button-wrapper {
|
|
11
11
|
width: 100%;
|
|
12
12
|
}
|
|
13
|
+
|
|
14
|
+
// the button's default slot is an inline text box; `.kbq-filters__filter-name` truncates
|
|
15
|
+
// itself and is measured by `kbq-title`, so it has to stay a block-level flex item
|
|
16
|
+
& .kbq-button-text {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
}
|
|
13
20
|
}
|
|
14
21
|
|
|
15
22
|
> .kbq-button .kbq-icon {
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
height: unset;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
// The button's default slot is
|
|
18
|
-
// (name + value) in there as two shrinkable
|
|
19
|
-
// the same percentage, which wipes out a short name long before a long value becomes unreadable.
|
|
17
|
+
// The button's default slot is an inline text box; a pipe puts its own row of two independently
|
|
18
|
+
// truncated parts (name + value) in there, as two shrinkable tracks: as flex items they would give
|
|
19
|
+
// up the same percentage, which wipes out a short name long before a long value becomes unreadable.
|
|
20
20
|
// Qualified with `.kbq-button` on purpose: the base rule is `.kbq-button .kbq-button-text`, so a
|
|
21
21
|
// two-class selector would only win on source order, which differs between app bundles.
|
|
22
22
|
.kbq-button .kbq-button-text {
|
|
@@ -31,7 +31,9 @@
|
|
|
31
31
|
margin-inline-start: var(--kbq-size-s);
|
|
32
32
|
align-self: center;
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
// The design token is the fallback because `--kbq-icon-fade-contrast-color` is no longer
|
|
35
|
+
// declared on `.kbq-icon`; this selector outranks the themed one, so it has to carry it.
|
|
36
|
+
color: var(--kbq-icon-fade-contrast-color, var(--kbq-icon-contrast-fade));
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
}
|
|
@@ -61,6 +63,11 @@
|
|
|
61
63
|
|
|
62
64
|
gap: var(--kbq-size-s);
|
|
63
65
|
|
|
66
|
+
// No header: the pipe template has no presets to go back to.
|
|
67
|
+
&:first-child {
|
|
68
|
+
padding-block-start: var(--kbq-size-l);
|
|
69
|
+
}
|
|
70
|
+
|
|
64
71
|
& .kbq-form__label {
|
|
65
72
|
padding-inline-start: var(--kbq-size-l);
|
|
66
73
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Declared with `:where()` so every token stays at zero specificity: a consumer overriding one from
|
|
2
|
+
// a plain global class rule wins, and the shape modifiers below still win over the base values
|
|
3
|
+
// because they are declared later.
|
|
4
|
+
:where(.kbq-flag) {
|
|
5
|
+
--kbq-flag-aspect-ratio: 3 / 2;
|
|
6
|
+
--kbq-flag-border-radius: 0;
|
|
7
|
+
|
|
8
|
+
// The faded contrast line resolves to a dark hairline in the light theme and a light one in the
|
|
9
|
+
// dark theme, so the flag stays separated from the background in both.
|
|
10
|
+
--kbq-flag-shadow-color: var(--kbq-line-contrast-fade);
|
|
11
|
+
// Opaque on purpose: a translucent fill would take on the hue of a colored card, a selected
|
|
12
|
+
// option or a toast instead of reading as an absent flag.
|
|
13
|
+
--kbq-flag-empty-background: var(--kbq-background-bg-tertiary);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
:where(.kbq-flag.kbq-flag_square, .kbq-flag.kbq-flag_circle) {
|
|
17
|
+
--kbq-flag-aspect-ratio: 1 / 1;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
:where(.kbq-flag.kbq-flag_circle) {
|
|
21
|
+
--kbq-flag-border-radius: 50%;
|
|
22
|
+
}
|
package/flag/flag.scss
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
// Theme tokens. The faded contrast line resolves to a dark hairline in the light theme and a
|
|
3
|
-
// light one in the dark theme, so the flag stays separated from the background in both.
|
|
4
|
-
--kbq-flag-shadow-color: var(--kbq-line-contrast-fade);
|
|
5
|
-
--kbq-flag-empty-background: var(--kbq-states-background-disabled);
|
|
6
|
-
--kbq-flag-border-radius: 0;
|
|
7
|
-
--kbq-flag-aspect-ratio: 3 / 2;
|
|
1
|
+
@use '../core/styles/common/squircle' as *;
|
|
8
2
|
|
|
3
|
+
.kbq-flag {
|
|
9
4
|
display: inline-block;
|
|
10
5
|
position: relative;
|
|
11
6
|
box-sizing: border-box;
|
|
@@ -15,11 +10,12 @@
|
|
|
15
10
|
aspect-ratio: var(--kbq-flag-aspect-ratio);
|
|
16
11
|
vertical-align: middle;
|
|
17
12
|
overflow: hidden;
|
|
18
|
-
|
|
13
|
+
@include kbq-squircle(var(--kbq-flag-border-radius));
|
|
14
|
+
|
|
15
|
+
// The flag fills the box whether it is projected directly or passed through the `svg` input
|
|
16
|
+
// (the markup may sit inside a wrapper element). The two carriers need different mechanisms.
|
|
19
17
|
|
|
20
|
-
//
|
|
21
|
-
// (the injected svg may sit inside a wrapper element).
|
|
22
|
-
svg,
|
|
18
|
+
// `<img>` is a replaced element, so `object-fit` crops it.
|
|
23
19
|
img {
|
|
24
20
|
display: block;
|
|
25
21
|
width: 100%;
|
|
@@ -27,27 +23,44 @@
|
|
|
27
23
|
object-fit: cover;
|
|
28
24
|
}
|
|
29
25
|
|
|
26
|
+
// An inline `<svg>` is not a replaced element: `object-fit` is dropped on it, and its own
|
|
27
|
+
// `preserveAspectRatio` (`xMidYMid meet`) would letterbox a source whose ratio differs from the
|
|
28
|
+
// shape. Growing it to at least the box in both axes reproduces `cover` — the intrinsic ratio
|
|
29
|
+
// from its `viewBox` keeps it undistorted, and the host clips the overflow.
|
|
30
|
+
svg {
|
|
31
|
+
position: absolute;
|
|
32
|
+
top: 50%;
|
|
33
|
+
left: 50%;
|
|
34
|
+
transform: translate(-50%, -50%);
|
|
35
|
+
width: auto;
|
|
36
|
+
height: auto;
|
|
37
|
+
min-width: 100%;
|
|
38
|
+
min-height: 100%;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// The `svg` input renders into this slot instead of the host element, so it cannot overwrite
|
|
42
|
+
// projected content. It generates no box of its own.
|
|
43
|
+
.kbq-flag__svg {
|
|
44
|
+
display: contents;
|
|
45
|
+
}
|
|
46
|
+
|
|
30
47
|
// Inset hairline drawn on top of the flag, gated by the shadow input.
|
|
31
48
|
&.kbq-flag_shadow-inset::after {
|
|
32
49
|
content: '';
|
|
33
50
|
position: absolute;
|
|
34
51
|
inset: 0;
|
|
35
|
-
|
|
52
|
+
@include kbq-squircle-inherit();
|
|
36
53
|
box-shadow: inset 0 0 0 1px var(--kbq-flag-shadow-color);
|
|
37
54
|
pointer-events: none;
|
|
38
55
|
}
|
|
39
56
|
|
|
40
|
-
&.kbq-flag_square,
|
|
41
|
-
&.kbq-flag_circle {
|
|
42
|
-
--kbq-flag-aspect-ratio: 1 / 1;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
&.kbq-flag_circle {
|
|
46
|
-
border-radius: 50%;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
57
|
// Neutral placeholder when no flag is projected (unknown / invalid country code).
|
|
50
58
|
&.kbq-flag_empty {
|
|
51
59
|
background: var(--kbq-flag-empty-background);
|
|
52
60
|
}
|
|
61
|
+
|
|
62
|
+
// The 50% radius already draws a circle, a squircle would turn it into a rounded square.
|
|
63
|
+
&.kbq-flag_circle {
|
|
64
|
+
corner-shape: round;
|
|
65
|
+
}
|
|
53
66
|
}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
@use './form-field-theme';
|
|
2
|
-
@use './form-field';
|
|
3
2
|
|
|
4
3
|
@mixin kbq-fieldset-theme {
|
|
4
|
+
// Geometry of the hint area lives in `fieldset.scss`, next to the rest of the fieldset layout.
|
|
5
5
|
.kbq-form-field__hint {
|
|
6
6
|
@include form-field-theme.kbq-form-field-hint-theme();
|
|
7
7
|
@include form-field-theme.kbq-form-field-hint-typography();
|
|
8
|
-
|
|
9
|
-
&:empty {
|
|
10
|
-
margin-top: 0;
|
|
11
|
-
}
|
|
12
8
|
}
|
|
13
9
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
@use '../core/styles/common/tokens';
|
|
2
2
|
|
|
3
3
|
@mixin kbq-form-field-hint-theme {
|
|
4
|
-
> .kbq-hint:not(.kbq-
|
|
4
|
+
> .kbq-hint:not(.kbq-contrast-fade, .kbq-success, .kbq-warning, .kbq-error) {
|
|
5
5
|
color: var(--kbq-form-field-hint-text);
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
@mixin kbq-form-field-hint-typography {
|
|
10
|
-
> .kbq-hint:not(.kbq-
|
|
11
|
-
.kbq-hint__text {
|
|
10
|
+
> .kbq-hint:not(.kbq-reactive-password-hint, .kbq-contrast-fade, .kbq-success, .kbq-warning) .kbq-hint__text {
|
|
12
11
|
@include tokens.kbq-typography-level-to-styles-css-variables(typography, text-compact);
|
|
13
12
|
}
|
|
14
13
|
}
|
|
@@ -98,9 +97,7 @@
|
|
|
98
97
|
}
|
|
99
98
|
|
|
100
99
|
// Invalid by control `ErrorStateMatcher`
|
|
101
|
-
&.kbq-form-field_invalid
|
|
102
|
-
// Invalid by `KbqValidateDirective`
|
|
103
|
-
&.kbq-form-field_has-validate-directive.ng-invalid {
|
|
100
|
+
&.kbq-form-field_invalid {
|
|
104
101
|
@include _kbq-form-field-state(states-error);
|
|
105
102
|
}
|
|
106
103
|
|
|
@@ -123,9 +120,7 @@
|
|
|
123
120
|
}
|
|
124
121
|
|
|
125
122
|
// Invalid by control `ErrorStateMatcher`
|
|
126
|
-
&.kbq-form-field_invalid
|
|
127
|
-
// Invalid by `KbqValidateDirective`
|
|
128
|
-
&.kbq-form-field_has-validate-directive.ng-invalid {
|
|
123
|
+
&.kbq-form-field_invalid {
|
|
129
124
|
@include _kbq-form-field-state(states-error);
|
|
130
125
|
|
|
131
126
|
&.cdk-focused .kbq-form-field__container {
|