@nvidia-elements/core 2.22.4 → 2.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/accordion/accordion2.js +4 -4
  3. package/dist/alert/alert-group2.js +1 -1
  4. package/dist/alert/alert2.js +1 -1
  5. package/dist/avatar/avatar-group2.js +1 -1
  6. package/dist/avatar/avatar2.js +1 -1
  7. package/dist/badge/badge2.js +1 -1
  8. package/dist/breadcrumb/breadcrumb2.js +1 -1
  9. package/dist/bundle.d.ts +4 -0
  10. package/dist/bundles/index.d.ts +336 -0
  11. package/dist/bundles/index.js +14 -14
  12. package/dist/button/button2.js +1 -1
  13. package/dist/button-group/button-group2.js +1 -1
  14. package/dist/card/card2.js +4 -4
  15. package/dist/chat-message/chat-message2.js +1 -1
  16. package/dist/checkbox/checkbox-group2.js +1 -1
  17. package/dist/checkbox/checkbox2.js +1 -1
  18. package/dist/color/color2.js +6 -6
  19. package/dist/combobox/combobox2.js +1 -1
  20. package/dist/copy-button/copy-button2.js +1 -1
  21. package/dist/custom-elements-jsx.d.ts +189 -0
  22. package/dist/custom-elements-vue.d.ts +189 -0
  23. package/dist/custom-elements.json +6555 -0
  24. package/dist/data.html.json +133 -0
  25. package/dist/data.snippets.json +27 -27
  26. package/dist/date/date2.js +6 -6
  27. package/dist/datetime/datetime2.js +6 -6
  28. package/dist/dialog/dialog-footer2.js +1 -1
  29. package/dist/dialog/dialog-header2.js +1 -1
  30. package/dist/dialog/dialog2.js +1 -1
  31. package/dist/divider/divider2.js +1 -1
  32. package/dist/dot/dot2.js +1 -1
  33. package/dist/drag-handle/drag-handle2.js +1 -1
  34. package/dist/drawer/drawer-content2.js +1 -1
  35. package/dist/drawer/drawer-footer2.js +1 -1
  36. package/dist/drawer/drawer-header2.js +1 -1
  37. package/dist/drawer/drawer2.js +1 -1
  38. package/dist/dropdown/dropdown-footer2.js +1 -1
  39. package/dist/dropdown/dropdown-header2.js +1 -1
  40. package/dist/dropdown/dropdown2.js +1 -1
  41. package/dist/dropdown-group/dropdown-group.js +1 -1
  42. package/dist/dropzone/dropzone2.js +1 -1
  43. package/dist/file/file2.js +1 -1
  44. package/dist/format-bytes/format-bytes2.js +1 -1
  45. package/dist/format-datetime/format-datetime2.js +1 -1
  46. package/dist/format-number/format-number2.js +1 -1
  47. package/dist/format-relative-time/format-relative-time2.js +1 -1
  48. package/dist/format-truncate/format-truncate2.js +1 -1
  49. package/dist/forms/control/control2.js +1 -1
  50. package/dist/forms/control-group/control-group2.js +1 -1
  51. package/dist/forms/control-message/control-message2.js +1 -1
  52. package/dist/gauge/gauge2.js +1 -1
  53. package/dist/ghost/define.d.ts +6 -0
  54. package/dist/ghost/define.js +6 -0
  55. package/dist/ghost/define.js.map +1 -0
  56. package/dist/ghost/ghost.d.ts +27 -0
  57. package/dist/ghost/ghost.examples.js +5 -0
  58. package/dist/ghost/ghost.examples.js.map +1 -0
  59. package/dist/ghost/ghost.examples.json +37 -0
  60. package/dist/ghost/ghost.js +5 -0
  61. package/dist/ghost/ghost.js.map +1 -0
  62. package/dist/ghost/ghost2.js +28 -0
  63. package/dist/ghost/ghost2.js.map +1 -0
  64. package/dist/ghost/index.d.ts +1 -0
  65. package/dist/ghost/index.js +1 -0
  66. package/dist/grid/cell/cell2.js +1 -1
  67. package/dist/grid/column/column2.js +1 -1
  68. package/dist/grid/footer/footer2.js +1 -1
  69. package/dist/grid/grid2.js +1 -1
  70. package/dist/grid/header/header2.js +1 -1
  71. package/dist/grid/placeholder/placeholder2.js +1 -1
  72. package/dist/grid/row/row2.js +1 -1
  73. package/dist/icon/icon2.js +2 -2
  74. package/dist/icon-button/icon-button2.js +1 -1
  75. package/dist/iframe/iframe2.js +1 -1
  76. package/dist/index.js +1 -1
  77. package/dist/input/input-group2.js +1 -1
  78. package/dist/input/input2.js +1 -1
  79. package/dist/internal/utils/a11y.js.map +1 -1
  80. package/dist/joystick/joystick2.js +5 -5
  81. package/dist/logo/logo2.js +1 -1
  82. package/dist/menu/menu-group2.js +1 -1
  83. package/dist/menu/menu-item2.js +1 -1
  84. package/dist/menu/menu2.js +1 -1
  85. package/dist/month/month2.js +6 -6
  86. package/dist/notification/notification-group2.js +1 -1
  87. package/dist/notification/notification2.js +1 -1
  88. package/dist/page/page-panel/page-panel-content2.js +1 -1
  89. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  90. package/dist/page/page-panel/page-panel-header2.js +1 -1
  91. package/dist/page/page-panel/page-panel2.js +1 -1
  92. package/dist/page/page2.js +1 -1
  93. package/dist/page-header/page-header2.js +1 -1
  94. package/dist/page-loader/page-loader2.js +1 -1
  95. package/dist/pagination/pagination2.js +1 -1
  96. package/dist/panel/panel2.js +4 -4
  97. package/dist/password/password2.js +6 -6
  98. package/dist/polyfills/index.d.ts +4 -7
  99. package/dist/polyfills/index.js +0 -8
  100. package/dist/preferences-input/preferences-input2.js +5 -5
  101. package/dist/progress-bar/progress-bar2.js +1 -1
  102. package/dist/progress-dot/progress-dot2.js +1 -1
  103. package/dist/progress-ring/progress-ring2.js +1 -1
  104. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  105. package/dist/pulse/pulse2.js +1 -1
  106. package/dist/radio/radio-group2.js +1 -1
  107. package/dist/radio/radio2.js +1 -1
  108. package/dist/range/range2.js +1 -1
  109. package/dist/resize-handle/resize-handle2.js +5 -5
  110. package/dist/search/search2.js +6 -6
  111. package/dist/select/select2.js +1 -1
  112. package/dist/select/select2.js.map +1 -1
  113. package/dist/skeleton/skeleton2.js +1 -1
  114. package/dist/sort-button/sort-button2.js +1 -1
  115. package/dist/sparkline/sparkline2.js +1 -1
  116. package/dist/star-rating/star-rating2.js +1 -1
  117. package/dist/steps/steps2.js +6 -6
  118. package/dist/switch/switch-group2.js +1 -1
  119. package/dist/switch/switch2.js +1 -1
  120. package/dist/tabs/tabs-group2.js +1 -1
  121. package/dist/tabs/tabs-item-group2.js +1 -1
  122. package/dist/tabs/tabs2.js +2 -2
  123. package/dist/tag/tag2.js +5 -5
  124. package/dist/textarea/textarea2.js +1 -1
  125. package/dist/time/time2.js +6 -6
  126. package/dist/toast/toast2.js +1 -1
  127. package/dist/toast/toast2.js.map +1 -1
  128. package/dist/toggletip/toggletip-footer2.js +1 -1
  129. package/dist/toggletip/toggletip-header2.js +1 -1
  130. package/dist/toggletip/toggletip2.js +1 -1
  131. package/dist/toolbar/toolbar2.js +1 -1
  132. package/dist/tooltip/tooltip2.js +1 -1
  133. package/dist/tree/tree-node2.js +1 -1
  134. package/dist/tree/tree2.js +1 -1
  135. package/dist/week/week2.js +6 -6
  136. package/dist/workspace/controllers/workspace-command.controller.d.ts +34 -0
  137. package/dist/workspace/controllers/workspace-command.controller.js +87 -0
  138. package/dist/workspace/controllers/workspace-command.controller.js.map +1 -0
  139. package/dist/workspace/controllers/workspace-composition.controller.d.ts +54 -0
  140. package/dist/workspace/controllers/workspace-composition.controller.js +169 -0
  141. package/dist/workspace/controllers/workspace-composition.controller.js.map +1 -0
  142. package/dist/workspace/controllers/workspace-fullscreen.controller.d.ts +25 -0
  143. package/dist/workspace/controllers/workspace-fullscreen.controller.js +84 -0
  144. package/dist/workspace/controllers/workspace-fullscreen.controller.js.map +1 -0
  145. package/dist/workspace/controllers/workspace-measurement.controller.d.ts +19 -0
  146. package/dist/workspace/controllers/workspace-measurement.controller.js +188 -0
  147. package/dist/workspace/controllers/workspace-measurement.controller.js.map +1 -0
  148. package/dist/workspace/controllers/workspace-rearrange.controller.d.ts +40 -0
  149. package/dist/workspace/controllers/workspace-rearrange.controller.js +385 -0
  150. package/dist/workspace/controllers/workspace-rearrange.controller.js.map +1 -0
  151. package/dist/workspace/controllers/workspace-resize.controller.d.ts +43 -0
  152. package/dist/workspace/controllers/workspace-resize.controller.js +168 -0
  153. package/dist/workspace/controllers/workspace-resize.controller.js.map +1 -0
  154. package/dist/workspace/controllers/workspace-restoration.controller.d.ts +24 -0
  155. package/dist/workspace/controllers/workspace-restoration.controller.js +193 -0
  156. package/dist/workspace/controllers/workspace-restoration.controller.js.map +1 -0
  157. package/dist/workspace/define.d.ts +10 -0
  158. package/dist/workspace/define.js +9 -0
  159. package/dist/workspace/define.js.map +1 -0
  160. package/dist/workspace/index.d.ts +8 -0
  161. package/dist/workspace/index.js +6 -0
  162. package/dist/workspace/panel/panel.d.ts +48 -0
  163. package/dist/workspace/panel/panel.js +5 -0
  164. package/dist/workspace/panel/panel.js.map +1 -0
  165. package/dist/workspace/panel/panel2.js +53 -0
  166. package/dist/workspace/panel/panel2.js.map +1 -0
  167. package/dist/workspace/panel-content/panel-content.d.ts +20 -0
  168. package/dist/workspace/panel-content/panel-content.js +5 -0
  169. package/dist/workspace/panel-content/panel-content.js.map +1 -0
  170. package/dist/workspace/panel-content/panel-content2.js +22 -0
  171. package/dist/workspace/panel-content/panel-content2.js.map +1 -0
  172. package/dist/workspace/panel-footer/panel-footer.d.ts +24 -0
  173. package/dist/workspace/panel-footer/panel-footer.js +5 -0
  174. package/dist/workspace/panel-footer/panel-footer.js.map +1 -0
  175. package/dist/workspace/panel-footer/panel-footer2.js +28 -0
  176. package/dist/workspace/panel-footer/panel-footer2.js.map +1 -0
  177. package/dist/workspace/panel-header/panel-header.d.ts +61 -0
  178. package/dist/workspace/panel-header/panel-header.js +5 -0
  179. package/dist/workspace/panel-header/panel-header.js.map +1 -0
  180. package/dist/workspace/panel-header/panel-header2.js +102 -0
  181. package/dist/workspace/panel-header/panel-header2.js.map +1 -0
  182. package/dist/workspace/utils/evaluation.utils.d.ts +83 -0
  183. package/dist/workspace/utils/evaluation.utils.js +294 -0
  184. package/dist/workspace/utils/evaluation.utils.js.map +1 -0
  185. package/dist/workspace/utils/geometry/allocation.utils.d.ts +40 -0
  186. package/dist/workspace/utils/geometry/allocation.utils.js +73 -0
  187. package/dist/workspace/utils/geometry/allocation.utils.js.map +1 -0
  188. package/dist/workspace/utils/geometry/partition.utils.d.ts +10 -0
  189. package/dist/workspace/utils/geometry/partition.utils.js +40 -0
  190. package/dist/workspace/utils/geometry/partition.utils.js.map +1 -0
  191. package/dist/workspace/utils/geometry/sizing.utils.d.ts +35 -0
  192. package/dist/workspace/utils/geometry/sizing.utils.js +42 -0
  193. package/dist/workspace/utils/geometry/sizing.utils.js.map +1 -0
  194. package/dist/workspace/utils/interaction/boundary.utils.d.ts +40 -0
  195. package/dist/workspace/utils/interaction/boundary.utils.js +91 -0
  196. package/dist/workspace/utils/interaction/boundary.utils.js.map +1 -0
  197. package/dist/workspace/utils/interaction/command.utils.d.ts +74 -0
  198. package/dist/workspace/utils/interaction/command.utils.js +189 -0
  199. package/dist/workspace/utils/interaction/command.utils.js.map +1 -0
  200. package/dist/workspace/utils/interaction/drag-preview.utils.d.ts +79 -0
  201. package/dist/workspace/utils/interaction/drag-preview.utils.js +16 -0
  202. package/dist/workspace/utils/interaction/drag-preview.utils.js.map +1 -0
  203. package/dist/workspace/utils/interaction/insertion-offers.utils.d.ts +58 -0
  204. package/dist/workspace/utils/interaction/insertion-offers.utils.js +259 -0
  205. package/dist/workspace/utils/interaction/insertion-offers.utils.js.map +1 -0
  206. package/dist/workspace/utils/interaction/placement-decision.utils.d.ts +55 -0
  207. package/dist/workspace/utils/interaction/placement-decision.utils.js +242 -0
  208. package/dist/workspace/utils/interaction/placement-decision.utils.js.map +1 -0
  209. package/dist/workspace/utils/interaction/resize-input.utils.d.ts +1 -0
  210. package/dist/workspace/utils/interaction/resize-input.utils.js +17 -0
  211. package/dist/workspace/utils/interaction/resize-input.utils.js.map +1 -0
  212. package/dist/workspace/utils/model/layout.utils.d.ts +22 -0
  213. package/dist/workspace/utils/model/layout.utils.js +41 -0
  214. package/dist/workspace/utils/model/layout.utils.js.map +1 -0
  215. package/dist/workspace/utils/model/membership.utils.d.ts +14 -0
  216. package/dist/workspace/utils/model/membership.utils.js +17 -0
  217. package/dist/workspace/utils/model/membership.utils.js.map +1 -0
  218. package/dist/workspace/utils/model/operations.utils.d.ts +31 -0
  219. package/dist/workspace/utils/model/operations.utils.js +178 -0
  220. package/dist/workspace/utils/model/operations.utils.js.map +1 -0
  221. package/dist/workspace/utils/model/projection.utils.d.ts +7 -0
  222. package/dist/workspace/utils/model/projection.utils.js +87 -0
  223. package/dist/workspace/utils/model/projection.utils.js.map +1 -0
  224. package/dist/workspace/utils/model/value.utils.d.ts +5 -0
  225. package/dist/workspace/utils/model/value.utils.js +68 -0
  226. package/dist/workspace/utils/model/value.utils.js.map +1 -0
  227. package/dist/workspace/utils/placement/acquisition-sizing.utils.d.ts +32 -0
  228. package/dist/workspace/utils/placement/acquisition-sizing.utils.js +152 -0
  229. package/dist/workspace/utils/placement/acquisition-sizing.utils.js.map +1 -0
  230. package/dist/workspace/utils/placement/context.utils.d.ts +36 -0
  231. package/dist/workspace/utils/placement/context.utils.js +135 -0
  232. package/dist/workspace/utils/placement/context.utils.js.map +1 -0
  233. package/dist/workspace/utils/placement/group-insertion.utils.d.ts +26 -0
  234. package/dist/workspace/utils/placement/group-insertion.utils.js +171 -0
  235. package/dist/workspace/utils/placement/group-insertion.utils.js.map +1 -0
  236. package/dist/workspace/utils/placement/origin.utils.d.ts +13 -0
  237. package/dist/workspace/utils/placement/origin.utils.js +49 -0
  238. package/dist/workspace/utils/placement/origin.utils.js.map +1 -0
  239. package/dist/workspace/utils/placement/planner.utils.d.ts +22 -0
  240. package/dist/workspace/utils/placement/planner.utils.js +184 -0
  241. package/dist/workspace/utils/placement/planner.utils.js.map +1 -0
  242. package/dist/workspace/utils/placement/preparation.utils.d.ts +28 -0
  243. package/dist/workspace/utils/placement/preparation.utils.js +140 -0
  244. package/dist/workspace/utils/placement/preparation.utils.js.map +1 -0
  245. package/dist/workspace/utils/placement/region.utils.d.ts +15 -0
  246. package/dist/workspace/utils/placement/region.utils.js +111 -0
  247. package/dist/workspace/utils/placement/region.utils.js.map +1 -0
  248. package/dist/workspace/utils/placement/split-sizing.utils.d.ts +18 -0
  249. package/dist/workspace/utils/placement/split-sizing.utils.js +108 -0
  250. package/dist/workspace/utils/placement/split-sizing.utils.js.map +1 -0
  251. package/dist/workspace/utils/presentation/composition.utils.d.ts +17 -0
  252. package/dist/workspace/utils/presentation/composition.utils.js +95 -0
  253. package/dist/workspace/utils/presentation/composition.utils.js.map +1 -0
  254. package/dist/workspace/utils/presentation/groups.utils.d.ts +91 -0
  255. package/dist/workspace/utils/presentation/groups.utils.js +169 -0
  256. package/dist/workspace/utils/presentation/groups.utils.js.map +1 -0
  257. package/dist/workspace/utils/presentation/header-configuration.utils.d.ts +11 -0
  258. package/dist/workspace/utils/presentation/header-configuration.utils.js +7 -0
  259. package/dist/workspace/utils/presentation/header-configuration.utils.js.map +1 -0
  260. package/dist/workspace/utils/presentation/measurements.utils.d.ts +21 -0
  261. package/dist/workspace/utils/presentation/measurements.utils.js +28 -0
  262. package/dist/workspace/utils/presentation/measurements.utils.js.map +1 -0
  263. package/dist/workspace/utils/presentation/offers.utils.d.ts +43 -0
  264. package/dist/workspace/utils/presentation/offers.utils.js +137 -0
  265. package/dist/workspace/utils/presentation/offers.utils.js.map +1 -0
  266. package/dist/workspace/utils/presentation/preview.utils.d.ts +6 -0
  267. package/dist/workspace/utils/presentation/preview.utils.js +36 -0
  268. package/dist/workspace/utils/presentation/preview.utils.js.map +1 -0
  269. package/dist/workspace/workspace.d.ts +103 -0
  270. package/dist/workspace/workspace.examples.js +5 -0
  271. package/dist/workspace/workspace.examples.js.map +1 -0
  272. package/dist/workspace/workspace.examples.json +133 -0
  273. package/dist/workspace/workspace.js +5 -0
  274. package/dist/workspace/workspace.js.map +1 -0
  275. package/dist/workspace/workspace.types.d.ts +3 -0
  276. package/dist/workspace/workspace2.js +518 -0
  277. package/dist/workspace/workspace2.js.map +1 -0
  278. package/package.json +26 -3
  279. package/dist/polyfills/index.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ import { WorkspacePanel as e } from "./panel/panel2.js";
2
+ import { Workspace as t } from "./workspace2.js";
3
+ import { WorkspacePanelHeader as n } from "./panel-header/panel-header2.js";
4
+ import { WorkspacePanelContent as r } from "./panel-content/panel-content2.js";
5
+ import { WorkspacePanelFooter as i } from "./panel-footer/panel-footer2.js";
6
+ export { t as Workspace, e as WorkspacePanel, r as WorkspacePanelContent, i as WorkspacePanelFooter, n as WorkspacePanelHeader };
@@ -0,0 +1,48 @@
1
+ import { LitElement } from 'lit';
2
+ import type { WorkspaceHeaderConfiguration } from '../utils/presentation/header-configuration.utils.js';
3
+ /**
4
+ * @element nve-workspace-panel
5
+ * @description Stable application content and its workspace chrome.
6
+ * @documentation https://nvidia.github.io/elements/docs/elements/workspace/
7
+ * @since 0.0.0
8
+ * @stable false
9
+ * @entrypoint \@nvidia-elements/core/workspace
10
+ * @command --enter-fullscreen - Present this panel's group in native fullscreen.
11
+ * @command --exit-fullscreen - Exit native fullscreen.
12
+ * @command --toggle-fullscreen - Toggle native fullscreen for this panel's group.
13
+ * @command --open - Open and activate the targeted supplied panel. Repeated activation is silent.
14
+ * @command --close - Close the targeted panel when its workspace is closable.
15
+ * @command --select - Activate an open supplied panel without reopening a closed panel.
16
+ * @command --place - Apply the invoker's typed placement request when rearrangeable; membership changes also require groupable.
17
+ * @slot - Application content.
18
+ * @slot header - Title and controls.
19
+ * @slot footer - Status and actions.
20
+ * @cssprop --background
21
+ * @cssprop --border
22
+ * @cssprop --box-shadow
23
+ */
24
+ export declare class WorkspacePanel extends LitElement {
25
+ static styles: import("lit").CSSResult[];
26
+ static readonly metadata: {
27
+ tag: string;
28
+ version: string;
29
+ parents: string[];
30
+ children: string[];
31
+ };
32
+ /** Application minimum total panel width in pixels. */
33
+ minWidth: number;
34
+ /** Application minimum total panel height in pixels. */
35
+ minHeight: number;
36
+ private selected;
37
+ private headerHeight;
38
+ /** @internal */
39
+ _internals: ElementInternals;
40
+ connectedCallback(): void;
41
+ render(): import("lit-html").TemplateResult<1>;
42
+ /** @internal */
43
+ _present(presented: boolean): void;
44
+ /** @internal */
45
+ _configure(configuration: WorkspaceHeaderConfiguration & {
46
+ scrollLeft: number;
47
+ }): void;
48
+ }
@@ -0,0 +1,5 @@
1
+ // src/workspace/panel/panel.css?inline
2
+ var e = ":host{--background: var(--nve-sys-layer-container-background);--border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color);--box-shadow: var(--nve-ref-shadow-100);display:block;pointer-events:none;border-radius:var(--_workspace-border-radius, var(--nve-ref-border-radius-lg))}[internal-host]{height:100%;position:relative;border-radius:inherit}.surface{position:absolute;inset:0;overflow:hidden;border-radius:inherit}.content{box-sizing:border-box;position:absolute;inset:0;display:flex;flex-direction:column;min-height:0;pointer-events:auto;background:var(--background);border:var(--border);border-color:transparent}.frame{position:absolute;inset:0;box-sizing:border-box;border:var(--border);border-right:var(--_workspace-border-right, var(--border));border-bottom:var(--_workspace-border-bottom, var(--border));border-radius:inherit;pointer-events:none;z-index:4}.body{flex:1;min-height:0;overflow:auto;scrollbar-color:var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color);scrollbar-width:var(--nve-sys-scrollbar-width)}::slotted(nve-workspace-panel-footer){flex:0 0 auto}[hidden]{display:none}:host([container=\"flat\"]) .content{background:transparent}:host([container=\"full\"]),:host([container=\"flat\"]){border-radius:var(--nve-ref-border-radius-none);--box-shadow: none}:host([aria-hidden=\"false\"]){box-shadow:var(--box-shadow)}";
3
+ export { e as default };
4
+
5
+ //# sourceMappingURL=panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel.js","names":["panel_default"],"sources":["../../../src/workspace/panel/panel.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --background: var(--nve-sys-layer-container-background);\n --border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color);\n --box-shadow: var(--nve-ref-shadow-100);\n display: block;\n pointer-events: none;\n border-radius: var(--_workspace-border-radius, var(--nve-ref-border-radius-lg));\n}\n\n[internal-host] {\n height: 100%;\n position: relative;\n border-radius: inherit;\n}\n\n.surface {\n position: absolute;\n inset: 0;\n overflow: hidden;\n border-radius: inherit;\n}\n\n.content {\n box-sizing: border-box;\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n min-height: 0;\n pointer-events: auto;\n background: var(--background);\n border: var(--border);\n /* Preserve border insets while the selected frame owns the visible border. */\n border-color: transparent;\n}\n\n.frame {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n border: var(--border);\n border-right: var(--_workspace-border-right, var(--border));\n border-bottom: var(--_workspace-border-bottom, var(--border));\n border-radius: inherit;\n pointer-events: none;\n z-index: 4;\n}\n\n.body {\n flex: 1;\n min-height: 0;\n overflow: auto;\n scrollbar-color: var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color);\n scrollbar-width: var(--nve-sys-scrollbar-width);\n}\n\n::slotted(nve-workspace-panel-footer) {\n flex: 0 0 auto;\n}\n\n[hidden] {\n display: none;\n}\n\n:host([container='flat']) .content {\n background: transparent;\n}\n\n:host([container='full']),\n:host([container='flat']) {\n border-radius: var(--nve-ref-border-radius-none);\n --box-shadow: none;\n}\n\n:host([aria-hidden='false']) {\n box-shadow: var(--box-shadow);\n}\n"],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { attachInternals as e } from "../../internal/utils/a11y.js";
2
+ import { useStyles as t } from "../../internal/styles/index.js";
3
+ import n from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
4
+ import r from "./panel.js";
5
+ import { LitElement as i, html as a } from "lit";
6
+ import { property as o } from "lit/decorators/property.js";
7
+ import { state as s } from "lit/decorators/state.js";
8
+ // src/workspace/panel/panel.ts
9
+ var c = class extends i {
10
+ constructor(...e) {
11
+ super(...e), this.minWidth = 0, this.minHeight = 0, this.selected = !1, this.headerHeight = 0;
12
+ }
13
+ static {
14
+ this.styles = t([r]);
15
+ }
16
+ static {
17
+ this.metadata = {
18
+ tag: "nve-workspace-panel",
19
+ version: "2.23.0",
20
+ parents: ["nve-workspace"],
21
+ children: [
22
+ "nve-workspace-panel-header",
23
+ "nve-workspace-panel-content",
24
+ "nve-workspace-panel-footer"
25
+ ]
26
+ };
27
+ }
28
+ connectedCallback() {
29
+ super.connectedCallback(), e(this);
30
+ }
31
+ render() {
32
+ let { selected: e, headerHeight: t } = this;
33
+ return a`<div internal-host><div class="surface"><slot name="header"></slot><div class="content" style="${`top:${t}px`}" ?hidden="${!e}"><div class="body" tabindex="0"><slot></slot></div><slot name="footer"></slot></div></div><div class="frame" ?hidden="${!e}"></div></div>`;
34
+ }
35
+ _present(e) {
36
+ e ? this._internals.states.add("workspace-presented") : this._internals.states.delete("workspace-presented");
37
+ }
38
+ _configure(e) {
39
+ this.selected = e.selected, this.headerHeight = e.headerHeight, this.querySelector(":scope > nve-workspace-panel-header")?._configure(e);
40
+ }
41
+ };
42
+ n([o({
43
+ type: Number,
44
+ attribute: "min-width",
45
+ reflect: !0
46
+ })], c.prototype, "minWidth", void 0), n([o({
47
+ type: Number,
48
+ attribute: "min-height",
49
+ reflect: !0
50
+ })], c.prototype, "minHeight", void 0), n([s()], c.prototype, "selected", void 0), n([s()], c.prototype, "headerHeight", void 0);
51
+ export { c as WorkspacePanel };
52
+
53
+ //# sourceMappingURL=panel2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel2.js","names":["styles","_decorate","__decorate","panel_default","WorkspacePanel","LitElement","_args","useStyles","attachInternals","headerHeight","selected","presented","configuration","property","state"],"sources":["../../../src/workspace/panel/panel.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\n\nimport { attachInternals, useStyles } from '@nvidia-elements/core/internal';\n\nimport type { WorkspaceHeaderConfiguration } from '../utils/presentation/header-configuration.utils.js';\n\nimport type { WorkspacePanelHeader } from '../panel-header/panel-header.js';\n\nimport styles from './panel.css?inline';\n\n/**\n * @element nve-workspace-panel\n * @description Stable application content and its workspace chrome.\n * @documentation https://nvidia.github.io/elements/docs/elements/workspace/\n * @since 0.0.0\n * @stable false\n * @entrypoint \\@nvidia-elements/core/workspace\n * @command --enter-fullscreen - Present this panel's group in native fullscreen.\n * @command --exit-fullscreen - Exit native fullscreen.\n * @command --toggle-fullscreen - Toggle native fullscreen for this panel's group.\n * @command --open - Open and activate the targeted supplied panel. Repeated activation is silent.\n * @command --close - Close the targeted panel when its workspace is closable.\n * @command --select - Activate an open supplied panel without reopening a closed panel.\n * @command --place - Apply the invoker's typed placement request when rearrangeable; membership changes also require groupable.\n * @slot - Application content.\n * @slot header - Title and controls.\n * @slot footer - Status and actions.\n * @cssprop --background\n * @cssprop --border\n * @cssprop --box-shadow\n */\nexport class WorkspacePanel extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-workspace-panel',\n version: '0.0.0',\n parents: ['nve-workspace'],\n children: ['nve-workspace-panel-header', 'nve-workspace-panel-content', 'nve-workspace-panel-footer']\n };\n\n /** Application minimum total panel width in pixels. */\n @property({ type: Number, attribute: 'min-width', reflect: true }) minWidth = 0;\n\n /** Application minimum total panel height in pixels. */\n @property({ type: Number, attribute: 'min-height', reflect: true }) minHeight = 0;\n\n @state() private selected = false;\n\n @state() private headerHeight = 0;\n\n /** @internal */\n declare _internals: ElementInternals;\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n }\n\n render() {\n const { selected, headerHeight } = this;\n return html`\n <div internal-host>\n <div class=\"surface\">\n <slot name=\"header\"></slot>\n <div class=\"content\" style=${`top:${headerHeight}px`} ?hidden=${!selected}>\n <div class=\"body\" tabindex=\"0\"><slot></slot></div>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n <div class=\"frame\" ?hidden=${!selected}></div>\n </div>\n `;\n }\n\n /** @internal */\n _present(presented: boolean) {\n if (presented) this._internals.states.add('workspace-presented');\n else this._internals.states.delete('workspace-presented');\n }\n\n /** @internal */\n _configure(configuration: WorkspaceHeaderConfiguration & { scrollLeft: number }) {\n this.selected = configuration.selected;\n this.headerHeight = configuration.headerHeight;\n this.querySelector<WorkspacePanelHeader>(':scope > nve-workspace-panel-header')?._configure(configuration);\n }\n}\n"],"mappings":";;;;;;;;AAoCA,IAAaI,IAAb,cAAoCC,EAAW;;EAkBb,A,aAP8C,KAAA,WAAA,GAGE,KAAA,YAAA,GAEpD,KAAA,WAAA,IAEI,KAAA,eAAA;;;EAjBhB,KAAA,SAAAE,EAAU,CAACP,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,SAAS,CAAC,eAAe;GACzB,UAAU;IAAC;IAA8B;IAA+B;GAA4B;EACtG;;CAeA,oBAAoB;EAElB,AADA,MAAM,kBAAkB,GACxBQ,EAAgB,IAAI;CACtB;CAEA,SAAS;EACP,IAAM,EAAE,aAAU,oBAAiB;EACnC,OAAO,CAAI,kGAIwB,OAAOC,EAAa,IAAI,aAAW,CAACC,EAAS,yHAK/C,CAACA,EAAS;CAG7C;CAGA,SAAS,GAAoB;EAC3B,AAAIC,IAAW,KAAK,WAAW,OAAO,IAAI,qBAAqB,IAC1D,KAAK,WAAW,OAAO,OAAO,qBAAqB;CAC1D;CAGA,WAAW,GAAsE;EAG/E,AAFA,KAAK,WAAWC,EAAc,UAC9B,KAAK,eAAeA,EAAc,cAClC,KAAK,cAAoC,qCAAqC,CAAC,EAAE,WAAWA,CAAa;CAC3G;AACF;AA7CGX,EAAA,CAAAY,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAa,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,YAAA,KAAA,CAAA,GAGhEH,EAAA,CAAAY,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAc,SAAS;AAAK,CAAC,CAAA,GAAAT,EAAA,WAAA,aAAA,KAAA,CAAA,GAEjEH,EAAA,CAAAa,EAAM,CAAA,GAAAV,EAAA,WAAA,YAAA,KAAA,CAAA,GAENH,EAAA,CAAAa,EAAM,CAAA,GAAAV,EAAA,WAAA,gBAAA,KAAA,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * @element nve-workspace-panel-content
4
+ * @description Provides padding for workspace panel content.
5
+ * @documentation https://nvidia.github.io/elements/docs/elements/workspace/
6
+ * @since 0.0.0
7
+ * @stable false
8
+ * @entrypoint \@nvidia-elements/core/workspace
9
+ * @slot - Application content.
10
+ * @cssprop --padding
11
+ */
12
+ export declare class WorkspacePanelContent extends LitElement {
13
+ static styles: import("lit").CSSResult[];
14
+ static readonly metadata: {
15
+ tag: string;
16
+ version: string;
17
+ parents: string[];
18
+ };
19
+ render(): import("lit-html").TemplateResult<1>;
20
+ }
@@ -0,0 +1,5 @@
1
+ // src/workspace/panel-content/panel-content.css?inline
2
+ var e = ":host{--padding: var(--nve-ref-space-sm);display:block;contain:none}[internal-host]{padding:var(--padding)}";
3
+ export { e as default };
4
+
5
+ //# sourceMappingURL=panel-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-content.js","names":["panel_content_default"],"sources":["../../../src/workspace/panel-content/panel-content.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n:host {\n --padding: var(--nve-ref-space-sm);\n display: block;\n contain: none;\n}\n\n[internal-host] {\n padding: var(--padding);\n}\n"],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { useStyles as e } from "../../internal/styles/index.js";
2
+ import t from "./panel-content.js";
3
+ import { LitElement as n, html as r } from "lit";
4
+ // src/workspace/panel-content/panel-content.ts
5
+ var i = class extends n {
6
+ static {
7
+ this.styles = e([t]);
8
+ }
9
+ static {
10
+ this.metadata = {
11
+ tag: "nve-workspace-panel-content",
12
+ version: "2.23.0",
13
+ parents: ["nve-workspace-panel"]
14
+ };
15
+ }
16
+ render() {
17
+ return r`<div internal-host><slot></slot></div>`;
18
+ }
19
+ };
20
+ export { i as WorkspacePanelContent };
21
+
22
+ //# sourceMappingURL=panel-content2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-content2.js","names":["styles","panel_content_default","WorkspacePanelContent","LitElement","useStyles"],"sources":["../../../src/workspace/panel-content/panel-content.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\n\nimport { useStyles } from '@nvidia-elements/core/internal';\n\nimport styles from './panel-content.css?inline';\n\n/**\n * @element nve-workspace-panel-content\n * @description Provides padding for workspace panel content.\n * @documentation https://nvidia.github.io/elements/docs/elements/workspace/\n * @since 0.0.0\n * @stable false\n * @entrypoint \\@nvidia-elements/core/workspace\n * @slot - Application content.\n * @cssprop --padding\n */\nexport class WorkspacePanelContent extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = { tag: 'nve-workspace-panel-content', version: '0.0.0', parents: ['nve-workspace-panel'] };\n\n render() {\n return html`\n <div internal-host><slot></slot></div>\n `;\n }\n}\n"],"mappings":";;;;AAmBA,IAAaE,IAAb,cAA2CC,EAAW;;EACpC,KAAA,SAAAC,EAAU,CAACJ,CAAM,CAAC;;;EAEP,KAAA,WAAA;GAAE,KAAK;GAA+B,SAAS;GAAS,SAAS,CAAC,qBAAqB;EAAE;;CAEpH,SAAS;EACP,OAAO,CAAI;CAGb;AACF"}
@@ -0,0 +1,24 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * @element nve-workspace-panel-footer
4
+ * @description Provides workspace panel status and actions outside the scrolling body.
5
+ * @documentation https://nvidia.github.io/elements/docs/elements/workspace/
6
+ * @since 0.0.0
7
+ * @stable false
8
+ * @entrypoint \@nvidia-elements/core/workspace
9
+ * @slot - Status and actions.
10
+ * @cssprop --padding
11
+ * @cssprop --border-top
12
+ * @cssprop --gap
13
+ */
14
+ export declare class WorkspacePanelFooter extends LitElement {
15
+ static styles: import("lit").CSSResult[];
16
+ static readonly metadata: {
17
+ tag: string;
18
+ version: string;
19
+ parents: string[];
20
+ };
21
+ /** @private */
22
+ slot: string;
23
+ render(): import("lit-html").TemplateResult<1>;
24
+ }
@@ -0,0 +1,5 @@
1
+ // src/workspace/panel-footer/panel-footer.css?inline
2
+ var e = ":host{--padding: var(--nve-ref-space-sm);--border-top: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);--gap: var(--nve-ref-space-xs);display:block;contain:none}[internal-host]{padding:var(--padding);display:flex;align-items:center;gap:var(--gap);border-top:var(--border-top)}";
3
+ export { e as default };
4
+
5
+ //# sourceMappingURL=panel-footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-footer.js","names":["panel_footer_default"],"sources":["../../../src/workspace/panel-footer/panel-footer.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n:host {\n --padding: var(--nve-ref-space-sm);\n --border-top: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --gap: var(--nve-ref-space-xs);\n display: block;\n contain: none;\n}\n\n[internal-host] {\n padding: var(--padding);\n display: flex;\n align-items: center;\n gap: var(--gap);\n border-top: var(--border-top);\n}\n"],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { hostAttr as e } from "../../internal/decorators/host-attr.js";
2
+ import { useStyles as t } from "../../internal/styles/index.js";
3
+ import n from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
4
+ import r from "./panel-footer.js";
5
+ import { LitElement as i, html as a } from "lit";
6
+ // src/workspace/panel-footer/panel-footer.ts
7
+ var o = class extends i {
8
+ constructor(...e) {
9
+ super(...e), this.slot = "footer";
10
+ }
11
+ static {
12
+ this.styles = t([r]);
13
+ }
14
+ static {
15
+ this.metadata = {
16
+ tag: "nve-workspace-panel-footer",
17
+ version: "2.23.0",
18
+ parents: ["nve-workspace-panel"]
19
+ };
20
+ }
21
+ render() {
22
+ return a`<div internal-host><slot></slot></div>`;
23
+ }
24
+ };
25
+ n([e()], o.prototype, "slot", void 0);
26
+ export { o as WorkspacePanelFooter };
27
+
28
+ //# sourceMappingURL=panel-footer2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-footer2.js","names":["styles","_decorate","__decorate","panel_footer_default","WorkspacePanelFooter","LitElement","_args","useStyles","hostAttr"],"sources":["../../../src/workspace/panel-footer/panel-footer.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\n\nimport { hostAttr, useStyles } from '@nvidia-elements/core/internal';\n\nimport styles from './panel-footer.css?inline';\n\n/**\n * @element nve-workspace-panel-footer\n * @description Provides workspace panel status and actions outside the scrolling body.\n * @documentation https://nvidia.github.io/elements/docs/elements/workspace/\n * @since 0.0.0\n * @stable false\n * @entrypoint \\@nvidia-elements/core/workspace\n * @slot - Status and actions.\n * @cssprop --padding\n * @cssprop --border-top\n * @cssprop --gap\n */\nexport class WorkspacePanelFooter extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = { tag: 'nve-workspace-panel-footer', version: '0.0.0', parents: ['nve-workspace-panel'] };\n\n /** @private */\n @hostAttr() slot = 'footer';\n\n render() {\n return html`\n <div internal-host><slot></slot></div>\n `;\n }\n}\n"],"mappings":";;;;;;AAqBA,IAAaI,IAAb,cAA0CC,EAAW;;EAMhC,A,aAAA,KAAA,OAAA;;;EALH,KAAA,SAAAE,EAAU,CAACP,CAAM,CAAC;;;EAEP,KAAA,WAAA;GAAE,KAAK;GAA8B,SAAS;GAAS,SAAS,CAAC,qBAAqB;EAAE;;CAKnH,SAAS;EACP,OAAO,CAAI;CAGb;AACF;AAPGC,EAAA,CAAAO,EAAS,CAAA,GAAAJ,EAAA,WAAA,QAAA,KAAA,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { LitElement } from 'lit';
2
+ import type { WorkspaceHeaderConfiguration } from '../utils/presentation/header-configuration.utils.js';
3
+ /**
4
+ * @element nve-workspace-panel-header
5
+ * @description Supplies a workspace panel title, decoration, and application controls.
6
+ * @documentation https://nvidia.github.io/elements/docs/elements/workspace/
7
+ * @since 0.0.0
8
+ * @stable false
9
+ * @entrypoint \@nvidia-elements/core/workspace
10
+ * @slot - Noninteractive panel title.
11
+ * @slot prefix - Noninteractive title decoration.
12
+ * @slot suffix - Application controls for the selected panel.
13
+ * @cssprop --min-height
14
+ * @cssprop --padding - Padding around the title.
15
+ * @cssprop --prefix-padding - Padding around title decoration.
16
+ * @cssprop --prefix-border - Border after title decoration.
17
+ * @cssprop --suffix-padding - Override the shared inset around header controls.
18
+ * @cssprop --suffix-border - Border before header controls.
19
+ * @cssprop --gap
20
+ * @cssprop --border-bottom
21
+ */
22
+ export declare class WorkspacePanelHeader extends LitElement {
23
+ #private;
24
+ static styles: import("lit").CSSResult[];
25
+ static readonly metadata: {
26
+ tag: string;
27
+ version: string;
28
+ parents: string[];
29
+ };
30
+ /** @private */
31
+ slot: string;
32
+ /** @private */
33
+ _internals: ElementInternals;
34
+ private configuration;
35
+ connectedCallback(): void;
36
+ disconnectedCallback(): void;
37
+ protected updated(): void;
38
+ render(): import("lit-html").TemplateResult<1>;
39
+ /** @internal */
40
+ _getMeasurementTargets(): {
41
+ label: HTMLElement | null;
42
+ suffix: HTMLElement | null;
43
+ };
44
+ /** @internal */
45
+ _getTransitionTargets(): {
46
+ labelViewport: HTMLElement | null;
47
+ labelTrack: HTMLElement | null;
48
+ label: HTMLElement | null;
49
+ suffix: HTMLElement | null;
50
+ };
51
+ /** @internal */
52
+ _hover(hovered: boolean): void;
53
+ /** @internal */
54
+ _configure({ scrollLeft, ...configuration }: WorkspaceHeaderConfiguration & {
55
+ scrollLeft: number;
56
+ }): void;
57
+ /** @internal */
58
+ _scroll(scrollLeft: number): void;
59
+ /** @internal */
60
+ _bindScroll(source: HTMLElement | undefined, extent: number): void;
61
+ }
@@ -0,0 +1,5 @@
1
+ // src/workspace/panel-header/panel-header.css?inline
2
+ var e = ":host{--min-height: calc(var(--nve-ref-size-1000) + var(--nve-ref-size-200));--padding: var(--nve-ref-size-300) var(--nve-ref-size-400);--prefix-padding: 0;--prefix-border: none;--suffix-padding: initial;--suffix-border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);--gap: var(--nve-ref-space-xs);--border-bottom: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);--font-size: var(--nve-ref-font-size-100);--font-weight: var(--nve-ref-font-weight-medium);--color: var(--nve-sys-text-muted-color);--text-transform: initial;display:block;position:absolute;inset:0;pointer-events:none;contain:none}:host(:state(selected)){--color: var(--nve-sys-text-emphasis-color);--font-weight: var(--nve-ref-font-weight-semibold)}:host(:is(:hover,:state(tab-hover)):not(:state(selected))){--color: var(--nve-sys-text-emphasis-color)}[internal-host]{position:relative;height:100%}.label-viewport{position:absolute;top:0;overflow:hidden;pointer-events:none}.label-track{transform:translate(var(--_workspace-tab-scroll, 0));position:absolute;inset:0}.label{position:absolute;top:0;overflow:hidden;box-sizing:border-box;display:flex;align-items:center}.label[data-animate]{transition:left var(--animation-duration) var(--animation-easing),width var(--animation-duration) var(--animation-easing)}.label-content{padding:var(--padding);min-height:var(--min-height);box-sizing:border-box;color:var(--color);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--nve-ref-font-size-500);text-transform:var(--text-transform);display:inline-flex;align-items:center;gap:var(--gap);white-space:nowrap;width:100%}slot[name=prefix]{flex:none;display:inline-flex;align-items:center;gap:var(--gap);padding:var(--prefix-padding)}slot[name=prefix][data-empty]{display:none}slot[name=prefix]:not([data-empty]){border-inline-end:var(--prefix-border)}.title-content{display:block;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.title-content slot{display:contents}.suffix{position:absolute;inset:0 0 0 auto;display:flex;align-items:center;width:max-content;pointer-events:auto;box-sizing:border-box;z-index:3}.suffix[data-inactive]{visibility:hidden;pointer-events:none}.suffix-content{min-height:var(--min-height);box-sizing:border-box;display:flex;align-items:center;width:max-content;padding:var(--suffix-padding, var(--header-control-inset, var(--nve-ref-size-100)));gap:var(--gap)}.suffix[data-group-actions] .suffix-content{padding:var( --suffix-padding, var(--header-control-inset, var(--nve-ref-size-100)) 0 var(--header-control-inset, var(--nve-ref-size-100)) var(--header-control-inset, var(--nve-ref-size-100)) )}.suffix:not([data-empty]) .suffix-content{border-inline-start:var(--suffix-border);border-inline-start-color:transparent}.suffix:not([data-empty]):before{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;border-inline-start:var(--suffix-border);pointer-events:none}.suffix[data-empty] .suffix-content{min-height:0;padding:0}.separator{position:absolute;left:0;right:0;border-top:var(--border-bottom);z-index:1;pointer-events:none}";
3
+ export { e as default };
4
+
5
+ //# sourceMappingURL=panel-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-header.js","names":["panel_header_default"],"sources":["../../../src/workspace/panel-header/panel-header.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --min-height: calc(var(--nve-ref-size-1000) + var(--nve-ref-size-200));\n --padding: var(--nve-ref-size-300) var(--nve-ref-size-400);\n --prefix-padding: 0;\n --prefix-border: none;\n --suffix-padding: initial;\n --suffix-border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --gap: var(--nve-ref-space-xs);\n --border-bottom: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --font-size: var(--nve-ref-font-size-100);\n --font-weight: var(--nve-ref-font-weight-medium);\n --color: var(--nve-sys-text-muted-color);\n --text-transform: initial;\n display: block;\n position: absolute;\n inset: 0;\n pointer-events: none;\n contain: none;\n}\n\n:host(:state(selected)) {\n --color: var(--nve-sys-text-emphasis-color);\n --font-weight: var(--nve-ref-font-weight-semibold);\n}\n\n:host(:is(:hover, :state(tab-hover)):not(:state(selected))) {\n --color: var(--nve-sys-text-emphasis-color);\n}\n\n[internal-host] {\n position: relative;\n height: 100%;\n}\n\n.label-viewport {\n position: absolute;\n top: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.label-track {\n transform: translateX(var(--_workspace-tab-scroll, 0));\n position: absolute;\n inset: 0;\n}\n\n.label {\n position: absolute;\n top: 0;\n overflow: hidden;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n}\n\n.label[data-animate] {\n transition:\n left var(--animation-duration) var(--animation-easing),\n width var(--animation-duration) var(--animation-easing);\n}\n\n.label-content {\n padding: var(--padding);\n min-height: var(--min-height);\n box-sizing: border-box;\n color: var(--color);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n line-height: var(--nve-ref-font-size-500);\n text-transform: var(--text-transform);\n display: inline-flex;\n align-items: center;\n gap: var(--gap);\n white-space: nowrap;\n width: 100%;\n}\n\nslot[name='prefix'] {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--gap);\n padding: var(--prefix-padding);\n}\n\nslot[name='prefix'][data-empty] {\n display: none;\n}\n\nslot[name='prefix']:not([data-empty]) {\n border-inline-end: var(--prefix-border);\n}\n\n.title-content {\n display: block;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.title-content slot {\n display: contents;\n}\n\n.suffix {\n position: absolute;\n inset: 0 0 0 auto;\n display: flex;\n align-items: center;\n width: max-content;\n pointer-events: auto;\n box-sizing: border-box;\n z-index: 3;\n}\n\n.suffix[data-inactive] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.suffix-content {\n min-height: var(--min-height);\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: max-content;\n padding: var(--suffix-padding, var(--header-control-inset, var(--nve-ref-size-100)));\n gap: var(--gap);\n}\n\n.suffix[data-group-actions] .suffix-content {\n padding: var(\n --suffix-padding,\n var(--header-control-inset, var(--nve-ref-size-100)) 0 var(--header-control-inset, var(--nve-ref-size-100))\n var(--header-control-inset, var(--nve-ref-size-100))\n );\n}\n\n.suffix:not([data-empty]) .suffix-content {\n border-inline-start: var(--suffix-border);\n border-inline-start-color: transparent;\n}\n\n.suffix:not([data-empty])::before {\n content: '';\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n border-inline-start: var(--suffix-border);\n pointer-events: none;\n}\n\n.suffix[data-empty] .suffix-content {\n min-height: 0;\n padding: 0;\n}\n\n.separator {\n position: absolute;\n left: 0;\n right: 0;\n border-top: var(--border-bottom);\n z-index: 1;\n pointer-events: none;\n}\n"],"mappings":""}
@@ -0,0 +1,102 @@
1
+ import { attachInternals as e } from "../../internal/utils/a11y.js";
2
+ import { hostAttr as t } from "../../internal/decorators/host-attr.js";
3
+ import { useStyles as n } from "../../internal/styles/index.js";
4
+ import r from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
5
+ import { sameHeaderConfiguration as i } from "../utils/presentation/header-configuration.utils.js";
6
+ import a from "./panel-header.js";
7
+ import { LitElement as o, html as s, isServer as c } from "lit";
8
+ import { state as l } from "lit/decorators/state.js";
9
+ // src/workspace/panel-header/panel-header.ts
10
+ var u = class extends o {
11
+ constructor(...e) {
12
+ super(...e), this.slot = "header", this.configuration = {
13
+ selected: !1,
14
+ offset: 0,
15
+ animate: !1,
16
+ tabWidth: 0,
17
+ headerHeight: 0,
18
+ suffixEnd: 0,
19
+ clipLeft: 0,
20
+ clipWidth: 0
21
+ }, this.#t = 0;
22
+ }
23
+ static {
24
+ this.styles = n([a]);
25
+ }
26
+ static {
27
+ this.metadata = {
28
+ tag: "nve-workspace-panel-header",
29
+ version: "2.23.0",
30
+ parents: ["nve-workspace-panel"]
31
+ };
32
+ }
33
+ #e;
34
+ #t;
35
+ #n;
36
+ connectedCallback() {
37
+ super.connectedCallback(), e(this);
38
+ }
39
+ disconnectedCallback() {
40
+ super.disconnectedCallback(), this._bindScroll(void 0, 0);
41
+ }
42
+ updated() {
43
+ this.#i();
44
+ }
45
+ render() {
46
+ let { selected: e, offset: t, animate: n, tabWidth: r, headerHeight: i, suffixEnd: a, clipLeft: o, clipWidth: l } = this.configuration;
47
+ return s`<div internal-host><div class="label-viewport" aria-hidden="true" style="${`left:${o}px;width:${l}px;height:${i}px`}"><div class="label-track"><div class="label" ?data-animate="${n}" style="${`left:${t - o}px;width:${r}px;height:${i}px`}"><span class="label-content"><slot name="prefix" ?data-empty="${!c && !this.querySelector(":scope > [slot=\"prefix\"]")}" @slotchange="${() => this.requestUpdate()}"></slot><span class="title-content"><slot @slotchange="${() => this.requestUpdate()}"></slot>${this.#a() ? null : this.parentElement?.id}</span></span></div></div></div>${e ? s`<div class="separator" style="${`top:${i}px`}" aria-hidden="true"></div>` : null}<div class="suffix" ?data-group-actions="${a > 0}" style="${`height:${i}px;right:${a}px`}" aria-hidden="${!e}" ?inert="${!e}" ?data-inactive="${!e}" ?data-empty="${!c && !this.querySelector(":scope > [slot=\"suffix\"]")}"><div class="suffix-content"><slot name="suffix" @slotchange="${() => this.requestUpdate()}"></slot></div></div></div>`;
48
+ }
49
+ _getMeasurementTargets() {
50
+ return {
51
+ label: this.shadowRoot?.querySelector(".label-content") ?? null,
52
+ suffix: this.shadowRoot?.querySelector(".suffix-content") ?? null
53
+ };
54
+ }
55
+ _getTransitionTargets() {
56
+ return {
57
+ labelViewport: this.shadowRoot?.querySelector(".label-viewport") ?? null,
58
+ labelTrack: this.shadowRoot?.querySelector(".label-track") ?? null,
59
+ label: this.shadowRoot?.querySelector(".label") ?? null,
60
+ suffix: this.shadowRoot?.querySelector(".suffix") ?? null
61
+ };
62
+ }
63
+ _hover(e) {
64
+ e ? this._internals.states.add("tab-hover") : this._internals.states.delete("tab-hover");
65
+ }
66
+ _configure({ scrollLeft: e, ...t }) {
67
+ this._scroll(e), !i(this.configuration, t) && (t.selected ? this._internals.states.add("selected") : this._internals.states.delete("selected"), this.configuration = t);
68
+ }
69
+ _scroll(e) {
70
+ this.#n || this.style.setProperty("--_workspace-tab-scroll", `${-e}px`);
71
+ }
72
+ _bindScroll(e, t) {
73
+ e === this.#e && t === this.#t || this.#r(e, t) || (this.#n?.cancel(), this.#n = void 0, this.#e = e, this.#t = t, this.#i(), this.#n || this._scroll(e?.scrollLeft ?? 0));
74
+ }
75
+ #r(e, t) {
76
+ if (e !== this.#e || t <= 0) return !1;
77
+ let n = this.#n?.effect;
78
+ return n instanceof KeyframeEffect && (this.#t = t, n.setKeyframes(d(t)), !0);
79
+ }
80
+ #i() {
81
+ if (this.#n || !this.#e || this.#t <= 0 || typeof ScrollTimeline > "u") return;
82
+ let e = this.shadowRoot?.querySelector(".label-track");
83
+ e && (this.#n = e.animate(d(this.#t), {
84
+ timeline: new ScrollTimeline({
85
+ source: this.#e,
86
+ axis: "x"
87
+ }),
88
+ fill: "both",
89
+ easing: "linear"
90
+ }));
91
+ }
92
+ #a() {
93
+ return c ? !0 : [...this.childNodes].some((e) => (!(e instanceof Element) || !e.hasAttribute("slot")) && !!e.textContent?.trim());
94
+ }
95
+ };
96
+ r([t()], u.prototype, "slot", void 0), r([l()], u.prototype, "configuration", void 0);
97
+ function d(e) {
98
+ return [{ transform: "translateX(0px)" }, { transform: `translateX(${-e}px)` }];
99
+ }
100
+ export { u as WorkspacePanelHeader };
101
+
102
+ //# sourceMappingURL=panel-header2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-header2.js","names":["styles","_decorate","__decorate","panel_header_default","WorkspacePanelHeader","LitElement","_args","#scrollExtent","useStyles","attachInternals","#bindScrollAnimation","clipLeft","clipWidth","headerHeight","animate","offset","tabWidth","isServer","#hasTitle","selected","suffixEnd","hovered","configuration","scrollLeft","#scrollAnimation","source","#scrollSource","extent","#updateScrollExtent","effect","scrollKeyframes","track","node","hostAttr","state"],"sources":["../../../src/workspace/panel-header/panel-header.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, isServer, LitElement } from 'lit';\nimport { state } from 'lit/decorators/state.js';\n\nimport { attachInternals, hostAttr, useStyles } from '@nvidia-elements/core/internal';\n\nimport { sameHeaderConfiguration } from '../utils/presentation/header-configuration.utils.js';\n\nimport type { WorkspaceHeaderConfiguration } from '../utils/presentation/header-configuration.utils.js';\n\nimport styles from './panel-header.css?inline';\n\n/**\n * @element nve-workspace-panel-header\n * @description Supplies a workspace panel title, decoration, and application controls.\n * @documentation https://nvidia.github.io/elements/docs/elements/workspace/\n * @since 0.0.0\n * @stable false\n * @entrypoint \\@nvidia-elements/core/workspace\n * @slot - Noninteractive panel title.\n * @slot prefix - Noninteractive title decoration.\n * @slot suffix - Application controls for the selected panel.\n * @cssprop --min-height\n * @cssprop --padding - Padding around the title.\n * @cssprop --prefix-padding - Padding around title decoration.\n * @cssprop --prefix-border - Border after title decoration.\n * @cssprop --suffix-padding - Override the shared inset around header controls.\n * @cssprop --suffix-border - Border before header controls.\n * @cssprop --gap\n * @cssprop --border-bottom\n */\nexport class WorkspacePanelHeader extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = { tag: 'nve-workspace-panel-header', version: '0.0.0', parents: ['nve-workspace-panel'] };\n\n /** @private */\n @hostAttr() slot = 'header';\n\n /** @private */\n declare _internals: ElementInternals;\n\n @state() private configuration: WorkspaceHeaderConfiguration = {\n selected: false,\n offset: 0,\n animate: false,\n tabWidth: 0,\n headerHeight: 0,\n suffixEnd: 0,\n clipLeft: 0,\n clipWidth: 0\n };\n\n #scrollSource?: HTMLElement;\n #scrollExtent = 0;\n #scrollAnimation?: Animation;\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._bindScroll(undefined, 0);\n }\n\n protected updated() {\n this.#bindScrollAnimation();\n }\n\n render() {\n const { selected, offset, animate, tabWidth, headerHeight, suffixEnd, clipLeft, clipWidth } = this.configuration;\n return html`\n <div internal-host>\n <div\n class=\"label-viewport\"\n aria-hidden=\"true\"\n style=${`left:${clipLeft}px;width:${clipWidth}px;height:${headerHeight}px`}>\n <div class=\"label-track\">\n <div\n class=\"label\"\n ?data-animate=${animate}\n style=${`left:${offset - clipLeft}px;width:${tabWidth}px;height:${headerHeight}px`}>\n <span class=\"label-content\">\n <slot\n name=\"prefix\"\n ?data-empty=${!isServer && !this.querySelector(':scope > [slot=\"prefix\"]')}\n @slotchange=${() => this.requestUpdate()}></slot>\n <span class=\"title-content\"><slot @slotchange=${() => this.requestUpdate()}></slot>${this.#hasTitle() ? null : this.parentElement?.id}</span>\n </span>\n </div>\n </div>\n </div>\n ${\n selected\n ? html`\n <div class=\"separator\" style=${`top:${headerHeight}px`} aria-hidden=\"true\"></div>\n `\n : null\n }\n <div\n class=\"suffix\"\n ?data-group-actions=${suffixEnd > 0}\n style=${`height:${headerHeight}px;right:${suffixEnd}px`}\n aria-hidden=${!selected}\n ?inert=${!selected}\n ?data-inactive=${!selected}\n ?data-empty=${!isServer && !this.querySelector(':scope > [slot=\"suffix\"]')}>\n <div class=\"suffix-content\"><slot name=\"suffix\" @slotchange=${() => this.requestUpdate()}></slot></div>\n </div>\n </div>\n `;\n }\n\n /** @internal */\n _getMeasurementTargets() {\n return {\n label: this.shadowRoot?.querySelector<HTMLElement>('.label-content') ?? null,\n suffix: this.shadowRoot?.querySelector<HTMLElement>('.suffix-content') ?? null\n };\n }\n\n /** @internal */\n _getTransitionTargets() {\n return {\n labelViewport: this.shadowRoot?.querySelector<HTMLElement>('.label-viewport') ?? null,\n labelTrack: this.shadowRoot?.querySelector<HTMLElement>('.label-track') ?? null,\n label: this.shadowRoot?.querySelector<HTMLElement>('.label') ?? null,\n suffix: this.shadowRoot?.querySelector<HTMLElement>('.suffix') ?? null\n };\n }\n\n /** @internal */\n _hover(hovered: boolean) {\n if (hovered) this._internals.states.add('tab-hover');\n else this._internals.states.delete('tab-hover');\n }\n\n /** @internal */\n _configure({ scrollLeft, ...configuration }: WorkspaceHeaderConfiguration & { scrollLeft: number }) {\n this._scroll(scrollLeft);\n if (sameHeaderConfiguration(this.configuration, configuration)) return;\n if (configuration.selected) this._internals.states.add('selected');\n else this._internals.states.delete('selected');\n this.configuration = configuration;\n }\n\n /** @internal */\n _scroll(scrollLeft: number) {\n // ScrollTimeline fallback; remove after wider adoption of Firefox 159.\n if (!this.#scrollAnimation) this.style.setProperty('--_workspace-tab-scroll', `${-scrollLeft}px`);\n }\n\n /** @internal */\n _bindScroll(source: HTMLElement | undefined, extent: number) {\n if (source === this.#scrollSource && extent === this.#scrollExtent) return;\n if (this.#updateScrollExtent(source, extent)) return;\n this.#scrollAnimation?.cancel();\n this.#scrollAnimation = undefined;\n this.#scrollSource = source;\n this.#scrollExtent = extent;\n this.#bindScrollAnimation();\n if (!this.#scrollAnimation) this._scroll(source?.scrollLeft ?? 0);\n }\n\n #updateScrollExtent(source: HTMLElement | undefined, extent: number) {\n if (source !== this.#scrollSource || extent <= 0) return false;\n const effect = this.#scrollAnimation?.effect;\n if (!(effect instanceof KeyframeEffect)) return false;\n this.#scrollExtent = extent;\n effect.setKeyframes(scrollKeyframes(extent));\n return true;\n }\n\n #bindScrollAnimation() {\n if (\n this.#scrollAnimation ||\n !this.#scrollSource ||\n this.#scrollExtent <= 0 ||\n typeof ScrollTimeline === 'undefined'\n )\n return;\n const track = this.shadowRoot?.querySelector<HTMLElement>('.label-track');\n if (!track) return;\n this.#scrollAnimation = track.animate(scrollKeyframes(this.#scrollExtent), {\n timeline: new ScrollTimeline({ source: this.#scrollSource, axis: 'x' }),\n fill: 'both',\n easing: 'linear'\n });\n }\n\n #hasTitle() {\n if (isServer) return true;\n return [...this.childNodes].some(\n node => (!(node instanceof Element) || !node.hasAttribute('slot')) && !!node.textContent?.trim()\n );\n }\n}\n\nfunction scrollKeyframes(extent: number) {\n return [{ transform: 'translateX(0px)' }, { transform: `translateX(${-extent}px)` }];\n}\n"],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { Dimensions, Point, Rect } from '@nvidia-elements/core/internal';
2
+ import type { WorkspaceBoundary, WorkspacePlacedRegion } from './geometry/allocation.utils.js';
3
+ import type { WorkspaceDragPreview } from './interaction/drag-preview.utils.js';
4
+ import type { WorkspaceLayout, WorkspaceNode } from './model/layout.utils.js';
5
+ import type { WorkspacePresentedGroup, WorkspaceTarget } from './presentation/groups.utils.js';
6
+ import type { WorkspaceMeasurements } from './presentation/measurements.utils.js';
7
+ import type { WorkspacePanel } from '../panel/panel.js';
8
+ interface WorkspaceEvaluationInputs {
9
+ panels: WorkspacePanel[];
10
+ layout: WorkspaceLayout;
11
+ source: string[];
12
+ measurements: WorkspaceMeasurements;
13
+ policy: 'stop' | 'propagate';
14
+ strip(group: WorkspacePresentedGroup): HTMLElement | null | undefined;
15
+ }
16
+ export interface WorkspaceGeometry {
17
+ groups: WorkspacePresentedGroup[];
18
+ boundaries: WorkspaceBoundary[];
19
+ regions: WorkspacePlacedRegion[];
20
+ width: number;
21
+ height: number;
22
+ minimum: Dimensions;
23
+ }
24
+ export interface WorkspaceEvaluationDelegate {
25
+ readonly getCurrentLayout: () => WorkspaceLayout;
26
+ readonly getCurrentMeasurements: () => WorkspaceMeasurements;
27
+ readonly getCurrentPreview: () => WorkspaceDragPreview | undefined;
28
+ readonly getFullscreenTarget: () => string | undefined;
29
+ readonly getResizePreview: () => WorkspaceLayout | undefined;
30
+ }
31
+ export interface WorkspacePlacementCatalog {
32
+ targets: WorkspaceTarget[];
33
+ regions: WorkspacePlacedRegion[];
34
+ orderingRegions?: WorkspacePlacedRegion[];
35
+ sourceSlot?: Rect;
36
+ headers?: Rect[];
37
+ preview?: WorkspaceDragPreview;
38
+ bounds: Rect;
39
+ headerTarget?: WorkspaceTarget;
40
+ reservationHit?: WorkspaceReservationHit;
41
+ }
42
+ type WorkspaceReservationHit = 'group' | 'tab';
43
+ /** Shares layout inputs and browser reads within one synchronous evaluation. */
44
+ export declare class WorkspaceEvaluation {
45
+ #private;
46
+ readonly panels: WorkspacePanel[];
47
+ readonly available: string[];
48
+ readonly requirements: import("./geometry/sizing.utils.js").WorkspaceRequirements;
49
+ readonly projectLayout: import("./model/projection.utils.js").WorkspaceLayoutProjector;
50
+ readonly contextRect: import("./placement/context.utils.js").WorkspaceContextRectResolver;
51
+ constructor(host: HTMLElement, inputs: WorkspaceEvaluationInputs, delegate?: WorkspaceEvaluationDelegate);
52
+ minimum(node: WorkspaceNode | null): Dimensions;
53
+ project(layout: WorkspaceLayout): WorkspaceLayout;
54
+ geometry(layout: WorkspaceLayout, extent?: WorkspaceLayout): WorkspaceGeometry;
55
+ detached(source: string[]): WorkspaceGeometry;
56
+ nonOrderGeometry(source: string[]): WorkspaceGeometry;
57
+ targetCatalog(source: string[], allocation?: WorkspaceGeometry): {
58
+ gap: number;
59
+ regions: WorkspacePlacedRegion[];
60
+ orderingRegions: WorkspacePlacedRegion[];
61
+ sourceSlot: Rect | undefined;
62
+ preview: WorkspaceDragPreview | undefined;
63
+ headers: Rect[];
64
+ targets: {
65
+ panels: string[];
66
+ rect: Rect;
67
+ headerHeight: number;
68
+ tabs: never[];
69
+ }[];
70
+ bounds: Rect;
71
+ };
72
+ getPlacementCatalog(source: string[], point: Point): WorkspacePlacementCatalog;
73
+ bounds(): Rect;
74
+ client(rect: Rect): {
75
+ width: number;
76
+ height: number;
77
+ x: number;
78
+ y: number;
79
+ };
80
+ scroll(group: WorkspacePresentedGroup): number;
81
+ presentationGeometry(): WorkspaceGeometry;
82
+ }
83
+ export {};