@nvidia-elements/core 2.8.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/accordion/accordion.examples.json +9 -9
- package/dist/accordion/accordion2.js +4 -4
- package/dist/alert/alert-group2.js +1 -1
- package/dist/alert/alert.examples.json +3 -3
- package/dist/alert/alert2.js +1 -1
- package/dist/avatar/avatar-group2.js +1 -1
- package/dist/avatar/avatar2.js +1 -1
- package/dist/badge/badge.examples.json +2 -2
- package/dist/badge/badge2.js +1 -1
- package/dist/breadcrumb/breadcrumb.examples.json +1 -1
- package/dist/breadcrumb/breadcrumb2.js +1 -1
- package/dist/bundle.d.ts +2 -0
- package/dist/bundles/index.d.ts +211 -0
- package/dist/bundles/index.js +6 -6
- package/dist/button/button.examples.json +3 -3
- package/dist/button/button2.js +1 -1
- package/dist/button-group/button-group2.js +1 -1
- package/dist/card/card.examples.json +2 -2
- package/dist/card/card2.js +4 -4
- package/dist/chat-message/chat-message.examples.json +4 -4
- package/dist/chat-message/chat-message2.js +1 -1
- package/dist/checkbox/checkbox-group2.js +1 -1
- package/dist/checkbox/checkbox2.js +1 -1
- package/dist/color/color2.js +1 -1
- package/dist/combobox/combobox.examples.json +5 -5
- package/dist/combobox/combobox2.js +1 -1
- package/dist/copy-button/copy-button.examples.json +2 -2
- package/dist/copy-button/copy-button2.js +1 -1
- package/dist/custom-elements-jsx.d.ts +112 -1
- package/dist/custom-elements-vue.d.ts +110 -1
- package/dist/custom-elements.json +3554 -291
- package/dist/data.html.json +95 -1
- package/dist/data.snippets.json +45 -45
- package/dist/date/date2.js +1 -1
- 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 +3 -3
- package/dist/dialog/dialog2.js +1 -1
- package/dist/divider/divider.examples.json +1 -1
- package/dist/divider/divider2.js +1 -1
- 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/drawer2.js +1 -1
- package/dist/dropdown/dropdown-footer2.js +1 -1
- package/dist/dropdown/dropdown-header2.js +1 -1
- 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 +1 -1
- package/dist/dropzone/dropzone2.js +1 -1
- package/dist/file/file2.js +1 -1
- package/dist/format-bytes/format-bytes2.js +1 -1
- package/dist/format-datetime/format-datetime.examples.json +3 -3
- package/dist/format-datetime/format-datetime2.js +1 -1
- package/dist/format-number/format-number2.js +1 -1
- package/dist/format-relative-time/format-relative-time2.js +1 -1
- package/dist/format-truncate/format-truncate.examples.json +4 -4
- package/dist/format-truncate/format-truncate2.js +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 +1 -1
- package/dist/forms/control-group/control-group2.js +1 -1
- package/dist/forms/control-message/control-message2.js +1 -1
- package/dist/gauge/gauge.examples.json +2 -2
- package/dist/gauge/gauge2.js +1 -1
- 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 +34 -34
- package/dist/grid/grid2.js +1 -1
- package/dist/grid/header/header2.js +1 -1
- package/dist/grid/placeholder/placeholder2.js +1 -1
- package/dist/grid/row/row2.js +1 -1
- package/dist/icon/icon2.js +2 -2
- package/dist/icon-button/icon-button2.js +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input2.js +1 -1
- package/dist/internal/controllers/gesture.controller.d.ts +122 -42
- package/dist/internal/controllers/gesture.controller.examples.js.map +1 -1
- package/dist/internal/controllers/gesture.controller.examples.json +2 -2
- package/dist/internal/controllers/gesture.controller.js +300 -159
- package/dist/internal/controllers/gesture.controller.js.map +1 -1
- package/dist/internal/controllers/key-state.controller.d.ts +18 -0
- package/dist/internal/controllers/key-state.controller.js +84 -0
- package/dist/internal/controllers/key-state.controller.js.map +1 -0
- package/dist/internal/controllers/keynav-grid.controller.examples.json +1 -1
- package/dist/internal/controllers/keynav-list.controller.examples.json +1 -1
- package/dist/internal/controllers/keynav-spatial.controller.d.ts +4 -1
- package/dist/internal/controllers/keynav-spatial.controller.js +7 -6
- package/dist/internal/controllers/keynav-spatial.controller.js.map +1 -1
- package/dist/internal/controllers/popover.examples.json +2 -2
- package/dist/internal/index.d.ts +2 -0
- package/dist/internal/index.js +29 -27
- package/dist/internal/services/global.service.js +1 -1
- package/dist/internal/utils/dom.d.ts +1 -0
- package/dist/internal/utils/dom.js +42 -38
- package/dist/internal/utils/dom.js.map +1 -1
- package/dist/internal/utils/focus.d.ts +2 -0
- package/dist/internal/utils/focus.js +14 -7
- package/dist/internal/utils/focus.js.map +1 -1
- package/dist/internal/utils/numeric.d.ts +3 -0
- package/dist/internal/utils/numeric.js +14 -0
- package/dist/internal/utils/numeric.js.map +1 -0
- package/dist/logo/logo.examples.json +1 -1
- package/dist/logo/logo2.js +1 -1
- package/dist/menu/menu-item2.js +1 -1
- package/dist/menu/menu.examples.js.map +1 -1
- package/dist/menu/menu.examples.json +4 -4
- package/dist/menu/menu2.js +1 -1
- package/dist/month/month2.js +1 -1
- package/dist/notification/notification-group2.js +1 -1
- package/dist/notification/notification.examples.json +3 -3
- 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.json +10 -10
- package/dist/page/page2.js +1 -1
- package/dist/page-header/page-header.examples.json +1 -1
- package/dist/page-header/page-header2.js +1 -1
- package/dist/page-loader/page-loader2.js +1 -1
- package/dist/pagination/pagination.examples.json +6 -6
- package/dist/pagination/pagination2.js +1 -1
- package/dist/panel/panel2.js +4 -4
- package/dist/password/password2.js +1 -1
- package/dist/preferences-input/preferences-input.examples.json +1 -1
- package/dist/preferences-input/preferences-input2.js +1 -1
- package/dist/progress-bar/progress-bar.examples.json +1 -1
- package/dist/progress-bar/progress-bar2.js +1 -1
- package/dist/progress-ring/progress-ring2.js +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
- package/dist/pulse/pulse2.js +1 -1
- package/dist/radio/radio-group2.js +1 -1
- package/dist/radio/radio2.js +1 -1
- package/dist/range/range.examples.json +1 -1
- package/dist/range/range2.js +1 -1
- package/dist/resize-handle/resize-handle.examples.json +4 -4
- package/dist/resize-handle/resize-handle2.js +6 -10
- package/dist/resize-handle/resize-handle2.js.map +1 -1
- package/dist/search/search2.js +1 -1
- package/dist/select/select2.js +1 -1
- package/dist/skeleton/skeleton2.js +1 -1
- package/dist/sort-button/sort-button2.js +1 -1
- package/dist/sparkline/sparkline.examples.json +2 -2
- package/dist/sparkline/sparkline2.js +1 -1
- package/dist/star-rating/star-rating2.js +1 -1
- package/dist/steps/steps2.js +2 -2
- package/dist/switch/switch-group2.js +1 -1
- package/dist/switch/switch2.js +1 -1
- package/dist/tabs/tabs-group2.js +1 -1
- package/dist/tabs/tabs.examples.json +4 -4
- package/dist/tabs/tabs2.js +2 -2
- package/dist/tag/tag.examples.json +1 -1
- package/dist/tag/tag2.js +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 +1 -1
- package/dist/toast/toast.examples.json +1 -1
- 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/toggletip2.js +1 -1
- package/dist/toolbar/toolbar2.js +1 -1
- package/dist/tooltip/tooltip.examples.json +2 -2
- package/dist/tooltip/tooltip2.js +1 -1
- package/dist/tree/tree-node2.js +1 -1
- package/dist/tree/tree2.js +1 -1
- package/dist/viewport/define.d.ts +7 -0
- package/dist/viewport/define.js +7 -0
- package/dist/viewport/define.js.map +1 -0
- package/dist/viewport/index.d.ts +3 -0
- package/dist/viewport/index.js +3 -0
- package/dist/viewport/viewport-animation.controller.d.ts +21 -0
- package/dist/viewport/viewport-animation.controller.js +93 -0
- package/dist/viewport/viewport-animation.controller.js.map +1 -0
- package/dist/viewport/viewport-autofit.controller.d.ts +18 -0
- package/dist/viewport/viewport-autofit.controller.js +105 -0
- package/dist/viewport/viewport-autofit.controller.js.map +1 -0
- package/dist/viewport/viewport-fitting.utils.d.ts +36 -0
- package/dist/viewport/viewport-fitting.utils.js +35 -0
- package/dist/viewport/viewport-fitting.utils.js.map +1 -0
- package/dist/viewport/viewport-gesture-navigation.controller.d.ts +29 -0
- package/dist/viewport/viewport-gesture-navigation.controller.js +311 -0
- package/dist/viewport/viewport-gesture-navigation.controller.js.map +1 -0
- package/dist/viewport/viewport-gridlines.d.ts +38 -0
- package/dist/viewport/viewport-gridlines.js +6 -0
- package/dist/viewport/viewport-gridlines.js.map +1 -0
- package/dist/viewport/viewport-gridlines.utils.d.ts +11 -0
- package/dist/viewport/viewport-gridlines.utils.js +54 -0
- package/dist/viewport/viewport-gridlines.utils.js.map +1 -0
- package/dist/viewport/viewport-gridlines2.js +154 -0
- package/dist/viewport/viewport-gridlines2.js.map +1 -0
- package/dist/viewport/viewport-navigation.controller.d.ts +27 -0
- package/dist/viewport/viewport-navigation.controller.js +142 -0
- package/dist/viewport/viewport-navigation.controller.js.map +1 -0
- package/dist/viewport/viewport-navigation.types.d.ts +9 -0
- package/dist/viewport/viewport-projection.utils.d.ts +7 -0
- package/dist/viewport/viewport-projection.utils.js +25 -0
- package/dist/viewport/viewport-projection.utils.js.map +1 -0
- package/dist/viewport/viewport.d.ts +92 -0
- package/dist/viewport/viewport.examples.js +6 -0
- package/dist/viewport/viewport.examples.js.map +1 -0
- package/dist/viewport/viewport.examples.json +60 -0
- package/dist/viewport/viewport.js +6 -0
- package/dist/viewport/viewport.js.map +1 -0
- package/dist/viewport/viewport.types.d.ts +66 -0
- package/dist/viewport/viewport2.js +375 -0
- package/dist/viewport/viewport2.js.map +1 -0
- package/dist/week/week2.js +1 -1
- package/package.json +14 -2
package/dist/range/range2.js
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
{
|
|
24
24
|
"id": "resize-handle-split-horizontal",
|
|
25
25
|
"name": "SplitHorizontal",
|
|
26
|
-
"template": "<section
|
|
26
|
+
"template": "<section id=\"split-horizontal-demo\" style=\"display: grid; width: 250px; height: 250px; grid-template-rows: 1fr auto 1fr; border: 1px solid var(--nve-ref-border-color)\">\n <div style=\"background: hsla(0, 0%, 65%, 0.1)\"></div>\n <nve-resize-handle min=\"20\" max=\"230\" value=\"125\" step=\"20\"></nve-resize-handle>\n <div></div>\n</section>\n<script type=\"module\">\n const handle = document.querySelector(\"#split-horizontal-demo nve-resize-handle\");\n const split = document.querySelector(\"#split-horizontal-demo\");\n handle.addEventListener(\"input\", (e) => (split.style.gridTemplateRows = \"1fr auto \" + e.target.value + \"px\"));\n</script>\n",
|
|
27
27
|
"summary": "Horizontal split pane with draggable divider that adjusts top and bottom panel heights.",
|
|
28
28
|
"description": "",
|
|
29
29
|
"composition": false,
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
{
|
|
33
33
|
"id": "resize-handle-split-vertical",
|
|
34
34
|
"name": "SplitVertical",
|
|
35
|
-
"template": "<section
|
|
35
|
+
"template": "<section id=\"split-vertical-demo\" style=\"display: grid; width: 250px; height: 250px; grid-template-columns: 1fr auto 1fr; border: 1px solid var(--nve-ref-border-color)\">\n <div style=\"background: hsla(0, 0%, 65%, 0.1)\"></div>\n <nve-resize-handle orientation=\"vertical\" min=\"20\" max=\"230\" value=\"125\" step=\"20\"></nve-resize-handle>\n <div></div>\n</section>\n<script type=\"module\">\n const handle = document.querySelector(\"#split-vertical-demo nve-resize-handle\");\n const split = document.querySelector(\"#split-vertical-demo\");\n handle.addEventListener(\"input\", (e) => (split.style.gridTemplateColumns = e.target.value + \"px auto 1fr\"));\n</script>\n",
|
|
36
36
|
"summary": "Vertical split pane with draggable divider that adjusts left and right panel widths.",
|
|
37
37
|
"description": "",
|
|
38
38
|
"composition": false,
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
{
|
|
42
42
|
"id": "resize-handle-form",
|
|
43
43
|
"name": "Form",
|
|
44
|
-
"template": "<form id=\"form-demo\" nve-layout=\"column gap:lg\">\n <section
|
|
44
|
+
"template": "<form id=\"form-demo\" nve-layout=\"column gap:lg\">\n <section style=\"display: grid; width: 250px; height: 250px; grid-template-rows: 1fr auto 1fr; border: 1px solid var(--nve-ref-border-color)\">\n <div></div>\n <nve-resize-handle name=\"resize\" min=\"20\" max=\"230\" value=\"125\" step=\"20\"></nve-resize-handle>\n <div style=\"background: hsla(0, 0%, 65%, 0.1)\"></div>\n </section>\n <nve-button>submit</nve-button>\n</form>\n<script type=\"module\">\n const form = document.querySelector(\"#form-demo\");\n const split = document.querySelector(\"#form-demo section\");\n const handle = document.querySelector(\"#form-demo nve-resize-handle\");\n form.addEventListener(\"submit\", (e) => {\n e.preventDefault();\n console.log(Object.fromEntries(new FormData(form)));\n console.log(handle.form);\n });\n handle.addEventListener(\"change\", (e) => {\n console.log(\"change\", e.target.value);\n });\n handle.addEventListener(\"input\", (e) => {\n console.log(\"input\", e.target.value);\n split.style.gridTemplateRows = \"1fr auto \" + e.target.value + \"px\";\n });\n</script>\n",
|
|
45
45
|
"summary": "Resize handle as a form control with name attribute for submitting resize values.",
|
|
46
46
|
"description": "",
|
|
47
47
|
"composition": false,
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
{
|
|
51
51
|
"id": "resize-handle-prevent",
|
|
52
52
|
"name": "PreventDefault",
|
|
53
|
-
"template": "<form id=\"prevent-default-demo\" nve-layout=\"column gap:lg\">\n <section
|
|
53
|
+
"template": "<form id=\"prevent-default-demo\" nve-layout=\"column gap:lg\">\n <section style=\"display: grid; width: 250px; height: 250px; grid-template-rows: 1fr auto 1fr; border: 1px solid var(--nve-ref-border-color)\">\n <div></div>\n <nve-resize-handle name=\"resize\" min=\"20\" max=\"230\" value=\"125\" step=\"20\"></nve-resize-handle>\n <div style=\"background: hsla(0, 0%, 65%, 0.1)\"></div>\n </section>\n</form>\n<script type=\"module\">\n const split = document.querySelector(\"#prevent-default-demo section\");\n const handle = document.querySelector(\"#prevent-default-demo nve-resize-handle\");\n handle.addEventListener(\"toggle\", (e) => {\n e.preventDefault();\n console.log(\"toggle defaultPrevented:\", e.defaultPrevented);\n });\n handle.addEventListener(\"input\", (e) => {\n split.style.gridTemplateRows = \"1fr auto \" + e.target.value + \"px\";\n });\n</script>\n",
|
|
54
54
|
"summary": "Resize handle with prevented default toggle to disable snap-to-boundary on double-click. Use when the default collapse/expand behavior conflicts with custom resize constraints or when you need full control over toggle logic.",
|
|
55
55
|
"description": "",
|
|
56
56
|
"composition": false,
|
|
@@ -18,7 +18,7 @@ var u = class extends c(a) {
|
|
|
18
18
|
static {
|
|
19
19
|
this.metadata = {
|
|
20
20
|
tag: "nve-resize-handle",
|
|
21
|
-
version: "2.
|
|
21
|
+
version: "2.9.0",
|
|
22
22
|
valueSchema: { type: "number" }
|
|
23
23
|
};
|
|
24
24
|
}
|
|
@@ -31,21 +31,17 @@ var u = class extends c(a) {
|
|
|
31
31
|
}
|
|
32
32
|
constructor() {
|
|
33
33
|
super(), this.orientation = "horizontal", this.min = 0, this.max = 100, this.step = 10, this.#t = new t(this), this.i18n = this.#t.i18n, this.#i = 0, this.#o = (e) => {
|
|
34
|
-
|
|
34
|
+
let t = e.detail;
|
|
35
|
+
t.kind === "pointerdown" ? t.event.button === 0 && t.event.isPrimary && this.#r === void 0 && t.claim({ kind: "drag" }) && this.#c(t.event.pointerId) : t.kind === "pointerend" && t.event.pointerId === this.#r && (t.interrupted ? this.#d() : this.#u());
|
|
35
36
|
}, this.#s = (e) => {
|
|
36
37
|
e.detail.kind === "drag" && e.detail.event.pointerId === this.#r && this.#l(e.detail);
|
|
37
|
-
}, this.value = this.value ?? 50, this.#i = this.valueAsNumber, this.#n = new e(this, {
|
|
38
|
-
drag: !0,
|
|
39
|
-
pan: !1,
|
|
40
|
-
pinch: !1,
|
|
41
|
-
wheel: !1
|
|
42
|
-
}) });
|
|
38
|
+
}, this.value = this.value ?? 50, this.#i = this.valueAsNumber, this.#n = new e(this, { touchAction: "none" });
|
|
43
39
|
}
|
|
44
40
|
connectedCallback() {
|
|
45
|
-
super.connectedCallback(), this._internals.role = "none", this.addEventListener("nve-gesture", this.#s), this.addEventListener("nve-
|
|
41
|
+
super.connectedCallback(), this._internals.role = "none", this.addEventListener("nve-gesture", this.#s), this.addEventListener("nve-gesture-input", this.#o);
|
|
46
42
|
}
|
|
47
43
|
disconnectedCallback() {
|
|
48
|
-
this.removeEventListener("nve-gesture", this.#s), this.removeEventListener("nve-
|
|
44
|
+
this.removeEventListener("nve-gesture", this.#s), this.removeEventListener("nve-gesture-input", this.#o), this.#d(), super.disconnectedCallback();
|
|
49
45
|
}
|
|
50
46
|
firstUpdated(e) {
|
|
51
47
|
super.firstUpdated(e), this.#n.target = this, this.addEventListener("dblclick", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-handle2.js","names":[],"sources":["../../src/resize-handle/resize-handle.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement, type PropertyValues } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property } from 'lit/decorators/property.js';\nimport { FormControlMixin } from '@nvidia-elements/forms/mixins';\nimport {\n GestureController,\n I18nController,\n useStyles,\n type Gesture,\n type
|
|
1
|
+
{"version":3,"file":"resize-handle2.js","names":[],"sources":["../../src/resize-handle/resize-handle.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement, type PropertyValues } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property } from 'lit/decorators/property.js';\nimport { FormControlMixin } from '@nvidia-elements/forms/mixins';\nimport {\n GestureController,\n I18nController,\n useStyles,\n type Gesture,\n type GestureInput\n} from '@nvidia-elements/core/internal';\nimport styles from './resize-handle.css?inline';\n\n/**\n * @element nve-resize-handle\n * @description A resize-handle slider is a control that enables users to resize views or panels vertically or horizontally.\n * @documentation https://nvidia.github.io/elements/docs/elements/resize-handle/\n * @since 1.27.0\n * @entrypoint \\@nvidia-elements/core/resize-handle\n * @event toggle - Dispatched when the resize handle is double clicked.\n * @cssprop --background\n * @cssprop --line-width\n * @cssprop --target-size\n * @cssprop --cursor\n\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/slider/\n *\n */\nexport class ResizeHandle extends FormControlMixin<typeof LitElement, number>(LitElement) {\n /**\n * Determines the orientation direction of the resize handle.\n */\n @property({ type: String, reflect: true }) orientation?: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Determines the min resize value.\n */\n @property({ type: Number, reflect: true }) min = 0;\n\n /**\n * Determines the max resize value.\n */\n @property({ type: Number, reflect: true }) max = 100;\n\n /**\n * Determines the value step change.\n */\n @property({ type: Number, reflect: true }) step = 10;\n\n static styles = useStyles([styles]);\n\n get #range() {\n return this.shadowRoot!.querySelector('input')!;\n }\n\n static readonly metadata = {\n tag: 'nve-resize-handle',\n version: '0.0.0',\n valueSchema: {\n type: 'number' as const\n }\n };\n\n readonly #i18nController: I18nController<this> = new I18nController<this>(this);\n\n readonly #gestureController: GestureController;\n\n #dragPointerId?: number;\n\n /**\n * Updates internal string values for internationalization.\n */\n @property({ type: Object }) i18n = this.#i18nController.i18n;\n\n #offset = 0;\n\n render() {\n return html`\n <div internal-host>\n <div class=\"line\" part=\"_line\"></div>\n <input aria-label=${ifDefined(this.ariaLabel ?? this.i18n.resize)} type=\"range\" min=${this.min} max=${this.max} .valueAsNumber=${this.valueAsNumber} @input=${(e: Event) => this.#setInput((e.target as HTMLInputElement).valueAsNumber)} @change=${(e: Event) => this.#setChange((e.target as HTMLInputElement).valueAsNumber)} step=${this.step} />\n </div>\n `;\n }\n\n constructor() {\n super();\n this.value = this.value ?? 50;\n this.#offset = this.valueAsNumber;\n this.#gestureController = new GestureController(this, { touchAction: 'none' });\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._internals.role = 'none';\n this.addEventListener('nve-gesture', this.#handleGesture as EventListener);\n this.addEventListener('nve-gesture-input', this.#handleGestureInput as EventListener);\n }\n\n disconnectedCallback() {\n this.removeEventListener('nve-gesture', this.#handleGesture as EventListener);\n this.removeEventListener('nve-gesture-input', this.#handleGestureInput as EventListener);\n this.#cancelDrag();\n super.disconnectedCallback();\n }\n\n firstUpdated(props: PropertyValues) {\n super.firstUpdated(props);\n this.#gestureController.target = this;\n this.addEventListener('dblclick', () => {\n if (!this.dispatchEvent(new CustomEvent('toggle', { cancelable: true, bubbles: true, composed: true }))) {\n return;\n }\n this.#toggle();\n });\n }\n\n #toggle() {\n const value = this.valueAsNumber <= this.max && this.valueAsNumber !== this.min ? this.min : this.max;\n this.#setInput(value);\n this.#setChange(value);\n }\n\n #handleGestureInput = (event: CustomEvent<GestureInput>): void => {\n const input = event.detail;\n if (input.kind === 'pointerdown') {\n const canStartDrag = input.event.button === 0 && input.event.isPrimary && this.#dragPointerId === undefined;\n if (canStartDrag && input.claim({ kind: 'drag' })) this.#dragStart(input.event.pointerId);\n } else if (input.kind === 'pointerend' && input.event.pointerId === this.#dragPointerId) {\n if (input.interrupted) this.#cancelDrag();\n else this.#dragEnd();\n }\n };\n\n #handleGesture = (event: CustomEvent<Gesture<undefined>>): void => {\n if (event.detail.kind === 'drag' && event.detail.event.pointerId === this.#dragPointerId) {\n this.#dragMove(event.detail);\n }\n };\n\n #dragStart(pointerId: number) {\n this.#dragPointerId = pointerId;\n this.#range.step = '1';\n this._internals.states.add('active');\n this.#offset = this.valueAsNumber;\n }\n\n #dragMove(gesture: Extract<Gesture<undefined>, { kind: 'drag' }>) {\n const offset =\n (this.orientation === 'vertical' ? gesture.movementX : -gesture.movementY) * (this.dir === 'rtl' ? -1 : 1);\n this.#offset = Math.max(this.min, Math.min(this.max, this.#offset + offset));\n this.#setInput(this.#offset);\n }\n\n #dragEnd() {\n this.#offset = this.valueAsNumber;\n this.#range.step = `${this.step}`;\n this.#dragPointerId = undefined;\n this._internals.states.delete('active');\n this.#setChange(this.#offset);\n }\n\n #cancelDrag() {\n if (this.#dragPointerId === undefined) return;\n this.#dragPointerId = undefined;\n this.#range.step = `${this.step}`;\n this._internals.states.delete('active');\n }\n\n #setInput(value: number) {\n this.#updateValue(value);\n this.dispatchInputEvent();\n }\n\n #setChange(value: number) {\n this.#updateValue(value);\n this.dispatchChangeEvent();\n }\n\n #updateValue(value: number) {\n if (value <= this.max && value >= this.min) {\n this.valueAsNumber = value;\n }\n }\n}\n"],"mappings":"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"}
|
package/dist/search/search2.js
CHANGED
package/dist/select/select2.js
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
{
|
|
33
33
|
"id": "sparkline-inline-with-text",
|
|
34
34
|
"name": "InlineWithText",
|
|
35
|
-
"template": "<div nve-layout=\"column gap:lg\">\n <p nve-text=\"body loose\">\n This week's lane keeping safety score trend\n <nve-sparkline
|
|
35
|
+
"template": "<div nve-layout=\"column gap:lg\">\n <p nve-text=\"body loose\">\n This week's lane keeping safety score trend\n <nve-sparkline mark=\"area\" status=\"success\" data=\"[86, 87, 86, 88, 89, 90, 92, 93]\" aria-label=\"lane keeping safety score trend\"></nve-sparkline>\n shows a steady rise after an early dip, with decreasing interventions per shift:\n <nve-sparkline mark=\"column\" status=\"accent\" data=\"[16, 14, 15, 13, 12, 11, 10]\" aria-label=\"lane keeping interventions per shift\"></nve-sparkline>, and predominantly successful route outcomes:\n <nve-sparkline mark=\"winloss\" status=\"success\" data=\"[1, 1, -1, 1, 0, 1, 1]\" aria-label=\"lane keeping route outcomes\"></nve-sparkline>.\n </p>\n</div>\n",
|
|
36
36
|
"summary": "Sparklines inherit font size and flow inline with surrounding text and metrics.",
|
|
37
37
|
"description": "",
|
|
38
38
|
"composition": false,
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
{
|
|
42
42
|
"id": "sparkline-data-grid",
|
|
43
43
|
"name": "DataGrid",
|
|
44
|
-
"template": "<nve-grid>\n <nve-grid-header>\n <nve-grid-column>Autonomy Service</nve-grid-column>\n <nve-grid-column>Safety Score</nve-grid-column>\n <nve-grid-column>Interventions / Shift</nve-grid-column>\n <nve-grid-column>Route Outcome</nve-grid-column>\n </nve-grid-header>\n <nve-grid-row>\n <nve-grid-cell>Lane Keeping</nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline
|
|
44
|
+
"template": "<nve-grid>\n <nve-grid-header>\n <nve-grid-column>Autonomy Service</nve-grid-column>\n <nve-grid-column>Safety Score</nve-grid-column>\n <nve-grid-column>Interventions / Shift</nve-grid-column>\n <nve-grid-column>Route Outcome</nve-grid-column>\n </nve-grid-header>\n <nve-grid-row>\n <nve-grid-cell>Lane Keeping</nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Lane Keeping 30 day safety score trend\" mark=\"area\" status=\"success\" min=\"0\" max=\"100\" data=\"[86, 87, 86, 88, 89, 90, 92, 93]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Lane Keeping interventions per shift\" mark=\"column\" status=\"success\" min=\"0\" max=\"50\" data=\"[12, 11, 12, 10, 9, 8, 7, 6]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Lane Keeping route outcomes\" mark=\"winloss\" data=\"[1, 1, 1, 0, 1, 0, 1, 1]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n </nve-grid-row>\n <nve-grid-row>\n <nve-grid-cell>Object Detection</nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Object Detection 30 day safety score trend\" mark=\"area\" status=\"warning\" min=\"0\" max=\"100\" data=\"[76, 88, 72, 79, 85, 70, 83, 74]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Object Detection interventions per shift\" mark=\"column\" status=\"warning\" min=\"0\" max=\"50\" data=\"[18, 20, 17, 19, 20, 21, 19, 22]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Object Detection route outcomes\" mark=\"winloss\" data=\"[1, 0, -1, 1, 0, -1, 0, 1]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n </nve-grid-row>\n <nve-grid-row>\n <nve-grid-cell>Path Planning</nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Path Planning 30 day safety score trend\" mark=\"area\" status=\"danger\" min=\"0\" max=\"100\" data=\"[58, 54, 49, 45, 40, 36, 31, 27]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Path Planning interventions per shift\" mark=\"column\" status=\"danger\" min=\"0\" max=\"50\" data=\"[24, 26, 29, 31, 34, 36, 39, 42]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n <nve-grid-cell>\n <nve-sparkline aria-label=\"Path Planning route outcomes\" mark=\"winloss\" data=\"[1, -1, 0, -1, -1, -1, 0, -1]\" size=\"md\"></nve-sparkline>\n </nve-grid-cell>\n </nve-grid-row>\n</nve-grid>\n",
|
|
45
45
|
"summary": "Embed sparklines in grid cells to add compact trend context to tabular data.",
|
|
46
46
|
"description": "",
|
|
47
47
|
"composition": false,
|
package/dist/steps/steps2.js
CHANGED
|
@@ -23,7 +23,7 @@ var v = class extends h(d) {
|
|
|
23
23
|
static {
|
|
24
24
|
this.metadata = {
|
|
25
25
|
tag: "nve-steps-item",
|
|
26
|
-
version: "2.
|
|
26
|
+
version: "2.9.0",
|
|
27
27
|
parents: ["nve-steps"]
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -69,7 +69,7 @@ var y = class extends d {
|
|
|
69
69
|
static {
|
|
70
70
|
this.metadata = {
|
|
71
71
|
tag: "nve-steps",
|
|
72
|
-
version: "2.
|
|
72
|
+
version: "2.9.0",
|
|
73
73
|
children: ["nve-steps-item"]
|
|
74
74
|
};
|
|
75
75
|
}
|
package/dist/switch/switch2.js
CHANGED
package/dist/tabs/tabs-group2.js
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
{
|
|
26
26
|
"id": "tabs-border-background",
|
|
27
27
|
"name": "BorderBackground",
|
|
28
|
-
"template": "<nve-tabs
|
|
28
|
+
"template": "<nve-tabs behavior-select style=\"--indicator-background: var(--nve-ref-color-brand-green-900); --indicator-border-radius: none\">\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",
|
|
29
29
|
"summary": "Tabs with custom border background styling for brand-specific visual customization.",
|
|
30
30
|
"description": "",
|
|
31
31
|
"composition": false,
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
{
|
|
115
115
|
"id": "tabs-group-vertical-panels",
|
|
116
116
|
"name": "GroupVerticalPanels",
|
|
117
|
-
"template": "<nve-tabs-group id=\"tab-group-vertical-start\" alignment=\"start\">\n <nve-tabs vertical style=\"width: 250px\">\n <nve-tabs-item selected command=\"--toggle\" commandfor=\"tab-group-vertical-start\" value=\"overview\"
|
|
117
|
+
"template": "<nve-tabs-group id=\"tab-group-vertical-start\" alignment=\"start\">\n <nve-tabs vertical style=\"width: 250px\">\n <nve-tabs-item selected command=\"--toggle\" commandfor=\"tab-group-vertical-start\" value=\"overview\">Overview</nve-tabs-item>\n <nve-tabs-item command=\"--toggle\" commandfor=\"tab-group-vertical-start\" value=\"details\">Details</nve-tabs-item>\n <nve-tabs-item command=\"--toggle\" commandfor=\"tab-group-vertical-start\" value=\"settings\">Settings</nve-tabs-item>\n </nve-tabs>\n <div slot=\"overview\" style=\"width: 100%; min-width: 320px\">\n <nve-card style=\"width: 100%\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Overview</h2>\n <p nve-text=\"body sm muted\">High-level release status and current priorities.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Status</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Ready for review</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Audience</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Design and product owners</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Next step</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Validate the tab labels and panel order</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n <div slot=\"details\" style=\"width: 100%; min-width: 320px\">\n <nve-card style=\"width: 100%\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Details</h2>\n <p nve-text=\"body sm muted\">Supporting context for teams that need implementation specifics.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Owner</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Elements design system</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Coverage</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Unit, SSR, and accessibility checks</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Focus</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Selection sync and panel wiring</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n <div slot=\"settings\" style=\"width: 100%; min-width: 320px\">\n <nve-card style=\"width: 100%\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Settings</h2>\n <p nve-text=\"body sm muted\">Configuration notes for authors and downstream consumers.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Selection</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Controlled by the active tab value</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Panels</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Matched by slot name</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Actions</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">External buttons can drive the same group</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n</nve-tabs-group>\n",
|
|
118
118
|
"summary": "Tab group with vertical tab strip at inline-start beside slot-matched panels for sidebar-style settings and details layouts in LTR.",
|
|
119
119
|
"description": "",
|
|
120
120
|
"composition": false,
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
{
|
|
124
124
|
"id": "tabs-group-vertical-end",
|
|
125
125
|
"name": "GroupVerticalEnd",
|
|
126
|
-
"template": "<nve-tabs-group id=\"tab-group-vertical-end\" alignment=\"end\">\n <nve-tabs vertical style=\"width: 250px\">\n <nve-tabs-item selected command=\"--toggle\" commandfor=\"tab-group-vertical-end\" value=\"overview\"
|
|
126
|
+
"template": "<nve-tabs-group id=\"tab-group-vertical-end\" alignment=\"end\">\n <nve-tabs vertical style=\"width: 250px\">\n <nve-tabs-item selected command=\"--toggle\" commandfor=\"tab-group-vertical-end\" value=\"overview\">Overview</nve-tabs-item>\n <nve-tabs-item command=\"--toggle\" commandfor=\"tab-group-vertical-end\" value=\"details\">Details</nve-tabs-item>\n <nve-tabs-item command=\"--toggle\" commandfor=\"tab-group-vertical-end\" value=\"settings\">Settings</nve-tabs-item>\n </nve-tabs>\n <div slot=\"overview\" style=\"width: 100%; min-width: 320px\">\n <nve-card style=\"width: 100%\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Overview</h2>\n <p nve-text=\"body sm muted\">High-level release status and current priorities.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Status</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Ready for review</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Audience</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Design and product owners</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Next step</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Validate the tab labels and panel order</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n <div slot=\"details\" style=\"width: 100%; min-width: 320px\">\n <nve-card style=\"width: 100%\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Details</h2>\n <p nve-text=\"body sm muted\">Supporting context for teams that need implementation specifics.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Owner</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Elements design system</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Coverage</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Unit, SSR, and accessibility checks</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Focus</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Selection sync and panel wiring</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n <div slot=\"settings\" style=\"width: 100%; min-width: 320px\">\n <nve-card style=\"width: 100%\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Settings</h2>\n <p nve-text=\"body sm muted\">Configuration notes for authors and downstream consumers.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Selection</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Controlled by the active tab value</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Panels</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Matched by slot name</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Actions</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">External buttons can drive the same group</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n</nve-tabs-group>\n",
|
|
127
127
|
"summary": "Tab group with vertical tab strip at inline-end beside slot-matched panels when the tab rail should sit on the opposite side from inline-start sidebars.",
|
|
128
128
|
"description": "",
|
|
129
129
|
"composition": false,
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
{
|
|
133
133
|
"id": "tabs-external-controls",
|
|
134
134
|
"name": "ExternalControls",
|
|
135
|
-
"template": "<div nve-layout=\"column gap:lg\">\n <nve-tabs-group id=\"tab-group-controls\">\n <nve-tabs>\n <nve-tabs-item selected command=\"--toggle\" commandfor=\"tab-group-controls\" value=\"overview\"
|
|
135
|
+
"template": "<div nve-layout=\"column gap:lg\">\n <nve-tabs-group id=\"tab-group-controls\">\n <nve-tabs>\n <nve-tabs-item selected command=\"--toggle\" commandfor=\"tab-group-controls\" value=\"overview\">Overview</nve-tabs-item>\n <nve-tabs-item command=\"--toggle\" commandfor=\"tab-group-controls\" value=\"details\">Details</nve-tabs-item>\n <nve-tabs-item command=\"--toggle\" commandfor=\"tab-group-controls\" value=\"settings\">Settings</nve-tabs-item>\n </nve-tabs>\n <div slot=\"overview\">\n <nve-card style=\"width: 100%; min-width: 320px\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Overview</h2>\n <p nve-text=\"body sm muted\">Quick status for the current tab group.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">State</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Overview is active</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Signal</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Use this tab for a summary of the current workflow</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Tip</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Pair it with external controls for quick switching</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n <div slot=\"details\">\n <nve-card style=\"width: 100%; min-width: 320px\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Details</h2>\n <p nve-text=\"body sm muted\">Deeper context for follow-up tasks and implementation notes.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">State</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Details are available on demand</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Signal</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Use this tab when readers need extra context</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Tip</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Keep the content specific to the selected tab</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n <div slot=\"settings\">\n <nve-card style=\"width: 100%; min-width: 320px\">\n <nve-card-header>\n <div nve-layout=\"column gap:xs\">\n <h2 nve-text=\"heading sm bold\">Settings</h2>\n <p nve-text=\"body sm muted\">Preferences and coordination notes for the shared tab group.</p>\n </div>\n </nve-card-header>\n <nve-card-content>\n <dl nve-layout=\"grid gap:sm\">\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">State</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Settings remain in sync with the selected value</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Signal</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Useful for configuration and admin actions</dd>\n <dt nve-layout=\"span:4\" nve-text=\"body muted medium\">Tip</dt>\n <dd nve-layout=\"span:8\" nve-text=\"body\">Use external buttons when the layout needs extra actions</dd>\n </dl>\n </nve-card-content>\n </nve-card>\n </div>\n </nve-tabs-group>\n <div nve-layout=\"row gap:xs\">\n <nve-button command=\"--toggle\" commandfor=\"tab-group-controls\" value=\"overview\">overview</nve-button>\n <nve-button command=\"--toggle\" commandfor=\"tab-group-controls\" value=\"details\">details</nve-button>\n <nve-button command=\"--toggle\" commandfor=\"tab-group-controls\" value=\"settings\">settings</nve-button>\n </div>\n</div>\n",
|
|
136
136
|
"summary": "Drive the same tabs group from external buttons when layouts need tabs and secondary actions to stay in sync with structured panel content.",
|
|
137
137
|
"description": "",
|
|
138
138
|
"composition": true,
|
package/dist/tabs/tabs2.js
CHANGED
|
@@ -20,7 +20,7 @@ var _ = class extends h(f) {
|
|
|
20
20
|
static {
|
|
21
21
|
this.metadata = {
|
|
22
22
|
tag: "nve-tabs-item",
|
|
23
|
-
version: "2.
|
|
23
|
+
version: "2.9.0",
|
|
24
24
|
parents: ["nve-tabs"]
|
|
25
25
|
};
|
|
26
26
|
}
|
|
@@ -53,7 +53,7 @@ var v = class extends f {
|
|
|
53
53
|
static {
|
|
54
54
|
this.metadata = {
|
|
55
55
|
tag: "nve-tabs",
|
|
56
|
-
version: "2.
|
|
56
|
+
version: "2.9.0",
|
|
57
57
|
children: ["nve-tabs-item"]
|
|
58
58
|
};
|
|
59
59
|
}
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
{
|
|
68
68
|
"id": "tag-slotted-color",
|
|
69
69
|
"name": "SlottedColor",
|
|
70
|
-
"template": "<div nve-layout=\"row gap:xs align:wrap\">\n <nve-tag style=\"--max-width: 100px\"
|
|
70
|
+
"template": "<div nve-layout=\"row gap:xs align:wrap\">\n <nve-tag style=\"--max-width: 100px\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> very words long here <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> default <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"red-cardinal\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> red-cardinal <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"gray-slate\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> gray-slate <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"gray-denim\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> gray-denim <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"blue-indigo\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> blue-indigo <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"blue-cobalt\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> blue-cobalt <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"blue-sky\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> blue-sky <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"teal-cyan\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> teal-cyan <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"green-mint\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> green-mint <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"teal-seafoam\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> teal-seafoam <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"green-grass\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> green-grass <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"yellow-amber\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> yellow-amber <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"orange-pumpkin\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> orange-pumpkin <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"red-tomato\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> red-tomato <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"pink-magenta\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> pink-magenta <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"purple-plum\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> purple-plum <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"purple-violet\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> purple-violet <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"purple-lavender\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> purple-lavender <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"pink-rose\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> pink-rose <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"green-jade\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> green-jade <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"lime-pear\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> lime-pear <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"yellow-nova\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> yellow-nova <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n <nve-tag color=\"brand-green\"><nve-icon slot=\"prefix\" name=\"person\" size=\"sm\"></nve-icon> brand-green <nve-dot slot=\"suffix\" size=\"sm\">10</nve-dot></nve-tag>\n</div>\n",
|
|
71
71
|
"summary": "Tag with icon, showing how the icon/dot color inherits the tag color.",
|
|
72
72
|
"description": "",
|
|
73
73
|
"composition": true,
|
package/dist/tag/tag2.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CSSResult } from 'lit';
|
|
2
2
|
import { Control } from '@nvidia-elements/core/forms';
|
|
3
3
|
/**
|
|
4
4
|
* @element nve-textarea
|
|
@@ -6,6 +6,8 @@ import { Control } from '@nvidia-elements/core/forms';
|
|
|
6
6
|
* @documentation https://nvidia.github.io/elements/docs/elements/textarea/
|
|
7
7
|
* @since 0.3.0
|
|
8
8
|
* @entrypoint \@nvidia-elements/core/textarea
|
|
9
|
+
* @slot prefix - Content to display before the textarea.
|
|
10
|
+
* @slot suffix - Content to display after the textarea.
|
|
9
11
|
* @cssprop --padding
|
|
10
12
|
* @cssprop --font-size
|
|
11
13
|
* @cssprop --height
|
|
@@ -20,6 +22,10 @@ import { Control } from '@nvidia-elements/core/forms';
|
|
|
20
22
|
*/
|
|
21
23
|
export declare class Textarea extends Control {
|
|
22
24
|
static styles: CSSResult[];
|
|
25
|
+
/** @private */
|
|
26
|
+
protected get prefixContent(): import("lit").TemplateResult<1>;
|
|
27
|
+
/** @private */
|
|
28
|
+
protected get suffixContent(): import("lit").TemplateResult<1>;
|
|
23
29
|
static readonly metadata: {
|
|
24
30
|
tag: string;
|
|
25
31
|
version: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.examples.js","names":[],"sources":["../../src/textarea/textarea.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/forms/define.js';\nimport '@nvidia-elements/core/textarea/define.js';\n\nexport default {\n title: 'Elements/Textarea',\n component: 'nve-textarea',\n};\n\n/**\n * @summary Basic multi-line text input for longer content entry like comments, descriptions, or messages.\n */\nexport const Default = {\n render: () => html`\n<nve-textarea>\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n</nve-textarea>`\n};\n\n/**\n * @summary Textareas with vertical layout including validation states for disabled, success, and error.\n * @tags test-case\n */\nexport const Vertical = {\n render: () => html`\n<div nve-layout=\"column gap:lg full\">\n <nve-textarea>\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea>\n <label>disabled</label>\n <textarea disabled></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea>\n <label>success</label>\n <textarea></textarea>\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea>\n <label>error</label>\n <textarea></textarea>\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-textarea>\n</div>`\n};\n\n/**\n * @summary Textareas with horizontal layout showing validation states for inline forms and compact layouts.\n * @tags test-case\n */\nexport const Horizontal = {\n render: () => html`\n<div nve-layout=\"column gap:lg full\">\n <nve-textarea layout=\"horizontal\">\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea layout=\"horizontal\">\n <label>disabled</label>\n <textarea disabled></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea layout=\"horizontal\">\n <label>success</label>\n <textarea></textarea>\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea layout=\"horizontal\">\n <label>error</label>\n <textarea></textarea>\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-textarea>\n</div>`\n};\n\n/**\n * @summary Textarea with built-in HTML validation showing required field error messages for form validation.\n */\nexport const ControlValidation = {\n render: () => html`\n<nve-textarea>\n <label>validation</label>\n <textarea required></textarea>\n <nve-control-message>message</nve-control-message>\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n</nve-textarea>`\n};\n\n/**\n * @summary Textarea with custom columns and rows attributes for controlling initial size and dimensions.\n */\nexport const ColumnsAndRows = {\n render: () => html`\n<nve-textarea>\n <label>label</label>\n <textarea rows=\"15\" cols=\"40\"></textarea>\n <nve-control-message>message</nve-control-message>\n</nve-textarea>`\n}
|
|
1
|
+
{"version":3,"file":"textarea.examples.js","names":[],"sources":["../../src/textarea/textarea.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/forms/define.js';\nimport '@nvidia-elements/core/textarea/define.js';\n\nexport default {\n title: 'Elements/Textarea',\n component: 'nve-textarea',\n};\n\n/**\n * @summary Basic multi-line text input for longer content entry like comments, descriptions, or messages.\n */\nexport const Default = {\n render: () => html`\n<nve-textarea>\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n</nve-textarea>`\n};\n\n/**\n * @summary Textareas with vertical layout including validation states for disabled, success, and error.\n * @tags test-case\n */\nexport const Vertical = {\n render: () => html`\n<div nve-layout=\"column gap:lg full\">\n <nve-textarea>\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea>\n <label>disabled</label>\n <textarea disabled></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea>\n <label>success</label>\n <textarea></textarea>\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea>\n <label>error</label>\n <textarea></textarea>\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-textarea>\n</div>`\n};\n\n/**\n * @summary Textareas with horizontal layout showing validation states for inline forms and compact layouts.\n * @tags test-case\n */\nexport const Horizontal = {\n render: () => html`\n<div nve-layout=\"column gap:lg full\">\n <nve-textarea layout=\"horizontal\">\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea layout=\"horizontal\">\n <label>disabled</label>\n <textarea disabled></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea layout=\"horizontal\">\n <label>success</label>\n <textarea></textarea>\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-textarea>\n\n <nve-textarea layout=\"horizontal\">\n <label>error</label>\n <textarea></textarea>\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-textarea>\n</div>`\n};\n\n/**\n * @summary Textarea with built-in HTML validation showing required field error messages for form validation.\n */\nexport const ControlValidation = {\n render: () => html`\n<nve-textarea>\n <label>validation</label>\n <textarea required></textarea>\n <nve-control-message>message</nve-control-message>\n <nve-control-message error=\"valueMissing\">required</nve-control-message>\n</nve-textarea>`\n};\n\n/**\n * @summary Textarea with custom columns and rows attributes for controlling initial size and dimensions.\n */\nexport const ColumnsAndRows = {\n render: () => html`\n<nve-textarea>\n <label>label</label>\n <textarea rows=\"15\" cols=\"40\"></textarea>\n <nve-control-message>message</nve-control-message>\n</nve-textarea>`\n};\n\n/**\n * @summary Flat textarea with prefix tags for context and suffix buttons to attach files or send a message.\n * @tags test-case\n */\nexport const Slots = {\n render: () => html`\n<nve-textarea container=\"flat\">\n <textarea placeholder=\"Build something...\" aria-label=\"prompt\"></textarea>\n <nve-tag slot=\"prefix\" color=\"gray-denim\" closable>AGENTS.md</nve-tag>\n <nve-tag slot=\"prefix\" color=\"gray-denim\" closable>Web Search</nve-tag>\n <nve-icon-button slot=\"suffix\" icon-name=\"paper-clip\" aria-label=\"Attach file\" container=\"flat\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" icon-name=\"paper-airplane\" aria-label=\"Send message\" style=\"margin-left: auto\"></nve-icon-button>\n</nve-textarea>`\n};\n\n/**\n * @summary Textarea with flat container for inline forms.\n * @tags test-case\n */\nexport const ContainerFlat = {\n render: () => html`\n<nve-textarea container=\"flat\">\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n</nve-textarea>`\n};\n"],"mappings":";AAGA,IAAA,IAAS"}
|
|
@@ -50,6 +50,28 @@
|
|
|
50
50
|
"description": "",
|
|
51
51
|
"composition": false,
|
|
52
52
|
"tags": []
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "textarea-slots",
|
|
56
|
+
"name": "Slots",
|
|
57
|
+
"template": "<nve-textarea container=\"flat\">\n <textarea placeholder=\"Build something...\" aria-label=\"prompt\"></textarea>\n <nve-tag slot=\"prefix\" color=\"gray-denim\" closable>AGENTS.md</nve-tag>\n <nve-tag slot=\"prefix\" color=\"gray-denim\" closable>Web Search</nve-tag>\n <nve-icon-button slot=\"suffix\" icon-name=\"paper-clip\" aria-label=\"Attach file\" container=\"flat\"></nve-icon-button>\n <nve-icon-button slot=\"suffix\" icon-name=\"paper-airplane\" aria-label=\"Send message\" style=\"margin-left: auto\"></nve-icon-button>\n</nve-textarea>\n",
|
|
58
|
+
"summary": "Flat textarea with prefix tags for context and suffix buttons to attach files or send a message.",
|
|
59
|
+
"description": "",
|
|
60
|
+
"composition": true,
|
|
61
|
+
"tags": [
|
|
62
|
+
"test-case"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "textarea-container-flat",
|
|
67
|
+
"name": "ContainerFlat",
|
|
68
|
+
"template": "<nve-textarea container=\"flat\">\n <label>label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n</nve-textarea>\n",
|
|
69
|
+
"summary": "Textarea with flat container for inline forms.",
|
|
70
|
+
"description": "",
|
|
71
|
+
"composition": false,
|
|
72
|
+
"tags": [
|
|
73
|
+
"test-case"
|
|
74
|
+
]
|
|
53
75
|
}
|
|
54
76
|
]
|
|
55
77
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/textarea/textarea.css?inline
|
|
2
|
-
var e = ":host{--padding: var(--nve-ref-size-200);--font-size: var(--nve-ref-font-size-100);--height: 100px;--width: 100%;--min-height: 100px;--background: var(--nve-sys-interaction-field-background);--color: var(--nve-sys-interaction-field-color);--border-radius: var(--nve-ref-border-radius-sm);--cursor: text;--border: 0;display:block;width:
|
|
2
|
+
var e = ":host{--padding: var(--nve-ref-size-200);--font-size: var(--nve-ref-font-size-100);--height: 100px;--width: 100%;--min-height: 100px;--background: var(--nve-sys-interaction-field-background);--color: var(--nve-sys-interaction-field-color);--border-radius: var(--nve-ref-border-radius-sm);--cursor: text;--border: 0;display:block;width:var(--width);contain:layout}::slotted(textarea){font-size:var(--font-size)!important;margin:0!important;align-content:stretch!important;background:var(--background)!important;border:0!important;color:var(--color)!important;cursor:var(--cursor)!important;scrollbar-color:var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color);scrollbar-width:var(--nve-sys-scrollbar-width)}slot[name=prefix],slot[name=suffix]{display:none;gap:var(--nve-ref-space-xxs)}@scope{:scope:has([slot=prefix]) slot[name=prefix]{display:flex}:scope:has([slot=suffix]) slot[name=suffix]{display:flex}:scope:has(textarea[style*=width],textarea[cols]) [input]{width:fit-content}:scope:has(textarea:focus-visible) [input]{outline:5px auto -webkit-focus-ring-color!important;outline:Highlight solid 2px!important}}[input]{flex-direction:column;gap:var(--nve-ref-space-xs);background:var(--background);border:var(--border);border-radius:var(--border-radius);padding:var(--padding);cursor:initial;outline:none!important}::slotted(textarea:not([rows],[style*=\"height\"])){height:var(--height)!important;min-height:var(--min-height)!important}::slotted(textarea:not([cols],[style*=\"width\"])){width:var(--width)!important}::slotted(textarea:not([cols],[rows])){field-sizing:content}:host([layout*=\"horizontal\"]) ::slotted(label){padding-block-start:var(--nve-ref-size-100)!important;align-self:start!important}:host([layout*=\"horizontal\"]) slot[name=label]{align-self:start}:host([status=\"error\"]),:host(:state(invalid)),:host(:state(error)){--border: var(--nve-ref-border-width-md) solid var(--nve-sys-support-danger-emphasis-color)}:host([status=\"success\"]),:host(:state(success)){--border: var(--nve-ref-border-width-md) solid var(--nve-sys-support-success-emphasis-color)}:host(:state(disabled)){--border: var(--nve-ref-border-width-md) solid transparent}:host([container=\"flat\"]){--background: transparent;--border: var(--nve-ref-border-width-md) solid var(--nve-ref-border-color-muted)}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","names":[],"sources":["../../src/textarea/textarea.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-200);\n --font-size: var(--nve-ref-font-size-100);\n --height: 100px;\n --width: 100%;\n --min-height: 100px;\n --background: var(--nve-sys-interaction-field-background);\n --color: var(--nve-sys-interaction-field-color);\n --border-radius: var(--nve-ref-border-radius-sm);\n --cursor: text;\n --border: 0;\n display: block;\n width:
|
|
1
|
+
{"version":3,"file":"textarea.js","names":[],"sources":["../../src/textarea/textarea.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-200);\n --font-size: var(--nve-ref-font-size-100);\n --height: 100px;\n --width: 100%;\n --min-height: 100px;\n --background: var(--nve-sys-interaction-field-background);\n --color: var(--nve-sys-interaction-field-color);\n --border-radius: var(--nve-ref-border-radius-sm);\n --cursor: text;\n --border: 0;\n display: block;\n width: var(--width);\n contain: layout;\n}\n\n::slotted(textarea) {\n font-size: var(--font-size) !important;\n margin: 0 !important;\n align-content: stretch !important;\n background: var(--background) !important;\n border: 0 !important;\n color: var(--color) !important;\n cursor: var(--cursor) !important;\n scrollbar-color: var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color);\n scrollbar-width: var(--nve-sys-scrollbar-width);\n}\n\nslot[name='prefix'],\nslot[name='suffix'] {\n display: none;\n gap: var(--nve-ref-space-xxs);\n}\n\n@scope {\n :scope:has([slot='prefix']) slot[name='prefix'] {\n display: flex;\n }\n\n :scope:has([slot='suffix']) slot[name='suffix'] {\n display: flex;\n }\n\n :scope:has(textarea[style*='width'], textarea[cols]) [input] {\n width: fit-content;\n }\n\n :scope:has(textarea:focus-visible) [input] {\n outline: 5px auto -webkit-focus-ring-color !important;\n outline: Highlight solid 2px !important;\n }\n}\n\n[input] {\n flex-direction: column;\n gap: var(--nve-ref-space-xs);\n background: var(--background);\n border: var(--border);\n border-radius: var(--border-radius);\n padding: var(--padding);\n cursor: initial;\n outline: none !important;\n}\n\n::slotted(textarea:not([rows], [style*='height'])) {\n height: var(--height) !important;\n min-height: var(--min-height) !important;\n}\n\n::slotted(textarea:not([cols], [style*='width'])) {\n width: var(--width) !important;\n}\n\n::slotted(textarea:not([cols], [rows])) {\n field-sizing: content;\n}\n\n:host([layout*='horizontal']) ::slotted(label) {\n padding-block-start: var(--nve-ref-size-100) !important;\n align-self: start !important;\n}\n\n:host([layout*='horizontal']) slot[name='label'] {\n align-self: start;\n}\n\n:host([status='error']),\n:host(:state(invalid)),\n:host(:state(error)) {\n --border: var(--nve-ref-border-width-md) solid var(--nve-sys-support-danger-emphasis-color);\n}\n\n:host([status='success']),\n:host(:state(success)) {\n --border: var(--nve-ref-border-width-md) solid var(--nve-sys-support-success-emphasis-color);\n}\n\n:host(:state(disabled)) {\n --border: var(--nve-ref-border-width-md) solid transparent;\n}\n\n:host([container='flat']) {\n --background: transparent;\n --border: var(--nve-ref-border-width-md) solid var(--nve-ref-border-color-muted);\n}\n"],"mappings":""}
|