@hermes-ui/angular 0.1.7 → 0.2.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.
Files changed (108) hide show
  1. package/README.md +6 -6
  2. package/button/_buttons.clarity.scss +80 -2
  3. package/button/_mixins.buttons.scss +44 -2
  4. package/button/_properties.buttons.scss +209 -247
  5. package/button/_variables.buttons.scss +22 -0
  6. package/fesm2022/hermes-ui-angular-accordion.mjs +2 -2
  7. package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -1
  8. package/fesm2022/hermes-ui-angular-addons-card-container.mjs +3 -3
  9. package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -1
  10. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs +2 -2
  11. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -1
  12. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs +2 -2
  13. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -1
  14. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +2 -2
  15. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -1
  16. package/fesm2022/hermes-ui-angular-addons-property-view.mjs +2 -2
  17. package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -1
  18. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs +66 -66
  19. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -1
  20. package/fesm2022/hermes-ui-angular-addons-var.mjs +2 -2
  21. package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -1
  22. package/fesm2022/hermes-ui-angular-addons-wizard.mjs +2 -2
  23. package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -1
  24. package/fesm2022/hermes-ui-angular-button.mjs +2 -2
  25. package/fesm2022/hermes-ui-angular-button.mjs.map +1 -1
  26. package/fesm2022/hermes-ui-angular-data-datagrid.mjs +2 -2
  27. package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -1
  28. package/fesm2022/hermes-ui-angular-data-stack-view.mjs +2 -2
  29. package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -1
  30. package/fesm2022/hermes-ui-angular-data-tree-view.mjs +2 -2
  31. package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -1
  32. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs +2 -2
  33. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -1
  34. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +2 -2
  35. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -1
  36. package/fesm2022/hermes-ui-angular-forms-combobox.mjs +2 -2
  37. package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -1
  38. package/fesm2022/hermes-ui-angular-forms-common.mjs +2 -2
  39. package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -1
  40. package/fesm2022/hermes-ui-angular-forms-datalist.mjs +2 -2
  41. package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -1
  42. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +3 -3
  43. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -1
  44. package/fesm2022/hermes-ui-angular-forms-file-input.mjs +2 -2
  45. package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -1
  46. package/fesm2022/hermes-ui-angular-forms-input.mjs +2 -2
  47. package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -1
  48. package/fesm2022/hermes-ui-angular-forms-native-select.mjs +2 -2
  49. package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -1
  50. package/fesm2022/hermes-ui-angular-forms-number-input.mjs +2 -2
  51. package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -1
  52. package/fesm2022/hermes-ui-angular-forms-password.mjs +2 -2
  53. package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -1
  54. package/fesm2022/hermes-ui-angular-forms-radio.mjs +2 -2
  55. package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -1
  56. package/fesm2022/hermes-ui-angular-forms-range.mjs +2 -2
  57. package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -1
  58. package/fesm2022/hermes-ui-angular-forms-select.mjs +2 -2
  59. package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -1
  60. package/fesm2022/hermes-ui-angular-forms-textarea.mjs +2 -2
  61. package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -1
  62. package/fesm2022/hermes-ui-angular-icon.mjs +29 -29
  63. package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -1
  64. package/fesm2022/hermes-ui-angular-layout-nav.mjs +2 -2
  65. package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -1
  66. package/fesm2022/hermes-ui-angular-layout-tabs.mjs +2 -2
  67. package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -1
  68. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs +382 -28
  69. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -1
  70. package/fesm2022/hermes-ui-angular-modal.mjs +2 -2
  71. package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -1
  72. package/fesm2022/hermes-ui-angular-popover-signpost.mjs +2 -2
  73. package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -1
  74. package/fesm2022/hermes-ui-angular-stepper.mjs +2 -2
  75. package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -1
  76. package/fesm2022/hermes-ui-angular-timeline.mjs +2 -2
  77. package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -1
  78. package/fesm2022/hermes-ui-angular-toast.mjs +2 -2
  79. package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -1
  80. package/fesm2022/hermes-ui-angular-utils.mjs +6 -0
  81. package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -1
  82. package/fesm2022/hermes-ui-angular-wizard.mjs +2 -2
  83. package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -1
  84. package/forms/combobox/_combobox.clarity.scss +18 -4
  85. package/forms/combobox/_properties.combobox.scss +5 -5
  86. package/forms/styles/_input-group.clarity.scss +7 -0
  87. package/forms/styles/_mixins.forms.scss +12 -10
  88. package/forms/styles/_native-select.clarity.scss +17 -5
  89. package/forms/styles/_properties.forms.scss +29 -18
  90. package/forms/styles/_textarea.clarity.scss +4 -4
  91. package/forms/styles/_variables.forms.scss +6 -0
  92. package/layout/main-container/_properties.header.scss +44 -6
  93. package/layout/main-container/_variables.header.scss +11 -0
  94. package/layout/nav/_header.clarity.scss +14 -0
  95. package/layout/nav/_mixins.header.scss +55 -40
  96. package/layout/nav/_responsive-nav.clarity.scss +21 -10
  97. package/layout/vertical-nav/_properties.vertical-nav.scss +77 -27
  98. package/layout/vertical-nav/_variables.vertical-nav.scss +23 -0
  99. package/layout/vertical-nav/_vertical-nav.clarity.scss +418 -277
  100. package/package.json +1 -1
  101. package/types/hermes-ui-angular-addons-theme-builder.d.ts +2 -2
  102. package/types/hermes-ui-angular-addons-theme-builder.d.ts.map +1 -1
  103. package/types/hermes-ui-angular-icon.d.ts +3 -3
  104. package/types/hermes-ui-angular-icon.d.ts.map +1 -1
  105. package/types/hermes-ui-angular-layout-vertical-nav.d.ts +134 -10
  106. package/types/hermes-ui-angular-layout-vertical-nav.d.ts.map +1 -1
  107. package/types/hermes-ui-angular-utils.d.ts +12 -0
  108. package/types/hermes-ui-angular-utils.d.ts.map +1 -1
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
4
4
  import { EventEmitter, Input, ViewChild, Output, Component } from '@angular/core';
5
5
  import * as i22 from '@angular/forms';
6
6
  import { FormsModule } from '@angular/forms';
7
- import { HermesTimelineStepState, ClarityIcons, sunIcon, moonIcon, undoIcon, homeIcon, cogIcon, userIcon, HermesModule } from '@hermes-ui/angular';
7
+ import { HermesTimelineStepState, HermesIcons, sunIcon, moonIcon, undoIcon, homeIcon, cogIcon, userIcon, HermesModule } from '@hermes-ui/angular';
8
8
  import * as i1 from '@hermes-ui/angular/emphasis/alert';
9
9
  import * as i2 from '@hermes-ui/angular/emphasis/label';
10
10
  import * as i3 from '@hermes-ui/angular/data/datagrid';
@@ -92,14 +92,14 @@ class OKLabColor {
92
92
  * The full license information can be found in LICENSE in the root directory of this project.
93
93
  */
94
94
  /**
95
- * A single theme token: its CSS custom property name, the original Clarity-provided
95
+ * A single theme token: its CSS custom property name, the original Hermes-provided
96
96
  * HSL value, and the current (possibly user-edited) color. Colors are stored in HSL;
97
97
  * RGB and HEX are derived on demand.
98
98
  */
99
99
  class Color {
100
100
  /**
101
101
  * @param name CSS custom property name, e.g. `--hermes-alias-status-info`
102
- * @param originalColor Clarity-provided HSL, e.g. `hsl(198deg 100% 59%)`
102
+ * @param originalColor Hermes-provided HSL, e.g. `hsl(198deg 100% 59%)`
103
103
  */
104
104
  constructor(name, originalColor) {
105
105
  this.name = name;
@@ -258,12 +258,18 @@ class Color {
258
258
  */
259
259
  const DEFAULT_OVERRIDES = {
260
260
  // primary
261
+ // Resting accent — was missing entirely, so switching presets retinted links/buttons but left
262
+ // every icon and nav item that reads `--hermes-alias-object-interaction-color` (the vertical
263
+ // nav among them) on the shipped default color no matter which preset was active.
264
+ '--hermes-alias-primary': ['--hermes-alias-object-interaction-color', '--hermes-alias-object-interaction-color-selected'],
261
265
  '--hermes-alias-primary-tint': ['--hermes-alias-object-interaction-background-hover'],
262
266
  '--hermes-alias-primary-shade': ['--hermes-alias-typography-link-color', '--hermes-alias-object-interaction-primary-hover'],
263
267
  '--hermes-alias-primary-dark': [
264
268
  '--hermes-alias-typography-link-color-hover',
265
269
  '--hermes-alias-typography-primary-hover',
266
270
  '--hermes-alias-object-interaction-primary-active',
271
+ '--hermes-alias-object-interaction-color-hover',
272
+ '--hermes-alias-object-interaction-color-active',
267
273
  ],
268
274
  '--hermes-alias-primary-tint-dark': [
269
275
  '--hermes-alias-object-interaction-background-selected',
@@ -397,75 +403,69 @@ const DEFAULT_PRESET = {
397
403
  dark: null,
398
404
  };
399
405
  const PRESETS = [
406
+ // The eleven presets below only swap `primary` (the accent) — `info`/`success`/`warning`/
407
+ // `danger` are left unset, same as Evergreen, since none of them change the meaning of "this is
408
+ // a success/warning/error state." The source theme this was ported from also varies a second,
409
+ // `tertiary` color per family, but that one turned out to be a dataviz categorical color with no
410
+ // Hermes equivalent yet (see git history if we ever want to revisit it) — not, as first assumed
411
+ // here, the vertical nav's background, which stays theme-only in both systems.
400
412
  {
401
- // The original Clarity theme, kept as an explicit, selectable preset now that Evergreen ships as the default.
402
- name: 'Clarity',
403
- light: { primary: new Color('--hermes-alias-primary', 'hsl(198deg 100% 34%)') }, // blue-700
404
- dark: { primary: new Color('--hermes-alias-primary', 'hsl(198deg 100% 59%)') }, // blue-400
413
+ name: 'Hibisco',
414
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(338deg 62% 47%)') },
415
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(338deg 77% 59%)') },
405
416
  },
406
417
  {
407
- name: 'Midnight',
408
- light: {
409
- primary: new Color('--hermes-alias-primary', 'hsl(282deg 60% 49%)'), // violet-600
410
- success: new Color('--hermes-alias-status-success', 'hsl(184deg 100% 34%)'), // aqua-600
411
- warning: new Color('--hermes-alias-status-warning', 'hsl(50deg 100% 57%)'), // yellow-300
412
- },
413
- dark: {
414
- primary: new Color('--hermes-alias-primary', 'hsl(282deg 60% 65%)'), // violet-400
415
- success: new Color('--hermes-alias-status-success', 'hsl(184deg 100% 48%)'), // aqua-400
416
- warning: new Color('--hermes-alias-status-warning', 'hsl(50deg 100% 57%)'), // yellow-300
417
- },
418
+ name: 'Oceano',
419
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(211deg 62% 43%)') },
420
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(211deg 77% 54%)') },
418
421
  },
419
422
  {
420
- name: 'Sunset',
421
- light: {
422
- primary: new Color('--hermes-alias-primary', 'hsl(39deg 100% 50%)'), // ochre-600
423
- info: new Color('--hermes-alias-status-info', 'hsl(238deg 60% 52%)'), // lavender-600
424
- success: new Color('--hermes-alias-status-success', 'hsl(93deg 80% 37%)'), // green-600
425
- warning: new Color('--hermes-alias-status-warning', 'hsl(9deg 100% 59%)'), // red-600
426
- danger: new Color('--hermes-alias-status-danger', 'hsl(345deg 83% 40%)'), // magenta-600
427
- },
428
- dark: {
429
- primary: new Color('--hermes-alias-primary', 'hsl(41deg 100% 70%)'), // ochre-400
430
- info: new Color('--hermes-alias-status-info', 'hsl(238deg 58% 64%)'), // lavender-400
431
- success: new Color('--hermes-alias-status-success', 'hsl(93deg 80% 48%)'), // green-400
432
- warning: new Color('--hermes-alias-status-warning', 'hsl(9deg 100% 71%)'), // red-400
433
- danger: new Color('--hermes-alias-status-danger', 'hsl(345deg 100% 61%)'), // magenta-400
434
- },
423
+ name: 'Ipê',
424
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(36deg 70% 34%)') },
425
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(36deg 85% 41%)') },
435
426
  },
436
427
  {
437
- name: 'Berry',
438
- light: {
439
- primary: new Color('--hermes-alias-primary', 'hsl(345deg 83% 40%)'), // magenta-600
440
- info: new Color('--hermes-alias-status-info', 'hsl(238deg 60% 52%)'), // lavender-600
441
- success: new Color('--hermes-alias-status-success', 'hsl(160deg 69% 36%)'), // jade-600
442
- warning: new Color('--hermes-alias-status-warning', 'hsl(42deg 100% 42%)'), // yellow-600
443
- danger: new Color('--hermes-alias-status-danger', 'hsl(9deg 100% 59%)'), // red-600
444
- },
445
- dark: {
446
- primary: new Color('--hermes-alias-primary', 'hsl(345deg 100% 61%)'), // magenta-400
447
- info: new Color('--hermes-alias-status-info', 'hsl(238deg 58% 64%)'), // lavender-400
448
- success: new Color('--hermes-alias-status-success', 'hsl(160deg 69% 53%)'), // jade-400
449
- warning: new Color('--hermes-alias-status-warning', 'hsl(46deg 100% 52%)'), // yellow-400
450
- danger: new Color('--hermes-alias-status-danger', 'hsl(9deg 100% 71%)'), // red-400
451
- },
428
+ name: 'Jabuticaba',
429
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(286deg 45% 48%)') },
430
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(286deg 60% 60%)') },
452
431
  },
453
432
  {
454
- name: 'Ocean',
455
- light: {
456
- primary: new Color('--hermes-alias-primary', 'hsl(184deg 100% 34%)'), // aqua-600
457
- info: new Color('--hermes-alias-status-info', 'hsl(282deg 60% 49%)'), // violet-600
458
- success: new Color('--hermes-alias-status-success', 'hsl(93deg 80% 37%)'), // green-600
459
- warning: new Color('--hermes-alias-status-warning', 'hsl(42deg 100% 42%)'), // yellow-600
460
- danger: new Color('--hermes-alias-status-danger', 'hsl(9deg 100% 59%)'), // red-600
461
- },
462
- dark: {
463
- primary: new Color('--hermes-alias-primary', 'hsl(184deg 100% 43%)'), // aqua-500
464
- info: new Color('--hermes-alias-status-info', 'hsl(282deg 60% 65%)'), // violet-400
465
- success: new Color('--hermes-alias-status-success', 'hsl(93deg 80% 48%)'), // green-400
466
- warning: new Color('--hermes-alias-status-warning', 'hsl(46deg 100% 52%)'), // yellow-400
467
- danger: new Color('--hermes-alias-status-danger', 'hsl(9deg 100% 71%)'), // red-400
468
- },
433
+ name: 'Samambaia',
434
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(132deg 52% 32%)') },
435
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(132deg 67% 38%)') },
436
+ },
437
+ {
438
+ name: 'Anil',
439
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(255deg 55% 56%)') },
440
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(255deg 70% 67%)') },
441
+ },
442
+ {
443
+ name: 'Urucum',
444
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(8deg 64% 45%)') },
445
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(8deg 79% 57%)') },
446
+ },
447
+ // Ported from the source theme's "Superman"/"Batman" families (a red-on-blue and a
448
+ // yellow-on-graphite accent, respectively) under generic names — this package ships publicly,
449
+ // and those are DC Comics character names.
450
+ {
451
+ name: 'Aviador',
452
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(356deg 78% 45%)') },
453
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(356deg 88% 61%)') },
454
+ },
455
+ {
456
+ name: 'Grafite',
457
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(47deg 91% 27%)') },
458
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(47deg 94% 33%)') },
459
+ },
460
+ {
461
+ name: 'Invencível',
462
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(219deg 80% 50%)') },
463
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(219deg 90% 62%)') },
464
+ },
465
+ {
466
+ name: 'Superchoque',
467
+ light: { primary: new Color('--hermes-alias-primary', 'hsl(41deg 88% 30%)') },
468
+ dark: { primary: new Color('--hermes-alias-primary', 'hsl(41deg 93% 36%)') },
469
469
  },
470
470
  ];
471
471
  const SAMPLE_ROWS = [
@@ -602,7 +602,7 @@ class ThemeBuilderComponent {
602
602
  this.breadcrumbs = [
603
603
  { label: 'Framework', href: 'javascript://' },
604
604
  { label: 'Angular', href: 'javascript://' },
605
- { label: 'Clarity', href: 'javascript://' },
605
+ { label: 'Hermes', href: 'javascript://' },
606
606
  ];
607
607
  this.wizardOpen = false;
608
608
  this.rows = SAMPLE_ROWS;
@@ -612,7 +612,7 @@ class ThemeBuilderComponent {
612
612
  };
613
613
  this.timelineStates = HermesTimelineStepState;
614
614
  this._presets = [DEFAULT_PRESET, ...PRESETS];
615
- ClarityIcons.addIcons(sunIcon, moonIcon, undoIcon, homeIcon, cogIcon, userIcon);
615
+ HermesIcons.addIcons(sunIcon, moonIcon, undoIcon, homeIcon, cogIcon, userIcon);
616
616
  }
617
617
  /**
618
618
  * Presets available in the preset selector. Defaults to Hermes's built-in preset list.
@@ -820,7 +820,7 @@ class ThemeBuilderComponent {
820
820
  this.refreshThemeColors();
821
821
  }
822
822
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: ThemeBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
823
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: ThemeBuilderComponent, isStandalone: true, selector: "hermes-theme-builder", inputs: { presets: "presets" }, outputs: { generatedCSS: "generatedCSS" }, viewQueries: [{ propertyName: "previewWrapper", first: true, predicate: ["previewWrapper"], descendants: true }, { propertyName: "previewDarkWrapper", first: true, predicate: ["previewDarkWrapper"], descendants: true }], ngImport: i0, template: "<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n\r\n<!-- Preset selector -->\r\n<div class=\"tb-presets\" hermes-layout=\"m-t:lg\">\r\n <div class=\"tb-preset-cards hermes-row\">\r\n @for (preset of presets; track preset.name) {\r\n <a\r\n href=\"javascript://\"\r\n class=\"card clickable tb-preset-card hermes-col-1\"\r\n [class.tb-preset-card-active]=\"activePreset?.name === preset.name\"\r\n (click)=\"applyPreset(preset)\"\r\n >\r\n <div class=\"tb-preset-swatch\" [style.background-color]=\"preset.light?.primary?.hex\"></div>\r\n <div class=\"card-text\">{{ preset.name }}</div>\r\n </a>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- \u2500\u2500 Preview DARK card \u2500\u2500 -->\r\n<!-- Invisible for filling the dark values on initial load -->\r\n<div style=\"display: none\" #previewDarkWrapper hermes-theme=\"dark\"></div>\r\n\r\n<!-- \u2500\u2500 Two-column layout: controls | preview \u2500\u2500 -->\r\n<div class=\"tb-layout\" hermes-layout=\"m-t:lg m-b:lg\">\r\n <!-- \u2500\u2500 Controls card (sticky left column) \u2500\u2500 -->\r\n <div class=\"card tb-controls-card\">\r\n <div class=\"card-block\">\r\n @for (colorGroup of themeColors; track colorGroup.key) {\r\n <div>\r\n <hermes-stack-view>\r\n <hermes-stack-header>\r\n <div class=\"tb-control-header\">\r\n {{ colorGroup.key | uppercase }}\r\n\r\n <hermes-tooltip>\r\n <hermes-label\r\n hermes-layout=\"m:none\"\r\n hermesTooltipTrigger\r\n [hermesText]=\"'Contrast ' + colorGroup.contrast.minContrast.wcag.label\"\r\n [hermesBadgeText]=\"colorGroup.contrast.minContrast.wcag.score\"\r\n [hermesColor]=\"colorGroup.contrast.minContrast.wcag.type\"\r\n >\r\n </hermes-label>\r\n <hermes-tooltip-content hermesPosition=\"right\" hermesSize=\"lg\">\r\n <div class=\"tb-wcag-container\">\r\n @for (background of colorGroup.contrast.backgrounds; track background.name) {\r\n <div class=\"tb-wcag-item\">\r\n {{ background.name }}:\r\n <hermes-label\r\n hermes-layout=\"m:none\"\r\n hermesType=\"solid\"\r\n [hermesText]=\"background.wcag.label\"\r\n [hermesBadgeText]=\"background.wcag.score\"\r\n [hermesColor]=\"background.wcag.type\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </hermes-tooltip-content>\r\n </hermes-tooltip>\r\n </div>\r\n </hermes-stack-header>\r\n <hermes-stack-block [hermesStackViewLevel]=\"1\">\r\n <hermes-stack-label class=\"tb-stack-label\">{{ colorGroup.base.label }}</hermes-stack-label>\r\n <hermes-stack-content style=\"width: 52%\">\r\n <div class=\"tb-color-input-wrap\">\r\n <input\r\n type=\"color\"\r\n class=\"tb-color-picker\"\r\n [value]=\"colorGroup.base.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorGroup.base.label + ' color picker'\"\r\n (input)=\"\r\n setCurrentColor(\r\n colorGroup.base,\r\n $any($event.target).value,\r\n colorStruct[activeTheme][colorGroup.key]\r\n )\r\n \"\r\n />\r\n <input\r\n readonly\r\n type=\"text\"\r\n class=\"tb-hex-input\"\r\n [value]=\"colorGroup.base.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorGroup.base.label + ' color hex value'\"\r\n />\r\n <button\r\n *ngIf=\"!colorGroup.base.isOriginalColor\"\r\n class=\"btn btn-sm btn-icon btn-primary\"\r\n (click)=\"resetColor($event, colorGroup.base, colorStruct[activeTheme][colorGroup.key])\"\r\n title=\"Back to original color\"\r\n >\r\n <hermes-icon shape=\"undo\"></hermes-icon>\r\n </button>\r\n </div>\r\n </hermes-stack-content>\r\n\r\n @for (colorVariant of colorGroup.variants; track colorVariant.label) {\r\n <hermes-stack-block [hermesStackViewLevel]=\"2\">\r\n <hermes-stack-label>{{ colorVariant.label }}</hermes-stack-label>\r\n <hermes-stack-content>\r\n <div class=\"tb-color-input-wrap\">\r\n <input\r\n type=\"color\"\r\n class=\"tb-color-picker\"\r\n [value]=\"colorVariant.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorVariant.label + ' color picker'\"\r\n (input)=\"setCurrentColor(colorVariant, $any($event.target).value)\"\r\n />\r\n <input\r\n readonly\r\n type=\"text\"\r\n class=\"tb-hex-input\"\r\n [value]=\"colorVariant.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorVariant.label + ' color hex value'\"\r\n />\r\n <button\r\n *ngIf=\"!colorVariant.isOriginalColor\"\r\n class=\"btn btn-sm btn-icon btn-primary\"\r\n (click)=\"resetColor($event, colorVariant)\"\r\n title=\"Back to original color\"\r\n >\r\n <hermes-icon shape=\"undo\"></hermes-icon>\r\n </button>\r\n </div>\r\n </hermes-stack-content>\r\n </hermes-stack-block>\r\n }\r\n </hermes-stack-block>\r\n </hermes-stack-view>\r\n\r\n @if (colorGroup.key === 'warning' && !colorGroup.base.isOriginalColor) {\r\n <hermes-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n hermesToggle\r\n [(ngModel)]=\"warningTextOverrideEnabled\"\r\n (ngModelChange)=\"onWarningTextOverrideChange()\"\r\n />\r\n <label>Light Theme Warning Text Override</label>\r\n </hermes-toggle-wrapper>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <!-- end controls card -->\r\n\r\n <!-- \u2500\u2500 Preview card (right column) \u2500\u2500 -->\r\n <div class=\"card tb-preview-card\">\r\n <div class=\"card-header\">\r\n Live Preview:\r\n <button\r\n class=\"btn btn-outline-neutral\"\r\n [attr.aria-label]=\"'Switch to ' + (isDarkTheme ? 'light' : 'dark') + ' theme'\"\r\n (click)=\"toggleActiveTheme()\"\r\n >\r\n <hermes-icon [shape]=\"isDarkTheme ? 'moon' : 'sun'\" [solid]=\"true\" [size]=\"'md'\"></hermes-icon>\r\n {{ isDarkTheme ? 'Dark' : 'Light' }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"card-block tb-preview-sandbox\" #previewWrapper [attr.hermes-theme]=\"activeTheme\">\r\n <ng-content></ng-content>\r\n\r\n <!-- Breadcrumbs -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Breadcrumbs</p>\r\n <div class=\"tb-preview-row\">\r\n <hermes-breadcrumbs [items]=\"breadcrumbs\"></hermes-breadcrumbs>\r\n </div>\r\n </div>\r\n\r\n <!-- Buttons -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Buttons</p>\r\n <div class=\"tb-preview-row\">\r\n <button class=\"btn btn-primary\">Primary</button>\r\n <button class=\"btn\">Primary Outline</button>\r\n <button class=\"btn btn-link\">Primary FLAT</button>\r\n <button class=\"btn btn-info\">Info</button>\r\n <button class=\"btn btn-info-outline\">Info Outline</button>\r\n <button class=\"btn btn-link-info\">Info Flat</button>\r\n <button class=\"btn btn-danger\">Danger</button>\r\n <button class=\"btn btn-success\">Success</button>\r\n <button class=\"btn btn-warning\">Warning</button>\r\n <button class=\"btn btn-primary\" disabled>Disabled</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Badges & Labels -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Badges &amp; Labels</p>\r\n <div class=\"tb-preview-row\">\r\n <hermes-label\r\n [hermesType]=\"'outlined'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'info'\"\r\n [hermesText]=\"'info'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n <hermes-label [hermesType]=\"'outlined'\" [hermesColor]=\"'danger'\" [hermesText]=\"'danger'\" [hermesBadgeText]=\"'99+'\" />\r\n <hermes-label [hermesType]=\"'outlined'\" [hermesColor]=\"'success'\" [hermesText]=\"'success'\" [hermesBadgeText]=\"'99+'\" />\r\n <hermes-label\r\n [hermesType]=\"'outlined'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'warning'\"\r\n [hermesText]=\"'warning'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n\r\n <hermes-label [hermesType]=\"'solid'\" [hermesColor]=\"'info'\" [hermesText]=\"'info'\" [hermesBadgeText]=\"'99+'\" />\r\n <hermes-label\r\n [hermesType]=\"'solid'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'danger'\"\r\n [hermesText]=\"'danger'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n <hermes-label\r\n [hermesType]=\"'solid'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'success'\"\r\n [hermesText]=\"'success'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n <hermes-label [hermesType]=\"'solid'\" [hermesColor]=\"'warning'\" [hermesText]=\"'warning'\" [hermesBadgeText]=\"'99+'\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Alerts -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Alerts</p>\r\n <hermes-alert [hermesAlertType]=\"'info'\">\r\n <hermes-alert-item><span class=\"alert-text\">This is an info alert.</span></hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'success'\">\r\n <hermes-alert-item><span class=\"alert-text\">Operation completed successfully.</span></hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'warning'\">\r\n <hermes-alert-item><span class=\"alert-text\">Please review before proceeding.</span></hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'danger'\">\r\n <hermes-alert-item><span class=\"alert-text\">Something went wrong.</span></hermes-alert-item>\r\n </hermes-alert>\r\n </div>\r\n\r\n <!-- App-Level Alerts -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">App-Level Alerts</p>\r\n <hermes-alert [hermesAlertType]=\"'info'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level info.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Thanks</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'danger'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level alert.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Fix</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'warning'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level warning.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Check</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'success'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level success.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Great</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n </div>\r\n\r\n <!-- Forms -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Form Controls</p>\r\n <form hermesForm #tbForm=\"ngForm\" hermesLayout=\"horizontal\">\r\n <hermes-input-container>\r\n <label>Text input</label>\r\n <input hermesInput type=\"text\" placeholder=\"Enter value...\" />\r\n </hermes-input-container>\r\n <hermes-checkbox-container>\r\n <label>Checkbox</label>\r\n <hermes-checkbox-wrapper>\r\n <input type=\"checkbox\" hermesCheckbox checked />\r\n <label>Checkbox (checked)</label>\r\n </hermes-checkbox-wrapper>\r\n <hermes-checkbox-wrapper>\r\n <input type=\"checkbox\" hermesCheckbox />\r\n <label>Checkbox (unchecked)</label>\r\n </hermes-checkbox-wrapper>\r\n </hermes-checkbox-container>\r\n <hermes-radio-container>\r\n <label>Radio</label>\r\n <hermes-radio-wrapper>\r\n <input type=\"radio\" hermesRadio name=\"r1\" value=\"a\" checked />\r\n <label>Radio A</label>\r\n </hermes-radio-wrapper>\r\n <hermes-radio-wrapper>\r\n <input type=\"radio\" hermesRadio name=\"r1\" value=\"b\" />\r\n <label>Radio B</label>\r\n </hermes-radio-wrapper>\r\n </hermes-radio-container>\r\n <hermes-toggle-container>\r\n <label>Toggle</label>\r\n <hermes-toggle-wrapper>\r\n <input type=\"checkbox\" hermesToggle checked />\r\n <label>Toggle (on)</label>\r\n </hermes-toggle-wrapper>\r\n </hermes-toggle-container>\r\n\r\n <hermes-textarea-container>\r\n <label>Textarea</label>\r\n <textarea hermesTextarea [(ngModel)]=\"description\" name=\"description\" required></textarea>\r\n <hermes-control-helper>Please provide a description.</hermes-control-helper>\r\n <hermes-control-error *hermesIfError=\"'required'\">You must provide a description!</hermes-control-error>\r\n </hermes-textarea-container>\r\n </form>\r\n </div>\r\n\r\n <!-- Accordion -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Accordion</p>\r\n <hermes-accordion>\r\n <hermes-accordion-panel [hermesAccordionPanelOpen]=\"true\">\r\n <hermes-accordion-title>Panel One</hermes-accordion-title>\r\n <hermes-accordion-content>Content for the first accordion panel.</hermes-accordion-content>\r\n </hermes-accordion-panel>\r\n <hermes-accordion-panel>\r\n <hermes-accordion-title>Panel Two</hermes-accordion-title>\r\n <hermes-accordion-content>Content for the second accordion panel.</hermes-accordion-content>\r\n </hermes-accordion-panel>\r\n </hermes-accordion>\r\n </div>\r\n\r\n <!-- Tree view -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Tree View</p>\r\n <hermes-tree>\r\n <hermes-tree-node [hermesExpanded]=\"true\">\r\n Root Node\r\n <hermes-tree-node [hermesSelected]=\"1\"> Child One </hermes-tree-node>\r\n <hermes-tree-node>\r\n Child Two\r\n <hermes-tree-node>Grandchild</hermes-tree-node>\r\n </hermes-tree-node>\r\n </hermes-tree-node>\r\n </hermes-tree>\r\n </div>\r\n\r\n <!-- Progress bar -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Progress Bar</p>\r\n <hermes-progress-bar hermesValue=\"20\" hermesMax=\"100\"></hermes-progress-bar>\r\n <hermes-progress-bar hermesValue=\"55\" hermesMax=\"100\" hermesColor=\"warning\" hermesLabeled></hermes-progress-bar>\r\n <hermes-progress-bar hermesValue=\"80\" hermesMax=\"100\" hermesColor=\"success\"></hermes-progress-bar>\r\n <hermes-progress-bar hermesValue=\"40\" hermesMax=\"100\" hermesColor=\"danger\"></hermes-progress-bar>\r\n </div>\r\n\r\n <!-- Vertical nav -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Vertical Navigation</p>\r\n <div class=\"tb-nav-preview-wrap\">\r\n <hermes-vertical-nav [hermesVerticalNavCollapsible]=\"true\">\r\n <hermes-vertical-nav-group hermesVerticalNavGroupExpanded>\r\n <hermes-icon shape=\"home\" hermesVerticalNavIcon></hermes-icon>\r\n Dashboard\r\n <hermes-vertical-nav-group-children>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\" class=\"active\">Overview</a>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\">Analytics</a>\r\n </hermes-vertical-nav-group-children>\r\n </hermes-vertical-nav-group>\r\n <hermes-vertical-nav-group>\r\n <hermes-icon shape=\"cog\" hermesVerticalNavIcon></hermes-icon>\r\n Settings\r\n <hermes-vertical-nav-group-children>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\">Profile</a>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\">Security</a>\r\n </hermes-vertical-nav-group-children>\r\n </hermes-vertical-nav-group>\r\n </hermes-vertical-nav>\r\n </div>\r\n </div>\r\n\r\n <!-- Stepper -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Stepper</p>\r\n <form hermesStepper #tbStepperForm=\"ngForm\">\r\n <hermes-stepper-panel ngModelGroup=\"account\">\r\n <hermes-step-title>Account Details</hermes-step-title>\r\n <hermes-step-description>Tell us about yourself</hermes-step-description>\r\n <hermes-step-content>\r\n <hermes-input-container>\r\n <label>Full Name</label>\r\n <input hermesInput name=\"fullName\" [(ngModel)]=\"stepperForm.account.fullName\" />\r\n </hermes-input-container>\r\n <button hermesStepButton=\"next\">Next</button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n\r\n <hermes-stepper-panel ngModelGroup=\"confirm\">\r\n <hermes-step-title>Confirmation</hermes-step-title>\r\n <hermes-step-description>Review and submit</hermes-step-description>\r\n <hermes-step-content>\r\n <hermes-checkbox-container>\r\n <hermes-checkbox-wrapper>\r\n <input type=\"checkbox\" hermesCheckbox name=\"agree\" [(ngModel)]=\"stepperForm.confirm.agree\" />\r\n <label>I agree to the terms</label>\r\n </hermes-checkbox-wrapper>\r\n </hermes-checkbox-container>\r\n <button hermesStepButton=\"previous\">Previous</button>\r\n <button hermesStepButton=\"submit\">Submit</button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n </form>\r\n </div>\r\n\r\n <!-- Datagrid -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Datagrid</p>\r\n <hermes-datagrid [hermesDgSelectionType]=\"'multi'\">\r\n <hermes-dg-column>Name</hermes-dg-column>\r\n <hermes-dg-column>Role</hermes-dg-column>\r\n <hermes-dg-column>Status</hermes-dg-column>\r\n @for (row of rows; track row.name) {\r\n <hermes-dg-row [hermesDgItem]=\"row\">\r\n <hermes-dg-cell>{{ row.name }}</hermes-dg-cell>\r\n <hermes-dg-cell>{{ row.role }}</hermes-dg-cell>\r\n <hermes-dg-cell>\r\n <span\r\n class=\"badge\"\r\n [class.badge-success]=\"row.status === 'Active'\"\r\n [class.badge-danger]=\"row.status === 'Inactive'\"\r\n >\r\n {{ row.status }}\r\n </span>\r\n </hermes-dg-cell>\r\n </hermes-dg-row>\r\n }\r\n <hermes-dg-footer>{{ rows.length }} users</hermes-dg-footer>\r\n </hermes-datagrid>\r\n </div>\r\n\r\n <!-- Tabs -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Tabs</p>\r\n <hermes-tabs>\r\n <hermes-tab>\r\n <button hermesTabLink>Dashboard</button>\r\n <hermes-tab-content>\r\n <p>Content for the Dashboard tab.</p>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n <hermes-tab>\r\n <button hermesTabLink>Management</button>\r\n <hermes-tab-content>\r\n <p>Content for the Management tab.</p>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n <hermes-tab>\r\n <button hermesTabLink>Settings</button>\r\n <hermes-tab-content>\r\n <p>Content for the Settings tab.</p>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n </hermes-tabs>\r\n </div>\r\n\r\n <!-- Timeline -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Timeline</p>\r\n <hermes-timeline>\r\n <hermes-timeline-step [hermesState]=\"timelineStates.SUCCESS\">\r\n <hermes-timeline-step-header>11:59 am</hermes-timeline-step-header>\r\n <hermes-timeline-step-title>Add KMS</hermes-timeline-step-title>\r\n <hermes-timeline-step-description>Root CA certificate requested.</hermes-timeline-step-description>\r\n </hermes-timeline-step>\r\n <hermes-timeline-step [hermesState]=\"timelineStates.CURRENT\">\r\n <hermes-timeline-step-header>12:04 pm</hermes-timeline-step-header>\r\n <hermes-timeline-step-title>Make KMS trust vCenter</hermes-timeline-step-title>\r\n <hermes-timeline-step-description>\r\n Upload the certificate to the KMS to complete the connection.\r\n </hermes-timeline-step-description>\r\n </hermes-timeline-step>\r\n <hermes-timeline-step [hermesState]=\"timelineStates.NOT_STARTED\">\r\n <hermes-timeline-step-header>--:-- --</hermes-timeline-step-header>\r\n <hermes-timeline-step-title>Enable Encryption</hermes-timeline-step-title>\r\n <hermes-timeline-step-description>Not started yet.</hermes-timeline-step-description>\r\n </hermes-timeline-step>\r\n </hermes-timeline>\r\n </div>\r\n\r\n <!-- Wizard launcher -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Wizard</p>\r\n <button class=\"btn btn-outline\" (click)=\"wizardOpen = true\">Open Wizard</button>\r\n <hermes-wizard [(hermesWizardOpen)]=\"wizardOpen\" hermesWizardSize=\"md\">\r\n <hermes-wizard-title>Sample Wizard</hermes-wizard-title>\r\n <hermes-wizard-button [type]=\"'cancel'\">Cancel</hermes-wizard-button>\r\n <hermes-wizard-button [type]=\"'previous'\">Back</hermes-wizard-button>\r\n <hermes-wizard-button [type]=\"'next'\">Next</hermes-wizard-button>\r\n <hermes-wizard-button [type]=\"'finish'\">Finish</hermes-wizard-button>\r\n <hermes-wizard-page>\r\n <ng-template hermesPageTitle>Step 1: Introduction</ng-template>\r\n Welcome to the wizard. This step introduces the process.\r\n </hermes-wizard-page>\r\n <hermes-wizard-page>\r\n <ng-template hermesPageTitle>Step 2: Configuration</ng-template>\r\n Configure the required options in this step.\r\n </hermes-wizard-page>\r\n <hermes-wizard-page>\r\n <ng-template hermesPageTitle>Step 3: Confirm</ng-template>\r\n Review your choices and click Finish.\r\n </hermes-wizard-page>\r\n </hermes-wizard>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- end preview card -->\r\n</div>\r\n<!-- end .tb-layout -->\r\n", styles: [":host{display:block}:host ::ng-deep .stack-view .stack-view-key{min-width:26%;max-width:26%}:host ::ng-deep .stack-view .stack-block-content{max-width:46%}:host ::ng-deep .card .alert{margin:0}:host ::ng-deep .card-block .progress,:host ::ng-deep .card-block .progress-static{position:relative;height:var(--hermes-base-progress-bar-height);margin:0}:host ::ng-deep .card-block .progress>progress,:host ::ng-deep .card-block .progress-static>progress{height:100%;position:static}.tb-presets{display:flex;align-items:center;gap:var(--hermes-base-gap-m);flex-wrap:wrap;margin:0 var(--hermes-base-gap-m)}.tb-preset-cards{gap:var(--hermes-base-gap-l)}.tb-preset-cards .tb-preset-card{display:inline-flex;align-items:center;gap:var(--hermes-base-gap-m);margin:0;padding:var(--hermes-base-vertical-offset-m) var(--hermes-base-horizontal-offset-m);min-width:170px}.tb-preset-cards .tb-preset-card.tb-preset-card-active{outline:var(--hermes-alias-object-border-width-200) solid var(--hermes-alias-primary);outline-offset:2px}.tb-preset-cards .tb-preset-card .card-text{margin-bottom:0}.tb-preset-swatch{display:flex;align-items:center;justify-content:center;height:var(--hermes-base-row-height-m);min-width:var(--hermes-base-row-height-m);border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);border-radius:var(--hermes-alias-object-border-radius-100);background:var(--hermes-alias-object-container-background);color:var(--hermes-alias-typography-color-300)}.tb-layout{display:grid;grid-template-columns:370px 1fr;gap:var(--hermes-base-gap-l);align-items:start}.tb-controls-card{margin-top:0;position:sticky;top:0;max-height:calc(100vh - var(--hermes-global-space-15));overflow-y:auto}.tb-controls-card .tb-control-header{display:flex;align-items:center;justify-content:space-between}.tb-wcag-container{display:flex;flex-direction:column;gap:var(--hermes-base-gap-s)}.tb-wcag-container .tb-wcag-item{display:flex;justify-content:space-between;align-items:center}.card-block{display:flex;flex-direction:column;gap:var(--hermes-base-gap-l)}.card-block .tb-color-input-wrap{display:flex;align-items:center;gap:var(--hermes-base-gap-s);min-width:190px}.card-block .tb-color-picker{padding:var(--hermes-base-vertical-offset-2xs) var(--hermes-base-horizontal-offset-2xs);border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);border-radius:var(--hermes-alias-object-border-radius-100);cursor:pointer;background:var(--hermes-alias-object-container-background);width:var(--hermes-global-space-11)}.card-block .tb-hex-input{width:var(--hermes-base-layout-space-5xl);padding:var(--hermes-base-vertical-offset-2xs) var(--hermes-base-horizontal-offset-s);border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);border-radius:var(--hermes-alias-object-border-radius-100)}.card-block .tb-stack-label{display:flex;gap:var(--hermes-base-gap-m);align-items:center}.tb-preview-card{margin-top:0}.tb-preview-card .card-header{display:flex;align-items:center;gap:var(--hermes-base-gap-m)}.tb-preview-sandbox{display:flex;flex-direction:column;gap:var(--hermes-base-gap-l);border-bottom-left-radius:var(--hermes-alias-object-border-radius-100);border-bottom-right-radius:var(--hermes-alias-object-border-radius-100)}.tb-preview-section{display:flex;flex-direction:column;gap:var(--hermes-base-gap-m)}.tb-preview-row{display:flex;align-items:center;gap:var(--hermes-base-gap-m);flex-wrap:wrap}.tb-nav-preview-wrap{height:180px;border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);overflow:hidden;display:flex}\n"], dependencies: [{ kind: "ngmodule", type: HermesModule }, { kind: "component", type: i1.HermesAlert, selector: "hermes-alert", inputs: ["hermesAlertSizeSmall", "hermesAlertClosable", "hermesAlertAppLevel", "hermesCloseButtonAriaLabel", "hermesAlertLightweight", "hermesAlertType", "hermesAlertIcon", "hermesAlertClosed"], outputs: ["hermesAlertClosedChange"] }, { kind: "component", type: i1.HermesAlertItem, selector: "hermes-alert-item" }, { kind: "directive", type: i1.HermesAlertText, selector: ".alert-text" }, { kind: "component", type: i2.HermesLabel, selector: "hermes-label", inputs: ["hermesColor", "hermesBadgeText", "hermesText", "hermesClickable", "hermesDisabled", "hermesType"] }, { kind: "component", type: i3.HermesDatagrid, selector: "hermes-datagrid", inputs: ["hermesLoadingMoreItems", "hermesDgSingleSelectionAriaLabel", "hermesDgSingleActionableAriaLabel", "hermesDetailExpandableAriaLabel", "hermesDgDisablePageFocus", "hermesDgCustomSelectAllEnabled", "hermesDgSelectAllDisabled", "hermesDgLoading", "hermesDgSelectionType", "hermesDgSelected", "hermesDgPreserveSelection", "hermesDgRowSelection", "hermesDgItemsIdentityFn"], outputs: ["hermesDgSelectedChange", "hermesDgRefresh", "hermesDgCustomSelectAll"] }, { kind: "component", type: i3.HermesDatagridCell, selector: "hermes-dg-cell" }, { kind: "component", type: i3.HermesDatagridColumn, selector: "hermes-dg-column", inputs: ["hermesFilterStringPlaceholder", "hermesFilterNumberMaxPlaceholder", "hermesFilterNumberMinPlaceholder", "hermesDgDisableUnsort", "hermesDgPinned", "hermesDgColType", "hermesDgField", "hermesDgSortBy", "hermesDgSortOrder", "hermesFilterValue"], outputs: ["hermesDgSortOrderChange", "hermesFilterValueChange"] }, { kind: "component", type: i3.HermesDatagridFooter, selector: "hermes-dg-footer" }, { kind: "component", type: i3.HermesDatagridRow, selector: "hermes-dg-row", inputs: ["hermesDgDetailDisabled", "hermesDgDetailHidden", "hermesDgSkeletonLoading", "hermesDgItem", "hermesDgSelectable", "hermesDgSelected", "hermesDgExpanded", "hermesDgDetailOpenLabel", "hermesDgDetailCloseLabel", "hermesDgRowSelectionLabel"], outputs: ["hermesDgSelectedChange", "hermesDgExpandedChange"] }, { kind: "directive", type: i3.DatagridCellRenderer, selector: "hermes-dg-cell" }, { kind: "directive", type: i3.DatagridHeaderRenderer, selector: "hermes-dg-column", outputs: ["hermesDgColumnResize"] }, { kind: "directive", type: i3.DatagridMainRenderer, selector: "hermes-datagrid" }, { kind: "directive", type: i3.DatagridRowRenderer, selector: "hermes-dg-row" }, { kind: "directive", type: i3.ActionableOompaLoompa, selector: "hermes-datagrid, hermes-dg-row" }, { kind: "directive", type: i3.DatagridWillyWonka, selector: "hermes-datagrid" }, { kind: "directive", type: i3.ExpandableOompaLoompa, selector: "hermes-datagrid, hermes-dg-row" }, { kind: "component", type: i4.HermesStackView, selector: "hermes-stack-view" }, { kind: "component", type: i4.HermesStackHeader, selector: "hermes-stack-header", inputs: ["hermesStackHeaderLevel"] }, { kind: "component", type: i4.HermesStackBlock, selector: "hermes-stack-block", inputs: ["hermesSbExpanded", "hermesSbExpandable", "hermesStackViewLevel", "hermesSbNotifyChange"], outputs: ["hermesSbExpandedChange"] }, { kind: "component", type: i4.HermesStackViewLabel, selector: "hermes-stack-label", inputs: ["id"] }, { kind: "directive", type: i4.HermesStackViewCustomTags, selector: "hermes-stack-content" }, { kind: "component", type: i5.HermesTree, selector: "hermes-tree", inputs: ["hermesLazy"] }, { kind: "component", type: i5.HermesTreeNode, selector: "hermes-tree-node", inputs: ["hermesExpandable", "hermesDisabled", "hermesSelected", "hermesExpanded", "hermesForTypeAhead"], outputs: ["hermesSelectedChange", "hermesExpandedChange"] }, { kind: "component", type: i6.HermesIcon, selector: "hermes-icon, hermes-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i6.HermesIconCustomTag, selector: "hermes-icon" }, { kind: "directive", type: i7.HermesControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: i7.HermesControlError, selector: "hermes-control-error" }, { kind: "component", type: i7.HermesControlHelper, selector: "hermes-control-helper" }, { kind: "directive", type: i7.HermesIfError, selector: "[hermesIfError]", inputs: ["hermesIfError"] }, { kind: "directive", type: i7.HermesForm, selector: "[hermesForm]", inputs: ["hermesLabelSize"] }, { kind: "directive", type: i7.HermesLayout, selector: "[hermesForm][hermesLayout]", inputs: ["hermesLayout"] }, { kind: "directive", type: i8.HermesCheckbox, selector: "[hermesCheckbox],[hermesToggle]" }, { kind: "component", type: i8.HermesCheckboxContainer, selector: "hermes-checkbox-container,hermes-toggle-container", inputs: ["hermesInline"] }, { kind: "component", type: i8.HermesCheckboxWrapper, selector: "hermes-checkbox-wrapper,hermes-toggle-wrapper" }, { kind: "directive", type: i9.HermesInput, selector: "[hermesInput]" }, { kind: "component", type: i9.HermesInputContainer, selector: "hermes-input-container" }, { kind: "directive", type: i10.HermesRadio, selector: "[hermesRadio]" }, { kind: "component", type: i10.HermesRadioContainer, selector: "hermes-radio-container", inputs: ["hermesInline"] }, { kind: "component", type: i10.HermesRadioWrapper, selector: "hermes-radio-wrapper" }, { kind: "directive", type: i11.HermesTextarea, selector: "[hermesTextarea]" }, { kind: "component", type: i11.HermesTextareaContainer, selector: "hermes-textarea-container" }, { kind: "component", type: i12.HermesTabContent, selector: "hermes-tab-content", inputs: ["id"] }, { kind: "component", type: i12.HermesTab, selector: "hermes-tab" }, { kind: "component", type: i12.HermesTabs, selector: "hermes-tabs", inputs: ["hermesLayout"] }, { kind: "directive", type: i12.HermesTabLink, selector: "[hermesTabLink]", inputs: ["id", "hermesTabLinkInOverflow"] }, { kind: "directive", type: i12.TabsWillyWonka, selector: "hermes-tabs" }, { kind: "directive", type: i12.ActiveOompaLoompa, selector: "[hermesTabLink], hermes-tab-content" }, { kind: "component", type: i13.HermesVerticalNav, selector: "hermes-vertical-nav", inputs: ["hermesVerticalNavToggleLabel", "hermesVerticalNavPinnable", "hermesVerticalNavCollapsible", "hermesVerticalNavCollapsed"], outputs: ["hermesVerticalNavCollapsedChange"] }, { kind: "component", type: i13.HermesVerticalNavLink, selector: "[hermesVerticalNavLink]" }, { kind: "component", type: i13.HermesVerticalNavGroup, selector: "hermes-vertical-nav-group", inputs: ["hermesVerticalNavGroupExpanded"], outputs: ["hermesVerticalNavGroupExpandedChange"] }, { kind: "component", type: i13.HermesVerticalNavGroupChildren, selector: "hermes-vertical-nav-group-children" }, { kind: "directive", type: i13.HermesVerticalNavIcon, selector: "[hermesVerticalNavIcon]" }, { kind: "component", type: i14.HermesBreadcrumbs, selector: "hermes-breadcrumbs", inputs: ["items"], outputs: ["hermesBreadcrumbItemClick"] }, { kind: "component", type: i15.HermesTooltip, selector: "hermes-tooltip" }, { kind: "directive", type: i15.HermesTooltipTrigger, selector: "[hermesTooltipTrigger]" }, { kind: "component", type: i15.HermesTooltipContent, selector: "hermes-tooltip-content", inputs: ["id", "hermesPosition", "hermesSize"] }, { kind: "component", type: i16.HermesWizard, selector: "hermes-wizard", inputs: ["hermesWizardStepnavAriaLabel", "hermesWizardStepnavLayout", "hermesWizardSize", "hermesWizardInPage", "hermesWizardInPageFillContentArea", "hermesWizardHideFooter", "hermesWizardFooterAlign", "hermesWizardClosable", "hermesWizardPreventModalAnimation", "hermesWizardForceForwardNavigation", "hermesWizardOpen", "hermesWizardPreventDefaultNext", "hermesWizardPreventDefaultCancel", "hermesWizardPreventNavigation", "hermesWizardDisableStepnav"], outputs: ["hermesWizardOpenChange", "hermesWizardOnCancel", "hermesWizardOnFinish", "hermesWizardOnReset", "hermesWizardCurrentPageChange", "hermesWizardOnNext", "hermesWizardOnPrevious"] }, { kind: "component", type: i16.HermesWizardPage, selector: "hermes-wizard-page", inputs: ["id", "hermesWizardPagePreventDefault", "hermesWizardPageNextDisabled", "hermesWizardPagePreviousDisabled", "hermesWizardPageHasError", "hermesWizardPagePreventDefaultCancel", "hermesWizardPagePreventDefaultNext"], outputs: ["hermesWizardPageNextDisabledChange", "hermesWizardPagePreviousDisabledChange", "hermesWizardPagePreventDefaultCancelChange", "hermesWizardPageOnCommit", "hermesWizardPageOnLoad", "hermesWizardPageOnCancel", "hermesWizardPageFinish", "hermesWizardPagePrevious", "hermesWizardPageNext", "hermesWizardPageDanger", "hermesWizardPagePrimary", "hermesWizardPageCustomButton"] }, { kind: "component", type: i16.HermesWizardButton, selector: "hermes-wizard-button", inputs: ["type", "hermesWizardButtonDisabled", "hermesWizardButtonHidden"], outputs: ["hermesWizardButtonClicked"] }, { kind: "directive", type: i16.HermesWizardTitle, selector: "hermes-wizard-title", inputs: ["hermesHeadingLevel"] }, { kind: "directive", type: i16.HermesWizardPageTitle, selector: "[hermesPageTitle]", inputs: ["hermesHeadingLevel"] }, { kind: "component", type: i17.HermesAccordion, selector: "hermes-accordion", inputs: ["hermesAccordionMultiPanel"] }, { kind: "component", type: i17.HermesAccordionPanel, selector: "hermes-accordion-panel", inputs: ["hermesAccordionPanelDisabled", "hermesAccordionPanelOpen", "hermesAccordionPanelHeadingLevel"], outputs: ["hermesAccordionPanelOpenChange"] }, { kind: "component", type: i17.HermesAccordionTitle, selector: "hermes-accordion-title" }, { kind: "component", type: i17.HermesAccordionContent, selector: "hermes-accordion-content" }, { kind: "directive", type: i17.AccordionOompaLoompa, selector: "hermes-accordion-panel" }, { kind: "directive", type: i17.AccordionWillyWonka, selector: "hermes-accordion" }, { kind: "component", type: i18.HermesStepper, selector: "form[hermesStepper]", inputs: ["hermesInitialStep"] }, { kind: "directive", type: i18.HermesStepButton, selector: "[hermesStepButton]", inputs: ["hermesStepButton"] }, { kind: "component", type: i18.HermesStepTitle, selector: "hermes-step-title" }, { kind: "component", type: i18.HermesStepDescription, selector: "hermes-step-description" }, { kind: "component", type: i18.HermesStepContent, selector: "hermes-step-content" }, { kind: "component", type: i18.HermesStepperPanel, selector: "hermes-stepper-panel" }, { kind: "directive", type: i18.StepperOompaLoompa, selector: "hermes-stepper-panel, [hermesStepButton]" }, { kind: "directive", type: i18.StepperWillyWonka, selector: "form[hermesStepper]" }, { kind: "component", type: i19.HermesProgressBar, selector: "hermes-progress-bar", inputs: ["hermesMax", "hermesDisplayval", "hermesColor", "hermesValue", "id", "hermesCompact", "hermesLabeled", "hermesFade", "hermesLoop", "hermesFlash", "hermesFlashDanger"] }, { kind: "component", type: i20.HermesTimeline, selector: "hermes-timeline", inputs: ["hermesLayout"] }, { kind: "component", type: i20.HermesTimelineStep, selector: "hermes-timeline-step", inputs: ["hermesState"] }, { kind: "component", type: i20.HermesTimelineStepDescription, selector: "hermes-timeline-step-description" }, { kind: "component", type: i20.HermesTimelineStepHeader, selector: "hermes-timeline-step-header" }, { kind: "component", type: i20.HermesTimelineStepTitle, selector: "hermes-timeline-step-title" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i21.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i22.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i22.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i22.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i22.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i22.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i22.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i22.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i22.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i22.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i21.UpperCasePipe, name: "uppercase" }] }); }
823
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: ThemeBuilderComponent, isStandalone: true, selector: "hermes-theme-builder", inputs: { presets: "presets" }, outputs: { generatedCSS: "generatedCSS" }, viewQueries: [{ propertyName: "previewWrapper", first: true, predicate: ["previewWrapper"], descendants: true }, { propertyName: "previewDarkWrapper", first: true, predicate: ["previewDarkWrapper"], descendants: true }], ngImport: i0, template: "<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n\r\n<!-- Preset selector -->\r\n<div class=\"tb-presets\" hermes-layout=\"m-t:lg\">\r\n <div class=\"tb-preset-cards hermes-row\">\r\n @for (preset of presets; track preset.name) {\r\n <a\r\n href=\"javascript://\"\r\n class=\"card clickable tb-preset-card hermes-col-1\"\r\n [class.tb-preset-card-active]=\"activePreset?.name === preset.name\"\r\n (click)=\"applyPreset(preset)\"\r\n >\r\n <div class=\"tb-preset-swatch\" [style.background-color]=\"preset.light?.primary?.hex\"></div>\r\n <div class=\"card-text\">{{ preset.name }}</div>\r\n </a>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- \u2500\u2500 Preview DARK card \u2500\u2500 -->\r\n<!-- Invisible for filling the dark values on initial load -->\r\n<div style=\"display: none\" #previewDarkWrapper hermes-theme=\"dark\"></div>\r\n\r\n<!-- \u2500\u2500 Two-column layout: controls | preview \u2500\u2500 -->\r\n<div class=\"tb-layout\" hermes-layout=\"m-t:lg m-b:lg\">\r\n <!-- \u2500\u2500 Controls card (sticky left column) \u2500\u2500 -->\r\n <div class=\"card tb-controls-card\">\r\n <div class=\"card-block\">\r\n @for (colorGroup of themeColors; track colorGroup.key) {\r\n <div>\r\n <hermes-stack-view>\r\n <hermes-stack-header>\r\n <div class=\"tb-control-header\">\r\n {{ colorGroup.key | uppercase }}\r\n\r\n <hermes-tooltip>\r\n <hermes-label\r\n hermes-layout=\"m:none\"\r\n hermesTooltipTrigger\r\n [hermesText]=\"'Contrast ' + colorGroup.contrast.minContrast.wcag.label\"\r\n [hermesBadgeText]=\"colorGroup.contrast.minContrast.wcag.score\"\r\n [hermesColor]=\"colorGroup.contrast.minContrast.wcag.type\"\r\n >\r\n </hermes-label>\r\n <hermes-tooltip-content hermesPosition=\"right\" hermesSize=\"lg\">\r\n <div class=\"tb-wcag-container\">\r\n @for (background of colorGroup.contrast.backgrounds; track background.name) {\r\n <div class=\"tb-wcag-item\">\r\n {{ background.name }}:\r\n <hermes-label\r\n hermes-layout=\"m:none\"\r\n hermesType=\"solid\"\r\n [hermesText]=\"background.wcag.label\"\r\n [hermesBadgeText]=\"background.wcag.score\"\r\n [hermesColor]=\"background.wcag.type\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </hermes-tooltip-content>\r\n </hermes-tooltip>\r\n </div>\r\n </hermes-stack-header>\r\n <hermes-stack-block [hermesStackViewLevel]=\"1\">\r\n <hermes-stack-label class=\"tb-stack-label\">{{ colorGroup.base.label }}</hermes-stack-label>\r\n <hermes-stack-content style=\"width: 52%\">\r\n <div class=\"tb-color-input-wrap\">\r\n <input\r\n type=\"color\"\r\n class=\"tb-color-picker\"\r\n [value]=\"colorGroup.base.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorGroup.base.label + ' color picker'\"\r\n (input)=\"\r\n setCurrentColor(\r\n colorGroup.base,\r\n $any($event.target).value,\r\n colorStruct[activeTheme][colorGroup.key]\r\n )\r\n \"\r\n />\r\n <input\r\n readonly\r\n type=\"text\"\r\n class=\"tb-hex-input\"\r\n [value]=\"colorGroup.base.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorGroup.base.label + ' color hex value'\"\r\n />\r\n <button\r\n *ngIf=\"!colorGroup.base.isOriginalColor\"\r\n class=\"btn btn-sm btn-icon btn-primary\"\r\n (click)=\"resetColor($event, colorGroup.base, colorStruct[activeTheme][colorGroup.key])\"\r\n title=\"Back to original color\"\r\n >\r\n <hermes-icon shape=\"undo\"></hermes-icon>\r\n </button>\r\n </div>\r\n </hermes-stack-content>\r\n\r\n @for (colorVariant of colorGroup.variants; track colorVariant.label) {\r\n <hermes-stack-block [hermesStackViewLevel]=\"2\">\r\n <hermes-stack-label>{{ colorVariant.label }}</hermes-stack-label>\r\n <hermes-stack-content>\r\n <div class=\"tb-color-input-wrap\">\r\n <input\r\n type=\"color\"\r\n class=\"tb-color-picker\"\r\n [value]=\"colorVariant.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorVariant.label + ' color picker'\"\r\n (input)=\"setCurrentColor(colorVariant, $any($event.target).value)\"\r\n />\r\n <input\r\n readonly\r\n type=\"text\"\r\n class=\"tb-hex-input\"\r\n [value]=\"colorVariant.hex\"\r\n [attr.aria-label]=\"colorGroup.key + ' ' + colorVariant.label + ' color hex value'\"\r\n />\r\n <button\r\n *ngIf=\"!colorVariant.isOriginalColor\"\r\n class=\"btn btn-sm btn-icon btn-primary\"\r\n (click)=\"resetColor($event, colorVariant)\"\r\n title=\"Back to original color\"\r\n >\r\n <hermes-icon shape=\"undo\"></hermes-icon>\r\n </button>\r\n </div>\r\n </hermes-stack-content>\r\n </hermes-stack-block>\r\n }\r\n </hermes-stack-block>\r\n </hermes-stack-view>\r\n\r\n @if (colorGroup.key === 'warning' && !colorGroup.base.isOriginalColor) {\r\n <hermes-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n hermesToggle\r\n [(ngModel)]=\"warningTextOverrideEnabled\"\r\n (ngModelChange)=\"onWarningTextOverrideChange()\"\r\n />\r\n <label>Light Theme Warning Text Override</label>\r\n </hermes-toggle-wrapper>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <!-- end controls card -->\r\n\r\n <!-- \u2500\u2500 Preview card (right column) \u2500\u2500 -->\r\n <div class=\"card tb-preview-card\">\r\n <div class=\"card-header\">\r\n Live Preview:\r\n <button\r\n class=\"btn btn-outline-neutral\"\r\n [attr.aria-label]=\"'Switch to ' + (isDarkTheme ? 'light' : 'dark') + ' theme'\"\r\n (click)=\"toggleActiveTheme()\"\r\n >\r\n <hermes-icon [shape]=\"isDarkTheme ? 'moon' : 'sun'\" [solid]=\"true\" [size]=\"'md'\"></hermes-icon>\r\n {{ isDarkTheme ? 'Dark' : 'Light' }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"card-block tb-preview-sandbox\" #previewWrapper [attr.hermes-theme]=\"activeTheme\">\r\n <ng-content></ng-content>\r\n\r\n <!-- Breadcrumbs -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Breadcrumbs</p>\r\n <div class=\"tb-preview-row\">\r\n <hermes-breadcrumbs [items]=\"breadcrumbs\"></hermes-breadcrumbs>\r\n </div>\r\n </div>\r\n\r\n <!-- Buttons -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Buttons</p>\r\n <div class=\"tb-preview-row\">\r\n <button class=\"btn btn-primary\">Primary</button>\r\n <button class=\"btn\">Primary Outline</button>\r\n <button class=\"btn btn-link\">Primary FLAT</button>\r\n <button class=\"btn btn-info\">Info</button>\r\n <button class=\"btn btn-info-outline\">Info Outline</button>\r\n <button class=\"btn btn-link-info\">Info Flat</button>\r\n <button class=\"btn btn-danger\">Danger</button>\r\n <button class=\"btn btn-success\">Success</button>\r\n <button class=\"btn btn-warning\">Warning</button>\r\n <button class=\"btn btn-primary\" disabled>Disabled</button>\r\n </div>\r\n </div>\r\n\r\n <!-- Badges & Labels -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Badges &amp; Labels</p>\r\n <div class=\"tb-preview-row\">\r\n <hermes-label\r\n [hermesType]=\"'outlined'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'info'\"\r\n [hermesText]=\"'info'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n <hermes-label [hermesType]=\"'outlined'\" [hermesColor]=\"'danger'\" [hermesText]=\"'danger'\" [hermesBadgeText]=\"'99+'\" />\r\n <hermes-label [hermesType]=\"'outlined'\" [hermesColor]=\"'success'\" [hermesText]=\"'success'\" [hermesBadgeText]=\"'99+'\" />\r\n <hermes-label\r\n [hermesType]=\"'outlined'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'warning'\"\r\n [hermesText]=\"'warning'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n\r\n <hermes-label [hermesType]=\"'solid'\" [hermesColor]=\"'info'\" [hermesText]=\"'info'\" [hermesBadgeText]=\"'99+'\" />\r\n <hermes-label\r\n [hermesType]=\"'solid'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'danger'\"\r\n [hermesText]=\"'danger'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n <hermes-label\r\n [hermesType]=\"'solid'\"\r\n [hermesClickable]=\"true\"\r\n [hermesColor]=\"'success'\"\r\n [hermesText]=\"'success'\"\r\n [hermesBadgeText]=\"'99+'\"\r\n />\r\n <hermes-label [hermesType]=\"'solid'\" [hermesColor]=\"'warning'\" [hermesText]=\"'warning'\" [hermesBadgeText]=\"'99+'\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Alerts -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Alerts</p>\r\n <hermes-alert [hermesAlertType]=\"'info'\">\r\n <hermes-alert-item><span class=\"alert-text\">This is an info alert.</span></hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'success'\">\r\n <hermes-alert-item><span class=\"alert-text\">Operation completed successfully.</span></hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'warning'\">\r\n <hermes-alert-item><span class=\"alert-text\">Please review before proceeding.</span></hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'danger'\">\r\n <hermes-alert-item><span class=\"alert-text\">Something went wrong.</span></hermes-alert-item>\r\n </hermes-alert>\r\n </div>\r\n\r\n <!-- App-Level Alerts -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">App-Level Alerts</p>\r\n <hermes-alert [hermesAlertType]=\"'info'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level info.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Thanks</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'danger'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level alert.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Fix</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'warning'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level warning.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Check</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n <hermes-alert [hermesAlertType]=\"'success'\" [hermesAlertAppLevel]=\"true\">\r\n <hermes-alert-item>\r\n <span class=\"alert-text\">This is an app level success.</span>\r\n <div class=\"alert-actions\">\r\n <button class=\"btn alert-action\"><hermes-icon shape=\"user\"></hermes-icon>Great</button>\r\n </div>\r\n </hermes-alert-item>\r\n </hermes-alert>\r\n </div>\r\n\r\n <!-- Forms -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Form Controls</p>\r\n <form hermesForm #tbForm=\"ngForm\" hermesLayout=\"horizontal\">\r\n <hermes-input-container>\r\n <label>Text input</label>\r\n <input hermesInput type=\"text\" placeholder=\"Enter value...\" />\r\n </hermes-input-container>\r\n <hermes-checkbox-container>\r\n <label>Checkbox</label>\r\n <hermes-checkbox-wrapper>\r\n <input type=\"checkbox\" hermesCheckbox checked />\r\n <label>Checkbox (checked)</label>\r\n </hermes-checkbox-wrapper>\r\n <hermes-checkbox-wrapper>\r\n <input type=\"checkbox\" hermesCheckbox />\r\n <label>Checkbox (unchecked)</label>\r\n </hermes-checkbox-wrapper>\r\n </hermes-checkbox-container>\r\n <hermes-radio-container>\r\n <label>Radio</label>\r\n <hermes-radio-wrapper>\r\n <input type=\"radio\" hermesRadio name=\"r1\" value=\"a\" checked />\r\n <label>Radio A</label>\r\n </hermes-radio-wrapper>\r\n <hermes-radio-wrapper>\r\n <input type=\"radio\" hermesRadio name=\"r1\" value=\"b\" />\r\n <label>Radio B</label>\r\n </hermes-radio-wrapper>\r\n </hermes-radio-container>\r\n <hermes-toggle-container>\r\n <label>Toggle</label>\r\n <hermes-toggle-wrapper>\r\n <input type=\"checkbox\" hermesToggle checked />\r\n <label>Toggle (on)</label>\r\n </hermes-toggle-wrapper>\r\n </hermes-toggle-container>\r\n\r\n <hermes-textarea-container>\r\n <label>Textarea</label>\r\n <textarea hermesTextarea [(ngModel)]=\"description\" name=\"description\" required></textarea>\r\n <hermes-control-helper>Please provide a description.</hermes-control-helper>\r\n <hermes-control-error *hermesIfError=\"'required'\">You must provide a description!</hermes-control-error>\r\n </hermes-textarea-container>\r\n </form>\r\n </div>\r\n\r\n <!-- Accordion -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Accordion</p>\r\n <hermes-accordion>\r\n <hermes-accordion-panel [hermesAccordionPanelOpen]=\"true\">\r\n <hermes-accordion-title>Panel One</hermes-accordion-title>\r\n <hermes-accordion-content>Content for the first accordion panel.</hermes-accordion-content>\r\n </hermes-accordion-panel>\r\n <hermes-accordion-panel>\r\n <hermes-accordion-title>Panel Two</hermes-accordion-title>\r\n <hermes-accordion-content>Content for the second accordion panel.</hermes-accordion-content>\r\n </hermes-accordion-panel>\r\n </hermes-accordion>\r\n </div>\r\n\r\n <!-- Tree view -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Tree View</p>\r\n <hermes-tree>\r\n <hermes-tree-node [hermesExpanded]=\"true\">\r\n Root Node\r\n <hermes-tree-node [hermesSelected]=\"1\"> Child One </hermes-tree-node>\r\n <hermes-tree-node>\r\n Child Two\r\n <hermes-tree-node>Grandchild</hermes-tree-node>\r\n </hermes-tree-node>\r\n </hermes-tree-node>\r\n </hermes-tree>\r\n </div>\r\n\r\n <!-- Progress bar -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Progress Bar</p>\r\n <hermes-progress-bar hermesValue=\"20\" hermesMax=\"100\"></hermes-progress-bar>\r\n <hermes-progress-bar hermesValue=\"55\" hermesMax=\"100\" hermesColor=\"warning\" hermesLabeled></hermes-progress-bar>\r\n <hermes-progress-bar hermesValue=\"80\" hermesMax=\"100\" hermesColor=\"success\"></hermes-progress-bar>\r\n <hermes-progress-bar hermesValue=\"40\" hermesMax=\"100\" hermesColor=\"danger\"></hermes-progress-bar>\r\n </div>\r\n\r\n <!-- Vertical nav -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Vertical Navigation</p>\r\n <div class=\"tb-nav-preview-wrap\">\r\n <hermes-vertical-nav [hermesVerticalNavCollapsible]=\"true\">\r\n <hermes-vertical-nav-group hermesVerticalNavGroupExpanded>\r\n <hermes-icon shape=\"home\" hermesVerticalNavIcon></hermes-icon>\r\n Dashboard\r\n <hermes-vertical-nav-group-children>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\" class=\"active\">Overview</a>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\">Analytics</a>\r\n </hermes-vertical-nav-group-children>\r\n </hermes-vertical-nav-group>\r\n <hermes-vertical-nav-group>\r\n <hermes-icon shape=\"cog\" hermesVerticalNavIcon></hermes-icon>\r\n Settings\r\n <hermes-vertical-nav-group-children>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\">Profile</a>\r\n <a hermesVerticalNavLink href=\"javascript:void(0)\">Security</a>\r\n </hermes-vertical-nav-group-children>\r\n </hermes-vertical-nav-group>\r\n </hermes-vertical-nav>\r\n </div>\r\n </div>\r\n\r\n <!-- Stepper -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Stepper</p>\r\n <form hermesStepper #tbStepperForm=\"ngForm\">\r\n <hermes-stepper-panel ngModelGroup=\"account\">\r\n <hermes-step-title>Account Details</hermes-step-title>\r\n <hermes-step-description>Tell us about yourself</hermes-step-description>\r\n <hermes-step-content>\r\n <hermes-input-container>\r\n <label>Full Name</label>\r\n <input hermesInput name=\"fullName\" [(ngModel)]=\"stepperForm.account.fullName\" />\r\n </hermes-input-container>\r\n <button hermesStepButton=\"next\">Next</button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n\r\n <hermes-stepper-panel ngModelGroup=\"confirm\">\r\n <hermes-step-title>Confirmation</hermes-step-title>\r\n <hermes-step-description>Review and submit</hermes-step-description>\r\n <hermes-step-content>\r\n <hermes-checkbox-container>\r\n <hermes-checkbox-wrapper>\r\n <input type=\"checkbox\" hermesCheckbox name=\"agree\" [(ngModel)]=\"stepperForm.confirm.agree\" />\r\n <label>I agree to the terms</label>\r\n </hermes-checkbox-wrapper>\r\n </hermes-checkbox-container>\r\n <button hermesStepButton=\"previous\">Previous</button>\r\n <button hermesStepButton=\"submit\">Submit</button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n </form>\r\n </div>\r\n\r\n <!-- Datagrid -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Datagrid</p>\r\n <hermes-datagrid [hermesDgSelectionType]=\"'multi'\">\r\n <hermes-dg-column>Name</hermes-dg-column>\r\n <hermes-dg-column>Role</hermes-dg-column>\r\n <hermes-dg-column>Status</hermes-dg-column>\r\n @for (row of rows; track row.name) {\r\n <hermes-dg-row [hermesDgItem]=\"row\">\r\n <hermes-dg-cell>{{ row.name }}</hermes-dg-cell>\r\n <hermes-dg-cell>{{ row.role }}</hermes-dg-cell>\r\n <hermes-dg-cell>\r\n <span\r\n class=\"badge\"\r\n [class.badge-success]=\"row.status === 'Active'\"\r\n [class.badge-danger]=\"row.status === 'Inactive'\"\r\n >\r\n {{ row.status }}\r\n </span>\r\n </hermes-dg-cell>\r\n </hermes-dg-row>\r\n }\r\n <hermes-dg-footer>{{ rows.length }} users</hermes-dg-footer>\r\n </hermes-datagrid>\r\n </div>\r\n\r\n <!-- Tabs -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Tabs</p>\r\n <hermes-tabs>\r\n <hermes-tab>\r\n <button hermesTabLink>Dashboard</button>\r\n <hermes-tab-content>\r\n <p>Content for the Dashboard tab.</p>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n <hermes-tab>\r\n <button hermesTabLink>Management</button>\r\n <hermes-tab-content>\r\n <p>Content for the Management tab.</p>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n <hermes-tab>\r\n <button hermesTabLink>Settings</button>\r\n <hermes-tab-content>\r\n <p>Content for the Settings tab.</p>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n </hermes-tabs>\r\n </div>\r\n\r\n <!-- Timeline -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Timeline</p>\r\n <hermes-timeline>\r\n <hermes-timeline-step [hermesState]=\"timelineStates.SUCCESS\">\r\n <hermes-timeline-step-header>11:59 am</hermes-timeline-step-header>\r\n <hermes-timeline-step-title>Add KMS</hermes-timeline-step-title>\r\n <hermes-timeline-step-description>Root CA certificate requested.</hermes-timeline-step-description>\r\n </hermes-timeline-step>\r\n <hermes-timeline-step [hermesState]=\"timelineStates.CURRENT\">\r\n <hermes-timeline-step-header>12:04 pm</hermes-timeline-step-header>\r\n <hermes-timeline-step-title>Make KMS trust vCenter</hermes-timeline-step-title>\r\n <hermes-timeline-step-description>\r\n Upload the certificate to the KMS to complete the connection.\r\n </hermes-timeline-step-description>\r\n </hermes-timeline-step>\r\n <hermes-timeline-step [hermesState]=\"timelineStates.NOT_STARTED\">\r\n <hermes-timeline-step-header>--:-- --</hermes-timeline-step-header>\r\n <hermes-timeline-step-title>Enable Encryption</hermes-timeline-step-title>\r\n <hermes-timeline-step-description>Not started yet.</hermes-timeline-step-description>\r\n </hermes-timeline-step>\r\n </hermes-timeline>\r\n </div>\r\n\r\n <!-- Wizard launcher -->\r\n <div class=\"tb-preview-section\">\r\n <p hermes-text=\"subsection uppercase bold\">Wizard</p>\r\n <button class=\"btn btn-outline\" (click)=\"wizardOpen = true\">Open Wizard</button>\r\n <hermes-wizard [(hermesWizardOpen)]=\"wizardOpen\" hermesWizardSize=\"md\">\r\n <hermes-wizard-title>Sample Wizard</hermes-wizard-title>\r\n <hermes-wizard-button [type]=\"'cancel'\">Cancel</hermes-wizard-button>\r\n <hermes-wizard-button [type]=\"'previous'\">Back</hermes-wizard-button>\r\n <hermes-wizard-button [type]=\"'next'\">Next</hermes-wizard-button>\r\n <hermes-wizard-button [type]=\"'finish'\">Finish</hermes-wizard-button>\r\n <hermes-wizard-page>\r\n <ng-template hermesPageTitle>Step 1: Introduction</ng-template>\r\n Welcome to the wizard. This step introduces the process.\r\n </hermes-wizard-page>\r\n <hermes-wizard-page>\r\n <ng-template hermesPageTitle>Step 2: Configuration</ng-template>\r\n Configure the required options in this step.\r\n </hermes-wizard-page>\r\n <hermes-wizard-page>\r\n <ng-template hermesPageTitle>Step 3: Confirm</ng-template>\r\n Review your choices and click Finish.\r\n </hermes-wizard-page>\r\n </hermes-wizard>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- end preview card -->\r\n</div>\r\n<!-- end .tb-layout -->\r\n", styles: [":host{display:block}:host ::ng-deep .stack-view .stack-view-key{min-width:26%;max-width:26%}:host ::ng-deep .stack-view .stack-block-content{max-width:46%}:host ::ng-deep .card .alert{margin:0}:host ::ng-deep .card-block .progress,:host ::ng-deep .card-block .progress-static{position:relative;height:var(--hermes-base-progress-bar-height);margin:0}:host ::ng-deep .card-block .progress>progress,:host ::ng-deep .card-block .progress-static>progress{height:100%;position:static}.tb-presets{display:flex;align-items:center;gap:var(--hermes-base-gap-m);flex-wrap:wrap;margin:0 var(--hermes-base-gap-m)}.tb-preset-cards{gap:var(--hermes-base-gap-l)}.tb-preset-cards .tb-preset-card{display:inline-flex;align-items:center;gap:var(--hermes-base-gap-m);margin:0;padding:var(--hermes-base-vertical-offset-m) var(--hermes-base-horizontal-offset-m);min-width:170px}.tb-preset-cards .tb-preset-card.tb-preset-card-active{outline:var(--hermes-alias-object-border-width-200) solid var(--hermes-alias-primary);outline-offset:2px}.tb-preset-cards .tb-preset-card .card-text{margin-bottom:0}.tb-preset-swatch{display:flex;align-items:center;justify-content:center;height:var(--hermes-base-row-height-m);min-width:var(--hermes-base-row-height-m);border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);border-radius:var(--hermes-alias-object-border-radius-100);background:var(--hermes-alias-object-container-background);color:var(--hermes-alias-typography-color-300)}.tb-layout{display:grid;grid-template-columns:370px 1fr;gap:var(--hermes-base-gap-l);align-items:start}.tb-controls-card{margin-top:0;position:sticky;top:0;max-height:calc(100vh - var(--hermes-global-space-15));overflow-y:auto}.tb-controls-card .tb-control-header{display:flex;align-items:center;justify-content:space-between}.tb-wcag-container{display:flex;flex-direction:column;gap:var(--hermes-base-gap-s)}.tb-wcag-container .tb-wcag-item{display:flex;justify-content:space-between;align-items:center}.card-block{display:flex;flex-direction:column;gap:var(--hermes-base-gap-l)}.card-block .tb-color-input-wrap{display:flex;align-items:center;gap:var(--hermes-base-gap-s);min-width:190px}.card-block .tb-color-picker{padding:var(--hermes-base-vertical-offset-2xs) var(--hermes-base-horizontal-offset-2xs);border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);border-radius:var(--hermes-alias-object-border-radius-100);cursor:pointer;background:var(--hermes-alias-object-container-background);width:var(--hermes-global-space-11)}.card-block .tb-hex-input{width:var(--hermes-base-layout-space-5xl);padding:var(--hermes-base-vertical-offset-2xs) var(--hermes-base-horizontal-offset-s);border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);border-radius:var(--hermes-alias-object-border-radius-100)}.card-block .tb-stack-label{display:flex;gap:var(--hermes-base-gap-m);align-items:center}.tb-preview-card{margin-top:0}.tb-preview-card .card-header{display:flex;align-items:center;gap:var(--hermes-base-gap-m)}.tb-preview-sandbox{display:flex;flex-direction:column;gap:var(--hermes-base-gap-l);border-bottom-left-radius:var(--hermes-alias-object-border-radius-100);border-bottom-right-radius:var(--hermes-alias-object-border-radius-100)}.tb-preview-section{display:flex;flex-direction:column;gap:var(--hermes-base-gap-m)}.tb-preview-row{display:flex;align-items:center;gap:var(--hermes-base-gap-m);flex-wrap:wrap}.tb-nav-preview-wrap{height:180px;border:var(--hermes-alias-object-border-width-100) solid var(--hermes-alias-object-border-color);overflow:hidden;display:flex}\n"], dependencies: [{ kind: "ngmodule", type: HermesModule }, { kind: "component", type: i1.HermesAlert, selector: "hermes-alert", inputs: ["hermesAlertSizeSmall", "hermesAlertClosable", "hermesAlertAppLevel", "hermesCloseButtonAriaLabel", "hermesAlertLightweight", "hermesAlertType", "hermesAlertIcon", "hermesAlertClosed"], outputs: ["hermesAlertClosedChange"] }, { kind: "component", type: i1.HermesAlertItem, selector: "hermes-alert-item" }, { kind: "directive", type: i1.HermesAlertText, selector: ".alert-text" }, { kind: "component", type: i2.HermesLabel, selector: "hermes-label", inputs: ["hermesColor", "hermesBadgeText", "hermesText", "hermesClickable", "hermesDisabled", "hermesType"] }, { kind: "component", type: i3.HermesDatagrid, selector: "hermes-datagrid", inputs: ["hermesLoadingMoreItems", "hermesDgSingleSelectionAriaLabel", "hermesDgSingleActionableAriaLabel", "hermesDetailExpandableAriaLabel", "hermesDgDisablePageFocus", "hermesDgCustomSelectAllEnabled", "hermesDgSelectAllDisabled", "hermesDgLoading", "hermesDgSelectionType", "hermesDgSelected", "hermesDgPreserveSelection", "hermesDgRowSelection", "hermesDgItemsIdentityFn"], outputs: ["hermesDgSelectedChange", "hermesDgRefresh", "hermesDgCustomSelectAll"] }, { kind: "component", type: i3.HermesDatagridCell, selector: "hermes-dg-cell" }, { kind: "component", type: i3.HermesDatagridColumn, selector: "hermes-dg-column", inputs: ["hermesFilterStringPlaceholder", "hermesFilterNumberMaxPlaceholder", "hermesFilterNumberMinPlaceholder", "hermesDgDisableUnsort", "hermesDgPinned", "hermesDgColType", "hermesDgField", "hermesDgSortBy", "hermesDgSortOrder", "hermesFilterValue"], outputs: ["hermesDgSortOrderChange", "hermesFilterValueChange"] }, { kind: "component", type: i3.HermesDatagridFooter, selector: "hermes-dg-footer" }, { kind: "component", type: i3.HermesDatagridRow, selector: "hermes-dg-row", inputs: ["hermesDgDetailDisabled", "hermesDgDetailHidden", "hermesDgSkeletonLoading", "hermesDgItem", "hermesDgSelectable", "hermesDgSelected", "hermesDgExpanded", "hermesDgDetailOpenLabel", "hermesDgDetailCloseLabel", "hermesDgRowSelectionLabel"], outputs: ["hermesDgSelectedChange", "hermesDgExpandedChange"] }, { kind: "directive", type: i3.DatagridCellRenderer, selector: "hermes-dg-cell" }, { kind: "directive", type: i3.DatagridHeaderRenderer, selector: "hermes-dg-column", outputs: ["hermesDgColumnResize"] }, { kind: "directive", type: i3.DatagridMainRenderer, selector: "hermes-datagrid" }, { kind: "directive", type: i3.DatagridRowRenderer, selector: "hermes-dg-row" }, { kind: "directive", type: i3.ActionableOompaLoompa, selector: "hermes-datagrid, hermes-dg-row" }, { kind: "directive", type: i3.DatagridWillyWonka, selector: "hermes-datagrid" }, { kind: "directive", type: i3.ExpandableOompaLoompa, selector: "hermes-datagrid, hermes-dg-row" }, { kind: "component", type: i4.HermesStackView, selector: "hermes-stack-view" }, { kind: "component", type: i4.HermesStackHeader, selector: "hermes-stack-header", inputs: ["hermesStackHeaderLevel"] }, { kind: "component", type: i4.HermesStackBlock, selector: "hermes-stack-block", inputs: ["hermesSbExpanded", "hermesSbExpandable", "hermesStackViewLevel", "hermesSbNotifyChange"], outputs: ["hermesSbExpandedChange"] }, { kind: "component", type: i4.HermesStackViewLabel, selector: "hermes-stack-label", inputs: ["id"] }, { kind: "directive", type: i4.HermesStackViewCustomTags, selector: "hermes-stack-content" }, { kind: "component", type: i5.HermesTree, selector: "hermes-tree", inputs: ["hermesLazy"] }, { kind: "component", type: i5.HermesTreeNode, selector: "hermes-tree-node", inputs: ["hermesExpandable", "hermesDisabled", "hermesSelected", "hermesExpanded", "hermesForTypeAhead"], outputs: ["hermesSelectedChange", "hermesExpandedChange"] }, { kind: "component", type: i6.HermesIcon, selector: "hermes-icon, hermes-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i6.HermesIconCustomTag, selector: "hermes-icon" }, { kind: "directive", type: i7.HermesControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: i7.HermesControlError, selector: "hermes-control-error" }, { kind: "component", type: i7.HermesControlHelper, selector: "hermes-control-helper" }, { kind: "directive", type: i7.HermesIfError, selector: "[hermesIfError]", inputs: ["hermesIfError"] }, { kind: "directive", type: i7.HermesForm, selector: "[hermesForm]", inputs: ["hermesLabelSize"] }, { kind: "directive", type: i7.HermesLayout, selector: "[hermesForm][hermesLayout]", inputs: ["hermesLayout"] }, { kind: "directive", type: i8.HermesCheckbox, selector: "[hermesCheckbox],[hermesToggle]" }, { kind: "component", type: i8.HermesCheckboxContainer, selector: "hermes-checkbox-container,hermes-toggle-container", inputs: ["hermesInline"] }, { kind: "component", type: i8.HermesCheckboxWrapper, selector: "hermes-checkbox-wrapper,hermes-toggle-wrapper" }, { kind: "directive", type: i9.HermesInput, selector: "[hermesInput]" }, { kind: "component", type: i9.HermesInputContainer, selector: "hermes-input-container" }, { kind: "directive", type: i10.HermesRadio, selector: "[hermesRadio]" }, { kind: "component", type: i10.HermesRadioContainer, selector: "hermes-radio-container", inputs: ["hermesInline"] }, { kind: "component", type: i10.HermesRadioWrapper, selector: "hermes-radio-wrapper" }, { kind: "directive", type: i11.HermesTextarea, selector: "[hermesTextarea]" }, { kind: "component", type: i11.HermesTextareaContainer, selector: "hermes-textarea-container" }, { kind: "component", type: i12.HermesTabContent, selector: "hermes-tab-content", inputs: ["id"] }, { kind: "component", type: i12.HermesTab, selector: "hermes-tab" }, { kind: "component", type: i12.HermesTabs, selector: "hermes-tabs", inputs: ["hermesLayout"] }, { kind: "directive", type: i12.HermesTabLink, selector: "[hermesTabLink]", inputs: ["id", "hermesTabLinkInOverflow"] }, { kind: "directive", type: i12.TabsWillyWonka, selector: "hermes-tabs" }, { kind: "directive", type: i12.ActiveOompaLoompa, selector: "[hermesTabLink], hermes-tab-content" }, { kind: "component", type: i13.HermesVerticalNav, selector: "hermes-vertical-nav", inputs: ["hermesVerticalNavToggleLabel", "hermesVerticalNavPinnable", "hermesVerticalNavLabel", "hermesVerticalNavMode", "hermesVerticalNavFooter", "hermesVerticalNavAutoWidth", "hermesVerticalNavFooterLabels", "hermesVerticalNavCollapsible", "hermesVerticalNavCollapsed"], outputs: ["hermesVerticalNavModeChange", "hermesVerticalNavCollapsedChange"] }, { kind: "component", type: i13.HermesVerticalNavLink, selector: "[hermesVerticalNavLink]" }, { kind: "component", type: i13.HermesVerticalNavGroup, selector: "hermes-vertical-nav-group", inputs: ["hermesVerticalNavGroupExpanded"], outputs: ["hermesVerticalNavGroupExpandedChange"] }, { kind: "component", type: i13.HermesVerticalNavGroupChildren, selector: "hermes-vertical-nav-group-children" }, { kind: "directive", type: i13.HermesVerticalNavIcon, selector: "[hermesVerticalNavIcon]" }, { kind: "component", type: i14.HermesBreadcrumbs, selector: "hermes-breadcrumbs", inputs: ["items"], outputs: ["hermesBreadcrumbItemClick"] }, { kind: "component", type: i15.HermesTooltip, selector: "hermes-tooltip" }, { kind: "directive", type: i15.HermesTooltipTrigger, selector: "[hermesTooltipTrigger]" }, { kind: "component", type: i15.HermesTooltipContent, selector: "hermes-tooltip-content", inputs: ["id", "hermesPosition", "hermesSize"] }, { kind: "component", type: i16.HermesWizard, selector: "hermes-wizard", inputs: ["hermesWizardStepnavAriaLabel", "hermesWizardStepnavLayout", "hermesWizardSize", "hermesWizardInPage", "hermesWizardInPageFillContentArea", "hermesWizardHideFooter", "hermesWizardFooterAlign", "hermesWizardClosable", "hermesWizardPreventModalAnimation", "hermesWizardForceForwardNavigation", "hermesWizardOpen", "hermesWizardPreventDefaultNext", "hermesWizardPreventDefaultCancel", "hermesWizardPreventNavigation", "hermesWizardDisableStepnav"], outputs: ["hermesWizardOpenChange", "hermesWizardOnCancel", "hermesWizardOnFinish", "hermesWizardOnReset", "hermesWizardCurrentPageChange", "hermesWizardOnNext", "hermesWizardOnPrevious"] }, { kind: "component", type: i16.HermesWizardPage, selector: "hermes-wizard-page", inputs: ["id", "hermesWizardPagePreventDefault", "hermesWizardPageNextDisabled", "hermesWizardPagePreviousDisabled", "hermesWizardPageHasError", "hermesWizardPagePreventDefaultCancel", "hermesWizardPagePreventDefaultNext"], outputs: ["hermesWizardPageNextDisabledChange", "hermesWizardPagePreviousDisabledChange", "hermesWizardPagePreventDefaultCancelChange", "hermesWizardPageOnCommit", "hermesWizardPageOnLoad", "hermesWizardPageOnCancel", "hermesWizardPageFinish", "hermesWizardPagePrevious", "hermesWizardPageNext", "hermesWizardPageDanger", "hermesWizardPagePrimary", "hermesWizardPageCustomButton"] }, { kind: "component", type: i16.HermesWizardButton, selector: "hermes-wizard-button", inputs: ["type", "hermesWizardButtonDisabled", "hermesWizardButtonHidden"], outputs: ["hermesWizardButtonClicked"] }, { kind: "directive", type: i16.HermesWizardTitle, selector: "hermes-wizard-title", inputs: ["hermesHeadingLevel"] }, { kind: "directive", type: i16.HermesWizardPageTitle, selector: "[hermesPageTitle]", inputs: ["hermesHeadingLevel"] }, { kind: "component", type: i17.HermesAccordion, selector: "hermes-accordion", inputs: ["hermesAccordionMultiPanel"] }, { kind: "component", type: i17.HermesAccordionPanel, selector: "hermes-accordion-panel", inputs: ["hermesAccordionPanelDisabled", "hermesAccordionPanelOpen", "hermesAccordionPanelHeadingLevel"], outputs: ["hermesAccordionPanelOpenChange"] }, { kind: "component", type: i17.HermesAccordionTitle, selector: "hermes-accordion-title" }, { kind: "component", type: i17.HermesAccordionContent, selector: "hermes-accordion-content" }, { kind: "directive", type: i17.AccordionOompaLoompa, selector: "hermes-accordion-panel" }, { kind: "directive", type: i17.AccordionWillyWonka, selector: "hermes-accordion" }, { kind: "component", type: i18.HermesStepper, selector: "form[hermesStepper]", inputs: ["hermesInitialStep"] }, { kind: "directive", type: i18.HermesStepButton, selector: "[hermesStepButton]", inputs: ["hermesStepButton"] }, { kind: "component", type: i18.HermesStepTitle, selector: "hermes-step-title" }, { kind: "component", type: i18.HermesStepDescription, selector: "hermes-step-description" }, { kind: "component", type: i18.HermesStepContent, selector: "hermes-step-content" }, { kind: "component", type: i18.HermesStepperPanel, selector: "hermes-stepper-panel" }, { kind: "directive", type: i18.StepperOompaLoompa, selector: "hermes-stepper-panel, [hermesStepButton]" }, { kind: "directive", type: i18.StepperWillyWonka, selector: "form[hermesStepper]" }, { kind: "component", type: i19.HermesProgressBar, selector: "hermes-progress-bar", inputs: ["hermesMax", "hermesDisplayval", "hermesColor", "hermesValue", "id", "hermesCompact", "hermesLabeled", "hermesFade", "hermesLoop", "hermesFlash", "hermesFlashDanger"] }, { kind: "component", type: i20.HermesTimeline, selector: "hermes-timeline", inputs: ["hermesLayout"] }, { kind: "component", type: i20.HermesTimelineStep, selector: "hermes-timeline-step", inputs: ["hermesState"] }, { kind: "component", type: i20.HermesTimelineStepDescription, selector: "hermes-timeline-step-description" }, { kind: "component", type: i20.HermesTimelineStepHeader, selector: "hermes-timeline-step-header" }, { kind: "component", type: i20.HermesTimelineStepTitle, selector: "hermes-timeline-step-title" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i21.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i22.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i22.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i22.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i22.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i22.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i22.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i22.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i22.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: i22.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i21.UpperCasePipe, name: "uppercase" }] }); }
824
824
  }
825
825
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: ThemeBuilderComponent, decorators: [{
826
826
  type: Component,