@nvidia-elements/core 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/CHANGELOG.md +20 -17
  2. package/NOTICE.md +119 -0
  3. package/dist/accordion/accordion2.js +4 -4
  4. package/dist/alert/alert-group2.js +1 -1
  5. package/dist/alert/alert.examples.js.map +1 -1
  6. package/dist/alert/alert.examples.json +1 -1
  7. package/dist/alert/alert2.js +1 -1
  8. package/dist/alert/define.js +1 -2
  9. package/dist/alert/define.js.map +1 -1
  10. package/dist/alert/index.d.ts +0 -1
  11. package/dist/alert/index.js +1 -2
  12. package/dist/avatar/avatar-group2.js +1 -1
  13. package/dist/avatar/avatar2.js +1 -1
  14. package/dist/badge/badge2.js +1 -1
  15. package/dist/breadcrumb/breadcrumb2.js +1 -1
  16. package/dist/bundle.d.ts +2 -0
  17. package/dist/bundles/index.d.ts +176 -3
  18. package/dist/bundles/index.js +4 -4
  19. package/dist/button/button.examples.js.map +1 -1
  20. package/dist/button/button.examples.json +3 -3
  21. package/dist/button/button2.js +1 -1
  22. package/dist/button-group/button-group2.js +1 -1
  23. package/dist/card/card2.js +4 -4
  24. package/dist/chat-message/chat-message2.js +1 -1
  25. package/dist/checkbox/checkbox-group2.js +1 -1
  26. package/dist/checkbox/checkbox2.js +1 -1
  27. package/dist/color/color2.js +1 -1
  28. package/dist/combobox/combobox.d.ts +4 -0
  29. package/dist/combobox/combobox.examples.js.map +1 -1
  30. package/dist/combobox/combobox.examples.json +12 -1
  31. package/dist/combobox/combobox.js +1 -1
  32. package/dist/combobox/combobox.js.map +1 -1
  33. package/dist/combobox/combobox2.js +90 -62
  34. package/dist/combobox/combobox2.js.map +1 -1
  35. package/dist/copy-button/copy-button2.js +1 -1
  36. package/dist/custom-elements-jsx.d.ts +117 -69
  37. package/dist/custom-elements-vue.d.ts +117 -69
  38. package/dist/custom-elements.json +2284 -1630
  39. package/dist/data.html.json +202 -71
  40. package/dist/data.snippets.json +9 -0
  41. package/dist/date/date2.js +1 -1
  42. package/dist/datetime/datetime2.js +1 -1
  43. package/dist/dialog/dialog-footer2.js +1 -1
  44. package/dist/dialog/dialog-header2.js +1 -1
  45. package/dist/dialog/dialog2.js +1 -1
  46. package/dist/divider/divider2.js +1 -1
  47. package/dist/dot/dot2.js +1 -1
  48. package/dist/drawer/drawer-content2.js +1 -1
  49. package/dist/drawer/drawer-footer2.js +1 -1
  50. package/dist/drawer/drawer-header2.js +1 -1
  51. package/dist/drawer/drawer2.js +1 -1
  52. package/dist/dropdown/dropdown-footer2.js +1 -1
  53. package/dist/dropdown/dropdown-header2.js +1 -1
  54. package/dist/dropdown/dropdown2.js +1 -1
  55. package/dist/dropdown-group/dropdown-group.js +1 -1
  56. package/dist/dropzone/dropzone.examples.js.map +1 -1
  57. package/dist/dropzone/dropzone.examples.json +3 -1
  58. package/dist/dropzone/dropzone2.js +1 -1
  59. package/dist/file/file2.js +1 -1
  60. package/dist/format-datetime/define.d.ts +6 -0
  61. package/dist/format-datetime/define.js +7 -0
  62. package/dist/format-datetime/define.js.map +1 -0
  63. package/dist/format-datetime/format-datetime.d.ts +74 -0
  64. package/dist/format-datetime/format-datetime.examples.js +6 -0
  65. package/dist/format-datetime/format-datetime.examples.js.map +1 -0
  66. package/dist/format-datetime/format-datetime.examples.json +87 -0
  67. package/dist/format-datetime/format-datetime.js +6 -0
  68. package/dist/format-datetime/format-datetime.js.map +1 -0
  69. package/dist/format-datetime/format-datetime2.js +77 -0
  70. package/dist/format-datetime/format-datetime2.js.map +1 -0
  71. package/dist/format-datetime/index.d.ts +1 -0
  72. package/dist/format-datetime/index.js +2 -0
  73. package/dist/format-relative-time/define.d.ts +6 -0
  74. package/dist/format-relative-time/define.js +7 -0
  75. package/dist/format-relative-time/define.js.map +1 -0
  76. package/dist/format-relative-time/format-relative-time.d.ts +47 -0
  77. package/dist/format-relative-time/format-relative-time.examples.js +6 -0
  78. package/dist/format-relative-time/format-relative-time.examples.js.map +1 -0
  79. package/dist/format-relative-time/format-relative-time.examples.json +69 -0
  80. package/dist/format-relative-time/format-relative-time.js +6 -0
  81. package/dist/format-relative-time/format-relative-time.js.map +1 -0
  82. package/dist/format-relative-time/format-relative-time2.js +118 -0
  83. package/dist/format-relative-time/format-relative-time2.js.map +1 -0
  84. package/dist/format-relative-time/index.d.ts +1 -0
  85. package/dist/format-relative-time/index.js +2 -0
  86. package/dist/forms/control/control2.js +1 -1
  87. package/dist/forms/control-group/control-group2.js +1 -1
  88. package/dist/forms/control-message/control-message2.js +1 -1
  89. package/dist/forms/forms.examples.js.map +1 -1
  90. package/dist/forms/forms.examples.json +4 -2
  91. package/dist/grid/cell/cell2.js +1 -1
  92. package/dist/grid/column/column2.js +1 -1
  93. package/dist/grid/footer/footer2.js +1 -1
  94. package/dist/grid/grid.examples.js.map +1 -1
  95. package/dist/grid/grid.examples.json +1 -1
  96. package/dist/grid/grid2.js +1 -1
  97. package/dist/grid/header/header2.js +1 -1
  98. package/dist/grid/placeholder/placeholder2.js +1 -1
  99. package/dist/grid/row/row2.js +1 -1
  100. package/dist/icon/define.js +1 -33
  101. package/dist/icon/define.js.map +1 -1
  102. package/dist/icon/icon.d.ts +1 -1
  103. package/dist/icon/icon.js +1 -1
  104. package/dist/icon/icon.js.map +1 -1
  105. package/dist/icon/icon2.js +2 -2
  106. package/dist/icon/icon2.js.map +1 -1
  107. package/dist/icon/icons.d.ts +0 -2
  108. package/dist/icon/icons.js.map +1 -1
  109. package/dist/icon-button/icon-button.js +1 -1
  110. package/dist/icon-button/icon-button.js.map +1 -1
  111. package/dist/icon-button/icon-button2.js +1 -1
  112. package/dist/index.js +1 -1
  113. package/dist/input/input-group2.js +1 -1
  114. package/dist/input/input2.js +1 -1
  115. package/dist/internal/index.js +40 -40
  116. package/dist/internal/services/global.service.js +1 -1
  117. package/dist/internal/services/global.service.js.map +1 -1
  118. package/dist/internal/services/i18n.service.d.ts +1 -0
  119. package/dist/internal/services/i18n.service.js +2 -1
  120. package/dist/internal/services/i18n.service.js.map +1 -1
  121. package/dist/internal/types/index.d.ts +0 -2
  122. package/dist/internal/types/index.js.map +1 -1
  123. package/dist/internal/utils/dom.d.ts +8 -0
  124. package/dist/internal/utils/dom.js +7 -1
  125. package/dist/internal/utils/dom.js.map +1 -1
  126. package/dist/logo/logo2.js +1 -1
  127. package/dist/menu/menu-item2.js +1 -1
  128. package/dist/menu/menu2.js +1 -1
  129. package/dist/month/month2.js +1 -1
  130. package/dist/notification/notification-group2.js +1 -1
  131. package/dist/notification/notification2.js +1 -1
  132. package/dist/page/page-panel/page-panel-content2.js +1 -1
  133. package/dist/page/page-panel/page-panel-footer2.js +1 -1
  134. package/dist/page/page-panel/page-panel-header2.js +1 -1
  135. package/dist/page/page-panel/page-panel2.js +1 -1
  136. package/dist/page/page.examples.js.map +1 -1
  137. package/dist/page/page.examples.json +0 -11
  138. package/dist/page/page2.js +1 -1
  139. package/dist/page-header/page-header.examples.js.map +1 -1
  140. package/dist/page-header/page-header.examples.json +2 -2
  141. package/dist/page-header/page-header2.js +1 -1
  142. package/dist/page-loader/page-loader2.js +1 -1
  143. package/dist/pagination/pagination2.js +1 -1
  144. package/dist/panel/panel2.js +4 -4
  145. package/dist/password/password2.js +1 -1
  146. package/dist/preferences-input/preferences-input2.js +1 -1
  147. package/dist/progress-bar/progress-bar2.js +1 -1
  148. package/dist/progress-ring/progress-ring2.js +1 -1
  149. package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
  150. package/dist/pulse/pulse2.js +1 -1
  151. package/dist/radio/radio-group2.js +1 -1
  152. package/dist/radio/radio2.js +1 -1
  153. package/dist/range/range2.js +1 -1
  154. package/dist/resize-handle/resize-handle.examples.js.map +1 -1
  155. package/dist/resize-handle/resize-handle.examples.json +3 -1
  156. package/dist/resize-handle/resize-handle2.js +1 -1
  157. package/dist/search/search2.js +1 -1
  158. package/dist/select/select2.js +1 -1
  159. package/dist/skeleton/skeleton.examples.js.map +1 -1
  160. package/dist/skeleton/skeleton.examples.json +3 -1
  161. package/dist/skeleton/skeleton2.js +1 -1
  162. package/dist/sort-button/sort-button2.js +1 -1
  163. package/dist/sparkline/sparkline.examples.js.map +1 -1
  164. package/dist/sparkline/sparkline.examples.json +3 -1
  165. package/dist/sparkline/sparkline2.js +1 -1
  166. package/dist/star-rating/star-rating2.js +1 -1
  167. package/dist/steps/steps2.js +2 -2
  168. package/dist/switch/switch-group2.js +1 -1
  169. package/dist/switch/switch2.js +1 -1
  170. package/dist/tabs/define.d.ts +2 -1
  171. package/dist/tabs/define.js +2 -1
  172. package/dist/tabs/define.js.map +1 -1
  173. package/dist/tabs/index.d.ts +1 -0
  174. package/dist/tabs/index.js +2 -1
  175. package/dist/tabs/tabs-group.d.ts +51 -0
  176. package/dist/tabs/tabs-group.js +6 -0
  177. package/dist/tabs/tabs-group.js.map +1 -0
  178. package/dist/tabs/tabs-group2.js +144 -0
  179. package/dist/tabs/tabs-group2.js.map +1 -0
  180. package/dist/tabs/tabs.examples.js.map +1 -1
  181. package/dist/tabs/tabs.examples.json +38 -2
  182. package/dist/tabs/tabs2.js +2 -2
  183. package/dist/tag/tag2.js +1 -1
  184. package/dist/textarea/textarea2.js +1 -1
  185. package/dist/time/time2.js +1 -1
  186. package/dist/toast/toast2.js +1 -1
  187. package/dist/toggletip/toggletip-footer2.js +1 -1
  188. package/dist/toggletip/toggletip-header2.js +1 -1
  189. package/dist/toggletip/toggletip2.js +1 -1
  190. package/dist/toolbar/toolbar2.js +1 -1
  191. package/dist/tooltip/tooltip2.js +1 -1
  192. package/dist/tree/tree-node.d.ts +1 -1
  193. package/dist/tree/tree-node.js +1 -1
  194. package/dist/tree/tree-node.js.map +1 -1
  195. package/dist/tree/tree-node2.js +1 -1
  196. package/dist/tree/tree-node2.js.map +1 -1
  197. package/dist/tree/tree.examples.js.map +1 -1
  198. package/dist/tree/tree.examples.json +1 -10
  199. package/dist/tree/tree2.js +1 -1
  200. package/dist/week/week2.js +1 -1
  201. package/package.json +43 -23
  202. package/dist/alert/alert-banner.d.ts +0 -22
  203. package/dist/alert/alert-banner.js +0 -6
  204. package/dist/alert/alert-banner.js.map +0 -1
  205. package/dist/alert/alert-banner2.js +0 -20
  206. package/dist/alert/alert-banner2.js.map +0 -1
  207. package/dist/scoped/index.d.ts +0 -11
  208. package/dist/scoped/index.js +0 -16
  209. package/dist/scoped/index.js.map +0 -1
  210. package/dist/test/demo.d.ts +0 -41
  211. package/dist/test/demo.js +0 -244
  212. package/dist/test/demo.js.map +0 -1
  213. package/dist/test/index.d.ts +0 -26
  214. package/dist/test/index.js +0 -36
  215. package/dist/test/index.js.map +0 -1
  216. package/dist/test/setup.d.ts +0 -1
@@ -0,0 +1,118 @@
1
+ import { LogService as e } from "../internal/services/log.service.js";
2
+ import { __decorate as t } from "../_virtual/_@oxc-project_runtime@0.123.0/helpers/decorate.js";
3
+ import { typeSSR as n } from "../internal/controllers/type-ssr.controller.js";
4
+ import { useStyles as r } from "../internal/styles/index.js";
5
+ import i from "./format-relative-time.js";
6
+ import { LitElement as a, html as o } from "lit";
7
+ import { property as s } from "lit/decorators/property.js";
8
+ //#region src/format-relative-time/format-relative-time.ts
9
+ var c = class extends a {
10
+ constructor(...e) {
11
+ super(...e), this.numeric = "always", this.formatStyle = "long", this.unit = "auto", this.sync = !1;
12
+ }
13
+ static {
14
+ this.styles = r([i]);
15
+ }
16
+ static {
17
+ this.metadata = {
18
+ tag: "nve-format-relative-time",
19
+ version: "0.0.5"
20
+ };
21
+ }
22
+ #e;
23
+ get #t() {
24
+ return this.date ?? this.textContent?.trim() ?? "";
25
+ }
26
+ get #n() {
27
+ return this.locale ?? (globalThis.document?.documentElement?.lang || void 0);
28
+ }
29
+ #r(e) {
30
+ let t = Math.abs(e), n = e < 0 ? -1 : 1, r = Math.round(t / 1e3), i = Math.round(t / 6e4), a = Math.round(t / 36e5), o = Math.round(t / 864e5), s = Math.round(t / 6048e5), c = Math.round(t / 2592e6), l = Math.round(t / 31536e6);
31
+ return r < 60 ? {
32
+ value: n * r,
33
+ unit: "second"
34
+ } : i < 60 ? {
35
+ value: n * i,
36
+ unit: "minute"
37
+ } : a < 24 ? {
38
+ value: n * a,
39
+ unit: "hour"
40
+ } : o < 7 ? {
41
+ value: n * o,
42
+ unit: "day"
43
+ } : s < 4 ? {
44
+ value: n * s,
45
+ unit: "week"
46
+ } : c < 12 ? {
47
+ value: n * c,
48
+ unit: "month"
49
+ } : {
50
+ value: n * l,
51
+ unit: "year"
52
+ };
53
+ }
54
+ #i(e, t) {
55
+ return Math.round(e / ({
56
+ second: 1e3,
57
+ minute: 6e4,
58
+ hour: 36e5,
59
+ day: 864e5,
60
+ week: 6048e5,
61
+ month: 2592e6,
62
+ year: 31536e6
63
+ }[t] ?? 1));
64
+ }
65
+ get #a() {
66
+ let t = this.#t;
67
+ if (!t) return "";
68
+ let n = new Date(t);
69
+ if (isNaN(n.getTime())) return e.warn(`format-relative-time: invalid date value "${t}"`), t;
70
+ let r = n.getTime() - Date.now(), i, a;
71
+ this.unit === "auto" ? {value: i, unit: a} = this.#r(r) : (a = this.unit, i = this.#i(r, a));
72
+ try {
73
+ return new Intl.RelativeTimeFormat(this.#n, {
74
+ numeric: this.numeric,
75
+ style: this.formatStyle
76
+ }).format(i, a);
77
+ } catch (n) {
78
+ return e.warn(`format-relative-time: ${n.message}`), t;
79
+ }
80
+ }
81
+ #o() {
82
+ let e = this.#t;
83
+ if (!e) return 6e4;
84
+ let t = Math.abs(new Date(e).getTime() - Date.now());
85
+ return t < 6e4 ? 1e4 : t < 36e5 ? 3e4 : t < 864e5 ? 3e5 : 36e5;
86
+ }
87
+ #s() {
88
+ this.#c(), this.sync && (this.#e = setTimeout(() => {
89
+ this.requestUpdate(), this.#s();
90
+ }, this.#o()));
91
+ }
92
+ #c() {
93
+ this.#e !== void 0 && (clearTimeout(this.#e), this.#e = void 0);
94
+ }
95
+ connectedCallback() {
96
+ super.connectedCallback(), this.sync && this.#s();
97
+ }
98
+ disconnectedCallback() {
99
+ this.#c(), super.disconnectedCallback();
100
+ }
101
+ updated(e) {
102
+ e.has("sync") && (this.sync ? this.#s() : this.#c());
103
+ }
104
+ render() {
105
+ return o`<time internal-host datetime="${this.#t}">${this.#a}<slot @slotchange="${this.#l}" hidden></slot></time>`;
106
+ }
107
+ #l() {
108
+ this.requestUpdate();
109
+ }
110
+ };
111
+ t([s({ type: String })], c.prototype, "date", void 0), t([s({ type: String })], c.prototype, "locale", void 0), t([s({ type: String })], c.prototype, "numeric", void 0), t([s({
112
+ type: String,
113
+ attribute: "format-style"
114
+ })], c.prototype, "formatStyle", void 0), t([s({ type: String })], c.prototype, "unit", void 0), t([s({ type: Boolean })], c.prototype, "sync", void 0), c = t([n()], c);
115
+ //#endregion
116
+ export { c as FormatRelativeTime };
117
+
118
+ //# sourceMappingURL=format-relative-time2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-relative-time2.js","names":["#dateValue","#resolvedLocale","#formattedRelativeTime","#computeUnit","#computeExplicitUnit","#stopSync","#timer","#startSync","#getSyncInterval","#onSlotChange"],"sources":["../../src/format-relative-time/format-relative-time.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { useStyles, typeSSR, LogService } from '@nvidia-elements/core/internal';\nimport styles from './format-relative-time.css?inline';\n\ntype TimeUnitOption = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';\n\n/**\n * @element nve-format-relative-time\n * @description Formats a date/time value as localized relative text using the Intl.RelativeTimeFormat API. Renders inside a semantic time element.\n * Options mirror the Intl.RelativeTimeFormat API. When unit is 'auto', the component selects the best unit based on the time difference.\n * @since 0.0.0\n * @entrypoint \\@nvidia-elements/core/format-relative-time\n * @slot - Date string to format (such as 2023-07-28T04:20:17.434Z). Serves as fallback before hydration.\n */\n@typeSSR()\nexport class FormatRelativeTime extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-format-relative-time',\n version: '0.0.0'\n };\n\n /**\n * Optional date string for values supplied by JavaScript or bound data.\n * By default, the component formats the element's text content, which also serves as the SSR fallback.\n * When both are present, this property takes precedence.\n */\n @property({ type: String }) date?: string;\n\n /**\n * Language tag (such as en-US, de-DE). Defaults to document.documentElement.lang or browser default.\n */\n @property({ type: String }) locale?: string;\n\n /**\n * Numeric formatting: 'always' | 'auto'. When 'auto', enables natural language forms such as 'yesterday' instead of '1 day ago'.\n */\n @property({ type: String }) numeric: 'always' | 'auto' = 'always';\n\n /**\n * Formatting length: 'long' | 'short' | 'narrow'. Controls verbosity (such as '3 days ago' vs '3d ago'). Maps to Intl.RelativeTimeFormat style option.\n */\n @property({ type: String, attribute: 'format-style' }) formatStyle: 'long' | 'short' | 'narrow' = 'long';\n\n /**\n * Time unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' | 'auto'. Use 'auto' to let the component select the most appropriate unit based on the time difference.\n */\n @property({ type: String }) unit: 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year' | 'auto' = 'auto';\n\n /**\n * When present, auto-updates the displayed relative time at appropriate intervals.\n */\n @property({ type: Boolean }) sync = false;\n\n #timer?: ReturnType<typeof setTimeout>;\n\n get #dateValue(): string {\n return this.date ?? this.textContent?.trim() ?? '';\n }\n\n get #resolvedLocale(): string | undefined {\n return this.locale ?? (globalThis.document?.documentElement?.lang || undefined);\n }\n\n #computeUnit(diffMs: number): { value: number; unit: Intl.RelativeTimeFormatUnit } {\n const absDiff = Math.abs(diffMs);\n const sign = diffMs < 0 ? -1 : 1;\n\n const seconds = Math.round(absDiff / 1000);\n const minutes = Math.round(absDiff / 60000);\n const hours = Math.round(absDiff / 3600000);\n const days = Math.round(absDiff / 86400000);\n const weeks = Math.round(absDiff / 604800000);\n const months = Math.round(absDiff / 2592000000);\n const years = Math.round(absDiff / 31536000000);\n\n if (seconds < 60) return { value: sign * seconds, unit: 'second' };\n if (minutes < 60) return { value: sign * minutes, unit: 'minute' };\n if (hours < 24) return { value: sign * hours, unit: 'hour' };\n if (days < 7) return { value: sign * days, unit: 'day' };\n if (weeks < 4) return { value: sign * weeks, unit: 'week' };\n if (months < 12) return { value: sign * months, unit: 'month' };\n return { value: sign * years, unit: 'year' };\n }\n\n #computeExplicitUnit(diffMs: number, unit: TimeUnitOption): number {\n const divisors: Record<string, number> = {\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 86400000,\n week: 604800000,\n month: 2592000000,\n year: 31536000000\n };\n return Math.round(diffMs / (divisors[unit] ?? 1));\n }\n\n get #formattedRelativeTime(): string {\n const iso = this.#dateValue;\n if (!iso) return '';\n\n const target = new Date(iso);\n if (isNaN(target.getTime())) {\n LogService.warn(`format-relative-time: invalid date value \"${iso}\"`);\n return iso;\n }\n\n const diffMs = target.getTime() - Date.now();\n let value: number;\n let resolvedUnit: Intl.RelativeTimeFormatUnit;\n\n if (this.unit === 'auto') {\n ({ value, unit: resolvedUnit } = this.#computeUnit(diffMs));\n } else {\n resolvedUnit = this.unit;\n value = this.#computeExplicitUnit(diffMs, resolvedUnit);\n }\n\n try {\n return new Intl.RelativeTimeFormat(this.#resolvedLocale, {\n numeric: this.numeric,\n style: this.formatStyle\n }).format(value, resolvedUnit);\n } catch (e) {\n LogService.warn(`format-relative-time: ${(e as Error).message}`);\n return iso;\n }\n }\n\n #getSyncInterval(): number {\n const iso = this.#dateValue;\n if (!iso) return 60000;\n\n const absDiff = Math.abs(new Date(iso).getTime() - Date.now());\n if (absDiff < 60000) return 10000;\n if (absDiff < 3600000) return 30000;\n if (absDiff < 86400000) return 300000;\n return 3600000;\n }\n\n #startSync() {\n this.#stopSync();\n if (!this.sync) return;\n\n this.#timer = setTimeout(() => {\n this.requestUpdate();\n this.#startSync();\n }, this.#getSyncInterval());\n }\n\n #stopSync() {\n if (this.#timer !== undefined) {\n clearTimeout(this.#timer);\n this.#timer = undefined;\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n if (this.sync) this.#startSync();\n }\n\n disconnectedCallback() {\n this.#stopSync();\n super.disconnectedCallback();\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('sync')) {\n if (this.sync) {\n this.#startSync();\n } else {\n this.#stopSync();\n }\n }\n }\n\n render() {\n return html`<time internal-host datetime=${this.#dateValue}>${this.#formattedRelativeTime}<slot @slotchange=${this.#onSlotChange} hidden></slot></time>`;\n }\n\n #onSlotChange() {\n this.requestUpdate();\n }\n}\n"],"mappings":";;;;;;;;AAmBO,IAAA,IAAA,cAAiC,EAAW;;8BAuBQ,6BAKyC,oBAKY,oBAK1E;;;gBArCpB,EAAU,CAAC,EAAO,CAAC;;;kBAER;GACzB,KAAK;GACL,SAAS;GACV;;CAkCD;CAEA,KAAA,IAAyB;AACvB,SAAO,KAAK,QAAQ,KAAK,aAAa,MAAM,IAAI;;CAGlD,KAAA,IAA0C;AACxC,SAAO,KAAK,WAAW,WAAW,UAAU,iBAAiB,QAAQ,KAAA;;CAGvE,GAAa,GAAsE;EACjF,IAAM,IAAU,KAAK,IAAI,EAAO,EAC1B,IAAO,IAAS,IAAI,KAAK,GAEzB,IAAU,KAAK,MAAM,IAAU,IAAK,EACpC,IAAU,KAAK,MAAM,IAAU,IAAM,EACrC,IAAQ,KAAK,MAAM,IAAU,KAAQ,EACrC,IAAO,KAAK,MAAM,IAAU,MAAS,EACrC,IAAQ,KAAK,MAAM,IAAU,OAAU,EACvC,IAAS,KAAK,MAAM,IAAU,OAAW,EACzC,IAAQ,KAAK,MAAM,IAAU,QAAY;AAQ/C,SANI,IAAU,KAAW;GAAE,OAAO,IAAO;GAAS,MAAM;GAAU,GAC9D,IAAU,KAAW;GAAE,OAAO,IAAO;GAAS,MAAM;GAAU,GAC9D,IAAQ,KAAW;GAAE,OAAO,IAAO;GAAO,MAAM;GAAQ,GACxD,IAAO,IAAU;GAAE,OAAO,IAAO;GAAM,MAAM;GAAO,GACpD,IAAQ,IAAU;GAAE,OAAO,IAAO;GAAO,MAAM;GAAQ,GACvD,IAAS,KAAW;GAAE,OAAO,IAAO;GAAQ,MAAM;GAAS,GACxD;GAAE,OAAO,IAAO;GAAO,MAAM;GAAQ;;CAG9C,GAAqB,GAAgB,GAA8B;AAUjE,SAAO,KAAK,MAAM,KATuB;GACvC,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,KAAK;GACL,MAAM;GACN,OAAO;GACP,MAAM;GACP,CACoC,MAAS,GAAG;;CAGnD,KAAA,IAAqC;EACnC,IAAM,IAAM,MAAA;AACZ,MAAI,CAAC,EAAK,QAAO;EAEjB,IAAM,IAAS,IAAI,KAAK,EAAI;AAC5B,MAAI,MAAM,EAAO,SAAS,CAAC,CAEzB,QADA,EAAW,KAAK,6CAA6C,EAAI,GAAG,EAC7D;EAGT,IAAM,IAAS,EAAO,SAAS,GAAG,KAAK,KAAK,EACxC,GACA;AAEJ,EAAI,KAAK,SAAS,SACf,WAAS,MAAM,KAAiB,MAAA,EAAkB,EAAO,IAE1D,IAAe,KAAK,MACpB,IAAQ,MAAA,EAA0B,GAAQ,EAAa;AAGzD,MAAI;AACF,UAAO,IAAI,KAAK,mBAAmB,MAAA,GAAsB;IACvD,SAAS,KAAK;IACd,OAAO,KAAK;IACb,CAAC,CAAC,OAAO,GAAO,EAAa;WACvB,GAAG;AAEV,UADA,EAAW,KAAK,yBAA0B,EAAY,UAAU,EACzD;;;CAIX,KAA2B;EACzB,IAAM,IAAM,MAAA;AACZ,MAAI,CAAC,EAAK,QAAO;EAEjB,IAAM,IAAU,KAAK,IAAI,IAAI,KAAK,EAAI,CAAC,SAAS,GAAG,KAAK,KAAK,CAAC;AAI9D,SAHI,IAAU,MAAc,MACxB,IAAU,OAAgB,MAC1B,IAAU,QAAiB,MACxB;;CAGT,KAAa;AACX,QAAA,GAAgB,EACX,KAAK,SAEV,MAAA,IAAc,iBAAiB;AAE7B,GADA,KAAK,eAAe,EACpB,MAAA,GAAiB;KAChB,MAAA,GAAuB,CAAC;;CAG7B,KAAY;AACV,EAAI,MAAA,MAAgB,KAAA,MAClB,aAAa,MAAA,EAAY,EACzB,MAAA,IAAc,KAAA;;CAIlB,oBAAoB;AAElB,EADA,MAAM,mBAAmB,EACrB,KAAK,QAAM,MAAA,GAAiB;;CAGlC,uBAAuB;AAErB,EADA,MAAA,GAAgB,EAChB,MAAM,sBAAsB;;CAG9B,QAAQ,GAA+B;AACrC,EAAI,EAAQ,IAAI,OAAO,KACjB,KAAK,OACP,MAAA,GAAiB,GAEjB,MAAA,GAAgB;;CAKtB,SAAS;AACP,SAAO,CAAI,iCAAgC,MAAA,EAAgB,IAAG,MAAA,EAA4B,qBAAoB,MAAA,EAAmB;;CAGnI,KAAgB;AACd,OAAK,eAAe;;;GA5JrB,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,KAK1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,UAAA,KAAA,EAAA,KAK1B,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,WAAA,KAAA,EAAA,KAK1B,EAAS;CAAE,MAAM;CAAQ,WAAW;CAAgB,CAAC,CAAA,EAAA,EAAA,WAAA,eAAA,KAAA,EAAA,KAKrD,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,KAK1B,EAAS,EAAE,MAAM,SAAS,CAAC,CAAA,EAAA,EAAA,WAAA,QAAA,KAAA,EAAA,SAvC7B,GAAS,CAAA,EAAA,EAAA"}
@@ -0,0 +1 @@
1
+ export * from './format-relative-time.js';
@@ -0,0 +1,2 @@
1
+ import { FormatRelativeTime as e } from "./format-relative-time2.js";
2
+ export { e as FormatRelativeTime };
@@ -40,7 +40,7 @@ var C = class extends v {
40
40
  static {
41
41
  this.metadata = {
42
42
  tag: "nve-control",
43
- version: "0.0.3"
43
+ version: "0.0.5"
44
44
  };
45
45
  }
46
46
  render() {
@@ -25,7 +25,7 @@ var h = class extends f {
25
25
  static {
26
26
  this.metadata = {
27
27
  tag: "nve-control-group",
28
- version: "0.0.3"
28
+ version: "0.0.5"
29
29
  };
30
30
  }
31
31
  render() {
@@ -23,7 +23,7 @@ var l = {
23
23
  static {
24
24
  this.metadata = {
25
25
  tag: "nve-control-message",
26
- version: "0.0.3"
26
+ version: "0.0.5"
27
27
  };
28
28
  }
29
29
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"forms.examples.js","names":[],"sources":["../../src/forms/forms.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/button/define.js';\nimport '@nvidia-elements/core/icon-button/define.js';\nimport '@nvidia-elements/core/password/define.js';\nimport '@nvidia-elements/core/input/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/checkbox/define.js';\nimport '@nvidia-elements/core/radio/define.js';\nimport '@nvidia-elements/core/range/define.js';\nimport '@nvidia-elements/core/time/define.js';\nimport '@nvidia-elements/core/date/define.js';\nimport '@nvidia-elements/core/color/define.js';\nimport '@nvidia-elements/core/datetime/define.js';\nimport '@nvidia-elements/core/select/define.js';\nimport '@nvidia-elements/core/switch/define.js';\nimport '@nvidia-elements/core/week/define.js';\nimport '@nvidia-elements/core/file/define.js';\nimport '@nvidia-elements/core/month/define.js';\nimport '@nvidia-elements/core/textarea/define.js';\n\nexport default {\n title: 'Elements/Forms',\n component: 'forms'\n}\n\n/**\n * @summary Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns for complete form design reference.\n */\nexport const KitchenSink = {\n render: () => html`\n<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px;\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly=\"\">.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n `\n}\n\n/**\n * @summary Traditional vertical form layout with labels above inputs, providing clear visual hierarchy and optimal readability for complex forms.\n */\nexport const Vertical = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input>\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search>\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password>\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select>\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range>\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group>\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group>\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group>\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select>\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea>\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Compact vertical layout with inline labels and controls, maximizing space efficiency while maintaining form clarity and accessibility.\n */\nexport const VerticalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Horizontal form layout with labels beside inputs, creating efficient use of horizontal space and familiar desktop form patterns.\n */\nexport const Horizontal = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Space-efficient horizontal layout with inline labels, ideal for dense forms with tight vertical space where quick scanning matters.\n */\nexport const HorizontalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Form controls that automatically adjust their width to fit content, optimizing space usage for dynamic or variable-length inputs.\n * @tags test-case\n */\nexport const FitText = {\n render: () => html`\n<section nve-layout=\"column gap:md full\">\n <nve-date fit-text>\n <label>date</label>\n <input type=\"date\" value=\"2017-06-01\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-input fit-text>\n <label>label</label>\n <input value=\"123456789012345678901234567890\" />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-select fit-text>\n <label>label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 1234</option>\n <option value=\"3\">Option 1234567809</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n</section>\n`\n};\n\n/**\n * @summary Hidden status icon on the control message in form controls.\n * @tags test-case\n */\nexport const HiddenMessageIcon = {\n render: () => html`\n<style>\n .hidden-icon::part(icon) {\n display: none;\n }\n</style>\n<nve-switch-group style=\"width: 200px\">\n <nve-switch>\n <label>default</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>success</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"success\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>error</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"error\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>warning</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"warning\">hidden icon control message</nve-control-message>\n </nve-switch>\n</nve-switch-group>\n`\n}\n\n/**\n * @summary Use the prominence muted state to lower visual weight of controls in forms.\n */\nexport const ProminenceMuted = {\n render: () => html`\n<div nve-layout=\"row gap:lg\">\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n <nve-card>\n <nve-card-content>\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n </nve-card-content>\n </nve-card>\n</div>\n`\n}"],"mappings":";AAGA,IAAA,IAAS"}
1
+ {"version":3,"file":"forms.examples.js","names":[],"sources":["../../src/forms/forms.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/button/define.js';\nimport '@nvidia-elements/core/icon-button/define.js';\nimport '@nvidia-elements/core/password/define.js';\nimport '@nvidia-elements/core/input/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/checkbox/define.js';\nimport '@nvidia-elements/core/radio/define.js';\nimport '@nvidia-elements/core/range/define.js';\nimport '@nvidia-elements/core/time/define.js';\nimport '@nvidia-elements/core/date/define.js';\nimport '@nvidia-elements/core/color/define.js';\nimport '@nvidia-elements/core/datetime/define.js';\nimport '@nvidia-elements/core/select/define.js';\nimport '@nvidia-elements/core/switch/define.js';\nimport '@nvidia-elements/core/week/define.js';\nimport '@nvidia-elements/core/file/define.js';\nimport '@nvidia-elements/core/month/define.js';\nimport '@nvidia-elements/core/textarea/define.js';\n\nexport default {\n title: 'Elements/Forms',\n component: 'forms'\n}\n\n/**\n * @summary Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns use for a complete form design reference.\n * @tags pattern\n */\nexport const KitchenSink = {\n render: () => html`\n<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px;\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly=\"\">.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n `\n}\n\n/**\n * @summary Traditional vertical form layout with labels above inputs, providing clear visual hierarchy and optimal readability for complex forms.\n */\nexport const Vertical = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input>\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search>\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password>\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select>\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range>\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group>\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group>\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group>\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select>\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea>\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Compact vertical layout with inline labels and controls, maximizing space efficiency while maintaining form clarity and accessibility.\n */\nexport const VerticalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Horizontal form layout with labels beside inputs, creating efficient use of horizontal space and familiar desktop form patterns.\n */\nexport const Horizontal = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Space-efficient horizontal layout with inline labels, ideal for dense forms with tight vertical space where quick scanning matters.\n */\nexport const HorizontalInline = () => {\n return html`\n<div nve-layout=\"column gap:lg full\">\n <nve-input layout=\"horizontal-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-search layout=\"horizontal-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n\n <nve-password layout=\"horizontal-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-range layout=\"horizontal-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n\n <nve-checkbox-group layout=\"horizontal-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n\n <nve-radio-group layout=\"horizontal-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n\n <nve-switch-group layout=\"horizontal-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n\n <nve-select layout=\"horizontal-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n\n <nve-textarea layout=\"horizontal-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n</div>\n `;\n};\n\n/**\n * @summary Form controls that automatically adjust their width to fit content, optimizing space usage for dynamic or variable-length inputs.\n * @tags test-case\n */\nexport const FitText = {\n render: () => html`\n<section nve-layout=\"column gap:md full\">\n <nve-date fit-text>\n <label>date</label>\n <input type=\"date\" value=\"2017-06-01\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n\n <nve-input fit-text>\n <label>label</label>\n <input value=\"123456789012345678901234567890\" />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n\n <nve-select fit-text>\n <label>label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 1234</option>\n <option value=\"3\">Option 1234567809</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n</section>\n`\n};\n\n/**\n * @summary Hidden status icon on the control message in form controls.\n * @tags test-case\n */\nexport const HiddenMessageIcon = {\n render: () => html`\n<style>\n .hidden-icon::part(icon) {\n display: none;\n }\n</style>\n<nve-switch-group style=\"width: 200px\">\n <nve-switch>\n <label>default</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>success</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"success\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>error</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"error\">hidden icon control message</nve-control-message>\n </nve-switch>\n <nve-switch>\n <label>warning</label>\n <input type=\"checkbox\" />\n <nve-control-message class=\"hidden-icon\" status=\"warning\">hidden icon control message</nve-control-message>\n </nve-switch>\n</nve-switch-group>\n`\n}\n\n/**\n * @summary Use the prominence muted state to lower visual weight of controls in forms.\n */\nexport const ProminenceMuted = {\n render: () => html`\n<div nve-layout=\"row gap:lg\">\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n <nve-card>\n <nve-card-content>\n <div nve-layout=\"column gap:lg pad:lg\">\n <nve-radio-group prominence=\"muted\">\n <label>label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n </nve-radio-group>\n\n <nve-checkbox-group prominence=\"muted\">\n <label>label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n </nve-checkbox-group>\n\n <nve-switch-group prominence=\"muted\">\n <label>label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 3</label>\n <input type=\"checkbox\" />\n </nve-switch>\n </nve-switch-group>\n\n <nve-range prominence=\"muted\">\n <label>label</label>\n <input type=\"range\" />\n </nve-range>\n </div>\n </nve-card-content>\n </nve-card>\n</div>\n`\n}"],"mappings":";AAGA,IAAA,IAAS"}
@@ -6,10 +6,12 @@
6
6
  "id": "core-forms_kitchen-sink",
7
7
  "name": "KitchenSink",
8
8
  "template": "<div style=\"display: grid; gap: 36px 48px; grid-template-columns: 1fr 1fr; max-width: 1400px\">\n <nve-input layout=\"vertical-inline\">\n <label>text label</label>\n <input />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-search layout=\"vertical-inline\">\n <label>search label</label>\n <input type=\"search\" placeholder=\"search\" />\n <nve-control-message>message</nve-control-message>\n </nve-search>\n <nve-password layout=\"vertical-inline\">\n <label>password label</label>\n <input type=\"password\" value=\"123456\" autocomplete=\"off\" />\n <nve-control-message>message</nve-control-message>\n </nve-password>\n <nve-select layout=\"vertical-inline\">\n <label>select label</label>\n <select>\n <option value=\"1\">Option 1</option>\n <option value=\"2\">Option 2</option>\n <option value=\"3\">Option 3</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-date layout=\"vertical-inline\">\n <label>date label</label>\n <input type=\"date\" />\n <nve-control-message>message</nve-control-message>\n </nve-date>\n <nve-datetime layout=\"vertical-inline\">\n <label>datetime label</label>\n <input type=\"datetime-local\" />\n <nve-control-message>message</nve-control-message>\n </nve-datetime>\n <nve-month layout=\"vertical-inline\">\n <label>month label</label>\n <input type=\"month\" />\n <nve-control-message>message</nve-control-message>\n </nve-month>\n <nve-week layout=\"vertical-inline\">\n <label>week label</label>\n <input type=\"week\" />\n <nve-control-message>message</nve-control-message>\n </nve-week>\n <nve-time layout=\"vertical-inline\">\n <label>time label</label>\n <input type=\"time\" />\n <nve-control-message>message</nve-control-message>\n </nve-time>\n <nve-color layout=\"vertical-inline\">\n <label>color label</label>\n <input type=\"color\" />\n <nve-control-message>message</nve-control-message>\n </nve-color>\n <nve-input layout=\"vertical-inline\">\n <label>prefix/suffix label</label>\n <nve-button container=\"flat\" readonly>https://</nve-button>\n <input type=\"text\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>actions label</label>\n <nve-icon-button icon-name=\"search\" container=\"flat\" readonly></nve-icon-button>\n <input type=\"text\" />\n <nve-icon-button icon-name=\"cancel\" container=\"flat\" aria-label=\"clear\"></nve-icon-button>\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input-group layout=\"vertical-inline\">\n <label>date range</label>\n <nve-date>\n <input type=\"date\" aria-label=\"start date\" value=\"2018-07-22\" />\n </nve-date>\n <nve-date>\n <input type=\"date\" aria-label=\"end date\" value=\"2022-07-22\" />\n </nve-date>\n <nve-control-message>message</nve-control-message>\n </nve-input-group>\n <nve-input-group layout=\"vertical-inline\">\n <label>domain</label>\n <nve-select style=\"width: 120px\">\n <select aria-label=\"protocol\">\n <option>https://</option>\n <option>http://</option>\n </select>\n </nve-select>\n <nve-input>\n <input placeholder=\"example\" aria-label=\"host\" />\n <nve-button container=\"flat\" readonly>.com</nve-button>\n </nve-input>\n <nve-control-message>Host ID: 123456</nve-control-message>\n </nve-input-group>\n <nve-range layout=\"vertical-inline\">\n <label>range label</label>\n <input type=\"range\" />\n <nve-control-message>message</nve-control-message>\n </nve-range>\n <nve-checkbox-group layout=\"vertical-inline\">\n <label>checkbox group label</label>\n <nve-checkbox>\n <label>checkbox 1</label>\n <input type=\"checkbox\" checked />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 2</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-checkbox>\n <label>checkbox 3</label>\n <input type=\"checkbox\" />\n </nve-checkbox>\n <nve-control-message>message</nve-control-message>\n </nve-checkbox-group>\n <nve-radio-group layout=\"vertical-inline\">\n <label>radio group label</label>\n <nve-radio>\n <label>radio 1</label>\n <input type=\"radio\" checked />\n </nve-radio>\n <nve-radio>\n <label>radio 2</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-radio>\n <label>radio 3</label>\n <input type=\"radio\" />\n </nve-radio>\n <nve-control-message>message</nve-control-message>\n </nve-radio-group>\n <nve-switch-group layout=\"vertical-inline\">\n <label>switch group label</label>\n <nve-switch>\n <label>switch 1</label>\n <input type=\"checkbox\" />\n </nve-switch>\n <nve-switch>\n <label>switch 2</label>\n <input type=\"checkbox\" checked />\n </nve-switch>\n <nve-control-message>message</nve-control-message>\n </nve-switch-group>\n <nve-select layout=\"vertical-inline\">\n <label>select multiple label</label>\n <select multiple>\n <option value=\"1\">Option 1</option>\n <option selected value=\"2\">Option 2</option>\n <option selected value=\"3\">Option 3</option>\n <option selected value=\"3\">Option 3</option>\n <option value=\"4\">Option 4</option>\n <option value=\"5\">Option 5</option>\n </select>\n <nve-control-message>message</nve-control-message>\n </nve-select>\n <nve-textarea layout=\"vertical-inline\">\n <label>textarea label</label>\n <textarea></textarea>\n <nve-control-message>message</nve-control-message>\n </nve-textarea>\n <nve-file>\n <label>file label</label>\n <input type=\"file\" />\n <nve-control-message>message</nve-control-message>\n </nve-file>\n <nve-search rounded>\n <input type=\"search\" aria-label=\"search\" placeholder=\"search\" />\n <datalist>\n <option value=\"search result 1\"></option>\n <option value=\"search result 2\"></option>\n <option value=\"search result 3\"></option>\n </datalist>\n </nve-search>\n <nve-input layout=\"vertical-inline\">\n <label>disabled</label>\n <input disabled />\n <nve-control-message>message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>success</label>\n <input />\n <nve-control-message status=\"success\">message</nve-control-message>\n </nve-input>\n <nve-input layout=\"vertical-inline\">\n <label>error</label>\n <input />\n <nve-control-message status=\"error\">message</nve-control-message>\n </nve-input>\n</div>\n",
9
- "summary": "Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns for complete form design reference.",
9
+ "summary": "Comprehensive showcase of all form controls in a grid layout, including input types, states, and advanced patterns use for a complete form design reference.",
10
10
  "description": "",
11
11
  "composition": true,
12
- "tags": []
12
+ "tags": [
13
+ "pattern"
14
+ ]
13
15
  },
14
16
  {
15
17
  "id": "core-forms_vertical",
@@ -10,7 +10,7 @@ var a = class extends r {
10
10
  static {
11
11
  this.metadata = {
12
12
  tag: "nve-grid-cell",
13
- version: "0.0.3"
13
+ version: "0.0.5"
14
14
  };
15
15
  }
16
16
  render() {
@@ -13,7 +13,7 @@ var l = class r extends o {
13
13
  static {
14
14
  this.metadata = {
15
15
  tag: "nve-grid-column",
16
- version: "0.0.3"
16
+ version: "0.0.5"
17
17
  };
18
18
  }
19
19
  get #e() {
@@ -15,7 +15,7 @@ var s = class extends a {
15
15
  static {
16
16
  this.metadata = {
17
17
  tag: "nve-grid-footer",
18
- version: "0.0.3"
18
+ version: "0.0.5"
19
19
  };
20
20
  }
21
21
  static {