@redvars/peacock 3.8.1 → 3.8.2

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 (474) 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/badge.js +91 -0
  26. package/dist/badge.js.map +1 -0
  27. package/dist/base-Cl6v8-BZ.js +9 -0
  28. package/dist/base-Cl6v8-BZ.js.map +1 -0
  29. package/dist/bottom-sheet.js +14 -5
  30. package/dist/bottom-sheet.js.map +1 -1
  31. package/dist/breadcrumb-item.js +163 -0
  32. package/dist/breadcrumb-item.js.map +1 -0
  33. package/dist/breadcrumb.js +95 -0
  34. package/dist/breadcrumb.js.map +1 -0
  35. package/dist/button-group.js +87 -137
  36. package/dist/button-group.js.map +1 -1
  37. package/dist/button.js +863 -133
  38. package/dist/button.js.map +1 -1
  39. package/dist/calendar-column-view.js +8 -4
  40. package/dist/calendar-column-view.js.map +1 -1
  41. package/dist/calendar-month-view.js +8 -4
  42. package/dist/calendar-month-view.js.map +1 -1
  43. package/dist/calendar.js +8 -4
  44. package/dist/calendar.js.map +1 -1
  45. package/dist/canvas.js +8 -4
  46. package/dist/canvas.js.map +1 -1
  47. package/dist/card-content.js +1 -1
  48. package/dist/card.js +23 -45
  49. package/dist/card.js.map +1 -1
  50. package/dist/cb-compound-expression.js +6 -2
  51. package/dist/cb-compound-expression.js.map +1 -1
  52. package/dist/cb-divider.js +7 -3
  53. package/dist/cb-divider.js.map +1 -1
  54. package/dist/cb-expression.js +6 -2
  55. package/dist/cb-expression.js.map +1 -1
  56. package/dist/cb-predicate.js +7 -3
  57. package/dist/cb-predicate.js.map +1 -1
  58. package/dist/{chart-bar-cn6rrna-.js → chart-bar-CYoGNXnK.js} +6 -2
  59. package/dist/{chart-bar-cn6rrna-.js.map → chart-bar-CYoGNXnK.js.map} +1 -1
  60. package/dist/chart-bar.js +7 -6
  61. package/dist/chart-bar.js.map +1 -1
  62. package/dist/chart-doughnut.js +8 -3
  63. package/dist/chart-doughnut.js.map +1 -1
  64. package/dist/chart-pie.js +8 -3
  65. package/dist/chart-pie.js.map +1 -1
  66. package/dist/chart-stacked-bar.js +7 -6
  67. package/dist/chart-stacked-bar.js.map +1 -1
  68. package/dist/checkbox.js +526 -0
  69. package/dist/checkbox.js.map +1 -0
  70. package/dist/chip.js +459 -0
  71. package/dist/chip.js.map +1 -0
  72. package/dist/{class-map-YU7g0o3B.js → class-map-DG7CA1et.js} +2 -2
  73. package/dist/{class-map-YU7g0o3B.js.map → class-map-DG7CA1et.js.map} +1 -1
  74. package/dist/clock.js +6 -2
  75. package/dist/clock.js.map +1 -1
  76. package/dist/code-editor.js +45 -30
  77. package/dist/code-editor.js.map +1 -1
  78. package/dist/code-highlighter.js +9 -5
  79. package/dist/code-highlighter.js.map +1 -1
  80. package/dist/condition-builder.js +5 -1
  81. package/dist/condition-builder.js.map +1 -1
  82. package/dist/container.js +141 -0
  83. package/dist/container.js.map +1 -0
  84. package/dist/custom-elements-jsdocs.json +721 -769
  85. package/dist/custom-elements.json +3213 -1979
  86. package/dist/datasource-B2eRh6Or.js +108 -0
  87. package/dist/datasource-B2eRh6Or.js.map +1 -0
  88. package/dist/dispatch-event-utils-CuEqjlPT.js.map +1 -1
  89. package/dist/divider.js +135 -0
  90. package/dist/divider.js.map +1 -0
  91. package/dist/dropdown-button.js +11 -6
  92. package/dist/dropdown-button.js.map +1 -1
  93. package/dist/element-internals-2CMts_0M.js +290 -0
  94. package/dist/element-internals-2CMts_0M.js.map +1 -0
  95. package/dist/elevation.js +94 -0
  96. package/dist/elevation.js.map +1 -0
  97. package/dist/empty-state.js +194 -0
  98. package/dist/empty-state.js.map +1 -0
  99. package/dist/{event-manager-D-QCmUgR.js → event-manager-DTyX2uYD.js} +2 -2
  100. package/dist/{event-manager-D-QCmUgR.js.map → event-manager-DTyX2uYD.js.map} +1 -1
  101. package/dist/fab.js +138 -145
  102. package/dist/fab.js.map +1 -1
  103. package/dist/field.js +461 -0
  104. package/dist/field.js.map +1 -0
  105. package/dist/{popover-DUPmMVWS.js → floating-controller-CnUZnOhK.js} +2 -171
  106. package/dist/floating-controller-CnUZnOhK.js.map +1 -0
  107. package/dist/{flow-designer-node-BWrPuxAR.js → flow-designer-node-DsVwQTac.js} +7 -3
  108. package/dist/{flow-designer-node-BWrPuxAR.js.map → flow-designer-node-DsVwQTac.js.map} +1 -1
  109. package/dist/flow-designer-node.js +3 -3
  110. package/dist/flow-designer.js +19 -12
  111. package/dist/flow-designer.js.map +1 -1
  112. package/dist/focus-ring.js +126 -0
  113. package/dist/focus-ring.js.map +1 -0
  114. package/dist/form-associated-BXADnjOB.js +388 -0
  115. package/dist/form-associated-BXADnjOB.js.map +1 -0
  116. package/dist/html-editor.js +21 -9
  117. package/dist/html-editor.js.map +1 -1
  118. package/dist/hyperlink-DLvb6MXE.js +98 -0
  119. package/dist/hyperlink-DLvb6MXE.js.map +1 -0
  120. package/dist/icon-button.js +1064 -0
  121. package/dist/icon-button.js.map +1 -0
  122. package/dist/icon.js +170 -0
  123. package/dist/icon.js.map +1 -0
  124. package/dist/if-defined-BXZpRQ4P.js +10 -0
  125. package/dist/if-defined-BXZpRQ4P.js.map +1 -0
  126. package/dist/image.js +201 -0
  127. package/dist/image.js.map +1 -0
  128. package/dist/index.js +73 -20
  129. package/dist/index.js.map +1 -1
  130. package/dist/is-dark-mode-DOcaw4Yq.js.map +1 -1
  131. package/dist/is-link-Dk2OV3PM.js +6 -0
  132. package/dist/is-link-Dk2OV3PM.js.map +1 -0
  133. package/dist/item.js +212 -0
  134. package/dist/item.js.map +1 -0
  135. package/dist/link.js +75 -0
  136. package/dist/link.js.map +1 -0
  137. package/dist/list-D6JLh1uh.js +352 -0
  138. package/dist/list-D6JLh1uh.js.map +1 -0
  139. package/dist/list.js +14 -0
  140. package/dist/list.js.map +1 -0
  141. package/dist/{peacock-loader.js → loader.js} +83 -22
  142. package/dist/loader.js.map +1 -0
  143. package/dist/menu-item.js +318 -0
  144. package/dist/menu-item.js.map +1 -0
  145. package/dist/menu.js +534 -0
  146. package/dist/menu.js.map +1 -0
  147. package/dist/modal.js +9 -5
  148. package/dist/modal.js.map +1 -1
  149. package/dist/navigation-rail-item.js +385 -0
  150. package/dist/navigation-rail-item.js.map +1 -0
  151. package/dist/navigation-rail.js +217 -0
  152. package/dist/navigation-rail.js.map +1 -0
  153. package/dist/notification-manager.js +8 -4
  154. package/dist/notification-manager.js.map +1 -1
  155. package/dist/notification.js +8 -4
  156. package/dist/notification.js.map +1 -1
  157. package/dist/number-counter.js +7 -3
  158. package/dist/number-counter.js.map +1 -1
  159. package/dist/{observe-slot-change-D8Xg-kSS.js → observe-slot-change-DPxaZrZF.js} +3 -4
  160. package/dist/observe-slot-change-DPxaZrZF.js.map +1 -0
  161. package/dist/option.js +121 -0
  162. package/dist/option.js.map +1 -0
  163. package/dist/pagination.js +255 -0
  164. package/dist/pagination.js.map +1 -0
  165. package/dist/popover-content.js +7 -3
  166. package/dist/popover-content.js.map +1 -1
  167. package/dist/popover.js +175 -3
  168. package/dist/popover.js.map +1 -1
  169. package/dist/{property-1psGvXOq.js → property-B49QQ8pS.js} +2 -2
  170. package/dist/{property-1psGvXOq.js.map → property-B49QQ8pS.js.map} +1 -1
  171. package/dist/query-CHb9Ft_d.js +10 -0
  172. package/dist/query-CHb9Ft_d.js.map +1 -0
  173. package/dist/query-assigned-elements-BJaGSqM0.js +10 -0
  174. package/dist/query-assigned-elements-BJaGSqM0.js.map +1 -0
  175. package/dist/radio.js +476 -0
  176. package/dist/radio.js.map +1 -0
  177. package/dist/ripple.js +506 -0
  178. package/dist/ripple.js.map +1 -0
  179. package/dist/search.js +12 -7
  180. package/dist/search.js.map +1 -1
  181. package/dist/segmented-button-group.js +137 -0
  182. package/dist/segmented-button-group.js.map +1 -0
  183. package/dist/segmented-button.js +289 -0
  184. package/dist/segmented-button.js.map +1 -0
  185. package/dist/select-Dwtk0RIU.js +3937 -0
  186. package/dist/select-Dwtk0RIU.js.map +1 -0
  187. package/dist/side-sheet.js +8 -4
  188. package/dist/side-sheet.js.map +1 -1
  189. package/dist/skeleton.js +122 -0
  190. package/dist/skeleton.js.map +1 -0
  191. package/dist/slider.js +346 -0
  192. package/dist/slider.js.map +1 -0
  193. package/dist/snackbar.js +335 -0
  194. package/dist/snackbar.js.map +1 -0
  195. package/dist/spinner.js +100 -0
  196. package/dist/spinner.js.map +1 -0
  197. package/dist/split-button.js +10 -5
  198. package/dist/split-button.js.map +1 -1
  199. package/dist/spread-B5cgadZl.js +32 -0
  200. package/dist/spread-B5cgadZl.js.map +1 -0
  201. package/dist/src/__internal/aria/aria.d.ts +98 -0
  202. package/dist/src/__internal/aria/delegate.d.ts +54 -0
  203. package/dist/src/__internal/events/dispatch-hooks.d.ts +80 -0
  204. package/dist/src/__internal/mixins/element-internals.d.ts +40 -0
  205. package/dist/src/__internal/mixins/form-associated.d.ts +174 -0
  206. package/dist/src/__internal/mixins/form-submitter.d.ts +59 -0
  207. package/dist/src/__internal/mixins/hyperlink.d.ts +42 -0
  208. package/dist/src/__internal/mixins/mixin.d.ts +49 -0
  209. package/dist/src/{__utils → __internal/utils}/observe-slot-change.d.ts +1 -0
  210. package/dist/src/accordion/accordion-item.d.ts +3 -1
  211. package/dist/src/accordion/accordion.d.ts +1 -1
  212. package/dist/src/alert/alert.d.ts +43 -0
  213. package/dist/src/alert/index.d.ts +1 -0
  214. package/dist/src/app-bar/app-bar.d.ts +92 -0
  215. package/dist/src/app-bar/index.d.ts +1 -0
  216. package/dist/src/avatar/avatar.d.ts +2 -0
  217. package/dist/src/bottom-sheet/bottom-sheet.d.ts +1 -1
  218. package/dist/src/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +1 -0
  219. package/dist/src/button/ButtonTypes.d.ts +5 -0
  220. package/dist/src/button/base-button/base-button.d.ts +18 -0
  221. package/dist/src/button/button/button.d.ts +29 -37
  222. package/dist/src/button/button-group/button-group.d.ts +17 -18
  223. package/dist/src/{fab → button/fab}/fab.d.ts +8 -26
  224. package/dist/src/button/icon-button/icon-button.d.ts +20 -27
  225. package/dist/src/button/index.d.ts +1 -0
  226. package/dist/src/calendar/calendar.d.ts +1 -1
  227. package/dist/src/canvas/canvas.d.ts +1 -1
  228. package/dist/src/card/card.d.ts +5 -6
  229. package/dist/src/chart-bar/chart-bar.d.ts +1 -1
  230. package/dist/src/chart-bar/chart-stacked-bar.d.ts +1 -1
  231. package/dist/src/checkbox/checkbox.d.ts +5 -1
  232. package/dist/src/chip/chip/chip.d.ts +9 -8
  233. package/dist/src/container/container.d.ts +5 -1
  234. package/dist/src/divider/divider.d.ts +2 -0
  235. package/dist/src/empty-state/empty-state.d.ts +1 -0
  236. package/dist/src/field/field.d.ts +19 -1
  237. package/dist/src/focus-ring/focus-ring.d.ts +3 -7
  238. package/dist/src/html-editor/html-editor.d.ts +1 -1
  239. package/dist/src/icon/icon.d.ts +9 -4
  240. package/dist/src/image/image.d.ts +4 -0
  241. package/dist/src/index.d.ts +7 -6
  242. package/dist/src/item/item.d.ts +20 -29
  243. package/dist/src/link/link.d.ts +1 -1
  244. package/dist/src/list/list-item.d.ts +7 -5
  245. package/dist/src/list/list.d.ts +3 -2
  246. package/dist/src/menu/menu/menu.d.ts +14 -0
  247. package/dist/src/menu/menu-item/menu-item.d.ts +10 -2
  248. package/dist/src/modal/modal.d.ts +1 -1
  249. package/dist/src/navigation-rail/navigation-rail-item.d.ts +5 -4
  250. package/dist/src/navigation-rail/navigation-rail.d.ts +1 -1
  251. package/dist/src/radio/radio.d.ts +5 -0
  252. package/dist/src/ripple/ripple.d.ts +10 -1
  253. package/dist/src/search/search.d.ts +1 -1
  254. package/dist/src/segmented-button/segmented-button-group.d.ts +2 -2
  255. package/dist/src/segmented-button/segmented-button.d.ts +2 -0
  256. package/dist/src/side-sheet/side-sheet.d.ts +1 -1
  257. package/dist/src/skeleton/skeleton.d.ts +1 -0
  258. package/dist/src/slider/slider.d.ts +1 -0
  259. package/dist/src/snackbar/snackbar.d.ts +12 -2
  260. package/dist/src/svg/svg.d.ts +5 -0
  261. package/dist/src/table/table.d.ts +5 -0
  262. package/dist/src/tabs/tab.d.ts +2 -7
  263. package/dist/src/toolbar/toolbar.d.ts +2 -2
  264. package/dist/{state-DwbEjqVk.js → state-DkTK9EGF.js} +2 -2
  265. package/dist/{state-DwbEjqVk.js.map → state-DkTK9EGF.js.map} +1 -1
  266. package/dist/{style-map-DVmWOuYy.js → style-map-BQD5Et1D.js} +2 -2
  267. package/dist/{style-map-DVmWOuYy.js.map → style-map-BQD5Et1D.js.map} +1 -1
  268. package/dist/sub-menu.js +241 -0
  269. package/dist/sub-menu.js.map +1 -0
  270. package/dist/svg.js +273 -0
  271. package/dist/svg.js.map +1 -0
  272. package/dist/tab-group.js +188 -0
  273. package/dist/tab-group.js.map +1 -0
  274. package/dist/tab-panel.js +61 -0
  275. package/dist/tab-panel.js.map +1 -0
  276. package/dist/tab.js +658 -0
  277. package/dist/tab.js.map +1 -0
  278. package/dist/table.js +620 -0
  279. package/dist/table.js.map +1 -0
  280. package/dist/tabs.js +240 -0
  281. package/dist/tabs.js.map +1 -0
  282. package/dist/throttle-C7ZAPqtu.js +24 -0
  283. package/dist/throttle-C7ZAPqtu.js.map +1 -0
  284. package/dist/toolbar.js +9 -5
  285. package/dist/toolbar.js.map +1 -1
  286. package/dist/tooltip.js +270 -0
  287. package/dist/tooltip.js.map +1 -0
  288. package/dist/tsconfig.tsbuildinfo +1 -1
  289. package/dist/{unsafe-html-BsGUjx94.js → unsafe-html-Ct0N2_UU.js} +2 -2
  290. package/dist/{unsafe-html-BsGUjx94.js.map → unsafe-html-Ct0N2_UU.js.map} +1 -1
  291. package/dist/when-DEJm_QN9.js +9 -0
  292. package/dist/when-DEJm_QN9.js.map +1 -0
  293. package/package.json +4 -2
  294. package/readme.md +3 -3
  295. package/scss/mixin.scss +8 -6
  296. package/src/__internal/aria/aria.ts +293 -0
  297. package/src/__internal/aria/delegate.ts +206 -0
  298. package/src/__internal/events/dispatch-hooks.ts +182 -0
  299. package/src/__internal/mixins/element-internals.ts +73 -0
  300. package/src/__internal/mixins/form-associated.ts +295 -0
  301. package/src/__internal/mixins/form-submitter.ts +133 -0
  302. package/src/__internal/mixins/hyperlink.ts +71 -0
  303. package/src/__internal/mixins/mixin.ts +58 -0
  304. package/src/{__utils → __internal/utils}/observe-slot-change.ts +2 -5
  305. package/src/accordion/accordion-item.ts +6 -2
  306. package/src/accordion/accordion.ts +4 -2
  307. package/src/accordion/demo/index.html +95 -90
  308. package/src/alert/alert.scss +82 -0
  309. package/src/{banner/banner.ts → alert/alert.ts} +22 -22
  310. package/src/alert/index.ts +1 -0
  311. package/src/app-bar/app-bar-colors.scss +17 -0
  312. package/src/app-bar/app-bar.scss +165 -0
  313. package/src/app-bar/app-bar.ts +155 -0
  314. package/src/app-bar/index.ts +1 -0
  315. package/src/avatar/avatar.ts +4 -0
  316. package/src/badge/badge.ts +2 -0
  317. package/src/bottom-sheet/bottom-sheet.ts +8 -2
  318. package/src/breadcrumb/breadcrumb/breadcrumb.ts +2 -0
  319. package/src/breadcrumb/breadcrumb-item/breadcrumb-item.ts +3 -0
  320. package/src/button/ButtonTypes.ts +17 -0
  321. package/src/button/base-button/base-button.ts +85 -0
  322. package/src/button/button/button-base.scss +306 -0
  323. package/src/button/button/button-colors.scss +27 -32
  324. package/src/button/button/button-layers.scss +126 -39
  325. package/src/button/button/button-shapes.scss +73 -0
  326. package/src/button/button/button.scss +12 -286
  327. package/src/button/button/button.ts +174 -194
  328. package/src/button/button-group/button-group.scss +43 -36
  329. package/src/button/button-group/button-group.ts +26 -137
  330. package/src/{fab → button/fab}/fab-colors.scss +0 -10
  331. package/src/button/fab/fab-sizes.scss +37 -0
  332. package/src/button/fab/fab.scss +172 -0
  333. package/src/{fab → button/fab}/fab.ts +69 -105
  334. package/src/button/icon-button/icon-button-sizes.scss +18 -3
  335. package/src/button/icon-button/icon-button.scss +5 -0
  336. package/src/button/icon-button/icon-button.ts +111 -141
  337. package/src/button/index.ts +7 -0
  338. package/src/calendar/calendar.ts +2 -2
  339. package/src/canvas/canvas.ts +2 -2
  340. package/src/card/card.scss +3 -3
  341. package/src/card/card.ts +20 -40
  342. package/src/chart-bar/chart-bar.ts +2 -2
  343. package/src/chart-bar/chart-stacked-bar.ts +2 -2
  344. package/src/checkbox/checkbox.ts +12 -4
  345. package/src/chip/chip/chip.scss +1 -1
  346. package/src/chip/chip/chip.ts +35 -55
  347. package/src/chip/demo/index.html +30 -26
  348. package/src/code-editor/code-editor.ts +68 -58
  349. package/src/code-editor/demo/index.html +32 -27
  350. package/src/code-highlighter/code-highlighter.ts +1 -1
  351. package/src/code-highlighter/demo/index.html +24 -21
  352. package/src/container/container.ts +8 -2
  353. package/src/date-picker/date-picker.ts +2 -3
  354. package/src/divider/divider.ts +5 -1
  355. package/src/dropdown-button/demo/index.html +106 -101
  356. package/src/dropdown-button/dropdown-button.ts +1 -1
  357. package/src/elevation/elevation.ts +2 -0
  358. package/src/empty-state/empty-state.ts +3 -0
  359. package/src/field/field.ts +52 -33
  360. package/src/focus-ring/focus-ring.ts +5 -7
  361. package/src/html-editor/html-editor.ts +28 -16
  362. package/src/icon/datasource.ts +1 -1
  363. package/src/icon/icon.ts +27 -15
  364. package/src/image/image.ts +18 -6
  365. package/src/index.ts +24 -6
  366. package/src/input/input.ts +2 -2
  367. package/src/item/item.scss +126 -162
  368. package/src/item/item.ts +70 -323
  369. package/src/link/link.ts +3 -1
  370. package/src/list/list-item.scss +43 -31
  371. package/src/list/list-item.ts +79 -75
  372. package/src/list/list.scss +1 -13
  373. package/src/list/list.ts +6 -3
  374. package/src/{peacock-loader.ts → loader.ts} +91 -79
  375. package/src/menu/menu/menu.scss +14 -11
  376. package/src/menu/menu/menu.ts +20 -8
  377. package/src/menu/menu-item/menu-item.scss +35 -3
  378. package/src/menu/menu-item/menu-item.ts +40 -34
  379. package/src/menu/sub-menu/sub-menu.ts +3 -0
  380. package/src/modal/modal.ts +2 -2
  381. package/src/navigation-rail/navigation-rail-item.ts +21 -36
  382. package/src/navigation-rail/navigation-rail.scss +1 -0
  383. package/src/navigation-rail/navigation-rail.ts +4 -2
  384. package/src/number-field/number-field.ts +2 -2
  385. package/src/pagination/pagination.ts +2 -0
  386. package/src/popover/popover.ts +3 -3
  387. package/src/radio/radio.ts +13 -5
  388. package/src/ripple/ripple.ts +14 -1
  389. package/src/search/search.ts +3 -3
  390. package/src/segmented-button/segmented-button-group.ts +8 -4
  391. package/src/segmented-button/segmented-button.ts +4 -0
  392. package/src/select/option.ts +2 -0
  393. package/src/side-sheet/side-sheet.ts +2 -2
  394. package/src/sidebar-menu/sidebar-menu-item.ts +3 -2
  395. package/src/skeleton/skeleton.ts +3 -0
  396. package/src/slider/slider.ts +4 -1
  397. package/src/snackbar/snackbar.ts +40 -25
  398. package/src/spinner/spinner.ts +2 -0
  399. package/src/svg/svg.ts +27 -9
  400. package/src/switch/switch.ts +1 -1
  401. package/src/table/table.ts +16 -3
  402. package/src/tabs/demo/index.html +79 -79
  403. package/src/tabs/tab-group.ts +2 -0
  404. package/src/tabs/tab-panel.ts +2 -0
  405. package/src/tabs/tab.scss +4 -4
  406. package/src/tabs/tab.ts +16 -39
  407. package/src/tabs/tabs.ts +2 -0
  408. package/src/textarea/textarea.ts +2 -2
  409. package/src/time-picker/time-picker.ts +2 -2
  410. package/src/toolbar/toolbar.ts +3 -3
  411. package/src/tooltip/tooltip.ts +14 -8
  412. package/src/url-field/url-field.ts +2 -3
  413. package/dist/ButtonConstants-D06bY4uy.js +0 -114
  414. package/dist/ButtonConstants-D06bY4uy.js.map +0 -1
  415. package/dist/NativeHyperlinkMixin-DrYXyfMQ.js.map +0 -1
  416. package/dist/banner.js +0 -186
  417. package/dist/banner.js.map +0 -1
  418. package/dist/button-colors-D7sJyPy8.js +0 -586
  419. package/dist/button-colors-D7sJyPy8.js.map +0 -1
  420. package/dist/icon-CueRR7wx.js +0 -260
  421. package/dist/icon-CueRR7wx.js.map +0 -1
  422. package/dist/icon-button-CAzYr_qr.js +0 -318
  423. package/dist/icon-button-CAzYr_qr.js.map +0 -1
  424. package/dist/navigation-rail-CM_svs5_.js +0 -14184
  425. package/dist/navigation-rail-CM_svs5_.js.map +0 -1
  426. package/dist/observe-slot-change-D8Xg-kSS.js.map +0 -1
  427. package/dist/peacock-loader.js.map +0 -1
  428. package/dist/popover-DUPmMVWS.js.map +0 -1
  429. package/dist/query-QBcUV-L_.js +0 -15
  430. package/dist/query-QBcUV-L_.js.map +0 -1
  431. package/dist/src/banner/banner.d.ts +0 -43
  432. package/dist/src/banner/index.d.ts +0 -1
  433. package/dist/src/button/GroupButtonInterface.d.ts +0 -4
  434. package/src/banner/banner.scss +0 -82
  435. package/src/banner/index.ts +0 -1
  436. package/src/button/GroupButtonInterface.ts +0 -4
  437. package/src/button/button/only-button.scss +0 -13
  438. package/src/fab/fab-sizes.scss +0 -37
  439. package/src/fab/fab.scss +0 -143
  440. /package/dist/src/{__controllers → __internal/controllers}/attachable-controller.d.ts +0 -0
  441. /package/dist/src/{__controllers → __internal/controllers}/floating-controller.d.ts +0 -0
  442. /package/dist/src/{__directive → __internal/directive}/spread.d.ts +0 -0
  443. /package/dist/src/{__mixins → __internal/mixins}/MixinConstructor.d.ts +0 -0
  444. /package/dist/src/{__mixins → __internal/mixins}/NativeButtonMixin.d.ts +0 -0
  445. /package/dist/src/{__mixins → __internal/mixins}/NativeHyperlinkMixin.d.ts +0 -0
  446. /package/dist/src/{__utils → __internal/utils}/cache-fetch.d.ts +0 -0
  447. /package/dist/src/{__utils → __internal/utils}/copy-to-clipboard.d.ts +0 -0
  448. /package/dist/src/{__utils → __internal/utils}/dispatch-event-utils.d.ts +0 -0
  449. /package/dist/src/{__utils → __internal/utils}/is-dark-mode.d.ts +0 -0
  450. /package/dist/src/{__utils → __internal/utils}/is-in-viewport.d.ts +0 -0
  451. /package/dist/src/{__utils → __internal/utils}/is-link.d.ts +0 -0
  452. /package/dist/src/{__utils → __internal/utils}/observe-theme-change.d.ts +0 -0
  453. /package/dist/src/{__utils → __internal/utils}/sanitize-svg.d.ts +0 -0
  454. /package/dist/src/{__utils → __internal/utils}/throttle.d.ts +0 -0
  455. /package/dist/src/{fab → button/fab}/index.d.ts +0 -0
  456. /package/dist/src/{peacock-loader.d.ts → loader.d.ts} +0 -0
  457. /package/dist/test/{banner.test.d.ts → alert.test.d.ts} +0 -0
  458. /package/src/{__controllers → __internal/controllers}/attachable-controller.ts +0 -0
  459. /package/src/{__controllers → __internal/controllers}/floating-controller.ts +0 -0
  460. /package/src/{__directive → __internal/directive}/spread.ts +0 -0
  461. /package/src/{__mixins → __internal/mixins}/MixinConstructor.ts +0 -0
  462. /package/src/{__mixins → __internal/mixins}/NativeButtonMixin.ts +0 -0
  463. /package/src/{__mixins → __internal/mixins}/NativeHyperlinkMixin.ts +0 -0
  464. /package/src/{__mixins → __internal/mixins}/README.md +0 -0
  465. /package/src/{__utils → __internal/utils}/cache-fetch.ts +0 -0
  466. /package/src/{__utils → __internal/utils}/copy-to-clipboard.ts +0 -0
  467. /package/src/{__utils → __internal/utils}/dispatch-event-utils.ts +0 -0
  468. /package/src/{__utils → __internal/utils}/is-dark-mode.ts +0 -0
  469. /package/src/{__utils → __internal/utils}/is-in-viewport.ts +0 -0
  470. /package/src/{__utils → __internal/utils}/is-link.ts +0 -0
  471. /package/src/{__utils → __internal/utils}/observe-theme-change.ts +0 -0
  472. /package/src/{__utils → __internal/utils}/sanitize-svg.ts +0 -0
  473. /package/src/{__utils → __internal/utils}/throttle.ts +0 -0
  474. /package/src/{fab → button/fab}/index.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"notification-manager.js","sources":["../../src/notification-manager/notification-manager.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './notification-manager.scss';\n\ntype NotificationVariant = 'success' | 'error' | 'info' | 'warning';\n\ntype NotificationEntry = {\n id: string;\n title: string;\n subtitle?: string;\n action?: string;\n variant: NotificationVariant;\n dismissible: boolean;\n timeout: number;\n hide: boolean;\n width?: string;\n};\n\nlet notificationCounter = 0;\nfunction nextId(): string {\n return `wc-notification-${++notificationCounter}`;\n}\n\n/**\n * @label Notification Manager\n * @tag wc-notification-manager\n * @rawTag notification-manager\n * @summary The Notification Manager handles the organization and display of notifications within the application.\n *\n * @fires {CustomEvent} notification-manager-action - Fired when the action button of a managed notification is clicked. Detail: `{ id: string }`.\n * @fires {CustomEvent} notification-manager-dismiss - Fired when a managed notification is dismissed. Detail: `{ id: string }`.\n *\n * @example\n * ```html\n * <wc-notification-manager position=\"bottom-right\"></wc-notification-manager>\n * <script>\n * window.dispatchEvent(new CustomEvent('notification', {\n * detail: { title: 'Record saved', variant: 'success', dismissible: true }\n * }));\n * </script>\n * ```\n * @tags display, feedback\n */\n@IndividualComponent\nexport class NotificationManager extends LitElement {\n static styles = [styles];\n\n /**\n * Name of this manager instance. Only notifications whose `target` matches\n * this name (or whose `target` is absent and this manager's `name` is\n * `'global'`) will be handled.\n */\n @property({ type: String, reflect: true }) name = 'global';\n\n /**\n * Screen position where notifications are stacked.\n */\n @property({ type: String, reflect: true })\n position: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' =\n 'bottom-right';\n\n @state() private notifications: NotificationEntry[] = [];\n\n private readonly handleWindowNotification = (event: Event) => {\n const evt = event as CustomEvent;\n const detail = evt.detail ?? {};\n\n // Route by target: accept if target matches our name, or if we are global\n // and no specific target is set.\n const target: string | undefined = detail.target;\n const isForUs =\n target === this.name || (!target && this.name === 'global');\n\n if (!isForUs || detail.processed) {\n return;\n }\n\n evt.stopPropagation();\n detail.processed = true;\n\n const entry: NotificationEntry = {\n id: nextId(),\n title: detail.title ?? '',\n subtitle: detail.subtitle,\n action: detail.action,\n variant: detail.variant ?? 'info',\n dismissible: detail.dismissible ?? false,\n timeout: detail.timeout ?? 5000,\n hide: false,\n width: detail.width,\n };\n\n this.notifications = [...this.notifications, entry];\n\n if (typeof detail.callback === 'function') {\n detail.callback(entry.id);\n }\n\n if (!entry.dismissible) {\n setTimeout(() => {\n this._hideNotification(entry.id);\n }, entry.timeout);\n }\n };\n\n private readonly handleWindowDismiss = (event: Event) => {\n const evt = event as CustomEvent;\n const ids: string[] = evt.detail?.notifications ?? [];\n ids.forEach(id => this._hideNotification(id));\n };\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('notification', this.handleWindowNotification);\n window.addEventListener(\n 'notification-dismiss',\n this.handleWindowDismiss,\n );\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n 'notification',\n this.handleWindowNotification,\n );\n window.removeEventListener(\n 'notification-dismiss',\n this.handleWindowDismiss,\n );\n super.disconnectedCallback();\n }\n\n private _hideNotification(id: string) {\n this.notifications = this.notifications.map(n =>\n n.id === id ? { ...n, hide: true } : n,\n );\n }\n\n private _handleDismiss(id: string) {\n this._hideNotification(id);\n this.dispatchEvent(\n new CustomEvent('notification-manager-dismiss', {\n detail: { id },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _handleAction(id: string) {\n this.dispatchEvent(\n new CustomEvent('notification-manager-action', {\n detail: { id },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private renderNotification(n: NotificationEntry) {\n return html`\n <div\n id=${n.id}\n class=${classMap({ notification: true, hidden: n.hide })}\n style=${n.width ? `width: ${n.width}` : nothing}\n >\n <wc-notification\n variant=${n.variant}\n ?dismissible=${n.dismissible}\n managed\n action=${n.action ?? nothing}\n @notification-dismiss=${() => this._handleDismiss(n.id)}\n @notification-action-click=${() => this._handleAction(n.id)}\n >\n <span slot=\"title\">${n.title}</span>\n ${n.subtitle\n ? html`<span slot=\"subtitle\">${n.subtitle}</span>`\n : nothing}\n </wc-notification>\n </div>\n `;\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n 'notification-manager': true,\n [`position-${this.position}`]: true,\n })}\n >\n ${this.notifications.map(n => this.renderNotification(n))}\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","styles","property","state"],"mappings":"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"}
1
+ {"version":3,"file":"notification-manager.js","sources":["../../src/notification-manager/notification-manager.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './notification-manager.scss';\n\ntype NotificationVariant = 'success' | 'error' | 'info' | 'warning';\n\ntype NotificationEntry = {\n id: string;\n title: string;\n subtitle?: string;\n action?: string;\n variant: NotificationVariant;\n dismissible: boolean;\n timeout: number;\n hide: boolean;\n width?: string;\n};\n\nlet notificationCounter = 0;\nfunction nextId(): string {\n return `wc-notification-${++notificationCounter}`;\n}\n\n/**\n * @label Notification Manager\n * @tag wc-notification-manager\n * @rawTag notification-manager\n * @summary The Notification Manager handles the organization and display of notifications within the application.\n *\n * @fires {CustomEvent} notification-manager-action - Fired when the action button of a managed notification is clicked. Detail: `{ id: string }`.\n * @fires {CustomEvent} notification-manager-dismiss - Fired when a managed notification is dismissed. Detail: `{ id: string }`.\n *\n * @example\n * ```html\n * <wc-notification-manager position=\"bottom-right\"></wc-notification-manager>\n * <script>\n * window.dispatchEvent(new CustomEvent('notification', {\n * detail: { title: 'Record saved', variant: 'success', dismissible: true }\n * }));\n * </script>\n * ```\n * @tags display, feedback\n */\n@IndividualComponent\nexport class NotificationManager extends LitElement {\n static styles = [styles];\n\n /**\n * Name of this manager instance. Only notifications whose `target` matches\n * this name (or whose `target` is absent and this manager's `name` is\n * `'global'`) will be handled.\n */\n @property({ type: String, reflect: true }) name = 'global';\n\n /**\n * Screen position where notifications are stacked.\n */\n @property({ type: String, reflect: true })\n position: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' =\n 'bottom-right';\n\n @state() private notifications: NotificationEntry[] = [];\n\n private readonly handleWindowNotification = (event: Event) => {\n const evt = event as CustomEvent;\n const detail = evt.detail ?? {};\n\n // Route by target: accept if target matches our name, or if we are global\n // and no specific target is set.\n const target: string | undefined = detail.target;\n const isForUs =\n target === this.name || (!target && this.name === 'global');\n\n if (!isForUs || detail.processed) {\n return;\n }\n\n evt.stopPropagation();\n detail.processed = true;\n\n const entry: NotificationEntry = {\n id: nextId(),\n title: detail.title ?? '',\n subtitle: detail.subtitle,\n action: detail.action,\n variant: detail.variant ?? 'info',\n dismissible: detail.dismissible ?? false,\n timeout: detail.timeout ?? 5000,\n hide: false,\n width: detail.width,\n };\n\n this.notifications = [...this.notifications, entry];\n\n if (typeof detail.callback === 'function') {\n detail.callback(entry.id);\n }\n\n if (!entry.dismissible) {\n setTimeout(() => {\n this._hideNotification(entry.id);\n }, entry.timeout);\n }\n };\n\n private readonly handleWindowDismiss = (event: Event) => {\n const evt = event as CustomEvent;\n const ids: string[] = evt.detail?.notifications ?? [];\n ids.forEach(id => this._hideNotification(id));\n };\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('notification', this.handleWindowNotification);\n window.addEventListener(\n 'notification-dismiss',\n this.handleWindowDismiss,\n );\n }\n\n disconnectedCallback() {\n window.removeEventListener(\n 'notification',\n this.handleWindowNotification,\n );\n window.removeEventListener(\n 'notification-dismiss',\n this.handleWindowDismiss,\n );\n super.disconnectedCallback();\n }\n\n private _hideNotification(id: string) {\n this.notifications = this.notifications.map(n =>\n n.id === id ? { ...n, hide: true } : n,\n );\n }\n\n private _handleDismiss(id: string) {\n this._hideNotification(id);\n this.dispatchEvent(\n new CustomEvent('notification-manager-dismiss', {\n detail: { id },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _handleAction(id: string) {\n this.dispatchEvent(\n new CustomEvent('notification-manager-action', {\n detail: { id },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private renderNotification(n: NotificationEntry) {\n return html`\n <div\n id=${n.id}\n class=${classMap({ notification: true, hidden: n.hide })}\n style=${n.width ? `width: ${n.width}` : nothing}\n >\n <wc-notification\n variant=${n.variant}\n ?dismissible=${n.dismissible}\n managed\n action=${n.action ?? nothing}\n @notification-dismiss=${() => this._handleDismiss(n.id)}\n @notification-action-click=${() => this._handleAction(n.id)}\n >\n <span slot=\"title\">${n.title}</span>\n ${n.subtitle\n ? html`<span slot=\"subtitle\">${n.subtitle}</span>`\n : nothing}\n </wc-notification>\n </div>\n `;\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n 'notification-manager': true,\n [`position-${this.position}`]: true,\n })}\n >\n ${this.notifications.map(n => this.renderNotification(n))}\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","styles","property","state"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { a as i, _ as __decorate, I as IndividualComponent, i as i$1, A, b } from './IndividualComponent-DUINtMGK.js';
2
- import { n } from './property-1psGvXOq.js';
3
- import { r } from './state-DwbEjqVk.js';
4
- import { e } from './class-map-YU7g0o3B.js';
1
+ import { i, _ as __decorate, I as IndividualComponent, a as i$1, A, b } from './IndividualComponent-Bdwyrvd6.js';
2
+ import { n } from './property-B49QQ8pS.js';
3
+ import { r } from './state-DkTK9EGF.js';
4
+ import { e } from './class-map-DG7CA1et.js';
5
5
  import './directive-ZPhl09Yt.js';
6
6
 
7
7
  var css_248z = i`* {
@@ -12,6 +12,10 @@ var css_248z = i`* {
12
12
  display: none !important;
13
13
  }
14
14
 
15
+ [hidden] {
16
+ display: none !important;
17
+ }
18
+
15
19
  :host {
16
20
  --notification-container-color: var(--color-primary-container);
17
21
  --notification-text-color: var(--color-on-primary-container);
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sources":["../../src/notification/notification.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './notification.scss';\n\ntype NotificationVariant = 'success' | 'error' | 'info' | 'warning';\n\nconst VARIANT_LABELS: Record<NotificationVariant, string> = {\n success: 'Success',\n error: 'Error',\n info: 'Information',\n warning: 'Warning',\n};\n\nconst VARIANT_ICONS: Record<NotificationVariant, string> = {\n success: 'check_circle',\n error: 'error',\n info: 'info',\n warning: 'warning',\n};\n\n/**\n * @label Notification\n * @tag wc-notification\n * @rawTag notification\n * @summary Notifications communicate contextual status, errors, warnings, and success messages.\n *\n * @cssprop --notification-container-color - Surface color for the notification container.\n * @cssprop --notification-text-color - Label and supporting text color.\n * @cssprop --notification-leading-icon-color - Leading state icon color.\n * @cssprop --notification-accent-color - Start border color for status emphasis.\n * @cssprop --notification-border-radius - Border radius of the notification container.\n *\n * @fires {CustomEvent} notification-dismiss - Fired when the notification is dismissed.\n * @fires {CustomEvent} notification-action-click - Fired when the action button is clicked.\n *\n * @example\n * ```html\n * <wc-notification variant=\"success\" action=\"Undo\" dismissible>\n * <span slot=\"title\">Record saved</span>\n * </wc-notification>\n * ```\n * @tags display, feedback\n */\n@IndividualComponent\nexport class Notification extends LitElement {\n static styles = [styles];\n\n /**\n * If true, content and actions are laid out in a single row.\n */\n @property({ type: Boolean, reflect: true }) inline = false;\n\n /**\n * The visual variant of the notification.\n */\n @property({ type: String, reflect: true })\n variant: NotificationVariant = 'info';\n\n /**\n * Enables a high contrast appearance.\n */\n @property({ type: Boolean, reflect: true, attribute: 'high-contrast' })\n highContrast = false;\n\n /**\n * If true, renders a dismiss icon button.\n */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /**\n * Action label text. When provided, an action button is shown.\n */\n @property({ type: String }) action = '';\n\n /**\n * If true, the host controls visibility when dismissed.\n */\n @property({ type: Boolean, reflect: true }) managed = false;\n\n @state() private isHidden = false;\n \n @state() private hasSubtitle = false;\n\n /**\n * Programmatically reveals the notification.\n */\n show() {\n this.isHidden = false;\n }\n\n /**\n * Programmatically dismisses the notification.\n */\n dismiss() {\n this.hideAndEmitDismiss('programmatic');\n }\n\n private get variantIcon() {\n return VARIANT_ICONS[this.variant];\n }\n\n private get variantLabel() {\n return VARIANT_LABELS[this.variant];\n }\n\n private emitActionClick() {\n this.dispatchEvent(\n new CustomEvent('notification-action-click', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private hideAndEmitDismiss(reason: 'dismiss' | 'programmatic') {\n if (!this.managed) {\n this.isHidden = true;\n }\n\n this.dispatchEvent(\n new CustomEvent('notification-dismiss', {\n detail: { reason },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private handleSubtitleSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n this.hasSubtitle = slot\n .assignedNodes({ flatten: true })\n .some(node => node.textContent?.trim());\n }\n\n render() {\n if (this.isHidden) {\n return nothing;\n }\n\n return html`\n <div\n class=${classMap({\n notification: true,\n inline: this.inline,\n 'high-contrast': this.highContrast,\n 'has-subtitle': this.hasSubtitle,\n [`variant-${this.variant}`]: true,\n })}\n role=\"alert\"\n aria-live=\"polite\"\n aria-label=${this.variantLabel}\n >\n <div class=\"state-icon\" aria-hidden=\"true\">\n <slot name=\"icon\">\n <wc-icon name=${this.variantIcon}></wc-icon>\n </slot>\n </div>\n\n <div class=\"content\">\n <div class=\"content-text\">\n <div class=\"title\">\n <slot name=\"title\"></slot>\n <slot></slot>\n </div>\n\n <div class=\"subtitle\">\n <slot name=\"subtitle\" @slotchange=${this.handleSubtitleSlotChange}></slot>\n </div>\n </div>\n\n ${this.action\n ? html`<div class=\"actions\">\n <wc-button\n class=\"action\"\n size=\"sm\"\n variant=${this.inline ? 'text' : 'outlined'}\n @click=${this.emitActionClick}\n >\n ${this.action}\n </wc-button>\n </div>`\n : nothing}\n </div>\n\n ${this.dismissible\n ? html`<div class=\"close-button-container\">\n <wc-icon-button\n class=\"close-button\"\n variant=\"text\"\n size=\"sm\"\n aria-label=\"Close notification\"\n @click=${() => {\n this.hideAndEmitDismiss('dismiss');\n }}\n >\n <wc-icon name=\"close\"></wc-icon>\n </wc-icon-button>\n </div>`\n : nothing}\n </div>\n `;\n }\n}\n"],"names":["LitElement","nothing","html","classMap","styles","property","state"],"mappings":"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"}
1
+ {"version":3,"file":"notification.js","sources":["../../src/notification/notification.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './notification.scss';\n\ntype NotificationVariant = 'success' | 'error' | 'info' | 'warning';\n\nconst VARIANT_LABELS: Record<NotificationVariant, string> = {\n success: 'Success',\n error: 'Error',\n info: 'Information',\n warning: 'Warning',\n};\n\nconst VARIANT_ICONS: Record<NotificationVariant, string> = {\n success: 'check_circle',\n error: 'error',\n info: 'info',\n warning: 'warning',\n};\n\n/**\n * @label Notification\n * @tag wc-notification\n * @rawTag notification\n * @summary Notifications communicate contextual status, errors, warnings, and success messages.\n *\n * @cssprop --notification-container-color - Surface color for the notification container.\n * @cssprop --notification-text-color - Label and supporting text color.\n * @cssprop --notification-leading-icon-color - Leading state icon color.\n * @cssprop --notification-accent-color - Start border color for status emphasis.\n * @cssprop --notification-border-radius - Border radius of the notification container.\n *\n * @fires {CustomEvent} notification-dismiss - Fired when the notification is dismissed.\n * @fires {CustomEvent} notification-action-click - Fired when the action button is clicked.\n *\n * @example\n * ```html\n * <wc-notification variant=\"success\" action=\"Undo\" dismissible>\n * <span slot=\"title\">Record saved</span>\n * </wc-notification>\n * ```\n * @tags display, feedback\n */\n@IndividualComponent\nexport class Notification extends LitElement {\n static styles = [styles];\n\n /**\n * If true, content and actions are laid out in a single row.\n */\n @property({ type: Boolean, reflect: true }) inline = false;\n\n /**\n * The visual variant of the notification.\n */\n @property({ type: String, reflect: true })\n variant: NotificationVariant = 'info';\n\n /**\n * Enables a high contrast appearance.\n */\n @property({ type: Boolean, reflect: true, attribute: 'high-contrast' })\n highContrast = false;\n\n /**\n * If true, renders a dismiss icon button.\n */\n @property({ type: Boolean, reflect: true }) dismissible = false;\n\n /**\n * Action label text. When provided, an action button is shown.\n */\n @property({ type: String }) action = '';\n\n /**\n * If true, the host controls visibility when dismissed.\n */\n @property({ type: Boolean, reflect: true }) managed = false;\n\n @state() private isHidden = false;\n \n @state() private hasSubtitle = false;\n\n /**\n * Programmatically reveals the notification.\n */\n show() {\n this.isHidden = false;\n }\n\n /**\n * Programmatically dismisses the notification.\n */\n dismiss() {\n this.hideAndEmitDismiss('programmatic');\n }\n\n private get variantIcon() {\n return VARIANT_ICONS[this.variant];\n }\n\n private get variantLabel() {\n return VARIANT_LABELS[this.variant];\n }\n\n private emitActionClick() {\n this.dispatchEvent(\n new CustomEvent('notification-action-click', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private hideAndEmitDismiss(reason: 'dismiss' | 'programmatic') {\n if (!this.managed) {\n this.isHidden = true;\n }\n\n this.dispatchEvent(\n new CustomEvent('notification-dismiss', {\n detail: { reason },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private handleSubtitleSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n this.hasSubtitle = slot\n .assignedNodes({ flatten: true })\n .some(node => node.textContent?.trim());\n }\n\n render() {\n if (this.isHidden) {\n return nothing;\n }\n\n return html`\n <div\n class=${classMap({\n notification: true,\n inline: this.inline,\n 'high-contrast': this.highContrast,\n 'has-subtitle': this.hasSubtitle,\n [`variant-${this.variant}`]: true,\n })}\n role=\"alert\"\n aria-live=\"polite\"\n aria-label=${this.variantLabel}\n >\n <div class=\"state-icon\" aria-hidden=\"true\">\n <slot name=\"icon\">\n <wc-icon name=${this.variantIcon}></wc-icon>\n </slot>\n </div>\n\n <div class=\"content\">\n <div class=\"content-text\">\n <div class=\"title\">\n <slot name=\"title\"></slot>\n <slot></slot>\n </div>\n\n <div class=\"subtitle\">\n <slot name=\"subtitle\" @slotchange=${this.handleSubtitleSlotChange}></slot>\n </div>\n </div>\n\n ${this.action\n ? html`<div class=\"actions\">\n <wc-button\n class=\"action\"\n size=\"sm\"\n variant=${this.inline ? 'text' : 'outlined'}\n @click=${this.emitActionClick}\n >\n ${this.action}\n </wc-button>\n </div>`\n : nothing}\n </div>\n\n ${this.dismissible\n ? html`<div class=\"close-button-container\">\n <wc-icon-button\n class=\"close-button\"\n variant=\"text\"\n size=\"sm\"\n aria-label=\"Close notification\"\n @click=${() => {\n this.hideAndEmitDismiss('dismiss');\n }}\n >\n <wc-icon name=\"close\"></wc-icon>\n </wc-icon-button>\n </div>`\n : nothing}\n </div>\n `;\n }\n}\n"],"names":["LitElement","nothing","html","classMap","styles","property","state"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { a as i, _ as __decorate, I as IndividualComponent, i as i$1, b, A } from './IndividualComponent-DUINtMGK.js';
2
- import { n } from './property-1psGvXOq.js';
3
- import { o } from './style-map-DVmWOuYy.js';
1
+ import { i, _ as __decorate, I as IndividualComponent, a as i$1, b, A } from './IndividualComponent-Bdwyrvd6.js';
2
+ import { n } from './property-B49QQ8pS.js';
3
+ import { o } from './style-map-BQD5Et1D.js';
4
4
  import './directive-ZPhl09Yt.js';
5
5
 
6
6
  var css_248z = i`* {
@@ -11,6 +11,10 @@ var css_248z = i`* {
11
11
  display: none !important;
12
12
  }
13
13
 
14
+ [hidden] {
15
+ display: none !important;
16
+ }
17
+
14
18
  :host {
15
19
  display: block;
16
20
  --number-counter-font-size: 1rem;
@@ -1 +1 @@
1
- {"version":3,"file":"number-counter.js","sources":["../../src/number-counter/number-counter.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport IndividualComponent from '@/IndividualComponent.js';\n\nimport styles from './number-counter.scss';\n\n/**\n * @label Number Counter\n * @tag wc-number-counter\n * @rawTag number-counter\n * @summary Displays a number with commas for thousands.\n *\n * @example\n * ```html\n * <wc-number-counter id=\"number-counter\" value=\"123456789\"></wc-number-counter>\n * <script>\n * customElements.whenDefined('wc-number-counter').then(() => {\n const $counter = document.querySelector('#number-counter');\n\n setInterval(() => {\n $counter.value = $counter.value + Math.floor(Math.random() * 1000);\n }, 1000);\n });\n * </script>\n * ```\n * @tags display\n */\n@IndividualComponent\nexport class NumberCounter extends LitElement {\n static styles = [styles];\n\n @property({ type: Number }) value = 0;\n\n /**\n * Optional: Allow users to pass a locale, defaulting to 'en-US' for commas.\n */\n @property() locale = 'en-US';\n\n render() {\n return html`<div class=\"number-counter\">${this.renderDigits()}</div>`;\n }\n\n renderDigits() {\n if (this.value === undefined || this.value === null) return nothing;\n\n // 1. Format the number with commas (e.g., 1234 -> \"1,234\")\n const formattedValue = new Intl.NumberFormat(this.locale).format(\n this.value,\n );\n\n // 2. Split the string into individual characters\n const chars = formattedValue.split('');\n\n return html`${chars.map(char => {\n // 3. Check if the character is a digit or a separator (comma/dot)\n const digit = parseInt(char, 10);\n\n // eslint-disable-next-line no-restricted-globals\n if (isNaN(digit)) {\n return html`<div class=\"digit-separator\">${char}</div>`;\n }\n\n return this.renderDigit(digit);\n })}`;\n }\n\n // eslint-disable-next-line class-methods-use-this\n renderDigit(digit: number) {\n // Each 'each-digit' is 10% of the 'digit-content' height (since there are 10 numbers)\n const offset = digit * 10;\n const style = {\n transform: `translateY(-${offset}%)`,\n };\n\n return html` <div class=\"digit\">\n <div class=\"digit-content\" style=${styleMap(style)}>\n ${[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(\n n => html`<div class=\"each-digit\">${n}</div>`,\n )}\n </div>\n </div>`;\n }\n}\n"],"names":["LitElement","html","nothing","styleMap","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;AAoBG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQA,GAAU,CAAA;AAAtC,IAAA,WAAA,GAAA;;QAGuB,IAAA,CAAA,KAAK,GAAG,CAAC;AAErC;;AAEG;QACS,IAAA,CAAA,MAAM,GAAG,OAAO;IA8C9B;IA5CE,MAAM,GAAA;QACJ,OAAOC,CAAI,CAAA,CAAA,4BAAA,EAA+B,IAAI,CAAC,YAAY,EAAE,QAAQ;IACvE;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;AAAE,YAAA,OAAOC,CAAO;;AAGnE,QAAA,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAC9D,IAAI,CAAC,KAAK,CACX;;QAGD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAEtC,OAAOD,CAAI,CAAA,CAAA,EAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;;YAE7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;;AAGhC,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,gBAAA,OAAOA,CAAI,CAAA,CAAA,6BAAA,EAAgC,IAAI,QAAQ;YACzD;AAEA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAChC,CAAC,CAAC,EAAE;IACN;;AAGA,IAAA,WAAW,CAAC,KAAa,EAAA;;AAEvB,QAAA,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE;AACzB,QAAA,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,CAAA,YAAA,EAAe,MAAM,CAAA,EAAA,CAAI;SACrC;AAED,QAAA,OAAOA,CAAI,CAAA,CAAA;yCAC0BE,CAAQ,CAAC,KAAK,CAAC,CAAA;AAC9C,QAAA,EAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAClC,CAAC,IAAIF,CAAI,CAAA,CAAA,wBAAA,EAA2B,CAAC,QAAQ,CAC9C;;WAEE;IACT;;AApDO,aAAA,CAAA,MAAM,GAAG,CAACG,QAAM,CAAC;AAEI,UAAA,CAAA;AAA3B,IAAAC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAY,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAK1B,UAAA,CAAA;AAAX,IAAAA,CAAQ;AAAoB,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AARlB,aAAa,GAAA,UAAA,CAAA;IADzB;AACY,CAAA,EAAA,aAAa,CAsDzB;;;;"}
1
+ {"version":3,"file":"number-counter.js","sources":["../../src/number-counter/number-counter.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport IndividualComponent from '@/IndividualComponent.js';\n\nimport styles from './number-counter.scss';\n\n/**\n * @label Number Counter\n * @tag wc-number-counter\n * @rawTag number-counter\n * @summary Displays a number with commas for thousands.\n *\n * @example\n * ```html\n * <wc-number-counter id=\"number-counter\" value=\"123456789\"></wc-number-counter>\n * <script>\n * customElements.whenDefined('wc-number-counter').then(() => {\n const $counter = document.querySelector('#number-counter');\n\n setInterval(() => {\n $counter.value = $counter.value + Math.floor(Math.random() * 1000);\n }, 1000);\n });\n * </script>\n * ```\n * @tags display\n */\n@IndividualComponent\nexport class NumberCounter extends LitElement {\n static styles = [styles];\n\n @property({ type: Number }) value = 0;\n\n /**\n * Optional: Allow users to pass a locale, defaulting to 'en-US' for commas.\n */\n @property() locale = 'en-US';\n\n render() {\n return html`<div class=\"number-counter\">${this.renderDigits()}</div>`;\n }\n\n renderDigits() {\n if (this.value === undefined || this.value === null) return nothing;\n\n // 1. Format the number with commas (e.g., 1234 -> \"1,234\")\n const formattedValue = new Intl.NumberFormat(this.locale).format(\n this.value,\n );\n\n // 2. Split the string into individual characters\n const chars = formattedValue.split('');\n\n return html`${chars.map(char => {\n // 3. Check if the character is a digit or a separator (comma/dot)\n const digit = parseInt(char, 10);\n\n // eslint-disable-next-line no-restricted-globals\n if (isNaN(digit)) {\n return html`<div class=\"digit-separator\">${char}</div>`;\n }\n\n return this.renderDigit(digit);\n })}`;\n }\n\n // eslint-disable-next-line class-methods-use-this\n renderDigit(digit: number) {\n // Each 'each-digit' is 10% of the 'digit-content' height (since there are 10 numbers)\n const offset = digit * 10;\n const style = {\n transform: `translateY(-${offset}%)`,\n };\n\n return html` <div class=\"digit\">\n <div class=\"digit-content\" style=${styleMap(style)}>\n ${[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(\n n => html`<div class=\"each-digit\">${n}</div>`,\n )}\n </div>\n </div>`;\n }\n}\n"],"names":["LitElement","html","nothing","styleMap","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;AAoBG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQA,GAAU,CAAA;AAAtC,IAAA,WAAA,GAAA;;QAGuB,IAAA,CAAA,KAAK,GAAG,CAAC;AAErC;;AAEG;QACS,IAAA,CAAA,MAAM,GAAG,OAAO;IA8C9B;IA5CE,MAAM,GAAA;QACJ,OAAOC,CAAI,CAAA,CAAA,4BAAA,EAA+B,IAAI,CAAC,YAAY,EAAE,QAAQ;IACvE;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;AAAE,YAAA,OAAOC,CAAO;;AAGnE,QAAA,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAC9D,IAAI,CAAC,KAAK,CACX;;QAGD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAEtC,OAAOD,CAAI,CAAA,CAAA,EAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;;YAE7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;;AAGhC,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,gBAAA,OAAOA,CAAI,CAAA,CAAA,6BAAA,EAAgC,IAAI,QAAQ;YACzD;AAEA,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAChC,CAAC,CAAC,EAAE;IACN;;AAGA,IAAA,WAAW,CAAC,KAAa,EAAA;;AAEvB,QAAA,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE;AACzB,QAAA,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,CAAA,YAAA,EAAe,MAAM,CAAA,EAAA,CAAI;SACrC;AAED,QAAA,OAAOA,CAAI,CAAA,CAAA;yCAC0BE,CAAQ,CAAC,KAAK,CAAC,CAAA;AAC9C,QAAA,EAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAClC,CAAC,IAAIF,CAAI,CAAA,CAAA,wBAAA,EAA2B,CAAC,QAAQ,CAC9C;;WAEE;IACT;;AApDO,aAAA,CAAA,MAAM,GAAG,CAACG,QAAM,CAAC;AAEI,UAAA,CAAA;AAA3B,IAAAC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAY,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAK1B,UAAA,CAAA;AAAX,IAAAA,CAAQ;AAAoB,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AARlB,aAAa,GAAA,UAAA,CAAA;IADzB;AACY,CAAA,EAAA,aAAa,CAsDzB;;;;"}
@@ -4,8 +4,7 @@ function hasMeaningfulContent(slotElement) {
4
4
  if (node.nodeType === Node.ELEMENT_NODE) {
5
5
  return true;
6
6
  }
7
- if (node.nodeType === Node.TEXT_NODE &&
8
- (node.textContent?.trim().length || 0) > 0) {
7
+ if (node.nodeType === Node.TEXT_NODE && node.textContent?.match(/\S/)) {
9
8
  return true;
10
9
  }
11
10
  }
@@ -56,5 +55,5 @@ function observerSlotChangesWithCallback(slot, callback) {
56
55
  };
57
56
  }
58
57
 
59
- export { observerSlotChangesWithCallback as o };
60
- //# sourceMappingURL=observe-slot-change-D8Xg-kSS.js.map
58
+ export { hasMeaningfulContent as h, observerSlotChangesWithCallback as o };
59
+ //# sourceMappingURL=observe-slot-change-DPxaZrZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe-slot-change-DPxaZrZF.js","sources":["../../src/__internal/utils/observe-slot-change.ts"],"sourcesContent":["export function hasMeaningfulContent(slotElement: HTMLSlotElement | null) {\n const nodes = slotElement?.assignedNodes({ flatten: true }) || [];\n\n for (const node of nodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n if (node.nodeType === Node.TEXT_NODE && node.textContent?.match(/\\S/)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function observerSlotChangesWithCallback(\n slot: HTMLSlotElement | null,\n callback: (hasContent: boolean) => void,\n) {\n if (!slot) return () => {};\n\n // Keep track of observers for current assigned nodes so we can reconnect\n let observers: MutationObserver[] = [];\n\n const observeAssignedNodes = () => {\n // disconnect previous observers\n observers.forEach(o => o.disconnect());\n observers = [];\n\n const assigned = slot.assignedNodes({ flatten: true }) || [];\n assigned.forEach(node => {\n const obs = new MutationObserver(() => {\n callback(hasMeaningfulContent(slot));\n });\n try {\n obs.observe(node as Node, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n observers.push(obs);\n } catch (e) {\n // ignore nodes that cannot be observed\n }\n });\n\n // initial check\n callback(hasMeaningfulContent(slot));\n };\n\n // When assigned nodes change (elements added/removed), the slot emits a slotchange\n // event — re-run observer setup so we track the new nodes. This fixes the case\n // where an element (e.g. <wc-icon>) is removed from light DOM: previously we\n // only observed the old node and wouldn't detect its removal.\n const onSlotChange = () => observeAssignedNodes();\n slot.addEventListener('slotchange', onSlotChange);\n\n // Start observing\n observeAssignedNodes();\n\n // Return a cleanup function so callers can disconnect observers when needed.\n return () => {\n observers.forEach(o => o.disconnect());\n slot.removeEventListener('slotchange', onSlotChange);\n };\n}\n"],"names":[],"mappings":"AAAM,SAAU,oBAAoB,CAAC,WAAmC,EAAA;AACtE,IAAA,MAAM,KAAK,GAAG,WAAW,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AAEjE,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AACrE,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,+BAA+B,CAC7C,IAA4B,EAC5B,QAAuC,EAAA;AAEvC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,MAAK,EAAE,CAAC;;IAG1B,IAAI,SAAS,GAAuB,EAAE;IAEtC,MAAM,oBAAoB,GAAG,MAAK;;AAEhC,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACtC,SAAS,GAAG,EAAE;AAEd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AAC5D,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,YAAA,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,MAAK;AACpC,gBAAA,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACtC,YAAA,CAAC,CAAC;AACF,YAAA,IAAI;AACF,gBAAA,GAAG,CAAC,OAAO,CAAC,IAAY,EAAE;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC;AACF,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACrB;YAAE,OAAO,CAAC,EAAE;;YAEZ;AACF,QAAA,CAAC,CAAC;;AAGF,QAAA,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACtC,IAAA,CAAC;;;;;AAMD,IAAA,MAAM,YAAY,GAAG,MAAM,oBAAoB,EAAE;AACjD,IAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;;AAGjD,IAAA,oBAAoB,EAAE;;AAGtB,IAAA,OAAO,MAAK;AACV,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC;AACtD,IAAA,CAAC;AACH;;;;"}
package/dist/option.js ADDED
@@ -0,0 +1,121 @@
1
+ import { i, _ as __decorate, I as IndividualComponent, a as i$1, A, b } from './IndividualComponent-Bdwyrvd6.js';
2
+ import { n } from './property-B49QQ8pS.js';
3
+ import { e } from './query-CHb9Ft_d.js';
4
+ import './base-Cl6v8-BZ.js';
5
+
6
+ /**
7
+ * @label Select Option
8
+ * @tag wc-option
9
+ * @rawTag option
10
+ *
11
+ * @summary A declarative option element for use inside wc-select.
12
+ *
13
+ * @example
14
+ * ```html
15
+ * <wc-select label="Fruit">
16
+ * <wc-option value="apple">Apple</wc-option>
17
+ * <wc-option value="banana">Banana</wc-option>
18
+ * </wc-select>
19
+ * ```
20
+ */
21
+ let SelectOptionElement = class SelectOptionElement extends i$1 {
22
+ constructor() {
23
+ super(...arguments);
24
+ /**
25
+ * The option's submitted value.
26
+ */
27
+ this.value = '';
28
+ /**
29
+ * Optional Material Symbol icon name shown before the label.
30
+ */
31
+ this.icon = '';
32
+ /**
33
+ * Disables the option so it cannot be selected.
34
+ */
35
+ this.disabled = false;
36
+ // ── Managed by wc-select ──────────────────────────────────────────────────
37
+ /** Reflects whether this option is currently selected. Set by wc-select. */
38
+ this.selected = false;
39
+ /**
40
+ * When true the menu stays open after selection (used for multi-select).
41
+ * Set by wc-select.
42
+ */
43
+ this.keepOpen = false;
44
+ /**
45
+ * When true the option is hidden and excluded from keyboard navigation
46
+ * because it does not match the current typeahead search query.
47
+ * Set by wc-select.
48
+ */
49
+ this.filtered = false;
50
+ }
51
+ /**
52
+ * Returns the inner `wc-menu-item` element.
53
+ * `wc-menu` discovers this via its `items` getter which checks `el.item`
54
+ * as a `MenuItem` proxy, so keyboard navigation and activation work
55
+ * without `wc-option` extending `MenuItem` directly.
56
+ */
57
+ get item() {
58
+ const el = this._menuItemEl;
59
+ // Narrow to MenuItem — the shadow DOM only ever contains a wc-menu-item
60
+ // (a MenuItem subclass), so this cast is safe by construction.
61
+ return el != null ? el : null;
62
+ }
63
+ render() {
64
+ return b `
65
+ <wc-menu-item
66
+ value=${this.value}
67
+ ?disabled=${this.disabled || this.filtered}
68
+ ?selected=${this.selected}
69
+ ?keep-open=${this.keepOpen}
70
+ >
71
+ ${this.icon
72
+ ? b `<wc-icon name=${this.icon} slot="start"></wc-icon>`
73
+ : A}
74
+ <slot>${this.value === '' ? 'None' : ''}</slot>
75
+ ${this.selected && this.keepOpen
76
+ ? b `<wc-icon
77
+ name="check"
78
+ slot="trailing-supporting-text"
79
+ ></wc-icon>`
80
+ : A}
81
+ </wc-menu-item>
82
+ `;
83
+ }
84
+ };
85
+ SelectOptionElement.styles = [
86
+ i `
87
+ :host {
88
+ display: contents;
89
+ }
90
+ :host([filtered]) {
91
+ display: none;
92
+ }
93
+ `,
94
+ ];
95
+ __decorate([
96
+ n({ type: String, reflect: true })
97
+ ], SelectOptionElement.prototype, "value", void 0);
98
+ __decorate([
99
+ n({ type: String, reflect: true })
100
+ ], SelectOptionElement.prototype, "icon", void 0);
101
+ __decorate([
102
+ n({ type: Boolean, reflect: true })
103
+ ], SelectOptionElement.prototype, "disabled", void 0);
104
+ __decorate([
105
+ n({ type: Boolean, reflect: true })
106
+ ], SelectOptionElement.prototype, "selected", void 0);
107
+ __decorate([
108
+ n({ type: Boolean, attribute: 'keep-open' })
109
+ ], SelectOptionElement.prototype, "keepOpen", void 0);
110
+ __decorate([
111
+ n({ type: Boolean, reflect: true })
112
+ ], SelectOptionElement.prototype, "filtered", void 0);
113
+ __decorate([
114
+ e('wc-menu-item')
115
+ ], SelectOptionElement.prototype, "_menuItemEl", void 0);
116
+ SelectOptionElement = __decorate([
117
+ IndividualComponent
118
+ ], SelectOptionElement);
119
+
120
+ export { SelectOptionElement };
121
+ //# sourceMappingURL=option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option.js","sources":["../../src/select/option.ts"],"sourcesContent":["import { css, html, LitElement, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport type { MenuItem } from '../menu/menu-item/menu-item.js';\nimport IndividualComponent from '@/IndividualComponent.js';\n\n/**\n * @label Select Option\n * @tag wc-option\n * @rawTag option\n *\n * @summary A declarative option element for use inside wc-select.\n *\n * @example\n * ```html\n * <wc-select label=\"Fruit\">\n * <wc-option value=\"apple\">Apple</wc-option>\n * <wc-option value=\"banana\">Banana</wc-option>\n * </wc-select>\n * ```\n */\n@IndividualComponent\nexport class SelectOptionElement extends LitElement {\n static override styles = [\n css`\n :host {\n display: contents;\n }\n :host([filtered]) {\n display: none;\n }\n `,\n ];\n\n /**\n * The option's submitted value.\n */\n @property({ type: String, reflect: true })\n value: string = '';\n\n /**\n * Optional Material Symbol icon name shown before the label.\n */\n @property({ type: String, reflect: true })\n icon: string = '';\n\n /**\n * Disables the option so it cannot be selected.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n // ── Managed by wc-select ──────────────────────────────────────────────────\n\n /** Reflects whether this option is currently selected. Set by wc-select. */\n @property({ type: Boolean, reflect: true })\n selected: boolean = false;\n\n /**\n * When true the menu stays open after selection (used for multi-select).\n * Set by wc-select.\n */\n @property({ type: Boolean, attribute: 'keep-open' })\n keepOpen: boolean = false;\n\n /**\n * When true the option is hidden and excluded from keyboard navigation\n * because it does not match the current typeahead search query.\n * Set by wc-select.\n */\n @property({ type: Boolean, reflect: true })\n filtered: boolean = false;\n\n @query('wc-menu-item')\n private readonly _menuItemEl?: HTMLElement;\n\n /**\n * Returns the inner `wc-menu-item` element.\n * `wc-menu` discovers this via its `items` getter which checks `el.item`\n * as a `MenuItem` proxy, so keyboard navigation and activation work\n * without `wc-option` extending `MenuItem` directly.\n */\n get item(): MenuItem | null {\n const el = this._menuItemEl;\n // Narrow to MenuItem — the shadow DOM only ever contains a wc-menu-item\n // (a MenuItem subclass), so this cast is safe by construction.\n return el != null ? (el as unknown as MenuItem) : null;\n }\n\n override render() {\n return html`\n <wc-menu-item\n value=${this.value}\n ?disabled=${this.disabled || this.filtered}\n ?selected=${this.selected}\n ?keep-open=${this.keepOpen}\n >\n ${this.icon\n ? html`<wc-icon name=${this.icon} slot=\"start\"></wc-icon>`\n : nothing}\n <slot>${this.value === '' ? 'None' : ''}</slot>\n ${this.selected && this.keepOpen\n ? html`<wc-icon\n name=\"check\"\n slot=\"trailing-supporting-text\"\n ></wc-icon>`\n : nothing}\n </wc-menu-item>\n `;\n }\n}\n"],"names":["LitElement","html","nothing","css","property","query"],"mappings":";;;;;AAKA;;;;;;;;;;;;;;AAcG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQA,GAAU,CAAA;AAA5C,IAAA,WAAA,GAAA;;AAYL;;AAEG;QAEH,IAAA,CAAA,KAAK,GAAW,EAAE;AAElB;;AAEG;QAEH,IAAA,CAAA,IAAI,GAAW,EAAE;AAEjB;;AAEG;QAEH,IAAA,CAAA,QAAQ,GAAY,KAAK;;;QAMzB,IAAA,CAAA,QAAQ,GAAY,KAAK;AAEzB;;;AAGG;QAEH,IAAA,CAAA,QAAQ,GAAY,KAAK;AAEzB;;;;AAIG;QAEH,IAAA,CAAA,QAAQ,GAAY,KAAK;IAuC3B;AAlCE;;;;;AAKG;AACH,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW;;;QAG3B,OAAO,EAAE,IAAI,IAAI,GAAI,EAA0B,GAAG,IAAI;IACxD;IAES,MAAM,GAAA;AACb,QAAA,OAAOC,CAAI,CAAA;;AAEC,cAAA,EAAA,IAAI,CAAC,KAAK;AACN,kBAAA,EAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AAC9B,kBAAA,EAAA,IAAI,CAAC,QAAQ;AACZ,mBAAA,EAAA,IAAI,CAAC,QAAQ;;AAExB,QAAA,EAAA,IAAI,CAAC;AACL,cAAEA,CAAI,CAAA,iBAAiB,IAAI,CAAC,IAAI,CAAA,wBAAA;AAChC,cAAEC,CAAO;gBACH,IAAI,CAAC,KAAK,KAAK,EAAE,GAAG,MAAM,GAAG,EAAE,CAAA;AACrC,QAAA,EAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;cACpBD,CAAI,CAAA,CAAA;;;AAGQ,uBAAA;AACd,cAAEC,CAAO;;KAEd;IACH;;AAtFgB,mBAAA,CAAA,MAAM,GAAG;AACvB,IAAAC,CAAG,CAAA;;;;;;;AAOF,IAAA,CAAA;AACF,CATqB;AAetB,UAAA,CAAA;IADCC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AACtB,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAMnB,UAAA,CAAA;IADCA,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AACvB,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAMlB,UAAA,CAAA;IADCA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAChB,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAM1B,UAAA,CAAA;IADCA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAChB,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAO1B,UAAA,CAAA;IADCA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;AACzB,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAQ1B,UAAA,CAAA;IADCA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAChB,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAGT,UAAA,CAAA;IADhBC,CAAK,CAAC,cAAc;AACsB,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AApDhC,mBAAmB,GAAA,UAAA,CAAA;IAD/B;AACY,CAAA,EAAA,mBAAmB,CAwF/B;;;;"}
@@ -0,0 +1,255 @@
1
+ import { i, _ as __decorate, I as IndividualComponent, a as i$1, b } from './IndividualComponent-Bdwyrvd6.js';
2
+ import { n } from './property-B49QQ8pS.js';
3
+
4
+ var css_248z = i`* {
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ .screen-reader-only {
9
+ display: none !important;
10
+ }
11
+
12
+ [hidden] {
13
+ display: none !important;
14
+ }
15
+
16
+ :host {
17
+ display: block;
18
+ }
19
+
20
+ .pagination {
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: flex-end;
24
+ gap: var(--spacing-200, 1rem);
25
+ background: var(--color-surface, #fff);
26
+ padding: var(--spacing-150, 0.75rem) var(--spacing-200, 1rem);
27
+ }
28
+ @media (max-width: 48rem) {
29
+ .pagination {
30
+ flex-wrap: wrap;
31
+ justify-content: space-between;
32
+ row-gap: var(--spacing-100, 0.5rem);
33
+ }
34
+ }
35
+ .pagination .page-size {
36
+ display: inline-flex;
37
+ align-items: center;
38
+ gap: var(--spacing-100, 0.5rem);
39
+ min-inline-size: max-content;
40
+ }
41
+ .pagination .page-size-label {
42
+ font-family: var(--typography-body-small-font-family);
43
+ font-size: var(--typography-body-small-font-size);
44
+ font-weight: var(--typography-body-small-font-weight);
45
+ line-height: var(--typography-body-small-line-height);
46
+ letter-spacing: var(--typography-body-small-letter-spacing);
47
+ color: var(--color-on-surface-variant);
48
+ white-space: nowrap;
49
+ }
50
+ .pagination .page-size-select {
51
+ inline-size: 5.5rem;
52
+ min-inline-size: 5.5rem;
53
+ --field-container-height: 2.5rem;
54
+ }
55
+ .pagination .pagination-item-count {
56
+ margin-inline-start: auto;
57
+ display: flex;
58
+ align-items: center;
59
+ }
60
+ @media (max-width: 48rem) {
61
+ .pagination .pagination-item-count {
62
+ order: 3;
63
+ margin-inline-start: 0;
64
+ inline-size: 100%;
65
+ }
66
+ }
67
+ .pagination .pagination-text {
68
+ font-family: var(--typography-body-medium-font-family);
69
+ font-size: var(--typography-body-medium-font-size);
70
+ font-weight: var(--typography-body-medium-font-weight);
71
+ line-height: var(--typography-body-medium-line-height);
72
+ letter-spacing: var(--typography-body-medium-letter-spacing);
73
+ color: var(--color-on-surface-variant);
74
+ }
75
+ .pagination .pagination-actions {
76
+ display: inline-flex;
77
+ align-items: center;
78
+ gap: var(--spacing-025, 0.125rem);
79
+ }
80
+ .pagination .nav-button {
81
+ --button-container-shape: 999px;
82
+ }`;
83
+
84
+ const DEFAULT_PAGE_SIZES = [10, 25, 50, 100];
85
+ /**
86
+ * @label Pagination
87
+ * @tag wc-pagination
88
+ * @rawTag pagination
89
+ * @summary A pagination control with page size selector, item count display, and previous/next navigation.
90
+ * @overview
91
+ * <p>The pagination component provides controls for navigating through paged data sets.</p>
92
+ *
93
+ * @fires {CustomEvent} page - Dispatched when the page or page size changes. Detail: `{ page, pageSize }`.
94
+ *
95
+ * @example
96
+ * ```html
97
+ * <wc-pagination style="width: 100%;" page="1" page-size="10" total-items="100"></wc-pagination>
98
+ * ```
99
+ * @tags navigation, data
100
+ */
101
+ let Pagination = class Pagination extends i$1 {
102
+ constructor() {
103
+ super(...arguments);
104
+ /**
105
+ * The current page number (1-based). Defaults to `1`.
106
+ */
107
+ this.page = 1;
108
+ /**
109
+ * The number of rows per page. Defaults to `10`.
110
+ */
111
+ this.pageSize = 10;
112
+ /**
113
+ * Total number of items.
114
+ */
115
+ this.totalItems = 0;
116
+ /**
117
+ * Supported page size options.
118
+ */
119
+ this.pageSizes = DEFAULT_PAGE_SIZES;
120
+ this.handlePreviousPage = () => {
121
+ this.setPage(this.page - 1);
122
+ };
123
+ this.handleNextPage = () => {
124
+ this.setPage(this.page + 1);
125
+ };
126
+ }
127
+ willUpdate(changedProperties) {
128
+ // Normalize page-size options so the select always has valid numeric values.
129
+ const normalizedPageSizes = [...new Set(this.pageSizes
130
+ .map(size => Number(size))
131
+ .filter(size => Number.isFinite(size) && size > 0)
132
+ .map(size => Math.trunc(size)))];
133
+ if (!normalizedPageSizes.length) {
134
+ normalizedPageSizes.push(...DEFAULT_PAGE_SIZES);
135
+ }
136
+ if (changedProperties.has('pageSizes') &&
137
+ (this.pageSizes.length !== normalizedPageSizes.length ||
138
+ this.pageSizes.some((size, index) => size !== normalizedPageSizes[index]))) {
139
+ this.pageSizes = normalizedPageSizes;
140
+ }
141
+ if (!this.pageSizes.includes(this.pageSize)) {
142
+ this.pageSize = this.pageSizes[0] ?? DEFAULT_PAGE_SIZES[0];
143
+ }
144
+ if (!Number.isFinite(this.totalItems) || this.totalItems < 0) {
145
+ this.totalItems = 0;
146
+ }
147
+ if (!Number.isFinite(this.page) || this.page < 1) {
148
+ this.page = 1;
149
+ }
150
+ const maxPage = this.getTotalPages();
151
+ if (this.page > maxPage) {
152
+ this.page = maxPage;
153
+ }
154
+ }
155
+ getTotalPages() {
156
+ if (this.totalItems <= 0)
157
+ return 1;
158
+ return Math.max(1, Math.ceil(this.totalItems / this.pageSize));
159
+ }
160
+ setPage(nextPage) {
161
+ const clampedPage = Math.min(Math.max(1, nextPage), this.getTotalPages());
162
+ if (clampedPage === this.page)
163
+ return;
164
+ this.page = clampedPage;
165
+ this.dispatchPageEvent();
166
+ }
167
+ handlePageSizeChange(event) {
168
+ const rawValue = event.detail?.value;
169
+ const parsedPageSize = Number.parseInt(rawValue ?? '', 10);
170
+ if (!Number.isFinite(parsedPageSize) || parsedPageSize <= 0) {
171
+ return;
172
+ }
173
+ this.pageSize = parsedPageSize;
174
+ this.page = 1;
175
+ this.dispatchPageEvent();
176
+ }
177
+ dispatchPageEvent() {
178
+ this.dispatchEvent(new CustomEvent('page', {
179
+ detail: { page: this.page, pageSize: this.pageSize },
180
+ bubbles: true,
181
+ composed: true,
182
+ }));
183
+ }
184
+ render() {
185
+ const startItem = this.totalItems === 0 ? 0 : this.pageSize * (this.page - 1) + 1;
186
+ const endItem = Math.min(this.pageSize * this.page, this.totalItems);
187
+ const isFirstPage = this.page === 1;
188
+ const isLastPage = this.pageSize * this.page >= this.totalItems;
189
+ return b `
190
+ <div class="pagination">
191
+ <div class="page-size">
192
+ <span class="page-size-label">Items per page:</span>
193
+ <wc-select
194
+ class="page-size-select"
195
+ .value=${String(this.pageSize)}
196
+ aria-label="Items per page"
197
+ @change=${this.handlePageSizeChange}
198
+ >
199
+ ${this.pageSizes.map(size => b `<wc-option value=${String(size)}>${size}</wc-option>`)}
200
+ </wc-select>
201
+ </div>
202
+
203
+ <div class="pagination-item-count">
204
+ <span class="pagination-text">
205
+ ${startItem} - ${endItem} of ${this.totalItems}
206
+ </span>
207
+ </div>
208
+
209
+ <div class="pagination-actions">
210
+ <wc-icon-button
211
+ class="nav-button"
212
+ color="secondary"
213
+ variant="text"
214
+ size="sm"
215
+ title="Previous page"
216
+ ?disabled=${isFirstPage}
217
+ @click=${this.handlePreviousPage}
218
+ >
219
+ <wc-icon name="keyboard_arrow_left"></wc-icon>
220
+ </wc-icon-button>
221
+ <wc-icon-button
222
+ class="nav-button"
223
+ color="secondary"
224
+ variant="text"
225
+ size="sm"
226
+ title="Next page"
227
+ ?disabled=${isLastPage}
228
+ @click=${this.handleNextPage}
229
+ >
230
+ <wc-icon name="keyboard_arrow_right"></wc-icon>
231
+ </wc-icon-button>
232
+ </div>
233
+ </div>
234
+ `;
235
+ }
236
+ };
237
+ Pagination.styles = [css_248z];
238
+ __decorate([
239
+ n({ type: Number })
240
+ ], Pagination.prototype, "page", void 0);
241
+ __decorate([
242
+ n({ type: Number, attribute: 'page-size' })
243
+ ], Pagination.prototype, "pageSize", void 0);
244
+ __decorate([
245
+ n({ type: Number, attribute: 'total-items' })
246
+ ], Pagination.prototype, "totalItems", void 0);
247
+ __decorate([
248
+ n({ type: Array, attribute: 'page-sizes' })
249
+ ], Pagination.prototype, "pageSizes", void 0);
250
+ Pagination = __decorate([
251
+ IndividualComponent
252
+ ], Pagination);
253
+
254
+ export { Pagination };
255
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sources":["../../src/pagination/pagination.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './pagination.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\nconst DEFAULT_PAGE_SIZES = [10, 25, 50, 100];\n\n/**\n * @label Pagination\n * @tag wc-pagination\n * @rawTag pagination\n * @summary A pagination control with page size selector, item count display, and previous/next navigation.\n * @overview\n * <p>The pagination component provides controls for navigating through paged data sets.</p>\n *\n * @fires {CustomEvent} page - Dispatched when the page or page size changes. Detail: `{ page, pageSize }`.\n *\n * @example\n * ```html\n * <wc-pagination style=\"width: 100%;\" page=\"1\" page-size=\"10\" total-items=\"100\"></wc-pagination>\n * ```\n * @tags navigation, data\n */\n@IndividualComponent\nexport class Pagination extends LitElement {\n static styles = [styles];\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items.\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number = 0;\n\n /**\n * Supported page size options.\n */\n @property({ type: Array, attribute: 'page-sizes' })\n pageSizes: number[] = DEFAULT_PAGE_SIZES;\n\n protected override willUpdate(\n changedProperties: PropertyValues<Pagination>,\n ): void {\n // Normalize page-size options so the select always has valid numeric values.\n const normalizedPageSizes = [...new Set(\n this.pageSizes\n .map(size => Number(size))\n .filter(size => Number.isFinite(size) && size > 0)\n .map(size => Math.trunc(size)),\n )];\n\n if (!normalizedPageSizes.length) {\n normalizedPageSizes.push(...DEFAULT_PAGE_SIZES);\n }\n\n if (\n changedProperties.has('pageSizes') &&\n (this.pageSizes.length !== normalizedPageSizes.length ||\n this.pageSizes.some((size, index) => size !== normalizedPageSizes[index]))\n ) {\n this.pageSizes = normalizedPageSizes;\n }\n\n if (!this.pageSizes.includes(this.pageSize)) {\n this.pageSize = this.pageSizes[0] ?? DEFAULT_PAGE_SIZES[0];\n }\n\n if (!Number.isFinite(this.totalItems) || this.totalItems < 0) {\n this.totalItems = 0;\n }\n\n if (!Number.isFinite(this.page) || this.page < 1) {\n this.page = 1;\n }\n\n const maxPage = this.getTotalPages();\n if (this.page > maxPage) {\n this.page = maxPage;\n }\n }\n\n private getTotalPages(): number {\n if (this.totalItems <= 0) return 1;\n return Math.max(1, Math.ceil(this.totalItems / this.pageSize));\n }\n\n private setPage(nextPage: number) {\n const clampedPage = Math.min(Math.max(1, nextPage), this.getTotalPages());\n if (clampedPage === this.page) return;\n this.page = clampedPage;\n this.dispatchPageEvent();\n }\n\n private handlePageSizeChange(event: CustomEvent<{ value?: string }>) {\n const rawValue = event.detail?.value;\n const parsedPageSize = Number.parseInt(rawValue ?? '', 10);\n\n if (!Number.isFinite(parsedPageSize) || parsedPageSize <= 0) {\n return;\n }\n\n this.pageSize = parsedPageSize;\n this.page = 1;\n this.dispatchPageEvent();\n }\n\n private handlePreviousPage = () => {\n this.setPage(this.page - 1);\n };\n\n private handleNextPage = () => {\n this.setPage(this.page + 1);\n };\n\n private dispatchPageEvent() {\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n render() {\n const startItem = this.totalItems === 0 ? 0 : this.pageSize * (this.page - 1) + 1;\n const endItem = Math.min(this.pageSize * this.page, this.totalItems);\n const isFirstPage = this.page === 1;\n const isLastPage = this.pageSize * this.page >= this.totalItems;\n\n return html`\n <div class=\"pagination\">\n <div class=\"page-size\">\n <span class=\"page-size-label\">Items per page:</span>\n <wc-select\n class=\"page-size-select\"\n .value=${String(this.pageSize)}\n aria-label=\"Items per page\"\n @change=${this.handlePageSizeChange}\n >\n ${this.pageSizes.map(\n size => html`<wc-option value=${String(size)}>${size}</wc-option>`,\n )}\n </wc-select>\n </div>\n\n <div class=\"pagination-item-count\">\n <span class=\"pagination-text\">\n ${startItem} - ${endItem} of ${this.totalItems}\n </span>\n </div>\n\n <div class=\"pagination-actions\">\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Previous page\"\n ?disabled=${isFirstPage}\n @click=${this.handlePreviousPage}\n >\n <wc-icon name=\"keyboard_arrow_left\"></wc-icon>\n </wc-icon-button>\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Next page\"\n ?disabled=${isLastPage}\n @click=${this.handleNextPage}\n >\n <wc-icon name=\"keyboard_arrow_right\"></wc-icon>\n </wc-icon-button>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { a as i, _ as __decorate, I as IndividualComponent, i as i$1, b } from './IndividualComponent-DUINtMGK.js';
2
- import { n } from './property-1psGvXOq.js';
3
- import { e } from './class-map-YU7g0o3B.js';
1
+ import { i, _ as __decorate, I as IndividualComponent, a as i$1, b } from './IndividualComponent-Bdwyrvd6.js';
2
+ import { n } from './property-B49QQ8pS.js';
3
+ import { e } from './class-map-DG7CA1et.js';
4
4
  import './directive-ZPhl09Yt.js';
5
5
 
6
6
  var css_248z = i`* {
@@ -11,6 +11,10 @@ var css_248z = i`* {
11
11
  display: none !important;
12
12
  }
13
13
 
14
+ [hidden] {
15
+ display: none !important;
16
+ }
17
+
14
18
  :host {
15
19
  position: fixed;
16
20
  top: 0;