@nvidia-elements/core 0.0.9 → 0.0.11
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 +20 -0
- package/dist/accordion/accordion.examples.json +11 -11
- package/dist/accordion/accordion2.js +4 -4
- package/dist/alert/alert-group2.js +1 -1
- package/dist/alert/alert.examples.json +12 -12
- package/dist/alert/alert2.js +1 -1
- package/dist/avatar/avatar-group2.js +1 -1
- package/dist/avatar/avatar.examples.json +6 -6
- package/dist/avatar/avatar2.js +1 -1
- package/dist/badge/badge.examples.json +12 -12
- package/dist/badge/badge2.js +1 -1
- package/dist/breadcrumb/breadcrumb.examples.json +3 -3
- package/dist/breadcrumb/breadcrumb2.js +1 -1
- package/dist/bundles/index.d.ts +1 -0
- package/dist/bundles/index.js +3 -3
- package/dist/button/button.examples.json +24 -24
- package/dist/button/button2.js +1 -1
- package/dist/button-group/button-group.examples.json +11 -11
- package/dist/button-group/button-group2.js +1 -1
- package/dist/card/card.examples.json +10 -10
- package/dist/card/card2.js +4 -4
- package/dist/chat-message/chat-message.examples.json +7 -7
- package/dist/chat-message/chat-message2.js +1 -1
- package/dist/checkbox/checkbox-group2.js +1 -1
- package/dist/checkbox/checkbox.examples.json +7 -7
- package/dist/checkbox/checkbox2.js +1 -1
- package/dist/color/color.examples.json +4 -4
- package/dist/color/color2.js +1 -1
- package/dist/combobox/combobox.examples.json +24 -24
- package/dist/combobox/combobox2.js +1 -1
- package/dist/copy-button/copy-button.examples.json +9 -9
- package/dist/copy-button/copy-button2.js +1 -1
- package/dist/custom-elements-jsx.d.ts +2 -0
- package/dist/custom-elements-vue.d.ts +2 -0
- package/dist/custom-elements.json +35 -77
- package/dist/data.html.json +3 -1
- package/dist/date/date.examples.json +7 -7
- package/dist/date/date2.js +1 -1
- package/dist/datetime/datetime.examples.json +4 -4
- package/dist/datetime/datetime2.js +1 -1
- package/dist/dialog/dialog-footer2.js +1 -1
- package/dist/dialog/dialog-header2.js +1 -1
- package/dist/dialog/dialog.examples.json +21 -21
- package/dist/dialog/dialog2.js +1 -1
- package/dist/divider/divider.examples.json +5 -5
- package/dist/divider/divider2.js +1 -1
- package/dist/dot/dot.examples.json +5 -5
- package/dist/dot/dot2.js +1 -1
- package/dist/drawer/drawer-content2.js +1 -1
- package/dist/drawer/drawer-footer2.js +1 -1
- package/dist/drawer/drawer-header2.js +1 -1
- package/dist/drawer/drawer.examples.json +13 -13
- package/dist/drawer/drawer2.js +1 -1
- package/dist/dropdown/dropdown-footer2.js +1 -1
- package/dist/dropdown/dropdown-header2.js +1 -1
- package/dist/dropdown/dropdown.examples.json +14 -14
- package/dist/dropdown/dropdown2.js +1 -1
- package/dist/dropdown-group/dropdown-group.examples.json +4 -4
- package/dist/dropdown-group/dropdown-group.js +1 -1
- package/dist/dropzone/dropzone.examples.json +3 -3
- package/dist/dropzone/dropzone2.js +1 -1
- package/dist/file/file.examples.json +3 -3
- package/dist/file/file2.js +1 -1
- package/dist/format-datetime/format-datetime.examples.json +9 -9
- package/dist/format-datetime/format-datetime2.js +1 -1
- package/dist/format-relative-time/format-relative-time.examples.json +7 -7
- package/dist/format-relative-time/format-relative-time2.js +1 -1
- package/dist/forms/actions.examples.json +3 -3
- package/dist/forms/control/control.examples.json +11 -11
- package/dist/forms/control/control2.js +1 -1
- package/dist/forms/control-group/control-group2.js +1 -1
- package/dist/forms/control-message/control-message2.js +1 -1
- package/dist/forms/forms.examples.json +8 -8
- package/dist/forms/validation.examples.json +5 -5
- package/dist/grid/cell/cell2.js +1 -1
- package/dist/grid/column/column2.js +1 -1
- package/dist/grid/footer/footer2.js +1 -1
- package/dist/grid/grid.examples.js.map +1 -1
- package/dist/grid/grid.examples.json +45 -45
- package/dist/grid/grid2.js +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/row/row2.js +1 -1
- package/dist/icon/icon.examples.json +8 -8
- package/dist/icon/icon2.js +2 -2
- package/dist/icon/icons/stop.js +6 -0
- package/dist/icon/icons/stop.js.map +1 -0
- package/dist/icon/icons.d.ts +1 -0
- package/dist/icon/icons.js +1 -0
- package/dist/icon/icons.js.map +1 -1
- package/dist/icon/server.js +1 -0
- package/dist/icon/server.js.map +1 -1
- package/dist/icon-button/icon-button.examples.json +13 -13
- package/dist/icon-button/icon-button2.js +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group.examples.json +2 -2
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input.examples.json +8 -8
- package/dist/input/input2.js +1 -1
- package/dist/internal/controllers/i18n.controller.examples.json +1 -1
- package/dist/internal/controllers/keynav-grid.controller.examples.json +2 -2
- package/dist/internal/controllers/keynav-grid.controller.js +15 -7
- package/dist/internal/controllers/keynav-grid.controller.js.map +1 -1
- package/dist/internal/controllers/keynav-list.controller.examples.json +4 -4
- package/dist/internal/controllers/keynav-list.controller.js +11 -5
- package/dist/internal/controllers/keynav-list.controller.js.map +1 -1
- package/dist/internal/controllers/popover.examples.json +8 -8
- package/dist/internal/controllers/type-button.controller.examples.json +1 -1
- package/dist/internal/controllers/type-popover.controller.examples.json +2 -2
- package/dist/internal/controllers/type-touch.controller.examples.json +1 -1
- package/dist/internal/services/global.service.js +1 -1
- package/dist/logo/logo.examples.json +6 -6
- package/dist/logo/logo2.js +1 -1
- package/dist/menu/menu-item2.js +1 -1
- package/dist/menu/menu.examples.json +15 -15
- package/dist/menu/menu2.js +1 -1
- package/dist/month/month.examples.json +4 -4
- package/dist/month/month2.js +1 -1
- package/dist/notification/notification-group2.js +1 -1
- package/dist/notification/notification.examples.json +15 -15
- package/dist/notification/notification2.js +1 -1
- package/dist/page/page-panel/page-panel-content2.js +1 -1
- package/dist/page/page-panel/page-panel-footer2.js +1 -1
- package/dist/page/page-panel/page-panel-header2.js +1 -1
- package/dist/page/page-panel/page-panel2.js +1 -1
- package/dist/page/page.examples.js.map +1 -1
- package/dist/page/page.examples.json +36 -34
- package/dist/page/page2.js +1 -1
- package/dist/page-header/page-header.examples.json +9 -9
- package/dist/page-header/page-header2.js +1 -1
- package/dist/page-loader/page-loader.examples.json +2 -2
- package/dist/page-loader/page-loader2.js +1 -1
- package/dist/pagination/pagination.examples.json +16 -16
- package/dist/pagination/pagination2.js +1 -1
- package/dist/panel/panel.examples.json +7 -7
- package/dist/panel/panel2.js +4 -4
- package/dist/password/password.examples.json +3 -3
- package/dist/password/password2.js +1 -1
- package/dist/preferences-input/preferences-input.examples.json +3 -3
- package/dist/preferences-input/preferences-input2.js +1 -1
- package/dist/progress-bar/progress-bar.examples.js.map +1 -1
- package/dist/progress-bar/progress-bar.examples.json +9 -9
- package/dist/progress-bar/progress-bar2.js +1 -1
- package/dist/progress-ring/progress-ring.examples.json +8 -8
- package/dist/progress-ring/progress-ring2.js +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip.examples.json +7 -7
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
- package/dist/pulse/pulse.examples.json +4 -4
- package/dist/pulse/pulse2.js +1 -1
- package/dist/radio/radio-group2.js +1 -1
- package/dist/radio/radio.examples.json +5 -5
- package/dist/radio/radio2.js +1 -1
- package/dist/range/range.examples.json +9 -9
- package/dist/range/range2.js +1 -1
- package/dist/resize-handle/resize-handle.examples.json +7 -7
- package/dist/resize-handle/resize-handle2.js +1 -1
- package/dist/search/search.examples.json +5 -5
- package/dist/search/search2.js +1 -1
- package/dist/select/select.examples.json +18 -18
- package/dist/select/select2.js +1 -1
- package/dist/skeleton/skeleton.examples.json +4 -4
- package/dist/skeleton/skeleton2.js +1 -1
- package/dist/sort-button/sort-button.examples.json +3 -3
- package/dist/sort-button/sort-button2.js +1 -1
- package/dist/sparkline/sparkline.examples.json +13 -13
- package/dist/sparkline/sparkline.utils.d.ts +26 -5
- package/dist/sparkline/sparkline.utils.js +30 -30
- package/dist/sparkline/sparkline.utils.js.map +1 -1
- package/dist/sparkline/sparkline2.js +21 -6
- package/dist/sparkline/sparkline2.js.map +1 -1
- package/dist/star-rating/star-rating.examples.json +4 -4
- package/dist/star-rating/star-rating2.js +1 -1
- package/dist/steps/steps.examples.json +5 -5
- package/dist/steps/steps2.js +2 -2
- package/dist/switch/switch-group2.js +1 -1
- package/dist/switch/switch.examples.json +7 -7
- package/dist/switch/switch2.js +1 -1
- package/dist/tabs/tabs-group2.js +9 -6
- package/dist/tabs/tabs-group2.js.map +1 -1
- package/dist/tabs/tabs.examples.json +14 -14
- package/dist/tabs/tabs2.js +2 -2
- package/dist/tag/tag.examples.json +8 -8
- package/dist/tag/tag2.js +1 -1
- package/dist/textarea/textarea.examples.json +5 -5
- package/dist/textarea/textarea2.js +1 -1
- package/dist/time/time.examples.json +4 -4
- package/dist/time/time2.js +1 -1
- package/dist/toast/toast.examples.json +11 -11
- package/dist/toast/toast2.js +1 -1
- package/dist/toggletip/toggletip-footer2.js +1 -1
- package/dist/toggletip/toggletip-header2.js +1 -1
- package/dist/toggletip/toggletip.examples.json +12 -12
- package/dist/toggletip/toggletip2.js +1 -1
- package/dist/toolbar/toolbar.examples.json +8 -8
- package/dist/toolbar/toolbar2.js +1 -1
- package/dist/tooltip/tooltip.examples.json +22 -22
- package/dist/tooltip/tooltip2.js +1 -1
- package/dist/tree/tree-node2.js +1 -1
- package/dist/tree/tree.examples.json +13 -13
- package/dist/tree/tree2.js +1 -1
- package/dist/week/week.examples.json +5 -5
- package/dist/week/week2.js +1 -1
- package/package.json +3 -3
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"entrypoint": "@nvidia-elements/core/page/page.examples.json",
|
|
4
4
|
"items": [
|
|
5
5
|
{
|
|
6
|
-
"id": "
|
|
6
|
+
"id": "page",
|
|
7
7
|
"name": "Default",
|
|
8
8
|
"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 slot=\"left\" size=\"sm\">\n <nve-page-panel-content>panel</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",
|
|
9
9
|
"summary": "Basic nve-page layout with a header and main content.",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"tags": []
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
"id": "
|
|
15
|
+
"id": "page-slots",
|
|
16
16
|
"name": "Slots",
|
|
17
17
|
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <h2 nve-text=\"heading\" slot=\"prefix\">header</h2>\n </nve-page-header>\n <nve-page-panel slot=\"subheader\">\n <nve-page-panel-content>subheader</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"left-aside\">\n <nve-page-panel-content>left-aside</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"left\" size=\"sm\">\n <nve-page-panel-content>left</nve-page-panel-content>\n </nve-page-panel>\n <main>\n <p nve-text=\"body\">main content</p>\n </main>\n <nve-page-panel slot=\"bottom\" size=\"sm\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"right\" size=\"sm\">\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"right-aside\">\n <nve-page-panel-content>right-aside</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"subfooter\">\n <nve-page-panel-content>subfooter</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"footer\">\n <nve-page-panel-content>footer</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
18
18
|
"summary": "Page layout slot reference showing all available panel positions including header, subheader, left, right, bottom, and aside regions. Use as a starting point for understanding how to compose complex application layouts.",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"tags": []
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
"id": "
|
|
24
|
+
"id": "page-content",
|
|
25
25
|
"name": "Content",
|
|
26
26
|
"template": "<style>\n nve-page[debug] {\n nve-page-panel-content {\n font-size: var(--nve-ref-font-size-100);\n }\n main {\n min-height: 100vh;\n padding: var(--nve-ref-space-md);\n }\n [slot=\"left\"],\n [slot=\"right\"],\n [slot=\"bottom\"] {\n --background: var(--nve-ref-color-green-grass-400);\n }\n [slot=\"left-aside\"],\n [slot=\"right-aside\"] {\n --background: var(--nve-ref-color-purple-lavender-400);\n }\n [slot=\"header\"],\n [slot=\"footer\"] {\n --background: var(--nve-ref-color-red-tomato-400);\n }\n [slot=\"subheader\"],\n [slot=\"subfooter\"] {\n --background: var(--nve-ref-color-blue-cobalt-400);\n }\n }\n</style>\n<nve-page debug>\n <nve-page-header slot=\"header\">\n <h2 nve-text=\"heading\" slot=\"prefix\">header</h2>\n </nve-page-header>\n <nve-page-panel slot=\"subheader\">\n <nve-page-panel-content>subheader</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"left-aside\">\n <nve-page-panel-content>left-aside</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"left\" size=\"sm\">\n <nve-page-panel-content>left</nve-page-panel-content>\n </nve-page-panel>\n <main>\n <p nve-text=\"body\">main content</p>\n </main>\n <nve-page-panel slot=\"bottom\" size=\"sm\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"right\" size=\"sm\">\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"right-aside\">\n <nve-page-panel-content>right-aside</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"subfooter\">\n <nve-page-panel-content>subfooter</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"footer\">\n <nve-page-panel-content>footer</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
27
27
|
"summary": "All slot areas and debug backgrounds for nve-page.",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
]
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
"id": "
|
|
35
|
+
"id": "page-slot-banner",
|
|
36
36
|
"name": "SlotBanner",
|
|
37
37
|
"template": "<nve-page>\n <nve-alert-group slot=\"header\" status=\"warning\" prominence=\"emphasis\" container=\"full\">\n <nve-alert closable>\n <span slot=\"prefix\">Warning</span> banner message <a href=\"#\" nve-text=\"link\" slot=\"actions\">view details</a>\n </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.",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
|
-
"id": "
|
|
46
|
+
"id": "page-slot-subheader",
|
|
47
47
|
"name": "SlotSubheader",
|
|
48
48
|
"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=\"subheader\">\n <nve-icon-button icon-name=\"arrow\" direction=\"left\" size=\"sm\"></nve-icon-button>\n <h2 nve-text=\"heading sm\">Subheader</h2>\n </nve-toolbar>\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",
|
|
49
49
|
"summary": "Toolbar in the subheader slot below the header for secondary navigation or actions.",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
]
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
|
-
"id": "
|
|
57
|
+
"id": "page-slot-subheader-large",
|
|
58
58
|
"name": "SlotSubheaderLarge",
|
|
59
59
|
"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 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 semibold\">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 <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",
|
|
60
60
|
"summary": "Large subheader panel with back navigation, title, metadata, and action buttons. Use for detail pages that need prominent context like entity names, status badges, and key-value metadata above the main content.",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"tags": []
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
|
-
"id": "
|
|
66
|
+
"id": "page-slot-left",
|
|
67
67
|
"name": "SlotLeft",
|
|
68
68
|
"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 slot=\"left\" size=\"sm\">\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 <p nve-text=\"body\">page content</p>\n </main>\n</nve-page>\n",
|
|
69
69
|
"summary": "Left slot with a page panel for side navigation or content.",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
]
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
|
-
"id": "
|
|
77
|
+
"id": "page-slot-right",
|
|
78
78
|
"name": "SlotRight",
|
|
79
79
|
"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 <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n <nve-page-panel slot=\"right\" size=\"sm\">\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
80
80
|
"summary": "Right slot with a page panel for side content.",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
"id": "
|
|
88
|
+
"id": "page-slot-bottom",
|
|
89
89
|
"name": "SlotBottom",
|
|
90
90
|
"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 <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n <nve-page-panel slot=\"bottom\" size=\"sm\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
91
91
|
"summary": "Bottom slot with a page panel for footer or supplemental content.",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
]
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
|
-
"id": "
|
|
99
|
+
"id": "page-slot-left-aside",
|
|
100
100
|
"name": "SlotLeftAside",
|
|
101
101
|
"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 icon-name=\"play\" size=\"sm\"></nve-icon-button>\n <nve-icon-button icon-name=\"add\"></nve-icon-button>\n <nve-icon-button icon-name=\"delete\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\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",
|
|
102
102
|
"summary": "Left-aside slot with a vertical toolbar for navigation.",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
]
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
-
"id": "
|
|
110
|
+
"id": "page-slot-right-aside",
|
|
111
111
|
"name": "SlotRightAside",
|
|
112
112
|
"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=\"right-aside\" orientation=\"vertical\">\n <nve-button-group>\n <nve-icon-button icon-name=\"branch\"></nve-icon-button>\n <nve-icon-button icon-name=\"sparkles\"></nve-icon-button>\n <nve-icon-button icon-name=\"gear\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\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",
|
|
113
113
|
"summary": "Right-aside slot with a vertical toolbar for actions or navigation.",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
]
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
|
-
"id": "
|
|
121
|
+
"id": "page-slot-subfooter",
|
|
122
122
|
"name": "SlotSubfooter",
|
|
123
123
|
"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 <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n <nve-toolbar slot=\"right-aside\" orientation=\"vertical\">\n <nve-button-group>\n <nve-icon-button icon-name=\"branch\"></nve-icon-button>\n <nve-icon-button icon-name=\"sparkles\"></nve-icon-button>\n <nve-icon-button icon-name=\"gear\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-toolbar slot=\"subfooter\">\n <nve-icon-button icon-name=\"information-circle-stroke\"></nve-icon-button>\n <span nve-text=\"body sm muted\">last updated 12 mins ago</span>\n </nve-toolbar>\n</nve-page>\n",
|
|
124
124
|
"summary": "Subfooter slot with a toolbar for status or metadata.",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
]
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
|
-
"id": "
|
|
132
|
+
"id": "page-slot-footer",
|
|
133
133
|
"name": "SlotFooter",
|
|
134
134
|
"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 <h1 nve-text=\"heading\">main</h1>\n <p nve-text=\"body\">page content</p>\n </main>\n <nve-toolbar slot=\"right-aside\" orientation=\"vertical\">\n <nve-button-group>\n <nve-icon-button icon-name=\"branch\"></nve-icon-button>\n <nve-icon-button icon-name=\"sparkles\"></nve-icon-button>\n <nve-icon-button icon-name=\"gear\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-toolbar slot=\"footer\">\n <a href=\"#\" nve-text=\"link sm\">docmentation</a>\n <a href=\"#\" nve-text=\"link sm\">logging</a>\n <a href=\"#\" nve-text=\"link sm\">contact</a>\n </nve-toolbar>\n</nve-page>\n",
|
|
135
135
|
"summary": "Footer slot with a toolbar for links or actions.",
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
]
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
|
-
"id": "
|
|
143
|
+
"id": "page-invoker-command",
|
|
144
144
|
"name": "InvokerCommand",
|
|
145
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\n slot=\"suffix\"\n commandfor=\"invoker-example\"\n command=\"--toggle\"\n container=\"flat\"\n icon-name=\"menu\"\n aria-label=\"menu\"\n ></nve-icon-button>\n </nve-page-header>\n <nve-page-panel id=\"invoker-example\" slot=\"left\" size=\"sm\" hidden>\n <nve-icon-button\n commandfor=\"invoker-example\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"cancel\"\n aria-label=\"close\"\n ></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.",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
"tags": []
|
|
150
150
|
},
|
|
151
151
|
{
|
|
152
|
-
"id": "
|
|
152
|
+
"id": "page-panel-expandable",
|
|
153
153
|
"name": "PanelExpandable",
|
|
154
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\n commandfor=\"panel-left\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"double-chevron\"\n direction=\"left\"\n aria-label=\"close\"\n ></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\n commandfor=\"panel-right\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"double-chevron\"\n direction=\"right\"\n aria-label=\"close\"\n ></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\n commandfor=\"panel-bottom\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"double-chevron\"\n direction=\"down\"\n aria-label=\"close\"\n ></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.",
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
"tags": []
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
|
-
"id": "
|
|
161
|
+
"id": "page-panel-closable",
|
|
162
162
|
"name": "PanelClosable",
|
|
163
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\n commandfor=\"panel-left\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"cancel\"\n aria-label=\"close\"\n ></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\n commandfor=\"panel-right\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"cancel\"\n aria-label=\"close\"\n ></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\n commandfor=\"panel-bottom\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"cancel\"\n aria-label=\"close\"\n ></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.",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"tags": []
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
|
-
"id": "
|
|
170
|
+
"id": "page-interaction-drawer",
|
|
171
171
|
"name": "InteractionDrawer",
|
|
172
172
|
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-icon-button\n popovertarget=\"drawer\"\n slot=\"prefix\"\n container=\"flat\"\n icon-name=\"menu\"\n aria-label=\"menu\"\n ></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\" slot=\"left-aside\" 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.",
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
"tags": []
|
|
177
177
|
},
|
|
178
178
|
{
|
|
179
|
-
"id": "
|
|
179
|
+
"id": "page-interaction-panel-navigation",
|
|
180
180
|
"name": "InteractionPanelNavigation",
|
|
181
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\n commandfor=\"nav-panel\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"double-chevron\"\n direction=\"left\"\n aria-label=\"close\"\n ></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.",
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
"tags": []
|
|
186
186
|
},
|
|
187
187
|
{
|
|
188
|
-
"id": "
|
|
188
|
+
"id": "page-panel-tabs",
|
|
189
189
|
"name": "PanelTabs",
|
|
190
190
|
"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 slot=\"left\" size=\"sm\">\n <nve-page-panel-header>\n <nve-tabs behavior-select>\n <nve-tabs-item selected>Tab 1</nve-tabs-item>\n <nve-tabs-item>Tab 2</nve-tabs-item>\n <nve-tabs-item>Tab 3</nve-tabs-item>\n </nve-tabs>\n </nve-page-panel-header>\n <nve-page-panel-content> Panel Content </nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
191
191
|
"summary": "Page panel with tabbed header for switching between categorized content views within a sidebar. Use when a panel contains related sections like outline, search, and settings that share the same screen region.",
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
"tags": []
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
|
-
"id": "
|
|
197
|
+
"id": "page-panel-headings",
|
|
198
198
|
"name": "PanelHeadings",
|
|
199
199
|
"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 slot=\"right\" size=\"sm\">\n <nve-page-panel-header>\n <div nve-layout=\"column gap:xs\">\n <h3 nve-text=\"heading medium sm\">Header</h3>\n <h4 nve-text=\"body muted\">Sub Header</h4>\n </div>\n </nve-page-panel-header>\n <nve-page-panel-content> Panel Content </nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
200
200
|
"summary": "Page panel with title and subtitle headings in the header for labeling panel content. Use to provide clear context about what the panel contains, such as a details pane or properties inspector.",
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
"tags": []
|
|
204
204
|
},
|
|
205
205
|
{
|
|
206
|
-
"id": "
|
|
206
|
+
"id": "page-document-scroll",
|
|
207
207
|
"name": "DocumentScroll",
|
|
208
208
|
"template": "<nve-page document-scroll>\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\" style=\"min-height: 110vh\">page content</p>\n </main>\n <nve-toolbar slot=\"footer\">\n <a href=\"#\" nve-text=\"link sm\">docmentation</a>\n <a href=\"#\" nve-text=\"link sm\">logging</a>\n <a href=\"#\" nve-text=\"link sm\">contact</a>\n </nve-toolbar>\n</nve-page>\n",
|
|
209
209
|
"summary": "Use document scroll for static content sites that do not require a fixed navigation.",
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
"tags": []
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
|
-
"id": "
|
|
215
|
+
"id": "page-kitchen-sink",
|
|
216
216
|
"name": "KitchenSink",
|
|
217
217
|
"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 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 <h1 nve-text=\"heading lg\">Session 254a2039f294</h1>\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\">Session ID</span>\n <a nve-text=\"body sm bold link\" href=\"#\">254a2039f294</a>\n </div>\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Build</span>\n <span nve-text=\"body sm bold\">254a2v1801</span>\n </div>\n <div nve-layout=\"row gap:sm align:center\">\n <span nve-text=\"body sm muted\">Location</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-toolbar slot=\"left-aside\" orientation=\"vertical\">\n <nve-button-group>\n <nve-icon-button icon-name=\"play\" size=\"sm\"></nve-icon-button>\n <nve-icon-button icon-name=\"add\"></nve-icon-button>\n <nve-icon-button icon-name=\"delete\"></nve-icon-button>\n </nve-button-group>\n <nve-divider></nve-divider>\n <nve-button-group>\n <nve-icon-button icon-name=\"bounding-box\"></nve-icon-button>\n <nve-icon-button icon-name=\"branch\"></nve-icon-button>\n <nve-icon-button icon-name=\"exclamation-triangle\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-page-panel slot=\"left\" size=\"sm\">\n <nve-page-panel-content>\n <nve-tree behavior-expand>\n <nve-tree-node><a href=\"#\">Browse</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Debug</a></nve-tree-node>\n <nve-tree-node>\n Events\n <nve-tree-node><a href=\"#\">Alert</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Badge</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">Dialog</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node expanded>\n Sensors\n <nve-tree-node><a href=\"#\">front_tele_30fov</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">front_wide_120fov</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">left_fisheye_200fov</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">right_fisheye_200fov</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">rear_left_70fov</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">rear_right_70fov</a></nve-tree-node>\n </nve-tree-node>\n <nve-tree-node>\n Segments\n <nve-tree-node><a href=\"#\">JavaScript</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">HTML</a></nve-tree-node>\n <nve-tree-node><a href=\"#\">CSS</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 <div style=\"min-height: 100vh; width: 1px\"></div>\n </main>\n <nve-page-panel slot=\"bottom\" size=\"sm\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel slot=\"right\" size=\"sm\">\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n <nve-toolbar slot=\"right-aside\" orientation=\"vertical\">\n <nve-button-group>\n <nve-icon-button icon-name=\"sparkles\"></nve-icon-button>\n <nve-icon-button icon-name=\"gear\"></nve-icon-button>\n </nve-button-group>\n </nve-toolbar>\n <nve-toolbar slot=\"subfooter\">\n <nve-icon-button icon-name=\"information-circle-stroke\"></nve-icon-button>\n <span nve-text=\"body sm muted\">last updated 12 mins ago</span>\n </nve-toolbar>\n <nve-toolbar slot=\"footer\">\n <a href=\"#\" nve-text=\"link sm\">docmentation</a>\n <a href=\"#\" nve-text=\"link sm\">logging</a>\n <a href=\"#\" nve-text=\"link sm\">contact</a>\n </nve-toolbar>\n</nve-page>\n",
|
|
218
218
|
"summary": "Stress test of all available slot layouts for nve-page.",
|
|
@@ -223,29 +223,31 @@
|
|
|
223
223
|
]
|
|
224
224
|
},
|
|
225
225
|
{
|
|
226
|
-
"id": "
|
|
226
|
+
"id": "page-layout-card-grid",
|
|
227
227
|
"name": "LayoutCardGrid",
|
|
228
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",
|
|
229
|
-
"summary": "Card grid page layout for
|
|
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,
|
|
232
232
|
"tags": [
|
|
233
|
-
"pattern"
|
|
233
|
+
"pattern",
|
|
234
|
+
"test-case"
|
|
234
235
|
]
|
|
235
236
|
},
|
|
236
237
|
{
|
|
237
|
-
"id": "
|
|
238
|
+
"id": "page-layout-multi-video",
|
|
238
239
|
"name": "LayoutMultiVideo",
|
|
239
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) =>\n this.videos[0].addEventListener(\"loadedmetadata\", () => r(null), { once: true }),\n );\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(\n new CustomEvent(\"timeupdate\", {\n detail: { currentTime: this.currentTime, percentage: (this.currentTime / this.duration) * 100 },\n }),\n );\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",
|
|
240
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.",
|
|
241
242
|
"description": "",
|
|
242
243
|
"composition": true,
|
|
243
244
|
"tags": [
|
|
244
|
-
"pattern"
|
|
245
|
+
"pattern",
|
|
246
|
+
"test-case"
|
|
245
247
|
]
|
|
246
248
|
},
|
|
247
249
|
{
|
|
248
|
-
"id": "
|
|
250
|
+
"id": "page-layout-editor",
|
|
249
251
|
"name": "LayoutEditor",
|
|
250
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\n commandfor=\"console-panel\"\n command=\"--close\"\n slot=\"actions\"\n container=\"inline\"\n icon-name=\"cancel\"\n aria-label=\"close\"\n ></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-stroke\"></nve-icon-button>\n <span nve-text=\"body sm muted\">last updated 12 mins ago</span>\n </nve-toolbar>\n</nve-page>\n",
|
|
251
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.",
|
|
@@ -256,7 +258,7 @@
|
|
|
256
258
|
]
|
|
257
259
|
},
|
|
258
260
|
{
|
|
259
|
-
"id": "
|
|
261
|
+
"id": "page-resize",
|
|
260
262
|
"name": "Resize",
|
|
261
263
|
"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: 200px\" slot=\"left\">\n <nve-page-panel-content>left</nve-page-panel-content>\n </nve-page-panel>\n <nve-resize-handle slot=\"left\" min=\"100\" max=\"400\" value=\"200\" step=\"20\" orientation=\"vertical\"></nve-resize-handle>\n</nve-page>\n<script type=\"module\">\n const handle = document.querySelector(\"nve-resize-handle\");\n const panel = document.querySelector(\"nve-page-panel\");\n handle.addEventListener(\"input\", (e) => (panel.style.width = e.target.value + \"px\"));\n</script>\n",
|
|
262
264
|
"summary": "Resizable left panel with drag handle for adjustable sidebar width. Use when users need to control the balance between navigation or outline panels and main content area.",
|
|
@@ -265,7 +267,7 @@
|
|
|
265
267
|
"tags": []
|
|
266
268
|
},
|
|
267
269
|
{
|
|
268
|
-
"id": "
|
|
270
|
+
"id": "page-resize-multi",
|
|
269
271
|
"name": "ResizeMulti",
|
|
270
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\n slot=\"right\"\n dir=\"rtl\"\n orientation=\"vertical\"\n min=\"100\"\n max=\"480\"\n value=\"320\"\n step=\"20\"\n ></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",
|
|
271
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,7 +276,7 @@
|
|
|
274
276
|
"tags": []
|
|
275
277
|
},
|
|
276
278
|
{
|
|
277
|
-
"id": "
|
|
279
|
+
"id": "page-resize-snap",
|
|
278
280
|
"name": "ResizeSnap",
|
|
279
281
|
"template": "<nve-page style=\"--padding: var(--nve-ref-space-lg)\">\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 <p nve-text=\"body\">Double click the resize handle to snap to the min or max.</p>\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-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</script>\n",
|
|
280
282
|
"summary": "Resize handle with snap-to-boundary behavior on double-click for quickly toggling a panel between collapsed and expanded states. Use for detail panels that users frequently show and hide.",
|
|
@@ -283,7 +285,7 @@
|
|
|
283
285
|
"tags": []
|
|
284
286
|
},
|
|
285
287
|
{
|
|
286
|
-
"id": "
|
|
288
|
+
"id": "page-interaction-panel",
|
|
287
289
|
"name": "InteractionPanel",
|
|
288
290
|
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-icon-button 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 <nve-page-panel slot=\"left\" size=\"sm\" closable hidden>\n <nve-page-panel-header>\n <h3 nve-text=\"heading medium sm\">Panel Header</h3>\n </nve-page-panel-header>\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<script type=\"module\">\n const button = document.querySelector('[aria-label=\"menu\"]');\n const panel = document.querySelector(\"nve-page-panel\");\n button.addEventListener(\"click\", () => (panel.hidden = !panel.hidden));\n panel.addEventListener(\"close\", () => (panel.hidden = true));\n</script>\n",
|
|
289
291
|
"summary": "Example of using explicit event listeners to control the state of a page panel.",
|
|
@@ -295,7 +297,7 @@
|
|
|
295
297
|
]
|
|
296
298
|
},
|
|
297
299
|
{
|
|
298
|
-
"id": "
|
|
300
|
+
"id": "page-panel-expandable-state",
|
|
299
301
|
"name": "PanelExpandableState",
|
|
300
302
|
"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 expandable slot=\"left\" size=\"sm\">\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 <p nve-text=\"body\">page content</p>\n </main>\n <nve-page-panel expandable slot=\"right\" size=\"sm\">\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel expandable slot=\"bottom\" size=\"sm\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
301
303
|
"summary": "Expandable page panels in left, right, and bottom slots.",
|
|
@@ -305,7 +307,7 @@
|
|
|
305
307
|
"tags": []
|
|
306
308
|
},
|
|
307
309
|
{
|
|
308
|
-
"id": "
|
|
310
|
+
"id": "page-panel-closable-state",
|
|
309
311
|
"name": "PanelClosableState",
|
|
310
312
|
"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 closable slot=\"left\" size=\"sm\">\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 <p nve-text=\"body\">page content</p>\n </main>\n <nve-page-panel closable slot=\"right\" size=\"sm\">\n <nve-page-panel-content>right</nve-page-panel-content>\n </nve-page-panel>\n <nve-page-panel closable slot=\"bottom\" size=\"sm\">\n <nve-page-panel-content>bottom</nve-page-panel-content>\n </nve-page-panel>\n</nve-page>\n",
|
|
311
313
|
"summary": "Closable page panels in left, right, and bottom slots.",
|
package/dist/page/page2.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"entrypoint": "@nvidia-elements/core/page-header/page-header.examples.json",
|
|
4
4
|
"items": [
|
|
5
5
|
{
|
|
6
|
-
"id": "
|
|
6
|
+
"id": "page-header",
|
|
7
7
|
"name": "Default",
|
|
8
8
|
"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\" container=\"flat\" icon-name=\"chat-bubble\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" container=\"flat\" icon-name=\"search\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" container=\"flat\" icon-name=\"switch-apps\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\">EL</nve-icon-button>\n</nve-page-header>\n",
|
|
9
9
|
"summary": "Basic page header with logo, navigation links, and user actions in a standard layout structure.",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"tags": []
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
"id": "
|
|
15
|
+
"id": "page-header-dropdown-menu",
|
|
16
16
|
"name": "DropdownMenu",
|
|
17
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\"\n >EL</nve-icon-button\n >\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.",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"tags": []
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
"id": "
|
|
24
|
+
"id": "page-header-menu-button",
|
|
25
25
|
"name": "MenuButton",
|
|
26
26
|
"template": "<nve-page-header>\n <nve-icon-button 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 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\" container=\"flat\" icon-name=\"chat-bubble\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" container=\"flat\" icon-name=\"search\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" container=\"flat\" icon-name=\"switch-apps\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\">EL</nve-icon-button>\n</nve-page-header>\n",
|
|
27
27
|
"summary": "Use a Icon Button to represent collapsible top-level navigation, optimal for mobile or constrained viewport sizes.",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"tags": []
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
"id": "
|
|
33
|
+
"id": "page-header-app-logo",
|
|
34
34
|
"name": "AppLogo",
|
|
35
35
|
"template": "<nve-page-header>\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"yellow-nova\">AV</nve-logo>\n <h2 nve-text=\"heading\" slot=\"prefix\">Infrastructure</h2>\n <nve-button container=\"flat\" selected><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\" container=\"flat\" icon-name=\"chat-bubble\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" container=\"flat\" icon-name=\"search\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" container=\"flat\" icon-name=\"switch-apps\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\">EL</nve-icon-button>\n</nve-page-header>\n",
|
|
36
36
|
"summary": "Use the Logo element when representing an application that is part of a suite of applications in a given problem domain.",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"tags": []
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
|
-
"id": "
|
|
42
|
+
"id": "page-header-prefix-navigation",
|
|
43
43
|
"name": "PrefixNavigation",
|
|
44
44
|
"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 container=\"flat\"><a href=\"#\">Features</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Guide</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Docs</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Teams</a></nve-button>\n <nve-button slot=\"suffix\" container=\"flat\"><a href=\"#\">Login</a></nve-button>\n <nve-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\"><a href=\"#\">Start Building</a></nve-button>\n</nve-page-header>\n",
|
|
45
45
|
"summary": "Page header with primary navigation positioned after the logo and branding area.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"tags": []
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
|
-
"id": "
|
|
51
|
+
"id": "page-header-center-navigation",
|
|
52
52
|
"name": "CenterNavigation",
|
|
53
53
|
"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 <div nve-layout=\"row align:center gap:xxs full\">\n <nve-button container=\"flat\"><a href=\"#\">Features</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Guide</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Docs</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Teams</a></nve-button>\n </div>\n <nve-button slot=\"suffix\" container=\"flat\"><a href=\"#\">Login</a></nve-button>\n <nve-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\"><a href=\"#\">Start Building</a></nve-button>\n</nve-page-header>\n",
|
|
54
54
|
"summary": "Page header with navigation centered in the available space for balanced visual hierarchy.",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"tags": []
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
"id": "
|
|
60
|
+
"id": "page-header-suffix-navigation",
|
|
61
61
|
"name": "SuffixNavigation",
|
|
62
62
|
"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 slot=\"suffix\" container=\"flat\"><a href=\"#\">Features</a></nve-button>\n <nve-button slot=\"suffix\" container=\"flat\"><a href=\"#\">Guide</a></nve-button>\n <nve-button slot=\"suffix\" container=\"flat\"><a href=\"#\">Docs</a></nve-button>\n <nve-button slot=\"suffix\" container=\"flat\"><a href=\"#\">Teams</a></nve-button>\n <nve-button slot=\"suffix\" container=\"flat\"><a href=\"#\">Login</a></nve-button>\n <nve-button slot=\"suffix\" interaction=\"emphasis\" size=\"sm\"><a href=\"#\">Start Building</a></nve-button>\n</nve-page-header>\n",
|
|
63
63
|
"summary": "Page header with all navigation positioned at the end for common and persistent user actions between page navigation.",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"tags": []
|
|
67
67
|
},
|
|
68
68
|
{
|
|
69
|
-
"id": "
|
|
69
|
+
"id": "page-header-search",
|
|
70
70
|
"name": "Search",
|
|
71
71
|
"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 container=\"flat\"><a href=\"#\">Link 1</a></nve-button>\n <nve-button container=\"flat\"><a href=\"#\">Link 2</a></nve-button>\n <nve-search slot=\"suffix\" rounded style=\"width: 220px\">\n <input type=\"search\" aria-label=\"search\" />\n </nve-search>\n <nve-button slot=\"suffix\" container=\"flat\"><a href=\"#\">Login</a></nve-button>\n</nve-page-header>\n",
|
|
72
72
|
"summary": "Page header with integrated search functionality for content discovery within the application.",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"tags": []
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
|
-
"id": "
|
|
78
|
+
"id": "page-header-user-detail",
|
|
79
79
|
"name": "UserDetail",
|
|
80
80
|
"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 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\">GH</nve-icon-button>\n <div slot=\"suffix\" nve-layout=\"column gap:md\">\n <p nve-text=\"label sm trim:none\">Grace Hopper</p>\n <p nve-text=\"body sm muted trim:none nowrap\">infra-0087ef65-19e80</p>\n </div>\n</nve-page-header>\n",
|
|
81
81
|
"summary": "Page header displaying user information and avatar for personalized application experiences.",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"entrypoint": "@nvidia-elements/core/page-loader/page-loader.examples.json",
|
|
4
4
|
"items": [
|
|
5
5
|
{
|
|
6
|
-
"id": "
|
|
6
|
+
"id": "page-loader",
|
|
7
7
|
"name": "Default",
|
|
8
8
|
"template": "<nve-page-loader></nve-page-loader>\n",
|
|
9
9
|
"summary": "Full-page loading indicator displaying centered spinner for initial page load states.",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"tags": []
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
"id": "
|
|
15
|
+
"id": "page-loader-interactive",
|
|
16
16
|
"name": "Interactive",
|
|
17
17
|
"template": "<nve-button id=\"loader-btn\">trigger loader</nve-button>\n<nve-page-loader hidden></nve-page-loader>\n<script type=\"module\">\n let loader = document.querySelector(\"nve-page-loader\");\n let btn = document.querySelector(\"#loader-btn\");\n btn.addEventListener(\"click\", () => (loader.hidden = false));\n</script>\n",
|
|
18
18
|
"summary": "Interactive page loader that starts programmatically via button click. Use when user actions such as form submissions, data refreshes, or navigation events start loading states rather than on initial page load.",
|