@aquera/nile-elements 2.0.11 → 2.0.12

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 (34) hide show
  1. package/README.md +3 -0
  2. package/demo/app-shell.html +21 -21
  3. package/dist/index.js +76 -66
  4. package/dist/nile-app-shell/nile-app-shell.cjs.js +1 -1
  5. package/dist/nile-app-shell/nile-app-shell.cjs.js.map +1 -1
  6. package/dist/nile-app-shell/nile-app-shell.css.cjs.js +1 -1
  7. package/dist/nile-app-shell/nile-app-shell.css.cjs.js.map +1 -1
  8. package/dist/nile-app-shell/nile-app-shell.css.esm.js +35 -32
  9. package/dist/nile-app-shell/nile-app-shell.esm.js +39 -34
  10. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js +1 -1
  11. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js.map +1 -1
  12. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.esm.js +3 -1
  13. package/dist/src/nile-app-shell/nile-app-shell-regions.test.js +9 -5
  14. package/dist/src/nile-app-shell/nile-app-shell-regions.test.js.map +1 -1
  15. package/dist/src/nile-app-shell/nile-app-shell.css.js +33 -30
  16. package/dist/src/nile-app-shell/nile-app-shell.css.js.map +1 -1
  17. package/dist/src/nile-app-shell/nile-app-shell.d.ts +22 -22
  18. package/dist/src/nile-app-shell/nile-app-shell.js +86 -76
  19. package/dist/src/nile-app-shell/nile-app-shell.js.map +1 -1
  20. package/dist/src/nile-app-shell/nile-app-shell.test.d.ts +1 -0
  21. package/dist/src/nile-app-shell/nile-app-shell.test.js +307 -89
  22. package/dist/src/nile-app-shell/nile-app-shell.test.js.map +1 -1
  23. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js +3 -1
  24. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js.map +1 -1
  25. package/dist/src/version.js +1 -1
  26. package/dist/src/version.js.map +1 -1
  27. package/dist/tsconfig.tsbuildinfo +1 -1
  28. package/package.json +1 -1
  29. package/src/nile-app-shell/nile-app-shell-regions.test.ts +9 -5
  30. package/src/nile-app-shell/nile-app-shell.css.ts +33 -30
  31. package/src/nile-app-shell/nile-app-shell.test.ts +348 -105
  32. package/src/nile-app-shell/nile-app-shell.ts +89 -82
  33. package/src/nile-app-shell-panel/nile-app-shell-panel.css.ts +3 -1
  34. package/vscode-html-custom-data.json +27 -37
package/README.md CHANGED
@@ -91,6 +91,9 @@ To run a local development server that serves the basic demo located in `demo/in
91
91
 
92
92
  In this section, you can find the updates for each release of `nile-elements`. It's a good practice to maintain detailed release notes to help users and developers understand what changes have been made from one version to another and how these changes might affect their projects.
93
93
 
94
+ #### Version 2.0.12 (September 30, 2026)
95
+ - App Shell: Header matches the Nile NG design; added `headerBack`, `headerBackLabel` and back `nile-click` `{ value: 'back' }`, replacing `leading`, `backLabel` and `nile-header-back` (UIF-1371)
96
+
94
97
  #### Version 2.0.11 (September 29, 2026)
95
98
  - App Shell: Added header variants: a title with an optional `description` and `badge`, a `leading` back breadcrumb or app icon, and optional tabs, at 68px, 76px (description), 101px (tabs) and 109px (both) (UIF-1369)
96
99
 
@@ -159,7 +159,7 @@
159
159
  /* ----------------------------------------------- header variant gallery
160
160
  *
161
161
  * The AC-7 comparison surface: the header's three Figma axes crossed out
162
- * in full, twelve cards that differ ONLY by those axes, grouped under
162
+ * in full, sixteen cards (the arrow and the app icon are independent) that differ ONLY by those axes, grouped under
163
163
  * the height each pair of axes is meant to produce. Everything here is
164
164
  * prefixed vg- so it cannot collide with the reference demo above.
165
165
  */
@@ -342,7 +342,7 @@
342
342
  <!--
343
343
  Two views, switched by ?view= and the pill bottom-right:
344
344
  (default) the reference shell, one realistic page
345
- ?view=variants the AC-7 comparison surface, all 12 header variants
345
+ ?view=variants the AC-7 comparison surface, all 16 header variants
346
346
  -->
347
347
  <div id="vgShellView" style="height: 100%">
348
348
  <nile-app-shell id="shell" full-height persist-key="demo-shell">
@@ -488,7 +488,7 @@
488
488
 
489
489
  <!--
490
490
  The header variant gallery. The cards are generated from the axis matrix
491
- rather than written out twelve times, so the only thing that can differ
491
+ rather than written out sixteen times, so the only thing that can differ
492
492
  between them is the axes themselves — which is the whole point of a
493
493
  parity comparison.
494
494
  -->
@@ -618,10 +618,12 @@
618
618
  { tabs: true, description: true, height: 109 },
619
619
  ];
620
620
 
621
+ /* headerBack and the app-icon slot are independent (Amendment A), so each section shows all four combinations. */
621
622
  const LEADINGS = [
622
- { value: 'none', label: 'Leading=None' },
623
- { value: 'back', label: 'Leading=Back' },
624
- { value: 'app-icon', label: 'Leading=AppIcon' },
623
+ { value: 'none', back: false, icon: false, label: 'Title only' },
624
+ { value: 'back', back: true, icon: false, label: 'headerBack' },
625
+ { value: 'app-icon', back: false, icon: true, label: 'app-icon slot' },
626
+ { value: 'back+app-icon', back: true, icon: true, label: 'headerBack + app-icon' },
625
627
  ];
626
628
 
627
629
  const DESCRIPTION = 'Manage the applications connected to this tenant';
@@ -638,7 +640,9 @@
638
640
  const card = (n, section, leading) => {
639
641
  const axes = `tabs=${section.tabs ? 'on' : 'off'} · description=${
640
642
  section.description ? 'on' : 'off'
641
- } · leading=${leading.value}`;
643
+ } · headerBack=${leading.back ? 'on' : 'off'} · app-icon=${
644
+ leading.icon ? 'slotted' : 'empty'
645
+ }`;
642
646
 
643
647
  return `
644
648
  <div class="vg-card">
@@ -662,9 +666,8 @@
662
666
  <nile-app-shell
663
667
  pageTitle="Connected applications"
664
668
  badge="94 apps"
665
- leading="${leading.value}"
669
+ ${leading.back ? 'headerBack' : ''}
666
670
  ${section.description ? `description="${DESCRIPTION}"` : ''}
667
- ${leading.value === 'back' ? 'backLabel="Integrations"' : ''}
668
671
  no-panel-shortcut
669
672
  >
670
673
  <nav slot="side-nav" class="vg-nav">
@@ -672,7 +675,7 @@
672
675
  <span>Requests</span>
673
676
  </nav>
674
677
  ${
675
- leading.value === 'app-icon'
678
+ leading.icon
676
679
  ? `<nile-glyph
677
680
  slot="app-icon"
678
681
  name="ng-layers-2"
@@ -775,22 +778,19 @@
775
778
  }
776
779
 
777
780
  /*
778
- * The leading element belongs to the title's row, so it sits 2px
779
- * below the title's top edge — (24px line box - 20px control) / 2 —
780
- * whether or not there is a description under it. The app icon is
781
- * 20px, its own size rather than the 32px utility control box.
781
+ * The back arrow and the app icon both belong to the title's row, so
782
+ * each sits 2px below the title's top edge — (24px line box - 20px) / 2 —
783
+ * whether or not there is a description under it. With both, the
784
+ * chip measures the icon; the arrow shares its row.
782
785
  */
783
786
  if (entry.leadChip) {
784
787
  const title = root
785
788
  .querySelector('[part~="page-title"]')
786
789
  .getBoundingClientRect();
787
- const icon = root.querySelector('[part~="app-icon"]');
788
- /*
789
- * For leading=back the 20px element is the ARROW, not the control:
790
- * the control is the title's own 24px line box, so its label sits
791
- * level with the page title (+0) while the arrow centres in it
792
- * (+2). Measuring the control box would report +0 and look wrong.
793
- */
790
+ /* The app-icon box is always in the shadow tree (hidden when empty), so only count it when the slot is filled. */
791
+ const icon = entry.shell.hasAttribute('has-app-icon')
792
+ ? root.querySelector('[part~="app-icon"]')
793
+ : null;
794
794
  const measured = icon
795
795
  ? icon
796
796
  : root.querySelector('[part~="back"]').querySelector('nile-glyph');
package/dist/index.js CHANGED
@@ -19639,7 +19639,7 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
19639
19639
  ${this._renderTrigger()}
19640
19640
  ${e}
19641
19641
  </nile-popover>
19642
- `:e}};e([de({type:String,attribute:!0,reflect:!0})],NS.prototype,"type",void 0),e([de({type:String,attribute:!0,reflect:!0})],NS.prototype,"value",void 0),e([de({type:String,reflect:!0})],NS.prototype,"swatchTooltip",void 0),e([de({type:Number,reflect:!0})],NS.prototype,"recentColorsCount",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"noFill",void 0),e([de({type:String,reflect:!0})],NS.prototype,"mode",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showCanvas",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showHue",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showInputs",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showActions",void 0),e([de({type:Boolean,reflect:!0,attribute:!0})],NS.prototype,"open",void 0),e([de({attribute:"palette",converter:{fromAttribute:e=>{try{const t=JSON.parse(e);return Array.isArray(t)?t.map((e=>"string"==typeof e?{color:e,name:e}:e&&"string"==typeof e.color?{color:e.color,name:e.name||e.color}:null)).filter(Boolean):[]}catch{return[]}},toAttribute:e=>JSON.stringify(e)}})],NS.prototype,"palette",void 0),e([he()],NS.prototype,"_view",void 0),e([he()],NS.prototype,"_recentColors",void 0),e([he()],NS.prototype,"_hue",void 0),e([he()],NS.prototype,"_sat",void 0),e([he()],NS.prototype,"_val",void 0),e([he()],NS.prototype,"_colorMode",void 0),e([he()],NS.prototype,"_hexInput",void 0),e([he()],NS.prototype,"_r",void 0),e([he()],NS.prototype,"_g",void 0),e([he()],NS.prototype,"_b",void 0),NS=e([ce("nile-color-picker")],NS);function pS(){return function(){if("undefined"==typeof window||"function"!=typeof getComputedStyle)return null;try{return getComputedStyle(document.documentElement).getPropertyValue("--nile-version").trim().replace(/^["']|["']$/g,"")||null}catch{return null}}()??"1.3.4"}if("undefined"!=typeof window){window.nileElementsVersion='"2.0.11"';let e=null;Object.defineProperty(window,"nileVersion",{configurable:!0,get:()=>e??pS(),set:t=>{e=t}}),window.process=window.process||{env:{NODE_ENV:"production"}}}const DS=s`
19642
+ `:e}};e([de({type:String,attribute:!0,reflect:!0})],NS.prototype,"type",void 0),e([de({type:String,attribute:!0,reflect:!0})],NS.prototype,"value",void 0),e([de({type:String,reflect:!0})],NS.prototype,"swatchTooltip",void 0),e([de({type:Number,reflect:!0})],NS.prototype,"recentColorsCount",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"noFill",void 0),e([de({type:String,reflect:!0})],NS.prototype,"mode",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showCanvas",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showHue",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showInputs",void 0),e([de({type:Boolean,reflect:!0})],NS.prototype,"showActions",void 0),e([de({type:Boolean,reflect:!0,attribute:!0})],NS.prototype,"open",void 0),e([de({attribute:"palette",converter:{fromAttribute:e=>{try{const t=JSON.parse(e);return Array.isArray(t)?t.map((e=>"string"==typeof e?{color:e,name:e}:e&&"string"==typeof e.color?{color:e.color,name:e.name||e.color}:null)).filter(Boolean):[]}catch{return[]}},toAttribute:e=>JSON.stringify(e)}})],NS.prototype,"palette",void 0),e([he()],NS.prototype,"_view",void 0),e([he()],NS.prototype,"_recentColors",void 0),e([he()],NS.prototype,"_hue",void 0),e([he()],NS.prototype,"_sat",void 0),e([he()],NS.prototype,"_val",void 0),e([he()],NS.prototype,"_colorMode",void 0),e([he()],NS.prototype,"_hexInput",void 0),e([he()],NS.prototype,"_r",void 0),e([he()],NS.prototype,"_g",void 0),e([he()],NS.prototype,"_b",void 0),NS=e([ce("nile-color-picker")],NS);function pS(){return function(){if("undefined"==typeof window||"function"!=typeof getComputedStyle)return null;try{return getComputedStyle(document.documentElement).getPropertyValue("--nile-version").trim().replace(/^["']|["']$/g,"")||null}catch{return null}}()??"1.3.4"}if("undefined"!=typeof window){window.nileElementsVersion='"2.0.12"';let e=null;Object.defineProperty(window,"nileVersion",{configurable:!0,get:()=>e??pS(),set:t=>{e=t}}),window.process=window.process||{env:{NODE_ENV:"production"}}}const DS=s`
19643
19643
  .utility-control::part(base) {
19644
19644
  width: var(--nile-app-shell-utility-size, 32px);
19645
19645
  height: var(--nile-app-shell-utility-size, 32px);
@@ -19872,21 +19872,21 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
19872
19872
  flex: 1 1 auto;
19873
19873
  }
19874
19874
 
19875
- /* The title block: the header's own heading, the Leading axis and the badge; renders before the top-bar slot. */
19875
+ /* The title block: the back arrow, then the stack (app icon, heading and badge, with the description under them); renders before the top-bar slot. */
19876
19876
  .title-area {
19877
19877
  display: flex;
19878
- /* Top-aligned, not centred: the leading element belongs to the title's row, not the title-plus-description stack. */
19878
+ /* Top-aligned, not centred: the back arrow belongs to the title's row, not the title-plus-description stack. */
19879
19879
  align-items: flex-start;
19880
- gap: var(--nile-spacing-md, var(--ng-spacing-md));
19880
+ /* Figma's Title Area gap: 16px from the arrow to the stack. */
19881
+ gap: var(--nile-spacing-xl, var(--ng-spacing-xl));
19881
19882
  min-width: 0;
19882
19883
  }
19883
19884
 
19884
- /* The leading line box: exactly the page title's line height, centring whatever leading control sits in it. */
19885
- .leading {
19885
+ /* The back arrow's line box: exactly the page title's line height, centring the arrow on the title row. */
19886
+ .back-line {
19886
19887
  flex: 0 0 auto;
19887
19888
  display: inline-flex;
19888
19889
  align-items: center;
19889
- gap: var(--nile-spacing-md, var(--ng-spacing-md));
19890
19890
  min-height: var(--nile-line-height-medium, var(--ng-line-height-text-md));
19891
19891
  }
19892
19892
 
@@ -19925,7 +19925,7 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
19925
19925
  font-size: var(--nile-type-scale-1, var(--ng-font-size-text-xs));
19926
19926
  line-height: var(--nile-line-height-xsmall, var(--ng-line-height-text-xs));
19927
19927
  font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular));
19928
- color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));
19928
+ color: var(--nile-colors-dark-500, var(--ng-colors-text-quaternary-500));
19929
19929
  white-space: nowrap;
19930
19930
  overflow: hidden;
19931
19931
  text-overflow: ellipsis;
@@ -19959,36 +19959,24 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
19959
19959
  white-space: nowrap;
19960
19960
  }
19961
19961
 
19962
- /* Leading=Back: drawn as a breadcrumb label; the shell owns no history, so pressing it only emits nile-header-back. */
19962
+ /* headerBack: an icon-only native button, so the aria-label names it directly; the shell owns no history, so pressing it only emits nile-click { value: 'back' }. */
19963
19963
  .back {
19964
19964
  flex: 0 0 auto;
19965
19965
  display: inline-flex;
19966
19966
  align-items: center;
19967
- gap: var(--nile-spacing-xs, var(--ng-spacing-xs));
19968
19967
  margin: 0;
19969
19968
  padding: 0;
19970
19969
  border: 0;
19971
19970
  background: none;
19972
19971
  cursor: pointer;
19973
- font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
19974
- font-size: var(--nile-type-scale-3, var(--ng-font-size-text-md));
19975
- line-height: var(--nile-line-height-medium, var(--ng-line-height-text-md));
19976
- font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-semibold));
19977
- color: var(--nile-colors-dark-500, var(--ng-colors-text-tertiary-600));
19972
+ color: var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400));
19978
19973
  }
19979
19974
 
19980
19975
  .back:hover {
19981
19976
  color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
19982
19977
  }
19983
19978
 
19984
- .crumb-divider {
19985
- flex: 0 0 auto;
19986
- display: inline-flex;
19987
- align-items: center;
19988
- color: var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400));
19989
- }
19990
-
19991
- /* Leading=AppIcon: a 20px block before the title; the page slots the mark, the shell owns the box, surface and radius. */
19979
+ /* App icon: a 20px block at the start of the title row, so the description lines up under it; shown whenever the app-icon slot has content. */
19992
19980
  .app-icon {
19993
19981
  position: relative;
19994
19982
  flex: 0 0 auto;
@@ -20031,16 +20019,15 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20031
20019
  padding: 1.4px;
20032
20020
  }
20033
20021
 
20034
- :host(:not([leading='app-icon'])) .app-icon,
20035
- :host(:not([leading='back'])) .back,
20036
- :host(:not([leading='back'])) .crumb-divider {
20022
+ :host(:not([has-app-icon])) .app-icon {
20037
20023
  display: none;
20038
20024
  }
20039
20025
 
20026
+ /* Figma's Header Bar gap: 16px between every header action, the divider and Ask. */
20040
20027
  .top-bar-actions {
20041
20028
  display: flex;
20042
20029
  align-items: center;
20043
- gap: var(--nile-spacing-md, var(--ng-spacing-md));
20030
+ gap: var(--nile-spacing-xl, var(--ng-spacing-xl));
20044
20031
  margin-inline-start: auto;
20045
20032
  }
20046
20033
 
@@ -20049,7 +20036,7 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20049
20036
  display: none;
20050
20037
  }
20051
20038
 
20052
- /* The Ask button: a stock <nile-button variant="primary"> the shell renders itself; the only rule here is its flex behaviour as a top-bar item. */
20039
+ /* The Ask button: a stock <nile-button variant="secondary"> the shell renders itself; the only rule here is its flex behaviour as a top-bar item. */
20053
20040
  .ask {
20054
20041
  flex: 0 0 auto;
20055
20042
  }
@@ -20066,10 +20053,11 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20066
20053
  height: 16px;
20067
20054
  }
20068
20055
 
20056
+ /* 10px after the 32px circle is 16px after the 20px glyph (6px overhang + 10), Figma's toggle-to-divider gap. */
20069
20057
  .nav-toggle-group {
20070
20058
  display: flex;
20071
20059
  align-items: center;
20072
- gap: var(--nile-spacing-lg, var(--ng-spacing-lg));
20060
+ gap: var(--nile-spacing-md-alt, var(--ng-spacing-md-alt));
20073
20061
  }
20074
20062
 
20075
20063
  /* Lands the 20px glyph box, not the 32px utility circle, on the 24px origin: (32 - 20) / 2 = 6. */
@@ -20077,10 +20065,12 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20077
20065
  margin-inline-start: -6px;
20078
20066
  }
20079
20067
 
20068
+ /* Figma's Divider Line: a 16px 1px stroke that takes no layout width, so the items on both sides sit a clean 16px from it. Used after the nav toggle and, as ask-rule, before Ask. */
20080
20069
  .rule {
20081
20070
  flex: 0 0 auto;
20082
20071
  width: var(--nile-border-width-1, var(--ng-border-width-1));
20083
- height: 24px;
20072
+ margin-inline-end: calc(-1 * var(--nile-border-width-1, var(--ng-border-width-1)));
20073
+ height: 16px;
20084
20074
  background: var(
20085
20075
  --nile-colors-neutral-400,
20086
20076
  var(--ng-colors-border-secondary)
@@ -20133,6 +20123,17 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20133
20123
  /* Scoped to the group, not the slot, so bare tab controls are not stretched to an equal share of the strip. */
20134
20124
  ::slotted(nile-nav-tab-group[slot='tabs']) {
20135
20125
  --track-width: 0px;
20126
+ /*
20127
+ * The active indicator (Figma: fg-brand-primary-alt) is NOT set here: the top placement hard-codes
20128
+ * var(--nile-colors-primary-600, var(--ng-colors-text-brand-secondary-700)) inside nile-nav-tab-group's shadow tree, and
20129
+ * remapping either token from here would also recolour nile-nav-tab's focus ring and focus label. Known limitation (spec A-7).
20130
+ */
20131
+ /*
20132
+ * The inactive label: nile-nav-tab paints it var(--nile-colors-dark-500, var(--ng-colors-text-secondary-700)), so the strip
20133
+ * points the NxtGen fallback at text-quaternary-500. Enterprise defines --nile-colors-dark-500 and is untouched. Inside an
20134
+ * underline group nothing else reads text-secondary-700 (only the group's other variants and side placements do).
20135
+ */
20136
+ --ng-colors-text-secondary-700: var(--ng-colors-text-quaternary-500);
20136
20137
  flex: 1 1 auto;
20137
20138
  min-width: 0;
20138
20139
  align-self: flex-end;
@@ -20299,7 +20300,9 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20299
20300
 
20300
20301
  .panel-title {
20301
20302
  margin: 0;
20302
- font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
20303
+ /* Figma's Assistant Title: Text lg/Semibold, 18/28 on NxtGen. Enterprise keeps --nile-type-scale-3, and it defines no --ng-* tokens, so the line-height declaration is invalid there and the title inherits its line height exactly as before. */
20304
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-lg));
20305
+ line-height: var(--ng-line-height-text-lg);
20303
20306
  font-weight: var(
20304
20307
  --nile-font-weight-semi-bold,
20305
20308
  var(--ng-font-weight-semibold)
@@ -20390,7 +20393,7 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20390
20393
  size=${t}
20391
20394
  method=${e.startsWith("ng-")?"stroke":"fill"}
20392
20395
  color=${Pe(i)}
20393
- ></nile-glyph>`}let jS=class extends Fe{constructor(){super(...arguments),this.navCollapsed=!1,this.panelOpen=!1,this.noPanel=!1,this.panelLabel="Ask Aquera",this.headingLevel=1,this.leading="none",this.backLabel="Back",this.noNavToggle=!1,this.noPanelShortcut=!1,this.noSkipLink=!1,this.skipLinkLabel="Skip to main content",this.topBarPlacement="content",this.contentAlign="fluid",this.contentContainer=!1,this.flat=!1,this.noPadding=!1,this.askLabel="Ask",this.noAsk=!1,this.panelBack=!1,this.panelBackLabel="Back",this.noTabs=!1,this.fullHeight=!1,this.overlayBreakpoint=0,this.dockedRailBreakpoint=1440,this._panelMode="docked",this._navLocked=!1,this._hasBanner=!1,this._hasSideNav=!1,this._hasTopBar=!1,this._hasTopBarActions=!1,this._hasTabs=!1,this._hasPanel=!1,this._hasPanelFooter=!1,this._panelOwnsChrome=!1,this._hasAside=!1,this._width=0,this._restoredPanelOpen=null,this._onSideNavToggle=e=>{const t=e.detail;t&&"boolean"==typeof t.collapsed&&this._setNavCollapsed(t.collapsed)},this._onKeyDown=e=>{if(this.noPanelShortcut||!this.panelAvailable)return;const t=e.key??"";if((e.metaKey||e.ctrlKey)&&"j"===t.toLowerCase())return e.preventDefault(),void this.togglePanel();"Escape"===t&&this.panelOpen&&"overlay"===this._panelMode&&this.closePanel()}}static get styles(){return[yS]}get panelMode(){return this._panelMode}get navLocked(){return this._navLocked}get panelAvailable(){return this._hasPanel&&!this.noPanel}get tabsVisible(){return this._hasTabs&&!this.noTabs}get askVisible(){return this.panelAvailable&&!this.noAsk}get rail(){return this.navCollapsed||this._navLocked}connectedCallback(){super.connectedCallback(),this._restore(),this._resizeObserver=new ResizeObserver((e=>{const t=e[e.length-1];this._measure(t.contentRect.width)})),this._resizeObserver.observe(this),document.addEventListener("keydown",this._onKeyDown)}disconnectedCallback(){super.disconnectedCallback(),this._resizeObserver?.disconnect(),this._resizeObserver=void 0,document.removeEventListener("keydown",this._onKeyDown)}willUpdate(e){(e.has("panelOpen")||e.has("noPanel")||e.has("overlayBreakpoint")||e.has("dockedRailBreakpoint")||e.has("_hasAside")||e.has("_hasSideNav"))&&this._recompute()}updated(e){super.updated(e),this.toggleAttribute("rail",this.rail),this.toggleAttribute("nav-locked",this._navLocked),this.toggleAttribute("has-banner",this._hasBanner),this.toggleAttribute("has-side-nav",this._hasSideNav),this.toggleAttribute("has-top-bar",this._hasTopBar||this._hasTitleBlock||!this.noNavToggle&&this._hasSideNav),this.toggleAttribute("has-description",!!this.description&&!!this.pageTitle),this.toggleAttribute("has-top-bar-actions",this._hasTopBarActions),this.toggleAttribute("has-ask",this.askVisible),this.toggleAttribute("has-tabs",this.tabsVisible),this.toggleAttribute("has-aside",this._hasAside),this.toggleAttribute("has-panel",this.panelAvailable),this.toggleAttribute("has-panel-footer",this._hasPanelFooter),this.setAttribute("panel-mode",this._panelMode),this.setAttribute("panel-chrome",this._panelOwnsChrome?"external":"internal"),this._syncSideNav()}openPanel(){this.panelAvailable&&this._setPanelOpen(!0)}closePanel(){this._setPanelOpen(!1)}togglePanel(e){e??!this.panelOpen?this.openPanel():this.closePanel()}goBackHeader(){this.emit("nile-header-back")}goBackPanel(){this.emit("nile-panel-back")}goBackPage(){this.goBackHeader()}goBack(){this.goBackPanel()}expandNav(){this._setNavCollapsed(!1)}collapseNav(){this._setNavCollapsed(!0)}toggleNav(e){this._setNavCollapsed(e??!this.navCollapsed)}focusMain(){this._main?.focus()}_setPanelOpen(e){this.panelOpen!==e&&(this.panelOpen=e,this._persist(),this.emit("nile-panel-toggle",{open:e,mode:this._panelMode}))}_setNavCollapsed(e){this.navCollapsed!==e&&(this.navCollapsed=e,this._persist(),this.emit("nile-nav-toggle",{collapsed:e,locked:this._navLocked}))}_measure(e){if(e===this._width)return;const t=0===this._width;if(this._width=e,this._recompute(),t&&null!==this._restoredPanelOpen){const e=this._restoredPanelOpen;this._restoredPanelOpen=null,e&&"docked"===this._panelMode&&this.openPanel()}}_geometry(){const e=getComputedStyle(this),t=(t,i)=>{const n=parseFloat(e.getPropertyValue(t));return Number.isFinite(n)?n:i};return{nav:t("--nile-app-shell-side-nav-width",240),rail:t("--nile-app-shell-side-nav-rail-width",70),gutter:t("--nile-app-shell-gutter",4),content:t("--nile-app-shell-content-min-width",640),aside:t("--nile-app-shell-aside-width",320),panel:t("--nile-app-shell-panel-width",480)}}_dockRequirement(e,t){const i=this._hasSideNav?t:0,n=this._hasAside?e.aside+e.gutter:0,o=this._hasSideNav?2:3;return i+e.content+n+e.panel+e.gutter*o}_recompute(){const e=this._width,t=this._geometry(),i=this.overlayBreakpoint>0&&e>0&&e<this.overlayBreakpoint,n=i?"overlay":"docked",o=Math.max(this.dockedRailBreakpoint,this._dockRequirement(t,t.nav)),r=!i&&this.panelOpen&&this.panelAvailable&&e>0&&e<o,s=i||r;n!==this._panelMode&&(this._panelMode=n,this.emit("nile-panel-mode-change",{mode:n})),s!==this._navLocked&&(this._navLocked=s,this.emit("nile-nav-toggle",{collapsed:this.navCollapsed,locked:s}))}_syncSideNav(){this.querySelectorAll('[slot="side-nav"]').forEach((e=>{"NILE-SIDE-BAR"===e.tagName&&e.toggleAttribute("collapsed",this.rail)}))}_storageKey(e){return`nile-app-shell:${this.persistKey}:${e}`}_restore(){if(this.persistKey)try{const e=localStorage.getItem(this._storageKey("nav-collapsed"));null!==e&&(this.navCollapsed="true"===e);const t=localStorage.getItem(this._storageKey("panel-open"));null!==t&&(this._restoredPanelOpen="true"===t)}catch{}}_persist(){if(this.persistKey)try{localStorage.setItem(this._storageKey("nav-collapsed"),String(this.navCollapsed)),"docked"===this._panelMode&&localStorage.setItem(this._storageKey("panel-open"),String(this.panelOpen))}catch{}}_onSlotChange(e,t){const i=t.target.assignedNodes({flatten:!0}),n=i.some((e=>e.nodeType===Node.ELEMENT_NODE||""!==(e.textContent??"").trim()));switch(e){case"banner":this._hasBanner=n;break;case"side-nav":this._hasSideNav=n,this._syncSideNav();break;case"top-bar":this._hasTopBar=n;break;case"top-bar-actions":this._hasTopBarActions=n;break;case"tabs":this._hasTabs=n;break;case"aside":this._hasAside=n;break;case"panel":this._hasPanel=n,this._panelOwnsChrome=i.some((e=>e.nodeType===Node.ELEMENT_NODE&&"NILE-APP-SHELL-PANEL"===e.tagName)),this._recompute();break;case"panel-footer":this._hasPanelFooter=n}}_renderNavToggle(){if(this.noNavToggle||!this._hasSideNav)return"";const e=!this.rail;return R`
20396
+ ></nile-glyph>`}let jS=class extends Fe{constructor(){super(...arguments),this.navCollapsed=!1,this.panelOpen=!1,this.noPanel=!1,this.panelLabel="Ask Aquera",this.headingLevel=1,this.headerBack=!1,this.headerBackLabel="Back",this.noNavToggle=!1,this.noPanelShortcut=!1,this.noSkipLink=!1,this.skipLinkLabel="Skip to main content",this.topBarPlacement="content",this.contentAlign="fluid",this.contentContainer=!1,this.flat=!1,this.noPadding=!1,this.askLabel="Ask",this.noAsk=!1,this.panelBack=!1,this.panelBackLabel="Back",this.noTabs=!1,this.fullHeight=!1,this.overlayBreakpoint=0,this.dockedRailBreakpoint=1440,this._panelMode="docked",this._navLocked=!1,this._hasBanner=!1,this._hasSideNav=!1,this._hasTopBar=!1,this._hasTopBarActions=!1,this._hasTabs=!1,this._hasAppIcon=!1,this._hasPanel=!1,this._hasPanelFooter=!1,this._panelOwnsChrome=!1,this._hasAside=!1,this._width=0,this._restoredPanelOpen=null,this._onSideNavToggle=e=>{const t=e.detail;t&&"boolean"==typeof t.collapsed&&this._setNavCollapsed(t.collapsed)},this._onKeyDown=e=>{if(this.noPanelShortcut||!this.panelAvailable)return;const t=e.key??"";if((e.metaKey||e.ctrlKey)&&"j"===t.toLowerCase())return e.preventDefault(),void this.togglePanel();"Escape"===t&&this.panelOpen&&"overlay"===this._panelMode&&this.closePanel()}}static get styles(){return[yS]}get panelMode(){return this._panelMode}get navLocked(){return this._navLocked}get panelAvailable(){return this._hasPanel&&!this.noPanel}get tabsVisible(){return this._hasTabs&&!this.noTabs}get askVisible(){return this.panelAvailable&&!this.noAsk}get rail(){return this.navCollapsed||this._navLocked}connectedCallback(){super.connectedCallback(),this._restore(),this._resizeObserver=new ResizeObserver((e=>{const t=e[e.length-1];this._measure(t.contentRect.width)})),this._resizeObserver.observe(this),document.addEventListener("keydown",this._onKeyDown)}disconnectedCallback(){super.disconnectedCallback(),this._resizeObserver?.disconnect(),this._resizeObserver=void 0,document.removeEventListener("keydown",this._onKeyDown)}willUpdate(e){(e.has("panelOpen")||e.has("noPanel")||e.has("overlayBreakpoint")||e.has("dockedRailBreakpoint")||e.has("_hasAside")||e.has("_hasSideNav"))&&this._recompute()}updated(e){super.updated(e),this.toggleAttribute("rail",this.rail),this.toggleAttribute("nav-locked",this._navLocked),this.toggleAttribute("has-banner",this._hasBanner),this.toggleAttribute("has-side-nav",this._hasSideNav),this.toggleAttribute("has-top-bar",this._hasTopBar||this._hasTitleBlock||!this.noNavToggle&&this._hasSideNav),this.toggleAttribute("has-description",!!this.description&&!!this.pageTitle),this.toggleAttribute("has-top-bar-actions",this._hasTopBarActions),this.toggleAttribute("has-app-icon",this._hasAppIcon),this.toggleAttribute("has-ask",this.askVisible),this.toggleAttribute("has-tabs",this.tabsVisible),this.toggleAttribute("has-aside",this._hasAside),this.toggleAttribute("has-panel",this.panelAvailable),this.toggleAttribute("has-panel-footer",this._hasPanelFooter),this.setAttribute("panel-mode",this._panelMode),this.setAttribute("panel-chrome",this._panelOwnsChrome?"external":"internal"),this._syncSideNav()}openPanel(){this.panelAvailable&&this._setPanelOpen(!0)}closePanel(){this._setPanelOpen(!1)}togglePanel(e){e??!this.panelOpen?this.openPanel():this.closePanel()}goBackHeader(){this.emit("nile-click",{value:"back"})}goBackPanel(){this.emit("nile-panel-back")}goBack(){this.goBackPanel()}expandNav(){this._setNavCollapsed(!1)}collapseNav(){this._setNavCollapsed(!0)}toggleNav(e){this._setNavCollapsed(e??!this.navCollapsed)}focusMain(){this._main?.focus()}_setPanelOpen(e){this.panelOpen!==e&&(this.panelOpen=e,this._persist(),this.emit("nile-panel-toggle",{open:e,mode:this._panelMode}))}_setNavCollapsed(e){this.navCollapsed!==e&&(this.navCollapsed=e,this._persist(),this.emit("nile-nav-toggle",{collapsed:e,locked:this._navLocked}))}_measure(e){if(e===this._width)return;const t=0===this._width;if(this._width=e,this._recompute(),t&&null!==this._restoredPanelOpen){const e=this._restoredPanelOpen;this._restoredPanelOpen=null,e&&"docked"===this._panelMode&&this.openPanel()}}_geometry(){const e=getComputedStyle(this),t=(t,i)=>{const n=parseFloat(e.getPropertyValue(t));return Number.isFinite(n)?n:i};return{nav:t("--nile-app-shell-side-nav-width",240),rail:t("--nile-app-shell-side-nav-rail-width",70),gutter:t("--nile-app-shell-gutter",4),content:t("--nile-app-shell-content-min-width",640),aside:t("--nile-app-shell-aside-width",320),panel:t("--nile-app-shell-panel-width",480)}}_dockRequirement(e,t){const i=this._hasSideNav?t:0,n=this._hasAside?e.aside+e.gutter:0,o=this._hasSideNav?2:3;return i+e.content+n+e.panel+e.gutter*o}_recompute(){const e=this._width,t=this._geometry(),i=this.overlayBreakpoint>0&&e>0&&e<this.overlayBreakpoint,n=i?"overlay":"docked",o=Math.max(this.dockedRailBreakpoint,this._dockRequirement(t,t.nav)),r=!i&&this.panelOpen&&this.panelAvailable&&e>0&&e<o,s=i||r;n!==this._panelMode&&(this._panelMode=n,this.emit("nile-panel-mode-change",{mode:n})),s!==this._navLocked&&(this._navLocked=s,this.emit("nile-nav-toggle",{collapsed:this.navCollapsed,locked:s}))}_syncSideNav(){this.querySelectorAll('[slot="side-nav"]').forEach((e=>{"NILE-SIDE-BAR"===e.tagName&&e.toggleAttribute("collapsed",this.rail)}))}_storageKey(e){return`nile-app-shell:${this.persistKey}:${e}`}_restore(){if(this.persistKey)try{const e=localStorage.getItem(this._storageKey("nav-collapsed"));null!==e&&(this.navCollapsed="true"===e);const t=localStorage.getItem(this._storageKey("panel-open"));null!==t&&(this._restoredPanelOpen="true"===t)}catch{}}_persist(){if(this.persistKey)try{localStorage.setItem(this._storageKey("nav-collapsed"),String(this.navCollapsed)),"docked"===this._panelMode&&localStorage.setItem(this._storageKey("panel-open"),String(this.panelOpen))}catch{}}_onSlotChange(e,t){const i=t.target.assignedNodes({flatten:!0}),n=i.some((e=>e.nodeType===Node.ELEMENT_NODE||""!==(e.textContent??"").trim()));switch(e){case"banner":this._hasBanner=n;break;case"side-nav":this._hasSideNav=n,this._syncSideNav();break;case"top-bar":this._hasTopBar=n;break;case"top-bar-actions":this._hasTopBarActions=n;break;case"tabs":this._hasTabs=n;break;case"app-icon":this._hasAppIcon=n;break;case"aside":this._hasAside=n;break;case"panel":this._hasPanel=n,this._panelOwnsChrome=i.some((e=>e.nodeType===Node.ELEMENT_NODE&&"NILE-APP-SHELL-PANEL"===e.tagName)),this._recompute();break;case"panel-footer":this._hasPanelFooter=n}}_renderNavToggle(){if(this.noNavToggle||!this._hasSideNav)return"";const e=!this.rail;return R`
20394
20397
  <div class="nav-toggle-group">
20395
20398
  <nile-button
20396
20399
  class="nav-toggle utility-control"
@@ -20408,46 +20411,50 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20408
20411
  </nile-button>
20409
20412
  ${this._hasTopBar||this._hasTitleBlock?R`<span class="rule" part="rule"></span>`:""}
20410
20413
  </div>
20411
- `}get _hasTitleBlock(){return!!this.pageTitle||this._hasLeading}get _hasLeading(){return"back"===this.leading||"app-icon"===this.leading}get _headingLevel(){const e=Math.trunc(Number(this.headingLevel));return Number.isFinite(e)?Math.min(6,Math.max(1,e)):1}_renderLeading(){return"app-icon"===this.leading?R`
20412
- <span class="app-icon" part="app-icon">
20413
- <slot name="app-icon"></slot>
20414
- </span>
20415
- `:"back"===this.leading?R`
20414
+ `}get _hasTitleBlock(){return!!this.pageTitle||this.headerBack||this._hasAppIcon}get _headingLevel(){const e=Math.trunc(Number(this.headingLevel));return Number.isFinite(e)?Math.min(6,Math.max(1,e)):1}_renderBack(){return this.headerBack?R`
20415
+ <span class="back-line">
20416
20416
  <button
20417
20417
  class="back"
20418
20418
  part="back"
20419
20419
  type="button"
20420
+ aria-label=${this.headerBackLabel}
20421
+ title=${this.headerBackLabel}
20420
20422
  @click=${()=>this.goBackHeader()}
20421
20423
  >
20422
- ${IS("ng-chevron-left",20,"currentColor")}
20423
- <span>${this.backLabel}</span>
20424
+ ${IS("ng-arrow-narrow-left",20,"currentColor")}
20424
20425
  </button>
20425
- ${this.pageTitle?R`<span class="crumb-divider" aria-hidden="true">
20426
- ${IS("ng-slash",16,"currentColor")}
20427
- </span>`:""}
20428
- `:""}_renderTitleBlock(){return this._hasTitleBlock?R`
20426
+ </span>
20427
+ `:""}_renderAppIconSlot(){return R`<slot
20428
+ name="app-icon"
20429
+ @slotchange=${e=>this._onSlotChange("app-icon",e)}
20430
+ ></slot>`}_renderAppIconProbe(){return R`<span class="app-icon-probe" hidden
20431
+ >${this._renderAppIconSlot()}</span
20432
+ >`}_renderTitleBlock(){return this._hasTitleBlock?this.pageTitle||this._hasAppIcon?R`
20429
20433
  <div class="title-area" part="title-area">
20430
- ${this._hasLeading?R`<span class="leading" part="leading"
20431
- >${this._renderLeading()}</span
20432
- >`:""}
20433
- ${this.pageTitle?R`
20434
- <div class="title-stack">
20435
- <div class="title-row">
20436
- <div
20437
- class="page-title"
20438
- part="page-title"
20439
- role="heading"
20440
- aria-level=${this._headingLevel}
20441
- >${this.pageTitle}</div>
20442
- ${this.badge?R`<span class="badge" part="badge">${this.badge}</span>`:""}
20443
- </div>
20444
- ${this.description?R`<p class="description" part="description">
20445
- ${this.description}
20446
- </p>`:""}
20447
- </div>
20448
- `:""}
20434
+ ${this._renderBack()}
20435
+ <div class="title-stack">
20436
+ <div class="title-row">
20437
+ <span class="app-icon" part="app-icon"
20438
+ >${this._renderAppIconSlot()}</span
20439
+ >
20440
+ ${this.pageTitle?R`<div
20441
+ class="page-title"
20442
+ part="page-title"
20443
+ role="heading"
20444
+ aria-level=${this._headingLevel}
20445
+ >${this.pageTitle}</div>`:""}
20446
+ ${this.pageTitle&&this.badge?R`<span class="badge" part="badge">${this.badge}</span>`:""}
20447
+ </div>
20448
+ ${this.pageTitle&&this.description?R`<p class="description" part="description">
20449
+ ${this.description}
20450
+ </p>`:""}
20451
+ </div>
20449
20452
  </div>
20450
- `:""}_renderTopBar(e){return R`
20453
+ `:R`
20454
+ <div class="title-area" part="title-area">
20455
+ ${this._renderBack()} ${this._renderAppIconProbe()}
20456
+ </div>
20457
+ `:this._renderAppIconProbe()}_renderTopBar(e){return R`
20451
20458
  <div
20452
20459
  class=${"shell"===e?"top-bar shell-top-bar":"top-bar"}
20453
20460
  part=${"shell"===e?"top-bar shell-top-bar":"top-bar"}
@@ -20465,12 +20472,13 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20465
20472
  name="top-bar-actions"
20466
20473
  @slotchange=${e=>this._onSlotChange("top-bar-actions",e)}
20467
20474
  ></slot>
20475
+ ${this.askVisible&&this._hasTopBarActions?R`<span class="rule ask-rule" part="ask-rule"></span>`:""}
20468
20476
  ${this.askVisible?R`
20469
20477
  <nile-button
20470
20478
  class="ask"
20471
20479
  part="ask"
20472
20480
  exportparts="base: ask__base, label: ask__label"
20473
- variant="primary"
20481
+ variant="secondary"
20474
20482
  @click=${()=>this.openPanel()}
20475
20483
  >
20476
20484
  <span slot="prefix" class="ask-mark">
@@ -20595,7 +20603,7 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20595
20603
  `}
20596
20604
  </aside>
20597
20605
  </div>
20598
- `}};e([de({type:Boolean,reflect:!0,attribute:"nav-collapsed"})],jS.prototype,"navCollapsed",void 0),e([de({type:Boolean,reflect:!0,attribute:"panel-open"})],jS.prototype,"panelOpen",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-panel"})],jS.prototype,"noPanel",void 0),e([de({type:String,attribute:"panel-label"})],jS.prototype,"panelLabel",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"pageTitle",void 0),e([de({type:Number,attribute:!0,reflect:!0})],jS.prototype,"headingLevel",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"description",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"badge",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"leading",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"backLabel",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-nav-toggle"})],jS.prototype,"noNavToggle",void 0),e([de({type:Boolean,attribute:"no-panel-shortcut"})],jS.prototype,"noPanelShortcut",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-skip-link"})],jS.prototype,"noSkipLink",void 0),e([de({type:String,attribute:"skip-link-label"})],jS.prototype,"skipLinkLabel",void 0),e([de({type:String,reflect:!0,attribute:"top-bar-placement"})],jS.prototype,"topBarPlacement",void 0),e([de({type:String,reflect:!0,attribute:"content-align"})],jS.prototype,"contentAlign",void 0),e([de({type:Boolean,reflect:!0,attribute:"content-container"})],jS.prototype,"contentContainer",void 0),e([de({type:Boolean,reflect:!0})],jS.prototype,"flat",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-padding"})],jS.prototype,"noPadding",void 0),e([de({type:String,attribute:"ask-label"})],jS.prototype,"askLabel",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-ask"})],jS.prototype,"noAsk",void 0),e([de({type:Boolean,reflect:!0})],jS.prototype,"panelBack",void 0),e([de({type:String})],jS.prototype,"panelBackLabel",void 0),e([de({type:Boolean,reflect:!0})],jS.prototype,"noTabs",void 0),e([de({type:Boolean,reflect:!0,attribute:"full-height"})],jS.prototype,"fullHeight",void 0),e([de({type:Number,attribute:"overlay-breakpoint"})],jS.prototype,"overlayBreakpoint",void 0),e([de({type:Number,attribute:"docked-rail-breakpoint"})],jS.prototype,"dockedRailBreakpoint",void 0),e([de({type:String,attribute:"persist-key"})],jS.prototype,"persistKey",void 0),e([he()],jS.prototype,"_panelMode",void 0),e([he()],jS.prototype,"_navLocked",void 0),e([he()],jS.prototype,"_hasBanner",void 0),e([he()],jS.prototype,"_hasSideNav",void 0),e([he()],jS.prototype,"_hasTopBar",void 0),e([he()],jS.prototype,"_hasTopBarActions",void 0),e([he()],jS.prototype,"_hasTabs",void 0),e([he()],jS.prototype,"_hasPanel",void 0),e([he()],jS.prototype,"_hasPanelFooter",void 0),e([he()],jS.prototype,"_panelOwnsChrome",void 0),e([he()],jS.prototype,"_hasAside",void 0),e([pe(".main")],jS.prototype,"_main",void 0),jS=e([ce("nile-app-shell")],jS);const zS=s`
20606
+ `}};e([de({type:Boolean,reflect:!0,attribute:"nav-collapsed"})],jS.prototype,"navCollapsed",void 0),e([de({type:Boolean,reflect:!0,attribute:"panel-open"})],jS.prototype,"panelOpen",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-panel"})],jS.prototype,"noPanel",void 0),e([de({type:String,attribute:"panel-label"})],jS.prototype,"panelLabel",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"pageTitle",void 0),e([de({type:Number,attribute:!0,reflect:!0})],jS.prototype,"headingLevel",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"description",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"badge",void 0),e([de({type:Boolean,attribute:!0,reflect:!0})],jS.prototype,"headerBack",void 0),e([de({type:String,attribute:!0,reflect:!0})],jS.prototype,"headerBackLabel",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-nav-toggle"})],jS.prototype,"noNavToggle",void 0),e([de({type:Boolean,attribute:"no-panel-shortcut"})],jS.prototype,"noPanelShortcut",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-skip-link"})],jS.prototype,"noSkipLink",void 0),e([de({type:String,attribute:"skip-link-label"})],jS.prototype,"skipLinkLabel",void 0),e([de({type:String,reflect:!0,attribute:"top-bar-placement"})],jS.prototype,"topBarPlacement",void 0),e([de({type:String,reflect:!0,attribute:"content-align"})],jS.prototype,"contentAlign",void 0),e([de({type:Boolean,reflect:!0,attribute:"content-container"})],jS.prototype,"contentContainer",void 0),e([de({type:Boolean,reflect:!0})],jS.prototype,"flat",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-padding"})],jS.prototype,"noPadding",void 0),e([de({type:String,attribute:"ask-label"})],jS.prototype,"askLabel",void 0),e([de({type:Boolean,reflect:!0,attribute:"no-ask"})],jS.prototype,"noAsk",void 0),e([de({type:Boolean,reflect:!0})],jS.prototype,"panelBack",void 0),e([de({type:String})],jS.prototype,"panelBackLabel",void 0),e([de({type:Boolean,reflect:!0})],jS.prototype,"noTabs",void 0),e([de({type:Boolean,reflect:!0,attribute:"full-height"})],jS.prototype,"fullHeight",void 0),e([de({type:Number,attribute:"overlay-breakpoint"})],jS.prototype,"overlayBreakpoint",void 0),e([de({type:Number,attribute:"docked-rail-breakpoint"})],jS.prototype,"dockedRailBreakpoint",void 0),e([de({type:String,attribute:"persist-key"})],jS.prototype,"persistKey",void 0),e([he()],jS.prototype,"_panelMode",void 0),e([he()],jS.prototype,"_navLocked",void 0),e([he()],jS.prototype,"_hasBanner",void 0),e([he()],jS.prototype,"_hasSideNav",void 0),e([he()],jS.prototype,"_hasTopBar",void 0),e([he()],jS.prototype,"_hasTopBarActions",void 0),e([he()],jS.prototype,"_hasTabs",void 0),e([he()],jS.prototype,"_hasAppIcon",void 0),e([he()],jS.prototype,"_hasPanel",void 0),e([he()],jS.prototype,"_hasPanelFooter",void 0),e([he()],jS.prototype,"_panelOwnsChrome",void 0),e([he()],jS.prototype,"_hasAside",void 0),e([pe(".main")],jS.prototype,"_main",void 0),jS=e([ce("nile-app-shell")],jS);const zS=s`
20599
20607
  :host {
20600
20608
  display: inline-flex;
20601
20609
  align-items: center;
@@ -20789,7 +20797,9 @@ nile-rich-text-editor[disabled] .editor figure.rte-image {
20789
20797
 
20790
20798
  .title {
20791
20799
  margin: 0;
20792
- font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
20800
+ /* Figma's Assistant Title: Text lg/Semibold, 18/28 on NxtGen. Enterprise keeps --nile-type-scale-3, and it defines no --ng-* tokens, so the line-height declaration is invalid there and the title inherits its line height exactly as before. */
20801
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-lg));
20802
+ line-height: var(--ng-line-height-text-lg);
20793
20803
  font-weight: var(
20794
20804
  --nile-font-weight-semi-bold,
20795
20805
  var(--ng-font-weight-semibold)