@nvidia-elements/core 2.7.3 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +8 -0
- package/dist/_virtual/{_@oxc-project_runtime@0.139.0 → _@oxc-project_runtime@0.147.0}/helpers/esm/decorate.js +1 -1
- package/dist/accordion/accordion.examples.json +9 -9
- package/dist/accordion/accordion2.js +5 -5
- package/dist/accordion/accordion2.js.map +1 -1
- package/dist/alert/alert-group2.js +2 -2
- package/dist/alert/alert-group2.js.map +1 -1
- package/dist/alert/alert.examples.json +3 -3
- package/dist/alert/alert2.js +2 -2
- package/dist/alert/alert2.js.map +1 -1
- package/dist/avatar/avatar-group2.js +1 -1
- package/dist/avatar/avatar-group2.js.map +1 -1
- package/dist/avatar/avatar2.js +2 -2
- package/dist/avatar/avatar2.js.map +1 -1
- package/dist/badge/badge.examples.json +2 -2
- package/dist/badge/badge2.js +2 -2
- package/dist/badge/badge2.js.map +1 -1
- package/dist/breadcrumb/breadcrumb.examples.json +1 -1
- package/dist/breadcrumb/breadcrumb2.js +2 -2
- package/dist/breadcrumb/breadcrumb2.js.map +1 -1
- package/dist/bundles/index.d.ts +8 -0
- package/dist/bundles/index.js +6 -6
- package/dist/button/button.examples.json +3 -3
- package/dist/button/button2.js +2 -2
- package/dist/button/button2.js.map +1 -1
- package/dist/button-group/button-group2.js +2 -2
- package/dist/button-group/button-group2.js.map +1 -1
- package/dist/card/card.examples.json +2 -2
- package/dist/card/card2.js +5 -5
- package/dist/card/card2.js.map +1 -1
- package/dist/chat-message/chat-message.examples.json +4 -4
- package/dist/chat-message/chat-message2.js +2 -2
- package/dist/chat-message/chat-message2.js.map +1 -1
- package/dist/checkbox/checkbox-group2.js +2 -2
- package/dist/checkbox/checkbox-group2.js.map +1 -1
- package/dist/checkbox/checkbox2.js +2 -2
- package/dist/checkbox/checkbox2.js.map +1 -1
- package/dist/color/color2.js +2 -2
- package/dist/color/color2.js.map +1 -1
- package/dist/combobox/combobox.examples.js.map +1 -1
- package/dist/combobox/combobox.examples.json +5 -5
- package/dist/combobox/combobox2.js +7 -5
- package/dist/combobox/combobox2.js.map +1 -1
- package/dist/copy-button/copy-button.examples.json +2 -2
- package/dist/copy-button/copy-button2.js +2 -2
- package/dist/copy-button/copy-button2.js.map +1 -1
- package/dist/custom-elements-jsx.d.ts +5 -1
- package/dist/custom-elements-vue.d.ts +5 -1
- package/dist/custom-elements.json +50 -34
- package/dist/data.html.json +2 -2
- package/dist/date/date2.js +2 -2
- package/dist/date/date2.js.map +1 -1
- package/dist/datetime/datetime2.js +2 -2
- package/dist/datetime/datetime2.js.map +1 -1
- package/dist/dialog/dialog-footer2.js +2 -2
- package/dist/dialog/dialog-footer2.js.map +1 -1
- package/dist/dialog/dialog-header2.js +2 -2
- package/dist/dialog/dialog-header2.js.map +1 -1
- package/dist/dialog/dialog.examples.json +3 -3
- package/dist/dialog/dialog2.js +2 -2
- package/dist/dialog/dialog2.js.map +1 -1
- package/dist/divider/divider.examples.json +1 -1
- package/dist/divider/divider2.js +2 -2
- package/dist/divider/divider2.js.map +1 -1
- package/dist/dot/dot2.js +2 -2
- package/dist/dot/dot2.js.map +1 -1
- package/dist/drawer/drawer-content2.js +2 -2
- package/dist/drawer/drawer-content2.js.map +1 -1
- package/dist/drawer/drawer-footer2.js +2 -2
- package/dist/drawer/drawer-footer2.js.map +1 -1
- package/dist/drawer/drawer-header2.js +2 -2
- package/dist/drawer/drawer-header2.js.map +1 -1
- package/dist/drawer/drawer2.js +2 -2
- package/dist/drawer/drawer2.js.map +1 -1
- package/dist/dropdown/dropdown-footer2.js +2 -2
- package/dist/dropdown/dropdown-footer2.js.map +1 -1
- package/dist/dropdown/dropdown-header2.js +2 -2
- package/dist/dropdown/dropdown-header2.js.map +1 -1
- package/dist/dropdown/dropdown2.js +2 -2
- package/dist/dropdown/dropdown2.js.map +1 -1
- package/dist/dropdown-group/dropdown-group.examples.json +4 -4
- package/dist/dropdown-group/dropdown-group.js +2 -2
- package/dist/dropdown-group/dropdown-group.js.map +1 -1
- package/dist/dropzone/dropzone.examples.json +1 -1
- package/dist/dropzone/dropzone2.js +2 -2
- package/dist/dropzone/dropzone2.js.map +1 -1
- package/dist/file/file2.js +1 -1
- package/dist/file/file2.js.map +1 -1
- package/dist/format-bytes/format-bytes2.js +2 -2
- package/dist/format-bytes/format-bytes2.js.map +1 -1
- package/dist/format-datetime/format-datetime.examples.json +3 -3
- package/dist/format-datetime/format-datetime2.js +2 -2
- package/dist/format-datetime/format-datetime2.js.map +1 -1
- package/dist/format-number/format-number2.js +2 -2
- package/dist/format-number/format-number2.js.map +1 -1
- package/dist/format-relative-time/format-relative-time2.js +2 -2
- package/dist/format-relative-time/format-relative-time2.js.map +1 -1
- package/dist/format-truncate/format-truncate.examples.json +4 -4
- package/dist/format-truncate/format-truncate2.js +2 -2
- package/dist/format-truncate/format-truncate2.js.map +1 -1
- package/dist/forms/actions.examples.json +1 -1
- package/dist/forms/control/control.examples.json +1 -1
- package/dist/forms/control/control2.js +2 -2
- package/dist/forms/control/control2.js.map +1 -1
- package/dist/forms/control-group/control-group2.js +2 -2
- package/dist/forms/control-group/control-group2.js.map +1 -1
- package/dist/forms/control-message/control-message2.js +2 -2
- package/dist/forms/control-message/control-message2.js.map +1 -1
- package/dist/forms/validation.examples.js.map +1 -1
- package/dist/gauge/gauge.examples.json +2 -2
- package/dist/gauge/gauge2.js +2 -2
- package/dist/gauge/gauge2.js.map +1 -1
- package/dist/grid/cell/cell2.js +1 -1
- package/dist/grid/cell/cell2.js.map +1 -1
- package/dist/grid/column/column2.js +2 -2
- package/dist/grid/column/column2.js.map +1 -1
- package/dist/grid/footer/footer2.js +2 -2
- package/dist/grid/footer/footer2.js.map +1 -1
- package/dist/grid/grid.examples.js.map +1 -1
- package/dist/grid/grid.examples.json +34 -34
- package/dist/grid/grid2.js +2 -2
- package/dist/grid/grid2.js.map +1 -1
- package/dist/grid/header/header2.js +2 -2
- package/dist/grid/header/header2.js.map +1 -1
- package/dist/grid/placeholder/placeholder2.js +1 -1
- package/dist/grid/placeholder/placeholder2.js.map +1 -1
- package/dist/grid/row/row2.js +2 -2
- package/dist/grid/row/row2.js.map +1 -1
- package/dist/icon/icon2.js +3 -3
- package/dist/icon/icon2.js.map +1 -1
- package/dist/icon-button/icon-button2.js +2 -2
- package/dist/icon-button/icon-button2.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input-group2.js.map +1 -1
- package/dist/input/input2.js +2 -2
- package/dist/input/input2.js.map +1 -1
- package/dist/internal/controllers/audit.controller.js +9 -7
- package/dist/internal/controllers/audit.controller.js.map +1 -1
- package/dist/internal/controllers/gesture.controller.examples.js.map +1 -1
- package/dist/internal/controllers/gesture.controller.js +1 -3
- package/dist/internal/controllers/gesture.controller.js.map +1 -1
- package/dist/internal/controllers/i18n.controller.examples.js.map +1 -1
- package/dist/internal/controllers/i18n.controller.js.map +1 -1
- package/dist/internal/controllers/keynav-grid.controller.examples.json +1 -1
- package/dist/internal/controllers/keynav-grid.controller.js.map +1 -1
- package/dist/internal/controllers/keynav-list.controller.examples.json +1 -1
- package/dist/internal/controllers/keynav-list.controller.js +1 -4
- package/dist/internal/controllers/keynav-list.controller.js.map +1 -1
- package/dist/internal/controllers/keynav-spatial.controller.js.map +1 -1
- package/dist/internal/controllers/popover.examples.json +2 -2
- package/dist/internal/controllers/state-scroll.controller.js.map +1 -1
- package/dist/internal/controllers/type-anchor.controller.js.map +1 -1
- package/dist/internal/controllers/type-closable.controller.js.map +1 -1
- package/dist/internal/controllers/type-expandable.controller.js.map +1 -1
- package/dist/internal/controllers/type-native-popover.controller.js.map +1 -1
- package/dist/internal/controllers/type-native-popover.utils.js +2 -2
- package/dist/internal/controllers/type-native-popover.utils.js.map +1 -1
- package/dist/internal/controllers/type-selectable.controller.js.map +1 -1
- package/dist/internal/controllers/type-ssr.controller.js.map +1 -1
- package/dist/internal/services/global.service.js +1 -1
- package/dist/internal/services/global.utils.js.map +1 -1
- package/dist/internal/services/log.service.js.map +1 -1
- package/dist/internal/services/transition.service.js.map +1 -1
- package/dist/internal/utils/dom.js +2 -1
- package/dist/internal/utils/dom.js.map +1 -1
- package/dist/internal/utils/strings.js +1 -1
- package/dist/internal/utils/strings.js.map +1 -1
- package/dist/logo/logo.examples.json +1 -1
- package/dist/logo/logo2.js +2 -2
- package/dist/logo/logo2.js.map +1 -1
- package/dist/menu/menu-item2.js +2 -2
- package/dist/menu/menu-item2.js.map +1 -1
- package/dist/menu/menu.examples.js.map +1 -1
- package/dist/menu/menu.examples.json +4 -4
- package/dist/menu/menu2.js +2 -2
- package/dist/menu/menu2.js.map +1 -1
- package/dist/month/month2.js +2 -2
- package/dist/month/month2.js.map +1 -1
- package/dist/notification/notification-group2.js +2 -2
- package/dist/notification/notification-group2.js.map +1 -1
- package/dist/notification/notification.examples.json +3 -3
- package/dist/notification/notification2.js +2 -2
- package/dist/notification/notification2.js.map +1 -1
- package/dist/page/page-panel/page-panel-content2.js +1 -1
- package/dist/page/page-panel/page-panel-content2.js.map +1 -1
- package/dist/page/page-panel/page-panel-footer2.js +2 -2
- package/dist/page/page-panel/page-panel-footer2.js.map +1 -1
- package/dist/page/page-panel/page-panel-header2.js +2 -2
- package/dist/page/page-panel/page-panel-header2.js.map +1 -1
- package/dist/page/page-panel/page-panel2.js +2 -2
- package/dist/page/page-panel/page-panel2.js.map +1 -1
- package/dist/page/page.examples.json +10 -10
- package/dist/page/page2.js +2 -2
- package/dist/page/page2.js.map +1 -1
- package/dist/page-header/page-header.examples.json +1 -1
- package/dist/page-header/page-header2.js +1 -1
- package/dist/page-header/page-header2.js.map +1 -1
- package/dist/page-loader/page-loader2.js +2 -2
- package/dist/page-loader/page-loader2.js.map +1 -1
- package/dist/pagination/pagination.examples.json +6 -6
- package/dist/pagination/pagination2.js +2 -2
- package/dist/pagination/pagination2.js.map +1 -1
- package/dist/panel/panel2.js +5 -5
- package/dist/panel/panel2.js.map +1 -1
- package/dist/password/password2.js +2 -2
- package/dist/password/password2.js.map +1 -1
- package/dist/polyfills/index.js +1 -1
- package/dist/polyfills/index.js.map +1 -1
- package/dist/preferences-input/preferences-input.examples.json +1 -1
- package/dist/preferences-input/preferences-input2.js +2 -2
- package/dist/preferences-input/preferences-input2.js.map +1 -1
- package/dist/progress-bar/progress-bar.examples.json +1 -1
- package/dist/progress-bar/progress-bar2.js +2 -2
- package/dist/progress-bar/progress-bar2.js.map +1 -1
- package/dist/progress-ring/progress-ring2.js +2 -2
- package/dist/progress-ring/progress-ring2.js.map +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +2 -2
- package/dist/progressive-filter-chip/progressive-filter-chip2.js.map +1 -1
- package/dist/pulse/pulse2.js +2 -2
- package/dist/pulse/pulse2.js.map +1 -1
- package/dist/radio/radio-group2.js +2 -2
- package/dist/radio/radio-group2.js.map +1 -1
- package/dist/radio/radio2.js +2 -2
- package/dist/radio/radio2.js.map +1 -1
- package/dist/range/range.examples.json +1 -1
- package/dist/range/range2.js +4 -4
- package/dist/range/range2.js.map +1 -1
- package/dist/resize-handle/resize-handle.examples.json +4 -4
- package/dist/resize-handle/resize-handle2.js +2 -2
- package/dist/resize-handle/resize-handle2.js.map +1 -1
- package/dist/search/search2.js +2 -2
- package/dist/search/search2.js.map +1 -1
- package/dist/select/select2.js +2 -2
- package/dist/select/select2.js.map +1 -1
- package/dist/skeleton/skeleton2.js +2 -2
- package/dist/skeleton/skeleton2.js.map +1 -1
- package/dist/sort-button/sort-button2.js +2 -2
- package/dist/sort-button/sort-button2.js.map +1 -1
- package/dist/sparkline/sparkline.examples.json +2 -2
- package/dist/sparkline/sparkline.utils.js +1 -3
- package/dist/sparkline/sparkline.utils.js.map +1 -1
- package/dist/sparkline/sparkline2.js +8 -6
- package/dist/sparkline/sparkline2.js.map +1 -1
- package/dist/star-rating/star-rating2.js +2 -2
- package/dist/star-rating/star-rating2.js.map +1 -1
- package/dist/steps/steps2.js +3 -3
- package/dist/steps/steps2.js.map +1 -1
- package/dist/switch/switch-group2.js +2 -2
- package/dist/switch/switch-group2.js.map +1 -1
- package/dist/switch/switch2.js +2 -2
- package/dist/switch/switch2.js.map +1 -1
- package/dist/tabs/tabs-group2.js +2 -2
- package/dist/tabs/tabs-group2.js.map +1 -1
- package/dist/tabs/tabs.examples.json +4 -4
- package/dist/tabs/tabs2.js +3 -3
- package/dist/tabs/tabs2.js.map +1 -1
- package/dist/tag/tag.d.ts +2 -0
- package/dist/tag/tag.examples.js.map +1 -1
- package/dist/tag/tag.examples.json +20 -3
- package/dist/tag/tag.js +1 -1
- package/dist/tag/tag.js.map +1 -1
- package/dist/tag/tag2.js +3 -3
- package/dist/tag/tag2.js.map +1 -1
- package/dist/textarea/textarea.d.ts +7 -1
- package/dist/textarea/textarea.examples.js.map +1 -1
- package/dist/textarea/textarea.examples.json +22 -0
- package/dist/textarea/textarea.js +1 -1
- package/dist/textarea/textarea.js.map +1 -1
- package/dist/textarea/textarea2.js +10 -3
- package/dist/textarea/textarea2.js.map +1 -1
- package/dist/time/time2.js +2 -2
- package/dist/time/time2.js.map +1 -1
- package/dist/toast/toast.examples.json +1 -1
- package/dist/toast/toast2.js +2 -2
- package/dist/toast/toast2.js.map +1 -1
- package/dist/toggletip/toggletip-footer2.js +2 -2
- package/dist/toggletip/toggletip-footer2.js.map +1 -1
- package/dist/toggletip/toggletip-header2.js +2 -2
- package/dist/toggletip/toggletip-header2.js.map +1 -1
- package/dist/toggletip/toggletip2.js +2 -2
- package/dist/toggletip/toggletip2.js.map +1 -1
- package/dist/toolbar/toolbar2.js +2 -2
- package/dist/toolbar/toolbar2.js.map +1 -1
- package/dist/tooltip/tooltip.examples.js.map +1 -1
- package/dist/tooltip/tooltip.examples.json +2 -2
- package/dist/tooltip/tooltip2.js +2 -2
- package/dist/tooltip/tooltip2.js.map +1 -1
- package/dist/tree/tree-node2.js +2 -2
- package/dist/tree/tree-node2.js.map +1 -1
- package/dist/tree/tree.examples.js.map +1 -1
- package/dist/tree/tree2.js +2 -2
- package/dist/tree/tree2.js.map +1 -1
- package/dist/week/week2.js +2 -2
- package/dist/week/week2.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-panel-content2.js","names":[],"sources":["../../../src/page/page-panel/page-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';\nimport { useStyles } from '@nvidia-elements/core/internal';\nimport styles from './page-panel-content.css?inline';\n\n/**\n * @element nve-page-panel-content\n * @description Contains the scrollable main body content within a page panel region.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - default slot for the page-panel content\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --width\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/region_role\n *\n */\nexport class PagePanelContent extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-panel-content',\n version: '0.0.0'\n };\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;AAoBA,IAAa,IAAb,cAAsC,EAAW;;
|
|
1
|
+
{"version":3,"file":"page-panel-content2.js","names":[],"sources":["../../../src/page/page-panel/page-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';\nimport { useStyles } from '@nvidia-elements/core/internal';\nimport styles from './page-panel-content.css?inline';\n\n/**\n * @element nve-page-panel-content\n * @description Contains the scrollable main body content within a page panel region.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - default slot for the page-panel content\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --width\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/region_role\n *\n */\nexport class PagePanelContent extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-panel-content',\n version: '0.0.0'\n };\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;AAoBA,IAAa,IAAb,cAAsC,EAAW;;EAC/B,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;CAEA,SAAS;EACP,OAAO,CAAI;CAKb;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { hostAttr as e } from "../../internal/decorators/host-attr.js";
|
|
2
2
|
import { useStyles as t } from "../../internal/styles/index.js";
|
|
3
|
-
import n from "../../_virtual/_@oxc-project_runtime@0.
|
|
3
|
+
import n from "../../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
|
|
4
4
|
import r from "./page-panel-footer.js";
|
|
5
5
|
import { LitElement as i, html as a } from "lit";
|
|
6
6
|
//#region src/page/page-panel/page-panel-footer.ts
|
|
@@ -14,7 +14,7 @@ var o = class extends i {
|
|
|
14
14
|
static {
|
|
15
15
|
this.metadata = {
|
|
16
16
|
tag: "nve-page-panel-footer",
|
|
17
|
-
version: "2.
|
|
17
|
+
version: "2.8.1"
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
render() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-panel-footer2.js","names":[],"sources":["../../../src/page/page-panel/page-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';\nimport { hostAttr, useStyles } from '@nvidia-elements/core/internal';\nimport styles from './page-panel-footer.css?inline';\n\n/**\n * @element nve-page-panel-footer\n * @description Provides a fixed action area at the bottom of a page panel for persistent controls or status information.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - default slot for the page-panel footer\n * @cssprop --border-top\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --min-height\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/region_role\n *\n */\nexport class PagePanelFooter extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-panel-footer',\n version: '0.0.0'\n };\n\n /** @private */\n @hostAttr() slot = 'footer';\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;AAqBA,IAAa,IAAb,cAAqC,EAAW;;
|
|
1
|
+
{"version":3,"file":"page-panel-footer2.js","names":[],"sources":["../../../src/page/page-panel/page-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';\nimport { hostAttr, useStyles } from '@nvidia-elements/core/internal';\nimport styles from './page-panel-footer.css?inline';\n\n/**\n * @element nve-page-panel-footer\n * @description Provides a fixed action area at the bottom of a page panel for persistent controls or status information.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - default slot for the page-panel footer\n * @cssprop --border-top\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --min-height\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/region_role\n *\n */\nexport class PagePanelFooter extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-panel-footer',\n version: '0.0.0'\n };\n\n /** @private */\n @hostAttr() slot = 'footer';\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;AAqBA,IAAa,IAAb,cAAqC,EAAW;;EAS3B,aAAA,KAAA,OAAA;;;EARH,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;CAKA,SAAS;EACP,OAAO,CAAI;CAKb;AACF;AATG,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { hostAttr as e } from "../../internal/decorators/host-attr.js";
|
|
2
2
|
import { useStyles as t } from "../../internal/styles/index.js";
|
|
3
|
-
import n from "../../_virtual/_@oxc-project_runtime@0.
|
|
3
|
+
import n from "../../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
|
|
4
4
|
import r from "./page-panel-header.js";
|
|
5
5
|
import { LitElement as i, html as a } from "lit";
|
|
6
6
|
//#region src/page/page-panel/page-panel-header.ts
|
|
@@ -14,7 +14,7 @@ var o = class extends i {
|
|
|
14
14
|
static {
|
|
15
15
|
this.metadata = {
|
|
16
16
|
tag: "nve-page-panel-header",
|
|
17
|
-
version: "2.
|
|
17
|
+
version: "2.8.1"
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
render() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-panel-header2.js","names":[],"sources":["../../../src/page/page-panel/page-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, LitElement } from 'lit';\nimport { hostAttr, useStyles } from '@nvidia-elements/core/internal';\nimport styles from './page-panel-header.css?inline';\n\n/**\n * @element nve-page-panel-header\n * @description Displays the title and contextual controls at the top of a page panel to identify its purpose.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - default slot for the page panel header\n * @cssprop --border-bottom\n * @cssprop --min-height\n * @cssprop --padding\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/region_role\n *\n */\nexport class PagePanelHeader extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-panel-header',\n version: '0.0.0'\n };\n\n /** @private */\n @hostAttr() slot = 'header';\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;AAoBA,IAAa,IAAb,cAAqC,EAAW;;
|
|
1
|
+
{"version":3,"file":"page-panel-header2.js","names":[],"sources":["../../../src/page/page-panel/page-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, LitElement } from 'lit';\nimport { hostAttr, useStyles } from '@nvidia-elements/core/internal';\nimport styles from './page-panel-header.css?inline';\n\n/**\n * @element nve-page-panel-header\n * @description Displays the title and contextual controls at the top of a page panel to identify its purpose.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - default slot for the page panel header\n * @cssprop --border-bottom\n * @cssprop --min-height\n * @cssprop --padding\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/region_role\n *\n */\nexport class PagePanelHeader extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-panel-header',\n version: '0.0.0'\n };\n\n /** @private */\n @hostAttr() slot = 'header';\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;AAoBA,IAAa,IAAb,cAAqC,EAAW;;EAS3B,aAAA,KAAA,OAAA;;;EARH,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;CAKA,SAAS;EACP,OAAO,CAAI;CAKb;AACF;AATG,EAAA,CAAA,EAAS,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA"}
|
|
@@ -4,7 +4,7 @@ import { appendRootNodeStyle as n } from "../../internal/utils/dom.js";
|
|
|
4
4
|
import { attachInternals as r } from "../../internal/utils/a11y.js";
|
|
5
5
|
import { TypeExpandableController as i } from "../../internal/controllers/type-expandable.controller.js";
|
|
6
6
|
import { useStyles as a } from "../../internal/styles/index.js";
|
|
7
|
-
import o from "../../_virtual/_@oxc-project_runtime@0.
|
|
7
|
+
import o from "../../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
|
|
8
8
|
import s from "./page-panel.js";
|
|
9
9
|
import c from "./page-panel.global.js";
|
|
10
10
|
import { LitElement as l, html as u } from "lit";
|
|
@@ -18,7 +18,7 @@ var f = class extends l {
|
|
|
18
18
|
static {
|
|
19
19
|
this.metadata = {
|
|
20
20
|
tag: "nve-page-panel",
|
|
21
|
-
version: "2.
|
|
21
|
+
version: "2.8.1",
|
|
22
22
|
parents: ["nve-page"]
|
|
23
23
|
};
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-panel2.js","names":[
|
|
1
|
+
{"version":3,"file":"page-panel2.js","names":[],"sources":["../../../src/page/page-panel/page-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 type { Size } from '@nvidia-elements/core/internal';\nimport {\n appendRootNodeStyle,\n attachInternals,\n audit,\n I18nController,\n TypeExpandableController,\n useStyles\n} from '@nvidia-elements/core/internal';\nimport styles from './page-panel.css?inline';\nimport globalStyles from './page-panel.global.css?inline';\n\n/**\n * @element nve-page-panel\n * @description Child panel for embedded panels within the page component. Typically used for left/right/bottom page slot positions.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @event open - Dispatched after an invoker command removes `hidden` and opens the panel.\n * @event close - Dispatched after an invoker command sets `hidden` and closes the panel.\n * @slot - `nve-page-panel-content` elements that provide the panel body.\n * @slot actions - slot for action / dismiss buttons\n * @command --open - Removes `hidden` and dispatches `open`.\n * @command --close - Sets `hidden` and dispatches `close`.\n * @command --toggle - Toggles `hidden` and dispatches `open` or `close`.\n * @cssprop --background\n * @cssprop --border\n * @cssprop --color\n * @cssprop --gap\n * @cssprop --padding\n * @cssprop --height\n * @cssprop --width\n * @cssprop --max-width\n * @cssprop --max-height\n * @cssprop --animation-duration - Duration of panel open/close animations\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/region_role\n *\n */\n@audit()\nexport class PagePanel extends LitElement {\n /**\n * Sets the max size of the panel.\n */\n @property({ type: String, reflect: true }) size?: Size;\n\n #i18nController: I18nController<this> = new I18nController<this>(this);\n\n /**\n * Enables updating internal string values for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-panel',\n version: '0.0.0',\n parents: ['nve-page']\n };\n\n constructor() {\n super();\n new TypeExpandableController(this, { useHidden: true });\n }\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <div part=\"_header\">\n <slot name=\"header\"></slot>\n <slot name=\"actions\"></slot>\n </div>\n <div class=\"content\">\n <slot></slot>\n </div>\n <div>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n appendRootNodeStyle(this, globalStyles);\n this._internals.role = 'region';\n }\n}\n"],"mappings":";;;;;;;;;;;;AA4CO,IAAM,IAAN,cAAwB,EAAW;CAMxC;;EAOgB,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,SAAS,CAAC,UAAU;EACtB;;CAEA,cAAc;EAEZ,AADA,MAAM,GAhBgC,KAAA,KAAA,IAAI,EAAqB,IAAI,GAKlC,KAAA,OAAA,KAAK,GAAgB,MAYtD,IAAI,EAAyB,MAAM,EAAE,WAAW,GAAK,CAAC;CACxD;CAKA,SAAS;EACP,OAAO,CAAI;CAcb;CAEA,oBAAoB;EAIlB,AAHA,MAAM,kBAAkB,GACxB,EAAgB,IAAI,GACpB,EAAoB,MAAM,CAAY,GACtC,KAAK,WAAW,OAAO;CACzB;AACF;AAhDG,EAAA,CAAA,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,GAOxC,EAAA,CAAA,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,KAAA,CAAA,GAZ3B,IAAA,EAAA,CAAA,EAAM,CAAA,GAAA,CAAA"}
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
{
|
|
35
35
|
"id": "page-slot-banner",
|
|
36
36
|
"name": "SlotBanner",
|
|
37
|
-
"template": "<nve-page>\n <nve-alert-group slot=\"header\" status=\"warning\" prominence=\"emphasis\" container=\"full\">\n <nve-alert closable
|
|
37
|
+
"template": "<nve-page>\n <nve-alert-group slot=\"header\" status=\"warning\" prominence=\"emphasis\" container=\"full\">\n <nve-alert closable> <span slot=\"prefix\">Warning</span> banner message <a href=\"#\" nve-text=\"link\" slot=\"actions\">view details</a> </nve-alert>\n </nve-alert-group>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n</nve-page>\n",
|
|
38
38
|
"summary": "Warning banner in the header slot above the page header.",
|
|
39
39
|
"description": "",
|
|
40
40
|
"composition": true,
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
{
|
|
143
143
|
"id": "page-invoker-command",
|
|
144
144
|
"name": "InvokerCommand",
|
|
145
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-icon-button
|
|
145
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-icon-button slot=\"suffix\" commandfor=\"invoker-example\" command=\"--toggle\" container=\"flat\" icon-name=\"menu\" aria-label=\"menu\"></nve-icon-button>\n </nve-page-header>\n <nve-page-panel id=\"invoker-example\" slot=\"left\" size=\"sm\" hidden>\n <nve-icon-button commandfor=\"invoker-example\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"cancel\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>\n <p nve-text=\"body\">panel content</p>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n</nve-page>\n",
|
|
146
146
|
"summary": "Use Page Panel with Invoker Command API to dynamically open and close page panels.",
|
|
147
147
|
"description": "",
|
|
148
148
|
"composition": true,
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
{
|
|
152
152
|
"id": "page-panel-expandable",
|
|
153
153
|
"name": "PanelExpandable",
|
|
154
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel id=\"panel-left\" slot=\"left\" size=\"sm\">\n <nve-icon-button
|
|
154
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel id=\"panel-left\" slot=\"left\" size=\"sm\">\n <nve-icon-button commandfor=\"panel-left\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"double-chevron\" direction=\"left\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>left</nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <div nve-layout=\"row gap:xs\">\n <nve-button commandfor=\"panel-left\" command=\"--toggle\">Toggle Left Panel</nve-button>\n <nve-button commandfor=\"panel-right\" command=\"--toggle\">Toggle Right Panel</nve-button>\n <nve-button commandfor=\"panel-bottom\" command=\"--toggle\">Toggle Bottom Panel</nve-button>\n </div>\n </main>\n <nve-page-panel id=\"panel-right\" slot=\"right\" size=\"sm\">\n <nve-icon-button commandfor=\"panel-right\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"double-chevron\" direction=\"right\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel id=\"panel-bottom\" slot=\"bottom\" size=\"sm\">\n <nve-icon-button commandfor=\"panel-bottom\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"double-chevron\" direction=\"down\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
155
155
|
"summary": "Expandable page panels that collapse to a slim strip and toggle open with chevron buttons. Use when panels contain supplementary content that users access intermittently, preserving main content space while keeping panels accessible.",
|
|
156
156
|
"description": "",
|
|
157
157
|
"composition": true,
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
{
|
|
161
161
|
"id": "page-panel-closable",
|
|
162
162
|
"name": "PanelClosable",
|
|
163
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel id=\"panel-left\" slot=\"left\" size=\"sm\">\n <nve-icon-button
|
|
163
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel id=\"panel-left\" slot=\"left\" size=\"sm\">\n <nve-icon-button commandfor=\"panel-left\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"cancel\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>left</nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <div nve-layout=\"row gap:xs\">\n <nve-button commandfor=\"panel-left\" command=\"--toggle\">Toggle Left Panel</nve-button>\n <nve-button commandfor=\"panel-right\" command=\"--toggle\">Toggle Right Panel</nve-button>\n <nve-button commandfor=\"panel-bottom\" command=\"--toggle\">Toggle Bottom Panel</nve-button>\n </div>\n </main>\n <nve-page-panel id=\"panel-right\" slot=\"right\" size=\"sm\">\n <nve-icon-button commandfor=\"panel-right\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"cancel\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel id=\"panel-bottom\" slot=\"bottom\" size=\"sm\">\n <nve-icon-button commandfor=\"panel-bottom\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"cancel\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
164
164
|
"summary": "Closable page panels that fully remove from the layout when dismissed. Use when panels open on demand for temporary tasks like viewing item details or applying filters, and the user needs full main content space when done.",
|
|
165
165
|
"description": "",
|
|
166
166
|
"composition": true,
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
{
|
|
170
170
|
"id": "page-interaction-drawer",
|
|
171
171
|
"name": "InteractionDrawer",
|
|
172
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-icon-button
|
|
172
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-icon-button popovertarget=\"drawer\" slot=\"prefix\" container=\"flat\" icon-name=\"menu\" aria-label=\"menu\"></nve-icon-button>\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n <nve-drawer id=\"drawer\" position=\"left\" size=\"sm\" closable style=\"--top: 48px\">\n <nve-drawer-header>\n <h3 nve-text=\"heading medium sm\">Drawer Header</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <p nve-text=\"body\">drawer content</p>\n </nve-drawer-content>\n <nve-drawer-footer>\n <p nve-text=\"body\">drawer footer</p>\n </nve-drawer-footer>\n </nve-drawer>\n</nve-page>\n",
|
|
173
173
|
"summary": "Use Drawer to create navigation that is outside the context of the current view.",
|
|
174
174
|
"description": "",
|
|
175
175
|
"composition": true,
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
{
|
|
179
179
|
"id": "page-interaction-panel-navigation",
|
|
180
180
|
"name": "InteractionPanelNavigation",
|
|
181
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-toolbar slot=\"left-aside\" orientation=\"vertical\">\n <nve-button-group>\n <nve-icon-button commandfor=\"nav-panel\" command=\"--open\" value=\"repo\" icon-name=\"branch\"></nve-icon-button>\n <nve-icon-button commandfor=\"nav-panel\" command=\"--open\" value=\"ai\" icon-name=\"sparkles\"></nve-icon-button>\n <nve-icon-button commandfor=\"nav-panel\" command=\"--open\" value=\"settings\" icon-name=\"gear\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-page-panel id=\"nav-panel\" slot=\"left\" size=\"sm\" hidden>\n <nve-icon-button
|
|
181
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-toolbar slot=\"left-aside\" orientation=\"vertical\">\n <nve-button-group>\n <nve-icon-button commandfor=\"nav-panel\" command=\"--open\" value=\"repo\" icon-name=\"branch\"></nve-icon-button>\n <nve-icon-button commandfor=\"nav-panel\" command=\"--open\" value=\"ai\" icon-name=\"sparkles\"></nve-icon-button>\n <nve-icon-button commandfor=\"nav-panel\" command=\"--open\" value=\"settings\" icon-name=\"gear\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-page-panel id=\"nav-panel\" slot=\"left\" size=\"sm\" hidden>\n <nve-icon-button commandfor=\"nav-panel\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"double-chevron\" direction=\"left\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-header>\n <h3 nve-text=\"heading medium sm\">git</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-menu id=\"repo\" hidden>\n <nve-menu-item>Clone</nve-menu-item>\n <nve-menu-item>Branch</nve-menu-item>\n <nve-menu-item>Release</nve-menu-item>\n </nve-menu>\n <nve-menu id=\"ai\" hidden>\n <nve-menu-item>Prompts</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n <nve-menu-item>Training</nve-menu-item>\n </nve-menu>\n <nve-menu id=\"settings\" hidden>\n <nve-menu-item>Profile</nve-menu-item>\n <nve-menu-item>Account</nve-menu-item>\n <nve-menu-item>Logs</nve-menu-item>\n </nve-menu>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n</nve-page>\n<script type=\"module\">\n const toolbar = document.querySelector(\"nve-toolbar\");\n const panelHeader = document.querySelector(\"nve-page-panel h3\");\n const menus = Array.from(document.querySelectorAll(\"nve-page-panel nve-menu\"));\n toolbar.addEventListener(\"click\", (e) => {\n if (e.target.localName === \"nve-icon-button\") {\n panelHeader.textContent = e.target.value;\n menus.forEach((i) => (i.hidden = true));\n menus.find((i) => i.id === e.target.value).hidden = false;\n }\n });\n</script>\n",
|
|
182
182
|
"summary": "Use Page Panel with Toolbar to create complex navigation groups that are within the context of the current view.",
|
|
183
183
|
"description": "",
|
|
184
184
|
"composition": true,
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
{
|
|
226
226
|
"id": "page-layout-card-grid",
|
|
227
227
|
"name": "LayoutCardGrid",
|
|
228
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <nve-search container=\"flat\">\n <input type=\"search\" aria-label=\"search drives\" />\n </nve-search>\n <nve-button-group container=\"rounded\" behavior-select=\"single\" orientation=\"horizontal\">\n <nve-icon-button icon-name=\"view-as-grid\" pressed></nve-icon-button>\n <nve-icon-button icon-name=\"table\"></nve-icon-button>\n <nve-icon-button icon-name=\"map\"></nve-icon-button>\n </nve-button-group>\n <section nve-layout=\"grid span-items:3 gap:md\">\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img\n src=\"/static/images/test-image-1.svg\"\n alt=\"example visualization for media card demo\"\n loading=\"lazy\"\n style=\"width: 100%; object-fit: cover\"\n />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n </section>\n </main>\n</nve-page>\n",
|
|
228
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <nve-search container=\"flat\">\n <input type=\"search\" aria-label=\"search drives\" />\n </nve-search>\n <nve-button-group container=\"rounded\" behavior-select=\"single\" orientation=\"horizontal\">\n <nve-icon-button icon-name=\"view-as-grid\" pressed></nve-icon-button>\n <nve-icon-button icon-name=\"table\"></nve-icon-button>\n <nve-icon-button icon-name=\"map\"></nve-icon-button>\n </nve-button-group>\n <section nve-layout=\"grid span-items:3 gap:md\">\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n\n <nve-card style=\"height: 100%; width: 100%\">\n <img src=\"/static/images/test-image-1.svg\" alt=\"example visualization for media card demo\" loading=\"lazy\" style=\"width: 100%; object-fit: cover\" />\n <nve-card-content>\n <p nve-text=\"body\">•︎•︎•︎ •︎•︎•︎ •︎•︎•︎</p>\n </nve-card-content>\n <nve-card-footer>\n <div nve-layout=\"grid span-items:6 gap:xs\">\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n <nve-button>•︎•︎•︎•︎•︎•︎</nve-button>\n </div>\n </nve-card-footer>\n </nve-card>\n </section>\n </main>\n</nve-page>\n",
|
|
229
229
|
"summary": "Card grid page layout for browseable collections like infrastructure dashboards, asset catalogs, or media galleries. Use with view-mode toggles for switching between grid and table presentations.",
|
|
230
230
|
"description": "",
|
|
231
231
|
"composition": true,
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
{
|
|
238
238
|
"id": "page-layout-multi-video",
|
|
239
239
|
"name": "LayoutMultiVideo",
|
|
240
|
-
"template": "<style>\n nve-page {\n --padding: 0;\n }\n .videos {\n display: grid;\n align-content: center;\n grid-template: auto auto auto / 1fr 1fr 1fr;\n gap: var(--nve-ref-space-xxs);\n margin: auto;\n height: 95%;\n width: 95%;\n max-width: 1660px;\n aspect-ratio: 16 / 9;\n }\n</style>\n<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel slot=\"subheader\">\n <nve-page-panel-content>\n <div nve-layout=\"column gap:md align:stretch\">\n <div nve-layout=\"row align:space-between align:vertical-center\">\n <section nve-layout=\"row gap:sm align:vertical-center\">\n <nve-icon-button icon-name=\"arrow\" direction=\"left\" size=\"sm\" container=\"flat\"></nve-icon-button>\n <h2 nve-text=\"heading lg\">Subheader Large</h2>\n </section>\n <section nve-layout=\"row gap:sm align:vertical-center\">\n <nve-button>Default</nve-button>\n <nve-icon-button icon-name=\"more-actions\"></nve-icon-button>\n </section>\n </div>\n <section nve-layout=\"row gap:xl align:vertical-center\">\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Driver</span>\n <span nve-text=\"body sm bold\">Jane Doe</span>\n </div>\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Route</span>\n <span nve-text=\"body sm bold\">Santa Clara</span>\n </div>\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Status</span>\n <span nve-text=\"body sm bold\"><nve-badge status=\"success\">complete</nve-badge></span>\n </div>\n </section>\n </div>\n </nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"right\" size=\"sm\">\n <nve-page-panel-content> content... </nve-page-panel-content>\n </nve-page-panel>\n <section class=\"videos\">\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-1.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-2.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-3.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-4.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-5.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-6.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-7.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-8.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-9.mp4\" type=\"video/mp4\" />\n </video>\n </section>\n <nve-page-panel slot=\"bottom\" style=\"max-height: 100px\">\n <nve-page-panel-content>\n <div nve-layout=\"column align:center\" style=\"max-width: 1024px; margin: 0 auto\">\n <nve-range>\n <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" aria-label=\"video playback\" />\n </nve-range>\n <nve-button-group container=\"flat\">\n <nve-icon-button icon-name=\"start\" aria-label=\"start\"></nve-icon-button>\n <nve-icon-button icon-name=\"play\" aria-label=\"play/pause\"></nve-icon-button>\n <nve-icon-button icon-name=\"start\" direction=\"down\" aria-label=\"end\"></nve-icon-button>\n </nve-button-group>\n </div>\n </nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n<script type=\"module\">\n // DEMO CODE ONLY\n const videos = Array.from(document.querySelectorAll(\"video\"));\n const playButton = document.querySelector('nve-icon-button[aria-label=\"play/pause\"]');\n const startButton = document.querySelector('nve-icon-button[aria-label=\"start\"]');\n const endButton = document.querySelector('nve-icon-button[aria-label=\"end\"]');\n const range = document.querySelector(\"nve-range input\");\n class VideoGroup extends EventTarget {\n playing = false;\n videos = [];\n get duration() {\n return this.videos[0].duration;\n }\n get currentTime() {\n return this.videos[0].currentTime;\n }\n constructor(videos = []) {\n super();\n this.videos = videos;\n async function animate() {\n if (this.playing && this.videos.every((video) => video.readyState >= HTMLMediaElement.HAVE_ENOUGH_DATA)) {\n await this.#nextFrame();\n if (this.duration === this.currentTime) {\n this.pause();\n }\n }\n requestAnimationFrame(animate.bind(this));\n }\n animate.call(this);\n }\n async #videoMetadataReady() {\n if (this.videos[0].readyState === 0) {\n return await new Promise((r)
|
|
240
|
+
"template": "<style>\n nve-page {\n --padding: 0;\n }\n .videos {\n display: grid;\n align-content: center;\n grid-template: auto auto auto / 1fr 1fr 1fr;\n gap: var(--nve-ref-space-xxs);\n margin: auto;\n height: 95%;\n width: 95%;\n max-width: 1660px;\n aspect-ratio: 16 / 9;\n }\n</style>\n<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel slot=\"subheader\">\n <nve-page-panel-content>\n <div nve-layout=\"column gap:md align:stretch\">\n <div nve-layout=\"row align:space-between align:vertical-center\">\n <section nve-layout=\"row gap:sm align:vertical-center\">\n <nve-icon-button icon-name=\"arrow\" direction=\"left\" size=\"sm\" container=\"flat\"></nve-icon-button>\n <h2 nve-text=\"heading lg\">Subheader Large</h2>\n </section>\n <section nve-layout=\"row gap:sm align:vertical-center\">\n <nve-button>Default</nve-button>\n <nve-icon-button icon-name=\"more-actions\"></nve-icon-button>\n </section>\n </div>\n <section nve-layout=\"row gap:xl align:vertical-center\">\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Driver</span>\n <span nve-text=\"body sm bold\">Jane Doe</span>\n </div>\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Route</span>\n <span nve-text=\"body sm bold\">Santa Clara</span>\n </div>\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Status</span>\n <span nve-text=\"body sm bold\"><nve-badge status=\"success\">complete</nve-badge></span>\n </div>\n </section>\n </div>\n </nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"right\" size=\"sm\">\n <nve-page-panel-content> content... </nve-page-panel-content>\n </nve-page-panel>\n <section class=\"videos\">\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-1.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-2.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-3.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-4.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-5.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-6.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-7.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-8.mp4\" type=\"video/mp4\" />\n </video>\n <video playsinline muted width=\"100%\">\n <source src=\"video/multi-cam-9.mp4\" type=\"video/mp4\" />\n </video>\n </section>\n <nve-page-panel slot=\"bottom\" style=\"max-height: 100px\">\n <nve-page-panel-content>\n <div nve-layout=\"column align:center\" style=\"max-width: 1024px; margin: 0 auto\">\n <nve-range>\n <input type=\"range\" min=\"0\" max=\"100\" value=\"0\" aria-label=\"video playback\" />\n </nve-range>\n <nve-button-group container=\"flat\">\n <nve-icon-button icon-name=\"start\" aria-label=\"start\"></nve-icon-button>\n <nve-icon-button icon-name=\"play\" aria-label=\"play/pause\"></nve-icon-button>\n <nve-icon-button icon-name=\"start\" direction=\"down\" aria-label=\"end\"></nve-icon-button>\n </nve-button-group>\n </div>\n </nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n<script type=\"module\">\n // DEMO CODE ONLY\n const videos = Array.from(document.querySelectorAll(\"video\"));\n const playButton = document.querySelector('nve-icon-button[aria-label=\"play/pause\"]');\n const startButton = document.querySelector('nve-icon-button[aria-label=\"start\"]');\n const endButton = document.querySelector('nve-icon-button[aria-label=\"end\"]');\n const range = document.querySelector(\"nve-range input\");\n class VideoGroup extends EventTarget {\n playing = false;\n videos = [];\n get duration() {\n return this.videos[0].duration;\n }\n get currentTime() {\n return this.videos[0].currentTime;\n }\n constructor(videos = []) {\n super();\n this.videos = videos;\n async function animate() {\n if (this.playing && this.videos.every((video) => video.readyState >= HTMLMediaElement.HAVE_ENOUGH_DATA)) {\n await this.#nextFrame();\n if (this.duration === this.currentTime) {\n this.pause();\n }\n }\n requestAnimationFrame(animate.bind(this));\n }\n animate.call(this);\n }\n async #videoMetadataReady() {\n if (this.videos[0].readyState === 0) {\n return await new Promise((r) => this.videos[0].addEventListener(\"loadedmetadata\", () => r(null), { once: true }));\n } else {\n return new Promise((r) => r());\n }\n }\n async play() {\n await this.#videoMetadataReady();\n if (this.videos[0].duration === this.videos[0].currentTime) {\n await this.setCurrentTime(0);\n }\n this.playing = true;\n }\n pause() {\n this.playing = false;\n }\n stop() {\n this.pause();\n this.setCurrentTime(0);\n }\n async #nextFrame() {\n this.videos.forEach((video) => (video.currentTime = video.currentTime + this.videos[0].duration / 60));\n await this.#timeUpdated();\n }\n async setCurrentTime(currentTime) {\n this.videos.forEach((video) => (video.currentTime = currentTime));\n await this.#timeUpdated();\n }\n\n async #timeUpdated() {\n await Promise.all(\n this.videos.map((video) => {\n return new Promise((r) => video.addEventListener(\"timeupdate\", () => r(null), { once: true }));\n }),\n );\n this.dispatchEvent(new CustomEvent(\"timeupdate\", { detail: { currentTime: this.currentTime, percentage: (this.currentTime / this.duration) * 100 } }));\n }\n }\n const videoGroup = new VideoGroup(videos);\n videoGroup.addEventListener(\"timeupdate\", (e) => {\n range.value = e.detail.percentage;\n });\n range.addEventListener(\"input\", (e) => {\n videoGroup.setCurrentTime(videoGroup.duration * (range.value / 100));\n });\n startButton.addEventListener(\"click\", () => {\n videoGroup.stop();\n });\n endButton.addEventListener(\"click\", () => {\n videoGroup.setCurrentTime(videoGroup.duration);\n });\n playButton.addEventListener(\"click\", () => {\n if (videoGroup.playing) {\n playButton.iconName = \"play\";\n videoGroup.pause();\n } else {\n playButton.iconName = \"pause\";\n videoGroup.play();\n }\n });\n</script>\n",
|
|
241
241
|
"summary": "Multi-video grid layout with synchronized playback controls for monitoring and review workflows. Ideal for surveillance dashboards, AV sensor feeds, or simulation playback where concurrent streams need simultaneous viewing.",
|
|
242
242
|
"description": "",
|
|
243
243
|
"composition": true,
|
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
{
|
|
250
250
|
"id": "page-layout-editor",
|
|
251
251
|
"name": "LayoutEditor",
|
|
252
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Playground</h2>\n <nve-button container=\"flat\">Browse</nve-button>\n <nve-button container=\"flat\">Editor</nve-button>\n <nve-button container=\"flat\">Elements</nve-button>\n <nve-icon-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-toolbar slot=\"subheader\">\n <nve-icon-button slot=\"prefix\" icon-name=\"split-vertical\"></nve-icon-button>\n <nve-divider slot=\"prefix\" orientation=\"vertical\"></nve-divider>\n <h2 slot=\"prefix\" nve-text=\"heading sm\" style=\"text-wrap: nowrap\">Project</h2>\n <nve-button slot=\"suffix\" interaction=\"emphasis\">Save Project</nve-button>\n <nve-icon-button slot=\"suffix\" icon-name=\"download\"></nve-icon-button>\n <nve-divider slot=\"suffix\" orientation=\"vertical\"></nve-divider>\n <nve-button-group slot=\"suffix\" container=\"rounded\">\n <nve-icon-button icon-name=\"code\"></nve-icon-button>\n <nve-icon-button selected icon-name=\"split-vertical\"></nve-icon-button>\n <nve-icon-button icon-name=\"split-horizontal\"></nve-icon-button>\n <nve-icon-button icon-name=\"split-none\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-page-panel slot=\"left\" size=\"sm\">\n <nve-page-panel-header> Outline </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-tree behavior-expand>\n <nve-tree-node><a href=\"#\">html</a></nve-tree-node>\n <nve-tree-node expanded>\n head\n <nve-tree-node><a href=\"#\">link</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">link</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">link</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node expanded>\n body\n <nve-tree-node><a href=\"#\">nve-badge</a></nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n <nve-page-panel id=\"console-panel\" slot=\"bottom\" size=\"sm\">\n <nve-icon-button
|
|
252
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Playground</h2>\n <nve-button container=\"flat\">Browse</nve-button>\n <nve-button container=\"flat\">Editor</nve-button>\n <nve-button container=\"flat\">Elements</nve-button>\n <nve-icon-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-toolbar slot=\"subheader\">\n <nve-icon-button slot=\"prefix\" icon-name=\"split-vertical\"></nve-icon-button>\n <nve-divider slot=\"prefix\" orientation=\"vertical\"></nve-divider>\n <h2 slot=\"prefix\" nve-text=\"heading sm\" style=\"text-wrap: nowrap\">Project</h2>\n <nve-button slot=\"suffix\" interaction=\"emphasis\">Save Project</nve-button>\n <nve-icon-button slot=\"suffix\" icon-name=\"download\"></nve-icon-button>\n <nve-divider slot=\"suffix\" orientation=\"vertical\"></nve-divider>\n <nve-button-group slot=\"suffix\" container=\"rounded\">\n <nve-icon-button icon-name=\"code\"></nve-icon-button>\n <nve-icon-button selected icon-name=\"split-vertical\"></nve-icon-button>\n <nve-icon-button icon-name=\"split-horizontal\"></nve-icon-button>\n <nve-icon-button icon-name=\"split-none\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-page-panel slot=\"left\" size=\"sm\">\n <nve-page-panel-header> Outline </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-tree behavior-expand>\n <nve-tree-node><a href=\"#\">html</a></nve-tree-node>\n <nve-tree-node expanded>\n head\n <nve-tree-node><a href=\"#\">link</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">link</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">link</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node expanded>\n body\n <nve-tree-node><a href=\"#\">nve-badge</a></nve-tree-node>\n </nve-tree-node>\n </nve-tree>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:lg pad:lg align:horizontal-stretch\">\n <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n <nve-page-panel id=\"console-panel\" slot=\"bottom\" size=\"sm\">\n <nve-icon-button commandfor=\"console-panel\" command=\"--close\" slot=\"actions\" container=\"inline\" icon-name=\"cancel\" aria-label=\"close\"></nve-icon-button>\n <nve-page-panel-content>console output</nve-page-panel-content>\n </nve-page-panel>\n <nve-toolbar slot=\"footer\">\n <nve-icon-button icon-name=\"information-circle\"></nve-icon-button>\n <span nve-text=\"body sm muted\">last updated 12 mins ago</span>\n </nve-toolbar>\n</nve-page>\n",
|
|
253
253
|
"summary": "IDE-style editor layout with file outline, main editor, and console panels. Use for code playgrounds, configuration editors, or development tools that need a split-pane workspace with toolbar controls.",
|
|
254
254
|
"description": "",
|
|
255
255
|
"composition": true,
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
{
|
|
270
270
|
"id": "page-resize-multi",
|
|
271
271
|
"name": "ResizeMulti",
|
|
272
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel style=\"width: 320px\" slot=\"left\">\n <nve-page-panel-content>left</nve-page-panel-content>\n </nve-page-panel>\n <nve-resize-handle slot=\"left\" orientation=\"vertical\" min=\"100\" max=\"480\" value=\"320\" step=\"20\"></nve-resize-handle>\n <nve-resize-handle slot=\"bottom\" min=\"100\" max=\"480\" value=\"320\" step=\"20\"></nve-resize-handle>\n <nve-page-panel style=\"height: 320px\" slot=\"bottom\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n <nve-resize-handle
|
|
272
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button selected container=\"flat\">Link 1</nve-button>\n <nve-button container=\"flat\">Link 2</nve-button>\n <nve-icon-button interaction=\"emphasis\" slot=\"suffix\" size=\"sm\">EL</nve-icon-button>\n </nve-page-header>\n <nve-page-panel style=\"width: 320px\" slot=\"left\">\n <nve-page-panel-content>left</nve-page-panel-content>\n </nve-page-panel>\n <nve-resize-handle slot=\"left\" orientation=\"vertical\" min=\"100\" max=\"480\" value=\"320\" step=\"20\"></nve-resize-handle>\n <nve-resize-handle slot=\"bottom\" min=\"100\" max=\"480\" value=\"320\" step=\"20\"></nve-resize-handle>\n <nve-page-panel style=\"height: 320px\" slot=\"bottom\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n <nve-resize-handle slot=\"right\" dir=\"rtl\" orientation=\"vertical\" min=\"100\" max=\"480\" value=\"320\" step=\"20\"></nve-resize-handle>\n <nve-page-panel style=\"width: 320px\" slot=\"right\">\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n<script type=\"module\">\n const leftHandle = document.querySelector(\"nve-resize-handle[slot=left]\");\n const leftPanel = document.querySelector(\"nve-page-panel[slot=left]\");\n leftHandle.addEventListener(\"input\", (e) => (leftPanel.style.width = e.target.value + \"px\"));\n const rightHandle = document.querySelector(\"nve-resize-handle[slot=right]\");\n const rightPanel = document.querySelector(\"nve-page-panel[slot=right]\");\n rightHandle.addEventListener(\"input\", (e) => (rightPanel.style.width = e.target.value + \"px\"));\n const bottomHandle = document.querySelector(\"nve-resize-handle[slot=bottom]\");\n const bottomPanel = document.querySelector(\"nve-page-panel[slot=bottom]\");\n bottomHandle.addEventListener(\"input\", (e) => (bottomPanel.style.height = e.target.value + \"px\"));\n</script>\n",
|
|
273
273
|
"summary": "Multi-panel resizable layout with independent drag handles on left, right, and bottom panels. Use for complex workspaces like IDEs or dashboards where users need to customize the size of each content region independently.",
|
|
274
274
|
"description": "",
|
|
275
275
|
"composition": true,
|
package/dist/page/page2.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { audit as e } from "../internal/controllers/audit.controller.js";
|
|
2
2
|
import { attachInternals as t } from "../internal/utils/a11y.js";
|
|
3
3
|
import { useStyles as n } from "../internal/styles/index.js";
|
|
4
|
-
import r from "../_virtual/_@oxc-project_runtime@0.
|
|
4
|
+
import r from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
|
|
5
5
|
import i from "./page.js";
|
|
6
6
|
import { LitElement as a, html as o } from "lit";
|
|
7
7
|
import { property as s } from "lit/decorators/property.js";
|
|
@@ -16,7 +16,7 @@ var c = class extends a {
|
|
|
16
16
|
static {
|
|
17
17
|
this.metadata = {
|
|
18
18
|
tag: "nve-page",
|
|
19
|
-
version: "2.
|
|
19
|
+
version: "2.8.1"
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
static {
|
package/dist/page/page2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page2.js","names":[],"sources":["../../src/page/page.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 { useStyles, attachInternals, audit } from '@nvidia-elements/core/internal';\nimport styles from './page.css?inline';\n\n/**\n * @element nve-page\n * @description Provide a consistent page structure across the applications, ensuring a seamless user experience.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - The central content area of the page, where the primary focus of the user's attention should be.\n * @slot header - The topmost section of the page, typically containing navigation, branding, or other global elements.\n * @slot subheader - A secondary section below the header, often used for breadcrumbs, filters, or other contextual information.\n * @slot left-aside - A narrow section on the left side of the page, commonly used for navigation, filters, or other secondary content.\n * @slot left - The main content area on the left side of the page, typically containing primary navigation or features.\n * @slot bottom - A section for extra tooling outputs such as console outputs.\n * @slot right - The main content area on the right side of the page, typically containing secondary navigation or features.\n * @slot right-aside - A narrow section on the right side of the page, commonly used for navigation, filters, or other secondary content.\n * @slot subfooter - A secondary section below the main content area, often used for more information or calls to action.\n * @slot footer - The bottommost section of the page, typically containing global elements, such as copyright information.\n * @cssprop --padding\n * @cssprop --background\n * @cssprop --color\n * @cssprop --border\n * @cssprop --border-radius\n * @cssprop --box-shadow\n * @cssprop --min-height\n * @cssprop --gap - Vertical gap spacing between main content items\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/landmarks/\n * @responsive false\n *\n */\n@audit({\n excessiveInstanceLimit: 0\n})\nexport class Page extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page',\n version: '0.0.0'\n };\n\n static elementDefinitions = {};\n\n /**\n * Enables the page to use the document content scroll rather than its internal fixed scroll.\n */\n @property({ type: Boolean, reflect: true, attribute: 'document-scroll' }) documentScroll = false;\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <slot name=\"header\"></slot>\n <slot name=\"subheader\"></slot>\n <slot name=\"left-aside\"></slot>\n <slot name=\"left\"></slot>\n <slot></slot>\n <slot name=\"bottom\"></slot>\n <slot name=\"right\"></slot>\n <slot name=\"right-aside\"></slot>\n <slot name=\"subfooter\"></slot>\n <slot name=\"footer\"></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n }\n}\n"],"mappings":";;;;;;;;AAuCO,
|
|
1
|
+
{"version":3,"file":"page2.js","names":[],"sources":["../../src/page/page.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 { useStyles, attachInternals, audit } from '@nvidia-elements/core/internal';\nimport styles from './page.css?inline';\n\n/**\n * @element nve-page\n * @description Provide a consistent page structure across the applications, ensuring a seamless user experience.\n * @documentation https://nvidia.github.io/elements/docs/elements/page/\n * @entrypoint \\@nvidia-elements/core/page\n * @since 1.15.0\n * @slot - The central content area of the page, where the primary focus of the user's attention should be.\n * @slot header - The topmost section of the page, typically containing navigation, branding, or other global elements.\n * @slot subheader - A secondary section below the header, often used for breadcrumbs, filters, or other contextual information.\n * @slot left-aside - A narrow section on the left side of the page, commonly used for navigation, filters, or other secondary content.\n * @slot left - The main content area on the left side of the page, typically containing primary navigation or features.\n * @slot bottom - A section for extra tooling outputs such as console outputs.\n * @slot right - The main content area on the right side of the page, typically containing secondary navigation or features.\n * @slot right-aside - A narrow section on the right side of the page, commonly used for navigation, filters, or other secondary content.\n * @slot subfooter - A secondary section below the main content area, often used for more information or calls to action.\n * @slot footer - The bottommost section of the page, typically containing global elements, such as copyright information.\n * @cssprop --padding\n * @cssprop --background\n * @cssprop --color\n * @cssprop --border\n * @cssprop --border-radius\n * @cssprop --box-shadow\n * @cssprop --min-height\n * @cssprop --gap - Vertical gap spacing between main content items\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/landmarks/\n * @responsive false\n *\n */\n@audit({\n excessiveInstanceLimit: 0\n})\nexport class Page extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page',\n version: '0.0.0'\n };\n\n static elementDefinitions = {};\n\n /**\n * Enables the page to use the document content scroll rather than its internal fixed scroll.\n */\n @property({ type: Boolean, reflect: true, attribute: 'document-scroll' }) documentScroll = false;\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <slot name=\"header\"></slot>\n <slot name=\"subheader\"></slot>\n <slot name=\"left-aside\"></slot>\n <slot name=\"left\"></slot>\n <slot></slot>\n <slot name=\"bottom\"></slot>\n <slot name=\"right\"></slot>\n <slot name=\"right-aside\"></slot>\n <slot name=\"subfooter\"></slot>\n <slot name=\"footer\"></slot>\n </div>\n `;\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n }\n}\n"],"mappings":";;;;;;;;AAuCO,IAAM,IAAN,cAAmB,EAAW;;EAawD,aAAA,KAAA,iBAAA;;;EAZ3E,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;;EAE4B,KAAA,qBAAA,CAAC;;CAU7B,SAAS;EACP,OAAO,CAAI;CAcb;CAEA,oBAAoB;EAElB,AADA,MAAM,kBAAkB,GACxB,EAAgB,IAAI;CACtB;AACF;AA1BG,EAAA,CAAA,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;AAAkB,CAAC,CAAA,GAAA,EAAA,WAAA,kBAAA,KAAA,CAAA,GAhBzE,IAAA,EAAA,CAAA,EAAM,EACL,wBAAwB,EAC1B,CAAC,CAAA,GAAA,CAAA"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
{
|
|
15
15
|
"id": "page-header-dropdown-menu",
|
|
16
16
|
"name": "DropdownMenu",
|
|
17
|
-
"template": "<nve-page-header>\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">Infrastructure</h2>\n <nve-button selected container=\"flat\"><a href=\"#\">Link 1</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Link 2</a></nve-button>\n <nve-icon-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\" popovertarget=\"page-header-dropdown\"
|
|
17
|
+
"template": "<nve-page-header>\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">Infrastructure</h2>\n <nve-button selected container=\"flat\"><a href=\"#\">Link 1</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Link 2</a></nve-button>\n <nve-icon-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\" popovertarget=\"page-header-dropdown\">EL</nve-icon-button>\n</nve-page-header>\n<nve-dropdown position=\"bottom\" id=\"page-header-dropdown\">\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> Menu Item</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> Menu Item</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> Menu Item</nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> Menu Item</nve-menu-item>\n </nve-menu>\n</nve-dropdown>\n",
|
|
18
18
|
"summary": "Use dropdowns and menus to allow progressive disclosure of extra navigation or global user actions.",
|
|
19
19
|
"description": "",
|
|
20
20
|
"composition": true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-header2.js","names":[],"sources":["../../src/page-header/page-header.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 { useStyles, attachInternals, appendRootNodeStyle } from '@nvidia-elements/core/internal';\nimport styles from './page-header.css?inline';\nimport globalStyles from './page-header.global.css?inline';\n\n/**\n * @element nve-page-header\n * @description An element that appears across the top of all pages containing the application name and primary navigation.\n * @documentation https://nvidia.github.io/elements/docs/elements/page-header/\n * @entrypoint \\@nvidia-elements/core/page-header\n * @since 1.15.0\n * @slot - The default content slot\n * @slot prefix - Content displayed at the start of the header\n * @slot suffix - Content displayed at the end of the header\n * @cssprop --background - Background color of the header\n * @cssprop --padding - Padding inside the header\n * @cssprop --border-bottom - Border below the header\n * @cssprop --gap - Gap between the prefix, default, and suffix slots\n * @cssprop --margin-inline - left and right margin applied to the default content slot\n\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav\n *\n */\nexport class PageHeader extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-header',\n version: '0.0.0'\n };\n\n render() {\n return html`\n <div internal-host>\n <slot name=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\"></slot>\n </div>\n `;\n }\n\n /** @private */\n declare _internals: ElementInternals;\n\n connectedCallback(): void {\n super.connectedCallback();\n appendRootNodeStyle(this, globalStyles);\n attachInternals(this);\n this._internals.role = 'navigation';\n }\n}\n"],"mappings":";;;;;;;AA0BA,IAAa,IAAb,cAAgC,EAAW;;
|
|
1
|
+
{"version":3,"file":"page-header2.js","names":[],"sources":["../../src/page-header/page-header.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 { useStyles, attachInternals, appendRootNodeStyle } from '@nvidia-elements/core/internal';\nimport styles from './page-header.css?inline';\nimport globalStyles from './page-header.global.css?inline';\n\n/**\n * @element nve-page-header\n * @description An element that appears across the top of all pages containing the application name and primary navigation.\n * @documentation https://nvidia.github.io/elements/docs/elements/page-header/\n * @entrypoint \\@nvidia-elements/core/page-header\n * @since 1.15.0\n * @slot - The default content slot\n * @slot prefix - Content displayed at the start of the header\n * @slot suffix - Content displayed at the end of the header\n * @cssprop --background - Background color of the header\n * @cssprop --padding - Padding inside the header\n * @cssprop --border-bottom - Border below the header\n * @cssprop --gap - Gap between the prefix, default, and suffix slots\n * @cssprop --margin-inline - left and right margin applied to the default content slot\n\n * @aria https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav\n *\n */\nexport class PageHeader extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-page-header',\n version: '0.0.0'\n };\n\n render() {\n return html`\n <div internal-host>\n <slot name=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\"></slot>\n </div>\n `;\n }\n\n /** @private */\n declare _internals: ElementInternals;\n\n connectedCallback(): void {\n super.connectedCallback();\n appendRootNodeStyle(this, globalStyles);\n attachInternals(this);\n this._internals.role = 'navigation';\n }\n}\n"],"mappings":";;;;;;;AA0BA,IAAa,IAAb,cAAgC,EAAW;;EACzB,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;CAEA,SAAS;EACP,OAAO,CAAI;CAOb;CAKA,oBAA0B;EAIxB,AAHA,MAAM,kBAAkB,GACxB,EAAoB,MAAM,CAAY,GACtC,EAAgB,IAAI,GACpB,KAAK,WAAW,OAAO;CACzB;AACF"}
|
|
@@ -2,7 +2,7 @@ import { TypeNativePopoverController as e } from "../internal/controllers/type-n
|
|
|
2
2
|
import { scopedRegistry as t } from "../internal/decorators/scoped-registry.js";
|
|
3
3
|
import { useStyles as n } from "../internal/styles/index.js";
|
|
4
4
|
import { popoverStyles as r } from "../internal/styles/popover2.js";
|
|
5
|
-
import i from "../_virtual/_@oxc-project_runtime@0.
|
|
5
|
+
import i from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js";
|
|
6
6
|
import { ProgressRing as a } from "../progress-ring/progress-ring2.js";
|
|
7
7
|
import o from "./page-loader.js";
|
|
8
8
|
import { LitElement as s, html as c } from "lit";
|
|
@@ -18,7 +18,7 @@ var u = class extends s {
|
|
|
18
18
|
static {
|
|
19
19
|
this.metadata = {
|
|
20
20
|
tag: "nve-page-loader",
|
|
21
|
-
version: "2.
|
|
21
|
+
version: "2.8.1"
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
static {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-loader2.js","names":[],"sources":["../../src/page-loader/page-loader.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators/state.js';\nimport type { PopoverPosition, PopoverType } from '@nvidia-elements/core/internal';\nimport { popoverStyles, scopedRegistry, TypeNativePopoverController, useStyles } from '@nvidia-elements/core/internal';\nimport { ProgressRing } from '@nvidia-elements/core/progress-ring';\nimport styles from './page-loader.css?inline';\n\n/**\n * @element nve-page-loader\n * @description Page Loader is a full-screen version of the `progress-ring` component, for use when the page should remain unusable as the loader displays.\n * @documentation https://nvidia.github.io/elements/docs/elements/page-loader/\n * @since 0.19.0\n * @entrypoint \\@nvidia-elements/core/page-loader\n * @slot - Loading status text displayed with the progress indicator.\n * @cssprop --gap\n * @cssprop --animation-duration - Duration of page loader open/close animations\n * @csspart progress-ring - The progress ring element\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/progressbar_role\n */\n@scopedRegistry()\nexport class PageLoader extends LitElement {\n /** @private */\n readonly position: PopoverPosition = 'center';\n\n /** @private */\n readonly popoverType: PopoverType = 'manual';\n\n /** @private */\n protected typeNativePopoverController = new TypeNativePopoverController<PageLoader>(this);\n\n /**\n * @private\n */\n @state() anchor = globalThis.document?.body;\n\n static styles = useStyles([popoverStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-page-loader',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [ProgressRing.metadata.tag]: ProgressRing\n };\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <nve-progress-ring part=\"progress-ring\" status=\"accent\" size=\"xl\"></nve-progress-ring>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;;;;;AAuBO,
|
|
1
|
+
{"version":3,"file":"page-loader2.js","names":[],"sources":["../../src/page-loader/page-loader.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators/state.js';\nimport type { PopoverPosition, PopoverType } from '@nvidia-elements/core/internal';\nimport { popoverStyles, scopedRegistry, TypeNativePopoverController, useStyles } from '@nvidia-elements/core/internal';\nimport { ProgressRing } from '@nvidia-elements/core/progress-ring';\nimport styles from './page-loader.css?inline';\n\n/**\n * @element nve-page-loader\n * @description Page Loader is a full-screen version of the `progress-ring` component, for use when the page should remain unusable as the loader displays.\n * @documentation https://nvidia.github.io/elements/docs/elements/page-loader/\n * @since 0.19.0\n * @entrypoint \\@nvidia-elements/core/page-loader\n * @slot - Loading status text displayed with the progress indicator.\n * @cssprop --gap\n * @cssprop --animation-duration - Duration of page loader open/close animations\n * @csspart progress-ring - The progress ring element\n * @aria https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/progressbar_role\n */\n@scopedRegistry()\nexport class PageLoader extends LitElement {\n /** @private */\n readonly position: PopoverPosition = 'center';\n\n /** @private */\n readonly popoverType: PopoverType = 'manual';\n\n /** @private */\n protected typeNativePopoverController = new TypeNativePopoverController<PageLoader>(this);\n\n /**\n * @private\n */\n @state() anchor = globalThis.document?.body;\n\n static styles = useStyles([popoverStyles, styles]);\n\n static readonly metadata = {\n tag: 'nve-page-loader',\n version: '0.0.0'\n };\n\n static elementDefinitions = {\n [ProgressRing.metadata.tag]: ProgressRing\n };\n\n /** @private */\n declare _internals: ElementInternals;\n\n render() {\n return html`\n <div internal-host>\n <nve-progress-ring part=\"progress-ring\" status=\"accent\" size=\"xl\"></nve-progress-ring>\n <slot></slot>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;;;;;;AAuBO,IAAM,IAAN,cAAyB,EAAW;;EAavB,aAXmB,KAAA,WAAA,UAGD,KAAA,cAAA,UAGI,KAAA,8BAAA,IAAI,EAAwC,IAAI,GAKtE,KAAA,SAAA,WAAW,UAAU;;;EAEvB,KAAA,SAAA,EAAU,CAAC,GAAe,CAAM,CAAC;;;EAEtB,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;EACX;;;EAE4B,KAAA,qBAAA,GACzB,EAAa,SAAS,MAAM,EAC/B;;CAKA,SAAS;EACP,OAAO,CAAI;CAMb;AACF;AAxBG,EAAA,CAAA,EAAM,CAAA,GAAA,EAAA,WAAA,UAAA,KAAA,CAAA,GAdR,IAAA,EAAA,CAAA,EAAe,CAAA,GAAA,CAAA"}
|