@skyux/theme 12.29.0 → 12.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/css/sky.css
CHANGED
|
@@ -342,6 +342,7 @@ textarea {
|
|
|
342
342
|
:root {
|
|
343
343
|
/* color */
|
|
344
344
|
--sky-background-color-page-default: #ffffff;
|
|
345
|
+
--sky-background-color-container-default: #ffffff;
|
|
345
346
|
--sky-background-color-neutral-light: #eeeeef;
|
|
346
347
|
--sky-background-color-primary-dark: #0974a1;
|
|
347
348
|
--sky-background-color-disabled: #cdcfd2;
|
|
@@ -1206,10 +1207,6 @@ body:not(.sky-theme-modern) {
|
|
|
1206
1207
|
|
|
1207
1208
|
@media (min-width: 768px) {
|
|
1208
1209
|
.sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links), .sky-layout-host-list:has(> sky-page-content):has(> sky-page-links), .sky-layout-host-tabs:has(> sky-page-content):has(> sky-page-links) {
|
|
1209
|
-
--sky-layout-host-links-spacing: var(
|
|
1210
|
-
--sky-override-page-content-with-links-spacing-sm,
|
|
1211
|
-
var(--sky-space-inline-xl)
|
|
1212
|
-
);
|
|
1213
1210
|
grid-template: "header-alerts header-alerts header-alerts" "header-avatar header-text header-text" "header-avatar header-content links" "content content links";
|
|
1214
1211
|
grid-template-rows: 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;
|
|
1215
1212
|
grid-template-columns: 0 75% 25%;
|
|
@@ -1280,6 +1277,15 @@ body:not(.sky-theme-modern) {
|
|
|
1280
1277
|
var(--sky-comp-page-content-blocks-space-inset-sm-left)
|
|
1281
1278
|
);
|
|
1282
1279
|
}
|
|
1280
|
+
.sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links) {
|
|
1281
|
+
--sky-layout-host-links-spacing: var(
|
|
1282
|
+
--sky-override-page-content-with-links-spacing-sm,
|
|
1283
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-top)
|
|
1284
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-right)
|
|
1285
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-bottom)
|
|
1286
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-left)
|
|
1287
|
+
);
|
|
1288
|
+
}
|
|
1283
1289
|
.sky-layout-host-fit {
|
|
1284
1290
|
--sky-layout-host-header-spacing: var(
|
|
1285
1291
|
--sky-override-page-header-fit-list-spacing-sm,
|
|
@@ -1312,6 +1318,15 @@ body:not(.sky-theme-modern) {
|
|
|
1312
1318
|
var(--sky-comp-page-content-list-space-inset-sm-left)
|
|
1313
1319
|
);
|
|
1314
1320
|
}
|
|
1321
|
+
.sky-layout-host-list:has(> sky-page-content):has(> sky-page-links) {
|
|
1322
|
+
--sky-layout-host-links-spacing: var(
|
|
1323
|
+
--sky-override-page-content-with-links-spacing-sm,
|
|
1324
|
+
var(--sky-comp-page-links-list-space-inset-sm-top)
|
|
1325
|
+
var(--sky-comp-page-links-list-space-inset-sm-right)
|
|
1326
|
+
var(--sky-comp-page-links-list-space-inset-sm-bottom)
|
|
1327
|
+
var(--sky-comp-page-links-list-space-inset-sm-left)
|
|
1328
|
+
);
|
|
1329
|
+
}
|
|
1315
1330
|
.sky-layout-host-tabs {
|
|
1316
1331
|
--sky-layout-host-header-spacing: var(
|
|
1317
1332
|
--sky-override-page-header-tabs-spacing-sm,
|
|
@@ -1325,6 +1340,15 @@ body:not(.sky-theme-modern) {
|
|
|
1325
1340
|
var(--sky-comp-page-tabset-tabs-space-inset-sm-left)
|
|
1326
1341
|
);
|
|
1327
1342
|
}
|
|
1343
|
+
.sky-layout-host-tabs:has(> sky-page-content):has(> sky-page-links) {
|
|
1344
|
+
--sky-layout-host-links-spacing: var(
|
|
1345
|
+
--sky-override-page-content-with-links-spacing-sm,
|
|
1346
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-top)
|
|
1347
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-right)
|
|
1348
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-bottom)
|
|
1349
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-left)
|
|
1350
|
+
);
|
|
1351
|
+
}
|
|
1328
1352
|
}
|
|
1329
1353
|
.sky-responsive-container-sm .sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links), .sky-responsive-container-sm .sky-layout-host-list:has(> sky-page-content):has(> sky-page-links), .sky-responsive-container-sm .sky-layout-host-tabs:has(> sky-page-content):has(> sky-page-links),
|
|
1330
1354
|
.sky-responsive-container-md .sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links),
|
|
@@ -1333,10 +1357,6 @@ body:not(.sky-theme-modern) {
|
|
|
1333
1357
|
.sky-responsive-container-lg .sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links),
|
|
1334
1358
|
.sky-responsive-container-lg .sky-layout-host-list:has(> sky-page-content):has(> sky-page-links),
|
|
1335
1359
|
.sky-responsive-container-lg .sky-layout-host-tabs:has(> sky-page-content):has(> sky-page-links) {
|
|
1336
|
-
--sky-layout-host-links-spacing: var(
|
|
1337
|
-
--sky-override-page-content-with-links-spacing-sm,
|
|
1338
|
-
var(--sky-space-inline-xl)
|
|
1339
|
-
);
|
|
1340
1360
|
grid-template: "header-alerts header-alerts header-alerts" "header-avatar header-text header-text" "header-avatar header-content links" "content content links";
|
|
1341
1361
|
grid-template-rows: 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;
|
|
1342
1362
|
grid-template-columns: 0 75% 25%;
|
|
@@ -1475,6 +1495,17 @@ body:not(.sky-theme-modern) {
|
|
|
1475
1495
|
var(--sky-comp-page-content-blocks-space-inset-sm-left)
|
|
1476
1496
|
);
|
|
1477
1497
|
}
|
|
1498
|
+
.sky-responsive-container-sm .sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links),
|
|
1499
|
+
.sky-responsive-container-md .sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links),
|
|
1500
|
+
.sky-responsive-container-lg .sky-layout-host-blocks:has(> sky-page-content):has(> sky-page-links) {
|
|
1501
|
+
--sky-layout-host-links-spacing: var(
|
|
1502
|
+
--sky-override-page-content-with-links-spacing-sm,
|
|
1503
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-top)
|
|
1504
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-right)
|
|
1505
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-bottom)
|
|
1506
|
+
var(--sky-comp-page-links-blocks-space-inset-sm-left)
|
|
1507
|
+
);
|
|
1508
|
+
}
|
|
1478
1509
|
.sky-responsive-container-sm .sky-layout-host-fit,
|
|
1479
1510
|
.sky-responsive-container-md .sky-layout-host-fit,
|
|
1480
1511
|
.sky-responsive-container-lg .sky-layout-host-fit {
|
|
@@ -1511,6 +1542,17 @@ body:not(.sky-theme-modern) {
|
|
|
1511
1542
|
var(--sky-comp-page-content-list-space-inset-sm-left)
|
|
1512
1543
|
);
|
|
1513
1544
|
}
|
|
1545
|
+
.sky-responsive-container-sm .sky-layout-host-list:has(> sky-page-content):has(> sky-page-links),
|
|
1546
|
+
.sky-responsive-container-md .sky-layout-host-list:has(> sky-page-content):has(> sky-page-links),
|
|
1547
|
+
.sky-responsive-container-lg .sky-layout-host-list:has(> sky-page-content):has(> sky-page-links) {
|
|
1548
|
+
--sky-layout-host-links-spacing: var(
|
|
1549
|
+
--sky-override-page-content-with-links-spacing-sm,
|
|
1550
|
+
var(--sky-comp-page-links-list-space-inset-sm-top)
|
|
1551
|
+
var(--sky-comp-page-links-list-space-inset-sm-right)
|
|
1552
|
+
var(--sky-comp-page-links-list-space-inset-sm-bottom)
|
|
1553
|
+
var(--sky-comp-page-links-list-space-inset-sm-left)
|
|
1554
|
+
);
|
|
1555
|
+
}
|
|
1514
1556
|
.sky-responsive-container-sm .sky-layout-host-tabs,
|
|
1515
1557
|
.sky-responsive-container-md .sky-layout-host-tabs,
|
|
1516
1558
|
.sky-responsive-container-lg .sky-layout-host-tabs {
|
|
@@ -1526,6 +1568,17 @@ body:not(.sky-theme-modern) {
|
|
|
1526
1568
|
var(--sky-comp-page-tabset-tabs-space-inset-sm-left)
|
|
1527
1569
|
);
|
|
1528
1570
|
}
|
|
1571
|
+
.sky-responsive-container-sm .sky-layout-host-tabs:has(> sky-page-content):has(> sky-page-links),
|
|
1572
|
+
.sky-responsive-container-md .sky-layout-host-tabs:has(> sky-page-content):has(> sky-page-links),
|
|
1573
|
+
.sky-responsive-container-lg .sky-layout-host-tabs:has(> sky-page-content):has(> sky-page-links) {
|
|
1574
|
+
--sky-layout-host-links-spacing: var(
|
|
1575
|
+
--sky-override-page-content-with-links-spacing-sm,
|
|
1576
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-top)
|
|
1577
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-right)
|
|
1578
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-bottom)
|
|
1579
|
+
var(--sky-comp-page-links-tabs-space-inset-sm-left)
|
|
1580
|
+
);
|
|
1581
|
+
}
|
|
1529
1582
|
|
|
1530
1583
|
.sky-modal-body-open {
|
|
1531
1584
|
height: 100%;
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
--bb-font-weight-light: 300;
|
|
152
152
|
--bb-font-weight-regular: 400;
|
|
153
153
|
--bb-font-weight-semibold: 600;
|
|
154
|
-
--bb-image-logo-primary-src: url("https://sky.blackbaudcdn.net/static/skyux-design-tokens/2.0.0-alpha.
|
|
154
|
+
--bb-image-logo-primary-src: url("https://sky.blackbaudcdn.net/static/skyux-design-tokens/2.0.0-alpha.10/assets/images/bb-logo.png");
|
|
155
155
|
--bb-letter_spacing-normal: normal;
|
|
156
156
|
--bb-letter_spacing-wider: 0.16px;
|
|
157
157
|
--bb-line_height-300: calc(18/13);
|
|
@@ -309,6 +309,7 @@
|
|
|
309
309
|
--sky-color-background-tab-focus: var(--bb-color-transparent);
|
|
310
310
|
--sky-color-background-tab-hover: var(--bb-color-transparent);
|
|
311
311
|
--sky-color-background-tab-selected: var(--bb-color-transparent);
|
|
312
|
+
--sky-color-background-tab-wizard-disabled: var(--bb-color-transparent);
|
|
312
313
|
--sky-color-background-text_highlight: var(--bb-color-yellow-800);
|
|
313
314
|
--sky-color-background-thumb-base: var(--bb-color-white);
|
|
314
315
|
--sky-color-background-thumb-disabled: var(--bb-color-gray-600);
|
|
@@ -378,6 +379,7 @@
|
|
|
378
379
|
--sky-color-border-tab-disabled: var(--bb-color-gray-800);
|
|
379
380
|
--sky-color-border-tab-focus: var(--bb-color-sky-600);
|
|
380
381
|
--sky-color-border-tab-hover: var(--bb-color-sky-600);
|
|
382
|
+
--sky-color-border-tab-wizard-disabled: var(--bb-color-transparent);
|
|
381
383
|
--sky-color-border-text_highlight: var(--bb-color-yellow-600);
|
|
382
384
|
--sky-color-border-warning: var(--bb-color-yellow-400);
|
|
383
385
|
--sky-color-icon-action: var(--bb-color-sky-600);
|
|
@@ -475,6 +477,7 @@
|
|
|
475
477
|
--sky-color-background-tab-focus: var(--bb-color-transparent);
|
|
476
478
|
--sky-color-background-tab-hover: var(--bb-color-transparent);
|
|
477
479
|
--sky-color-background-tab-selected: var(--bb-color-transparent);
|
|
480
|
+
--sky-color-background-tab-wizard-disabled: var(--bb-color-transparent);
|
|
478
481
|
--sky-color-background-text_highlight: var(--bb-color-yellow-400);
|
|
479
482
|
--sky-color-background-thumb-base: var(--bb-color-white);
|
|
480
483
|
--sky-color-background-thumb-disabled: var(--bb-color-gray-25);
|
|
@@ -543,6 +546,7 @@
|
|
|
543
546
|
--sky-color-border-tab-disabled: var(--bb-color-gray-200);
|
|
544
547
|
--sky-color-border-tab-focus: var(--bb-color-blue-600);
|
|
545
548
|
--sky-color-border-tab-hover: var(--bb-color-blue-600);
|
|
549
|
+
--sky-color-border-tab-wizard-disabled: var(--bb-color-transparent);
|
|
546
550
|
--sky-color-border-text_highlight: var(--bb-color-yellow-800);
|
|
547
551
|
--sky-color-border-warning: var(--bb-color-yellow-600);
|
|
548
552
|
--sky-color-category-blue: var(--bb-color-sky-300);
|
|
@@ -778,6 +782,10 @@
|
|
|
778
782
|
--sky-comp-flyout-header-space-inset-left: var(--bb-size-fluid-50);
|
|
779
783
|
--sky-comp-flyout-header-space-inset-right: var(--bb-size-fluid-50);
|
|
780
784
|
--sky-comp-flyout-header-space-inset-top: var(--bb-size-fluid-75);
|
|
785
|
+
--sky-comp-grid-cell-space-inset-bottom: var(--bb-size-fluid-75);
|
|
786
|
+
--sky-comp-grid-cell-space-inset-left: var(--bb-size-fluid-50);
|
|
787
|
+
--sky-comp-grid-cell-space-inset-right: var(--bb-size-fluid-50);
|
|
788
|
+
--sky-comp-grid-cell-space-inset-top: var(--bb-size-fluid-75);
|
|
781
789
|
--sky-comp-help_inline-space-inset-bottom: var(--bb-size-fluid-6);
|
|
782
790
|
--sky-comp-help_inline-space-inset-left: var(--bb-size-fluid-25);
|
|
783
791
|
--sky-comp-help_inline-space-inset-right: var(--bb-size-fluid-25);
|
|
@@ -1139,22 +1147,6 @@
|
|
|
1139
1147
|
--sky-font-style-heading-4: var(--bb-font-style-semibold);
|
|
1140
1148
|
--sky-font-style-heading-5: var(--bb-font-style-semibold);
|
|
1141
1149
|
--sky-font-style-input-label: var(--bb-font-style-regular);
|
|
1142
|
-
--sky-font-weight-body-l: var(--bb-font-weight-regular);
|
|
1143
|
-
--sky-font-weight-body-m: var(--bb-font-weight-regular);
|
|
1144
|
-
--sky-font-weight-body-s: var(--bb-font-weight-regular);
|
|
1145
|
-
--sky-font-weight-display-1: var(--bb-font-weight-semibold);
|
|
1146
|
-
--sky-font-weight-display-2: var(--bb-font-weight-semibold);
|
|
1147
|
-
--sky-font-weight-display-3: var(--bb-font-weight-semibold);
|
|
1148
|
-
--sky-font-weight-display-4: var(--bb-font-weight-semibold);
|
|
1149
|
-
--sky-font-weight-emphasized: var(--bb-font-weight-semibold);
|
|
1150
|
-
--sky-font-weight-heading-1: var(--bb-font-weight-regular);
|
|
1151
|
-
--sky-font-weight-heading-2: var(--bb-font-weight-semibold);
|
|
1152
|
-
--sky-font-weight-heading-3: var(--bb-font-weight-semibold);
|
|
1153
|
-
--sky-font-weight-heading-4: var(--bb-font-weight-semibold);
|
|
1154
|
-
--sky-font-weight-heading-5: var(--bb-font-weight-semibold);
|
|
1155
|
-
--sky-font-weight-hint-m: var(--bb-font-weight-regular);
|
|
1156
|
-
--sky-font-weight-hint-s: var(--bb-font-weight-regular);
|
|
1157
|
-
--sky-font-weight-input-label: var(--bb-font-weight-regular);
|
|
1158
1150
|
--sky-size-avatar-l: var(--bb-size-fluid-550);
|
|
1159
1151
|
--sky-size-avatar-m: var(--bb-size-fluid-350);
|
|
1160
1152
|
--sky-size-avatar-s: var(--bb-size-fluid-200);
|
|
@@ -1243,10 +1235,6 @@
|
|
|
1243
1235
|
--sky-space-inset-horizontal-top-m: var(--bb-size-0);
|
|
1244
1236
|
--sky-space-inset-horizontal-top-s: var(--bb-size-0);
|
|
1245
1237
|
--sky-space-inset-horizontal-top-xl: var(--bb-size-0);
|
|
1246
|
-
--sky-space-inset-letterbox-2_3-bottom-m: var(--bb-size-fluid-75);
|
|
1247
|
-
--sky-space-inset-letterbox-2_3-left-m: var(--bb-size-fluid-50);
|
|
1248
|
-
--sky-space-inset-letterbox-2_3-right-m: var(--bb-size-fluid-50);
|
|
1249
|
-
--sky-space-inset-letterbox-2_3-top-m: var(--bb-size-fluid-75);
|
|
1250
1238
|
--sky-space-inset-thumb: var(--bb-size-fixed-6);
|
|
1251
1239
|
--sky-space-inset-thumbnail_matte-l: var(--bb-size-fluid-25);
|
|
1252
1240
|
--sky-space-inset-thumbnail_matte-m: var(--bb-size-fluid-18);
|
|
@@ -1374,7 +1362,7 @@
|
|
|
1374
1362
|
--modern-font-weight-light: 300;
|
|
1375
1363
|
--modern-font-weight-regular: 400;
|
|
1376
1364
|
--modern-font-weight-semibold: 600;
|
|
1377
|
-
--modern-image-logo-primary-src: url("https://sky.blackbaudcdn.net/static/skyux-design-tokens/2.0.0-alpha.
|
|
1365
|
+
--modern-image-logo-primary-src: url("https://sky.blackbaudcdn.net/static/skyux-design-tokens/2.0.0-alpha.10/assets/images/bb-logo.png");
|
|
1378
1366
|
--modern-letter_spacing-normal: normal;
|
|
1379
1367
|
--modern-line_height-110: 1.1;
|
|
1380
1368
|
--modern-line_height-115: 1.15;
|
|
@@ -1503,6 +1491,7 @@
|
|
|
1503
1491
|
--sky-color-background-tab-focus: var(--modern-color-transparent);
|
|
1504
1492
|
--sky-color-background-tab-hover: var(--modern-color-transparent);
|
|
1505
1493
|
--sky-color-background-tab-selected: var(--modern-color-transparent);
|
|
1494
|
+
--sky-color-background-tab-wizard-disabled: var(--modern-color-transparent);
|
|
1506
1495
|
--sky-color-background-text_highlight: var(--modern-color-yellow-40);
|
|
1507
1496
|
--sky-color-background-thumb-base: var(--modern-color-white);
|
|
1508
1497
|
--sky-color-background-thumb-disabled: var(--modern-color-gray-07);
|
|
@@ -1571,6 +1560,7 @@
|
|
|
1571
1560
|
--sky-color-border-tab-disabled: var(--modern-color-transparent);
|
|
1572
1561
|
--sky-color-border-tab-focus: var(--modern-color-blue-74);
|
|
1573
1562
|
--sky-color-border-tab-hover: var(--modern-color-blue-50);
|
|
1563
|
+
--sky-color-border-tab-wizard-disabled: var(--modern-color-transparent);
|
|
1574
1564
|
--sky-color-border-text_highlight: var(--modern-color-yellow-80);
|
|
1575
1565
|
--sky-color-border-warning: var(--modern-color-yellow-50);
|
|
1576
1566
|
--sky-color-category-blue: var(--modern-color-category-sky_blue-40);
|
|
@@ -1806,6 +1796,10 @@
|
|
|
1806
1796
|
--sky-comp-flyout-header-space-inset-left: var(--modern-space-s);
|
|
1807
1797
|
--sky-comp-flyout-header-space-inset-right: var(--modern-space-s);
|
|
1808
1798
|
--sky-comp-flyout-header-space-inset-top: var(--modern-space-md);
|
|
1799
|
+
--sky-comp-grid-cell-space-inset-bottom: var(--modern-space-md);
|
|
1800
|
+
--sky-comp-grid-cell-space-inset-left: var(--modern-space-s);
|
|
1801
|
+
--sky-comp-grid-cell-space-inset-right: var(--modern-space-s);
|
|
1802
|
+
--sky-comp-grid-cell-space-inset-top: var(--modern-space-md);
|
|
1809
1803
|
--sky-comp-help_inline-space-inset-bottom: var(--modern-size-1);
|
|
1810
1804
|
--sky-comp-help_inline-space-inset-left: var(--modern-size-5);
|
|
1811
1805
|
--sky-comp-help_inline-space-inset-right: var(--modern-size-5);
|
|
@@ -2167,22 +2161,6 @@
|
|
|
2167
2161
|
--sky-font-style-heading-4: var(--modern-font-style-semibold);
|
|
2168
2162
|
--sky-font-style-heading-5: var(--modern-font-style-semibold);
|
|
2169
2163
|
--sky-font-style-input-label: var(--modern-font-style-regular);
|
|
2170
|
-
--sky-font-weight-body-l: var(--modern-font-weight-light);
|
|
2171
|
-
--sky-font-weight-body-m: var(--modern-font-weight-regular);
|
|
2172
|
-
--sky-font-weight-body-s: var(--modern-font-weight-regular);
|
|
2173
|
-
--sky-font-weight-display-1: var(--modern-font-weight-regular);
|
|
2174
|
-
--sky-font-weight-display-2: var(--modern-font-weight-regular);
|
|
2175
|
-
--sky-font-weight-display-3: var(--modern-font-weight-regular);
|
|
2176
|
-
--sky-font-weight-display-4: var(--modern-font-weight-bold);
|
|
2177
|
-
--sky-font-weight-emphasized: var(--modern-font-weight-bold);
|
|
2178
|
-
--sky-font-weight-heading-1: var(--modern-font-weight-light);
|
|
2179
|
-
--sky-font-weight-heading-2: var(--modern-font-weight-regular);
|
|
2180
|
-
--sky-font-weight-heading-3: var(--modern-font-weight-regular);
|
|
2181
|
-
--sky-font-weight-heading-4: var(--modern-font-weight-semibold);
|
|
2182
|
-
--sky-font-weight-heading-5: var(--modern-font-weight-semibold);
|
|
2183
|
-
--sky-font-weight-hint-m: var(--modern-font-weight-regular);
|
|
2184
|
-
--sky-font-weight-hint-s: var(--modern-font-weight-regular);
|
|
2185
|
-
--sky-font-weight-input-label: var(--modern-font-weight-regular);
|
|
2186
2164
|
--sky-size-avatar-l: var(--modern-size-100);
|
|
2187
2165
|
--sky-size-avatar-m: var(--modern-size-65);
|
|
2188
2166
|
--sky-size-avatar-s: var(--modern-size-32);
|
|
@@ -2271,10 +2249,6 @@
|
|
|
2271
2249
|
--sky-space-inset-horizontal-top-m: var(--modern-size-0);
|
|
2272
2250
|
--sky-space-inset-horizontal-top-s: var(--modern-size-0);
|
|
2273
2251
|
--sky-space-inset-horizontal-top-xl: var(--modern-size-0);
|
|
2274
|
-
--sky-space-inset-letterbox-2_3-bottom-m: var(--modern-space-md);
|
|
2275
|
-
--sky-space-inset-letterbox-2_3-left-m: var(--modern-space-s);
|
|
2276
|
-
--sky-space-inset-letterbox-2_3-right-m: var(--modern-space-s);
|
|
2277
|
-
--sky-space-inset-letterbox-2_3-top-m: var(--modern-space-md);
|
|
2278
2252
|
--sky-space-inset-thumb: var(--modern-size-1);
|
|
2279
2253
|
--sky-space-inset-thumbnail_matte-l: var(--modern-size-5);
|
|
2280
2254
|
--sky-space-inset-thumbnail_matte-m: var(--modern-size-3);
|
|
@@ -3003,7 +2977,7 @@
|
|
|
3003
2977
|
border-top-right-radius: var(--sky-override-tab-button-radius, var(--sky-border-radius-s));
|
|
3004
2978
|
color: var(--sky-color-text-deemphasized);
|
|
3005
2979
|
font-size: var(--sky-font-size-body-m);
|
|
3006
|
-
font-weight: var(--sky-font-
|
|
2980
|
+
font-weight: var(--sky-font-style-body-m);
|
|
3007
2981
|
line-height: var(--sky-override-tab-line-height, var(--sky-font-line_height-body-m));
|
|
3008
2982
|
padding: var(--sky-comp-tab-horizontal-space-inset-top) var(--sky-comp-tab-horizontal-space-inset-right) var(--sky-comp-tab-horizontal-space-inset-bottom) var(--sky-comp-tab-horizontal-space-inset-left);
|
|
3009
2983
|
transition: box-shadow 150ms;
|
|
@@ -3105,8 +3079,8 @@
|
|
|
3105
3079
|
color: var(--sky-color-text-default);
|
|
3106
3080
|
border-bottom: none;
|
|
3107
3081
|
border-radius: 0 var(--sky-border-radius-s) var(--sky-border-radius-s) 0;
|
|
3108
|
-
border-left: var(--sky-override-selected-dropdown-item-border-width, var(--sky-border-width-selected-
|
|
3109
|
-
padding: var(--sky-comp-tab-horizontal-space-inset-top) var(--sky-comp-tab-horizontal-space-inset-right) var(--sky-comp-tab-horizontal-space-inset-bottom) calc(var(--sky-comp-tab-horizontal-space-inset-left) - var(--sky-override-selected-dropdown-item-border-width, var(--sky-border-width-selected-
|
|
3082
|
+
border-left: var(--sky-override-selected-dropdown-item-border-width, var(--sky-border-width-selected-m)) var(--sky-border-style-accent) var(--sky-color-border-selected);
|
|
3083
|
+
padding: var(--sky-comp-tab-horizontal-space-inset-top) var(--sky-comp-tab-horizontal-space-inset-right) var(--sky-comp-tab-horizontal-space-inset-bottom) calc(var(--sky-comp-tab-horizontal-space-inset-left) - var(--sky-override-selected-dropdown-item-border-width, var(--sky-border-width-selected-m)));
|
|
3110
3084
|
}
|
|
3111
3085
|
|
|
3112
3086
|
.sky-theme-modern .sky-elevation-0-bordered {
|
|
@@ -3305,7 +3279,7 @@
|
|
|
3305
3279
|
max-width: var(--sky-size-switch);
|
|
3306
3280
|
height: var(--sky-size-switch);
|
|
3307
3281
|
flex: 1 0 var(--sky-size-switch);
|
|
3308
|
-
margin: 0 var(--sky-space-gap-label-s) auto auto;
|
|
3282
|
+
margin: 0 var(--sky-comp-override-switch-label-margin-right, var(--sky-space-gap-label-s)) auto auto;
|
|
3309
3283
|
display: inline-flex;
|
|
3310
3284
|
position: relative;
|
|
3311
3285
|
border: var(--sky-border-width-input-base) solid var(--sky-color-border-switch-base);
|
|
@@ -3319,9 +3293,9 @@
|
|
|
3319
3293
|
}
|
|
3320
3294
|
.sky-theme-modern .sky-switch .sky-switch-control.sky-switch-control-icon {
|
|
3321
3295
|
max-width: none;
|
|
3322
|
-
width: var(--sky-override-icon-switch-size, calc(var(--sky-
|
|
3323
|
-
height: var(--sky-override-icon-switch-size, calc(var(--sky-
|
|
3324
|
-
flex: 1 0 var(--sky-override-icon-switch-size, calc(var(--sky-
|
|
3296
|
+
width: var(--sky-override-icon-switch-size, calc(var(--sky-size-icon-m) + var(--sky-comp-button-icon-space-inset-left) + var(--sky-comp-button-icon-space-inset-right)));
|
|
3297
|
+
height: var(--sky-override-icon-switch-size, calc(var(--sky-size-icon-m) + var(--sky-comp-button-icon-space-inset-top) + var(--sky-comp-button-icon-space-inset-bottom)));
|
|
3298
|
+
flex: 1 0 var(--sky-override-icon-switch-size, calc(var(--sky-size-icon-m) + var(--sky-comp-button-icon-space-inset-left) + var(--sky-comp-button-icon-space-inset-right)));
|
|
3325
3299
|
font-size: var(--sky-override-icon-switch-font-size, var(--sky-size-icon-m));
|
|
3326
3300
|
}
|
|
3327
3301
|
.sky-theme-modern .sky-switch .sky-switch-control.sky-switch-control-icon i {
|
|
@@ -3345,7 +3319,7 @@
|
|
|
3345
3319
|
}
|
|
3346
3320
|
.sky-theme-modern .sky-switch-icon-group .sky-switch-control {
|
|
3347
3321
|
background-color: var(--sky-color-background-action-tertiary-base);
|
|
3348
|
-
border-width: var(--sky-width-action-base);
|
|
3322
|
+
border-width: var(--sky-border-width-action-base);
|
|
3349
3323
|
border-color: var(--sky-color-border-action-tertiary-base);
|
|
3350
3324
|
}
|
|
3351
3325
|
.sky-theme-modern .sky-switch-icon-group .sky-switch-input:checked:not(:disabled) + .sky-switch-control.sky-switch-control-icon, .sky-theme-modern .sky-switch-icon-group .sky-switch-input[type=checkbox]:indeterminate:not(:disabled) + .sky-switch-control.sky-switch-control-icon {
|
|
@@ -3375,8 +3349,8 @@
|
|
|
3375
3349
|
border-color: var(--sky-color-border-action-tertiary-focus);
|
|
3376
3350
|
}
|
|
3377
3351
|
.sky-theme-modern .sky-switch-icon-group .sky-switch-control.sky-switch-control-icon {
|
|
3378
|
-
width: var(--sky-override-icon-switch-size-group, calc(var(--sky-
|
|
3379
|
-
height: var(--sky-override-icon-switch-size-group, calc(var(--sky-
|
|
3352
|
+
width: var(--sky-override-icon-switch-size-group, calc(var(--sky-size-icon-m) + var(--sky-comp-button-icon-space-inset-left) + var(--sky-comp-button-icon-space-inset-right)));
|
|
3353
|
+
height: var(--sky-override-icon-switch-size-group, calc(var(--sky-size-icon-m) + var(--sky-comp-button-icon-space-inset-top) + var(--sky-comp-button-icon-space-inset-bottom)));
|
|
3380
3354
|
font-size: var(--sky-override-icon-switch-font-size-group, var(--sky-size-icon-m));
|
|
3381
3355
|
}
|
|
3382
3356
|
.sky-theme-modern .sky-switch-icon-group sky-checkbox .sky-switch-control-icon {
|
|
@@ -3398,7 +3372,7 @@
|
|
|
3398
3372
|
--sky-override-a-color-hover-active: var(
|
|
3399
3373
|
--sky-text-color-action-primary-hover
|
|
3400
3374
|
);
|
|
3401
|
-
--sky-override-form-font-weight: var(--sky-font-
|
|
3375
|
+
--sky-override-form-font-weight: var(--sky-font-style-body-m);
|
|
3402
3376
|
--sky-override-p-line-height: var(--sky-font-line_height-body-m);
|
|
3403
3377
|
--sky-override-body-line-height: normal;
|
|
3404
3378
|
}
|
|
@@ -3409,7 +3383,7 @@ html:has(.sky-theme-brand-base) {
|
|
|
3409
3383
|
|
|
3410
3384
|
.sky-theme-modern {
|
|
3411
3385
|
font-size: var(--sky-font-size-body-m);
|
|
3412
|
-
font-weight: var(--sky-font-
|
|
3386
|
+
font-weight: var(--sky-font-style-body-m);
|
|
3413
3387
|
font-family: var(--sky-font-family-primary);
|
|
3414
3388
|
color: var(--sky-color-text-default);
|
|
3415
3389
|
background-color: var(--sky-color-background-page);
|
|
@@ -3440,33 +3414,33 @@ body.sky-theme-modern {
|
|
|
3440
3414
|
color: var(--sky-color-text-heading);
|
|
3441
3415
|
font-family: var(--sky-font-family-primary);
|
|
3442
3416
|
font-size: var(--sky-font-size-heading-1);
|
|
3443
|
-
font-weight: var(--sky-font-
|
|
3417
|
+
font-weight: var(--sky-font-style-heading-1);
|
|
3444
3418
|
}
|
|
3445
3419
|
.sky-theme-modern h2,
|
|
3446
3420
|
.sky-theme-modern .sky-font-heading-2 {
|
|
3447
3421
|
color: var(--sky-color-text-heading);
|
|
3448
3422
|
font-family: var(--sky-font-family-primary);
|
|
3449
3423
|
font-size: var(--sky-font-size-heading-2);
|
|
3450
|
-
font-weight: var(--sky-font-
|
|
3424
|
+
font-weight: var(--sky-font-style-heading-2);
|
|
3451
3425
|
}
|
|
3452
3426
|
.sky-theme-modern h3,
|
|
3453
3427
|
.sky-theme-modern .sky-font-heading-3 {
|
|
3454
3428
|
color: var(--sky-color-text-heading);
|
|
3455
3429
|
font-size: var(--sky-font-size-heading-3);
|
|
3456
|
-
font-weight: var(--sky-font-
|
|
3430
|
+
font-weight: var(--sky-font-style-heading-3);
|
|
3457
3431
|
}
|
|
3458
3432
|
.sky-theme-modern h4,
|
|
3459
3433
|
.sky-theme-modern .sky-font-heading-4 {
|
|
3460
3434
|
color: var(--sky-color-text-heading);
|
|
3461
3435
|
font-size: var(--sky-font-size-heading-4);
|
|
3462
|
-
font-weight: var(--sky-font-
|
|
3436
|
+
font-weight: var(--sky-font-style-heading-4);
|
|
3463
3437
|
text-transform: none;
|
|
3464
3438
|
}
|
|
3465
3439
|
.sky-theme-modern h5,
|
|
3466
3440
|
.sky-theme-modern .sky-font-heading-5 {
|
|
3467
3441
|
color: var(--sky-color-text-heading);
|
|
3468
3442
|
font-size: var(--sky-font-size-heading-5);
|
|
3469
|
-
font-weight: var(--sky-font-
|
|
3443
|
+
font-weight: var(--sky-font-style-heading-5);
|
|
3470
3444
|
text-transform: none;
|
|
3471
3445
|
}
|
|
3472
3446
|
.sky-theme-modern p {
|
|
@@ -3509,31 +3483,31 @@ body.sky-theme-modern {
|
|
|
3509
3483
|
color: var(--sky-color-text-default);
|
|
3510
3484
|
font-family: var(--sky-font-family-primary);
|
|
3511
3485
|
font-size: var(--sky-font-size-body-m);
|
|
3512
|
-
font-weight: var(--sky-font-
|
|
3486
|
+
font-weight: var(--sky-font-style-body-m);
|
|
3513
3487
|
}
|
|
3514
3488
|
.sky-theme-modern .sky-font-body-sm {
|
|
3515
3489
|
color: var(--sky-color-text-default);
|
|
3516
3490
|
font-family: var(--sky-font-family-primary);
|
|
3517
3491
|
font-size: var(--sky-font-size-body-s);
|
|
3518
|
-
font-weight: var(--sky-font-
|
|
3492
|
+
font-weight: var(--sky-font-style-body-s);
|
|
3519
3493
|
}
|
|
3520
3494
|
.sky-theme-modern .sky-font-body-lg {
|
|
3521
3495
|
color: var(--sky-color-text-default);
|
|
3522
3496
|
font-family: var(--sky-font-family-primary);
|
|
3523
3497
|
font-size: var(--sky-font-size-body-l);
|
|
3524
|
-
font-weight: var(--sky-font-
|
|
3498
|
+
font-weight: var(--sky-font-style-body-l);
|
|
3525
3499
|
}
|
|
3526
3500
|
.sky-theme-modern .sky-font-data-label {
|
|
3527
3501
|
color: var(--sky-color-text-deemphasized);
|
|
3528
3502
|
font-family: var(--sky-font-family-primary);
|
|
3529
3503
|
font-size: var(--sky-font-size-body-m);
|
|
3530
|
-
font-weight: var(--sky-font-
|
|
3504
|
+
font-weight: var(--sky-font-style-body-m);
|
|
3531
3505
|
}
|
|
3532
3506
|
.sky-theme-modern .sky-font-field-label {
|
|
3533
3507
|
color: var(--sky-color-text-deemphasized);
|
|
3534
3508
|
font-family: var(--sky-font-family-primary);
|
|
3535
3509
|
font-size: var(--sky-font-size-body-m);
|
|
3536
|
-
font-weight: var(--sky-font-
|
|
3510
|
+
font-weight: var(--sky-font-style-body-m);
|
|
3537
3511
|
}
|
|
3538
3512
|
.sky-theme-modern .sky-font-deemphasized {
|
|
3539
3513
|
color: var(--sky-color-text-deemphasized);
|
|
@@ -3545,14 +3519,14 @@ body.sky-theme-modern {
|
|
|
3545
3519
|
.sky-theme-modern .sky-font-emphasized {
|
|
3546
3520
|
font-family: var(--sky-font-family-primary);
|
|
3547
3521
|
font-size: inherit;
|
|
3548
|
-
font-weight: var(--sky-font-
|
|
3522
|
+
font-weight: var(--sky-font-style-emphasized);
|
|
3549
3523
|
}
|
|
3550
3524
|
.sky-theme-modern .sky-font-hint-text-s {
|
|
3551
3525
|
color: var(--sky-color-text-deemphasized);
|
|
3552
3526
|
font-family: var(--sky-font-family-primary);
|
|
3553
3527
|
font-size: var(--sky-font-size-hint-s);
|
|
3554
3528
|
font-style: var(--sky-font-style-hint-s-style);
|
|
3555
|
-
font-weight: var(--sky-font-
|
|
3529
|
+
font-weight: var(--sky-font-style-hint-s);
|
|
3556
3530
|
letter-spacing: var(--sky-font-letter_spacing-hint-s);
|
|
3557
3531
|
line-height: var(--sky-font-line_height-hint-s);
|
|
3558
3532
|
}
|
|
@@ -3561,33 +3535,33 @@ body.sky-theme-modern {
|
|
|
3561
3535
|
font-family: var(--sky-font-family-primary);
|
|
3562
3536
|
font-size: var(--sky-font-size-hint-m);
|
|
3563
3537
|
font-style: var(--sky-font-style-hint-m-style);
|
|
3564
|
-
font-weight: var(--sky-font-
|
|
3538
|
+
font-weight: var(--sky-font-style-hint-m);
|
|
3565
3539
|
line-height: var(--sky-font-line_height-hint-m);
|
|
3566
3540
|
}
|
|
3567
3541
|
.sky-theme-modern .sky-font-display-1 {
|
|
3568
3542
|
color: var(--sky-color-text-default);
|
|
3569
3543
|
font-family: var(--sky-font-family-primary);
|
|
3570
3544
|
font-size: var(--sky-font-size-display-1);
|
|
3571
|
-
font-weight: var(--sky-font-
|
|
3545
|
+
font-weight: var(--sky-font-style-display-1);
|
|
3572
3546
|
}
|
|
3573
3547
|
.sky-theme-modern .sky-font-display-2 {
|
|
3574
3548
|
color: var(--sky-color-text-default);
|
|
3575
3549
|
font-family: var(--sky-font-family-primary);
|
|
3576
3550
|
font-size: var(--sky-font-size-display-2);
|
|
3577
|
-
font-weight: var(--sky-font-
|
|
3551
|
+
font-weight: var(--sky-font-style-display-2);
|
|
3578
3552
|
}
|
|
3579
3553
|
.sky-theme-modern .sky-font-display-3,
|
|
3580
3554
|
.sky-theme-modern .sky-headline {
|
|
3581
3555
|
color: var(--sky-color-text-default);
|
|
3582
3556
|
font-family: var(--sky-font-family-primary);
|
|
3583
3557
|
font-size: var(--sky-font-size-display-3);
|
|
3584
|
-
font-weight: var(--sky-font-
|
|
3558
|
+
font-weight: var(--sky-font-style-display-3);
|
|
3585
3559
|
}
|
|
3586
3560
|
.sky-theme-modern .sky-font-display-4 {
|
|
3587
3561
|
color: var(--sky-color-text-default);
|
|
3588
3562
|
font-family: var(--sky-font-family-primary);
|
|
3589
3563
|
font-size: var(--sky-font-size-display-4);
|
|
3590
|
-
font-weight: var(--sky-font-
|
|
3564
|
+
font-weight: var(--sky-font-style-display-4);
|
|
3591
3565
|
}
|
|
3592
3566
|
|
|
3593
3567
|
.sky-theme-modern.sky-theme-brand-base .sky-font-body-default {
|
package/fesm2022/skyux-theme.mjs
CHANGED
|
@@ -409,7 +409,7 @@ class SkyThemeService {
|
|
|
409
409
|
}
|
|
410
410
|
/**
|
|
411
411
|
* Updates the current theme brand.
|
|
412
|
-
* @param brand The new theme brand to apply.
|
|
412
|
+
* @param brand The new theme brand to apply, or undefined to clear the current brand.
|
|
413
413
|
*/
|
|
414
414
|
setThemeBrand(brand) {
|
|
415
415
|
this.#updateThemeProperty('brand', brand);
|
|
@@ -465,7 +465,7 @@ class SkyThemeService {
|
|
|
465
465
|
break;
|
|
466
466
|
default:
|
|
467
467
|
}
|
|
468
|
-
if (supportedValues && !supportedValues.includes(value)) {
|
|
468
|
+
if (supportedValues && value && !supportedValues.includes(value)) {
|
|
469
469
|
throw new Error(`The current theme does not support the specified ${property}.`);
|
|
470
470
|
}
|
|
471
471
|
const updatedSettings = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-theme.mjs","sources":["../../../../../libs/components/theme/src/lib/icons/icon-manifest.service.ts","../../../../../libs/components/theme/src/lib/theming/theme-mode.ts","../../../../../libs/components/theme/src/lib/theming/theme-spacing.ts","../../../../../libs/components/theme/src/lib/theming/theme.ts","../../../../../libs/components/theme/src/lib/theming/theme-brand.ts","../../../../../libs/components/theme/src/lib/theming/theme-settings.ts","../../../../../libs/components/theme/src/lib/theming/theme.service.ts","../../../../../libs/components/theme/src/lib/style-loader.ts","../../../../../libs/components/theme/src/lib/theming/theme-class.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme-if.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme.directive.ts","../../../../../libs/components/theme/src/lib/theme.module.ts","../../../../../libs/components/theme/src/lib/theming/theme-component-class.directive.ts","../../../../../libs/components/theme/src/lib/viewport/viewport.service.ts","../../../../../libs/components/theme/src/lib/providers/provide-initial-theme.ts","../../../../../libs/components/theme/src/skyux-theme.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { getIconManifest } from '@skyux/icons';\n\nimport { SkyThemeIconManifest } from './icon-manifest';\n\n/**\n * Provides a method for retrieving metadata about the SKY UX icon font.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyThemeIconManifestService {\n /**\n * Gets metadata about the SKY UX icon font.\n */\n public getManifest(): SkyThemeIconManifest {\n return getIconManifest();\n }\n}\n","import { SkyThemeModeData } from './theme-serialization-types';\n\n/**\n * Defines properties of a SKY UX theme mode.\n */\nexport class SkyThemeMode {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n light: new SkyThemeMode('light', 'sky-theme-mode-light'),\n dark: new SkyThemeMode('dark', 'sky-theme-mode-dark'),\n };\n\n /**\n * Creates a new theme mode.\n * @param name The name of the theme mode.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme mode.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n\n /**\n * @internal\n * Serializes the theme mode to a JSON-compatible object.\n */\n public serialize(): SkyThemeModeData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeMode.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeMode instance.\n */\n public static deserialize(data: SkyThemeModeData): SkyThemeMode {\n if (data.isPreset) {\n const preset =\n SkyThemeMode.presets[data.name as keyof typeof SkyThemeMode.presets];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme mode preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme modes');\n }\n\n return new SkyThemeMode(data.name, data.hostClass);\n }\n}\n","import { SkyThemeSpacingData } from './theme-serialization-types';\n\n/**\n * Defines properties of SKY UX theme spacing.\n */\nexport class SkyThemeSpacing {\n /**\n * The preset spacing available in SKY UX.\n */\n public static readonly presets = {\n standard: new SkyThemeSpacing('standard', 'sky-theme-spacing-standard'),\n compact: new SkyThemeSpacing('compact', 'sky-theme-spacing-compact'),\n };\n\n /**\n * Creates a new theme spacing.\n * @param name The name of the theme spacing.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme spacing.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n\n /**\n * @internal\n * Serializes the theme spacing to a JSON-compatible object.\n */\n public serialize(): SkyThemeSpacingData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeSpacing.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeSpacing instance.\n */\n public static deserialize(data: SkyThemeSpacingData): SkyThemeSpacing {\n if (data.isPreset) {\n const preset =\n SkyThemeSpacing.presets[\n data.name as keyof typeof SkyThemeSpacing.presets\n ];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme spacing preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme spacing');\n }\n\n return new SkyThemeSpacing(data.name, data.hostClass);\n }\n}\n","import { SkyThemeMode } from './theme-mode';\nimport { SkyThemeData } from './theme-serialization-types';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Defines properties of a SKY UX theme.\n */\nexport class SkyTheme {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n default: new SkyTheme(\n 'default',\n 'sky-theme-default',\n [SkyThemeMode.presets.light],\n [SkyThemeSpacing.presets.standard],\n ),\n modern: new SkyTheme(\n 'modern',\n 'sky-theme-modern',\n [SkyThemeMode.presets.light, SkyThemeMode.presets.dark],\n [SkyThemeSpacing.presets.standard, SkyThemeSpacing.presets.compact],\n true,\n ),\n };\n\n /**\n * Creates a new theme.\n * @param name The name of the theme.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme.\n * @param supportedModes An array of modes supported by the theme.\n * @param supportedSpacing An array of spacing modes supported by the theme.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n public readonly supportedModes: SkyThemeMode[],\n public readonly supportedSpacing = [SkyThemeSpacing.presets.standard],\n public readonly supportsBranding = false,\n ) {}\n\n /**\n * @internal\n * Serializes the theme to a JSON-compatible object.\n */\n public serialize(): SkyThemeData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyTheme.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n isPreset: true,\n };\n }\n\n const result: SkyThemeData = {\n name: this.name,\n hostClass: this.hostClass,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n };\n\n // Only include supportedSpacing if it's not the default\n if (\n this.supportedSpacing.length !== 1 ||\n this.supportedSpacing[0] !== SkyThemeSpacing.presets.standard\n ) {\n result.supportedSpacing = this.supportedSpacing.map((spacing) =>\n spacing.serialize(),\n );\n }\n\n // Only include supportsBranding if it's true\n if (this.supportsBranding) {\n result.supportsBranding = this.supportsBranding;\n }\n\n return result;\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyTheme instance.\n */\n public static deserialize(data: SkyThemeData): SkyTheme {\n if (data.isPreset) {\n const preset =\n SkyTheme.presets[data.name as keyof typeof SkyTheme.presets];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset themes');\n }\n\n const supportedModes = data.supportedModes.map((modeData) =>\n SkyThemeMode.deserialize(modeData),\n );\n\n const supportedSpacing = data.supportedSpacing\n ? data.supportedSpacing.map((spacingData) =>\n SkyThemeSpacing.deserialize(spacingData),\n )\n : [SkyThemeSpacing.presets.standard];\n\n return new SkyTheme(\n data.name,\n data.hostClass,\n supportedModes,\n supportedSpacing,\n data.supportsBranding ?? false,\n );\n }\n}\n","import { SkyThemeBrandData } from './theme-serialization-types';\n\n/**\n * @internal\n * Defines properties of SKY UX theme branding.\n */\nexport class SkyThemeBrand {\n public get hostClass(): string {\n return this.#hostClass || this.#buildDefaultHostClassName();\n }\n\n private set hostClass(value: string | undefined) {\n this.#hostClass = value;\n }\n\n #hostClass: string | undefined;\n /**\n * Creates a new theme brand.\n * @param name The name of the theme brand.\n * @param version The version of the theme brand.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme brand. This defaults to `sky-theme-brand-<name>`\n * @param styleUrl The URL of the stylesheet to load for this brand\n * @param sriHash The subresource integrity hash for the stylesheet\n */\n constructor(\n public readonly name: string,\n public readonly version: string,\n hostClass?: string,\n public readonly styleUrl?: string,\n public readonly sriHash?: string,\n ) {\n this.hostClass = hostClass;\n\n if (!/^(\\d+|\\d+\\.\\d+\\.\\d+)(?:-(?:alpha|beta|rc)\\.\\d+)*$/.test(version)) {\n throw new Error(\n `Invalid version format \"${version}\" for theme brand \"${name}\".`,\n );\n }\n }\n\n /**\n * @internal\n * Serializes the theme brand to a JSON-compatible object.\n */\n public serialize(): SkyThemeBrandData {\n const result: SkyThemeBrandData = {\n name: this.name,\n version: this.version,\n };\n\n // Only include hostClass if it's different from the default\n const defaultHostClass = this.#buildDefaultHostClassName();\n\n if (this.hostClass !== defaultHostClass) {\n result.hostClass = this.hostClass;\n }\n\n // Include styleUrl and sriHash if they are provided\n if (this.styleUrl) {\n result.styleUrl = this.styleUrl;\n }\n\n if (this.sriHash) {\n result.sriHash = this.sriHash;\n }\n\n return result;\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeBrand instance.\n */\n public static deserialize(data: SkyThemeBrandData): SkyThemeBrand {\n return new SkyThemeBrand(\n data.name,\n data.version,\n data.hostClass,\n data.styleUrl,\n data.sriHash,\n );\n }\n\n #buildDefaultHostClassName(): string {\n return `sky-theme-brand-${this.name}`;\n }\n}\n","import { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettingsData } from './theme-serialization-types';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Specifies the theme and mode to be applied to a host element.\n */\nexport class SkyThemeSettings {\n /**\n * Creates a new SkyThemeSettings instance.\n * @param theme The theme configuration.\n * @param mode The theme mode.\n */\n constructor(\n public readonly theme: SkyTheme,\n public readonly mode: SkyThemeMode,\n public readonly spacing = SkyThemeSpacing.presets.standard,\n public readonly brand?: SkyThemeBrand,\n ) {}\n\n /**\n * Serializes the theme settings to a string.\n */\n public serialize(): string {\n const result: SkyThemeSettingsData = {\n theme: this.theme.serialize(),\n mode: this.mode.serialize(),\n };\n\n // Only include spacing if it's not the default\n if (this.spacing !== SkyThemeSpacing.presets.standard) {\n result.spacing = this.spacing.serialize();\n }\n\n // Only include brand if it exists\n if (this.brand) {\n result.brand = this.brand.serialize();\n }\n\n return JSON.stringify(result);\n }\n\n /**\n * Deserializes a string to a SkyThemeSettings instance.\n */\n public static deserialize(value: string): SkyThemeSettings {\n const settingsData = JSON.parse(value) as SkyThemeSettingsData;\n\n const theme = SkyTheme.deserialize(settingsData.theme);\n const mode = SkyThemeMode.deserialize(settingsData.mode);\n const spacing = settingsData.spacing\n ? SkyThemeSpacing.deserialize(settingsData.spacing)\n : SkyThemeSpacing.presets.standard;\n const brand = settingsData.brand\n ? SkyThemeBrand.deserialize(settingsData.brand)\n : undefined;\n\n return new SkyThemeSettings(theme, mode, spacing, brand);\n }\n}\n","import { Injectable, Renderer2 } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeSettingsChange } from './theme-settings-change';\nimport { SkyThemeSpacing } from './theme-spacing';\n\nconst BRAND_BLACKBAUD = 'blackbaud';\n\nfunction assertCurrentSettings(\n currentSettings: SkyThemeSettings | undefined,\n): asserts currentSettings is SkyThemeSettings {\n if (!currentSettings) {\n throw new Error('Theme service is not initialized. Call init() first.');\n }\n}\n\n/**\n * Provides methods for updating and handling changes to the current theme.\n */\n@Injectable()\nexport class SkyThemeService {\n /**\n * Notifies consumers when the current theme settings have changed.\n */\n public get settingsChange(): Observable<SkyThemeSettingsChange> {\n return this.#_settingsObs;\n }\n\n #current: SkyThemeSettings | undefined;\n\n #brandLinkElement: HTMLLinkElement | undefined;\n\n #hostEl: any | undefined;\n\n #renderer: Renderer2 | undefined;\n\n #settings: ReplaySubject<SkyThemeSettingsChange>;\n\n #registeredBrands = new Map<string, SkyThemeBrand>();\n\n #_settingsObs: Observable<SkyThemeSettingsChange>;\n\n constructor() {\n this.#settings = new ReplaySubject<SkyThemeSettingsChange>(1);\n this.#_settingsObs = this.#settings.asObservable();\n }\n\n /**\n * Initializes the theme service with the specified parameters. This should only be called\n * from a host component that provides its own theme to child components.\n * @param hostEl The host element under which themed components are rendered.\n * @param renderer A Renderer2 instance for updating the host element with theme changes.\n * @param theme The initial theme.\n * @param registeredBrands An initial set of brands to register. Additional brands can\n * be registered later via the registerBrand() method.\n */\n public init(\n hostEl: any,\n renderer: Renderer2,\n theme: SkyThemeSettings,\n registeredBrands?: SkyThemeBrand[],\n ): void {\n this.#hostEl = hostEl;\n this.#renderer = renderer;\n\n if (registeredBrands) {\n for (const brand of registeredBrands) {\n this.#registeredBrands.set(brand.name, brand);\n }\n }\n\n this.setTheme(theme);\n }\n\n /**\n * Destroys the current theme service. This should only be called from a host component that\n * provides its own theme to child components.\n */\n public destroy(): void {\n this.#settings.complete();\n\n this.#hostEl = this.#renderer = undefined;\n }\n\n /**\n * Updates the current theme mode.\n * @param mode The new theme mode to apply.\n */\n public setThemeMode(mode: SkyThemeMode): void {\n this.#updateThemeProperty('mode', mode);\n }\n\n /**\n * Updates the current theme spacing.\n * @param spacing The new theme spacing to apply.\n */\n public setThemeSpacing(spacing: SkyThemeSpacing): void {\n this.#updateThemeProperty('spacing', spacing);\n }\n\n /**\n * Updates the current theme brand.\n * @param brand The new theme brand to apply.\n */\n public setThemeBrand(brand: SkyThemeBrand): void {\n this.#updateThemeProperty('brand', brand);\n }\n\n /**\n * Updates the current theme settings.\n * @param settings The new theme settings to apply.\n */\n public setTheme(settings: SkyThemeSettings): void;\n\n /**\n * Updates the current theme.\n * @param theme The new theme to apply.\n */\n public setTheme(theme: SkyTheme): void;\n\n public setTheme(settingsOrTheme: SkyThemeSettings | SkyTheme): void {\n let settings: SkyThemeSettings;\n\n if (settingsOrTheme instanceof SkyThemeSettings) {\n settings = this.#applyRegisteredBrand(settingsOrTheme);\n } else {\n const current = this.#current;\n\n assertCurrentSettings(current);\n\n settings = new SkyThemeSettings(\n settingsOrTheme,\n current.mode,\n current.spacing,\n settingsOrTheme.supportsBranding ? current.brand : undefined,\n );\n }\n\n const previous = this.#current;\n\n this.#applyThemeClass(previous, settings, 'theme');\n this.#applyThemeClass(previous, settings, 'mode', 'supportedModes');\n this.#applyThemeClass(previous, settings, 'spacing', 'supportedSpacing');\n this.#applyThemeClass(previous, settings, 'brand');\n\n this.#settings.next({\n currentSettings: settings,\n previousSettings: previous,\n });\n\n this.#current = settings;\n }\n\n public registerBrand(brand: SkyThemeBrand): void {\n this.#registeredBrands.set(brand.name, brand);\n }\n\n public unregisterBrand(name: string): void {\n this.#registeredBrands.delete(name);\n }\n\n #applyRegisteredBrand(settings: SkyThemeSettings): SkyThemeSettings {\n const brandName = settings.brand?.name;\n\n if (brandName) {\n const registeredBrand = this.#registeredBrands.get(brandName);\n\n if (registeredBrand) {\n settings = new SkyThemeSettings(\n settings.theme,\n settings.mode,\n settings.spacing,\n registeredBrand,\n );\n }\n }\n\n return settings;\n }\n\n #updateThemeProperty(\n property: 'mode' | 'spacing' | 'brand',\n value: SkyThemeMode | SkyThemeSpacing | SkyThemeBrand,\n ): void {\n const current = this.#current;\n\n assertCurrentSettings(current);\n\n const currentTheme = current.theme;\n\n let supportedValues: SkyThemeMode[] | SkyThemeSpacing[] | undefined =\n undefined;\n\n switch (property) {\n case 'mode':\n supportedValues = currentTheme.supportedModes;\n break;\n case 'spacing':\n supportedValues = currentTheme.supportedSpacing;\n break;\n default:\n }\n\n if (supportedValues && !supportedValues.includes(value)) {\n throw new Error(\n `The current theme does not support the specified ${property}.`,\n );\n }\n\n const updatedSettings = {\n theme: current.theme,\n mode: current.mode,\n spacing: current.spacing,\n brand: current.brand,\n [property]: value,\n };\n\n this.setTheme(\n new SkyThemeSettings(\n updatedSettings.theme,\n updatedSettings.mode,\n updatedSettings.spacing,\n updatedSettings.brand,\n ),\n );\n }\n\n #applyThemeClass(\n previous: SkyThemeSettings | undefined,\n current: SkyThemeSettings,\n prop: 'theme' | 'mode' | 'spacing' | 'brand',\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): void {\n const currentSetting = current[prop];\n const previousClass = previous?.[prop]?.hostClass;\n const currentClass = currentSetting?.hostClass;\n\n if (!previousClass || previousClass !== currentClass) {\n this.#updateHostClass(\n prop,\n previousClass,\n currentClass,\n currentSetting,\n current,\n supportedProp,\n );\n\n if (prop === 'brand') {\n if (!current.theme.supportsBranding && currentSetting) {\n throw new Error('Branding is not supported for the given theme.');\n }\n\n this.#updateBrandStylesheet(current.brand, previous?.brand);\n }\n }\n }\n\n #updateBrandStylesheet(\n currentBrand: SkyThemeBrand | undefined,\n previousBrand: SkyThemeBrand | undefined,\n ): void {\n if (previousBrand && previousBrand.name !== BRAND_BLACKBAUD) {\n this.#removeBrandStylesheet();\n }\n\n if (currentBrand && currentBrand.name !== BRAND_BLACKBAUD) {\n this.#addBrandStylesheet(currentBrand);\n }\n }\n\n #updateHostClass(\n prop: 'theme' | 'mode' | 'spacing' | 'brand',\n previousClass: string | undefined,\n currentClass: string | undefined,\n currentSetting:\n | SkyTheme\n | SkyThemeMode\n | SkyThemeSpacing\n | SkyThemeBrand\n | undefined,\n current: SkyThemeSettings,\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): void {\n if (previousClass) {\n this.#removeHostClass(previousClass);\n }\n\n if (prop === 'brand') {\n if (currentClass && !previousClass) {\n this.#addHostClass('sky-theme-brand-base');\n } else if (!currentClass && previousClass) {\n this.#removeHostClass('sky-theme-brand-base');\n }\n }\n\n if (\n currentClass &&\n this.#isSupportedProperty(currentSetting, current, supportedProp)\n ) {\n this.#addHostClass(currentClass);\n }\n }\n\n #addBrandStylesheet(brand: SkyThemeBrand): void {\n if (brand.name !== BRAND_BLACKBAUD) {\n // Use styleUrl if provided, otherwise build the default URL\n const styleUrl =\n brand.styleUrl ||\n `https://sky.blackbaudcdn.net/static/skyux-brand-${brand.name}/${brand.version}/assets/scss/${brand.name}.css`;\n\n const renderer = this.#getRenderer();\n\n this.#brandLinkElement = renderer.createElement(\n 'link',\n ) as HTMLLinkElement;\n\n renderer.appendChild(this.#hostEl, this.#brandLinkElement);\n\n renderer.setAttribute(this.#brandLinkElement, 'rel', 'stylesheet');\n renderer.setAttribute(this.#brandLinkElement, 'href', styleUrl);\n\n if (brand.sriHash) {\n renderer.setAttribute(\n this.#brandLinkElement,\n 'integrity',\n brand.sriHash,\n );\n\n renderer.setAttribute(\n this.#brandLinkElement,\n 'crossorigin',\n 'anonymous',\n );\n }\n }\n }\n\n #removeBrandStylesheet(): void {\n if (this.#brandLinkElement) {\n this.#getRenderer().removeChild(this.#hostEl, this.#brandLinkElement);\n this.#brandLinkElement = undefined;\n }\n }\n\n #addHostClass(className: string): void {\n this.#getRenderer().addClass(this.#hostEl, className);\n }\n\n #removeHostClass(className: string): void {\n this.#getRenderer().removeClass(this.#hostEl, className);\n }\n\n #getRenderer(): Renderer2 {\n if (!this.#renderer) {\n throw new Error(\n 'Renderer is not initialized. Have you called the theme service `init` method?',\n );\n }\n return this.#renderer;\n }\n\n #isSupportedProperty(\n currentSetting:\n | SkyTheme\n | SkyThemeMode\n | SkyThemeSpacing\n | SkyThemeBrand\n | undefined,\n current: SkyThemeSettings,\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): boolean {\n return (\n !supportedProp ||\n ((currentSetting instanceof SkyThemeMode ||\n currentSetting instanceof SkyThemeSpacing) &&\n current.theme[supportedProp].includes(currentSetting))\n );\n }\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport FontFaceObserver from 'fontfaceobserver';\nimport { take } from 'rxjs/operators';\n\nimport { SkyThemeService } from './theming/theme.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppStyleLoader {\n public static readonly LOAD_TIMEOUT = 3000;\n public isLoaded = false;\n\n #themeSvc: SkyThemeService | undefined;\n\n constructor(@Optional() themeSvc?: SkyThemeService) {\n this.#themeSvc = themeSvc;\n }\n\n public loadStyles(): Promise<any> {\n if (this.isLoaded) {\n return Promise.resolve();\n }\n\n let themePromise: Promise<any>;\n\n if (this.#themeSvc) {\n themePromise = this.#themeSvc.settingsChange.pipe(take(1)).toPromise();\n } else {\n themePromise = Promise.resolve();\n }\n\n const fontAwesome = new FontFaceObserver('FontAwesome');\n const skyuxIcons = new FontFaceObserver('skyux-icons');\n const blackbaudSans = new FontFaceObserver('BLKB Sans');\n\n return Promise.all([\n // Specify a character for FontAwesome since some browsers will fail to detect\n // when the font is loaded unless a known character with a different width\n // than the default is not specified.\n fontAwesome.load('\\uf0fc', SkyAppStyleLoader.LOAD_TIMEOUT),\n skyuxIcons.load('\\ue999', SkyAppStyleLoader.LOAD_TIMEOUT),\n blackbaudSans.load(undefined, SkyAppStyleLoader.LOAD_TIMEOUT),\n themePromise,\n ])\n .then(() => {\n this.isLoaded = true;\n })\n .catch((error) => {\n // Errors loading the font should not stop the page from rendering.\n // Passing the error along in case the client wants to do something with it.\n return Promise.resolve({\n error,\n });\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\ntype SkyThemeClassMap = Record<string, string>;\n\n/**\n * Component to add classes conditionally based on the current theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeClass]',\n standalone: false,\n})\nexport class SkyThemeClassDirective implements OnDestroy {\n /**\n * The HTML class attribute.\n *\n * @param value\n */\n @Input()\n public set class(value: string | undefined) {\n this.#removeInitialClasses(this.#initialClasses);\n this.#initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n /**\n * An object with class names in a string for keys, and theme names (e.g. 'default' or 'modern') as values.\n *\n * @param value\n */\n @Input()\n public set skyThemeClass(value: SkyThemeClassMap | undefined) {\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n\n this.#skyThemeClassMap = value as SkyThemeClassMap;\n\n /* istanbul ignore else */\n if (this.#skyThemeClassMap) {\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n }\n\n set #themeSettings(settings: SkyThemeSettings) {\n this.#currentTheme = settings;\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #initialClasses: string[] = [];\n #skyThemeClassMap: SkyThemeClassMap | undefined;\n\n #ngEl: ElementRef;\n #renderer: Renderer2;\n\n constructor(\n ngEl: ElementRef,\n renderer: Renderer2,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#ngEl = ngEl;\n this.#renderer = renderer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#themeSettings = settingsChange.currentSettings;\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #applyInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, true));\n }\n }\n\n #applySkyThemeClassMap(skyThemeClassMap: SkyThemeClassMap | undefined): void {\n if (skyThemeClassMap) {\n const themeName = this.#currentTheme?.theme.name || 'default';\n Object.keys(skyThemeClassMap).forEach((className) => {\n const enabled = themeName === skyThemeClassMap[className];\n this.#toggleClass(className, enabled);\n });\n }\n }\n\n #removeInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, false));\n }\n }\n\n #removeSkyThemeClassMap(\n skyThemeClassMap: SkyThemeClassMap | undefined,\n ): void {\n if (skyThemeClassMap) {\n Object.keys(skyThemeClassMap).forEach((className) =>\n this.#toggleClass(className, false),\n );\n }\n }\n\n #toggleClass(className: string, enabled: boolean): void {\n className = className.trim();\n /* istanbul ignore else */\n if (className) {\n className.split(/\\s+/g).forEach((classNameItem) => {\n if (enabled) {\n this.#renderer.addClass(this.#ngEl.nativeElement, classNameItem);\n } else {\n this.#renderer.removeClass(this.#ngEl.nativeElement, classNameItem);\n }\n });\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\n/**\n * Component that works like `ngIf` to show markup for matching theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeIf]',\n standalone: false,\n})\nexport class SkyThemeIfDirective implements OnDestroy {\n /**\n * A string that should match the name of a theme, `'default'` or `'modern'`.\n *\n * @param value\n */\n @Input()\n public set skyThemeIf(value: 'default' | 'modern' | undefined) {\n this.#context = value;\n this.#updateView();\n }\n\n #context: string | undefined;\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #hasView = false;\n\n #templateRef: TemplateRef<unknown>;\n #viewContainer: ViewContainerRef;\n\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainer: ViewContainerRef,\n changeDetector: ChangeDetectorRef,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#templateRef = templateRef;\n this.#viewContainer = viewContainer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#currentTheme = settingsChange.currentSettings;\n this.#updateView();\n\n // Components that use OnPush change detection will not automatically\n // check for changes when created as a result of a theme change if\n // it happens outside of an Angular change detection cycle. This\n // ensures change detection runs on those components.\n changeDetector.markForCheck();\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #updateView(): void {\n const themeName = this.#currentTheme?.theme.name || 'default';\n const condition = this.#context && themeName === this.#context;\n if (condition && !this.#hasView) {\n this.#viewContainer.createEmbeddedView(this.#templateRef);\n this.#hasView = true;\n } else if (!condition && this.#hasView) {\n this.#viewContainer.clear();\n this.#hasView = false;\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { SkyTheme } from './theme';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\nconst defaultTheme = new SkyThemeSettings(\n SkyTheme.presets.default,\n SkyThemeMode.presets.light,\n);\n\n/**\n * Creates a new instance of `SkyThemeService` to allow a container\n * to have its own theme.\n */\n@Directive({\n selector: '[skyTheme]',\n providers: [SkyThemeService],\n standalone: false,\n})\nexport class SkyThemeDirective implements OnInit, OnDestroy {\n @Input()\n public set skyTheme(value: SkyThemeSettings | undefined) {\n this.skyThemeOrDefault = value || defaultTheme;\n\n if (this.#initialized) {\n this.#themeSvc.setTheme(this.skyThemeOrDefault);\n }\n }\n\n public skyThemeOrDefault = defaultTheme;\n\n #initialized = false;\n\n #elRef: ElementRef;\n #renderer: Renderer2;\n #themeSvc: SkyThemeService;\n\n constructor(\n elRef: ElementRef,\n renderer: Renderer2,\n themeSvc: SkyThemeService,\n ) {\n this.#elRef = elRef;\n this.#renderer = renderer;\n this.#themeSvc = themeSvc;\n }\n\n public ngOnInit(): void {\n this.#themeSvc.init(\n this.#elRef.nativeElement,\n this.#renderer,\n this.skyThemeOrDefault,\n );\n\n this.#initialized = true;\n }\n\n public ngOnDestroy(): void {\n this.#themeSvc.destroy();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyThemeClassDirective } from './theming/theme-class.directive';\nimport { SkyThemeIfDirective } from './theming/theme-if.directive';\nimport { SkyThemeDirective } from './theming/theme.directive';\n\n@NgModule({\n declarations: [\n SkyThemeClassDirective,\n SkyThemeDirective,\n SkyThemeIfDirective,\n ],\n exports: [SkyThemeClassDirective, SkyThemeDirective, SkyThemeIfDirective],\n})\nexport class SkyThemeModule {}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SkyThemeService } from '../theming/theme.service';\n\n@Directive({\n selector: '[skyThemeClass]',\n standalone: true,\n})\nexport class SkyThemeComponentClassDirective {\n @HostBinding('class')\n public theme = 'sky-cmp-theme-default';\n\n #changeDetector = inject(ChangeDetectorRef);\n #themeService = inject(SkyThemeService, { optional: true });\n\n constructor() {\n this.#themeService?.settingsChange\n .pipe(takeUntilDestroyed())\n .subscribe((change) => {\n this.theme = `sky-cmp-theme-${change.currentSettings.theme.name}`;\n this.#changeDetector.markForCheck();\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Injectable, NgZone, inject } from '@angular/core';\n\nimport { ReplaySubject } from 'rxjs';\n\nimport { SkyAppViewportReserveArgs } from './viewport-reserve-args';\nimport { SkyAppViewportReservedPositionType } from './viewport-reserve-position-type';\n\ntype ReserveItemType = SkyAppViewportReserveArgs & {\n active: boolean;\n};\n\n/**\n * Provides information about the state of the application's viewport.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppViewportService {\n /**\n * Updated when the viewport becomes visible. While the page is rendered, the\n * viewport may remain hidden as fonts and styles are loaded asynchronously;\n * this is done to avoid a FOUC (Flash Of Unstyled Content) before the fonts\n * and styles are ready.\n */\n public visible = new ReplaySubject<boolean>(1);\n\n // ESLint doesn't recognize how this is used.\n #updateRequest: number | undefined = undefined;\n readonly #reserveItems = new Map<string, ReserveItemType>();\n readonly #conditionallyReserveItems = new Map<Element, ReserveItemType>();\n readonly #document = inject(DOCUMENT);\n readonly #ngZone = inject(NgZone);\n // Observe elements crossing the browser's viewport boundaries.\n readonly #intersectionObserver = this.#ngZone.runOutsideAngular(\n () =>\n new IntersectionObserver(\n () => this.#ngZone.run(() => this.#updateViewportArea()),\n { threshold: Array.from({ length: 101 }, (_, i) => i / 100) },\n ),\n );\n #reservedSpaces: Record<SkyAppViewportReservedPositionType, number> = {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n\n constructor() {\n const onScroll = (): void => {\n if (this.#conditionallyReserveItems.size > 0) {\n this.#updateViewportArea();\n }\n };\n this.#document.addEventListener('scroll', onScroll);\n inject(DestroyRef).onDestroy(() => {\n /* istanbul ignore next */\n if (this.#updateRequest !== undefined) {\n cancelAnimationFrame(this.#updateRequest);\n }\n this.#intersectionObserver.disconnect();\n this.#document.removeEventListener('scroll', onScroll);\n });\n }\n\n /**\n * Reserves space for components docked to the left, top, right, or bottom of the viewport.\n * @param args\n */\n public reserveSpace(args: SkyAppViewportReserveArgs): void {\n const item = {\n ...args,\n active: this.#isElementVisible({ ...args, active: false }),\n };\n this.#reserveItems.set(args.id, item);\n this.#watchVisibility(item);\n this.#updateViewportArea();\n }\n\n /**\n * Removes reserved space for a component by the ID provided when it was reserved.\n * @param id\n */\n public unreserveSpace(id: string): void {\n const args = this.#reserveItems.get(id);\n if (args?.reserveForElement) {\n this.#intersectionObserver.unobserve(args.reserveForElement);\n this.#conditionallyReserveItems.delete(args.reserveForElement);\n }\n this.#reserveItems.delete(id);\n this.#updateViewportArea();\n }\n\n #updateViewportArea(): void {\n this.#updateRequest ??= requestAnimationFrame(() => {\n this.#updateRequest = undefined;\n const reservedSpaces: Record<SkyAppViewportReservedPositionType, number> =\n {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n\n for (const args of this.#reserveItems.values()) {\n args.active = this.#isElementVisible(args, reservedSpaces);\n if (args.active) {\n reservedSpaces[args.position] += args.size;\n }\n }\n\n this.#reservedSpaces = reservedSpaces;\n const documentElementStyle = this.#document.documentElement.style;\n\n for (const [position, size] of Object.entries(reservedSpaces)) {\n documentElementStyle.setProperty(\n `--sky-viewport-${position}`,\n size + 'px',\n );\n }\n });\n }\n\n #watchVisibility(item: ReserveItemType): void {\n if (item.reserveForElement) {\n this.#conditionallyReserveItems.set(item.reserveForElement, item);\n this.#intersectionObserver.observe(item.reserveForElement);\n }\n }\n\n #isElementVisible(\n args: ReserveItemType,\n reservedSpaces: Record<SkyAppViewportReservedPositionType, number> = this\n .#reservedSpaces,\n ): boolean {\n if (!args.reserveForElement) {\n return true;\n }\n const rect = args.reserveForElement.getBoundingClientRect();\n if (!rect || !rect.height || !rect.width) {\n return false;\n }\n const midpoint = {\n x: rect.x + Math.floor(rect.width / 2),\n y: rect.y + Math.floor(rect.height / 2),\n };\n if (\n // Vertically in view\n midpoint.y <= window.innerHeight &&\n midpoint.y >= 0 &&\n // Horizontally in view\n midpoint.x <= window.innerWidth &&\n midpoint.x >= 0\n ) {\n // Element is not hidden by another element\n if (\n args.reserveForElement.contains(\n this.#document.elementFromPoint(midpoint.x, midpoint.y),\n )\n ) {\n return true;\n }\n\n // Check if the item's midpoint is visible based on current reserved spaces.\n // Assumes reserved spaces are intended to be additive and not overlapping.\n const threshold = reservedSpaces[args.position];\n switch (args.position) {\n case 'top':\n return midpoint.y >= threshold;\n case 'right':\n return midpoint.x <= window.innerWidth - threshold;\n case 'bottom':\n return midpoint.y <= window.innerHeight - threshold;\n case 'left':\n return midpoint.x >= threshold;\n }\n }\n return false;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n EnvironmentProviders,\n RendererFactory2,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer,\n} from '@angular/core';\n\nimport { SkyTheme } from '../theming/theme';\nimport { SkyThemeMode } from '../theming/theme-mode';\nimport { SkyThemeSettings } from '../theming/theme-settings';\nimport { SkyThemeSpacing } from '../theming/theme-spacing';\nimport { SkyThemeService } from '../theming/theme.service';\n\nexport function provideInitialTheme(\n name: keyof typeof SkyTheme.presets = 'default',\n options?: {\n mode?: keyof typeof SkyThemeMode.presets;\n spacing?: keyof typeof SkyThemeSpacing.presets;\n },\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n SkyThemeService,\n provideAppInitializer(() => {\n const initializerFn = ((\n themeService: SkyThemeService,\n doc: Document,\n rendererFactory: RendererFactory2,\n ) => {\n return (): void => {\n themeService.init(\n doc.body,\n rendererFactory.createRenderer(null, null),\n new SkyThemeSettings(\n SkyTheme.presets[name],\n SkyThemeMode.presets[options?.mode ?? 'light'],\n SkyThemeSpacing.presets[options?.spacing ?? 'standard'],\n ),\n );\n };\n })(inject(SkyThemeService), inject(DOCUMENT), inject(RendererFactory2));\n return initializerFn();\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyThemeService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-theme.mjs","sources":["../../../../../libs/components/theme/src/lib/icons/icon-manifest.service.ts","../../../../../libs/components/theme/src/lib/theming/theme-mode.ts","../../../../../libs/components/theme/src/lib/theming/theme-spacing.ts","../../../../../libs/components/theme/src/lib/theming/theme.ts","../../../../../libs/components/theme/src/lib/theming/theme-brand.ts","../../../../../libs/components/theme/src/lib/theming/theme-settings.ts","../../../../../libs/components/theme/src/lib/theming/theme.service.ts","../../../../../libs/components/theme/src/lib/style-loader.ts","../../../../../libs/components/theme/src/lib/theming/theme-class.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme-if.directive.ts","../../../../../libs/components/theme/src/lib/theming/theme.directive.ts","../../../../../libs/components/theme/src/lib/theme.module.ts","../../../../../libs/components/theme/src/lib/theming/theme-component-class.directive.ts","../../../../../libs/components/theme/src/lib/viewport/viewport.service.ts","../../../../../libs/components/theme/src/lib/providers/provide-initial-theme.ts","../../../../../libs/components/theme/src/skyux-theme.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { getIconManifest } from '@skyux/icons';\n\nimport { SkyThemeIconManifest } from './icon-manifest';\n\n/**\n * Provides a method for retrieving metadata about the SKY UX icon font.\n * @internal\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyThemeIconManifestService {\n /**\n * Gets metadata about the SKY UX icon font.\n */\n public getManifest(): SkyThemeIconManifest {\n return getIconManifest();\n }\n}\n","import { SkyThemeModeData } from './theme-serialization-types';\n\n/**\n * Defines properties of a SKY UX theme mode.\n */\nexport class SkyThemeMode {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n light: new SkyThemeMode('light', 'sky-theme-mode-light'),\n dark: new SkyThemeMode('dark', 'sky-theme-mode-dark'),\n };\n\n /**\n * Creates a new theme mode.\n * @param name The name of the theme mode.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme mode.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n\n /**\n * @internal\n * Serializes the theme mode to a JSON-compatible object.\n */\n public serialize(): SkyThemeModeData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeMode.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeMode instance.\n */\n public static deserialize(data: SkyThemeModeData): SkyThemeMode {\n if (data.isPreset) {\n const preset =\n SkyThemeMode.presets[data.name as keyof typeof SkyThemeMode.presets];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme mode preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme modes');\n }\n\n return new SkyThemeMode(data.name, data.hostClass);\n }\n}\n","import { SkyThemeSpacingData } from './theme-serialization-types';\n\n/**\n * Defines properties of SKY UX theme spacing.\n */\nexport class SkyThemeSpacing {\n /**\n * The preset spacing available in SKY UX.\n */\n public static readonly presets = {\n standard: new SkyThemeSpacing('standard', 'sky-theme-spacing-standard'),\n compact: new SkyThemeSpacing('compact', 'sky-theme-spacing-compact'),\n };\n\n /**\n * Creates a new theme spacing.\n * @param name The name of the theme spacing.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme spacing.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n ) {}\n\n /**\n * @internal\n * Serializes the theme spacing to a JSON-compatible object.\n */\n public serialize(): SkyThemeSpacingData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyThemeSpacing.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n isPreset: true,\n };\n }\n\n return {\n name: this.name,\n hostClass: this.hostClass,\n };\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeSpacing instance.\n */\n public static deserialize(data: SkyThemeSpacingData): SkyThemeSpacing {\n if (data.isPreset) {\n const preset =\n SkyThemeSpacing.presets[\n data.name as keyof typeof SkyThemeSpacing.presets\n ];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme spacing preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset theme spacing');\n }\n\n return new SkyThemeSpacing(data.name, data.hostClass);\n }\n}\n","import { SkyThemeMode } from './theme-mode';\nimport { SkyThemeData } from './theme-serialization-types';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Defines properties of a SKY UX theme.\n */\nexport class SkyTheme {\n /**\n * The preset themes available in SKY UX.\n */\n public static readonly presets = {\n default: new SkyTheme(\n 'default',\n 'sky-theme-default',\n [SkyThemeMode.presets.light],\n [SkyThemeSpacing.presets.standard],\n ),\n modern: new SkyTheme(\n 'modern',\n 'sky-theme-modern',\n [SkyThemeMode.presets.light, SkyThemeMode.presets.dark],\n [SkyThemeSpacing.presets.standard, SkyThemeSpacing.presets.compact],\n true,\n ),\n };\n\n /**\n * Creates a new theme.\n * @param name The name of the theme.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme.\n * @param supportedModes An array of modes supported by the theme.\n * @param supportedSpacing An array of spacing modes supported by the theme.\n */\n constructor(\n public readonly name: string,\n public readonly hostClass: string,\n public readonly supportedModes: SkyThemeMode[],\n public readonly supportedSpacing = [SkyThemeSpacing.presets.standard],\n public readonly supportsBranding = false,\n ) {}\n\n /**\n * @internal\n * Serializes the theme to a JSON-compatible object.\n */\n public serialize(): SkyThemeData {\n // Check if this instance is a preset\n const presetEntry = Object.entries(SkyTheme.presets).find(\n ([, preset]) => preset === this,\n );\n\n if (presetEntry) {\n return {\n name: this.name,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n isPreset: true,\n };\n }\n\n const result: SkyThemeData = {\n name: this.name,\n hostClass: this.hostClass,\n supportedModes: this.supportedModes.map((mode) => mode.serialize()),\n };\n\n // Only include supportedSpacing if it's not the default\n if (\n this.supportedSpacing.length !== 1 ||\n this.supportedSpacing[0] !== SkyThemeSpacing.presets.standard\n ) {\n result.supportedSpacing = this.supportedSpacing.map((spacing) =>\n spacing.serialize(),\n );\n }\n\n // Only include supportsBranding if it's true\n if (this.supportsBranding) {\n result.supportsBranding = this.supportsBranding;\n }\n\n return result;\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyTheme instance.\n */\n public static deserialize(data: SkyThemeData): SkyTheme {\n if (data.isPreset) {\n const preset =\n SkyTheme.presets[data.name as keyof typeof SkyTheme.presets];\n\n if (preset) {\n return preset;\n }\n\n throw new Error(`Unknown theme preset: ${data.name}`);\n }\n\n if (!data.hostClass) {\n throw new Error('hostClass is required for non-preset themes');\n }\n\n const supportedModes = data.supportedModes.map((modeData) =>\n SkyThemeMode.deserialize(modeData),\n );\n\n const supportedSpacing = data.supportedSpacing\n ? data.supportedSpacing.map((spacingData) =>\n SkyThemeSpacing.deserialize(spacingData),\n )\n : [SkyThemeSpacing.presets.standard];\n\n return new SkyTheme(\n data.name,\n data.hostClass,\n supportedModes,\n supportedSpacing,\n data.supportsBranding ?? false,\n );\n }\n}\n","import { SkyThemeBrandData } from './theme-serialization-types';\n\n/**\n * @internal\n * Defines properties of SKY UX theme branding.\n */\nexport class SkyThemeBrand {\n public get hostClass(): string {\n return this.#hostClass || this.#buildDefaultHostClassName();\n }\n\n private set hostClass(value: string | undefined) {\n this.#hostClass = value;\n }\n\n #hostClass: string | undefined;\n /**\n * Creates a new theme brand.\n * @param name The name of the theme brand.\n * @param version The version of the theme brand.\n * @param hostClass The class on the host element which child components should reference when\n * adjusting for a specified theme brand. This defaults to `sky-theme-brand-<name>`\n * @param styleUrl The URL of the stylesheet to load for this brand\n * @param sriHash The subresource integrity hash for the stylesheet\n */\n constructor(\n public readonly name: string,\n public readonly version: string,\n hostClass?: string,\n public readonly styleUrl?: string,\n public readonly sriHash?: string,\n ) {\n this.hostClass = hostClass;\n\n if (!/^(\\d+|\\d+\\.\\d+\\.\\d+)(?:-(?:alpha|beta|rc)\\.\\d+)*$/.test(version)) {\n throw new Error(\n `Invalid version format \"${version}\" for theme brand \"${name}\".`,\n );\n }\n }\n\n /**\n * @internal\n * Serializes the theme brand to a JSON-compatible object.\n */\n public serialize(): SkyThemeBrandData {\n const result: SkyThemeBrandData = {\n name: this.name,\n version: this.version,\n };\n\n // Only include hostClass if it's different from the default\n const defaultHostClass = this.#buildDefaultHostClassName();\n\n if (this.hostClass !== defaultHostClass) {\n result.hostClass = this.hostClass;\n }\n\n // Include styleUrl and sriHash if they are provided\n if (this.styleUrl) {\n result.styleUrl = this.styleUrl;\n }\n\n if (this.sriHash) {\n result.sriHash = this.sriHash;\n }\n\n return result;\n }\n\n /**\n * @internal\n * Deserializes a JSON object to a SkyThemeBrand instance.\n */\n public static deserialize(data: SkyThemeBrandData): SkyThemeBrand {\n return new SkyThemeBrand(\n data.name,\n data.version,\n data.hostClass,\n data.styleUrl,\n data.sriHash,\n );\n }\n\n #buildDefaultHostClassName(): string {\n return `sky-theme-brand-${this.name}`;\n }\n}\n","import { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettingsData } from './theme-serialization-types';\nimport { SkyThemeSpacing } from './theme-spacing';\n\n/**\n * Specifies the theme and mode to be applied to a host element.\n */\nexport class SkyThemeSettings {\n /**\n * Creates a new SkyThemeSettings instance.\n * @param theme The theme configuration.\n * @param mode The theme mode.\n */\n constructor(\n public readonly theme: SkyTheme,\n public readonly mode: SkyThemeMode,\n public readonly spacing = SkyThemeSpacing.presets.standard,\n public readonly brand?: SkyThemeBrand,\n ) {}\n\n /**\n * Serializes the theme settings to a string.\n */\n public serialize(): string {\n const result: SkyThemeSettingsData = {\n theme: this.theme.serialize(),\n mode: this.mode.serialize(),\n };\n\n // Only include spacing if it's not the default\n if (this.spacing !== SkyThemeSpacing.presets.standard) {\n result.spacing = this.spacing.serialize();\n }\n\n // Only include brand if it exists\n if (this.brand) {\n result.brand = this.brand.serialize();\n }\n\n return JSON.stringify(result);\n }\n\n /**\n * Deserializes a string to a SkyThemeSettings instance.\n */\n public static deserialize(value: string): SkyThemeSettings {\n const settingsData = JSON.parse(value) as SkyThemeSettingsData;\n\n const theme = SkyTheme.deserialize(settingsData.theme);\n const mode = SkyThemeMode.deserialize(settingsData.mode);\n const spacing = settingsData.spacing\n ? SkyThemeSpacing.deserialize(settingsData.spacing)\n : SkyThemeSpacing.presets.standard;\n const brand = settingsData.brand\n ? SkyThemeBrand.deserialize(settingsData.brand)\n : undefined;\n\n return new SkyThemeSettings(theme, mode, spacing, brand);\n }\n}\n","import { Injectable, Renderer2 } from '@angular/core';\n\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { SkyTheme } from './theme';\nimport { SkyThemeBrand } from './theme-brand';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeSettingsChange } from './theme-settings-change';\nimport { SkyThemeSpacing } from './theme-spacing';\n\nconst BRAND_BLACKBAUD = 'blackbaud';\n\nfunction assertCurrentSettings(\n currentSettings: SkyThemeSettings | undefined,\n): asserts currentSettings is SkyThemeSettings {\n if (!currentSettings) {\n throw new Error('Theme service is not initialized. Call init() first.');\n }\n}\n\n/**\n * Provides methods for updating and handling changes to the current theme.\n */\n@Injectable()\nexport class SkyThemeService {\n /**\n * Notifies consumers when the current theme settings have changed.\n */\n public get settingsChange(): Observable<SkyThemeSettingsChange> {\n return this.#_settingsObs;\n }\n\n #current: SkyThemeSettings | undefined;\n\n #brandLinkElement: HTMLLinkElement | undefined;\n\n #hostEl: any | undefined;\n\n #renderer: Renderer2 | undefined;\n\n #settings: ReplaySubject<SkyThemeSettingsChange>;\n\n #registeredBrands = new Map<string, SkyThemeBrand>();\n\n #_settingsObs: Observable<SkyThemeSettingsChange>;\n\n constructor() {\n this.#settings = new ReplaySubject<SkyThemeSettingsChange>(1);\n this.#_settingsObs = this.#settings.asObservable();\n }\n\n /**\n * Initializes the theme service with the specified parameters. This should only be called\n * from a host component that provides its own theme to child components.\n * @param hostEl The host element under which themed components are rendered.\n * @param renderer A Renderer2 instance for updating the host element with theme changes.\n * @param theme The initial theme.\n * @param registeredBrands An initial set of brands to register. Additional brands can\n * be registered later via the registerBrand() method.\n */\n public init(\n hostEl: any,\n renderer: Renderer2,\n theme: SkyThemeSettings,\n registeredBrands?: SkyThemeBrand[],\n ): void {\n this.#hostEl = hostEl;\n this.#renderer = renderer;\n\n if (registeredBrands) {\n for (const brand of registeredBrands) {\n this.#registeredBrands.set(brand.name, brand);\n }\n }\n\n this.setTheme(theme);\n }\n\n /**\n * Destroys the current theme service. This should only be called from a host component that\n * provides its own theme to child components.\n */\n public destroy(): void {\n this.#settings.complete();\n\n this.#hostEl = this.#renderer = undefined;\n }\n\n /**\n * Updates the current theme mode.\n * @param mode The new theme mode to apply.\n */\n public setThemeMode(mode: SkyThemeMode): void {\n this.#updateThemeProperty('mode', mode);\n }\n\n /**\n * Updates the current theme spacing.\n * @param spacing The new theme spacing to apply.\n */\n public setThemeSpacing(spacing: SkyThemeSpacing): void {\n this.#updateThemeProperty('spacing', spacing);\n }\n\n /**\n * Updates the current theme brand.\n * @param brand The new theme brand to apply, or undefined to clear the current brand.\n */\n public setThemeBrand(brand: SkyThemeBrand | undefined): void {\n this.#updateThemeProperty('brand', brand);\n }\n\n /**\n * Updates the current theme settings.\n * @param settings The new theme settings to apply.\n */\n public setTheme(settings: SkyThemeSettings): void;\n\n /**\n * Updates the current theme.\n * @param theme The new theme to apply.\n */\n public setTheme(theme: SkyTheme): void;\n\n public setTheme(settingsOrTheme: SkyThemeSettings | SkyTheme): void {\n let settings: SkyThemeSettings;\n\n if (settingsOrTheme instanceof SkyThemeSettings) {\n settings = this.#applyRegisteredBrand(settingsOrTheme);\n } else {\n const current = this.#current;\n\n assertCurrentSettings(current);\n\n settings = new SkyThemeSettings(\n settingsOrTheme,\n current.mode,\n current.spacing,\n settingsOrTheme.supportsBranding ? current.brand : undefined,\n );\n }\n\n const previous = this.#current;\n\n this.#applyThemeClass(previous, settings, 'theme');\n this.#applyThemeClass(previous, settings, 'mode', 'supportedModes');\n this.#applyThemeClass(previous, settings, 'spacing', 'supportedSpacing');\n this.#applyThemeClass(previous, settings, 'brand');\n\n this.#settings.next({\n currentSettings: settings,\n previousSettings: previous,\n });\n\n this.#current = settings;\n }\n\n public registerBrand(brand: SkyThemeBrand): void {\n this.#registeredBrands.set(brand.name, brand);\n }\n\n public unregisterBrand(name: string): void {\n this.#registeredBrands.delete(name);\n }\n\n #applyRegisteredBrand(settings: SkyThemeSettings): SkyThemeSettings {\n const brandName = settings.brand?.name;\n\n if (brandName) {\n const registeredBrand = this.#registeredBrands.get(brandName);\n\n if (registeredBrand) {\n settings = new SkyThemeSettings(\n settings.theme,\n settings.mode,\n settings.spacing,\n registeredBrand,\n );\n }\n }\n\n return settings;\n }\n\n #updateThemeProperty(\n property: 'mode' | 'spacing' | 'brand',\n value: SkyThemeMode | SkyThemeSpacing | SkyThemeBrand | undefined,\n ): void {\n const current = this.#current;\n\n assertCurrentSettings(current);\n\n const currentTheme = current.theme;\n\n let supportedValues: SkyThemeMode[] | SkyThemeSpacing[] | undefined =\n undefined;\n\n switch (property) {\n case 'mode':\n supportedValues = currentTheme.supportedModes;\n break;\n case 'spacing':\n supportedValues = currentTheme.supportedSpacing;\n break;\n default:\n }\n\n if (supportedValues && value && !supportedValues.includes(value)) {\n throw new Error(\n `The current theme does not support the specified ${property}.`,\n );\n }\n\n const updatedSettings = {\n theme: current.theme,\n mode: current.mode,\n spacing: current.spacing,\n brand: current.brand,\n [property]: value,\n };\n\n this.setTheme(\n new SkyThemeSettings(\n updatedSettings.theme,\n updatedSettings.mode,\n updatedSettings.spacing,\n updatedSettings.brand,\n ),\n );\n }\n\n #applyThemeClass(\n previous: SkyThemeSettings | undefined,\n current: SkyThemeSettings,\n prop: 'theme' | 'mode' | 'spacing' | 'brand',\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): void {\n const currentSetting = current[prop];\n const previousClass = previous?.[prop]?.hostClass;\n const currentClass = currentSetting?.hostClass;\n\n if (!previousClass || previousClass !== currentClass) {\n this.#updateHostClass(\n prop,\n previousClass,\n currentClass,\n currentSetting,\n current,\n supportedProp,\n );\n\n if (prop === 'brand') {\n if (!current.theme.supportsBranding && currentSetting) {\n throw new Error('Branding is not supported for the given theme.');\n }\n\n this.#updateBrandStylesheet(current.brand, previous?.brand);\n }\n }\n }\n\n #updateBrandStylesheet(\n currentBrand: SkyThemeBrand | undefined,\n previousBrand: SkyThemeBrand | undefined,\n ): void {\n if (previousBrand && previousBrand.name !== BRAND_BLACKBAUD) {\n this.#removeBrandStylesheet();\n }\n\n if (currentBrand && currentBrand.name !== BRAND_BLACKBAUD) {\n this.#addBrandStylesheet(currentBrand);\n }\n }\n\n #updateHostClass(\n prop: 'theme' | 'mode' | 'spacing' | 'brand',\n previousClass: string | undefined,\n currentClass: string | undefined,\n currentSetting:\n | SkyTheme\n | SkyThemeMode\n | SkyThemeSpacing\n | SkyThemeBrand\n | undefined,\n current: SkyThemeSettings,\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): void {\n if (previousClass) {\n this.#removeHostClass(previousClass);\n }\n\n if (prop === 'brand') {\n if (currentClass && !previousClass) {\n this.#addHostClass('sky-theme-brand-base');\n } else if (!currentClass && previousClass) {\n this.#removeHostClass('sky-theme-brand-base');\n }\n }\n\n if (\n currentClass &&\n this.#isSupportedProperty(currentSetting, current, supportedProp)\n ) {\n this.#addHostClass(currentClass);\n }\n }\n\n #addBrandStylesheet(brand: SkyThemeBrand): void {\n if (brand.name !== BRAND_BLACKBAUD) {\n // Use styleUrl if provided, otherwise build the default URL\n const styleUrl =\n brand.styleUrl ||\n `https://sky.blackbaudcdn.net/static/skyux-brand-${brand.name}/${brand.version}/assets/scss/${brand.name}.css`;\n\n const renderer = this.#getRenderer();\n\n this.#brandLinkElement = renderer.createElement(\n 'link',\n ) as HTMLLinkElement;\n\n renderer.appendChild(this.#hostEl, this.#brandLinkElement);\n\n renderer.setAttribute(this.#brandLinkElement, 'rel', 'stylesheet');\n renderer.setAttribute(this.#brandLinkElement, 'href', styleUrl);\n\n if (brand.sriHash) {\n renderer.setAttribute(\n this.#brandLinkElement,\n 'integrity',\n brand.sriHash,\n );\n\n renderer.setAttribute(\n this.#brandLinkElement,\n 'crossorigin',\n 'anonymous',\n );\n }\n }\n }\n\n #removeBrandStylesheet(): void {\n if (this.#brandLinkElement) {\n this.#getRenderer().removeChild(this.#hostEl, this.#brandLinkElement);\n this.#brandLinkElement = undefined;\n }\n }\n\n #addHostClass(className: string): void {\n this.#getRenderer().addClass(this.#hostEl, className);\n }\n\n #removeHostClass(className: string): void {\n this.#getRenderer().removeClass(this.#hostEl, className);\n }\n\n #getRenderer(): Renderer2 {\n if (!this.#renderer) {\n throw new Error(\n 'Renderer is not initialized. Have you called the theme service `init` method?',\n );\n }\n return this.#renderer;\n }\n\n #isSupportedProperty(\n currentSetting:\n | SkyTheme\n | SkyThemeMode\n | SkyThemeSpacing\n | SkyThemeBrand\n | undefined,\n current: SkyThemeSettings,\n supportedProp?: 'supportedModes' | 'supportedSpacing',\n ): boolean {\n return (\n !supportedProp ||\n ((currentSetting instanceof SkyThemeMode ||\n currentSetting instanceof SkyThemeSpacing) &&\n current.theme[supportedProp].includes(currentSetting))\n );\n }\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport FontFaceObserver from 'fontfaceobserver';\nimport { take } from 'rxjs/operators';\n\nimport { SkyThemeService } from './theming/theme.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppStyleLoader {\n public static readonly LOAD_TIMEOUT = 3000;\n public isLoaded = false;\n\n #themeSvc: SkyThemeService | undefined;\n\n constructor(@Optional() themeSvc?: SkyThemeService) {\n this.#themeSvc = themeSvc;\n }\n\n public loadStyles(): Promise<any> {\n if (this.isLoaded) {\n return Promise.resolve();\n }\n\n let themePromise: Promise<any>;\n\n if (this.#themeSvc) {\n themePromise = this.#themeSvc.settingsChange.pipe(take(1)).toPromise();\n } else {\n themePromise = Promise.resolve();\n }\n\n const fontAwesome = new FontFaceObserver('FontAwesome');\n const skyuxIcons = new FontFaceObserver('skyux-icons');\n const blackbaudSans = new FontFaceObserver('BLKB Sans');\n\n return Promise.all([\n // Specify a character for FontAwesome since some browsers will fail to detect\n // when the font is loaded unless a known character with a different width\n // than the default is not specified.\n fontAwesome.load('\\uf0fc', SkyAppStyleLoader.LOAD_TIMEOUT),\n skyuxIcons.load('\\ue999', SkyAppStyleLoader.LOAD_TIMEOUT),\n blackbaudSans.load(undefined, SkyAppStyleLoader.LOAD_TIMEOUT),\n themePromise,\n ])\n .then(() => {\n this.isLoaded = true;\n })\n .catch((error) => {\n // Errors loading the font should not stop the page from rendering.\n // Passing the error along in case the client wants to do something with it.\n return Promise.resolve({\n error,\n });\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Renderer2,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\ntype SkyThemeClassMap = Record<string, string>;\n\n/**\n * Component to add classes conditionally based on the current theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeClass]',\n standalone: false,\n})\nexport class SkyThemeClassDirective implements OnDestroy {\n /**\n * The HTML class attribute.\n *\n * @param value\n */\n @Input()\n public set class(value: string | undefined) {\n this.#removeInitialClasses(this.#initialClasses);\n this.#initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n /**\n * An object with class names in a string for keys, and theme names (e.g. 'default' or 'modern') as values.\n *\n * @param value\n */\n @Input()\n public set skyThemeClass(value: SkyThemeClassMap | undefined) {\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n\n this.#skyThemeClassMap = value as SkyThemeClassMap;\n\n /* istanbul ignore else */\n if (this.#skyThemeClassMap) {\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n }\n\n set #themeSettings(settings: SkyThemeSettings) {\n this.#currentTheme = settings;\n this.#removeSkyThemeClassMap(this.#skyThemeClassMap);\n this.#applyInitialClasses(this.#initialClasses);\n this.#applySkyThemeClassMap(this.#skyThemeClassMap);\n }\n\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #initialClasses: string[] = [];\n #skyThemeClassMap: SkyThemeClassMap | undefined;\n\n #ngEl: ElementRef;\n #renderer: Renderer2;\n\n constructor(\n ngEl: ElementRef,\n renderer: Renderer2,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#ngEl = ngEl;\n this.#renderer = renderer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#themeSettings = settingsChange.currentSettings;\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #applyInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, true));\n }\n }\n\n #applySkyThemeClassMap(skyThemeClassMap: SkyThemeClassMap | undefined): void {\n if (skyThemeClassMap) {\n const themeName = this.#currentTheme?.theme.name || 'default';\n Object.keys(skyThemeClassMap).forEach((className) => {\n const enabled = themeName === skyThemeClassMap[className];\n this.#toggleClass(className, enabled);\n });\n }\n }\n\n #removeInitialClasses(classes: string[]): void {\n /* istanbul ignore else */\n if (classes) {\n classes.forEach((className) => this.#toggleClass(className, false));\n }\n }\n\n #removeSkyThemeClassMap(\n skyThemeClassMap: SkyThemeClassMap | undefined,\n ): void {\n if (skyThemeClassMap) {\n Object.keys(skyThemeClassMap).forEach((className) =>\n this.#toggleClass(className, false),\n );\n }\n }\n\n #toggleClass(className: string, enabled: boolean): void {\n className = className.trim();\n /* istanbul ignore else */\n if (className) {\n className.split(/\\s+/g).forEach((classNameItem) => {\n if (enabled) {\n this.#renderer.addClass(this.#ngEl.nativeElement, classNameItem);\n } else {\n this.#renderer.removeClass(this.#ngEl.nativeElement, classNameItem);\n }\n });\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\n/**\n * Component that works like `ngIf` to show markup for matching theme.\n *\n * If the directive is within a `skyTheme` directive, it uses settings from that directive.\n */\n@Directive({\n selector: '[skyThemeIf]',\n standalone: false,\n})\nexport class SkyThemeIfDirective implements OnDestroy {\n /**\n * A string that should match the name of a theme, `'default'` or `'modern'`.\n *\n * @param value\n */\n @Input()\n public set skyThemeIf(value: 'default' | 'modern' | undefined) {\n this.#context = value;\n this.#updateView();\n }\n\n #context: string | undefined;\n #currentTheme: SkyThemeSettings | undefined;\n #ngUnsubscribe = new Subject<void>();\n #hasView = false;\n\n #templateRef: TemplateRef<unknown>;\n #viewContainer: ViewContainerRef;\n\n constructor(\n templateRef: TemplateRef<unknown>,\n viewContainer: ViewContainerRef,\n changeDetector: ChangeDetectorRef,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#templateRef = templateRef;\n this.#viewContainer = viewContainer;\n if (themeSvc) {\n themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((settingsChange) => {\n this.#currentTheme = settingsChange.currentSettings;\n this.#updateView();\n\n // Components that use OnPush change detection will not automatically\n // check for changes when created as a result of a theme change if\n // it happens outside of an Angular change detection cycle. This\n // ensures change detection runs on those components.\n changeDetector.markForCheck();\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n #updateView(): void {\n const themeName = this.#currentTheme?.theme.name || 'default';\n const condition = this.#context && themeName === this.#context;\n if (condition && !this.#hasView) {\n this.#viewContainer.createEmbeddedView(this.#templateRef);\n this.#hasView = true;\n } else if (!condition && this.#hasView) {\n this.#viewContainer.clear();\n this.#hasView = false;\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { SkyTheme } from './theme';\nimport { SkyThemeMode } from './theme-mode';\nimport { SkyThemeSettings } from './theme-settings';\nimport { SkyThemeService } from './theme.service';\n\nconst defaultTheme = new SkyThemeSettings(\n SkyTheme.presets.default,\n SkyThemeMode.presets.light,\n);\n\n/**\n * Creates a new instance of `SkyThemeService` to allow a container\n * to have its own theme.\n */\n@Directive({\n selector: '[skyTheme]',\n providers: [SkyThemeService],\n standalone: false,\n})\nexport class SkyThemeDirective implements OnInit, OnDestroy {\n @Input()\n public set skyTheme(value: SkyThemeSettings | undefined) {\n this.skyThemeOrDefault = value || defaultTheme;\n\n if (this.#initialized) {\n this.#themeSvc.setTheme(this.skyThemeOrDefault);\n }\n }\n\n public skyThemeOrDefault = defaultTheme;\n\n #initialized = false;\n\n #elRef: ElementRef;\n #renderer: Renderer2;\n #themeSvc: SkyThemeService;\n\n constructor(\n elRef: ElementRef,\n renderer: Renderer2,\n themeSvc: SkyThemeService,\n ) {\n this.#elRef = elRef;\n this.#renderer = renderer;\n this.#themeSvc = themeSvc;\n }\n\n public ngOnInit(): void {\n this.#themeSvc.init(\n this.#elRef.nativeElement,\n this.#renderer,\n this.skyThemeOrDefault,\n );\n\n this.#initialized = true;\n }\n\n public ngOnDestroy(): void {\n this.#themeSvc.destroy();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyThemeClassDirective } from './theming/theme-class.directive';\nimport { SkyThemeIfDirective } from './theming/theme-if.directive';\nimport { SkyThemeDirective } from './theming/theme.directive';\n\n@NgModule({\n declarations: [\n SkyThemeClassDirective,\n SkyThemeDirective,\n SkyThemeIfDirective,\n ],\n exports: [SkyThemeClassDirective, SkyThemeDirective, SkyThemeIfDirective],\n})\nexport class SkyThemeModule {}\n","import {\n ChangeDetectorRef,\n Directive,\n HostBinding,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { SkyThemeService } from '../theming/theme.service';\n\n@Directive({\n selector: '[skyThemeClass]',\n standalone: true,\n})\nexport class SkyThemeComponentClassDirective {\n @HostBinding('class')\n public theme = 'sky-cmp-theme-default';\n\n #changeDetector = inject(ChangeDetectorRef);\n #themeService = inject(SkyThemeService, { optional: true });\n\n constructor() {\n this.#themeService?.settingsChange\n .pipe(takeUntilDestroyed())\n .subscribe((change) => {\n this.theme = `sky-cmp-theme-${change.currentSettings.theme.name}`;\n this.#changeDetector.markForCheck();\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { DestroyRef, Injectable, NgZone, inject } from '@angular/core';\n\nimport { ReplaySubject } from 'rxjs';\n\nimport { SkyAppViewportReserveArgs } from './viewport-reserve-args';\nimport { SkyAppViewportReservedPositionType } from './viewport-reserve-position-type';\n\ntype ReserveItemType = SkyAppViewportReserveArgs & {\n active: boolean;\n};\n\n/**\n * Provides information about the state of the application's viewport.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class SkyAppViewportService {\n /**\n * Updated when the viewport becomes visible. While the page is rendered, the\n * viewport may remain hidden as fonts and styles are loaded asynchronously;\n * this is done to avoid a FOUC (Flash Of Unstyled Content) before the fonts\n * and styles are ready.\n */\n public visible = new ReplaySubject<boolean>(1);\n\n // ESLint doesn't recognize how this is used.\n #updateRequest: number | undefined = undefined;\n readonly #reserveItems = new Map<string, ReserveItemType>();\n readonly #conditionallyReserveItems = new Map<Element, ReserveItemType>();\n readonly #document = inject(DOCUMENT);\n readonly #ngZone = inject(NgZone);\n // Observe elements crossing the browser's viewport boundaries.\n readonly #intersectionObserver = this.#ngZone.runOutsideAngular(\n () =>\n new IntersectionObserver(\n () => this.#ngZone.run(() => this.#updateViewportArea()),\n { threshold: Array.from({ length: 101 }, (_, i) => i / 100) },\n ),\n );\n #reservedSpaces: Record<SkyAppViewportReservedPositionType, number> = {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n\n constructor() {\n const onScroll = (): void => {\n if (this.#conditionallyReserveItems.size > 0) {\n this.#updateViewportArea();\n }\n };\n this.#document.addEventListener('scroll', onScroll);\n inject(DestroyRef).onDestroy(() => {\n /* istanbul ignore next */\n if (this.#updateRequest !== undefined) {\n cancelAnimationFrame(this.#updateRequest);\n }\n this.#intersectionObserver.disconnect();\n this.#document.removeEventListener('scroll', onScroll);\n });\n }\n\n /**\n * Reserves space for components docked to the left, top, right, or bottom of the viewport.\n * @param args\n */\n public reserveSpace(args: SkyAppViewportReserveArgs): void {\n const item = {\n ...args,\n active: this.#isElementVisible({ ...args, active: false }),\n };\n this.#reserveItems.set(args.id, item);\n this.#watchVisibility(item);\n this.#updateViewportArea();\n }\n\n /**\n * Removes reserved space for a component by the ID provided when it was reserved.\n * @param id\n */\n public unreserveSpace(id: string): void {\n const args = this.#reserveItems.get(id);\n if (args?.reserveForElement) {\n this.#intersectionObserver.unobserve(args.reserveForElement);\n this.#conditionallyReserveItems.delete(args.reserveForElement);\n }\n this.#reserveItems.delete(id);\n this.#updateViewportArea();\n }\n\n #updateViewportArea(): void {\n this.#updateRequest ??= requestAnimationFrame(() => {\n this.#updateRequest = undefined;\n const reservedSpaces: Record<SkyAppViewportReservedPositionType, number> =\n {\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n };\n\n for (const args of this.#reserveItems.values()) {\n args.active = this.#isElementVisible(args, reservedSpaces);\n if (args.active) {\n reservedSpaces[args.position] += args.size;\n }\n }\n\n this.#reservedSpaces = reservedSpaces;\n const documentElementStyle = this.#document.documentElement.style;\n\n for (const [position, size] of Object.entries(reservedSpaces)) {\n documentElementStyle.setProperty(\n `--sky-viewport-${position}`,\n size + 'px',\n );\n }\n });\n }\n\n #watchVisibility(item: ReserveItemType): void {\n if (item.reserveForElement) {\n this.#conditionallyReserveItems.set(item.reserveForElement, item);\n this.#intersectionObserver.observe(item.reserveForElement);\n }\n }\n\n #isElementVisible(\n args: ReserveItemType,\n reservedSpaces: Record<SkyAppViewportReservedPositionType, number> = this\n .#reservedSpaces,\n ): boolean {\n if (!args.reserveForElement) {\n return true;\n }\n const rect = args.reserveForElement.getBoundingClientRect();\n if (!rect || !rect.height || !rect.width) {\n return false;\n }\n const midpoint = {\n x: rect.x + Math.floor(rect.width / 2),\n y: rect.y + Math.floor(rect.height / 2),\n };\n if (\n // Vertically in view\n midpoint.y <= window.innerHeight &&\n midpoint.y >= 0 &&\n // Horizontally in view\n midpoint.x <= window.innerWidth &&\n midpoint.x >= 0\n ) {\n // Element is not hidden by another element\n if (\n args.reserveForElement.contains(\n this.#document.elementFromPoint(midpoint.x, midpoint.y),\n )\n ) {\n return true;\n }\n\n // Check if the item's midpoint is visible based on current reserved spaces.\n // Assumes reserved spaces are intended to be additive and not overlapping.\n const threshold = reservedSpaces[args.position];\n switch (args.position) {\n case 'top':\n return midpoint.y >= threshold;\n case 'right':\n return midpoint.x <= window.innerWidth - threshold;\n case 'bottom':\n return midpoint.y <= window.innerHeight - threshold;\n case 'left':\n return midpoint.x >= threshold;\n }\n }\n return false;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n EnvironmentProviders,\n RendererFactory2,\n inject,\n makeEnvironmentProviders,\n provideAppInitializer,\n} from '@angular/core';\n\nimport { SkyTheme } from '../theming/theme';\nimport { SkyThemeMode } from '../theming/theme-mode';\nimport { SkyThemeSettings } from '../theming/theme-settings';\nimport { SkyThemeSpacing } from '../theming/theme-spacing';\nimport { SkyThemeService } from '../theming/theme.service';\n\nexport function provideInitialTheme(\n name: keyof typeof SkyTheme.presets = 'default',\n options?: {\n mode?: keyof typeof SkyThemeMode.presets;\n spacing?: keyof typeof SkyThemeSpacing.presets;\n },\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n SkyThemeService,\n provideAppInitializer(() => {\n const initializerFn = ((\n themeService: SkyThemeService,\n doc: Document,\n rendererFactory: RendererFactory2,\n ) => {\n return (): void => {\n themeService.init(\n doc.body,\n rendererFactory.createRenderer(null, null),\n new SkyThemeSettings(\n SkyTheme.presets[name],\n SkyThemeMode.presets[options?.mode ?? 'light'],\n SkyThemeSpacing.presets[options?.spacing ?? 'standard'],\n ),\n );\n };\n })(inject(SkyThemeService), inject(DOCUMENT), inject(RendererFactory2));\n return initializerFn();\n }),\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkyThemeService"],"mappings":"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"}
|
|
@@ -44,9 +44,9 @@ export declare class SkyThemeService {
|
|
|
44
44
|
setThemeSpacing(spacing: SkyThemeSpacing): void;
|
|
45
45
|
/**
|
|
46
46
|
* Updates the current theme brand.
|
|
47
|
-
* @param brand The new theme brand to apply.
|
|
47
|
+
* @param brand The new theme brand to apply, or undefined to clear the current brand.
|
|
48
48
|
*/
|
|
49
|
-
setThemeBrand(brand: SkyThemeBrand): void;
|
|
49
|
+
setThemeBrand(brand: SkyThemeBrand | undefined): void;
|
|
50
50
|
/**
|
|
51
51
|
* Updates the current theme settings.
|
|
52
52
|
* @param settings The new theme settings to apply.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skyux/theme",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.31.0",
|
|
4
4
|
"author": "Blackbaud, Inc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blackbaud",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@angular/core": "^19.2.14"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@blackbaud/skyux-design-tokens": "2.0.0-alpha.
|
|
23
|
+
"@blackbaud/skyux-design-tokens": "2.0.0-alpha.10",
|
|
24
24
|
"@skyux/icons": "9.0.0",
|
|
25
25
|
"fontfaceobserver": "2.3.0",
|
|
26
26
|
"tslib": "^2.8.1"
|