@aquera/nile-elements 2.0.5 → 2.0.7

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 (237) hide show
  1. package/README.md +7 -0
  2. package/demo/nxtgen-classes.css +15 -12
  3. package/demo/nxtgen-dark.css +24 -24
  4. package/demo/nxtgen-properties.css +27 -24
  5. package/demo/nxtgen-utilities.css +39 -36
  6. package/demo/nxtgen.css +15 -12
  7. package/demo/utilities.css +3 -0
  8. package/demo/variables.css +3 -0
  9. package/dist/index.cjs.js +1 -1
  10. package/dist/index.esm.js +1 -1
  11. package/dist/index.js +1363 -340
  12. package/dist/internal/glyph.cjs.js +1 -1
  13. package/dist/internal/glyph.cjs.js.map +1 -1
  14. package/dist/internal/glyph.esm.js +6 -5
  15. package/dist/nile-app-shell/index.cjs.js +2 -0
  16. package/dist/nile-app-shell/index.cjs.js.map +1 -0
  17. package/dist/nile-app-shell/index.esm.js +1 -0
  18. package/dist/nile-app-shell/nile-app-shell.cjs.js +2 -0
  19. package/dist/nile-app-shell/nile-app-shell.cjs.js.map +1 -0
  20. package/dist/nile-app-shell/nile-app-shell.css.cjs.js +2 -0
  21. package/dist/nile-app-shell/nile-app-shell.css.cjs.js.map +1 -0
  22. package/dist/nile-app-shell/nile-app-shell.css.esm.js +554 -0
  23. package/dist/nile-app-shell/nile-app-shell.esm.js +155 -0
  24. package/dist/nile-app-shell/shell-controller.cjs.js +2 -0
  25. package/dist/nile-app-shell/shell-controller.cjs.js.map +1 -0
  26. package/dist/nile-app-shell/shell-controller.esm.js +1 -0
  27. package/dist/nile-app-shell-main/index.cjs.js +2 -0
  28. package/dist/nile-app-shell-main/index.cjs.js.map +1 -0
  29. package/dist/nile-app-shell-main/index.esm.js +1 -0
  30. package/dist/nile-app-shell-main/nile-app-shell-main.cjs.js +2 -0
  31. package/dist/nile-app-shell-main/nile-app-shell-main.cjs.js.map +1 -0
  32. package/dist/nile-app-shell-main/nile-app-shell-main.css.cjs.js +2 -0
  33. package/dist/nile-app-shell-main/nile-app-shell-main.css.cjs.js.map +1 -0
  34. package/dist/nile-app-shell-main/nile-app-shell-main.css.esm.js +18 -0
  35. package/dist/nile-app-shell-main/nile-app-shell-main.esm.js +1 -0
  36. package/dist/nile-app-shell-nav-toggle/index.cjs.js +2 -0
  37. package/dist/nile-app-shell-nav-toggle/index.cjs.js.map +1 -0
  38. package/dist/nile-app-shell-nav-toggle/index.esm.js +1 -0
  39. package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.cjs.js +2 -0
  40. package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.cjs.js.map +1 -0
  41. package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.cjs.js +2 -0
  42. package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.cjs.js.map +1 -0
  43. package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.esm.js +29 -0
  44. package/dist/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.esm.js +16 -0
  45. package/dist/nile-app-shell-panel/index.cjs.js +2 -0
  46. package/dist/nile-app-shell-panel/index.cjs.js.map +1 -0
  47. package/dist/nile-app-shell-panel/index.esm.js +1 -0
  48. package/dist/nile-app-shell-panel/nile-app-shell-panel.cjs.js +2 -0
  49. package/dist/nile-app-shell-panel/nile-app-shell-panel.cjs.js.map +1 -0
  50. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js +2 -0
  51. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js.map +1 -0
  52. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.esm.js +103 -0
  53. package/dist/nile-app-shell-panel/nile-app-shell-panel.esm.js +33 -0
  54. package/dist/nile-app-shell-side-nav/index.cjs.js +2 -0
  55. package/dist/nile-app-shell-side-nav/index.cjs.js.map +1 -0
  56. package/dist/nile-app-shell-side-nav/index.esm.js +1 -0
  57. package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.cjs.js +2 -0
  58. package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.cjs.js.map +1 -0
  59. package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.css.cjs.js +2 -0
  60. package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.css.cjs.js.map +1 -0
  61. package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.css.esm.js +55 -0
  62. package/dist/nile-app-shell-side-nav/nile-app-shell-side-nav.esm.js +5 -0
  63. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  64. package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
  65. package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js +1 -1
  66. package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js.map +1 -1
  67. package/dist/nile-floating-panel/nile-floating-panel.css.esm.js +46 -8
  68. package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
  69. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  70. package/dist/nile-popover/nile-popover.cjs.js.map +1 -1
  71. package/dist/nile-popover/nile-popover.css.cjs.js +1 -1
  72. package/dist/nile-popover/nile-popover.css.cjs.js.map +1 -1
  73. package/dist/nile-popover/nile-popover.css.esm.js +32 -17
  74. package/dist/nile-popover/nile-popover.esm.js +1 -1
  75. package/dist/nile-side-bar-footer/nile-side-bar-footer.cjs.js +1 -1
  76. package/dist/nile-side-bar-footer/nile-side-bar-footer.cjs.js.map +1 -1
  77. package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js +1 -1
  78. package/dist/nile-side-bar-footer/nile-side-bar-footer.css.cjs.js.map +1 -1
  79. package/dist/nile-side-bar-footer/nile-side-bar-footer.css.esm.js +5 -0
  80. package/dist/nile-side-bar-footer/nile-side-bar-footer.esm.js +2 -2
  81. package/dist/nile-side-bar-header/nile-side-bar-header.cjs.js +1 -1
  82. package/dist/nile-side-bar-header/nile-side-bar-header.cjs.js.map +1 -1
  83. package/dist/nile-side-bar-header/nile-side-bar-header.css.cjs.js +1 -1
  84. package/dist/nile-side-bar-header/nile-side-bar-header.css.cjs.js.map +1 -1
  85. package/dist/nile-side-bar-header/nile-side-bar-header.css.esm.js +5 -0
  86. package/dist/nile-side-bar-header/nile-side-bar-header.esm.js +2 -2
  87. package/dist/nile-wysiwyg-editor/index.cjs.js +1 -1
  88. package/dist/nile-wysiwyg-editor/index.esm.js +1 -1
  89. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js +1 -1
  90. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.esm.js +1 -1
  91. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js +1 -1
  92. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.esm.js +1 -1
  93. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js +1 -1
  94. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.esm.js +1 -1
  95. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js +1 -1
  96. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js.map +1 -1
  97. package/dist/nile-wysiwyg-editor/ui/bubble-menu.esm.js +1 -1
  98. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js +1 -1
  99. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js.map +1 -1
  100. package/dist/nile-wysiwyg-editor/ui/embed-menu.esm.js +2 -2
  101. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js +1 -1
  102. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js.map +1 -1
  103. package/dist/nile-wysiwyg-editor/ui/image-menu.esm.js +4 -4
  104. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js +1 -1
  105. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js.map +1 -1
  106. package/dist/nile-wysiwyg-editor/ui/table-menu.esm.js +1 -1
  107. package/dist/src/index.d.ts +7 -2
  108. package/dist/src/index.js +6 -1
  109. package/dist/src/index.js.map +1 -1
  110. package/dist/src/internal/glyph.d.ts +6 -1
  111. package/dist/src/internal/glyph.js +8 -1
  112. package/dist/src/internal/glyph.js.map +1 -1
  113. package/dist/src/nile-app-shell/index.d.ts +7 -0
  114. package/dist/src/nile-app-shell/index.js +8 -0
  115. package/dist/src/nile-app-shell/index.js.map +1 -0
  116. package/dist/src/nile-app-shell/nile-app-shell-regions.test.d.ts +4 -0
  117. package/dist/src/nile-app-shell/nile-app-shell-regions.test.js +177 -0
  118. package/dist/src/nile-app-shell/nile-app-shell-regions.test.js.map +1 -0
  119. package/dist/src/nile-app-shell/nile-app-shell.css.d.ts +18 -0
  120. package/dist/src/nile-app-shell/nile-app-shell.css.js +572 -0
  121. package/dist/src/nile-app-shell/nile-app-shell.css.js.map +1 -0
  122. package/dist/src/nile-app-shell/nile-app-shell.d.ts +292 -0
  123. package/dist/src/nile-app-shell/nile-app-shell.js +796 -0
  124. package/dist/src/nile-app-shell/nile-app-shell.js.map +1 -0
  125. package/dist/src/nile-app-shell/nile-app-shell.test.d.ts +3 -0
  126. package/dist/src/nile-app-shell/nile-app-shell.test.js +454 -0
  127. package/dist/src/nile-app-shell/nile-app-shell.test.js.map +1 -0
  128. package/dist/src/nile-app-shell/shell-controller.d.ts +34 -0
  129. package/dist/src/nile-app-shell/shell-controller.js +80 -0
  130. package/dist/src/nile-app-shell/shell-controller.js.map +1 -0
  131. package/dist/src/nile-app-shell-main/index.d.ts +7 -0
  132. package/dist/src/nile-app-shell-main/index.js +8 -0
  133. package/dist/src/nile-app-shell-main/index.js.map +1 -0
  134. package/dist/src/nile-app-shell-main/nile-app-shell-main.css.d.ts +9 -0
  135. package/dist/src/nile-app-shell-main/nile-app-shell-main.css.js +27 -0
  136. package/dist/src/nile-app-shell-main/nile-app-shell-main.css.js.map +1 -0
  137. package/dist/src/nile-app-shell-main/nile-app-shell-main.d.ts +38 -0
  138. package/dist/src/nile-app-shell-main/nile-app-shell-main.js +51 -0
  139. package/dist/src/nile-app-shell-main/nile-app-shell-main.js.map +1 -0
  140. package/dist/src/nile-app-shell-nav-toggle/index.d.ts +7 -0
  141. package/dist/src/nile-app-shell-nav-toggle/index.js +8 -0
  142. package/dist/src/nile-app-shell-nav-toggle/index.js.map +1 -0
  143. package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.d.ts +13 -0
  144. package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.js +42 -0
  145. package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.js.map +1 -0
  146. package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.d.ts +56 -0
  147. package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.js +126 -0
  148. package/dist/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.js.map +1 -0
  149. package/dist/src/nile-app-shell-panel/index.d.ts +7 -0
  150. package/dist/src/nile-app-shell-panel/index.js +8 -0
  151. package/dist/src/nile-app-shell-panel/index.js.map +1 -0
  152. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.d.ts +9 -0
  153. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js +112 -0
  154. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js.map +1 -0
  155. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.d.ts +73 -0
  156. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.js +158 -0
  157. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.js.map +1 -0
  158. package/dist/src/nile-app-shell-side-nav/index.d.ts +7 -0
  159. package/dist/src/nile-app-shell-side-nav/index.js +8 -0
  160. package/dist/src/nile-app-shell-side-nav/index.js.map +1 -0
  161. package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.d.ts +13 -0
  162. package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.js +68 -0
  163. package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.js.map +1 -0
  164. package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.d.ts +54 -0
  165. package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.js +83 -0
  166. package/dist/src/nile-app-shell-side-nav/nile-app-shell-side-nav.js.map +1 -0
  167. package/dist/src/nile-floating-panel/nile-floating-panel.css.js +46 -8
  168. package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +1 -1
  169. package/dist/src/nile-floating-panel/nile-floating-panel.js +13 -1
  170. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
  171. package/dist/src/nile-popover/nile-popover.css.js +30 -15
  172. package/dist/src/nile-popover/nile-popover.css.js.map +1 -1
  173. package/dist/src/nile-popover/nile-popover.js +1 -1
  174. package/dist/src/nile-popover/nile-popover.js.map +1 -1
  175. package/dist/src/nile-popover/nile-popover.test.js +1 -1
  176. package/dist/src/nile-popover/nile-popover.test.js.map +1 -1
  177. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js +5 -0
  178. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.css.js.map +1 -1
  179. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.d.ts +10 -0
  180. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.js +17 -1
  181. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.js.map +1 -1
  182. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.test.d.ts +1 -0
  183. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.test.js +42 -0
  184. package/dist/src/nile-side-bar-footer/nile-side-bar-footer.test.js.map +1 -0
  185. package/dist/src/nile-side-bar-header/nile-side-bar-app-shell.test.d.ts +4 -0
  186. package/dist/src/nile-side-bar-header/nile-side-bar-app-shell.test.js +68 -0
  187. package/dist/src/nile-side-bar-header/nile-side-bar-app-shell.test.js.map +1 -0
  188. package/dist/src/nile-side-bar-header/nile-side-bar-header.css.js +5 -0
  189. package/dist/src/nile-side-bar-header/nile-side-bar-header.css.js.map +1 -1
  190. package/dist/src/nile-side-bar-header/nile-side-bar-header.d.ts +9 -0
  191. package/dist/src/nile-side-bar-header/nile-side-bar-header.js +17 -1
  192. package/dist/src/nile-side-bar-header/nile-side-bar-header.js.map +1 -1
  193. package/dist/src/nile-side-bar-header/nile-side-bar-header.test.d.ts +1 -0
  194. package/dist/src/nile-side-bar-header/nile-side-bar-header.test.js +42 -0
  195. package/dist/src/nile-side-bar-header/nile-side-bar-header.test.js.map +1 -0
  196. package/dist/src/version.d.ts +11 -1
  197. package/dist/src/version.js +51 -8
  198. package/dist/src/version.js.map +1 -1
  199. package/dist/tsconfig.tsbuildinfo +1 -1
  200. package/dist/version.cjs.js +1 -1
  201. package/dist/version.cjs.js.map +1 -1
  202. package/dist/version.esm.js +1 -1
  203. package/package.json +7 -2
  204. package/src/index.ts +16 -4
  205. package/src/internal/glyph.ts +12 -1
  206. package/src/nile-app-shell/index.ts +8 -0
  207. package/src/nile-app-shell/nile-app-shell-regions.test.ts +215 -0
  208. package/src/nile-app-shell/nile-app-shell.css.ts +574 -0
  209. package/src/nile-app-shell/nile-app-shell.test.ts +536 -0
  210. package/src/nile-app-shell/nile-app-shell.ts +838 -0
  211. package/src/nile-app-shell/shell-controller.ts +100 -0
  212. package/src/nile-app-shell-main/index.ts +8 -0
  213. package/src/nile-app-shell-main/nile-app-shell-main.css.ts +29 -0
  214. package/src/nile-app-shell-main/nile-app-shell-main.ts +52 -0
  215. package/src/nile-app-shell-nav-toggle/index.ts +8 -0
  216. package/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.css.ts +44 -0
  217. package/src/nile-app-shell-nav-toggle/nile-app-shell-nav-toggle.ts +138 -0
  218. package/src/nile-app-shell-panel/index.ts +8 -0
  219. package/src/nile-app-shell-panel/nile-app-shell-panel.css.ts +114 -0
  220. package/src/nile-app-shell-panel/nile-app-shell-panel.ts +161 -0
  221. package/src/nile-app-shell-side-nav/index.ts +8 -0
  222. package/src/nile-app-shell-side-nav/nile-app-shell-side-nav.css.ts +70 -0
  223. package/src/nile-app-shell-side-nav/nile-app-shell-side-nav.ts +86 -0
  224. package/src/nile-floating-panel/nile-floating-panel.css.ts +46 -8
  225. package/src/nile-floating-panel/nile-floating-panel.ts +19 -1
  226. package/src/nile-popover/nile-popover.css.ts +30 -15
  227. package/src/nile-popover/nile-popover.test.ts +1 -1
  228. package/src/nile-popover/nile-popover.ts +1 -1
  229. package/src/nile-side-bar-footer/nile-side-bar-footer.css.ts +5 -0
  230. package/src/nile-side-bar-footer/nile-side-bar-footer.test.ts +55 -0
  231. package/src/nile-side-bar-footer/nile-side-bar-footer.ts +12 -1
  232. package/src/nile-side-bar-header/nile-side-bar-app-shell.test.ts +78 -0
  233. package/src/nile-side-bar-header/nile-side-bar-header.css.ts +5 -0
  234. package/src/nile-side-bar-header/nile-side-bar-header.test.ts +55 -0
  235. package/src/nile-side-bar-header/nile-side-bar-header.ts +10 -0
  236. package/src/version.ts +55 -7
  237. package/vscode-html-custom-data.json +246 -9
@@ -0,0 +1,554 @@
1
+ import{css as e}from"lit";const n=e`
2
+ :host {
3
+ /* Geometry. Values come from design tokens wherever one exists; the bare
4
+ pixels are shell geometry with no matching token. */
5
+ --nile-app-shell-side-nav-width: 260px;
6
+ --nile-app-shell-side-nav-rail-width: 64px;
7
+ --nile-app-shell-gutter: var(--nile-spacing-md, var(--ng-spacing-md));
8
+ --nile-app-shell-content-padding: var(
9
+ --nile-spacing-3xl,
10
+ var(--ng-spacing-3xl)
11
+ );
12
+ --nile-app-shell-top-bar-height: 56px;
13
+ --nile-app-shell-tabs-height: 48px;
14
+ --nile-app-shell-panel-width: 480px;
15
+ --nile-app-shell-panel-min-width: 360px;
16
+ --nile-app-shell-aside-width: 320px;
17
+ --nile-app-shell-aside-min-width: 240px;
18
+ --nile-app-shell-content-min-width: 640px;
19
+ --nile-app-shell-min-width: 768px;
20
+ --nile-app-shell-centered-width: 824px;
21
+ --nile-app-shell-utility-size: var(
22
+ --nile-spacing-4xl,
23
+ var(--ng-spacing-4xl)
24
+ );
25
+ --nile-app-shell-radius: var(--nile-radius-xl, var(--ng-radius-2xl));
26
+ --nile-app-shell-duration: var(
27
+ --nile-transition-duration-default,
28
+ var(--ng-transition-duration-default)
29
+ );
30
+ /* NxtGen ships no easing tokens, so the shell names its own. */
31
+ --nile-app-shell-ease: cubic-bezier(0.2, 0, 0, 1);
32
+
33
+ --_side-nav-track: var(--nile-app-shell-side-nav-width);
34
+
35
+ position: relative;
36
+ box-sizing: border-box;
37
+ display: grid;
38
+ grid-template-areas:
39
+ 'banner banner'
40
+ 'top-bar top-bar'
41
+ 'side-nav content';
42
+ grid-template-columns: var(--_side-nav-track) minmax(0, 1fr);
43
+ grid-template-rows: auto auto minmax(0, 1fr);
44
+ /* Below this the window scrolls rather than the shell compressing. */
45
+ min-width: var(--nile-app-shell-min-width);
46
+ height: 100%;
47
+ overflow: hidden;
48
+ background: var(--nile-colors-neutral-100, var(--ng-colors-bg-tertiary));
49
+ color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
50
+ font-family: var(--nile-font-family-sans-serif, var(--ng-font-family-body));
51
+ transition: grid-template-columns var(--nile-app-shell-duration)
52
+ var(--nile-app-shell-ease);
53
+ }
54
+
55
+ :host([hidden]) {
56
+ display: none;
57
+ }
58
+
59
+ :host([full-height]) {
60
+ height: 100dvh;
61
+ }
62
+
63
+ /* Effective rail state, set by the component: the user's preference, or a
64
+ forced rail at narrow widths. */
65
+ :host([rail]) {
66
+ --_side-nav-track: var(--nile-app-shell-side-nav-rail-width);
67
+ }
68
+
69
+ :host(:not([has-side-nav])) {
70
+ --_side-nav-track: 0px;
71
+ }
72
+
73
+ /* The top bar compresses before the content does. */
74
+ @media (max-height: 600px) {
75
+ :host {
76
+ --nile-app-shell-top-bar-height: 48px;
77
+ }
78
+ }
79
+
80
+ /* ---------------------------------------------------------------- banner */
81
+
82
+ .banner {
83
+ grid-area: banner;
84
+ min-width: 0;
85
+ }
86
+
87
+ :host(:not([has-banner])) .banner {
88
+ display: none;
89
+ }
90
+
91
+ /* ------------------------------------------------------------- side nav */
92
+
93
+ .side-nav {
94
+ grid-area: side-nav;
95
+ display: flex;
96
+ min-width: 0;
97
+ overflow: hidden;
98
+ }
99
+
100
+ :host(:not([has-side-nav])) .side-nav {
101
+ display: none;
102
+ }
103
+
104
+ /*
105
+ * The nav and the page share one surface, and the shell owns the track
106
+ * width, so a slotted sidebar fills the track and drops its own background
107
+ * and edge. Set --nile-app-shell-side-nav-bg to put a surface back.
108
+ */
109
+ ::slotted([slot='side-nav']) {
110
+ width: 100% !important;
111
+ height: 100%;
112
+ background: var(--nile-app-shell-side-nav-bg, transparent) !important;
113
+ border-right: var(--nile-app-shell-side-nav-border, 0) !important;
114
+ }
115
+
116
+ /* -------------------------------------------------------- content column */
117
+
118
+ .content-section {
119
+ grid-area: content;
120
+ position: relative;
121
+ display: flex;
122
+ min-width: 0;
123
+ gap: var(--nile-app-shell-gutter);
124
+ padding: var(--nile-app-shell-gutter);
125
+ box-sizing: border-box;
126
+ }
127
+
128
+ .container {
129
+ box-sizing: border-box;
130
+ /*
131
+ * The floor is the flex basis, not a min-width: a hard min-width cannot
132
+ * yield, so the row overflows and :host's overflow:hidden clips the
133
+ * regions after it. As a basis the container holds the floor while there
134
+ * is room and gives way when there is not. The shell keeps a docked panel
135
+ * off the row until it fits (see _dockRequirement), so the give-way path
136
+ * is the last resort, not the usual one.
137
+ */
138
+ flex: 1 1 var(--nile-app-shell-content-min-width);
139
+ display: flex;
140
+ flex-direction: column;
141
+ min-width: 0;
142
+ overflow: hidden;
143
+ background: var(--nile-colors-white-base, var(--ng-colors-bg-secondary));
144
+ border: var(--nile-border-width-1, var(--ng-border-width-1)) solid
145
+ var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
146
+ border-radius: var(--nile-app-shell-radius);
147
+ box-shadow: var(--nile-box-shadow-none, var(--ng-shadow-none));
148
+ /*
149
+ * The container — not the viewport — is the sizing context for page
150
+ * content. See the content-container note below for querying it.
151
+ */
152
+ container-type: inline-size;
153
+ container-name: nile-content;
154
+ }
155
+
156
+ /*
157
+ * Container queries cannot cross a shadow boundary: a rule in the page's
158
+ * stylesheet cannot see a container declared in here. The
159
+ * content-container attribute moves the context onto the slotted page root instead, so page CSS can
160
+ * write an @container nile-content query. It brings layout containment with
161
+ * it, so it is opt-in.
162
+ */
163
+ :host([content-container]) slot:not([name])::slotted(*) {
164
+ container-type: inline-size;
165
+ container-name: nile-content;
166
+ }
167
+
168
+ :host([flat]) .container {
169
+ background: transparent;
170
+ border-color: transparent;
171
+ border-radius: 0;
172
+ }
173
+
174
+ /* ---------------------------------------------------------------- top bar */
175
+
176
+ .top-bar {
177
+ box-sizing: border-box;
178
+ flex: 0 0 auto;
179
+ display: flex;
180
+ align-items: center;
181
+ gap: var(--nile-spacing-xl, var(--ng-spacing-xl));
182
+ height: var(--nile-app-shell-top-bar-height);
183
+ padding-inline: var(--nile-app-shell-content-padding);
184
+ }
185
+
186
+ /* Inside the container the bar carries the rule that separates it from the
187
+ page body; spanning the shell it carries the container's edge instead. */
188
+ .container > .top-bar {
189
+ border-bottom: var(--nile-border-width-1, var(--ng-border-width-1)) solid
190
+ var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
191
+ }
192
+
193
+ .shell-top-bar {
194
+ grid-area: top-bar;
195
+ min-width: 0;
196
+ padding-inline: var(--nile-spacing-xl, var(--ng-spacing-xl));
197
+ background: var(--nile-colors-white-base, var(--ng-colors-bg-secondary));
198
+ border-bottom: var(--nile-border-width-1, var(--ng-border-width-1)) solid
199
+ var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
200
+ }
201
+
202
+ /* No slotted bar content and no nav toggle means no bar at all. */
203
+ :host(:not([has-top-bar])) .top-bar {
204
+ display: none;
205
+ }
206
+
207
+ .top-bar-content {
208
+ display: flex;
209
+ align-items: center;
210
+ gap: var(--nile-spacing-xl, var(--ng-spacing-xl));
211
+ min-width: 0;
212
+ flex: 1 1 auto;
213
+ }
214
+
215
+ .top-bar-actions {
216
+ display: flex;
217
+ align-items: center;
218
+ gap: var(--nile-spacing-md, var(--ng-spacing-md));
219
+ margin-inline-start: auto;
220
+ }
221
+
222
+ /*
223
+ * An empty flex item still takes the row's gap before it, which pulls the
224
+ * bar's content 16px short of the padding edge and leaves a sliver of bare
225
+ * container at the end of the header. Nothing in the group, no box.
226
+ */
227
+ :host(:not([has-top-bar-actions]):not([has-ask])) .top-bar-actions {
228
+ display: none;
229
+ }
230
+
231
+ /*
232
+ * The Ask button. The one control in the bar the shell renders itself: it
233
+ * turns on the panel being mounted and it calls openPanel(), neither of
234
+ * which slotted markup can reach.
235
+ *
236
+ * It is a stock <nile-button variant="primary">: the shell sets no surface,
237
+ * radius, height or type of its own, so the button's appearance — and its
238
+ * focus ring, hover, disabled and loading states — stays the component's.
239
+ * The only rule here is the flex behaviour it needs as a top-bar item.
240
+ */
241
+ .ask {
242
+ flex: 0 0 auto;
243
+ }
244
+
245
+ .ask-mark {
246
+ display: inline-flex;
247
+ align-items: center;
248
+ }
249
+
250
+ .ask-mark nile-glyph {
251
+ --nile-svg-fill: currentColor;
252
+ --nile-svg-stroke-width: var(--ng-svg-stroke-width);
253
+ width: 16px;
254
+ height: 16px;
255
+ }
256
+
257
+ .nav-toggle-group {
258
+ display: flex;
259
+ align-items: center;
260
+ gap: var(--nile-spacing-lg, var(--ng-spacing-lg));
261
+ }
262
+
263
+ /*
264
+ * Lands the 24px glyph box, not nile-button's 38px circle, on the
265
+ * container's 24px origin: (38 - 24) / 2 = 7.
266
+ */
267
+ .nav-toggle {
268
+ margin-inline-start: -7px;
269
+ }
270
+
271
+ .rule {
272
+ flex: 0 0 auto;
273
+ width: var(--nile-border-width-1, var(--ng-border-width-1));
274
+ height: 24px;
275
+ background: var(
276
+ --nile-colors-neutral-400,
277
+ var(--ng-colors-border-secondary)
278
+ );
279
+ }
280
+
281
+ /* --------------------------------------------------------------- tab strip */
282
+
283
+ /*
284
+ * Hoisted out of the scroller so it never scrolls away. It sits flush under
285
+ * the top bar — the header carries no bottom rule of its own, so the two read
286
+ * as one block of chrome, with the single rule living at the strip's bottom.
287
+ */
288
+ .tabs {
289
+ box-sizing: border-box;
290
+ flex: 0 0 auto;
291
+ display: flex;
292
+ align-items: stretch;
293
+ gap: var(--nile-spacing-xs, var(--ng-spacing-xs));
294
+ min-width: 0;
295
+ min-height: var(--nile-app-shell-tabs-height);
296
+ padding-inline: var(--nile-app-shell-content-padding);
297
+ /* The strip carries the rule for the whole header block. */
298
+ border-bottom: var(--nile-border-width-1, var(--ng-border-width-1)) solid
299
+ var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
300
+ overflow-x: auto;
301
+ scrollbar-width: none;
302
+ }
303
+
304
+ .tabs::-webkit-scrollbar {
305
+ display: none;
306
+ }
307
+
308
+ :host(:not([has-tabs])) .tabs {
309
+ display: none;
310
+ }
311
+
312
+ /* ------------------------------------------------------------------- main */
313
+
314
+ .main {
315
+ box-sizing: border-box;
316
+ flex: 1 1 auto;
317
+ display: flex;
318
+ flex-direction: column;
319
+ min-height: 0;
320
+ overflow: auto;
321
+ padding: var(--nile-app-shell-content-padding);
322
+ }
323
+
324
+ .main:focus {
325
+ outline: none;
326
+ }
327
+
328
+ :host([no-padding]) .main {
329
+ padding: 0;
330
+ }
331
+
332
+ .main-inner {
333
+ width: 100%;
334
+ min-height: 0;
335
+ }
336
+
337
+ /* Centred when short, scrolls from the top when tall. */
338
+ :host([content-align='centered']) .main-inner {
339
+ /*
340
+ * width:100% + max-width leaves free space for the auto inline margins to
341
+ * split; dropping the width would let the auto margins cancel the flex
342
+ * stretch and shrink-wrap the column to its widest child. The block margins
343
+ * centre it while it is short and compute to 0 once it is taller, so a tall
344
+ * page scrolls from the top rather than clipping.
345
+ */
346
+ width: 100%;
347
+ max-width: var(--nile-app-shell-centered-width);
348
+ margin: auto;
349
+ }
350
+
351
+ /* ------------------------------------------------------------------ aside */
352
+
353
+ .aside {
354
+ box-sizing: border-box;
355
+ /* Gives before the page does, down to its own floor, for the same reason
356
+ the panel does: the page is the last region to be asked for room. */
357
+ flex: 0 1 var(--nile-app-shell-aside-width);
358
+ min-width: var(--nile-app-shell-aside-min-width);
359
+ display: flex;
360
+ flex-direction: column;
361
+ min-height: 0;
362
+ overflow: auto;
363
+ padding: var(--nile-app-shell-content-padding);
364
+ background: var(--nile-colors-white-base, var(--ng-colors-bg-secondary));
365
+ border: var(--nile-border-width-1, var(--ng-border-width-1)) solid
366
+ var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
367
+ border-radius: var(--nile-app-shell-radius);
368
+ }
369
+
370
+ :host(:not([has-aside])) .aside {
371
+ display: none;
372
+ }
373
+
374
+ /* -------------------------------------------------------------- AI panel */
375
+
376
+ .panel {
377
+ box-sizing: border-box;
378
+ /*
379
+ * The panel pushes the page, it never covers it, so it has to be able to
380
+ * give a little: full width while the row can afford it, then shrinking to
381
+ * its min. Here the floor can be a real min-width — the container's floor
382
+ * is a flex basis that yields all the way, so the row still cannot
383
+ * overflow into :host's clip once the panel stops giving.
384
+ */
385
+ flex: 0 1 var(--nile-app-shell-panel-width);
386
+ width: var(--nile-app-shell-panel-width);
387
+ min-width: var(--nile-app-shell-panel-min-width);
388
+ display: flex;
389
+ flex-direction: column;
390
+ min-height: 0;
391
+ overflow: hidden;
392
+ background: var(--nile-colors-white-base, var(--ng-colors-bg-secondary));
393
+ /* The panel is elevated, so its edge sits a rung above the container's. */
394
+ border: var(--nile-border-width-1, var(--ng-border-width-1)) solid
395
+ var(--nile-colors-neutral-500, var(--ng-colors-border-primary));
396
+ border-radius: var(--nile-app-shell-radius);
397
+ box-shadow: var(--nile-box-shadow-2, var(--ng-shadow-lg));
398
+ }
399
+
400
+ /* Docked: a flex sibling. It squeezes the content, it does not cover it. */
401
+ :host(:not([panel-open])) .panel {
402
+ display: none;
403
+ }
404
+
405
+ /* Overlay: contained to the content column, above it, and animated in. */
406
+ :host([panel-mode='overlay']) .panel {
407
+ position: absolute;
408
+ z-index: 1001;
409
+ inset-block: var(--nile-app-shell-gutter);
410
+ inset-inline-end: var(--nile-app-shell-gutter);
411
+ flex: none;
412
+ display: flex;
413
+ width: min(var(--nile-app-shell-panel-width), 92%);
414
+ visibility: hidden;
415
+ transform: translateX(calc(100% + var(--nile-app-shell-gutter)));
416
+ transition: transform var(--nile-app-shell-duration)
417
+ var(--nile-app-shell-ease),
418
+ visibility 0s linear var(--nile-app-shell-duration);
419
+ }
420
+
421
+ :host([panel-mode='overlay'][panel-open]) .panel {
422
+ visibility: visible;
423
+ transform: none;
424
+ transition: transform var(--nile-app-shell-duration)
425
+ var(--nile-app-shell-ease);
426
+ }
427
+
428
+ /* An unavailable panel is unmounted in either mode. */
429
+ :host(:not([has-panel])) .panel {
430
+ display: none;
431
+ }
432
+
433
+ .panel-header {
434
+ box-sizing: border-box;
435
+ flex: 0 0 auto;
436
+ display: flex;
437
+ align-items: center;
438
+ gap: var(--nile-spacing-lg, var(--ng-spacing-lg));
439
+ height: var(--nile-app-shell-top-bar-height);
440
+ padding-inline: var(--nile-spacing-xl, var(--ng-spacing-xl));
441
+ border-bottom: var(--nile-border-width-1, var(--ng-border-width-1)) solid
442
+ var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
443
+ }
444
+
445
+ .panel-heading {
446
+ display: flex;
447
+ align-items: center;
448
+ gap: var(--nile-spacing-md, var(--ng-spacing-md));
449
+ min-width: 0;
450
+ }
451
+
452
+ .panel-mark {
453
+ display: inline-flex;
454
+ color: var(
455
+ --nile-colors-primary-600,
456
+ var(--ng-colors-fg-brand-primary-600)
457
+ );
458
+ }
459
+
460
+ .panel-mark nile-glyph {
461
+ --nile-svg-fill: currentColor;
462
+ --nile-svg-stroke-width: var(--ng-svg-stroke-width);
463
+ width: 20px;
464
+ height: 20px;
465
+ }
466
+
467
+ .panel-title {
468
+ margin: 0;
469
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
470
+ font-weight: var(
471
+ --nile-font-weight-semi-bold,
472
+ var(--ng-font-weight-semibold)
473
+ );
474
+ color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
475
+ white-space: nowrap;
476
+ overflow: hidden;
477
+ text-overflow: ellipsis;
478
+ }
479
+
480
+ .panel-actions {
481
+ display: flex;
482
+ align-items: center;
483
+ gap: var(--nile-spacing-xs, var(--ng-spacing-xs));
484
+ margin-inline-start: auto;
485
+ }
486
+
487
+ .panel-body {
488
+ flex: 1 1 auto;
489
+ min-height: 0;
490
+ overflow: auto;
491
+ padding: var(--nile-spacing-xl, var(--ng-spacing-xl));
492
+ display: flex;
493
+ flex-direction: column;
494
+ gap: var(--nile-spacing-xl, var(--ng-spacing-xl));
495
+ }
496
+
497
+ .panel-footer {
498
+ flex: 0 0 auto;
499
+ padding: var(--nile-spacing-xl, var(--ng-spacing-xl));
500
+ border-top: var(--nile-border-width-1, var(--ng-border-width-1)) solid
501
+ var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
502
+ }
503
+
504
+ :host(:not([has-panel-footer])) .panel-footer {
505
+ display: none;
506
+ }
507
+
508
+ /* ---------------------------------------------------------- skip link */
509
+
510
+ .skip-link {
511
+ position: absolute;
512
+ z-index: 1002;
513
+ inset-inline-start: var(--nile-spacing-md, var(--ng-spacing-md));
514
+ inset-block-start: var(--nile-spacing-md, var(--ng-spacing-md));
515
+ display: inline-flex;
516
+ align-items: center;
517
+ padding: var(--nile-spacing-md, var(--ng-spacing-md))
518
+ var(--nile-spacing-lg, var(--ng-spacing-lg));
519
+ border: var(--nile-border-width-1, var(--ng-border-width-1)) solid
520
+ var(--nile-colors-neutral-500, var(--ng-colors-border-primary));
521
+ border-radius: var(--nile-radius-md, var(--ng-radius-md));
522
+ background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
523
+ color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
524
+ font: inherit;
525
+ font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
526
+ box-shadow: var(--nile-box-shadow-2, var(--ng-shadow-lg));
527
+ cursor: pointer;
528
+ transform: translateY(-200%);
529
+ transition: transform
530
+ var(--nile-transition-duration-short, var(--ng-transition-duration-fast))
531
+ var(--nile-app-shell-ease);
532
+ }
533
+
534
+ .skip-link:focus-visible {
535
+ outline: none;
536
+ transform: none;
537
+ box-shadow: 0 0 0 2px
538
+ var(--nile-colors-neutral-100, var(--ng-colors-bg-tertiary)),
539
+ 0 0 0 4px
540
+ var(--nile-colors-primary-600, var(--ng-colors-fg-brand-primary-600));
541
+ }
542
+
543
+ :host([no-skip-link]) .skip-link {
544
+ display: none;
545
+ }
546
+
547
+ @media (prefers-reduced-motion: reduce) {
548
+ :host,
549
+ .panel,
550
+ .skip-link {
551
+ transition: none;
552
+ }
553
+ }
554
+ `;export{n as s};