diff --git a/apps/e2e/pages-storybook-e2e/src/e2e/blocks-tile-dashboard-page.component.cy.ts b/apps/e2e/pages-storybook-e2e/src/e2e/blocks-tile-dashboard-page.component.cy.ts index 2681098797..2744a10047 100644 --- a/apps/e2e/pages-storybook-e2e/src/e2e/blocks-tile-dashboard-page.component.cy.ts +++ b/apps/e2e/pages-storybook-e2e/src/e2e/blocks-tile-dashboard-page.component.cy.ts @@ -24,5 +24,5 @@ describe(`pages-storybook-blocks-tile-dashboard`, () => { }); }); }); - }); + }, true); }); diff --git a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-blocks.component.cy.ts b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-blocks.component.cy.ts index 396b35cb5e..0391851f6d 100644 --- a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-blocks.component.cy.ts +++ b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-blocks.component.cy.ts @@ -51,5 +51,5 @@ describe(`pages-storybook`, () => { }); }); }); - }); + }, true); }); diff --git a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-fit.component.cy.ts b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-fit.component.cy.ts index ddecedd6d3..19d69c9c82 100644 --- a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-fit.component.cy.ts +++ b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-fit.component.cy.ts @@ -23,5 +23,5 @@ describe(`pages-storybook`, () => { }); }); }); - }); + }, true); }); diff --git a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-list.component.cy.ts b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-list.component.cy.ts index 44dffdb499..984c3eae41 100644 --- a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-list.component.cy.ts +++ b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-list.component.cy.ts @@ -23,5 +23,5 @@ describe(`pages-storybook`, () => { }); }); }); - }); + }, true); }); diff --git a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-tabs.component.cy.ts b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-tabs.component.cy.ts index 89ad41f521..aa03fe08b6 100644 --- a/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-tabs.component.cy.ts +++ b/apps/e2e/pages-storybook-e2e/src/e2e/page-layout-tabs.component.cy.ts @@ -23,5 +23,5 @@ describe(`pages-storybook`, () => { }); }); }); - }); + }, true); }); diff --git a/apps/e2e/pages-storybook-e2e/src/e2e/tabs-tile-dashboard-page.component.cy.ts b/apps/e2e/pages-storybook-e2e/src/e2e/tabs-tile-dashboard-page.component.cy.ts index 9c3678e9be..e99a111aa8 100644 --- a/apps/e2e/pages-storybook-e2e/src/e2e/tabs-tile-dashboard-page.component.cy.ts +++ b/apps/e2e/pages-storybook-e2e/src/e2e/tabs-tile-dashboard-page.component.cy.ts @@ -24,5 +24,5 @@ describe(`pages-storybook-tabs-tile-dashboard`, () => { }); }); }); - }); + }, true); }); diff --git a/apps/e2e/pages-storybook/project.json b/apps/e2e/pages-storybook/project.json index eba4a003f8..f455c4458b 100644 --- a/apps/e2e/pages-storybook/project.json +++ b/apps/e2e/pages-storybook/project.json @@ -18,7 +18,8 @@ "styles": [ "apps/e2e/pages-storybook/src/styles.scss", "libs/components/theme/src/lib/styles/sky.scss", - "libs/components/theme/src/lib/styles/themes/modern/styles.scss" + "libs/components/theme/src/lib/styles/themes/modern/styles.scss", + "node_modules/@blackbaud/skyux-design-tokens/scss/blackbaud.css" ], "scripts": [] }, @@ -88,7 +89,8 @@ "compodoc": false, "styles": [ "libs/components/theme/src/lib/styles/sky.scss", - "libs/components/theme/src/lib/styles/themes/modern/styles.scss" + "libs/components/theme/src/lib/styles/themes/modern/styles.scss", + "node_modules/@blackbaud/skyux-design-tokens/scss/blackbaud.css" ] }, "configurations": { @@ -108,7 +110,8 @@ "compodoc": false, "styles": [ "libs/components/theme/src/lib/styles/sky.scss", - "libs/components/theme/src/lib/styles/themes/modern/styles.scss" + "libs/components/theme/src/lib/styles/themes/modern/styles.scss", + "node_modules/@blackbaud/skyux-design-tokens/scss/blackbaud.css" ] }, "configurations": { diff --git a/libs/components/pages/src/lib/modules/link-list/link-list-item.component.scss b/libs/components/pages/src/lib/modules/link-list/link-list-item.component.scss new file mode 100644 index 0000000000..34a4b756f3 --- /dev/null +++ b/libs/components/pages/src/lib/modules/link-list/link-list-item.component.scss @@ -0,0 +1,11 @@ +@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; + +@include compatMixins.sky-default-host-overrides() { + --sky-override-link-item-space-below: var(--sky-margin-stacked-sm); +} + +:host { + display: block; + margin: 0 0 + var(--sky-override-link-item-space-below, var(--sky-space-stacked-s)) 0; +} diff --git a/libs/components/pages/src/lib/modules/link-list/link-list-item.component.ts b/libs/components/pages/src/lib/modules/link-list/link-list-item.component.ts index 3e5fabf38f..a387a42a83 100644 --- a/libs/components/pages/src/lib/modules/link-list/link-list-item.component.ts +++ b/libs/components/pages/src/lib/modules/link-list/link-list-item.component.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { SkyThemeComponentClassDirective } from '@skyux/theme'; /** * A wrapper for each link in a link list. @@ -7,14 +8,10 @@ import { Component } from '@angular/core'; standalone: true, selector: 'sky-link-list-item', template: ``, - styles: ` - :host { - display: block; - margin: 0 0 var(--sky-margin-stacked-sm) 0; - } - `, + styleUrl: './link-list-item.component.scss', host: { '[attr.role]': '"listitem"', }, + hostDirectives: [SkyThemeComponentClassDirective], }) export class SkyLinkListItemComponent {} diff --git a/libs/components/pages/src/lib/modules/link-list/link-list.component.scss b/libs/components/pages/src/lib/modules/link-list/link-list.component.scss index ef3f07f328..175879b477 100644 --- a/libs/components/pages/src/lib/modules/link-list/link-list.component.scss +++ b/libs/components/pages/src/lib/modules/link-list/link-list.component.scss @@ -1,12 +1,24 @@ +@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; + +@include compatMixins.sky-default-overrides('.sky-link-list') { + --sky-override-link-list-space-below: var(--sky-margin-stacked-xl); +} + +@include compatMixins.sky-default-host-overrides() { + --sky-override-link-list-heading-space: var(--sky-margin-stacked-sm); +} + ul.sky-link-list { list-style: none; - margin: 0 0 var(--sky-margin-stacked-xl) 0; + margin: 0 0 + var(--sky-override-link-list-space-below, var(--sky-space-stacked-xl)) 0; padding-left: 0; } h2, li { - margin: 0 0 var(--sky-margin-stacked-sm) 0; + margin: 0 0 + var(--sky-override-link-list-heading-space, var(--sky-space-stacked-s)) 0; } ul.sky-link-list > li:has(> a[hidden]) { diff --git a/libs/components/pages/src/lib/modules/link-list/link-list.component.ts b/libs/components/pages/src/lib/modules/link-list/link-list.component.ts index 6f7a2d8835..7931165f84 100644 --- a/libs/components/pages/src/lib/modules/link-list/link-list.component.ts +++ b/libs/components/pages/src/lib/modules/link-list/link-list.component.ts @@ -2,6 +2,7 @@ import { NgTemplateOutlet } from '@angular/common'; import { Component, computed, contentChildren, input } from '@angular/core'; import { SkyWaitModule } from '@skyux/indicators'; import { SkyAppLinkModule, SkyHrefModule } from '@skyux/router'; +import { SkyThemeComponentClassDirective } from '@skyux/theme'; import { SkyPageLink } from '../action-hub/types/page-link'; import { SkyPageLinksInput } from '../action-hub/types/page-links-input'; @@ -23,6 +24,7 @@ import { SkyLinkListItemComponent } from './link-list-item.component'; SkyHrefModule, SkyWaitModule, ], + hostDirectives: [SkyThemeComponentClassDirective], }) export class SkyLinkListComponent { /** diff --git a/libs/components/pages/src/lib/modules/page-header/page-header-actions.component.scss b/libs/components/pages/src/lib/modules/page-header/page-header-actions.component.scss index e0e710f6c5..425a38e931 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header-actions.component.scss +++ b/libs/components/pages/src/lib/modules/page-header/page-header-actions.component.scss @@ -1,11 +1,32 @@ +@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; + +@include compatMixins.sky-default-overrides('sky-page-header-actions') { + --sky-override-page-header-actions-button-space-bottom: var( + --sky-margin-stacked-sm + ); + --sky-override-page-header-actions-button-space-right: var( + --sky-margin-inline-sm + ); + --sky-override-page-header-actions-space-bottom: calc( + var(--sky-margin-stacked-sm) * -1 + ); + --sky-override-page-header-actions-space-top: var(--sky-margin-stacked-xl); +} + sky-page-header-actions { display: block; &:not(:empty) { - margin-top: var(--sky-margin-stacked-xl); + margin-top: var( + --sky-override-page-header-actions-space-top, + var(--sky-space-stacked-xl) + ); // Negate the bottom margin of the last row of buttons so it doesn't create extra // vertical space between the actions and the page content. - margin-bottom: calc(var(--sky-margin-stacked-sm) * -1); + margin-bottom: var( + --sky-override-page-header-actions-space-bottom, + calc(var(--sky-space-stacked-s) * -1) + ); } > sky-dropdown { @@ -16,13 +37,19 @@ sky-page-header-actions { // inside the dropdown. > :is(.sky-btn, sky-dropdown) { // Vertical space between rows of buttons that have wrapped. - margin-bottom: var(--sky-margin-stacked-sm); + margin-bottom: var( + --sky-override-page-header-actions-button-space-bottom, + var(--sky-space-stacked-s) + ); &:not(:last-child) { // Horizontal space between buttons on the same row. Use margin-right so that // extra horizontal space is not added to the first button that wraps to the // next line. - margin-right: var(--sky-margin-inline-sm); + margin-right: var( + --sky-override-page-header-actions-button-space-right, + var(--sky-space-gap-action_group-m) + ); } } } diff --git a/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.scss b/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.scss index 90413101ac..e6c10bbf3b 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.scss +++ b/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.scss @@ -1,13 +1,22 @@ +@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; + +@include compatMixins.sky-default-host-overrides() { + --sky-override-page-header-alert-space-below: var(--sky-margin-stacked-lg); + --sky-override-page-header-alert-space-between: var(--sky-margin-stacked-lg); +} + :host { - display: block; + display: flex; + flex-direction: column; + row-gap: var( + --sky-override-page-header-alert-space-between, + var(--sky-space-stacked-l) + ); &:not(:empty) { - margin-bottom: var(--sky-margin-stacked-lg); - - ::ng-deep { - sky-alert + sky-alert { - margin-top: var(--sky-margin-stacked-lg); - } - } + margin-bottom: var( + --sky-override-page-header-alert-space-below, + var(--sky-space-stacked-l) + ); } } diff --git a/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.ts b/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.ts index 176f85ece2..5ac7fc3b47 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.ts +++ b/libs/components/pages/src/lib/modules/page-header/page-header-alerts.component.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { SkyThemeComponentClassDirective } from '@skyux/theme'; /** * Displays alerts within the page header and applies spacing between alerts. Appears above the page title. @@ -8,5 +9,6 @@ import { Component } from '@angular/core'; templateUrl: './page-header-alerts.component.html', styleUrls: ['./page-header-alerts.component.scss'], standalone: false, + hostDirectives: [SkyThemeComponentClassDirective], }) export class SkyPageHeaderAlertsComponent {} diff --git a/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.scss b/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.scss index 997da8a0ba..3113f7cbd7 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.scss +++ b/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.scss @@ -1,16 +1,32 @@ @use 'libs/components/theme/src/lib/styles/mixins' as mixins; +@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; + +@include compatMixins.sky-default-host-overrides() { + --sky-override-page-header-avatar-space-above: 5px; + --sky-override-page-header-avatar-space-right-sm: var(--sky-margin-inline-lg); + --sky-override-page-header-avatar-space-right-xs: var(--sky-margin-inline-sm); +} :host { display: block; &:not(:empty) { - padding-top: 5px; - margin-right: var(--sky-margin-inline-sm); + padding-top: var( + --sky-override-page-header-avatar-space-above, + var(--sky-space-stacked-xs) + ); + margin-right: var( + --sky-override-page-header-avatar-space-right-xs, + var(--sky-space-inline-s) + ); } } @include mixins.sky-host-responsive-container-sm-min() { &:not(:empty) { - margin-right: var(--sky-margin-inline-lg); + margin-right: var( + --sky-override-page-header-avatar-space-right-sm, + var(--sky-space-inline-l) + ); } } diff --git a/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.ts b/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.ts index 4a8d742dc6..6d52e6713a 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.ts +++ b/libs/components/pages/src/lib/modules/page-header/page-header-avatar.component.ts @@ -1,6 +1,7 @@ import { Component, inject } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { SkyDefaultInputProvider, SkyMediaQueryService } from '@skyux/core'; +import { SkyThemeComponentClassDirective } from '@skyux/theme'; /** * Displays an avatar within the page header to the left of the page title. @@ -13,6 +14,7 @@ import { SkyDefaultInputProvider, SkyMediaQueryService } from '@skyux/core'; styleUrls: ['./page-header-avatar.component.scss'], providers: [SkyDefaultInputProvider], standalone: false, + hostDirectives: [SkyThemeComponentClassDirective], }) export class SkyPageHeaderAvatarComponent { constructor() { diff --git a/libs/components/pages/src/lib/modules/page-header/page-header-details.component.scss b/libs/components/pages/src/lib/modules/page-header/page-header-details.component.scss index b53c27395d..ead4b2b809 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header-details.component.scss +++ b/libs/components/pages/src/lib/modules/page-header/page-header-details.component.scss @@ -1,7 +1,16 @@ +@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; + +@include compatMixins.sky-default-host-overrides() { + --sky-override-page-header-details-space-above: var(--sky-margin-stacked-sm); +} + :host { display: block; &:not(:empty) { - margin-top: var(--sky-margin-stacked-sm); + margin-top: var( + --sky-override-page-header-details-space-above, + var(--sky-space-stacked-s) + ); } } diff --git a/libs/components/pages/src/lib/modules/page-header/page-header-details.component.ts b/libs/components/pages/src/lib/modules/page-header/page-header-details.component.ts index 53e5189e99..12297a1077 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header-details.component.ts +++ b/libs/components/pages/src/lib/modules/page-header/page-header-details.component.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import { SkyThemeComponentClassDirective } from '@skyux/theme'; /** * Displays additional information in the page header, like record details. @@ -9,5 +10,6 @@ import { Component } from '@angular/core'; templateUrl: './page-header-details.component.html', styleUrls: ['./page-header-details.component.scss'], standalone: false, + hostDirectives: [SkyThemeComponentClassDirective], }) export class SkyPageHeaderDetailsComponent {} diff --git a/libs/components/pages/src/lib/modules/page-header/page-header.component.scss b/libs/components/pages/src/lib/modules/page-header/page-header.component.scss index 7156d67dc5..05b6727d45 100644 --- a/libs/components/pages/src/lib/modules/page-header/page-header.component.scss +++ b/libs/components/pages/src/lib/modules/page-header/page-header.component.scss @@ -1,5 +1,12 @@ -@use 'libs/components/theme/src/lib/styles/mixins' as mixins; @use 'libs/components/theme/src/lib/styles/variables' as *; +@use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; + +@include compatMixins.sky-default-overrides('.sky-page-header') { + --sky-override-page-header-chevron-color: var(--sky-text-color-default); + --sky-override-page-header-chevron-size: 16px; + --sky-override-page-header-hub-spoke-spacing: #{$sky-space-md}; + --sky-override-page-header-parent-color: #{$sky-text-color-action-primary}; +} :host { flex-grow: var(--sky-layout-host-header-flex-grow, 0); @@ -28,12 +35,26 @@ } &-parent-link { - color: $sky-text-color-action-primary; + color: var( + --sky-override-page-header-parent-color, + var(--sky-color-text-action) + ); } &-chevron { - font-size: 16px; - margin: 0 $sky-space-md; + color: var( + --sky-override-page-header-chevron-color, + var(--sky-color-icon-default) + ); + font-size: var( + --sky-override-page-header-chevron-size, + var(--sky-size-icon-s) + ); + margin: 0 + var( + --sky-override-page-header-hub-spoke-spacing, + var(--sky-space-gap-icon-m) + ); } &-chevron, @@ -48,19 +69,3 @@ } } } - -@include mixins.sky-theme-modern() { - .sky-page-header { - &-parent-link { - color: $sky-theme-modern-text-color-action-primary; - } - } -} - -@include mixins.sky-theme-modern-dark() { - .sky-page-header { - &-parent-link { - color: $sky-theme-modern-mode-dark-text-color-action-primary; - } - } -} diff --git a/libs/components/theme/package.json b/libs/components/theme/package.json index 10c5b90a26..196c54077f 100644 --- a/libs/components/theme/package.json +++ b/libs/components/theme/package.json @@ -20,7 +20,7 @@ "@angular/core": "^19.0.5" }, "dependencies": { - "@blackbaud/skyux-design-tokens": "0.0.42", + "@blackbaud/skyux-design-tokens": "0.0.43", "@skyux/icons": "7.10.0", "fontfaceobserver": "2.3.0", "tslib": "^2.8.1" diff --git a/libs/components/theme/src/lib/styles/_layout-host.scss b/libs/components/theme/src/lib/styles/_layout-host.scss index 09a433f366..57e6541929 100644 --- a/libs/components/theme/src/lib/styles/_layout-host.scss +++ b/libs/components/theme/src/lib/styles/_layout-host.scss @@ -3,7 +3,41 @@ @use 'libs/components/theme/src/lib/styles/compat-tokens-mixins' as compatMixins; @include compatMixins.sky-default-overrides('body') { + // BLOCK LAYOUT CUSTOM PROPERTIES + // xs breakpoint + --sky-override-page-content-blocks-spacing-xs: 10px; + + // sm breakpoint + --sky-override-page-header-blocks-spacing-sm: 20px 20px 0 20px; + --sky-override-page-content-blocks-spacing-sm: 20px; + + // FIT AND LIST LAYOUT CUSTOM PROPERTIES + // xs breakpoint + --sky-override-page-content-fit-list-spacing-xs: 0 10px; + + // sm breakpoint + --sky-override-page-header-fit-list-spacing-sm: 20px; + --sky-override-page-content-fit-list-spacing-sm: 0 20px; + + // TABS LAYOUT CUSTOM PROPERTIES + // xs breakpoint --sky-override-tabset-padding-xs-breakpoint: 10px; + + // sm breakpoint + --sky-override-page-header-tabs-spacing-sm: 20px; + --sky-override-page-content-tabs-spacing-sm: 20px; + + // OTHER OVERRIDES + --sky-override-page-content-with-links-spacing-sm: var( + --sky-margin-inline-xl + ); + --sky-override-page-content-with-links-spacing-xs: var( + --sky-margin-stacked-xl + ) + var(--sky-margin-inline-sm); + --sky-override-page-header-avatar-size-space: var(--sky-margin-inline-xl); + --sky-override-page-header-link-rows-space: var(--sky-margin-stacked-xl); + --sky-override-page-header-spacing-xs: 20px 10px; } // xs breakpoint @@ -13,8 +47,13 @@ &-tabs { display: block; - --sky-layout-host-links-spacing: var(--sky-margin-stacked-xl) - var(--sky-margin-inline-sm); + --sky-layout-host-links-spacing: var( + --sky-override-page-content-with-links-spacing-xs, + var(--sky-space-inset-letterbox-1_3-top-m) + var(--sky-space-inset-letterbox-1_3-right-m) + var(--sky-space-inset-letterbox-1_3-bottom-m) + var(--sky-space-inset-letterbox-1_3-left-m) + ); .sky-margin-stacked-xl:empty { margin-bottom: 0; @@ -46,7 +85,10 @@ &-tabs { &:has(> sky-page-content):has(> sky-page-links) { > sky-page-content { - margin-right: var(--sky-margin-inline-xl); + margin-right: var( + --sky-override-page-content-with-links-spacing-sm, + var(--sky-space-inline-xl) + ); } } } @@ -72,23 +114,38 @@ &-list, &-fit, &-tabs { - --sky-layout-host-header-spacing: 20px 10px; + --sky-layout-host-header-spacing: var( + --sky-override-page-header-spacing-xs, + var(--sky-space-inset-letterbox-1_2-top-m) + var(--sky-space-inset-letterbox-1_2-right-m) + var(--sky-space-inset-letterbox-1_2-bottom-m) + var(--sky-space-inset-letterbox-1_2-left-m) + ); } &-blocks { - --sky-layout-host-content-spacing: 10px; + --sky-layout-host-content-spacing: var( + --sky-override-page-content-blocks-spacing-xs, + var(--sky-space-inset-balanced-s) + ); } &-fit, &-list { - --sky-layout-host-content-spacing: 0 10px; + --sky-layout-host-content-spacing: var( + --sky-override-page-content-fit-list-spacing-xs, + var(--sky-space-inset-horizontal-top-s) + var(--sky-space-inset-horizontal-right-s) + var(--sky-space-inset-horizontal-bottom-s) + var(--sky-space-inset-horizontal-left-s) + ); } &-tabs { --sky-layout-host-content-spacing: 0; --sky-layout-host-tab-content-spacing: var( --sky-override-tabset-padding-xs-breakpoint, - var(--sky-space-inset-tabs-s) + var(--sky-space-inset-letterbox-1_2-left-m) ); } @@ -103,7 +160,10 @@ &-list, &-tabs { &:has(> sky-page-content):has(> sky-page-links) { - --sky-layout-host-links-spacing: var(--sky-margin-inline-xl); + --sky-layout-host-links-spacing: var( + --sky-override-page-content-with-links-spacing-sm, + var(--sky-space-inline-xl) + ); > sky-page-header, .sky-page-header, @@ -144,15 +204,37 @@ 'header-avatar header-content links' 'content content links'; grid-template-rows: - minmax(var(--sky-margin-stacked-xl), min-content) - minmax(var(--sky-margin-stacked-xl), min-content) - minmax(var(--sky-margin-stacked-xl), min-content) + minmax( + var( + --sky-override-page-header-link-rows-space, + var(--sky-space-stacked-xl) + ), + min-content + ) + minmax( + var( + --sky-override-page-header-link-rows-space, + var(--sky-space-stacked-xl) + ), + min-content + ) + minmax( + var( + --sky-override-page-header-link-rows-space, + var(--sky-space-stacked-xl) + ), + min-content + ) auto; grid-template-columns: 0 75% 25%; &:has(sky-page-header-avatar:not(:empty)) { --sky-layout-host-header-avatar-size: calc( - 120px + var(--sky-margin-inline-xl) + 120px + + var( + --sky-override-page-header-avatar-size-space, + var(--sky-space-inline-xl) + ) ); grid-template-columns: var(--sky-layout-host-header-avatar-size) @@ -173,45 +255,47 @@ .sky-layout-host { &-blocks { - --sky-layout-host-header-spacing: 20px 20px 0 20px; - --sky-layout-host-content-spacing: 20px; + --sky-layout-host-header-spacing: var( + --sky-override-page-header-blocks-spacing-sm, + var(--sky-space-inset-bottomless-top-xl) + var(--sky-space-inset-bottomless-right-xl) + var(--sky-space-inset-bottomless-bottom-xl) + var(--sky-space-inset-bottomless-left-xl) + ); + --sky-layout-host-content-spacing: var( + --sky-override-page-content-blocks-spacing-sm, + var(--sky-space-inset-balanced-xl) + ); } &-fit, &-list { - --sky-layout-host-header-spacing: 20px; - --sky-layout-host-content-spacing: 0 20px; + --sky-layout-host-header-spacing: var( + --sky-override-page-header-fit-list-spacing-sm, + var(--sky-space-inset-sunk-top-l) var(--sky-space-inset-sunk-right-l) + var(--sky-space-inset-sunk-bottom-l) + var(--sky-space-inset-sunk-left-l) + ); + --sky-layout-host-content-spacing: var( + --sky-override-page-content-fit-list-spacing-sm, + var(--sky-space-inset-horizontal-top-xl) + var(--sky-space-inset-horizontal-right-xl) + var(--sky-space-inset-horizontal-bottom-xl) + var(--sky-space-inset-horizontal-left-xl) + ); } &-tabs { - --sky-layout-host-header-spacing: 20px; - --sky-layout-host-tab-content-spacing: 20px; - } - } -} - -.sky-theme-modern { - @include mixins.sky-host-responsive-container-sm-min(false) { - .sky-layout-host { - &-blocks { - --sky-layout-host-header-spacing: 30px 30px 0 30px; - --sky-layout-host-content-spacing: 30px; - } - - &-fit, - &-list, - &-tabs { - --sky-layout-host-header-spacing: 30px 30px 20px 30px; - } - - &-fit, - &-list { - --sky-layout-host-content-spacing: 0 30px; - } - - &-tabs { - --sky-layout-host-tab-content-spacing: var(--sky-space-inset-tabs-xl); - } + --sky-layout-host-header-spacing: var( + --sky-override-page-header-tabs-spacing-sm, + var(--sky-space-inset-sunk-top-l) var(--sky-space-inset-sunk-right-l) + var(--sky-space-inset-sunk-bottom-l) + var(--sky-space-inset-sunk-left-l) + ); + --sky-layout-host-tab-content-spacing: var( + --sky-override-page-content-tabs-spacing-sm, + var(--sky-space-inset-sunk-left-l) + ); } } } diff --git a/package-lock.json b/package-lock.json index afac169249..63ac36219d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@angular/platform-browser-dynamic": "19.0.5", "@angular/router": "19.0.5", "@blackbaud/angular-tree-component": "1.0.0", - "@blackbaud/skyux-design-tokens": "0.0.42", + "@blackbaud/skyux-design-tokens": "0.0.43", "@nx/angular": "20.3.0", "@skyux/icons": "7.10.0", "@storybook/addon-interactions": "8.4.7", @@ -2855,9 +2855,9 @@ } }, "node_modules/@blackbaud/skyux-design-tokens": { - "version": "0.0.42", - "resolved": "https://registry.npmjs.org/@blackbaud/skyux-design-tokens/-/skyux-design-tokens-0.0.42.tgz", - "integrity": "sha512-+fJMP2DkFwQKnLytHE8gy0nwM/SYmgEFIT/QC5dSVRbH20hURYKorvcG/jCapAm4EiR1bKcPjRHNW+1lW3TuMQ==", + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/@blackbaud/skyux-design-tokens/-/skyux-design-tokens-0.0.43.tgz", + "integrity": "sha512-fXKiYvt9NurIjX/4JoX56Qnsb8iFJwpJzDIGBE6ObUNxM3DAQLhZt2O0mGm6vVL64PRJ4TmL0xjWswtsuP0yhw==", "engines": { "node": ">= 4.2.1", "npm": ">= 3" diff --git a/package.json b/package.json index a1b5cd883d..6448af9cb6 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "@angular/platform-browser-dynamic": "19.0.5", "@angular/router": "19.0.5", "@blackbaud/angular-tree-component": "1.0.0", - "@blackbaud/skyux-design-tokens": "0.0.42", + "@blackbaud/skyux-design-tokens": "0.0.43", "@nx/angular": "20.3.0", "@skyux/icons": "7.10.0", "@storybook/addon-interactions": "8.4.7",