@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.
- package/README.md +3 -0
- package/demo/app-shell.html +21 -21
- package/dist/index.js +76 -66
- package/dist/nile-app-shell/nile-app-shell.cjs.js +1 -1
- package/dist/nile-app-shell/nile-app-shell.cjs.js.map +1 -1
- package/dist/nile-app-shell/nile-app-shell.css.cjs.js +1 -1
- package/dist/nile-app-shell/nile-app-shell.css.cjs.js.map +1 -1
- package/dist/nile-app-shell/nile-app-shell.css.esm.js +35 -32
- package/dist/nile-app-shell/nile-app-shell.esm.js +39 -34
- package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js +1 -1
- package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js.map +1 -1
- package/dist/nile-app-shell-panel/nile-app-shell-panel.css.esm.js +3 -1
- package/dist/src/nile-app-shell/nile-app-shell-regions.test.js +9 -5
- package/dist/src/nile-app-shell/nile-app-shell-regions.test.js.map +1 -1
- package/dist/src/nile-app-shell/nile-app-shell.css.js +33 -30
- package/dist/src/nile-app-shell/nile-app-shell.css.js.map +1 -1
- package/dist/src/nile-app-shell/nile-app-shell.d.ts +22 -22
- package/dist/src/nile-app-shell/nile-app-shell.js +86 -76
- package/dist/src/nile-app-shell/nile-app-shell.js.map +1 -1
- package/dist/src/nile-app-shell/nile-app-shell.test.d.ts +1 -0
- package/dist/src/nile-app-shell/nile-app-shell.test.js +307 -89
- package/dist/src/nile-app-shell/nile-app-shell.test.js.map +1 -1
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js +3 -1
- package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-app-shell/nile-app-shell-regions.test.ts +9 -5
- package/src/nile-app-shell/nile-app-shell.css.ts +33 -30
- package/src/nile-app-shell/nile-app-shell.test.ts +348 -105
- package/src/nile-app-shell/nile-app-shell.ts +89 -82
- package/src/nile-app-shell-panel/nile-app-shell-panel.css.ts +3 -1
- 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
|
|
package/demo/app-shell.html
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
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: '
|
|
623
|
-
{ value: 'back', label: '
|
|
624
|
-
{ value: 'app-icon', label: '
|
|
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
|
-
} ·
|
|
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
|
-
|
|
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.
|
|
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
|
|
779
|
-
* below the title's top edge — (24px line box - 20px
|
|
780
|
-
* whether or not there is a description under it.
|
|
781
|
-
*
|
|
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
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
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.
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
19885
|
-
.
|
|
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-
|
|
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
|
-
/*
|
|
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
|
-
|
|
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
|
-
|
|
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([
|
|
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-
|
|
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="
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
20412
|
-
|
|
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-
|
|
20423
|
-
<span>${this.backLabel}</span>
|
|
20424
|
+
${IS("ng-arrow-narrow-left",20,"currentColor")}
|
|
20424
20425
|
</button>
|
|
20425
|
-
|
|
20426
|
-
|
|
20427
|
-
|
|
20428
|
-
|
|
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.
|
|
20431
|
-
|
|
20432
|
-
|
|
20433
|
-
|
|
20434
|
-
|
|
20435
|
-
|
|
20436
|
-
|
|
20437
|
-
|
|
20438
|
-
|
|
20439
|
-
|
|
20440
|
-
|
|
20441
|
-
|
|
20442
|
-
|
|
20443
|
-
|
|
20444
|
-
|
|
20445
|
-
|
|
20446
|
-
|
|
20447
|
-
|
|
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
|
-
`:
|
|
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="
|
|
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:
|
|
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
|
-
|
|
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)
|