@redvars/peacock 3.8.1 → 3.8.3

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 (501) hide show
  1. package/dist/{BaseInput-14YmcfK7.js → BaseInput-CU1zZYKc.js} +3 -3
  2. package/dist/{BaseInput-14YmcfK7.js.map → BaseInput-CU1zZYKc.js.map} +1 -1
  3. package/dist/ButtonConstants-CahP2_NA.js +4 -0
  4. package/dist/ButtonConstants-CahP2_NA.js.map +1 -0
  5. package/dist/{IndividualComponent-DUINtMGK.js → IndividualComponent-Bdwyrvd6.js} +2 -2
  6. package/dist/{IndividualComponent-DUINtMGK.js.map → IndividualComponent-Bdwyrvd6.js.map} +1 -1
  7. package/dist/{NativeHyperlinkMixin-DrYXyfMQ.js → NativeHyperlinkMixin-D9J4aBTy.js} +4 -30
  8. package/dist/NativeHyperlinkMixin-D9J4aBTy.js.map +1 -0
  9. package/dist/accordion-item.js +338 -0
  10. package/dist/accordion-item.js.map +1 -0
  11. package/dist/accordion.js +159 -0
  12. package/dist/accordion.js.map +1 -0
  13. package/dist/alert.js +190 -0
  14. package/dist/alert.js.map +1 -0
  15. package/dist/app-bar.js +324 -0
  16. package/dist/app-bar.js.map +1 -0
  17. package/dist/assets/components.css +1 -1
  18. package/dist/assets/components.css.map +1 -1
  19. package/dist/assets/styles.css +1 -1
  20. package/dist/assets/styles.css.map +1 -1
  21. package/dist/attachable-controller-CAKVrfcG.js +119 -0
  22. package/dist/attachable-controller-CAKVrfcG.js.map +1 -0
  23. package/dist/avatar.js +114 -0
  24. package/dist/avatar.js.map +1 -0
  25. package/dist/babel-DBsfpl3B.js +18 -0
  26. package/dist/babel-DBsfpl3B.js.map +1 -0
  27. package/dist/badge.js +91 -0
  28. package/dist/badge.js.map +1 -0
  29. package/dist/base-Cl6v8-BZ.js +9 -0
  30. package/dist/base-Cl6v8-BZ.js.map +1 -0
  31. package/dist/bottom-sheet.js +14 -5
  32. package/dist/bottom-sheet.js.map +1 -1
  33. package/dist/breadcrumb-item.js +163 -0
  34. package/dist/breadcrumb-item.js.map +1 -0
  35. package/dist/breadcrumb.js +95 -0
  36. package/dist/breadcrumb.js.map +1 -0
  37. package/dist/button-group.js +87 -137
  38. package/dist/button-group.js.map +1 -1
  39. package/dist/button.js +863 -133
  40. package/dist/button.js.map +1 -1
  41. package/dist/calendar-column-view.js +8 -4
  42. package/dist/calendar-column-view.js.map +1 -1
  43. package/dist/calendar-month-view.js +8 -4
  44. package/dist/calendar-month-view.js.map +1 -1
  45. package/dist/calendar.js +8 -4
  46. package/dist/calendar.js.map +1 -1
  47. package/dist/canvas.js +8 -4
  48. package/dist/canvas.js.map +1 -1
  49. package/dist/card-content.js +1 -1
  50. package/dist/card.js +45 -52
  51. package/dist/card.js.map +1 -1
  52. package/dist/cb-compound-expression.js +6 -2
  53. package/dist/cb-compound-expression.js.map +1 -1
  54. package/dist/cb-divider.js +7 -3
  55. package/dist/cb-divider.js.map +1 -1
  56. package/dist/cb-expression.js +6 -2
  57. package/dist/cb-expression.js.map +1 -1
  58. package/dist/cb-predicate.js +7 -3
  59. package/dist/cb-predicate.js.map +1 -1
  60. package/dist/{chart-bar-cn6rrna-.js → chart-bar-CYoGNXnK.js} +6 -2
  61. package/dist/{chart-bar-cn6rrna-.js.map → chart-bar-CYoGNXnK.js.map} +1 -1
  62. package/dist/chart-bar.js +7 -6
  63. package/dist/chart-bar.js.map +1 -1
  64. package/dist/chart-doughnut.js +8 -3
  65. package/dist/chart-doughnut.js.map +1 -1
  66. package/dist/chart-pie.js +8 -3
  67. package/dist/chart-pie.js.map +1 -1
  68. package/dist/chart-stacked-bar.js +7 -6
  69. package/dist/chart-stacked-bar.js.map +1 -1
  70. package/dist/checkbox.js +526 -0
  71. package/dist/checkbox.js.map +1 -0
  72. package/dist/chip.js +459 -0
  73. package/dist/chip.js.map +1 -0
  74. package/dist/{class-map-YU7g0o3B.js → class-map-DG7CA1et.js} +2 -2
  75. package/dist/{class-map-YU7g0o3B.js.map → class-map-DG7CA1et.js.map} +1 -1
  76. package/dist/clock.js +6 -2
  77. package/dist/clock.js.map +1 -1
  78. package/dist/code-editor.js +45 -30
  79. package/dist/code-editor.js.map +1 -1
  80. package/dist/code-highlighter.js +82 -11216
  81. package/dist/code-highlighter.js.map +1 -1
  82. package/dist/color-picker.js +701 -0
  83. package/dist/color-picker.js.map +1 -0
  84. package/dist/condition-builder.js +5 -1
  85. package/dist/condition-builder.js.map +1 -1
  86. package/dist/container.js +141 -0
  87. package/dist/container.js.map +1 -0
  88. package/dist/custom-elements-jsdocs.json +823 -778
  89. package/dist/custom-elements.json +4067 -2207
  90. package/dist/datasource-B2eRh6Or.js +108 -0
  91. package/dist/datasource-B2eRh6Or.js.map +1 -0
  92. package/dist/dispatch-event-utils-CuEqjlPT.js.map +1 -1
  93. package/dist/divider.js +135 -0
  94. package/dist/divider.js.map +1 -0
  95. package/dist/dropdown-button.js +11 -6
  96. package/dist/dropdown-button.js.map +1 -1
  97. package/dist/element-internals-2CMts_0M.js +290 -0
  98. package/dist/element-internals-2CMts_0M.js.map +1 -0
  99. package/dist/elevation.js +94 -0
  100. package/dist/elevation.js.map +1 -0
  101. package/dist/empty-state.js +194 -0
  102. package/dist/empty-state.js.map +1 -0
  103. package/dist/estree-C2LDzX4U.js +47 -0
  104. package/dist/estree-C2LDzX4U.js.map +1 -0
  105. package/dist/{event-manager-D-QCmUgR.js → event-manager-DTyX2uYD.js} +2 -2
  106. package/dist/{event-manager-D-QCmUgR.js.map → event-manager-DTyX2uYD.js.map} +1 -1
  107. package/dist/fab.js +139 -148
  108. package/dist/fab.js.map +1 -1
  109. package/dist/field.js +461 -0
  110. package/dist/field.js.map +1 -0
  111. package/dist/{popover-DUPmMVWS.js → floating-controller-CnUZnOhK.js} +2 -171
  112. package/dist/floating-controller-CnUZnOhK.js.map +1 -0
  113. package/dist/{flow-designer-node-BWrPuxAR.js → flow-designer-node-DsVwQTac.js} +7 -3
  114. package/dist/{flow-designer-node-BWrPuxAR.js.map → flow-designer-node-DsVwQTac.js.map} +1 -1
  115. package/dist/flow-designer-node.js +3 -3
  116. package/dist/flow-designer.js +19 -12
  117. package/dist/flow-designer.js.map +1 -1
  118. package/dist/focus-ring.js +126 -0
  119. package/dist/focus-ring.js.map +1 -0
  120. package/dist/form-associated-BXADnjOB.js +388 -0
  121. package/dist/form-associated-BXADnjOB.js.map +1 -0
  122. package/dist/html-D22sQuVy.js +27 -0
  123. package/dist/html-D22sQuVy.js.map +1 -0
  124. package/dist/html-editor.js +21 -9
  125. package/dist/html-editor.js.map +1 -1
  126. package/dist/hyperlink-DLvb6MXE.js +98 -0
  127. package/dist/hyperlink-DLvb6MXE.js.map +1 -0
  128. package/dist/icon-button.js +1064 -0
  129. package/dist/icon-button.js.map +1 -0
  130. package/dist/icon.js +170 -0
  131. package/dist/icon.js.map +1 -0
  132. package/dist/if-defined-BXZpRQ4P.js +10 -0
  133. package/dist/if-defined-BXZpRQ4P.js.map +1 -0
  134. package/dist/image.js +201 -0
  135. package/dist/image.js.map +1 -0
  136. package/dist/index-_g_oLekF.js +14095 -0
  137. package/dist/index-_g_oLekF.js.map +1 -0
  138. package/dist/index.js +74 -20
  139. package/dist/index.js.map +1 -1
  140. package/dist/is-dark-mode-DOcaw4Yq.js.map +1 -1
  141. package/dist/is-link-Dk2OV3PM.js +6 -0
  142. package/dist/is-link-Dk2OV3PM.js.map +1 -0
  143. package/dist/item.js +213 -0
  144. package/dist/item.js.map +1 -0
  145. package/dist/link.js +75 -0
  146. package/dist/link.js.map +1 -0
  147. package/dist/list-H0itjRte.js +526 -0
  148. package/dist/list-H0itjRte.js.map +1 -0
  149. package/dist/list.js +14 -0
  150. package/dist/list.js.map +1 -0
  151. package/dist/{peacock-loader.js → loader.js} +87 -22
  152. package/dist/loader.js.map +1 -0
  153. package/dist/menu-item.js +388 -0
  154. package/dist/menu-item.js.map +1 -0
  155. package/dist/menu.js +520 -0
  156. package/dist/menu.js.map +1 -0
  157. package/dist/modal.js +9 -5
  158. package/dist/modal.js.map +1 -1
  159. package/dist/navigation-rail-item.js +400 -0
  160. package/dist/navigation-rail-item.js.map +1 -0
  161. package/dist/navigation-rail.js +219 -0
  162. package/dist/navigation-rail.js.map +1 -0
  163. package/dist/notification-manager.js +8 -4
  164. package/dist/notification-manager.js.map +1 -1
  165. package/dist/notification.js +8 -4
  166. package/dist/notification.js.map +1 -1
  167. package/dist/number-counter.js +7 -3
  168. package/dist/number-counter.js.map +1 -1
  169. package/dist/{observe-slot-change-D8Xg-kSS.js → observe-slot-change-DPxaZrZF.js} +3 -4
  170. package/dist/observe-slot-change-DPxaZrZF.js.map +1 -0
  171. package/dist/option.js +121 -0
  172. package/dist/option.js.map +1 -0
  173. package/dist/pagination.js +255 -0
  174. package/dist/pagination.js.map +1 -0
  175. package/dist/pierre-dark-DFWl0m-C.js +4 -0
  176. package/dist/pierre-dark-DFWl0m-C.js.map +1 -0
  177. package/dist/pierre-light-BEkAPImt.js +4 -0
  178. package/dist/pierre-light-BEkAPImt.js.map +1 -0
  179. package/dist/popover-content.js +7 -3
  180. package/dist/popover-content.js.map +1 -1
  181. package/dist/popover.js +175 -3
  182. package/dist/popover.js.map +1 -1
  183. package/dist/postcss-BhbitHaI.js +64 -0
  184. package/dist/postcss-BhbitHaI.js.map +1 -0
  185. package/dist/{property-1psGvXOq.js → property-B49QQ8pS.js} +2 -2
  186. package/dist/{property-1psGvXOq.js.map → property-B49QQ8pS.js.map} +1 -1
  187. package/dist/query-CHb9Ft_d.js +10 -0
  188. package/dist/query-CHb9Ft_d.js.map +1 -0
  189. package/dist/query-assigned-elements-BJaGSqM0.js +10 -0
  190. package/dist/query-assigned-elements-BJaGSqM0.js.map +1 -0
  191. package/dist/radio.js +476 -0
  192. package/dist/radio.js.map +1 -0
  193. package/dist/ripple.js +506 -0
  194. package/dist/ripple.js.map +1 -0
  195. package/dist/search.js +12 -7
  196. package/dist/search.js.map +1 -1
  197. package/dist/segmented-button-group.js +137 -0
  198. package/dist/segmented-button-group.js.map +1 -0
  199. package/dist/segmented-button.js +289 -0
  200. package/dist/segmented-button.js.map +1 -0
  201. package/dist/select-CspawZ18.js +3944 -0
  202. package/dist/select-CspawZ18.js.map +1 -0
  203. package/dist/side-sheet.js +9 -5
  204. package/dist/side-sheet.js.map +1 -1
  205. package/dist/skeleton.js +122 -0
  206. package/dist/skeleton.js.map +1 -0
  207. package/dist/slider.js +346 -0
  208. package/dist/slider.js.map +1 -0
  209. package/dist/snackbar.js +335 -0
  210. package/dist/snackbar.js.map +1 -0
  211. package/dist/spinner.js +100 -0
  212. package/dist/spinner.js.map +1 -0
  213. package/dist/split-button.js +10 -5
  214. package/dist/split-button.js.map +1 -1
  215. package/dist/spread-B5cgadZl.js +32 -0
  216. package/dist/spread-B5cgadZl.js.map +1 -0
  217. package/dist/src/__internal/aria/aria.d.ts +98 -0
  218. package/dist/src/__internal/aria/delegate.d.ts +54 -0
  219. package/dist/src/__internal/events/dispatch-hooks.d.ts +80 -0
  220. package/dist/src/__internal/mixins/element-internals.d.ts +40 -0
  221. package/dist/src/__internal/mixins/form-associated.d.ts +174 -0
  222. package/dist/src/__internal/mixins/form-submitter.d.ts +59 -0
  223. package/dist/src/__internal/mixins/hyperlink.d.ts +42 -0
  224. package/dist/src/__internal/mixins/mixin.d.ts +49 -0
  225. package/dist/src/{__utils → __internal/utils}/observe-slot-change.d.ts +1 -0
  226. package/dist/src/accordion/accordion-item.d.ts +3 -1
  227. package/dist/src/accordion/accordion.d.ts +1 -1
  228. package/dist/src/alert/alert.d.ts +43 -0
  229. package/dist/src/alert/index.d.ts +1 -0
  230. package/dist/src/app-bar/app-bar.d.ts +92 -0
  231. package/dist/src/app-bar/index.d.ts +1 -0
  232. package/dist/src/avatar/avatar.d.ts +2 -0
  233. package/dist/src/bottom-sheet/bottom-sheet.d.ts +1 -1
  234. package/dist/src/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +1 -0
  235. package/dist/src/button/ButtonTypes.d.ts +5 -0
  236. package/dist/src/button/base-button/base-button.d.ts +18 -0
  237. package/dist/src/button/button/button.d.ts +29 -37
  238. package/dist/src/button/button-group/button-group.d.ts +17 -18
  239. package/dist/src/{fab → button/fab}/fab.d.ts +8 -26
  240. package/dist/src/button/icon-button/icon-button.d.ts +20 -27
  241. package/dist/src/button/index.d.ts +1 -0
  242. package/dist/src/calendar/calendar.d.ts +1 -1
  243. package/dist/src/canvas/canvas.d.ts +1 -1
  244. package/dist/src/card/card.d.ts +5 -6
  245. package/dist/src/chart-bar/chart-bar.d.ts +1 -1
  246. package/dist/src/chart-bar/chart-stacked-bar.d.ts +1 -1
  247. package/dist/src/checkbox/checkbox.d.ts +5 -1
  248. package/dist/src/chip/chip/chip.d.ts +9 -8
  249. package/dist/src/code-highlighter/code-highlighter.d.ts +2 -2
  250. package/dist/src/color-picker/color-picker.d.ts +85 -0
  251. package/dist/src/color-picker/index.d.ts +1 -0
  252. package/dist/src/container/container.d.ts +5 -1
  253. package/dist/src/divider/divider.d.ts +2 -0
  254. package/dist/src/empty-state/empty-state.d.ts +1 -0
  255. package/dist/src/field/field.d.ts +19 -1
  256. package/dist/src/focus-ring/focus-ring.d.ts +3 -7
  257. package/dist/src/html-editor/html-editor.d.ts +1 -1
  258. package/dist/src/icon/icon.d.ts +9 -4
  259. package/dist/src/image/image.d.ts +4 -0
  260. package/dist/src/index.d.ts +8 -6
  261. package/dist/src/item/item.d.ts +19 -29
  262. package/dist/src/link/link.d.ts +1 -1
  263. package/dist/src/list/list-item.d.ts +10 -6
  264. package/dist/src/list/list.d.ts +27 -2
  265. package/dist/src/menu/menu/menu.d.ts +14 -0
  266. package/dist/src/menu/menu-item/menu-item.d.ts +11 -4
  267. package/dist/src/modal/modal.d.ts +1 -1
  268. package/dist/src/navigation-rail/navigation-rail-item.d.ts +5 -4
  269. package/dist/src/navigation-rail/navigation-rail.d.ts +1 -1
  270. package/dist/src/radio/radio.d.ts +5 -0
  271. package/dist/src/ripple/ripple.d.ts +10 -1
  272. package/dist/src/search/search.d.ts +1 -1
  273. package/dist/src/segmented-button/segmented-button-group.d.ts +2 -2
  274. package/dist/src/segmented-button/segmented-button.d.ts +2 -0
  275. package/dist/src/side-sheet/side-sheet.d.ts +1 -1
  276. package/dist/src/skeleton/skeleton.d.ts +1 -0
  277. package/dist/src/slider/slider.d.ts +1 -0
  278. package/dist/src/snackbar/snackbar.d.ts +12 -2
  279. package/dist/src/svg/svg.d.ts +5 -0
  280. package/dist/src/table/table.d.ts +5 -0
  281. package/dist/src/tabs/tab.d.ts +2 -7
  282. package/dist/src/toolbar/toolbar.d.ts +2 -2
  283. package/dist/standalone-Ccq0tWwA.js +32 -0
  284. package/dist/standalone-Ccq0tWwA.js.map +1 -0
  285. package/dist/{state-DwbEjqVk.js → state-DkTK9EGF.js} +2 -2
  286. package/dist/{state-DwbEjqVk.js.map → state-DkTK9EGF.js.map} +1 -1
  287. package/dist/{style-map-DVmWOuYy.js → style-map-BQD5Et1D.js} +2 -2
  288. package/dist/{style-map-DVmWOuYy.js.map → style-map-BQD5Et1D.js.map} +1 -1
  289. package/dist/sub-menu.js +246 -0
  290. package/dist/sub-menu.js.map +1 -0
  291. package/dist/svg.js +273 -0
  292. package/dist/svg.js.map +1 -0
  293. package/dist/tab-group.js +188 -0
  294. package/dist/tab-group.js.map +1 -0
  295. package/dist/tab-panel.js +61 -0
  296. package/dist/tab-panel.js.map +1 -0
  297. package/dist/tab.js +658 -0
  298. package/dist/tab.js.map +1 -0
  299. package/dist/table.js +620 -0
  300. package/dist/table.js.map +1 -0
  301. package/dist/tabs.js +240 -0
  302. package/dist/tabs.js.map +1 -0
  303. package/dist/throttle-C7ZAPqtu.js +24 -0
  304. package/dist/throttle-C7ZAPqtu.js.map +1 -0
  305. package/dist/toolbar.js +9 -5
  306. package/dist/toolbar.js.map +1 -1
  307. package/dist/tooltip.js +270 -0
  308. package/dist/tooltip.js.map +1 -0
  309. package/dist/tsconfig.tsbuildinfo +1 -1
  310. package/dist/{unsafe-html-BsGUjx94.js → unsafe-html-Ct0N2_UU.js} +2 -2
  311. package/dist/{unsafe-html-BsGUjx94.js.map → unsafe-html-Ct0N2_UU.js.map} +1 -1
  312. package/dist/when-DEJm_QN9.js +9 -0
  313. package/dist/when-DEJm_QN9.js.map +1 -0
  314. package/package.json +4 -2
  315. package/readme.md +4 -4
  316. package/scss/mixin.scss +9 -6
  317. package/src/__internal/aria/aria.ts +293 -0
  318. package/src/__internal/aria/delegate.ts +206 -0
  319. package/src/__internal/events/dispatch-hooks.ts +182 -0
  320. package/src/__internal/mixins/element-internals.ts +73 -0
  321. package/src/__internal/mixins/form-associated.ts +295 -0
  322. package/src/__internal/mixins/form-submitter.ts +133 -0
  323. package/src/__internal/mixins/hyperlink.ts +71 -0
  324. package/src/__internal/mixins/mixin.ts +58 -0
  325. package/src/{__utils → __internal/utils}/observe-slot-change.ts +2 -5
  326. package/src/accordion/accordion-item.ts +6 -2
  327. package/src/accordion/accordion.ts +4 -2
  328. package/src/accordion/demo/index.html +95 -90
  329. package/src/alert/alert.scss +82 -0
  330. package/src/{banner/banner.ts → alert/alert.ts} +22 -22
  331. package/src/alert/index.ts +1 -0
  332. package/src/app-bar/app-bar-colors.scss +17 -0
  333. package/src/app-bar/app-bar.scss +165 -0
  334. package/src/app-bar/app-bar.ts +155 -0
  335. package/src/app-bar/index.ts +1 -0
  336. package/src/avatar/avatar.ts +4 -0
  337. package/src/badge/badge.ts +2 -0
  338. package/src/bottom-sheet/bottom-sheet.ts +8 -2
  339. package/src/breadcrumb/breadcrumb/breadcrumb.ts +2 -0
  340. package/src/breadcrumb/breadcrumb-item/breadcrumb-item.ts +3 -0
  341. package/src/button/ButtonTypes.ts +17 -0
  342. package/src/button/base-button/base-button.ts +85 -0
  343. package/src/button/button/button-base.scss +307 -0
  344. package/src/button/button/button-colors.scss +27 -32
  345. package/src/button/button/button-layers.scss +126 -43
  346. package/src/button/button/button-shapes.scss +73 -0
  347. package/src/button/button/button.scss +12 -286
  348. package/src/button/button/button.ts +174 -194
  349. package/src/button/button-group/button-group.scss +43 -36
  350. package/src/button/button-group/button-group.ts +26 -137
  351. package/src/{fab → button/fab}/fab-colors.scss +0 -10
  352. package/src/button/fab/fab-sizes.scss +37 -0
  353. package/src/button/fab/fab.scss +172 -0
  354. package/src/{fab → button/fab}/fab.ts +69 -109
  355. package/src/button/icon-button/icon-button-sizes.scss +18 -3
  356. package/src/button/icon-button/icon-button.scss +5 -0
  357. package/src/button/icon-button/icon-button.ts +111 -141
  358. package/src/button/index.ts +7 -0
  359. package/src/calendar/calendar.ts +2 -2
  360. package/src/canvas/canvas.ts +2 -2
  361. package/src/card/card.scss +21 -8
  362. package/src/card/card.ts +20 -40
  363. package/src/chart-bar/chart-bar.ts +2 -2
  364. package/src/chart-bar/chart-stacked-bar.ts +2 -2
  365. package/src/checkbox/checkbox.ts +12 -4
  366. package/src/chip/chip/chip.scss +1 -1
  367. package/src/chip/chip/chip.ts +35 -55
  368. package/src/chip/demo/index.html +30 -26
  369. package/src/code-editor/code-editor.ts +68 -58
  370. package/src/code-editor/demo/index.html +32 -27
  371. package/src/code-highlighter/code-highlighter.ts +95 -40
  372. package/src/code-highlighter/demo/index.html +24 -21
  373. package/src/color-picker/color-picker.scss +217 -0
  374. package/src/color-picker/color-picker.ts +478 -0
  375. package/src/color-picker/index.ts +1 -0
  376. package/src/container/container.ts +8 -2
  377. package/src/date-picker/date-picker.ts +2 -3
  378. package/src/divider/divider.ts +5 -1
  379. package/src/dropdown-button/demo/index.html +106 -101
  380. package/src/dropdown-button/dropdown-button.ts +1 -1
  381. package/src/elevation/elevation.ts +2 -0
  382. package/src/empty-state/empty-state.ts +3 -0
  383. package/src/field/field.ts +52 -33
  384. package/src/focus-ring/focus-ring.ts +5 -7
  385. package/src/html-editor/html-editor.ts +28 -16
  386. package/src/icon/datasource.ts +1 -1
  387. package/src/icon/icon.ts +27 -15
  388. package/src/image/image.ts +18 -6
  389. package/src/index.ts +25 -6
  390. package/src/input/input.ts +2 -2
  391. package/src/item/item.scss +127 -161
  392. package/src/item/item.ts +69 -323
  393. package/src/link/link.ts +3 -1
  394. package/src/list/list-item.scss +48 -32
  395. package/src/list/list-item.ts +109 -79
  396. package/src/list/list.scss +1 -13
  397. package/src/list/list.ts +170 -5
  398. package/src/{peacock-loader.ts → loader.ts} +95 -79
  399. package/src/menu/menu/menu.scss +15 -26
  400. package/src/menu/menu/menu.ts +20 -9
  401. package/src/menu/menu-item/menu-item.scss +82 -20
  402. package/src/menu/menu-item/menu-item.ts +85 -46
  403. package/src/menu/sub-menu/sub-menu.scss +5 -1
  404. package/src/menu/sub-menu/sub-menu.ts +3 -0
  405. package/src/modal/modal.ts +2 -2
  406. package/src/navigation-rail/navigation-rail-item.scss +25 -8
  407. package/src/navigation-rail/navigation-rail-item.ts +21 -36
  408. package/src/navigation-rail/navigation-rail.scss +25 -21
  409. package/src/navigation-rail/navigation-rail.ts +4 -2
  410. package/src/number-field/number-field.ts +2 -2
  411. package/src/pagination/pagination.ts +2 -0
  412. package/src/popover/popover.ts +3 -3
  413. package/src/radio/radio.ts +13 -5
  414. package/src/ripple/ripple.ts +14 -1
  415. package/src/search/search.ts +3 -3
  416. package/src/segmented-button/segmented-button-group.ts +8 -4
  417. package/src/segmented-button/segmented-button.ts +4 -0
  418. package/src/select/option.ts +2 -0
  419. package/src/side-sheet/side-sheet.ts +3 -3
  420. package/src/sidebar-menu/sidebar-menu-item.scss +12 -6
  421. package/src/sidebar-menu/sidebar-menu-item.ts +3 -2
  422. package/src/skeleton/skeleton.ts +3 -0
  423. package/src/slider/slider.ts +4 -1
  424. package/src/snackbar/snackbar.ts +40 -25
  425. package/src/spinner/spinner.ts +2 -0
  426. package/src/svg/svg.ts +27 -9
  427. package/src/switch/switch.ts +1 -1
  428. package/src/table/table.ts +16 -3
  429. package/src/tabs/demo/index.html +79 -79
  430. package/src/tabs/tab-group.ts +2 -0
  431. package/src/tabs/tab-panel.ts +2 -0
  432. package/src/tabs/tab.scss +4 -4
  433. package/src/tabs/tab.ts +16 -39
  434. package/src/tabs/tabs.ts +2 -0
  435. package/src/textarea/textarea.ts +2 -2
  436. package/src/time-picker/time-picker.ts +2 -2
  437. package/src/toolbar/toolbar.ts +3 -3
  438. package/src/tooltip/tooltip.ts +14 -8
  439. package/src/url-field/url-field.ts +2 -3
  440. package/dist/ButtonConstants-D06bY4uy.js +0 -114
  441. package/dist/ButtonConstants-D06bY4uy.js.map +0 -1
  442. package/dist/NativeHyperlinkMixin-DrYXyfMQ.js.map +0 -1
  443. package/dist/banner.js +0 -186
  444. package/dist/banner.js.map +0 -1
  445. package/dist/button-colors-D7sJyPy8.js +0 -586
  446. package/dist/button-colors-D7sJyPy8.js.map +0 -1
  447. package/dist/icon-CueRR7wx.js +0 -260
  448. package/dist/icon-CueRR7wx.js.map +0 -1
  449. package/dist/icon-button-CAzYr_qr.js +0 -318
  450. package/dist/icon-button-CAzYr_qr.js.map +0 -1
  451. package/dist/navigation-rail-CM_svs5_.js +0 -14184
  452. package/dist/navigation-rail-CM_svs5_.js.map +0 -1
  453. package/dist/observe-slot-change-D8Xg-kSS.js.map +0 -1
  454. package/dist/peacock-loader.js.map +0 -1
  455. package/dist/popover-DUPmMVWS.js.map +0 -1
  456. package/dist/query-QBcUV-L_.js +0 -15
  457. package/dist/query-QBcUV-L_.js.map +0 -1
  458. package/dist/src/banner/banner.d.ts +0 -43
  459. package/dist/src/banner/index.d.ts +0 -1
  460. package/dist/src/button/GroupButtonInterface.d.ts +0 -4
  461. package/src/banner/banner.scss +0 -82
  462. package/src/banner/index.ts +0 -1
  463. package/src/button/GroupButtonInterface.ts +0 -4
  464. package/src/button/button/only-button.scss +0 -13
  465. package/src/fab/fab-sizes.scss +0 -37
  466. package/src/fab/fab.scss +0 -143
  467. /package/dist/src/{__controllers → __internal/controllers}/attachable-controller.d.ts +0 -0
  468. /package/dist/src/{__controllers → __internal/controllers}/floating-controller.d.ts +0 -0
  469. /package/dist/src/{__directive → __internal/directive}/spread.d.ts +0 -0
  470. /package/dist/src/{__mixins → __internal/mixins}/MixinConstructor.d.ts +0 -0
  471. /package/dist/src/{__mixins → __internal/mixins}/NativeButtonMixin.d.ts +0 -0
  472. /package/dist/src/{__mixins → __internal/mixins}/NativeHyperlinkMixin.d.ts +0 -0
  473. /package/dist/src/{__utils → __internal/utils}/cache-fetch.d.ts +0 -0
  474. /package/dist/src/{__utils → __internal/utils}/copy-to-clipboard.d.ts +0 -0
  475. /package/dist/src/{__utils → __internal/utils}/dispatch-event-utils.d.ts +0 -0
  476. /package/dist/src/{__utils → __internal/utils}/is-dark-mode.d.ts +0 -0
  477. /package/dist/src/{__utils → __internal/utils}/is-in-viewport.d.ts +0 -0
  478. /package/dist/src/{__utils → __internal/utils}/is-link.d.ts +0 -0
  479. /package/dist/src/{__utils → __internal/utils}/observe-theme-change.d.ts +0 -0
  480. /package/dist/src/{__utils → __internal/utils}/sanitize-svg.d.ts +0 -0
  481. /package/dist/src/{__utils → __internal/utils}/throttle.d.ts +0 -0
  482. /package/dist/src/{fab → button/fab}/index.d.ts +0 -0
  483. /package/dist/src/{peacock-loader.d.ts → loader.d.ts} +0 -0
  484. /package/dist/test/{banner.test.d.ts → alert.test.d.ts} +0 -0
  485. /package/src/{__controllers → __internal/controllers}/attachable-controller.ts +0 -0
  486. /package/src/{__controllers → __internal/controllers}/floating-controller.ts +0 -0
  487. /package/src/{__directive → __internal/directive}/spread.ts +0 -0
  488. /package/src/{__mixins → __internal/mixins}/MixinConstructor.ts +0 -0
  489. /package/src/{__mixins → __internal/mixins}/NativeButtonMixin.ts +0 -0
  490. /package/src/{__mixins → __internal/mixins}/NativeHyperlinkMixin.ts +0 -0
  491. /package/src/{__mixins → __internal/mixins}/README.md +0 -0
  492. /package/src/{__utils → __internal/utils}/cache-fetch.ts +0 -0
  493. /package/src/{__utils → __internal/utils}/copy-to-clipboard.ts +0 -0
  494. /package/src/{__utils → __internal/utils}/dispatch-event-utils.ts +0 -0
  495. /package/src/{__utils → __internal/utils}/is-dark-mode.ts +0 -0
  496. /package/src/{__utils → __internal/utils}/is-in-viewport.ts +0 -0
  497. /package/src/{__utils → __internal/utils}/is-link.ts +0 -0
  498. /package/src/{__utils → __internal/utils}/observe-theme-change.ts +0 -0
  499. /package/src/{__utils → __internal/utils}/sanitize-svg.ts +0 -0
  500. /package/src/{__utils → __internal/utils}/throttle.ts +0 -0
  501. /package/src/{fab → button/fab}/index.ts +0 -0
@@ -3,9 +3,11 @@ import { property, query } from 'lit/decorators.js';
3
3
  import { ifDefined } from 'lit/directives/if-defined.js';
4
4
  import styles from './menu-item.scss';
5
5
  import colorStyles from './menu-item-colors.scss';
6
- import NativeButtonMixin from '@/__mixins/NativeButtonMixin.js';
7
- import NativeHyperlinkMixin from '@/__mixins/NativeHyperlinkMixin.js';
8
- import { Item } from '@/item/item.js';
6
+ import NativeButtonMixin from '@/__internal/mixins/NativeButtonMixin.js';
7
+ import NativeHyperlinkMixin from '@/__internal/mixins/NativeHyperlinkMixin.js';
8
+ import { isLink } from '@/__internal/utils/is-link.js';
9
+ import IndividualComponent from '@/IndividualComponent.js';
10
+ import { classMap } from 'lit/directives/class-map.js';
9
11
 
10
12
  /**
11
13
  * @label Menu Item
@@ -19,30 +21,47 @@ import { Item } from '@/item/item.js';
19
21
  * <wc-menu-item>Menu Item</wc-menu-item>
20
22
  * ```
21
23
  */
24
+ @IndividualComponent
22
25
  export class MenuItem extends NativeButtonMixin(
23
26
  NativeHyperlinkMixin(LitElement),
24
27
  ) {
28
+ // ── Static ───────────────────────────────────────────────────────────────
29
+
30
+ static styles = [styles, colorStyles];
31
+
32
+ // ── Properties ───────────────────────────────────────────────────────────
33
+
34
+ /** The value associated with this menu item, used to identify it on selection. */
25
35
  @property({ type: String }) value = '';
26
36
 
37
+ /** Whether this menu item is currently selected/highlighted. */
27
38
  @property({ type: Boolean, reflect: true }) selected = false;
28
39
 
40
+ /** When true, the menu stays open after this item is activated. */
29
41
  @property({ type: Boolean, attribute: 'keep-open' }) keepOpen = false;
30
42
 
43
+ /** When true, indicates this item has an associated submenu. */
31
44
  @property({ type: Boolean, attribute: 'has-submenu' }) hasSubmenu = false;
32
45
 
46
+ /** Whether the associated submenu is currently open. */
33
47
  @property({ type: Boolean, attribute: 'submenu-open' }) submenuOpen = false;
34
48
 
49
+ /** Visual variant of the menu item. */
35
50
  @property({ type: String, reflect: true }) variant: 'standard' | 'vibrant' =
36
51
  'standard';
37
52
 
38
- static styles = [styles, colorStyles];
53
+ // ── Queries ───────────────────────────────────────────────────────────────
54
+
55
+ @query('#menu-item') readonly itemElement!: HTMLElement | null;
39
56
 
40
- @query('wc-item') readonly itemElement!: Item | null;
57
+ // ── Private fields ────────────────────────────────────────────────────────
41
58
 
59
+ /** MutationObserver that triggers re-render when slotted content changes. */
42
60
  private readonly _contentObserver = new MutationObserver(() => {
43
61
  this.requestUpdate();
44
62
  });
45
63
 
64
+ /** Roving tabindex value managed by the parent Menu. */
46
65
  private _rovingTabIndex = -1;
47
66
 
48
67
  connectedCallback() {
@@ -101,22 +120,51 @@ export class MenuItem extends NativeButtonMixin(
101
120
  }
102
121
 
103
122
  render() {
123
+ const isElementLink = isLink(this);
104
124
  const controls = this.getAttribute('aria-controls');
105
125
 
126
+ const cssClasses = {
127
+ 'menu-item': true,
128
+ 'native-button': !isElementLink,
129
+ 'native-link': isElementLink,
130
+ };
131
+
132
+ if (isElementLink) {
133
+ return html`
134
+ <a
135
+ id="menu-item"
136
+ class=${classMap(cssClasses)}
137
+ role="menuitem"
138
+ href=${ifDefined(this.href)}
139
+ target=${this.target}
140
+ ?rel=${this.rel}
141
+ ?download=${this.download}
142
+ tabindex=${this.disabled ? '-1' : String(this.tabIndex)}
143
+ ?selected=${this.selected}
144
+ aria-disabled=${this.disabled || this.softDisabled ? 'true' : nothing}
145
+ aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}
146
+ aria-controls=${ifDefined(
147
+ this.hasSubmenu && controls ? controls : undefined,
148
+ )}
149
+ aria-expanded=${ifDefined(
150
+ this.hasSubmenu ? String(this.submenuOpen) : undefined,
151
+ )}
152
+ >
153
+ ${this.renderContent()}
154
+ </a>
155
+ `;
156
+ }
157
+
106
158
  return html`
107
- <wc-item
108
- id="item"
109
- class="menu-item"
159
+ <button
160
+ id="menu-item"
161
+ class=${classMap(cssClasses)}
110
162
  role="menuitem"
163
+ type=${this.htmlType}
164
+ ?disabled=${this.disabled}
111
165
  tabindex=${String(this.tabIndex)}
112
166
  ?selected=${this.selected}
113
- ?disabled=${this.disabled}
114
- .softDisabled=${this.softDisabled}
115
- .htmlType=${this.htmlType}
116
- .href=${this.href}
117
- .target=${this.target}
118
- .rel=${this.rel}
119
- .download=${this.download}
167
+ aria-disabled=${this.softDisabled ? 'true' : nothing}
120
168
  aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}
121
169
  aria-controls=${ifDefined(
122
170
  this.hasSubmenu && controls ? controls : undefined,
@@ -126,42 +174,33 @@ export class MenuItem extends NativeButtonMixin(
126
174
  )}
127
175
  >
128
176
  ${this.renderContent()}
129
- </wc-item>
177
+ </button>
130
178
  `;
131
179
  }
132
180
 
133
181
  renderContent() {
134
- const hasStart = this._hasNamedSlot('start');
135
- const hasOverline = this._hasNamedSlot('overline');
136
- const hasHeadline = this._hasNamedSlot('headline');
137
- const hasDefault = this._hasDefaultSlot();
138
- const hasSupportingText = this._hasNamedSlot('supporting-text');
139
- const hasTrailingSupportingText = this._hasNamedSlot(
140
- 'trailing-supporting-text',
141
- );
142
- const hasEnd = this._hasNamedSlot('end');
143
-
144
182
  return html`
145
- ${hasStart ? html`<slot name="start" slot="start"></slot>` : nothing}
146
- ${hasOverline
147
- ? html`<slot name="overline" slot="overline"></slot>`
148
- : nothing}
149
- ${hasHeadline
150
- ? html`<slot name="headline" slot="headline"></slot>`
151
- : nothing}
152
- ${hasDefault ? html`<slot></slot>` : nothing}
153
- ${hasSupportingText
154
- ? html`<slot name="supporting-text" slot="supporting-text"></slot>`
155
- : nothing}
156
- ${hasTrailingSupportingText
157
- ? html`
158
- <slot
159
- name="trailing-supporting-text"
160
- slot="trailing-supporting-text"
161
- ></slot>
162
- `
163
- : nothing}
164
- ${hasEnd ? html`<slot name="end" slot="end"></slot>` : nothing}
183
+ <div class="menu-item-background"></div>
184
+ <wc-item class="menu-item-content">
185
+ <wc-focus-ring
186
+ class="focus-ring"
187
+ for="menu-item"
188
+ slot="container"
189
+ ></wc-focus-ring>
190
+ <div class="background" slot="container"></div>
191
+ <wc-ripple class="ripple" for="menu-item" slot="container"></wc-ripple>
192
+
193
+ <slot name="start" slot="start"></slot>
194
+ <slot name="overline" slot="overline"></slot>
195
+ <slot name="headline" slot="headline"></slot>
196
+ <slot></slot>
197
+ <slot name="supporting-text" slot="supporting-text"></slot>
198
+ <slot
199
+ name="trailing-supporting-text"
200
+ slot="trailing-supporting-text"
201
+ ></slot>
202
+ <slot name="end" slot="end"></slot>
203
+ </wc-item>
165
204
  `;
166
205
  }
167
206
  }
@@ -1,7 +1,11 @@
1
- @use "../../../scss/mixin";
1
+ @use '../../../scss/mixin';
2
2
 
3
3
  @include mixin.base-styles;
4
4
 
5
5
  :host {
6
6
  display: contents;
7
7
  }
8
+
9
+ slot::slotted(wc-menu) {
10
+ display: contents;
11
+ }
@@ -3,6 +3,7 @@ import { property, queryAssignedElements } from 'lit/decorators.js';
3
3
  import styles from './sub-menu.scss';
4
4
  import { MenuItem } from '../menu-item/menu-item.js';
5
5
  import { Menu } from '../menu/menu.js';
6
+ import IndividualComponent from '@/IndividualComponent.js';
6
7
 
7
8
  let subMenuIdCounter = 0;
8
9
 
@@ -12,6 +13,7 @@ let subMenuIdCounter = 0;
12
13
  * @rawTag sub-menu
13
14
  * @summary Connects a menu item to a nested menu.
14
15
  */
16
+ @IndividualComponent
15
17
  export class SubMenu extends LitElement {
16
18
  static styles = [styles];
17
19
 
@@ -38,6 +40,7 @@ export class SubMenu extends LitElement {
38
40
  private _closeTimeout?: number;
39
41
 
40
42
  private _resolveAnchorElement(item: MenuItem) {
43
+ //@ts-ignore
41
44
  return item.itemElement?.itemElement ?? item.itemElement ?? item;
42
45
  }
43
46
 
@@ -1,4 +1,4 @@
1
- import { LitElement, html, nothing } from 'lit';
1
+ import { LitElement, html, nothing } from 'lit';
2
2
  import { property, state } from 'lit/decorators.js';
3
3
  import { classMap } from 'lit/directives/class-map.js';
4
4
  import IndividualComponent from '../IndividualComponent.js';
@@ -10,7 +10,7 @@ type ModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'fullscreen';
10
10
  * @label Modal
11
11
  * @tag wc-modal
12
12
  * @rawTag modal
13
- * @summary A Material Design 3 dialog/modal for displaying content in a layer above the page, with optional header, body, and footer slots.
13
+ * @summary A dialog/modal for displaying content in a layer above the page, with optional header, body, and footer slots.
14
14
  *
15
15
  * @cssprop --modal-container-color - Background color of the dialog container.
16
16
  * @cssprop --modal-scrim-color - Color of the scrim backdrop.
@@ -32,11 +32,26 @@
32
32
  box-sizing: border-box;
33
33
 
34
34
  /* Color tokens */
35
- --_inactive-icon-color: var(--nav-rail-inactive-icon-color, var(--color-on-surface-variant));
36
- --_active-icon-color: var(--nav-rail-active-icon-color, var(--color-on-secondary-container));
37
- --_inactive-label-color: var(--nav-rail-inactive-label-color, var(--color-on-surface-variant));
38
- --_active-label-color: var(--nav-rail-active-label-color, var(--color-on-surface));
39
- --_indicator-color: var(--nav-rail-indicator-color, var(--color-secondary-container));
35
+ --_inactive-icon-color: var(
36
+ --nav-rail-inactive-icon-color,
37
+ var(--color-on-surface-variant)
38
+ );
39
+ --_active-icon-color: var(
40
+ --nav-rail-active-icon-color,
41
+ var(--color-on-secondary-container)
42
+ );
43
+ --_inactive-label-color: var(
44
+ --nav-rail-inactive-label-color,
45
+ var(--color-on-surface-variant)
46
+ );
47
+ --_active-label-color: var(
48
+ --nav-rail-active-label-color,
49
+ var(--color-on-surface)
50
+ );
51
+ --_indicator-color: var(
52
+ --nav-rail-indicator-color,
53
+ var(--color-secondary-container)
54
+ );
40
55
  --_indicator-shape: var(--nav-rail-indicator-shape, var(--shape-corner-full));
41
56
  --_indicator-width: var(--nav-rail-indicator-width, 3.5rem); /* 56dp */
42
57
  --_indicator-height: var(--nav-rail-indicator-height, 2rem); /* 32dp */
@@ -62,7 +77,8 @@
62
77
  border-radius: var(--_indicator-shape);
63
78
  overflow: hidden;
64
79
  flex-shrink: 0;
65
- transition: background-color var(--duration-short4, 200ms) var(--easing-standard, ease);
80
+ transition: background-color var(--duration-short4, 200ms)
81
+ var(--easing-standard, ease);
66
82
 
67
83
  .ripple {
68
84
  inset: 0;
@@ -95,7 +111,8 @@
95
111
  text-align: center;
96
112
  pointer-events: none;
97
113
  z-index: 1;
98
- transition: color var(--duration-short4, 200ms) var(--easing-standard, ease),
114
+ transition:
115
+ color var(--duration-short4, 200ms) var(--easing-standard, ease),
99
116
  font-weight var(--duration-short4, 200ms) var(--easing-standard, ease);
100
117
  }
101
118
 
@@ -140,7 +157,7 @@
140
157
 
141
158
  .label {
142
159
  color: var(--_active-label-color);
143
- font-weight: var(--typography-label-medium-font-weight-bold, 700);
160
+ font-weight: var(--font-weight-bold) !important;
144
161
  }
145
162
  }
146
163
 
@@ -4,11 +4,12 @@ import { classMap } from 'lit/directives/class-map.js';
4
4
  import {
5
5
  dispatchActivationClick,
6
6
  isActivationClick,
7
- } from '@/__utils/dispatch-event-utils.js';
8
- import { observerSlotChangesWithCallback } from '@/__utils/observe-slot-change.js';
9
- import { throttle } from '@/__utils/throttle.js';
10
- import { isLink } from '@/__utils/is-link.js';
7
+ } from '@/__internal/utils/dispatch-event-utils.js';
8
+ import { observerSlotChangesWithCallback } from '@/__internal/utils/observe-slot-change.js';
9
+ import { throttle } from '@/__internal/utils/throttle.js';
10
+ import { isLink } from '@/__internal/utils/is-link.js';
11
11
  import styles from './navigation-rail-item.scss';
12
+ import IndividualComponent from '@/IndividualComponent.js';
12
13
 
13
14
  /**
14
15
  * @label Navigation Rail Item
@@ -28,6 +29,7 @@ import styles from './navigation-rail-item.scss';
28
29
  * ```
29
30
  * @tags navigation
30
31
  */
32
+ @IndividualComponent
31
33
  export class NavigationRailItem extends LitElement {
32
34
  #id = crypto.randomUUID();
33
35
 
@@ -54,17 +56,22 @@ export class NavigationRailItem extends LitElement {
54
56
  /** Reason the item is disabled (shown to screen readers). */
55
57
  @property({ attribute: 'disabled-reason' }) disabledReason: string = '';
56
58
 
57
- /** Sets the delay for throttle in milliseconds. Defaults to 200 milliseconds. */
58
- @property({ type: Number }) throttleDelay = 200;
59
-
60
- @state() private _isPressed = false;
59
+ /** Sets the delay for throttle in milliseconds. When null (default), no throttle is applied. */
60
+ @property({ type: Number }) throttleDelay: number | null = null;
61
61
 
62
+ /** True when the default slot contains label content. */
62
63
  @state() private _hasLabel = false;
63
64
 
65
+ /** True when the `active-icon` slot contains content. */
64
66
  @state() private _hasActiveIcon = false;
65
67
 
66
68
  @query('.item-element') readonly itemElement!: HTMLElement | null;
67
69
 
70
+ constructor() {
71
+ super();
72
+ this.addEventListener('click', this.__dispatchClickWithThrottle);
73
+ }
74
+
68
75
  override focus() {
69
76
  this.itemElement?.focus();
70
77
  }
@@ -74,10 +81,12 @@ export class NavigationRailItem extends LitElement {
74
81
  }
75
82
 
76
83
  override firstUpdated() {
77
- this.__dispatchClickWithThrottle = throttle(
78
- this.__dispatchClick,
79
- this.throttleDelay,
80
- );
84
+ if (typeof this.throttleDelay === 'number') {
85
+ this.__dispatchClickWithThrottle = throttle(
86
+ this.__dispatchClick,
87
+ this.throttleDelay,
88
+ );
89
+ }
81
90
 
82
91
  observerSlotChangesWithCallback(
83
92
  this.renderRoot.querySelector('slot.label'),
@@ -116,21 +125,6 @@ export class NavigationRailItem extends LitElement {
116
125
  dispatchActivationClick(this.itemElement);
117
126
  };
118
127
 
119
- __handlePress = (event: KeyboardEvent | MouseEvent) => {
120
- if (this.disabled) return;
121
- if (
122
- event instanceof KeyboardEvent &&
123
- event.type === 'keydown' &&
124
- (event.key === 'Enter' || event.key === ' ')
125
- ) {
126
- this._isPressed = true;
127
- } else if (event.type === 'mousedown') {
128
- this._isPressed = true;
129
- } else {
130
- this._isPressed = false;
131
- }
132
- };
133
-
134
128
  __getDisabledReasonID() {
135
129
  return this.disabled && this.disabledReason
136
130
  ? `disabled-reason-${this.#id}`
@@ -176,7 +170,6 @@ export class NavigationRailItem extends LitElement {
176
170
  'item-element': true,
177
171
  active: this.active,
178
172
  disabled: this.disabled,
179
- pressed: this._isPressed,
180
173
  'has-label': this._hasLabel,
181
174
  'has-active-icon': this._hasActiveIcon,
182
175
  };
@@ -189,10 +182,6 @@ export class NavigationRailItem extends LitElement {
189
182
  aria-disabled=${`${this.disabled}`}
190
183
  aria-current=${this.active ? 'page' : nothing}
191
184
  ?aria-describedby=${this.__getDisabledReasonID()}
192
- @click=${this.__dispatchClickWithThrottle}
193
- @mousedown=${this.__handlePress}
194
- @keydown=${this.__handlePress}
195
- @keyup=${this.__handlePress}
196
185
  >
197
186
  ${this.__renderItemContent()}
198
187
  </button>`;
@@ -206,10 +195,6 @@ export class NavigationRailItem extends LitElement {
206
195
  aria-current=${this.active ? 'page' : nothing}
207
196
  aria-disabled=${`${this.disabled}`}
208
197
  ?aria-describedby=${this.__getDisabledReasonID()}
209
- @click=${this.__dispatchClickWithThrottle}
210
- @mousedown=${this.__handlePress}
211
- @keydown=${this.__handlePress}
212
- @keyup=${this.__handlePress}
213
198
  >
214
199
  ${this.__renderItemContent()}
215
200
  </a>`;
@@ -5,19 +5,25 @@
5
5
  :host {
6
6
  display: block;
7
7
  height: 100%;
8
- width: var(--nav-rail-width, 5rem); /* 80dp */
9
- overflow: hidden;
8
+ width: var(--nav-rail-width, 6rem); /* 96dp */
9
+ overflow-y: auto;
10
+ overflow-x: hidden;
11
+ --nav-rail-padding-block: 1.5rem;
12
+
13
+ --nav-rail-container-color: var(--container-surface);
14
+ --nav-rail-label-text-color: var(--color-on-surface);
10
15
  }
11
16
 
12
17
  .rail {
13
18
  display: flex;
14
19
  flex-direction: column;
15
20
  align-items: center;
16
- height: 100%;
21
+ height: calc(100% - var(--nav-rail-padding-block) * 2);
17
22
  width: 100%;
18
23
  border-radius: inherit;
19
- background-color: var(--nav-rail-container-color, var(--color-surface));
20
- padding-block: var(--nav-rail-padding-block, 0.75rem); /* 12dp */
24
+ background-color: var(--nav-rail-container-color);
25
+ color: var(--nav-rail-label-text-color);
26
+ margin-block: var(--nav-rail-padding-block); /* 24dp */
21
27
  box-sizing: border-box;
22
28
 
23
29
  .header {
@@ -33,20 +39,6 @@
33
39
  }
34
40
  }
35
41
 
36
- .footer {
37
- display: flex;
38
- flex-direction: column;
39
- align-items: center;
40
- justify-content: flex-end;
41
- width: 100%;
42
- flex-shrink: 0;
43
- margin-top: auto;
44
-
45
- &:empty {
46
- display: none;
47
- }
48
- }
49
-
50
42
  wc-divider {
51
43
  width: calc(100% - 1rem);
52
44
  flex-shrink: 0;
@@ -58,11 +50,23 @@
58
50
  align-items: center;
59
51
  width: 100%;
60
52
  gap: 0.75rem; /* 12dp between items */
61
- flex: 1 1 auto;
62
- min-height: 0;
53
+ flex: 1;
63
54
 
64
55
  ::slotted(wc-navigation-rail-item) {
65
56
  width: 100%;
66
57
  }
67
58
  }
59
+
60
+ .footer {
61
+ display: flex;
62
+ flex-direction: column;
63
+ align-items: center;
64
+ width: 100%;
65
+ margin-top: auto;
66
+ background-color: var(--nav-rail-container-color);
67
+
68
+ &:empty {
69
+ display: none;
70
+ }
71
+ }
68
72
  }
@@ -1,15 +1,16 @@
1
- import { html, LitElement, PropertyValues } from 'lit';
1
+ import { html, LitElement, PropertyValues } from 'lit';
2
2
  import { property } from 'lit/decorators.js';
3
3
  import { classMap } from 'lit/directives/class-map.js';
4
4
  import styles from './navigation-rail.scss';
5
5
  import { NavigationRailItem } from './navigation-rail-item.js';
6
+ import IndividualComponent from '@/IndividualComponent.js';
6
7
 
7
8
  /**
8
9
  * @label Navigation Rail
9
10
  * @tag wc-navigation-rail
10
11
  * @rawTag navigation-rail
11
12
  *
12
- * @summary A vertical side navigation for medium-sized screens, following Material Design 3 specs.
13
+ * @summary A vertical side navigation for medium-sized screens,.
13
14
  * @overview
14
15
  * <p>Navigation rail provides access to primary destinations in an app using icons—with or without labels—on a vertical rail.</p>
15
16
  * <p>Use navigation rail on medium-sized screens (tablets) with 3–7 destinations.</p>
@@ -43,6 +44,7 @@ import { NavigationRailItem } from './navigation-rail-item.js';
43
44
  * ```
44
45
  * @tags navigation
45
46
  */
47
+ @IndividualComponent
46
48
  export class NavigationRail extends LitElement {
47
49
  static styles = [styles];
48
50
 
@@ -2,8 +2,8 @@ import { html, nothing } from 'lit';
2
2
  import { property, query, state } from 'lit/decorators.js';
3
3
  import { classMap } from 'lit/directives/class-map.js';
4
4
 
5
- import { redispatchEvent } from '@/__utils/dispatch-event-utils.js';
6
- import { spread } from '@/__directive/spread.js';
5
+ import { redispatchEvent } from '@/__internal/utils/dispatch-event-utils.js';
6
+ import { spread } from '@/__internal/directive/spread.js';
7
7
 
8
8
  import BaseInput from '../input/BaseInput.js';
9
9
  import styles from './number-field.scss';
@@ -2,6 +2,7 @@ import { html, LitElement } from 'lit';
2
2
  import type { PropertyValues } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
4
  import styles from './pagination.scss';
5
+ import IndividualComponent from '@/IndividualComponent.js';
5
6
 
6
7
  const DEFAULT_PAGE_SIZES = [10, 25, 50, 100];
7
8
 
@@ -21,6 +22,7 @@ const DEFAULT_PAGE_SIZES = [10, 25, 50, 100];
21
22
  * ```
22
23
  * @tags navigation, data
23
24
  */
25
+ @IndividualComponent
24
26
  export class Pagination extends LitElement {
25
27
  static styles = [styles];
26
28
 
@@ -2,7 +2,7 @@ import { html, LitElement } from 'lit';
2
2
  import { property } from 'lit/decorators.js';
3
3
  import type { Placement } from '@floating-ui/dom';
4
4
  import IndividualComponent from '@/IndividualComponent.js';
5
- import { FloatingController } from '../__controllers/floating-controller.js';
5
+ import { FloatingController } from '../__internal/controllers/floating-controller.js';
6
6
  import styles from './popover.scss';
7
7
  import type { PopoverContent } from './popover-content.js';
8
8
 
@@ -73,7 +73,7 @@ export class Popover extends LitElement {
73
73
  // Resolve the trigger element: first light-DOM child that is NOT wc-popover-content
74
74
  this._triggerEl =
75
75
  (Array.from(this.children).find(
76
- (c) => c.tagName.toLowerCase() !== 'wc-popover-content',
76
+ c => c.tagName.toLowerCase() !== 'wc-popover-content',
77
77
  ) as HTMLElement) ?? null;
78
78
 
79
79
  if (!this._triggerEl || !this._contentEl) return;
@@ -89,7 +89,7 @@ export class Popover extends LitElement {
89
89
  offset: this.offset,
90
90
  trigger: triggerMode,
91
91
  closeOnClickOutside: true,
92
- onOpenChange: (isOpen) => {
92
+ onOpenChange: isOpen => {
93
93
  this.open = isOpen;
94
94
  if (this._contentEl) {
95
95
  this._contentEl.open = isOpen;
@@ -1,10 +1,11 @@
1
- import { html, LitElement } from 'lit';
1
+ import { html, LitElement } from 'lit';
2
2
  import { property, query, state } from 'lit/decorators.js';
3
3
  import { classMap } from 'lit/directives/class-map.js';
4
4
 
5
- import { spread } from '@/__directive/spread.js';
5
+ import { spread } from '@/__internal/directive/spread.js';
6
6
 
7
7
  import styles from './radio.scss';
8
+ import IndividualComponent from '@/IndividualComponent.js';
8
9
 
9
10
  /**
10
11
  * @label Radio
@@ -12,7 +13,7 @@ import styles from './radio.scss';
12
13
  * @rawTag radio
13
14
  * @summary Allows selection of a single option from a set.
14
15
  * @overview
15
- * <p>Radio buttons follow the Material Design 3 specifications with clear focus, hover, and selected states.</p>
16
+ * <p>Radio buttons follow the specifications with clear focus, hover, and selected states.</p>
16
17
  *
17
18
  * @cssprop --radio-size: Size of the outer radio circle.
18
19
  * @cssprop --radio-dot-size: Size of the inner dot when selected.
@@ -33,6 +34,7 @@ import styles from './radio.scss';
33
34
  */
34
35
  type RadioDirection = 1 | -1;
35
36
 
37
+ @IndividualComponent
36
38
  export class Radio extends LitElement {
37
39
  private static readonly DIRECTION_NEXT: RadioDirection = 1;
38
40
  private static readonly DIRECTION_PREVIOUS: RadioDirection = -1;
@@ -87,15 +89,19 @@ export class Radio extends LitElement {
87
89
  @property({ type: Object })
88
90
  configAria: Record<string, string> = {};
89
91
 
92
+ /** True while the radio container has keyboard focus. */
90
93
  @state()
91
94
  private hasFocus = false;
92
95
 
96
+ /** True while the user is actively pressing the radio (mouse/keyboard). */
93
97
  @state()
94
98
  private isActive = false;
95
99
 
100
+ /** True when slotted label content or `label` property is present. */
96
101
  @state()
97
102
  private slotHasContent = false;
98
103
 
104
+ /** True for the one radio in the group that should receive tab focus (roving tabindex). */
99
105
  @state()
100
106
  private isGroupFocusTarget = false;
101
107
 
@@ -105,6 +111,9 @@ export class Radio extends LitElement {
105
111
  @query('.input-native')
106
112
  private nativeElement?: HTMLInputElement;
107
113
 
114
+ // ── Private fields ────────────────────────────────────────────────────────
115
+
116
+ /** Captured `tabindex` attribute value forwarded to the inner container. */
108
117
  private tabindex?: number;
109
118
 
110
119
  connectedCallback() {
@@ -269,8 +278,7 @@ export class Radio extends LitElement {
269
278
  return;
270
279
  }
271
280
 
272
- const target =
273
- enabledGroup.find(radio => radio.checked) || enabledGroup[0];
281
+ const target = enabledGroup.find(radio => radio.checked) || enabledGroup[0];
274
282
 
275
283
  group.forEach(radio => {
276
284
  radio.isGroupFocusTarget = radio === target;