@tmorrow/cre8-wc 2.0.7 → 2.0.8

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 (319) hide show
  1. package/a2ui/catalog +5 -5
  2. package/a2ui/catalog-kg.json +156 -20
  3. package/a2ui/catalog.json +393 -34
  4. package/a2ui/catalog.svg +2445 -2445
  5. package/a2ui/examples/compound-families.json +298 -0
  6. package/a2ui/examples/llm-observability.json +678 -650
  7. package/a2ui/generate-catalog.mjs +116 -3
  8. package/a2ui/inert-props.json +32 -0
  9. package/a2ui/render-audit.mjs +294 -0
  10. package/a2ui/renderer.d.ts +2 -1
  11. package/a2ui/renderer.js +1 -1
  12. package/a2ui/renderer.ts +1 -1
  13. package/a2ui/smoke-test.mjs +3 -3
  14. package/a2ui/stream/diff-test.mjs +299 -0
  15. package/a2ui/stream/diff.d.ts +28 -0
  16. package/a2ui/stream/diff.js +130 -0
  17. package/a2ui/stream/diff.ts +145 -0
  18. package/a2ui/stream/index.d.ts +11 -0
  19. package/a2ui/stream/index.js +11 -0
  20. package/a2ui/stream/index.ts +43 -0
  21. package/a2ui/stream/model.d.ts +66 -0
  22. package/a2ui/stream/model.js +429 -0
  23. package/a2ui/stream/model.ts +472 -0
  24. package/a2ui/stream/pointer.d.ts +34 -0
  25. package/a2ui/stream/pointer.js +146 -0
  26. package/a2ui/stream/pointer.ts +147 -0
  27. package/a2ui/stream/renderer.d.ts +51 -0
  28. package/a2ui/stream/renderer.js +282 -0
  29. package/a2ui/stream/renderer.ts +291 -0
  30. package/a2ui/stream/stream-test.mjs +592 -0
  31. package/a2ui/stream/types.d.ts +173 -0
  32. package/a2ui/stream/types.js +17 -0
  33. package/a2ui/stream/types.ts +127 -0
  34. package/cdn/cre8-wc.esm.js +3527 -3226
  35. package/cdn/cre8-wc.esm.js.map +1 -1
  36. package/cdn/cre8-wc.min.js +289 -289
  37. package/cdn/cre8-wc.min.js.map +1 -1
  38. package/dist/assets/{Changelog-Documentation-BguNswiM.js → Changelog-Documentation-CeOetLxK.js} +1 -1
  39. package/dist/assets/{Code-Guidelines-BM3dZyzL.js → Code-Guidelines-BjdezAjj.js} +1 -1
  40. package/dist/assets/{Color-6AOWCN3U-C4AEGNk3.js → Color-6AOWCN3U-DPFGZitI.js} +1 -1
  41. package/dist/assets/{Contributing-Guidelines-DZURVehh.js → Contributing-Guidelines-B1M2V1hW.js} +1 -1
  42. package/dist/assets/{DocsRenderer-JROSPFPF-DeZmCI9u.js → DocsRenderer-JROSPFPF-BBy8KWNl.js} +1 -1
  43. package/dist/assets/{Tokens-Documentation-ZecGbtQg.js → Tokens-Documentation-CdTxFDLe.js} +1 -1
  44. package/dist/assets/{WithTooltip-7X4HQR7L-2Hfrkir-.js → WithTooltip-7X4HQR7L-DZzTNMQ7.js} +1 -1
  45. package/dist/assets/{accordion-item.stories-D-MjrX5G.js → accordion-item.stories-Bl26JlHp.js} +1 -9
  46. package/dist/assets/{accordion.stories-icgNa1dl.js → accordion.stories-DjoLApQw.js} +3 -11
  47. package/dist/assets/{alert.stories-BzDaXtj-.js → alert.stories-pO1y3YCQ.js} +15 -31
  48. package/dist/assets/{badge-C5wOWgyg.js → badge-BTxW3bN2.js} +3 -11
  49. package/dist/assets/{badge.stories-5GfB4jVI.js → badge.stories-vqh63RJ2.js} +1 -1
  50. package/dist/assets/{band.stories-DhXaP_kL.js → band.stories-CjKRppSb.js} +1 -9
  51. package/dist/assets/{blocks-DhUVut8Z.js → blocks-1be_-L6v.js} +5 -5
  52. package/dist/assets/{breadcrumbs.stories-CrPUBVk1.js → breadcrumbs.stories-Doyfy3V9.js} +2 -18
  53. package/dist/assets/{button-CJL8yzAT.js → button-CgaWukz0.js} +1 -9
  54. package/dist/assets/{button-group-BgwgtSFC.js → button-group-G7qN4MwM.js} +1 -9
  55. package/dist/assets/{button-group.stories-W-07gO63.js → button-group.stories-cL3Kay6M.js} +1 -1
  56. package/dist/assets/{button.stories-BPzJ-sCv.js → button.stories-C9HSpxWb.js} +6 -6
  57. package/dist/assets/{card.stories-mlFGY2Xn.js → card.stories-BbU8YymD.js} +3 -11
  58. package/dist/assets/{chart.stories-C8yuHHeK.js → chart.stories-BL4FxIA_.js} +1 -1
  59. package/dist/assets/{checkbox-field-item-iHcdmTNw.js → checkbox-field-item-DIMHcWM0.js} +1 -9
  60. package/dist/assets/{checkbox-field-item.stories-D1aVLDXn.js → checkbox-field-item.stories-XbB4x_lO.js} +1 -1
  61. package/dist/assets/{checkbox-field.stories-BoVB2jCx.js → checkbox-field.stories-YnqFUI4K.js} +2 -10
  62. package/dist/assets/{cre8-element-DfmMtHJO.js → cre8-element-B35i4Lyg.js} +1 -1
  63. package/dist/assets/{cre8-form-element-bQpK8UYN.js → cre8-form-element-Cfc5VeYV.js} +1 -1
  64. package/dist/assets/{danger-button.stories-Cb4ljnhQ.js → danger-button.stories-xh25hmfd.js} +1 -9
  65. package/dist/assets/{date-picker.stories-Cje3qk8D.js → date-picker.stories-DD_ctzEF.js} +1 -49
  66. package/dist/assets/{divider-B_PXBGWD.js → divider-xZ2KARHf.js} +2 -10
  67. package/dist/assets/{divider.stories-CtfeBqVV.js → divider.stories-Bk9oF-OV.js} +1 -1
  68. package/dist/assets/{dropdown-Cgwne34I.js → dropdown-BEP5x3CW.js} +6 -22
  69. package/dist/assets/{dropdown-item.stories-pXkDLRuv.js → dropdown-item.stories-Iaw_UrEP.js} +1 -1
  70. package/dist/assets/{dropdown.stories-DZnmHieY.js → dropdown.stories-B0OlKD7h.js} +1 -1
  71. package/dist/assets/{example-drug-card.stories-DTzLXTFx.js → example-drug-card.stories-Bp5JIeE_.js} +1 -1
  72. package/dist/assets/{f-po-C2WpbOFJ.js → f-po-BdPzDRD-.js} +1 -1
  73. package/dist/assets/{feature.stories-DffXdJch.js → feature.stories-DYE1Js70.js} +1 -9
  74. package/dist/assets/{field-DzYRqQb2.js → field-BpUYyRW1.js} +1 -9
  75. package/dist/assets/{field-note-DKXZiXLU.js → field-note-fccBckVl.js} +3 -11
  76. package/dist/assets/{field-note.stories-DS_0bQul.js → field-note.stories-BH9AZMbF.js} +1 -1
  77. package/dist/assets/{field.stories-BvXn0oG6.js → field.stories-BQPtmziK.js} +1 -1
  78. package/dist/assets/{footer.stories-C3ZibisU.js → footer.stories-DCWEciqD.js} +1 -9
  79. package/dist/assets/{form-example.stories-C-TuOeF2.js → form-example.stories-9IDC0AgX.js} +1 -1
  80. package/dist/assets/{formatter-L2YTDE3Q-CJVnxOUW.js → formatter-L2YTDE3Q-B9u1AOWn.js} +1 -1
  81. package/dist/assets/{global-nav-item-xQL7wVjY.js → global-nav-item-T4htN-yO.js} +6 -14
  82. package/dist/assets/{global-nav-item.stories-Dp9TE3aR.js → global-nav-item.stories-2dWRfCXv.js} +1 -1
  83. package/dist/assets/{global-nav.stories-B5Nk8JZ0.js → global-nav.stories-Fh1gScqg.js} +2 -10
  84. package/dist/assets/{grid-DYgnZBsd.js → grid-C5CKMXNe.js} +3 -19
  85. package/dist/assets/{grid.stories-BFiXTq2C.js → grid.stories-BLmCNdeA.js} +1 -1
  86. package/dist/assets/{header.stories-D1f7xhjV.js → header.stories-BkDrjJtj.js} +1 -9
  87. package/dist/assets/{heading-485Jz7JZ.js → heading-Dbka33DK.js} +2 -10
  88. package/dist/assets/{heading.stories-gPF_SmTc.js → heading.stories-Be40_bmG.js} +1 -1
  89. package/dist/assets/{hero.stories-BHlFNdvF.js → hero.stories-vRu7PZG9.js} +1 -9
  90. package/dist/assets/{icon-DeTLDzTS.js → icon-ChfRWXWy.js} +2 -10
  91. package/dist/assets/{icon-description-o-YaiEjK.js → icon-description-BBSwDykJ.js} +1 -1
  92. package/dist/assets/{icon-description.stories-BdPRvEwe.js → icon-description.stories-Cg6ekOme.js} +1 -1
  93. package/dist/assets/{icon.stories-BxWpqxT5.js → icon.stories-Cj4U7L5G.js} +1 -1
  94. package/dist/assets/if-defined-Bxnzk64Q.js +1 -0
  95. package/dist/assets/{iframe-dHvya7sk.js → iframe-BNJP6ovU.js} +35 -35
  96. package/dist/assets/{inline-alert.stories-FH0bQ0jh.js → inline-alert.stories-CygBYI02.js} +1 -9
  97. package/dist/assets/{layout-container.stories-D6Z6Kx78.js → layout-container.stories-TMyIJteJ.js} +2 -10
  98. package/dist/assets/{layout.stories-CNYuwC_r.js → layout.stories-ylRM-ANL.js} +7 -23
  99. package/dist/assets/{linelength-container.stories-pCRXZvxS.js → linelength-container.stories-Br2v8jXE.js} +1 -9
  100. package/dist/assets/{link-BpCiLxNW.js → link-CRE0Eqdo.js} +1 -9
  101. package/dist/assets/{link-list.stories-12vsAa1P.js → link-list.stories--y-urrVo.js} +7 -23
  102. package/dist/assets/{link.stories-DAoQtY4_.js → link.stories-C3WQOgkY.js} +2 -2
  103. package/dist/assets/{list.stories-D0N3yBIf.js → list.stories-Bd2bxkxn.js} +7 -23
  104. package/dist/assets/{loading-spinner-g6iJajXH.js → loading-spinner-C52KNq6y.js} +4 -12
  105. package/dist/assets/{loading-spinner.stories-B6_mgPxB.js → loading-spinner.stories-DPRGEeHT.js} +1 -1
  106. package/dist/assets/{logo.stories-BvMwN2qg.js → logo.stories-2LBqqraT.js} +1 -9
  107. package/dist/assets/{main.stories-pL4zefbs.js → main.stories-BQzD7iWD.js} +2 -10
  108. package/dist/assets/{medication-card.stories-DK1XGJic.js → medication-card.stories-Wc-hA0-s.js} +5 -5
  109. package/dist/assets/{medication-form.stories-Bj5dLp5S.js → medication-form.stories-DfFOCDaU.js} +1 -1
  110. package/dist/assets/{modal-CO0M4e_8.js → modal-CCfbY4fF.js} +1 -9
  111. package/dist/assets/{modal-BNu8xy08.js → modal-GglWRNJp.js} +1 -1
  112. package/dist/assets/{modal.stories-CHYBrq_E.js → modal.stories-CpybCs79.js} +1 -1
  113. package/dist/assets/{multi-select.stories-C9XXsWio.js → multi-select.stories-BhzEKRui.js} +1 -9
  114. package/dist/assets/{nav-container.stories-DU9fhvDu.js → nav-container.stories-Be1YlegP.js} +3 -11
  115. package/dist/assets/{page-header.stories-BrstKiEY.js → page-header.stories-BOVLQ0YF.js} +1 -9
  116. package/dist/assets/{pagination.stories-Bw2M2iOn.js → pagination.stories-D62sa_1K.js} +9 -25
  117. package/dist/assets/{percent-bar.stories-UQRXYUqd.js → percent-bar.stories-CYi4El7T.js} +1 -9
  118. package/dist/assets/{popover.stories-ZkwrRFpR.js → popover.stories-B9O8F4yv.js} +1 -9
  119. package/dist/assets/{primary-nav.stories-wqOKwgQn.js → primary-nav.stories-Bt-o7h45.js} +1 -17
  120. package/dist/assets/{progress-meter-TzASasu0.js → progress-meter-Dit59091.js} +1 -9
  121. package/dist/assets/{progress-meter.stories-qfJALZf8.js → progress-meter.stories-CYnOCmjo.js} +1 -1
  122. package/dist/assets/{progress-steps-item-KvW1d_7L.js → progress-steps-item-CWJsad0s.js} +1 -9
  123. package/dist/assets/{progress-steps-item.stories-uOn6tJ1W.js → progress-steps-item.stories-ePn_6bPn.js} +1 -1
  124. package/dist/assets/{progress-steps.stories-CKFPx8D0.js → progress-steps.stories-CblrEcXF.js} +1 -9
  125. package/dist/assets/{radio-field-item-CTaR50XR.js → radio-field-item-Bm-0RWPe.js} +5 -21
  126. package/dist/assets/{radio-field-item.stories-DQSLj8W1.js → radio-field-item.stories-y_TrTRIW.js} +1 -1
  127. package/dist/assets/{radio-field.stories-Btmc_Iep.js → radio-field.stories-CSWrbUrn.js} +1 -1
  128. package/dist/assets/{remove-tag-BSEZ7VT8.js → remove-tag-lCr57c5r.js} +1 -9
  129. package/dist/assets/{remove-tag.stories-diRKi7Ua.js → remove-tag.stories-CDfwCdvZ.js} +1 -1
  130. package/dist/assets/{request-prescription.stories-DQvra7ia.js → request-prescription.stories-O4zqokfb.js} +1 -1
  131. package/dist/assets/{sample-modal.stories-deE1EBfZ.js → sample-modal.stories-BZ4N2R2Z.js} +1 -1
  132. package/dist/assets/{section.stories-DF4mcy2O.js → section.stories-D_1InThX.js} +1 -9
  133. package/dist/assets/{select-tile-D-C8oSrm.js → select-tile-BqqB3ZtE.js} +2 -10
  134. package/dist/assets/{select-tile-list.stories-vsBQUIcl.js → select-tile-list.stories-Di4ILgV8.js} +1 -9
  135. package/dist/assets/{select-tile.stories-CqHzN5fc.js → select-tile.stories-D3h_6zlV.js} +6 -6
  136. package/dist/assets/{select.stories-8aOGxTtr.js → select.stories-BB2phP9A.js} +1 -9
  137. package/dist/assets/{skeleton-loader.stories-CwR2-aC5.js → skeleton-loader.stories-y4uml_kV.js} +5 -13
  138. package/dist/assets/{split-button.stories-CyfdrK4u.js → split-button.stories-C_82I4ME.js} +2 -10
  139. package/dist/assets/{spread-BPiNgQQF.js → spread-CnPic3C2.js} +1 -1
  140. package/dist/assets/state-DkQhleoO.js +1 -0
  141. package/dist/assets/{submenu.stories-CDhNzZzh.js → submenu.stories-UDtaREr1.js} +2 -18
  142. package/dist/assets/{syntaxhighlighter-T5IQBZDB-BzI6WxUR.js → syntaxhighlighter-T5IQBZDB-D-I_s_yD.js} +1 -1
  143. package/dist/assets/{table-header-CfcchoYz.js → table-header-2837i43H.js} +3 -51
  144. package/dist/assets/{table-object.stories-Bd5qdfMU.js → table-object.stories-D4KoI-wA.js} +1 -9
  145. package/dist/assets/{table.stories-DxuBe9dJ.js → table.stories-DUJDibEp.js} +1 -1
  146. package/dist/assets/{tabs.stories-Cpc3OHJx.js → tabs.stories-C06SngOF.js} +5 -29
  147. package/dist/assets/{tag-list.stories-BmyCmrTF.js → tag-list.stories-Du-IoYzu.js} +2 -10
  148. package/dist/assets/{tag-vQFuZneb.js → tag-oHGdclJl.js} +1 -9
  149. package/dist/assets/{tag.stories-DGzrNUbb.js → tag.stories-C5D5IbuK.js} +1 -1
  150. package/dist/assets/{tertiary-nav.stories-D4q5K-am.js → tertiary-nav.stories-B1GU8Zi4.js} +3 -19
  151. package/dist/assets/{text-link-4qLRIeJB.js → text-link-B3m3KEqY.js} +1 -9
  152. package/dist/assets/{text-link.stories-D6BRm2I5.js → text-link.stories-4O6qn82H.js} +1 -1
  153. package/dist/assets/{text-passage-DGaI5i2I.js → text-passage-xQVosjOr.js} +3 -19
  154. package/dist/assets/{text-passage.stories-DkmXVUhH.js → text-passage.stories-Da1nspwG.js} +1 -1
  155. package/dist/assets/{tooltip.stories-B7ADDq7o.js → tooltip.stories-DLKyyeKn.js} +6 -14
  156. package/dist/assets/{utility-nav.stories-ffXVvyLp.js → utility-nav.stories-B6xBFe7z.js} +5 -21
  157. package/dist/design-tokens/brands/cre8/css/tokens_brand.css +1 -1
  158. package/dist/design-tokens/core/scss/theming/component.css +1 -1
  159. package/dist/design-tokens/core/scss/theming/variables.css +1 -7
  160. package/dist/design-tokens/core/scss/theming/variables.scss +0 -11
  161. package/dist/icons/cre8-icons.svg +1 -1
  162. package/dist/iframe.html +1 -24
  163. package/dist/index.html +25 -77
  164. package/dist/project.json +1 -1
  165. package/lib/a2ui/renderer.d.ts +2 -1
  166. package/lib/a2ui/renderer.d.ts.map +1 -1
  167. package/lib/a2ui/renderer.js +1 -1
  168. package/lib/a2ui/renderer.js.map +1 -1
  169. package/lib/a2ui/stream/diff.d.ts +29 -0
  170. package/lib/a2ui/stream/diff.d.ts.map +1 -0
  171. package/lib/a2ui/stream/diff.js +131 -0
  172. package/lib/a2ui/stream/diff.js.map +1 -0
  173. package/lib/a2ui/stream/index.d.ts +12 -0
  174. package/lib/a2ui/stream/index.d.ts.map +1 -0
  175. package/lib/a2ui/stream/index.js +12 -0
  176. package/lib/a2ui/stream/index.js.map +1 -0
  177. package/lib/a2ui/stream/model.d.ts +67 -0
  178. package/lib/a2ui/stream/model.d.ts.map +1 -0
  179. package/lib/a2ui/stream/model.js +423 -0
  180. package/lib/a2ui/stream/model.js.map +1 -0
  181. package/lib/a2ui/stream/pointer.d.ts +35 -0
  182. package/lib/a2ui/stream/pointer.d.ts.map +1 -0
  183. package/lib/a2ui/stream/pointer.js +147 -0
  184. package/lib/a2ui/stream/pointer.js.map +1 -0
  185. package/lib/a2ui/stream/renderer.d.ts +52 -0
  186. package/lib/a2ui/stream/renderer.d.ts.map +1 -0
  187. package/lib/a2ui/stream/renderer.js +279 -0
  188. package/lib/a2ui/stream/renderer.js.map +1 -0
  189. package/lib/a2ui/stream/types.d.ts +174 -0
  190. package/lib/a2ui/stream/types.d.ts.map +1 -0
  191. package/lib/a2ui/stream/types.js +18 -0
  192. package/lib/a2ui/stream/types.js.map +1 -0
  193. package/lib/components/accordion/accordion.d.ts +15 -0
  194. package/lib/components/accordion/accordion.d.ts.map +1 -1
  195. package/lib/components/accordion/accordion.js +23 -0
  196. package/lib/components/accordion/accordion.js.map +1 -1
  197. package/lib/components/badge/badge.d.ts +4 -17
  198. package/lib/components/badge/badge.d.ts.map +1 -1
  199. package/lib/components/badge/badge.js +0 -15
  200. package/lib/components/badge/badge.js.map +1 -1
  201. package/lib/components/breadcrumbs/breadcrumbs.d.ts +14 -0
  202. package/lib/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  203. package/lib/components/breadcrumbs/breadcrumbs.js +21 -0
  204. package/lib/components/breadcrumbs/breadcrumbs.js.map +1 -1
  205. package/lib/components/chart/chart.d.ts +3 -3
  206. package/lib/components/chart/chart.js +6 -6
  207. package/lib/components/chart/chart.js.map +1 -1
  208. package/lib/components/checkbox-field/checkbox-field.d.ts +19 -0
  209. package/lib/components/checkbox-field/checkbox-field.d.ts.map +1 -1
  210. package/lib/components/checkbox-field/checkbox-field.js +28 -0
  211. package/lib/components/checkbox-field/checkbox-field.js.map +1 -1
  212. package/lib/components/cre8-element.d.ts +19 -0
  213. package/lib/components/cre8-element.d.ts.map +1 -1
  214. package/lib/components/cre8-element.js +51 -2
  215. package/lib/components/cre8-element.js.map +1 -1
  216. package/lib/components/divider/divider.d.ts +1 -1
  217. package/lib/components/divider/divider.d.ts.map +1 -1
  218. package/lib/components/divider/divider.js.map +1 -1
  219. package/lib/components/dropdown/dropdown.d.ts +13 -0
  220. package/lib/components/dropdown/dropdown.d.ts.map +1 -1
  221. package/lib/components/dropdown/dropdown.js +19 -0
  222. package/lib/components/dropdown/dropdown.js.map +1 -1
  223. package/lib/components/dropdown-item/dropdown-item.d.ts +1 -1
  224. package/lib/components/dropdown-item/dropdown-item.js +2 -2
  225. package/lib/components/dropdown-item/dropdown-item.js.map +1 -1
  226. package/lib/components/heading/heading.d.ts +3 -5
  227. package/lib/components/heading/heading.d.ts.map +1 -1
  228. package/lib/components/heading/heading.js +2 -4
  229. package/lib/components/heading/heading.js.map +1 -1
  230. package/lib/components/link-list/link-list.d.ts +19 -0
  231. package/lib/components/link-list/link-list.d.ts.map +1 -1
  232. package/lib/components/link-list/link-list.js +19 -0
  233. package/lib/components/link-list/link-list.js.map +1 -1
  234. package/lib/components/list/list.d.ts +13 -0
  235. package/lib/components/list/list.d.ts.map +1 -1
  236. package/lib/components/list/list.js +15 -0
  237. package/lib/components/list/list.js.map +1 -1
  238. package/lib/components/modal/modal.d.ts +2 -2
  239. package/lib/components/modal/modal.js +2 -2
  240. package/lib/components/modal/modal.js.map +1 -1
  241. package/lib/components/multi-select/multi-select.d.ts +2 -2
  242. package/lib/components/multi-select/multi-select.js +5 -5
  243. package/lib/components/multi-select/multi-select.js.map +1 -1
  244. package/lib/components/pagination/pagination.d.ts +1 -1
  245. package/lib/components/pagination/pagination.js +2 -2
  246. package/lib/components/pagination/pagination.js.map +1 -1
  247. package/lib/components/percent-bar/percent-bar.d.ts +2 -0
  248. package/lib/components/percent-bar/percent-bar.d.ts.map +1 -1
  249. package/lib/components/percent-bar/percent-bar.js +3 -1
  250. package/lib/components/percent-bar/percent-bar.js.map +1 -1
  251. package/lib/components/popover/popover.d.ts +6 -7
  252. package/lib/components/popover/popover.d.ts.map +1 -1
  253. package/lib/components/popover/popover.js +4 -4
  254. package/lib/components/popover/popover.js.map +1 -1
  255. package/lib/components/progress-meter/progress-meter.d.ts +0 -8
  256. package/lib/components/progress-meter/progress-meter.d.ts.map +1 -1
  257. package/lib/components/progress-meter/progress-meter.js +0 -7
  258. package/lib/components/progress-meter/progress-meter.js.map +1 -1
  259. package/lib/components/progress-steps/progress-steps.d.ts +16 -0
  260. package/lib/components/progress-steps/progress-steps.d.ts.map +1 -1
  261. package/lib/components/progress-steps/progress-steps.js +25 -0
  262. package/lib/components/progress-steps/progress-steps.js.map +1 -1
  263. package/lib/components/progress-steps-item/progress-steps-item.d.ts +1 -3
  264. package/lib/components/progress-steps-item/progress-steps-item.d.ts.map +1 -1
  265. package/lib/components/progress-steps-item/progress-steps-item.js +0 -1
  266. package/lib/components/progress-steps-item/progress-steps-item.js.map +1 -1
  267. package/lib/components/radio-field/radio-field.d.ts +33 -0
  268. package/lib/components/radio-field/radio-field.d.ts.map +1 -1
  269. package/lib/components/radio-field/radio-field.js +62 -0
  270. package/lib/components/radio-field/radio-field.js.map +1 -1
  271. package/lib/components/remove-tag/remove-tag.d.ts +1 -1
  272. package/lib/components/remove-tag/remove-tag.js +3 -3
  273. package/lib/components/remove-tag/remove-tag.js.map +1 -1
  274. package/lib/components/split-button/split-button.d.ts +3 -0
  275. package/lib/components/split-button/split-button.d.ts.map +1 -1
  276. package/lib/components/split-button/split-button.js +5 -2
  277. package/lib/components/split-button/split-button.js.map +1 -1
  278. package/lib/components/tab/tab.d.ts +1 -1
  279. package/lib/components/tab/tab.js +3 -3
  280. package/lib/components/tab/tab.js.map +1 -1
  281. package/lib/components/table/table.d.ts +36 -0
  282. package/lib/components/table/table.d.ts.map +1 -1
  283. package/lib/components/table/table.js +55 -0
  284. package/lib/components/table/table.js.map +1 -1
  285. package/lib/components/tabs/tabs.d.ts +20 -3
  286. package/lib/components/tabs/tabs.d.ts.map +1 -1
  287. package/lib/components/tabs/tabs.js +33 -5
  288. package/lib/components/tabs/tabs.js.map +1 -1
  289. package/lib/components/tag-list/tag-list.d.ts +17 -0
  290. package/lib/components/tag-list/tag-list.d.ts.map +1 -1
  291. package/lib/components/tag-list/tag-list.js +25 -0
  292. package/lib/components/tag-list/tag-list.js.map +1 -1
  293. package/lib/components/tooltip/tooltip.d.ts +2 -2
  294. package/lib/components/tooltip/tooltip.js +4 -4
  295. package/lib/components/tooltip/tooltip.js.map +1 -1
  296. package/lib/components/utils/light-children.d.ts +40 -0
  297. package/lib/components/utils/light-children.d.ts.map +1 -0
  298. package/lib/components/utils/light-children.js +100 -0
  299. package/lib/components/utils/light-children.js.map +1 -0
  300. package/lib/directives/if-truthy.d.ts +1 -1
  301. package/lib/light-children-TlEXev5S.js +39 -0
  302. package/lib/scripts/generate-react-wrappers.d.ts +8 -1
  303. package/lib/scripts/generate-react-wrappers.d.ts.map +1 -1
  304. package/lib/scripts/generate-react-wrappers.js +45 -1
  305. package/lib/scripts/generate-react-wrappers.js.map +1 -1
  306. package/mcp-manifest.json +162 -52
  307. package/package.json +11 -4
  308. package/react-manifest.json +153 -47
  309. package/dist/assets/if-defined-HKKhGupN.js +0 -1
  310. package/dist/assets/iframe-CWwoGI65.css +0 -1
  311. package/dist/assets/state-CfuknrX8.js +0 -1
  312. package/dist/fonts/PlusJakartaSans-Bold.woff2 +0 -0
  313. package/dist/fonts/PlusJakartaSans-Medium.woff2 +0 -0
  314. package/dist/fonts/PlusJakartaSans-Regular.woff2 +0 -0
  315. package/dist/fonts/PlusJakartaSans-SemiBold.woff2 +0 -0
  316. package/dist/logo.svg +0 -1
  317. package/dist/sb-addons/storybook-4/manager-bundle.js +0 -8
  318. /package/dist/icons/{express-scripts copy.svg → pharmacy copy.svg} +0 -0
  319. /package/dist/icons/{express-scripts.svg → pharmacy.svg} +0 -0
@@ -32,7 +32,7 @@ export declare class Cre8Heading extends Cre8Element {
32
32
  * <li>**title-default** renders a heading with the heading title-default preset treatment</li>
33
33
  * <li>**title-small** renders a heading with the heading title-small preset treatment</li>
34
34
  * <li>**label-large** renders a heading with the label-large preset treatment</li>
35
- * <li>**label** renders a heading with the label preset treatment</li>
35
+ * <li>**label-default** renders a heading with the label-default preset treatment</li>
36
36
  * <li>**label-small** renders a heading with the label-small preset treatment</li>
37
37
  * <li>**meta-large** renders a heading with the meta-large preset treatment</li>
38
38
  * <li>**meta-default** renders a heading with the meta-default preset treatment</li>
@@ -47,15 +47,13 @@ export declare class Cre8Heading extends Cre8Element {
47
47
  * <cre8-text-passage size="small">
48
48
  * <ul>
49
49
  * <li>**h1** renders an `h1` tag</li>
50
- * <li>**h2** renders an `h2` tag. This is the default</li>
50
+ * <li>**h2** renders an `h2` tag</li>
51
51
  * <li>**h3** renders an `h3` tag</li>
52
52
  * <li>**h4** renders an `h4` tag</li>
53
- * <li>**h5** renders an `h5` tag</li>
53
+ * <li>**h5** renders an `h5` tag. This is the default</li>
54
54
  * <li>**h6** renders an `h6` tag</li>
55
55
  * </ul>
56
56
  * </cre8-text-passage>
57
- *
58
- * @attr{string}
59
57
  */
60
58
  tagVariant: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
61
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../components/heading/heading.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG1C;;;;;;;;;;;;;;;;GAgBG;AACP,qBAAa,WAAY,SAAQ,WAAW;IACxC,MAAM,CAAC,MAAM,4BAAY;IAEzB;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEC,IAAI,CAAC,EACH,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,eAAe,GACf,aAAa,GACb,aAAa,GACb,eAAe,GACf,aAAa,GACb,YAAY,GACZ,cAAc,GACd,YAAY,CAAC;IAEnB;;;;;;;;;;;;;;;OAeG;IAEC,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAE/D;;;;OAIG;IAEC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IAEC,UAAU,CAAC,EAAE,OAAO,CAAC;IAEzB,MAAM;CAwDT;AAOD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAC;KAC/B;CACJ;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../components/heading/heading.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG1C;;;;;;;;;;;;;;;;GAgBG;AACP,qBAAa,WAAY,SAAQ,WAAW;IACxC,MAAM,CAAC,MAAM,4BAAY;IAEzB;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEC,IAAI,CAAC,EACH,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,eAAe,GACf,aAAa,GACb,aAAa,GACb,eAAe,GACf,aAAa,GACb,YAAY,GACZ,cAAc,GACd,YAAY,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IAEC,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAE/D;;;;OAIG;IAEC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IAEC,UAAU,CAAC,EAAE,OAAO,CAAC;IAEzB,MAAM;CAwDT;AAOD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAC;KAC/B;CACJ;AAED,eAAe,WAAW,CAAC"}
@@ -34,15 +34,13 @@ export class Cre8Heading extends Cre8Element {
34
34
  * <cre8-text-passage size="small">
35
35
  * <ul>
36
36
  * <li>**h1** renders an `h1` tag</li>
37
- * <li>**h2** renders an `h2` tag. This is the default</li>
37
+ * <li>**h2** renders an `h2` tag</li>
38
38
  * <li>**h3** renders an `h3` tag</li>
39
39
  * <li>**h4** renders an `h4` tag</li>
40
- * <li>**h5** renders an `h5` tag</li>
40
+ * <li>**h5** renders an `h5` tag. This is the default</li>
41
41
  * <li>**h6** renders an `h6` tag</li>
42
42
  * </ul>
43
43
  * </cre8-text-passage>
44
- *
45
- * @attr{string}
46
44
  */
47
45
  this.tagVariant = 'h5';
48
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../../components/heading/heading.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Cre8Element } from '../cre8-element';\nimport styles from './heading.styles.js';\n\n /**\n * HTML headings are titles or subtitles that you want to display on a webpage. The H1 is the most important and H6\n * is the least important in the content hierarchy.\n *\n * # How to Use\n * 1. The cre8-heading tag wraps around one of the six native HTML \"h\" tags, depending on your chosen variation.\n * 2. There are two main use cases for using this component:\n * text passage headings and Components with a title (i.e. modal, card or alert)\n * 3. There will be instances when the design requires the heading text to have the brand color applied\n * in which case you should set the [brandColor](?path=/story/cre8-components-heading--brand-color)\n * attribute to true on the cre8-heading tag.\n * 4. For dark backgrounds, add the [inverted](?path=/story/cre8-components-heading--inverted)\n * attribute to the tag for white text.\n *\n *\n * @slot - The heading text content\n */\nexport class Cre8Heading extends Cre8Element {\n static styles = [styles];\n\n /**\n * Heading type\n * <cre8-text-passage size=\"small\">\n * <ul>\n * <li>**display-default** renders a heading with the heading display-default preset treatment</li>\n * <li>**display-small** renders a heading with the heading display-small preset treatment</li>\n * <li>**headline-large** renders a heading with the heading headline-large preset treatment</li>\n * <li>**headline-default** renders a heading with the heading headline-default preset treatment</li>\n * <li>**headline-small** renders a heading with the heading headline-small preset treatment</li>\n * <li>**title-xlarge** renders a heading with the heading title-xlarge preset treatment</li>\n * <li>**title-large** renders a heading with the heading title-large preset treatment</li>\n * <li>**title-default** renders a heading with the heading title-default preset treatment</li>\n * <li>**title-small** renders a heading with the heading title-small preset treatment</li>\n * <li>**label-large** renders a heading with the label-large preset treatment</li>\n * <li>**label** renders a heading with the label preset treatment</li>\n * <li>**label-small** renders a heading with the label-small preset treatment</li>\n * <li>**meta-large** renders a heading with the meta-large preset treatment</li>\n * <li>**meta-default** renders a heading with the meta-default preset treatment</li>\n * <li>**meta-small** renders a heading with the meta-small preset treatment</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n type?:\n | 'display-default'\n | 'display-small'\n | 'headline-large'\n | 'headline-default'\n | 'headline-small'\n | 'title-xlarge'\n | 'title-large'\n | 'title-default'\n | 'title-small'\n | 'label-large'\n | 'label-default'\n | 'label-small'\n | 'meta-large'\n | 'meta-default'\n | 'meta-small';\n\n /**\n * Dynamic tag name for the component\n * 1) This is needed to use proper semantic heading treatments depending on where the banner lives on the page\n * <cre8-text-passage size=\"small\">\n * <ul>\n * <li>**h1** renders an `h1` tag</li>\n * <li>**h2** renders an `h2` tag. This is the default</li>\n * <li>**h3** renders an `h3` tag</li>\n * <li>**h4** renders an `h4` tag</li>\n * <li>**h5** renders an `h5` tag</li>\n * <li>**h6** renders an `h6` tag</li>\n * </ul>\n * </cre8-text-passage>\n *\n * @attr{string}\n */\n @property()\n tagVariant: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h5';\n\n /**\n * Invert the color of the font from dark to light. An inverted `heading` should be used on a dark background.\n *\n * @attr{boolean}\n */\n @property({ type: Boolean, reflect: true })\n inverted?: boolean;\n\n /**\n * Apply the brand color to the heading text.\n *\n * @attr{boolean}\n */\n @property({ type: Boolean, reflect: true })\n brandColor?: boolean;\n\n render() {\n const tagVariantClassNames = !this.type\n ? {\n 'cre8-c-heading--headline-large': this.tagVariant === 'h1',\n 'cre8-c-heading--headline-default': this.tagVariant === 'h2',\n 'cre8-c-heading--headline-small': this.tagVariant === 'h3',\n 'cre8-c-heading--title-large': this.tagVariant === 'h4',\n 'cre8-c-heading--title-default': this.tagVariant === 'h5',\n 'cre8-c-heading--title-small': this.tagVariant === 'h6',\n }\n : {};\n\n const componentClassName = this.componentClassNames('cre8-c-heading', {\n 'cre8-c-heading--headline-large': this.type === 'headline-large',\n 'cre8-c-heading--headline-default': this.type === 'headline-default',\n 'cre8-c-heading--headline-small': this.type === 'headline-small',\n 'cre8-c-heading--title-large': this.type === 'title-large',\n 'cre8-c-heading--title-default': this.type === 'title-default',\n 'cre8-c-heading--title-small': this.type === 'title-small',\n 'cre8-c-heading--title-xlarge': this.type === 'title-xlarge',\n 'cre8-c-heading--display-default': this.type === 'display-default',\n 'cre8-c-heading--display-small': this.type === 'display-small',\n 'cre8-c-heading--label-large': this.type === 'label-large',\n 'cre8-c-heading--label-default': this.type === 'label-default',\n 'cre8-c-heading--label-small': this.type === 'label-small',\n 'cre8-c-heading--meta-large': this.type === 'meta-large',\n 'cre8-c-heading--meta-default': this.type === 'meta-default',\n 'cre8-c-heading--meta-small': this.type === 'meta-small',\n // Spread last. `tagVariantClassNames` is `{}` whenever `type` is\n // set, so the type-derived keys above still win when both could\n // apply. Spreading it first meant those same keys immediately\n // overwrote the tagVariant fallback with `false`, so an unset\n // `type` produced no preset class at all and every heading fell\n // back to the bare `.cre8-c-heading` size.\n ...tagVariantClassNames,\n 'cre8-c-heading--brand-color': this.brandColor,\n 'cre8-c-heading--inverted': this.inverted,\n });\n\n switch (this.tagVariant) {\n case 'h1':\n return html` <h1 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h1> `;\n case 'h2':\n return html` <h2 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h2> `;\n case 'h3':\n return html` <h3 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h3> `;\n case 'h4':\n return html` <h4 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h4> `;\n case 'h5':\n return html` <h5 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h5> `;\n case 'h6':\n return html` <h6 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h6> `;\n default:\n return html` <h4 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h4> `;\n }\n }\n}\n\n\nif (customElements.get('cre8-heading') === undefined) {\n customElements.define('cre8-heading', Cre8Heading);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-heading': Cre8Heading;\n }\n}\n\nexport default Cre8Heading;\n"]}
1
+ {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../../components/heading/heading.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Cre8Element } from '../cre8-element';\nimport styles from './heading.styles.js';\n\n /**\n * HTML headings are titles or subtitles that you want to display on a webpage. The H1 is the most important and H6\n * is the least important in the content hierarchy.\n *\n * # How to Use\n * 1. The cre8-heading tag wraps around one of the six native HTML \"h\" tags, depending on your chosen variation.\n * 2. There are two main use cases for using this component:\n * text passage headings and Components with a title (i.e. modal, card or alert)\n * 3. There will be instances when the design requires the heading text to have the brand color applied\n * in which case you should set the [brandColor](?path=/story/cre8-components-heading--brand-color)\n * attribute to true on the cre8-heading tag.\n * 4. For dark backgrounds, add the [inverted](?path=/story/cre8-components-heading--inverted)\n * attribute to the tag for white text.\n *\n *\n * @slot - The heading text content\n */\nexport class Cre8Heading extends Cre8Element {\n static styles = [styles];\n\n /**\n * Heading type\n * <cre8-text-passage size=\"small\">\n * <ul>\n * <li>**display-default** renders a heading with the heading display-default preset treatment</li>\n * <li>**display-small** renders a heading with the heading display-small preset treatment</li>\n * <li>**headline-large** renders a heading with the heading headline-large preset treatment</li>\n * <li>**headline-default** renders a heading with the heading headline-default preset treatment</li>\n * <li>**headline-small** renders a heading with the heading headline-small preset treatment</li>\n * <li>**title-xlarge** renders a heading with the heading title-xlarge preset treatment</li>\n * <li>**title-large** renders a heading with the heading title-large preset treatment</li>\n * <li>**title-default** renders a heading with the heading title-default preset treatment</li>\n * <li>**title-small** renders a heading with the heading title-small preset treatment</li>\n * <li>**label-large** renders a heading with the label-large preset treatment</li>\n * <li>**label-default** renders a heading with the label-default preset treatment</li>\n * <li>**label-small** renders a heading with the label-small preset treatment</li>\n * <li>**meta-large** renders a heading with the meta-large preset treatment</li>\n * <li>**meta-default** renders a heading with the meta-default preset treatment</li>\n * <li>**meta-small** renders a heading with the meta-small preset treatment</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n type?:\n | 'display-default'\n | 'display-small'\n | 'headline-large'\n | 'headline-default'\n | 'headline-small'\n | 'title-xlarge'\n | 'title-large'\n | 'title-default'\n | 'title-small'\n | 'label-large'\n | 'label-default'\n | 'label-small'\n | 'meta-large'\n | 'meta-default'\n | 'meta-small';\n\n /**\n * Dynamic tag name for the component\n * 1) This is needed to use proper semantic heading treatments depending on where the banner lives on the page\n * <cre8-text-passage size=\"small\">\n * <ul>\n * <li>**h1** renders an `h1` tag</li>\n * <li>**h2** renders an `h2` tag</li>\n * <li>**h3** renders an `h3` tag</li>\n * <li>**h4** renders an `h4` tag</li>\n * <li>**h5** renders an `h5` tag. This is the default</li>\n * <li>**h6** renders an `h6` tag</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n tagVariant: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' = 'h5';\n\n /**\n * Invert the color of the font from dark to light. An inverted `heading` should be used on a dark background.\n *\n * @attr{boolean}\n */\n @property({ type: Boolean, reflect: true })\n inverted?: boolean;\n\n /**\n * Apply the brand color to the heading text.\n *\n * @attr{boolean}\n */\n @property({ type: Boolean, reflect: true })\n brandColor?: boolean;\n\n render() {\n const tagVariantClassNames = !this.type\n ? {\n 'cre8-c-heading--headline-large': this.tagVariant === 'h1',\n 'cre8-c-heading--headline-default': this.tagVariant === 'h2',\n 'cre8-c-heading--headline-small': this.tagVariant === 'h3',\n 'cre8-c-heading--title-large': this.tagVariant === 'h4',\n 'cre8-c-heading--title-default': this.tagVariant === 'h5',\n 'cre8-c-heading--title-small': this.tagVariant === 'h6',\n }\n : {};\n\n const componentClassName = this.componentClassNames('cre8-c-heading', {\n 'cre8-c-heading--headline-large': this.type === 'headline-large',\n 'cre8-c-heading--headline-default': this.type === 'headline-default',\n 'cre8-c-heading--headline-small': this.type === 'headline-small',\n 'cre8-c-heading--title-large': this.type === 'title-large',\n 'cre8-c-heading--title-default': this.type === 'title-default',\n 'cre8-c-heading--title-small': this.type === 'title-small',\n 'cre8-c-heading--title-xlarge': this.type === 'title-xlarge',\n 'cre8-c-heading--display-default': this.type === 'display-default',\n 'cre8-c-heading--display-small': this.type === 'display-small',\n 'cre8-c-heading--label-large': this.type === 'label-large',\n 'cre8-c-heading--label-default': this.type === 'label-default',\n 'cre8-c-heading--label-small': this.type === 'label-small',\n 'cre8-c-heading--meta-large': this.type === 'meta-large',\n 'cre8-c-heading--meta-default': this.type === 'meta-default',\n 'cre8-c-heading--meta-small': this.type === 'meta-small',\n // Spread last. `tagVariantClassNames` is `{}` whenever `type` is\n // set, so the type-derived keys above still win when both could\n // apply. Spreading it first meant those same keys immediately\n // overwrote the tagVariant fallback with `false`, so an unset\n // `type` produced no preset class at all and every heading fell\n // back to the bare `.cre8-c-heading` size.\n ...tagVariantClassNames,\n 'cre8-c-heading--brand-color': this.brandColor,\n 'cre8-c-heading--inverted': this.inverted,\n });\n\n switch (this.tagVariant) {\n case 'h1':\n return html` <h1 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h1> `;\n case 'h2':\n return html` <h2 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h2> `;\n case 'h3':\n return html` <h3 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h3> `;\n case 'h4':\n return html` <h4 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h4> `;\n case 'h5':\n return html` <h5 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h5> `;\n case 'h6':\n return html` <h6 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h6> `;\n default:\n return html` <h4 part=\"tag\" class=\"${componentClassName}\"><slot></slot></h4> `;\n }\n }\n}\n\n\nif (customElements.get('cre8-heading') === undefined) {\n customElements.define('cre8-heading', Cre8Heading);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-heading': Cre8Heading;\n }\n}\n\nexport default Cre8Heading;\n"]}
@@ -1,4 +1,10 @@
1
1
  import { Cre8Element } from '../cre8-element';
2
+ /** One link in a data-driven link list. */
3
+ export interface Cre8LinkData {
4
+ text: string;
5
+ href: string;
6
+ isActive?: boolean;
7
+ }
2
8
  /**
3
9
  * @slot - The link list items
4
10
  */
@@ -31,6 +37,19 @@ export declare class Cre8LinkList extends Cre8Element {
31
37
  * - **display** renders a link list with a display treatment (e.g. article title)
32
38
  */
33
39
  variant?: 'secondary' | 'display';
40
+ /**
41
+ * Links for a data-driven list. Each becomes a `cre8-link-list-item`.
42
+ *
43
+ * Worth knowing if you compose these by hand: the label goes in the item's
44
+ * default slot, *not* its `text` prop. That prop is declared and documented
45
+ * but never rendered, so setting it produces an empty link that passes every
46
+ * check — see the drift ledger in `docs/kb/07-research.md`. This API routes
47
+ * around it.
48
+ */
49
+ items?: Cre8LinkData[];
50
+ /** The composition the data property stands for. */
51
+ private buildComposition;
52
+ protected updated(changed: Map<string, unknown>): void;
34
53
  render(): import("lit-html").TemplateResult<1>;
35
54
  }
36
55
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"link-list.d.ts","sourceRoot":"","sources":["../../../components/link-list/link-list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C;;GAEG;AACH,qBAAa,YAAa,SAAQ,WAAW;IACzC,MAAM,CAAC,MAAM,4BAAY;IAE3B;;;;OAIG;IAEC,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IAE3C;;;OAGG;IAEC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IAEC,IAAI,CAAC,EAAE,IAAI,CAAC;IAEhB;;;OAGG;IAEC,OAAO,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;OAIG;IAEC,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAEtC,MAAM;CAiBP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"link-list.d.ts","sourceRoot":"","sources":["../../../components/link-list/link-list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9C,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AAEH,qBAAa,YAAa,SAAQ,WAAW;IACzC,MAAM,CAAC,MAAM,4BAAY;IAE3B;;;;OAIG;IAEC,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IAE3C;;;OAGG;IAEC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IAEC,IAAI,CAAC,EAAE,IAAI,CAAC;IAEhB;;;OAGG;IAEC,OAAO,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;OAIG;IAEC,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC;;;;;;;;OAQG;IAEC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IAE3B,oDAAoD;IACpD,OAAO,CAAC,gBAAgB;IASxB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOtD,MAAM;CAiBP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF;AAED,eAAe,YAAY,CAAC"}
@@ -7,11 +7,27 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { html, } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { Cre8Element } from '../cre8-element';
10
+ import { syncLightChildren } from '../utils/light-children';
10
11
  import styles from './link-list.styles.js';
11
12
  /**
12
13
  * @slot - The link list items
13
14
  */
14
15
  export class Cre8LinkList extends Cre8Element {
16
+ /** The composition the data property stands for. */
17
+ buildComposition() {
18
+ if (!this.items)
19
+ return null;
20
+ return this.items.map((item) => ({
21
+ tag: 'cre8-link-list-item',
22
+ props: { href: item.href, isActive: item.isActive },
23
+ text: item.text,
24
+ }));
25
+ }
26
+ updated(changed) {
27
+ if (['items'].some((key) => changed.has(key))) {
28
+ syncLightChildren(this, this.buildComposition());
29
+ }
30
+ }
15
31
  render() {
16
32
  const componentClassName = this.componentClassNames('cre8-c-link-list', {
17
33
  'cre8-c-link-list--secondary': this.variant === 'secondary',
@@ -45,6 +61,9 @@ __decorate([
45
61
  __decorate([
46
62
  property()
47
63
  ], Cre8LinkList.prototype, "variant", void 0);
64
+ __decorate([
65
+ property({ type: Array })
66
+ ], Cre8LinkList.prototype, "items", void 0);
48
67
  if (customElements.get('cre8-link-list') === undefined) {
49
68
  customElements.define('cre8-link-list', Cre8LinkList);
50
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"link-list.js","sourceRoot":"","sources":["../../../components/link-list/link-list.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,GAAI,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAwC3C,MAAM;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;YACpE,6BAA6B,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;YAC3D,2BAA2B,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS;YACvD,4BAA4B,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI;YACpD,8BAA8B,EAAE,IAAI,CAAC,QAAQ,KAAK,YAAY;YAC9D,8BAA8B,EAAE,IAAI,CAAC,QAAQ,KAAK,YAAY;YAC9D,6BAA6B,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;YAC3D,sBAAsB,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI;SAC7C,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;mBACE,kBAAkB;;;KAGhC,CAAC;IACJ,CAAC;;AAvDQ,mBAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AAQvB;IADH,QAAQ,EAAE;8CACgC;AAOvC;IADH,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CACpB;AAOnB;IADH,QAAQ,EAAE;0CACK;AAOZ;IADH,QAAQ,EAAE;6CACe;AAQtB;IADH,QAAQ,EAAE;6CAC2B;AAqBxC,IAAI,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;IACrD,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAC1D,CAAC;AAQD,eAAe,YAAY,CAAC","sourcesContent":["import { html, } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Cre8Element } from '../cre8-element';\nimport styles from './link-list.styles.js';\n\n/**\n * @slot - The link list items\n */\nexport class Cre8LinkList extends Cre8Element {\n static styles = [styles];\n\n /**\n * Behavioral variant\n * - **responsive** renders a horizontal wrapping link list that converts to a stacked link list on large screens\n * - **horizontal** renders a horizontal wrapping link list on all screens\n */\n @property()\n behavior?: 'responsive' | 'horizontal';\n\n /**\n * Inverted variant\n * 1. Used for dark backgrounds\n */\n @property({ type: Boolean, reflect: true })\n inverted?: boolean;\n\n /**\n * Size variants\n * - **sm** renders a link list with a smaller typography\n */\n @property()\n size?: 'sm';\n\n /**\n * Spacing between link list items\n * - **condensed** renders a link list with a more compact display\n */\n @property()\n spacing?: 'condensed';\n\n /**\n * Style variants\n * - **secondary** renders a link list with a more subtle visual treatment\n * - **display** renders a link list with a display treatment (e.g. article title)\n */\n @property()\n variant?: 'secondary' | 'display';\n\n render() {\n const componentClassName = this.componentClassNames('cre8-c-link-list', {\n 'cre8-c-link-list--secondary': this.variant === 'secondary',\n 'cre8-c-link-list--display': this.variant === 'display',\n 'cre8-c-link-list--inverted': this.inverted === true,\n 'cre8-c-link-list--responsive': this.behavior === 'responsive',\n 'cre8-c-link-list--horizontal': this.behavior === 'horizontal',\n 'cre8-c-link-list--condensed': this.spacing === 'condensed',\n 'cre8-c-link-list--sm': this.size === 'sm',\n });\n\n return html`\n <ul class=\"${componentClassName}\">\n <slot></slot>\n </ul>\n `;\n }\n}\n\nif (customElements.get('cre8-link-list') === undefined) {\n customElements.define('cre8-link-list', Cre8LinkList);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-link-list': Cre8LinkList;\n }\n}\n\nexport default Cre8LinkList;\n"]}
1
+ {"version":3,"file":"link-list.js","sourceRoot":"","sources":["../../../components/link-list/link-list.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,GAAI,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAkB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAS3C;;GAEG;AAEH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAmD3C,oDAAoD;IAC5C,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,GAAG,EAAE,qBAAqB;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACnD,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC,CAAC;IACR,CAAC;IAES,OAAO,CAAC,OAA6B;QAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAGD,MAAM;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;YACpE,6BAA6B,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;YAC3D,2BAA2B,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS;YACvD,4BAA4B,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI;YACpD,8BAA8B,EAAE,IAAI,CAAC,QAAQ,KAAK,YAAY;YAC9D,8BAA8B,EAAE,IAAI,CAAC,QAAQ,KAAK,YAAY;YAC9D,6BAA6B,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;YAC3D,sBAAsB,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI;SAC7C,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;mBACE,kBAAkB;;;KAGhC,CAAC;IACJ,CAAC;;AAnFQ,mBAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AAQvB;IADH,QAAQ,EAAE;8CACgC;AAOvC;IADH,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;8CACpB;AAOnB;IADH,QAAQ,EAAE;0CACK;AAOZ;IADH,QAAQ,EAAE;6CACe;AAQtB;IADH,QAAQ,EAAE;6CAC2B;AAWlC;IADH,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;2CACC;AAsC7B,IAAI,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;IACrD,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AAC1D,CAAC;AAQD,eAAe,YAAY,CAAC","sourcesContent":["import { html, } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Cre8Element } from '../cre8-element';\nimport { syncLightChildren, type ChildSpec } from '../utils/light-children';\nimport styles from './link-list.styles.js';\n\n/** One link in a data-driven link list. */\nexport interface Cre8LinkData {\n text: string;\n href: string;\n isActive?: boolean;\n}\n\n/**\n * @slot - The link list items\n */\n\nexport class Cre8LinkList extends Cre8Element {\n static styles = [styles];\n\n /**\n * Behavioral variant\n * - **responsive** renders a horizontal wrapping link list that converts to a stacked link list on large screens\n * - **horizontal** renders a horizontal wrapping link list on all screens\n */\n @property()\n behavior?: 'responsive' | 'horizontal';\n\n /**\n * Inverted variant\n * 1. Used for dark backgrounds\n */\n @property({ type: Boolean, reflect: true })\n inverted?: boolean;\n\n /**\n * Size variants\n * - **sm** renders a link list with a smaller typography\n */\n @property()\n size?: 'sm';\n\n /**\n * Spacing between link list items\n * - **condensed** renders a link list with a more compact display\n */\n @property()\n spacing?: 'condensed';\n\n /**\n * Style variants\n * - **secondary** renders a link list with a more subtle visual treatment\n * - **display** renders a link list with a display treatment (e.g. article title)\n */\n @property()\n variant?: 'secondary' | 'display';\n /**\n * Links for a data-driven list. Each becomes a `cre8-link-list-item`.\n *\n * Worth knowing if you compose these by hand: the label goes in the item's\n * default slot, *not* its `text` prop. That prop is declared and documented\n * but never rendered, so setting it produces an empty link that passes every\n * check — see the drift ledger in `docs/kb/07-research.md`. This API routes\n * around it.\n */\n @property({ type: Array })\n items?: Cre8LinkData[];\n\n /** The composition the data property stands for. */\n private buildComposition(): ChildSpec[] | null {\n if (!this.items) return null;\n return this.items.map((item) => ({\n tag: 'cre8-link-list-item',\n props: { href: item.href, isActive: item.isActive },\n text: item.text,\n }));\n }\n\n protected updated(changed: Map<string, unknown>): void {\n if (['items'].some((key) => changed.has(key))) {\n syncLightChildren(this, this.buildComposition());\n }\n }\n\n\n render() {\n const componentClassName = this.componentClassNames('cre8-c-link-list', {\n 'cre8-c-link-list--secondary': this.variant === 'secondary',\n 'cre8-c-link-list--display': this.variant === 'display',\n 'cre8-c-link-list--inverted': this.inverted === true,\n 'cre8-c-link-list--responsive': this.behavior === 'responsive',\n 'cre8-c-link-list--horizontal': this.behavior === 'horizontal',\n 'cre8-c-link-list--condensed': this.spacing === 'condensed',\n 'cre8-c-link-list--sm': this.size === 'sm',\n });\n\n return html`\n <ul class=\"${componentClassName}\">\n <slot></slot>\n </ul>\n `;\n }\n}\n\nif (customElements.get('cre8-link-list') === undefined) {\n customElements.define('cre8-link-list', Cre8LinkList);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-link-list': Cre8LinkList;\n }\n}\n\nexport default Cre8LinkList;\n"]}
@@ -1,4 +1,8 @@
1
1
  import { Cre8Element } from '../cre8-element';
2
+ /** One item in a data-driven list. */
3
+ export interface Cre8ListItemData {
4
+ text: string;
5
+ }
2
6
  /**
3
7
  * @slot - The list items
4
8
  */
@@ -23,6 +27,15 @@ export declare class Cre8List extends Cre8Element {
23
27
  * </cre8-text-passage>
24
28
  */
25
29
  spacing?: 'padded' | 'condensed';
30
+ /**
31
+ * Items for a data-driven list. Set this and the list builds its own
32
+ * `cre8-list-item` children in the light DOM — the same composition you would
33
+ * write by hand. Leave it unset to compose the list yourself.
34
+ */
35
+ items?: Cre8ListItemData[];
36
+ /** The composition the data property stands for. */
37
+ private buildComposition;
38
+ protected updated(changed: Map<string, unknown>): void;
26
39
  render(): import("lit-html").TemplateResult<1>;
27
40
  }
28
41
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../components/list/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C;;GAEG;AACH,qBAAa,QAAS,SAAQ,WAAW;IACrC,MAAM,CAAC,MAAM,4BAAY;IAE3B;;;;;;;OAOG;IAEC,OAAO,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;OAQG;IAEC,OAAO,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAErC,MAAM;CAaP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../components/list/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI9C,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AAEH,qBAAa,QAAS,SAAQ,WAAW;IACrC,MAAM,CAAC,MAAM,4BAAY;IAE3B;;;;;;;OAOG;IAEC,OAAO,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;OAQG;IAEC,OAAO,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IACrC;;;;OAIG;IAEC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE/B,oDAAoD;IACpD,OAAO,CAAC,gBAAgB;IAKxB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOtD,MAAM;CAaP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF;AAED,eAAe,QAAQ,CAAC"}
@@ -7,11 +7,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { html, } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { Cre8Element } from '../cre8-element';
10
+ import { syncLightChildren } from '../utils/light-children';
10
11
  import styles from './list.styles.js';
11
12
  /**
12
13
  * @slot - The list items
13
14
  */
14
15
  export class Cre8List extends Cre8Element {
16
+ /** The composition the data property stands for. */
17
+ buildComposition() {
18
+ if (!this.items)
19
+ return null;
20
+ return this.items.map((item) => ({ tag: 'cre8-list-item', text: item.text }));
21
+ }
22
+ updated(changed) {
23
+ if (['items'].some((key) => changed.has(key))) {
24
+ syncLightChildren(this, this.buildComposition());
25
+ }
26
+ }
15
27
  render() {
16
28
  const componentClassName = this.componentClassNames('cre8-c-list', {
17
29
  'cre8-c-list--bare': this.variant === 'bare',
@@ -32,6 +44,9 @@ __decorate([
32
44
  __decorate([
33
45
  property()
34
46
  ], Cre8List.prototype, "spacing", void 0);
47
+ __decorate([
48
+ property({ type: Array })
49
+ ], Cre8List.prototype, "items", void 0);
35
50
  if (customElements.get('cre8-list') === undefined) {
36
51
  customElements.define('cre8-list', Cre8List);
37
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../components/list/list.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,GAAI,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,MAAM,MAAM,kBAAkB,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,WAAW;IA0BvC,MAAM;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;YAC/D,mBAAmB,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM;YAC5C,qBAAqB,EAAE,IAAI,CAAC,OAAO,KAAK,QAAQ;YAChD,wBAAwB,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;SACzD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;mBACE,kBAAkB;;;KAGhC,CAAC;IACJ,CAAC;;AArCQ,eAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AAWvB;IADH,QAAQ,EAAE;yCACU;AAYjB;IADH,QAAQ,EAAE;yCAC0B;AAiBvC,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;IAChD,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAQD,eAAe,QAAQ,CAAC","sourcesContent":["import { html, } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Cre8Element } from '../cre8-element';\nimport styles from './list.styles.js';\n\n/**\n * @slot - The list items\n */\nexport class Cre8List extends Cre8Element {\n static styles = [styles];\n\n /**\n * Style variants\n * <cre8-text-passage size=\"sm\">\n * <ul>\n * <li>**bare** removes any lines from in between list items</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n variant?: 'bare';\n\n /**\n * Spacing variants\n * <cre8-text-passage size=\"sm\">\n * <ul>\n * <li>**padded** applies more padding in between list items compared to the default</li>\n * <li>**condensed** reduces padding in between list items compared to the default</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n spacing?: 'padded' | 'condensed';\n\n render() {\n const componentClassName = this.componentClassNames('cre8-c-list', {\n 'cre8-c-list--bare': this.variant === 'bare',\n 'cre8-c-list--padded': this.spacing === 'padded',\n 'cre8-c-list--condensed': this.spacing === 'condensed',\n });\n\n return html`\n <ul class=\"${componentClassName}\">\n <slot></slot>\n </ul>\n `;\n }\n}\n\nif (customElements.get('cre8-list') === undefined) {\n customElements.define('cre8-list', Cre8List);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-list': Cre8List;\n }\n}\n\nexport default Cre8List;\n"]}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../components/list/list.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,GAAI,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAkB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,MAAM,MAAM,kBAAkB,CAAC;AAOtC;;GAEG;AAEH,MAAM,OAAO,QAAS,SAAQ,WAAW;IAiCvC,oDAAoD;IAC5C,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAES,OAAO,CAAC,OAA6B;QAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAGD,MAAM;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE;YAC/D,mBAAmB,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM;YAC5C,qBAAqB,EAAE,IAAI,CAAC,OAAO,KAAK,QAAQ;YAChD,wBAAwB,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW;SACzD,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;mBACE,kBAAkB;;;KAGhC,CAAC;IACJ,CAAC;;AAzDQ,eAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AAWvB;IADH,QAAQ,EAAE;yCACU;AAYjB;IADH,QAAQ,EAAE;yCAC0B;AAOjC;IADH,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;uCACK;AA8BjC,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;IAChD,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAQD,eAAe,QAAQ,CAAC","sourcesContent":["import { html, } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { Cre8Element } from '../cre8-element';\nimport { syncLightChildren, type ChildSpec } from '../utils/light-children';\nimport styles from './list.styles.js';\n\n/** One item in a data-driven list. */\nexport interface Cre8ListItemData {\n text: string;\n}\n\n/**\n * @slot - The list items\n */\n\nexport class Cre8List extends Cre8Element {\n static styles = [styles];\n\n /**\n * Style variants\n * <cre8-text-passage size=\"sm\">\n * <ul>\n * <li>**bare** removes any lines from in between list items</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n variant?: 'bare';\n\n /**\n * Spacing variants\n * <cre8-text-passage size=\"sm\">\n * <ul>\n * <li>**padded** applies more padding in between list items compared to the default</li>\n * <li>**condensed** reduces padding in between list items compared to the default</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n spacing?: 'padded' | 'condensed';\n /**\n * Items for a data-driven list. Set this and the list builds its own\n * `cre8-list-item` children in the light DOM — the same composition you would\n * write by hand. Leave it unset to compose the list yourself.\n */\n @property({ type: Array })\n items?: Cre8ListItemData[];\n\n /** The composition the data property stands for. */\n private buildComposition(): ChildSpec[] | null {\n if (!this.items) return null;\n return this.items.map((item) => ({ tag: 'cre8-list-item', text: item.text }));\n }\n\n protected updated(changed: Map<string, unknown>): void {\n if (['items'].some((key) => changed.has(key))) {\n syncLightChildren(this, this.buildComposition());\n }\n }\n\n\n render() {\n const componentClassName = this.componentClassNames('cre8-c-list', {\n 'cre8-c-list--bare': this.variant === 'bare',\n 'cre8-c-list--padded': this.spacing === 'padded',\n 'cre8-c-list--condensed': this.spacing === 'condensed',\n });\n\n return html`\n <ul class=\"${componentClassName}\">\n <slot></slot>\n </ul>\n `;\n }\n}\n\nif (customElements.get('cre8-list') === undefined) {\n customElements.define('cre8-list', Cre8List);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-list': Cre8List;\n }\n}\n\nexport default Cre8List;\n"]}
@@ -14,7 +14,7 @@ import '@a11y/focus-trap';
14
14
  * @slot header - Custom header content for the modal
15
15
  * @slot footer - Custom footer content for the modal
16
16
  *
17
- * @fires close-modal - Fires when the modal is dismissed via the close button, overlay click, or Escape key.
17
+ * @fires modal-close - Fires when the modal is dismissed via the close button, overlay click, or Escape key.
18
18
  */
19
19
  export declare class Cre8Modal extends Cre8Element {
20
20
  static styles: import("lit").CSSResult[];
@@ -92,7 +92,7 @@ export declare class Cre8Modal extends Cre8Element {
92
92
  export interface CloseModalEvent extends CustomEvent<{
93
93
  isActive: boolean;
94
94
  }> {
95
- type: 'close-modal';
95
+ type: 'modal-close';
96
96
  currentTarget: Cre8Modal;
97
97
  }
98
98
  declare global {
@@ -28,7 +28,7 @@ import styles from './modal.styles.js';
28
28
  * @slot header - Custom header content for the modal
29
29
  * @slot footer - Custom footer content for the modal
30
30
  *
31
- * @fires close-modal - Fires when the modal is dismissed via the close button, overlay click, or Escape key.
31
+ * @fires modal-close - Fires when the modal is dismissed via the close button, overlay click, or Escape key.
32
32
  */
33
33
  export class Cre8Modal extends Cre8Element {
34
34
  constructor() {
@@ -79,7 +79,7 @@ export class Cre8Modal extends Cre8Element {
79
79
  handleCloseModal() {
80
80
  this.isActive = false;
81
81
  this.dispatch({
82
- eventName: 'close-modal',
82
+ eventName: 'modal-close',
83
83
  detailObj: {
84
84
  isActive: this.isActive,
85
85
  },
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../components/modal/modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { PropertyValues, html, } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport svgError from '@tmorrow/cre8-wc/icons/Error.svg?raw';\nimport svgWarningFilled from '@tmorrow/cre8-wc/icons/Warning.svg?raw';\nimport svgCheckCircle from '@tmorrow/cre8-wc/icons/Check_Filled.svg?raw';\nimport svgInfoFilled from '@tmorrow/cre8-wc/icons/Info.svg?raw';\nimport svgHelp from '@tmorrow/cre8-wc/icons/Help.svg?raw';\nimport svgClose from '@tmorrow/cre8-wc/icons/Close.svg?raw';\nimport { Cre8Element } from '../cre8-element';\nimport '../icon/icon.js';\nimport '@a11y/focus-trap';\nimport styles from './modal.styles.js';\n\n/**\n * Modal component should be used in all modal situations.\n * It is natuarally composable and can even have a custom header and remove the close button.\n * (note: adding `slot=\"header\"` will insert the given element into the header section of the modal,\n * same for `slot=\"footer\"` and no given slot name will inset it into the body)\n *\n * If it is desired to create a utility modal. Cre8Modal requires a status value (see props table below,\n * and a UtilityModalTitle since all utility modals have a cre8-heading)\n * @slot - The component content\n * @slot header - Custom header content for the modal\n * @slot footer - Custom footer content for the modal\n *\n * @fires close-modal - Fires when the modal is dismissed via the close button, overlay click, or Escape key.\n */\nexport class Cre8Modal extends Cre8Element {\n static styles = [styles];\n\n /**\n * Query the modal window\n */\n @query('.cre8-c-modal__window')\n _modalWindow: HTMLDivElement;\n\n /**\n * Is Active attribute\n */\n @property({ type: Boolean, reflect: true })\n isActive?: boolean;\n\n /**\n * Status Types\n * <cre8-text-passage size=\"sm\">\n * <ul>\n * <li>**default (no value)** renders a default modal</li>\n * <li>**error** renders an error modal</li>\n * <li>**warning** renders a warning modal</li>\n * <li>**success** renders a success modal</li>\n * <li>**info** renders an info modal</li>\n * <li>**help** renders an help modal</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n status?: 'error' | 'warning' | 'success' | 'info' | 'help';\n\n /**\n * Utility Modal Heading (String)\n */\n @property()\n utilityModalTitle: string;\n\n /**\n * Not dismissible modal\n */\n @property({ type: Boolean, reflect: true })\n notDismissible?: boolean;\n\n /**\n * Close Button Text\n */\n @property()\n closeButtonText: string = 'close';\n\n /**\n * Close Button Icon\n */\n @property()\n closeButtonIcon: string = 'close';\n\n /**\n * Modal Aria Label - This is required for accessibility and provides context of the entire modal!\n */\n @property()\n ariaLabel: string;\n\n /**\n * Handle keydown\n * 1) Close the modal when escape is hit when the user is focused within the modal\n */\n handleKeydown(e: KeyboardEvent) {\n if (e.code === 'Escape' && !this.notDismissible) {\n this.handleCloseModal(); /* 2 */\n }\n }\n\n /**\n * Handle on close\n * 1) On close, set the modal to not active and dispatch event telling the parent the modal was closed.\n */\n handleCloseModal() {\n this.isActive = false;\n this.dispatch({\n eventName: 'close-modal',\n detailObj: {\n isActive: this.isActive,\n },\n });\n }\n\n /**\n * Handle \"click outside\"\n * 1) onClick of the area around the modal window, close the modal.\n */\n\n handleOnClickOutside(e: Event) {\n const eventTarget = e.target as HTMLElement;\n if (this.isActive && this._modalWindow && eventTarget.classList.contains('cre8-c-modal') && !this.notDismissible) {\n this.handleCloseModal();\n }\n }\n\n /**\n * Lifecycle method to focus on modal\n * 1) If there is a changed property, and this.isActive === true, then focus on the modal window.\n * 2) Disable the body from scrolling behind while the modal is open.\n */\n\n updated(changedProperties: PropertyValues<this>) {\n if (this.isActive === true) {\n setTimeout(() => {\n this._modalWindow.focus();\n }, 200);\n } /* 1 */\n\n if (changedProperties.has('isActive')) {\n const body = document.querySelector('body');\n if (this.isActive) {\n body.style.overflow = 'hidden';\n } else {\n body.style.removeProperty('overflow');\n }\n } /* 2 */\n }\n\n /*\n * Maps modal icons and modal status variants to what the alt text of the related icon should be\n * see: (https://digital.#.com/patterns-and-Components/informational-display/alerts-and-notifications#query=alerts)\n * this provides the recommendated alt text of different statuses\n */\n mapStatusToIconModal = (status: string) => {\n switch (status) {\n case 'error':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgError} aria-hidden='true'></cre8-icon>`;\n case 'success':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgCheckCircle} aria-hidden='true'></cre8-icon>`;\n case 'warning':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgWarningFilled} aria-hidden='true'></cre8-icon>`;\n case 'help':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgHelp} aria-hidden='true'></cre8-icon>`;\n case 'info':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgInfoFilled} aria-hidden='true'></cre8-icon>`;\n default:\n return null;\n }\n };\n\n /**\n * Lifecycle method on removal from the DOM\n * Removed body overflow and handle close (isActive set to false)\n */\n disconnectedCallback() {\n this.isActive = false;\n const body = document.querySelector('body');\n body.style.removeProperty('overflow');\n }\n\n render() {\n const componentClassNames = this.componentClassNames('cre8-c-modal', {\n 'cre8-is-active': this.isActive,\n 'cre8-c-modal--error': this.status === 'error',\n 'cre8-c-modal--warning': this.status === 'warning',\n 'cre8-c-modal--success': this.status === 'success',\n 'cre8-c-modal--info': this.status === 'info',\n 'cre8-c-modal--help': this.status === 'help',\n });\n\n return html`\n <div class=\"${componentClassNames}\" @click=\"${this.handleOnClickOutside}\" @keydown=${this.handleKeydown}>\n <focus-trap class=\"cre8-c-modal__focus-trap\" ?inactive=${!this.isActive}>\n <div class=\"cre8-c-modal__window\" role=\"dialog\" aria-label=${this.ariaLabel} tabindex=${this.isActive ? 0 : -1}>\n <div class=\"cre8-c-modal__header\">\n ${this.status\n ? html`<div class=\"cre8-c-modal__header-inner\">\n ${this.mapStatusToIconModal(this.status)}\n <cre8-heading type=\"title-large\" ?brandColor=${true}>${this.utilityModalTitle}</cre8-heading>\n </div>`\n : html`<slot name=\"header\"></slot>`}\n ${!this.notDismissible\n ? html`<cre8-button\n class=\"cre8-c-modal__close-button\"\n variant=\"tertiary\"\n svg=${svgClose}\n iconPosition=\"after\"\n ?inverted=${!this.status}\n @click=${this.handleCloseModal}\n ></cre8-button>`\n : ''}\n </div>\n <div class=\"cre8-c-modal__body\">\n <slot></slot>\n </div>\n ${this.slotNotEmpty('footer') && html`<div class=\"cre8-c-modal__footer\"><slot name=\"footer\"></slot></div>`}\n </div>\n </focus-trap>\n </div>\n`;\n }\n}\n\nif (customElements.get('cre8-modal') === undefined) {\n customElements.define('cre8-modal', Cre8Modal);\n}\n\nexport interface CloseModalEvent extends CustomEvent<{ isActive: boolean }> {\n type: 'close-modal';\n currentTarget: Cre8Modal;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-modal': Cre8Modal;\n }\n}\n"]}
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../../../components/modal/modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { PropertyValues, html, } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport svgError from '@tmorrow/cre8-wc/icons/Error.svg?raw';\nimport svgWarningFilled from '@tmorrow/cre8-wc/icons/Warning.svg?raw';\nimport svgCheckCircle from '@tmorrow/cre8-wc/icons/Check_Filled.svg?raw';\nimport svgInfoFilled from '@tmorrow/cre8-wc/icons/Info.svg?raw';\nimport svgHelp from '@tmorrow/cre8-wc/icons/Help.svg?raw';\nimport svgClose from '@tmorrow/cre8-wc/icons/Close.svg?raw';\nimport { Cre8Element } from '../cre8-element';\nimport '../icon/icon.js';\nimport '@a11y/focus-trap';\nimport styles from './modal.styles.js';\n\n/**\n * Modal component should be used in all modal situations.\n * It is natuarally composable and can even have a custom header and remove the close button.\n * (note: adding `slot=\"header\"` will insert the given element into the header section of the modal,\n * same for `slot=\"footer\"` and no given slot name will inset it into the body)\n *\n * If it is desired to create a utility modal. Cre8Modal requires a status value (see props table below,\n * and a UtilityModalTitle since all utility modals have a cre8-heading)\n * @slot - The component content\n * @slot header - Custom header content for the modal\n * @slot footer - Custom footer content for the modal\n *\n * @fires modal-close - Fires when the modal is dismissed via the close button, overlay click, or Escape key.\n */\nexport class Cre8Modal extends Cre8Element {\n static styles = [styles];\n\n /**\n * Query the modal window\n */\n @query('.cre8-c-modal__window')\n _modalWindow: HTMLDivElement;\n\n /**\n * Is Active attribute\n */\n @property({ type: Boolean, reflect: true })\n isActive?: boolean;\n\n /**\n * Status Types\n * <cre8-text-passage size=\"sm\">\n * <ul>\n * <li>**default (no value)** renders a default modal</li>\n * <li>**error** renders an error modal</li>\n * <li>**warning** renders a warning modal</li>\n * <li>**success** renders a success modal</li>\n * <li>**info** renders an info modal</li>\n * <li>**help** renders an help modal</li>\n * </ul>\n * </cre8-text-passage>\n */\n @property()\n status?: 'error' | 'warning' | 'success' | 'info' | 'help';\n\n /**\n * Utility Modal Heading (String)\n */\n @property()\n utilityModalTitle: string;\n\n /**\n * Not dismissible modal\n */\n @property({ type: Boolean, reflect: true })\n notDismissible?: boolean;\n\n /**\n * Close Button Text\n */\n @property()\n closeButtonText: string = 'close';\n\n /**\n * Close Button Icon\n */\n @property()\n closeButtonIcon: string = 'close';\n\n /**\n * Modal Aria Label - This is required for accessibility and provides context of the entire modal!\n */\n @property()\n ariaLabel: string;\n\n /**\n * Handle keydown\n * 1) Close the modal when escape is hit when the user is focused within the modal\n */\n handleKeydown(e: KeyboardEvent) {\n if (e.code === 'Escape' && !this.notDismissible) {\n this.handleCloseModal(); /* 2 */\n }\n }\n\n /**\n * Handle on close\n * 1) On close, set the modal to not active and dispatch event telling the parent the modal was closed.\n */\n handleCloseModal() {\n this.isActive = false;\n this.dispatch({\n eventName: 'modal-close',\n detailObj: {\n isActive: this.isActive,\n },\n });\n }\n\n /**\n * Handle \"click outside\"\n * 1) onClick of the area around the modal window, close the modal.\n */\n\n handleOnClickOutside(e: Event) {\n const eventTarget = e.target as HTMLElement;\n if (this.isActive && this._modalWindow && eventTarget.classList.contains('cre8-c-modal') && !this.notDismissible) {\n this.handleCloseModal();\n }\n }\n\n /**\n * Lifecycle method to focus on modal\n * 1) If there is a changed property, and this.isActive === true, then focus on the modal window.\n * 2) Disable the body from scrolling behind while the modal is open.\n */\n\n updated(changedProperties: PropertyValues<this>) {\n if (this.isActive === true) {\n setTimeout(() => {\n this._modalWindow.focus();\n }, 200);\n } /* 1 */\n\n if (changedProperties.has('isActive')) {\n const body = document.querySelector('body');\n if (this.isActive) {\n body.style.overflow = 'hidden';\n } else {\n body.style.removeProperty('overflow');\n }\n } /* 2 */\n }\n\n /*\n * Maps modal icons and modal status variants to what the alt text of the related icon should be\n * see: (https://digital.#.com/patterns-and-Components/informational-display/alerts-and-notifications#query=alerts)\n * this provides the recommendated alt text of different statuses\n */\n mapStatusToIconModal = (status: string) => {\n switch (status) {\n case 'error':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgError} aria-hidden='true'></cre8-icon>`;\n case 'success':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgCheckCircle} aria-hidden='true'></cre8-icon>`;\n case 'warning':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgWarningFilled} aria-hidden='true'></cre8-icon>`;\n case 'help':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgHelp} aria-hidden='true'></cre8-icon>`;\n case 'info':\n return html`<cre8-icon class=\"cre8-modal-icon\" svg=${svgInfoFilled} aria-hidden='true'></cre8-icon>`;\n default:\n return null;\n }\n };\n\n /**\n * Lifecycle method on removal from the DOM\n * Removed body overflow and handle close (isActive set to false)\n */\n disconnectedCallback() {\n this.isActive = false;\n const body = document.querySelector('body');\n body.style.removeProperty('overflow');\n }\n\n render() {\n const componentClassNames = this.componentClassNames('cre8-c-modal', {\n 'cre8-is-active': this.isActive,\n 'cre8-c-modal--error': this.status === 'error',\n 'cre8-c-modal--warning': this.status === 'warning',\n 'cre8-c-modal--success': this.status === 'success',\n 'cre8-c-modal--info': this.status === 'info',\n 'cre8-c-modal--help': this.status === 'help',\n });\n\n return html`\n <div class=\"${componentClassNames}\" @click=\"${this.handleOnClickOutside}\" @keydown=${this.handleKeydown}>\n <focus-trap class=\"cre8-c-modal__focus-trap\" ?inactive=${!this.isActive}>\n <div class=\"cre8-c-modal__window\" role=\"dialog\" aria-label=${this.ariaLabel} tabindex=${this.isActive ? 0 : -1}>\n <div class=\"cre8-c-modal__header\">\n ${this.status\n ? html`<div class=\"cre8-c-modal__header-inner\">\n ${this.mapStatusToIconModal(this.status)}\n <cre8-heading type=\"title-large\" ?brandColor=${true}>${this.utilityModalTitle}</cre8-heading>\n </div>`\n : html`<slot name=\"header\"></slot>`}\n ${!this.notDismissible\n ? html`<cre8-button\n class=\"cre8-c-modal__close-button\"\n variant=\"tertiary\"\n svg=${svgClose}\n iconPosition=\"after\"\n ?inverted=${!this.status}\n @click=${this.handleCloseModal}\n ></cre8-button>`\n : ''}\n </div>\n <div class=\"cre8-c-modal__body\">\n <slot></slot>\n </div>\n ${this.slotNotEmpty('footer') && html`<div class=\"cre8-c-modal__footer\"><slot name=\"footer\"></slot></div>`}\n </div>\n </focus-trap>\n </div>\n`;\n }\n}\n\nif (customElements.get('cre8-modal') === undefined) {\n customElements.define('cre8-modal', Cre8Modal);\n}\n\nexport interface CloseModalEvent extends CustomEvent<{ isActive: boolean }> {\n type: 'modal-close';\n currentTarget: Cre8Modal;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-modal': Cre8Modal;\n }\n}\n"]}
@@ -9,12 +9,12 @@ import '../checkbox-field-item/checkbox-field-item';
9
9
  * The checkbox will always reflect the selected nature of the item and is not removed
10
10
  * from the dropdown when clicked, the tags will be added and removed based on their state.
11
11
  *
12
- * Event `selectedItemsChange` emits whenever a tag is added or remove from the list and the
12
+ * Event `multi-select-change` emits whenever a tag is added or remove from the list and the
13
13
  * current list after the change is given in the detail.
14
14
  *
15
15
  * @slot fieldNote - Container for optional field note content
16
16
  *
17
- * @fires selectedItemsChange - Fires when a tag is added or removed. `event.detail.selectedItems` is the current selection.
17
+ * @fires multi-select-change - Fires when a tag is added or removed. `event.detail.selectedItems` is the current selection.
18
18
  */
19
19
  export declare class Cre8MultiSelect extends Cre8Element {
20
20
  static styles: import("lit").CSSResult[];
@@ -26,12 +26,12 @@ import '../checkbox-field-item/checkbox-field-item';
26
26
  * The checkbox will always reflect the selected nature of the item and is not removed
27
27
  * from the dropdown when clicked, the tags will be added and removed based on their state.
28
28
  *
29
- * Event `selectedItemsChange` emits whenever a tag is added or remove from the list and the
29
+ * Event `multi-select-change` emits whenever a tag is added or remove from the list and the
30
30
  * current list after the change is given in the detail.
31
31
  *
32
32
  * @slot fieldNote - Container for optional field note content
33
33
  *
34
- * @fires selectedItemsChange - Fires when a tag is added or removed. `event.detail.selectedItems` is the current selection.
34
+ * @fires multi-select-change - Fires when a tag is added or removed. `event.detail.selectedItems` is the current selection.
35
35
  */
36
36
  export class Cre8MultiSelect extends Cre8Element {
37
37
  /* Life Cycle Methods */
@@ -91,7 +91,7 @@ export class Cre8MultiSelect extends Cre8Element {
91
91
  color="neutral"
92
92
  shape="square"
93
93
  ?disabled="${this.disabled}"
94
- @removeTagClicked="${() => this._handleRemoveTagClick(item)}"
94
+ @remove-tag-click="${() => this._handleRemoveTagClick(item)}"
95
95
  ></cre8-remove-tag>
96
96
  </li>`);
97
97
  }
@@ -116,14 +116,14 @@ export class Cre8MultiSelect extends Cre8Element {
116
116
  }
117
117
  }
118
118
  emitSelectedItems() {
119
- const customEvent = new CustomEvent('selectedItemsChange', {
119
+ const customEvent = new CustomEvent('multi-select-change', {
120
120
  detail: {
121
121
  selectedItems: this.selectedTagItems,
122
122
  },
123
123
  bubbles: true,
124
124
  composed: true,
125
125
  });
126
- this.dispatchEvent(customEvent);
126
+ this.dispatchWithLegacyAlias(customEvent);
127
127
  }
128
128
  toggleDropDown() {
129
129
  this.dropdownOpen = !this.dropdownOpen;
@@ -1 +1 @@
1
- {"version":3,"file":"multi-select.js","sourceRoot":"","sources":["../../../components/multi-select/multi-select.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\n/* eslint-disable no-duplicate-imports */\n/* eslint-disable lit/no-template-arrow */\n/* eslint-disable indent */\n\nimport { ifDefined } from 'lit-html/directives/if-defined.js';\nimport { html, nothing, } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { nanoid } from 'nanoid';\nimport svgCaretDown from '@tmorrow/cre8-wc/icons/Caret_Down.svg?raw';\nimport svgClear from '@tmorrow/cre8-wc/icons/Clear_X.svg?raw';\nimport styles from './multi-select.styles.js';\nimport { Cre8Element } from '../cre8-element';\nimport '../remove-tag/remove-tag';\nimport '../field-note/field-note';\nimport '../button/button';\nimport '../checkbox-field-item/checkbox-field-item';\n// eslint-disable-next-line import/no-named-as-default\nimport Cre8CheckboxFieldItem from '../checkbox-field-item/checkbox-field-item';\n\n/**\n * Multiselect is used when multiple options can be chosen from a static dropdown\n * This component has a list of items in the dropdown that can be added as \"selected tags\"\n * The checkbox will always reflect the selected nature of the item and is not removed\n * from the dropdown when clicked, the tags will be added and removed based on their state.\n *\n * Event `selectedItemsChange` emits whenever a tag is added or remove from the list and the\n * current list after the change is given in the detail.\n *\n * @slot fieldNote - Container for optional field note content\n *\n * @fires selectedItemsChange - Fires when a tag is added or removed. `event.detail.selectedItems` is the current selection.\n */\nexport class Cre8MultiSelect extends Cre8Element {\n static styles = [styles];\n\n\n /**\n * The list of string items the user can choose in the dropdown\n *\n * Note: For passing props containing arrays and complex types, you should pass the props using a\n * period in from of the prop like so: `.items=\"[]\"`\n * (this is only needed for Web Components and not the React version)\n * @attr {string[]}\n */\n @property({ type: Array })\n items: string[] = [];\n\n @state()\n selectedTagItems: string[] = [];\n\n /**\n * The list of string items that are initially in the selected list of tags\n * Note: This list MUST be a subset of the array of items to function.\n * i.e. if items=['cat', 'dog', 'bird'], preselectedItems=['cat'] is valid\n * while preselectedItems=['cat', 'goat'] is not and will break the component.\n *\n * Note: For passing props containing arrays and complex types, you should pass the props using a\n * period in from of the prop like so: `.items=\"[]\"`\n * (this is only needed for Web Components and not the React version)\n * @attr {string[]}\n */\n @property({ type: Array })\n preselectedItems: string[];\n\n @state()\n dropdownOpen: boolean = false;\n\n /**\n * The required label that appears above the multiselect\n * @attr {string}\n */\n @property()\n label: string;\n\n /**\n * The unique id of the select\n * @attr {string}\n */\n\n @property()\n fieldId?: string;\n\n /**\n * Optional field note text can be added to provide additional field guidance.\n * @attr {string}\n */\n @property()\n fieldNote?: string;\n\n /**\n * Used to connect the field note in text field to the text menu for accessibility\n * @attr {string}\n */\n @property()\n ariaDescribedBy?: string;\n\n /**\n * Additional aria-describedby connection to id for additional success and error notes to be accessible\n * @attr {string}\n */\n @property()\n validationAriaDescribedBy?: string;\n\n /**\n * The disabled attribute on the select\n * @attr {boolean}\n */\n @property({ type: Boolean, reflect: true })\n disabled?: boolean;\n\n /**\n * Changes the component's treatment to represent an error state\n * @attr {boolean}\n */\n @property({ type: Boolean, reflect: true })\n isError?: boolean;\n\n /**\n * The error field note that appears below the default field note\n * @attr {string}\n */\n @property()\n errorNote?: string;\n\n /**\n * Changes the component's treatment to represent a success state\n * @attr {boolean}\n */\n @property({ type: Boolean, reflect: true })\n isSuccess?: boolean;\n\n /**\n * The success field note that appears below the default field note\n * @attr {string}\n */\n @property()\n successNote?: string;\n\n /* Life Cycle Methods */\n\n constructor() {\n super();\n this._handleOnClick = this._handleOnClick.bind(this);\n }\n\n firstUpdated() {\n if (this.preselectedItems) this.setPreselectedItemsinDropdown();\n this.selectedTagItems = this.preselectedItems || [];\n this._initializeAria();\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('click', this._handleOnClick, false);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('click', this._handleOnClick, false);\n }\n\n /* HTML Content functions */\n\n private _renderDropdownItems() {\n return this.items.map(\n // Note: Keyboard can already navigate to the checkbox\n // eslint-disable-next-line lit-a11y/click-events-have-key-events\n (item, index) => html`<li\n @click=\"${(e: MouseEvent) => this._handleListItemClick(e, index)}\"\n >\n <cre8-checkbox-field-item\n .checked=\"${!!this.selectedTagItems.includes(item)}\"\n label=${item}\n id=${index}\n @input=\"${(e: InputEvent) => this._handleDropdownItemInput(item, e)}\"\n >\n </cre8-checkbox-field-item>\n </li>`\n );\n }\n\n private _renderSelectedTags() {\n if (!this.selectedTagItems.length) {\n return nothing;\n }\n return this.selectedTagItems.map(\n (item) => html`<li>\n <cre8-remove-tag\n text=\"${item}\"\n color=\"neutral\"\n shape=\"square\"\n ?disabled=\"${this.disabled}\"\n @removeTagClicked=\"${() => this._handleRemoveTagClick(item)}\"\n ></cre8-remove-tag>\n </li>`\n );\n }\n\n /* Helper Functions */\n\n private setPreselectedItemsinDropdown() {\n this.preselectedItems.forEach((item) => {\n this.selectedTagItems = this.selectedTagItems.concat(item);\n });\n }\n\n private clearAllTags() {\n if (!this.disabled) {\n if (this.dropdownOpen) {\n this.selectedTagItems.forEach((item) => {\n this.shadowRoot\n ?.querySelector(`cre8-checkbox-field-item[label=\"${item}\"]`)\n .shadowRoot?.querySelector('input')\n .click();\n });\n }\n this.selectedTagItems = [];\n\n this.emitSelectedItems();\n }\n }\n\n private emitSelectedItems(): void {\n const customEvent = new CustomEvent('selectedItemsChange', {\n detail: {\n selectedItems: this.selectedTagItems,\n },\n bubbles: true,\n composed: true,\n });\n this.dispatchEvent(customEvent);\n }\n\n private toggleDropDown(): void {\n this.dropdownOpen = !this.dropdownOpen;\n }\n\n /* Click Event Functions */\n\n private _handleOnClick(event?: MouseEvent) {\n if (!this.shadowRoot?.host) {\n throw Error(\n 'Could not determine navigation context during click handler'\n );\n }\n\n const didClickInside = event.composedPath().includes(this.shadowRoot.host);\n const label = this.renderRoot.querySelector(\n '.cre8-c-multi-select__label'\n );\n const buttonsWrapper = this.renderRoot.querySelector(\n '.cre8-c-multi-select__icons-wrapper'\n );\n const removeTagWrapper = this.shadowRoot?.querySelector(\n '.cre8-c-multi-select__tag-wrapper'\n );\n const dropdownWrapper = this.shadowRoot?.querySelector(\n '.cre8-c-multi-select__dropdown'\n );\n\n if (!didClickInside) {\n this.dropdownOpen = false;\n } else if (\n !event.composedPath().includes(label)\n && !event.composedPath().includes(removeTagWrapper)\n && !event.composedPath().includes(buttonsWrapper)\n && !event.composedPath().includes(dropdownWrapper)\n && !this.disabled\n ) {\n this.toggleDropDown();\n }\n }\n\n private _handleListItemClick(e: MouseEvent, index: number) {\n if (\n e.target\n !== this.shadowRoot?.querySelector(`cre8-checkbox-field-item[id=\"${index}\"]`)\n ) {\n this.shadowRoot\n ?.querySelector(`cre8-checkbox-field-item[id=\"${index}\"]`)\n .shadowRoot?.querySelector('input')\n .click();\n }\n }\n\n private _handleDropdownItemInput(item: string, e: InputEvent) {\n const targetCheckbox = e.target as Cre8CheckboxFieldItem;\n\n if (targetCheckbox.checked) {\n this.selectedTagItems = this.selectedTagItems.concat(item);\n } else {\n this.selectedTagItems = this.selectedTagItems.filter((i) => i !== item);\n }\n\n this.emitSelectedItems();\n }\n\n private async _handleRemoveTagClick(item: string) {\n if (!this.disabled) {\n this.selectedTagItems = this.selectedTagItems.filter((i) => i !== item);\n this.shadowRoot\n ?.querySelector(`cre8-checkbox-field-item[label=\"${item}\"]`)\n .shadowRoot?.querySelector('input')\n .click();\n await this.updateComplete;\n\n this.emitSelectedItems();\n }\n }\n\n private dropdownArrowClick() {\n if (!this.disabled) {\n this.toggleDropDown();\n }\n }\n\n private _handleButtonToListKeydown(e: KeyboardEvent): void {\n if (e.code === 'Escape') {\n e.preventDefault();\n this.toggleDropDown();\n }\n }\n\n\n private _handleListKeydown(e: KeyboardEvent) {\n if (e.code === 'Escape') {\n e.preventDefault();\n this.toggleDropDown();\n }\n }\n\n private _initializeAria() {\n this.fieldId = this.fieldId || nanoid();\n if (this.fieldNote || this.slotNotEmpty('fieldNote')) {\n this.ariaDescribedBy = this.ariaDescribedBy || nanoid();\n }\n if (this.successNote || this.errorNote) {\n this.validationAriaDescribedBy = this.validationAriaDescribedBy || nanoid();\n }\n }\n\n /**\n * Aria describedby string based on field notes and error/success notes\n * 1) If both validationAriaDescribedBy (error/success note) and field note exists,\n * render both in the input's `aria-describedby` attribute\n * 2) Otherwise, if only validationAriaDescribedBy exists, then render only that as\n * the `aria-describedby` attribute (input without field note initially, but then error/success is added).\n * 3) Otherwise, render only the `ariaDescribedBy` property (field note only)\n */\n private _fieldNoteAria() {\n if (this.validationAriaDescribedBy && this.ariaDescribedBy) {\n return `${this.ariaDescribedBy} ${this.validationAriaDescribedBy}`; /* 1 */\n }\n if (this.validationAriaDescribedBy && !this.ariaDescribedBy) {\n return this.validationAriaDescribedBy; /* 2 */\n }\n return this.ariaDescribedBy; /* 3 */\n }\n\n /**\n * Render the success or error field notes\n * 1. If there is a successNote, then return the field note with the success message and state.\n * 2. If there is a errorNote, then return the field note with the error message and state.\n */\n private _renderSuccessErrorFieldNote() {\n if (this.successNote) {\n /* 1 */\n return html` <cre8-field-note\n ?isSuccess=${this.isSuccess}\n id=${this.validationAriaDescribedBy}\n class=\"cre8-c-multi-select__field-note-success\"\n iconName=\"success\"\n >\n ${this.successNote}\n </cre8-field-note>`;\n }\n if (this.errorNote) {\n /* 2 */\n return html` <cre8-field-note\n ?isError=${this.isError}\n id=${this.validationAriaDescribedBy}\n class=\"cre8-c-multi-select__field-note-error\"\n iconName=\"error-alt\"\n >\n ${this.errorNote}\n </cre8-field-note>`;\n }\n return null;\n }\n\n render() {\n const componentClassNames = this.componentClassNames(\n 'cre8-c-multi-select',\n {\n 'cre8-is-error': this.isError,\n 'cre8-is-success': this.isSuccess,\n 'cre8-is-disabled': this.disabled,\n 'cre8-c-multi-select--no-clear-icon': !this.selectedTagItems.length,\n }\n );\n\n return html`\n <div class=\"${componentClassNames}\">\n <label class=\"cre8-c-multi-select__label\" id=\"${this.fieldId}\"\n >${this.label}</label\n >\n <div class=\"cre8-c-multi-select__body\" ?disabled=${this.disabled}>\n <div\n class=\"cre8-c-multi-select__content\"\n aria-describedby=\"${ifDefined(this._fieldNoteAria())}\"\n >\n <ul\n class=\"cre8-c-multi-select__tag-wrapper\"\n aria-label=\"selected items\"\n >\n ${this._renderSelectedTags()}\n </ul>\n </div>\n <div class=\"cre8-c-multi-select__icons-wrapper\">\n <cre8-button\n ?hideText=${true}\n svg=\"${svgClear}\"\n text=\"Clear All\"\n variant=\"tertiary\"\n ?disabled=\"${this.disabled}\"\n class=\"cre8-c-multi-select__clear_icon\"\n @click=\"${this.clearAllTags}\"\n >\n </cre8-button>\n <cre8-button\n hideText\n svg=${svgCaretDown}\n variant=\"tertiary\"\n ?disabled=\"${this.disabled}\"\n class=\"cre8-c-multi-select__down_icon\"\n @click=\"${this.dropdownArrowClick}\"\n @keydown=\"${this._handleButtonToListKeydown}\"\n text=\"Open Dropdown\"\n aria-expanded=\"${this.dropdownOpen}\"\n >\n </cre8-button>\n </div>\n </div>\n ${this.dropdownOpen\n ? html`\n <fieldset class=\"cre8-c-multi-select__dropdown\" aria-describedby=\"${this.fieldId}\">\n <ul\n aria-label=\"available items\"\n @keydown=\"${this._handleListKeydown}\"\n >\n ${this._renderDropdownItems()}\n </ul>\n </fieldset>`\n : nothing}\n </div>\n ${this.fieldNote || this.slotNotEmpty('fieldNote')\n ? html`<cre8-field-note\n id=${this.ariaDescribedBy}\n class=\"cre8-c-multi-select__field-note\"\n >\n <slot name=\"fieldNote\">${this.fieldNote}</slot>\n </cre8-field-note>`\n : nothing}\n ${this._renderSuccessErrorFieldNote()}\n `;\n }\n}\n\nif (customElements.get('cre8-multi-select') === undefined) {\n customElements.define('cre8-multi-select', Cre8MultiSelect);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-multi-select': Cre8MultiSelect;\n }\n}\n\nexport default Cre8MultiSelect;\n"]}
1
+ {"version":3,"file":"multi-select.js","sourceRoot":"","sources":["../../../components/multi-select/multi-select.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\n/* eslint-disable no-duplicate-imports */\n/* eslint-disable lit/no-template-arrow */\n/* eslint-disable indent */\n\nimport { ifDefined } from 'lit-html/directives/if-defined.js';\nimport { html, nothing, } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { nanoid } from 'nanoid';\nimport svgCaretDown from '@tmorrow/cre8-wc/icons/Caret_Down.svg?raw';\nimport svgClear from '@tmorrow/cre8-wc/icons/Clear_X.svg?raw';\nimport styles from './multi-select.styles.js';\nimport { Cre8Element } from '../cre8-element';\nimport '../remove-tag/remove-tag';\nimport '../field-note/field-note';\nimport '../button/button';\nimport '../checkbox-field-item/checkbox-field-item';\n// eslint-disable-next-line import/no-named-as-default\nimport Cre8CheckboxFieldItem from '../checkbox-field-item/checkbox-field-item';\n\n/**\n * Multiselect is used when multiple options can be chosen from a static dropdown\n * This component has a list of items in the dropdown that can be added as \"selected tags\"\n * The checkbox will always reflect the selected nature of the item and is not removed\n * from the dropdown when clicked, the tags will be added and removed based on their state.\n *\n * Event `multi-select-change` emits whenever a tag is added or remove from the list and the\n * current list after the change is given in the detail.\n *\n * @slot fieldNote - Container for optional field note content\n *\n * @fires multi-select-change - Fires when a tag is added or removed. `event.detail.selectedItems` is the current selection.\n */\nexport class Cre8MultiSelect extends Cre8Element {\n static styles = [styles];\n\n\n /**\n * The list of string items the user can choose in the dropdown\n *\n * Note: For passing props containing arrays and complex types, you should pass the props using a\n * period in from of the prop like so: `.items=\"[]\"`\n * (this is only needed for Web Components and not the React version)\n * @attr {string[]}\n */\n @property({ type: Array })\n items: string[] = [];\n\n @state()\n selectedTagItems: string[] = [];\n\n /**\n * The list of string items that are initially in the selected list of tags\n * Note: This list MUST be a subset of the array of items to function.\n * i.e. if items=['cat', 'dog', 'bird'], preselectedItems=['cat'] is valid\n * while preselectedItems=['cat', 'goat'] is not and will break the component.\n *\n * Note: For passing props containing arrays and complex types, you should pass the props using a\n * period in from of the prop like so: `.items=\"[]\"`\n * (this is only needed for Web Components and not the React version)\n * @attr {string[]}\n */\n @property({ type: Array })\n preselectedItems: string[];\n\n @state()\n dropdownOpen: boolean = false;\n\n /**\n * The required label that appears above the multiselect\n * @attr {string}\n */\n @property()\n label: string;\n\n /**\n * The unique id of the select\n * @attr {string}\n */\n\n @property()\n fieldId?: string;\n\n /**\n * Optional field note text can be added to provide additional field guidance.\n * @attr {string}\n */\n @property()\n fieldNote?: string;\n\n /**\n * Used to connect the field note in text field to the text menu for accessibility\n * @attr {string}\n */\n @property()\n ariaDescribedBy?: string;\n\n /**\n * Additional aria-describedby connection to id for additional success and error notes to be accessible\n * @attr {string}\n */\n @property()\n validationAriaDescribedBy?: string;\n\n /**\n * The disabled attribute on the select\n * @attr {boolean}\n */\n @property({ type: Boolean, reflect: true })\n disabled?: boolean;\n\n /**\n * Changes the component's treatment to represent an error state\n * @attr {boolean}\n */\n @property({ type: Boolean, reflect: true })\n isError?: boolean;\n\n /**\n * The error field note that appears below the default field note\n * @attr {string}\n */\n @property()\n errorNote?: string;\n\n /**\n * Changes the component's treatment to represent a success state\n * @attr {boolean}\n */\n @property({ type: Boolean, reflect: true })\n isSuccess?: boolean;\n\n /**\n * The success field note that appears below the default field note\n * @attr {string}\n */\n @property()\n successNote?: string;\n\n /* Life Cycle Methods */\n\n constructor() {\n super();\n this._handleOnClick = this._handleOnClick.bind(this);\n }\n\n firstUpdated() {\n if (this.preselectedItems) this.setPreselectedItemsinDropdown();\n this.selectedTagItems = this.preselectedItems || [];\n this._initializeAria();\n }\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('click', this._handleOnClick, false);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('click', this._handleOnClick, false);\n }\n\n /* HTML Content functions */\n\n private _renderDropdownItems() {\n return this.items.map(\n // Note: Keyboard can already navigate to the checkbox\n // eslint-disable-next-line lit-a11y/click-events-have-key-events\n (item, index) => html`<li\n @click=\"${(e: MouseEvent) => this._handleListItemClick(e, index)}\"\n >\n <cre8-checkbox-field-item\n .checked=\"${!!this.selectedTagItems.includes(item)}\"\n label=${item}\n id=${index}\n @input=\"${(e: InputEvent) => this._handleDropdownItemInput(item, e)}\"\n >\n </cre8-checkbox-field-item>\n </li>`\n );\n }\n\n private _renderSelectedTags() {\n if (!this.selectedTagItems.length) {\n return nothing;\n }\n return this.selectedTagItems.map(\n (item) => html`<li>\n <cre8-remove-tag\n text=\"${item}\"\n color=\"neutral\"\n shape=\"square\"\n ?disabled=\"${this.disabled}\"\n @remove-tag-click=\"${() => this._handleRemoveTagClick(item)}\"\n ></cre8-remove-tag>\n </li>`\n );\n }\n\n /* Helper Functions */\n\n private setPreselectedItemsinDropdown() {\n this.preselectedItems.forEach((item) => {\n this.selectedTagItems = this.selectedTagItems.concat(item);\n });\n }\n\n private clearAllTags() {\n if (!this.disabled) {\n if (this.dropdownOpen) {\n this.selectedTagItems.forEach((item) => {\n this.shadowRoot\n ?.querySelector(`cre8-checkbox-field-item[label=\"${item}\"]`)\n .shadowRoot?.querySelector('input')\n .click();\n });\n }\n this.selectedTagItems = [];\n\n this.emitSelectedItems();\n }\n }\n\n private emitSelectedItems(): void {\n const customEvent = new CustomEvent('multi-select-change', {\n detail: {\n selectedItems: this.selectedTagItems,\n },\n bubbles: true,\n composed: true,\n });\n this.dispatchWithLegacyAlias(customEvent);\n }\n\n private toggleDropDown(): void {\n this.dropdownOpen = !this.dropdownOpen;\n }\n\n /* Click Event Functions */\n\n private _handleOnClick(event?: MouseEvent) {\n if (!this.shadowRoot?.host) {\n throw Error(\n 'Could not determine navigation context during click handler'\n );\n }\n\n const didClickInside = event.composedPath().includes(this.shadowRoot.host);\n const label = this.renderRoot.querySelector(\n '.cre8-c-multi-select__label'\n );\n const buttonsWrapper = this.renderRoot.querySelector(\n '.cre8-c-multi-select__icons-wrapper'\n );\n const removeTagWrapper = this.shadowRoot?.querySelector(\n '.cre8-c-multi-select__tag-wrapper'\n );\n const dropdownWrapper = this.shadowRoot?.querySelector(\n '.cre8-c-multi-select__dropdown'\n );\n\n if (!didClickInside) {\n this.dropdownOpen = false;\n } else if (\n !event.composedPath().includes(label)\n && !event.composedPath().includes(removeTagWrapper)\n && !event.composedPath().includes(buttonsWrapper)\n && !event.composedPath().includes(dropdownWrapper)\n && !this.disabled\n ) {\n this.toggleDropDown();\n }\n }\n\n private _handleListItemClick(e: MouseEvent, index: number) {\n if (\n e.target\n !== this.shadowRoot?.querySelector(`cre8-checkbox-field-item[id=\"${index}\"]`)\n ) {\n this.shadowRoot\n ?.querySelector(`cre8-checkbox-field-item[id=\"${index}\"]`)\n .shadowRoot?.querySelector('input')\n .click();\n }\n }\n\n private _handleDropdownItemInput(item: string, e: InputEvent) {\n const targetCheckbox = e.target as Cre8CheckboxFieldItem;\n\n if (targetCheckbox.checked) {\n this.selectedTagItems = this.selectedTagItems.concat(item);\n } else {\n this.selectedTagItems = this.selectedTagItems.filter((i) => i !== item);\n }\n\n this.emitSelectedItems();\n }\n\n private async _handleRemoveTagClick(item: string) {\n if (!this.disabled) {\n this.selectedTagItems = this.selectedTagItems.filter((i) => i !== item);\n this.shadowRoot\n ?.querySelector(`cre8-checkbox-field-item[label=\"${item}\"]`)\n .shadowRoot?.querySelector('input')\n .click();\n await this.updateComplete;\n\n this.emitSelectedItems();\n }\n }\n\n private dropdownArrowClick() {\n if (!this.disabled) {\n this.toggleDropDown();\n }\n }\n\n private _handleButtonToListKeydown(e: KeyboardEvent): void {\n if (e.code === 'Escape') {\n e.preventDefault();\n this.toggleDropDown();\n }\n }\n\n\n private _handleListKeydown(e: KeyboardEvent) {\n if (e.code === 'Escape') {\n e.preventDefault();\n this.toggleDropDown();\n }\n }\n\n private _initializeAria() {\n this.fieldId = this.fieldId || nanoid();\n if (this.fieldNote || this.slotNotEmpty('fieldNote')) {\n this.ariaDescribedBy = this.ariaDescribedBy || nanoid();\n }\n if (this.successNote || this.errorNote) {\n this.validationAriaDescribedBy = this.validationAriaDescribedBy || nanoid();\n }\n }\n\n /**\n * Aria describedby string based on field notes and error/success notes\n * 1) If both validationAriaDescribedBy (error/success note) and field note exists,\n * render both in the input's `aria-describedby` attribute\n * 2) Otherwise, if only validationAriaDescribedBy exists, then render only that as\n * the `aria-describedby` attribute (input without field note initially, but then error/success is added).\n * 3) Otherwise, render only the `ariaDescribedBy` property (field note only)\n */\n private _fieldNoteAria() {\n if (this.validationAriaDescribedBy && this.ariaDescribedBy) {\n return `${this.ariaDescribedBy} ${this.validationAriaDescribedBy}`; /* 1 */\n }\n if (this.validationAriaDescribedBy && !this.ariaDescribedBy) {\n return this.validationAriaDescribedBy; /* 2 */\n }\n return this.ariaDescribedBy; /* 3 */\n }\n\n /**\n * Render the success or error field notes\n * 1. If there is a successNote, then return the field note with the success message and state.\n * 2. If there is a errorNote, then return the field note with the error message and state.\n */\n private _renderSuccessErrorFieldNote() {\n if (this.successNote) {\n /* 1 */\n return html` <cre8-field-note\n ?isSuccess=${this.isSuccess}\n id=${this.validationAriaDescribedBy}\n class=\"cre8-c-multi-select__field-note-success\"\n iconName=\"success\"\n >\n ${this.successNote}\n </cre8-field-note>`;\n }\n if (this.errorNote) {\n /* 2 */\n return html` <cre8-field-note\n ?isError=${this.isError}\n id=${this.validationAriaDescribedBy}\n class=\"cre8-c-multi-select__field-note-error\"\n iconName=\"error-alt\"\n >\n ${this.errorNote}\n </cre8-field-note>`;\n }\n return null;\n }\n\n render() {\n const componentClassNames = this.componentClassNames(\n 'cre8-c-multi-select',\n {\n 'cre8-is-error': this.isError,\n 'cre8-is-success': this.isSuccess,\n 'cre8-is-disabled': this.disabled,\n 'cre8-c-multi-select--no-clear-icon': !this.selectedTagItems.length,\n }\n );\n\n return html`\n <div class=\"${componentClassNames}\">\n <label class=\"cre8-c-multi-select__label\" id=\"${this.fieldId}\"\n >${this.label}</label\n >\n <div class=\"cre8-c-multi-select__body\" ?disabled=${this.disabled}>\n <div\n class=\"cre8-c-multi-select__content\"\n aria-describedby=\"${ifDefined(this._fieldNoteAria())}\"\n >\n <ul\n class=\"cre8-c-multi-select__tag-wrapper\"\n aria-label=\"selected items\"\n >\n ${this._renderSelectedTags()}\n </ul>\n </div>\n <div class=\"cre8-c-multi-select__icons-wrapper\">\n <cre8-button\n ?hideText=${true}\n svg=\"${svgClear}\"\n text=\"Clear All\"\n variant=\"tertiary\"\n ?disabled=\"${this.disabled}\"\n class=\"cre8-c-multi-select__clear_icon\"\n @click=\"${this.clearAllTags}\"\n >\n </cre8-button>\n <cre8-button\n hideText\n svg=${svgCaretDown}\n variant=\"tertiary\"\n ?disabled=\"${this.disabled}\"\n class=\"cre8-c-multi-select__down_icon\"\n @click=\"${this.dropdownArrowClick}\"\n @keydown=\"${this._handleButtonToListKeydown}\"\n text=\"Open Dropdown\"\n aria-expanded=\"${this.dropdownOpen}\"\n >\n </cre8-button>\n </div>\n </div>\n ${this.dropdownOpen\n ? html`\n <fieldset class=\"cre8-c-multi-select__dropdown\" aria-describedby=\"${this.fieldId}\">\n <ul\n aria-label=\"available items\"\n @keydown=\"${this._handleListKeydown}\"\n >\n ${this._renderDropdownItems()}\n </ul>\n </fieldset>`\n : nothing}\n </div>\n ${this.fieldNote || this.slotNotEmpty('fieldNote')\n ? html`<cre8-field-note\n id=${this.ariaDescribedBy}\n class=\"cre8-c-multi-select__field-note\"\n >\n <slot name=\"fieldNote\">${this.fieldNote}</slot>\n </cre8-field-note>`\n : nothing}\n ${this._renderSuccessErrorFieldNote()}\n `;\n }\n}\n\nif (customElements.get('cre8-multi-select') === undefined) {\n customElements.define('cre8-multi-select', Cre8MultiSelect);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cre8-multi-select': Cre8MultiSelect;\n }\n}\n\nexport default Cre8MultiSelect;\n"]}
@@ -54,7 +54,7 @@ import './page-counter/page-counter';
54
54
  *
55
55
  * @slot - Optional content rendered alongside the pagination controls
56
56
  *
57
- * @fires pagination.click - Fires when the page changes. `event.detail` is `{ buttonName, value }` where `value` is the new current page.
57
+ * @fires pagination-change - Fires when the page changes. `event.detail` is `{ buttonName, value }` where `value` is the new current page.
58
58
  */
59
59
  export declare class Cre8Pagination extends Cre8Element {
60
60
  static styles: import("lit").CSSResult[];
@@ -71,7 +71,7 @@ import styles from './pagination.styles.js';
71
71
  *
72
72
  * @slot - Optional content rendered alongside the pagination controls
73
73
  *
74
- * @fires pagination.click - Fires when the page changes. `event.detail` is `{ buttonName, value }` where `value` is the new current page.
74
+ * @fires pagination-change - Fires when the page changes. `event.detail` is `{ buttonName, value }` where `value` is the new current page.
75
75
  */
76
76
  export class Cre8Pagination extends Cre8Element {
77
77
  constructor() {
@@ -104,7 +104,7 @@ export class Cre8Pagination extends Cre8Element {
104
104
  this._currentPage = page;
105
105
  this.currentPage = this._currentPage;
106
106
  this.requestUpdate('currentPage', old);
107
- this.dispatchEvent(new CustomEvent('pagination.click', { detail: { buttonName: _buttonName ?? this.currentPage.toString(), value: this.currentPage } }));
107
+ this.dispatchWithLegacyAlias(new CustomEvent('pagination-change', { detail: { buttonName: _buttonName ?? this.currentPage.toString(), value: this.currentPage } }));
108
108
  };
109
109
  }
110
110
  /**