@ukic/web-components 3.15.0 → 3.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  3. package/dist/cjs/ic-data-list.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ic-footer.cjs.entry.js +9 -5
  6. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +2 -2
  9. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-radio-option.cjs.entry.js +9 -6
  19. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-toast.cjs.entry.js +14 -6
  23. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/collection/components/ic-button/ic-button.stories.js +3 -3
  26. package/dist/collection/components/ic-checkbox/ic-checkbox.css +2 -0
  27. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +18 -18
  28. package/dist/collection/components/ic-data-list/ic-data-list.css +1 -0
  29. package/dist/collection/components/ic-data-row/ic-data-row.css +2 -0
  30. package/dist/collection/components/ic-footer/ic-footer.js +29 -5
  31. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  32. package/dist/collection/components/ic-footer/ic-footer.stories.js +31 -0
  33. package/dist/collection/components/ic-hero/ic-hero.css +0 -2
  34. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +9 -0
  35. package/dist/collection/components/ic-input-validation/ic-input-validation.css +2 -1
  36. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.stories.js +17 -18
  37. package/dist/collection/components/ic-menu/ic-menu.css +8 -0
  38. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +12 -0
  39. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +2 -7
  40. package/dist/collection/components/ic-pagination/ic-pagination.stories.js +3 -3
  41. package/dist/collection/components/ic-popover-menu/ic-popover-menu.stories.js +7 -7
  42. package/dist/collection/components/ic-radio-group/ic-radio-group.css +6 -6
  43. package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +12 -12
  44. package/dist/collection/components/ic-radio-option/ic-radio-option.css +60 -54
  45. package/dist/collection/components/ic-radio-option/ic-radio-option.js +9 -5
  46. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  47. package/dist/collection/components/ic-search-bar/ic-search-bar.css +8 -0
  48. package/dist/collection/components/ic-search-bar/ic-search-bar.stories.js +19 -19
  49. package/dist/collection/components/ic-select/ic-select_(multi).stories.js +20 -20
  50. package/dist/collection/components/ic-select/ic-select_(searchable).stories.js +21 -21
  51. package/dist/collection/components/ic-tab-context/ic-tabs.stories.js +1 -1
  52. package/dist/collection/components/ic-text-field/ic-text-field.stories.js +19 -19
  53. package/dist/collection/components/ic-toast/ic-toast.css +26 -1
  54. package/dist/collection/components/ic-toast/ic-toast.js +39 -5
  55. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  56. package/dist/collection/components/ic-toast/ic-toast.stories.js +21 -9
  57. package/dist/collection/components/ic-toggle-button/ic-toggle-button.stories.js +14 -14
  58. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.stories.js +7 -7
  59. package/dist/collection/components/ic-tooltip/ic-tooltip.stories.js +11 -11
  60. package/dist/collection/components/ic-top-navigation/ic-top-navigation.stories.js +15 -15
  61. package/dist/collection/components/ic-typography/ic-typography.stories.js +1 -1
  62. package/dist/collection/patterns/top-nav-content-footer.stories.js +1 -1
  63. package/dist/components/ic-badge.js.map +1 -1
  64. package/dist/components/ic-checkbox.js.map +1 -1
  65. package/dist/components/ic-chip.js.map +1 -1
  66. package/dist/components/ic-classification-banner.js.map +1 -1
  67. package/dist/components/ic-data-list.js.map +1 -1
  68. package/dist/components/ic-data-row.js.map +1 -1
  69. package/dist/components/ic-footer.js +10 -5
  70. package/dist/components/ic-footer.js.map +1 -1
  71. package/dist/components/ic-hero.js.map +1 -1
  72. package/dist/components/ic-input-component-container2.js +1 -1
  73. package/dist/components/ic-input-component-container2.js.map +1 -1
  74. package/dist/components/ic-input-validation2.js +1 -1
  75. package/dist/components/ic-input-validation2.js.map +1 -1
  76. package/dist/components/ic-menu2.js +1 -1
  77. package/dist/components/ic-menu2.js.map +1 -1
  78. package/dist/components/ic-navigation-group.js +1 -1
  79. package/dist/components/ic-navigation-group.js.map +1 -1
  80. package/dist/components/ic-navigation-item.js +1 -1
  81. package/dist/components/ic-navigation-item.js.map +1 -1
  82. package/dist/components/ic-radio-group.js +1 -1
  83. package/dist/components/ic-radio-group.js.map +1 -1
  84. package/dist/components/ic-radio-option.js +10 -7
  85. package/dist/components/ic-radio-option.js.map +1 -1
  86. package/dist/components/ic-search-bar.js +1 -1
  87. package/dist/components/ic-search-bar.js.map +1 -1
  88. package/dist/components/ic-side-navigation.js.map +1 -1
  89. package/dist/components/ic-skeleton.js.map +1 -1
  90. package/dist/components/ic-step.js.map +1 -1
  91. package/dist/components/ic-toast.js +15 -6
  92. package/dist/components/ic-toast.js.map +1 -1
  93. package/dist/core/core.esm.js +1 -1
  94. package/dist/core/core.esm.js.map +1 -1
  95. package/dist/core/p-082e0068.entry.js +2 -0
  96. package/dist/core/p-082e0068.entry.js.map +1 -0
  97. package/dist/core/p-3238389a.entry.js +2 -0
  98. package/dist/core/p-3238389a.entry.js.map +1 -0
  99. package/dist/core/p-33e35173.entry.js.map +1 -1
  100. package/dist/core/p-52c66bfe.entry.js +2 -0
  101. package/dist/core/p-52c66bfe.entry.js.map +1 -0
  102. package/dist/core/p-6ed48c46.entry.js +2 -0
  103. package/dist/core/p-6ed48c46.entry.js.map +1 -0
  104. package/dist/core/p-8abcc114.entry.js.map +1 -1
  105. package/dist/core/p-9c52ee48.entry.js +2 -0
  106. package/dist/core/p-9c52ee48.entry.js.map +1 -0
  107. package/dist/core/p-afbba548.entry.js +2 -0
  108. package/dist/core/p-afbba548.entry.js.map +1 -0
  109. package/dist/core/p-b4a2f6fa.entry.js.map +1 -1
  110. package/dist/core/{p-0c4ceed9.entry.js → p-b59504f1.entry.js} +2 -2
  111. package/dist/core/p-b59504f1.entry.js.map +1 -0
  112. package/dist/core/p-b83a736d.entry.js +3 -0
  113. package/dist/core/p-b83a736d.entry.js.map +1 -0
  114. package/dist/core/{p-4bdeb62d.entry.js → p-bdda404b.entry.js} +2 -2
  115. package/dist/core/p-bdda404b.entry.js.map +1 -0
  116. package/dist/core/p-ffd0d9d1.entry.js.map +1 -1
  117. package/dist/esm/core.js +1 -1
  118. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  119. package/dist/esm/ic-data-list.entry.js.map +1 -1
  120. package/dist/esm/ic-data-row.entry.js.map +1 -1
  121. package/dist/esm/ic-footer.entry.js +9 -5
  122. package/dist/esm/ic-footer.entry.js.map +1 -1
  123. package/dist/esm/ic-hero.entry.js.map +1 -1
  124. package/dist/esm/ic-input-component-container_3.entry.js +2 -2
  125. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  126. package/dist/esm/ic-input-label_2.entry.js +1 -1
  127. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  128. package/dist/esm/ic-navigation-group.entry.js +1 -1
  129. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  130. package/dist/esm/ic-navigation-item.entry.js +1 -1
  131. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  132. package/dist/esm/ic-radio-group.entry.js +1 -1
  133. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  134. package/dist/esm/ic-radio-option.entry.js +9 -6
  135. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  136. package/dist/esm/ic-search-bar.entry.js +1 -1
  137. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  138. package/dist/esm/ic-toast.entry.js +14 -6
  139. package/dist/esm/ic-toast.entry.js.map +1 -1
  140. package/dist/esm/loader.js +1 -1
  141. package/dist/types/components/ic-footer/ic-footer.d.ts +4 -0
  142. package/dist/types/components/ic-toast/ic-toast.d.ts +5 -1
  143. package/dist/types/components.d.ts +16 -0
  144. package/hydrate/index.js +42 -25
  145. package/hydrate/index.mjs +42 -25
  146. package/package.json +4 -4
  147. package/vscode-data.json +19 -0
  148. package/dist/core/p-042cfc35.entry.js +0 -2
  149. package/dist/core/p-042cfc35.entry.js.map +0 -1
  150. package/dist/core/p-06c950a3.entry.js +0 -2
  151. package/dist/core/p-06c950a3.entry.js.map +0 -1
  152. package/dist/core/p-0c4ceed9.entry.js.map +0 -1
  153. package/dist/core/p-11d8a504.entry.js +0 -3
  154. package/dist/core/p-11d8a504.entry.js.map +0 -1
  155. package/dist/core/p-3680f22c.entry.js +0 -2
  156. package/dist/core/p-3680f22c.entry.js.map +0 -1
  157. package/dist/core/p-4bdeb62d.entry.js.map +0 -1
  158. package/dist/core/p-a5415f6c.entry.js +0 -2
  159. package/dist/core/p-a5415f6c.entry.js.map +0 -1
  160. package/dist/core/p-b3cb1e35.entry.js +0 -2
  161. package/dist/core/p-b3cb1e35.entry.js.map +0 -1
  162. package/dist/core/p-e7af1e2d.entry.js +0 -2
  163. package/dist/core/p-e7af1e2d.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ic-toast.js","sourceRoot":"","sources":["../../../src/components/ic-toast/ic-toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,aAAa,EACb,UAAU,EACV,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAI7B,MAAM,kCAAkC,GAAG,IAAI,CAAC;AAChD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC;;;GAGG;AAMH,MAAM,OAAO,KAAK;IALlB;QAOU,wBAAmB,GAA6B,EAAE,CAAC;QASlD,kBAAa,GAAG,GAAG,CAAC;QACpB,YAAO,GAAG,KAAK,CAAC;QAEzB;;;WAGG;QACsB,uBAAkB,GAAI,IAAI,CAAC;QAEpD;;WAEG;QACK,2BAAsB,GAAI,SAAS,CAAC;QAE5C;;WAEG;QACsB,gBAAW,GAAuB,QAAQ,CAAC;QAgM5D,kBAAa,GAAG,GAAS,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC,CAAC;QAEM,yBAAoB,GAAG,GAAG,EAAE;YAClC,IAAI,CAAC,aAAa;gBAChB,CAAC,kCAAkC,GAAG,IAAI,CAAC,kBAAmB,CAAC,GAAG,GAAG,CAAC;QAC1E,CAAC,CAAC;QAkDM,YAAO,GAAG,GAAS,EAAE;YAC3B,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEM,WAAM,GAAG,GAAS,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAgB,CAAC,CAAC;QACzD,CAAC,CAAC;KAuFH;IAtVC,wBAAwB,CAAC,QAA2B;QAClD,IAAI,CAAC,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC;IACxC,CAAC;IA2BD,oBAAoB;QAClB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB;;QACf,IAAI,CAAC,cAAc,CACjB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,wBAAwB,EAC9C,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,IAAG,wBAAwB,CAClE,CAAC;QAEF,IAAI,IAAI,CAAC,kBAAmB,GAAG,IAAI;YAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEpE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC;YAAE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC;QAE9C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;YAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,mBAAmB;gBACtB,MAAA,IAAI,CAAC,oBAAoB,mCAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;QACvE,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,YAAY,GAAW,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;gBACtD,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;gBACrB,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,YAAY,CAClB,YAAY,EACZ,IAAI,CAAC,OAAO;gBACV,CAAC,CAAC,IAAI,CAAC,mBAAmB,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS;gBACnE,CAAC,CAAC,IAAI,CAAC,OAAO,CACjB,CAAC;YACF,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;gBAC5B,IAAI,CAAC,EAAE,CAAC,YAAY,CAClB,kBAAkB,EAClB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CACrE,CAAC;QACN,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,gCAAgC,CAC9B,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAC7C,OAAO,CACR,CAAC;IACJ,CAAC;IAED,kBAAkB;;QAChB,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAE7B,MAAM,aAAa,GAAG,OAAO,CAC3B,IAAI,CAAC,EAAE,EACP,QAAQ,CACiB,CAAC;YAC5B,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,aAAa;gBAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChE,IAAI,aAAa;gBAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEhE,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IAGD,mBAAmB;;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,OAAO,CAC3B,IAAI,CAAC,EAAE,EACP,QAAQ,CACiB,CAAC;YAC5B,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,aAAa;gBAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChE,IAAI,aAAa;gBAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAGD,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAGD,cAAc,CAAC,EAAiB;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;oBACf,KAAK,KAAK;wBACR,EAAE,CAAC,cAAc,EAAE,CAAC;wBACpB,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;wBACxD,MAAM;oBACR,KAAK,QAAQ;wBACX,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnC,EAAE,CAAC,wBAAwB,EAAE,CAAC;wBAC9B,MAAM;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,EAAE,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;oBACrB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,QAAQ,CAAC;oBACnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAID,WAAW,CAAC,EAAc;QACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,YAAY;gBACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;oBACrC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACtB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;oBAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CACrC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,CACxB,CAAC;wBACF,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,WAAW,CAC5C,IAAI,CAAC,oBAAoB,EACzB,kCAAkC,CACnC,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CACrC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,CACxB,CAAC;YACF,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,WAAW,CAC5C,IAAI,CAAC,oBAAoB,EACzB,kCAAkC,CACnC,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;YACrE,OAAO,QAAQ,CAAC,aAA4B,CAAC;QAC/C,CAAC;IACH,CAAC;IAWO,cAAc,CACpB,cAAuB,EACvB,cAAwB;QAExB,IAAI,cAAc,IAAI,cAAc,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CACX,gCAAgC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAC7D,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAC/C,GACE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC/B,+DAA+D,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,0BAA0B,CAChC,WAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GACV,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEhE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/C,OAAO,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAExC,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;YACrC,YAAY,GAAG,KAAK,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;YACA,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAEO,qBAAqB;QAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IAC3B,CAAC;IAEO,QAAQ,CAAC,QAAqB;QACpC,OAAO,QAAQ,KAAK,IAAI,CAAC,EAAE;YACzB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAW,CAAC,aAAa;YACrC,CAAC,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC;IAC1C,CAAC;IAYD,MAAM;QACJ,MAAM,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,sBAAsB,GACvB,GAAG,IAAI,CAAC;QACT,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO;gBAC7B,CAAC,oBAAoB,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,SAAS;aACvD,EACD,QAAQ,EAAC,GAAG,EACZ,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,eACxB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;YAErC,4DAAK,KAAK,EAAC,WAAW;gBACnB,OAAO,IAAI,OAAO,IAAI,CACrB,4DAAK,KAAK,EAAC,sBAAsB;oBAC/B,4DACE,KAAK,EAAE;4BACL,CAAC,SAAS,CAAC,EAAE,IAAI;4BACjB,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,IAAI;yBAC7B,GACI;oBACN,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,YAAM,IAAI,EAAC,cAAc,GAAG,CAC7B,CAAC,CAAC,CAAC,CACF,YACE,KAAK,EAAC,YAAY,EAClB,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,GAChC,CACT,CACG,CACP;gBACD,4DACE,KAAK,EAAE;wBACL,CAAC,eAAe,CAAC,EAAE,IAAI;wBACvB,CAAC,SAAS,CAAC,EACT,OAAO,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;qBAChE;oBAED,4DAAK,KAAK,EAAC,YAAY;wBACrB,sEAAe,OAAO,EAAC,gBAAgB,EAAC,KAAK,EAAC,eAAe,IAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAK,OAAO,CAAM,CAAC,CAAC,CAAC,aAAI,OAAO,CAAK,CAAC,CAChD;wBACf,OAAO,IAAI,CACV,sEAAe,OAAO,EAAC,MAAM,EAAC,KAAK,EAAC,eAAe,IAChD,OAAO,IAAI,4DAAI,OAAO,CAAK,CACd,CACjB,CACG;oBACL,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAChC,4DAAK,KAAK,EAAC,wBAAwB;wBACjC,6DAAM,IAAI,EAAC,QAAQ,GAAG,CAClB,CACP,CACG;gBACL,CAAC,QAAQ,CAAC,CAAC,CAAC,CACX,4BACE,KAAK,EAAC,qBAAqB,EAC3B,KAAK,EAAC,MAAM,EACZ,UAAU,QACV,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,IAAI,CAAC,aAAa,EAC5B,WAAW,EAAC,eAAe,GACL,CACzB,CAAC,CAAC,CAAC,CACF,iBACE,EAAE,EAAC,gBAAgB,EACnB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,OAAO,EAAC,eAAe,gBACX,sBAAsB,GACvB,CACd,CACG,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\nimport {\n getSlot,\n isPropDefined,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcActivationTypes, IcStatusVariants } from \"../../utils/types\";\nimport { ActionAreaElementTypes } from \"./ic-toast.types\";\n\nconst AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;\nconst TOAST_HEADING_CHAR_LIMIT = 70;\nconst TOAST_MESSAGE_CHAR_LIMIT = 140;\n\n/**\n * @slot action - IcButton or IcLink is placed below header and message. If used will default toast to manual `dismiss` type.\n * @slot neutral-icon - A custom neutral icon is placed on the left side of the component. If used will default toast to `neutral` variant.\n */\n@Component({\n tag: \"ic-toast\",\n styleUrl: \"ic-toast.css\",\n shadow: true,\n})\nexport class Toast {\n private dismissTimeout: number;\n private interactiveElements: ActionAreaElementTypes[] = [];\n private neutralVariantLabel: string;\n private timerRefreshInterval: number;\n private focusInteractiveElement: boolean;\n private shiftKeyPressed: boolean;\n\n @Element() el: HTMLIcToastElement;\n\n @State() isManual: boolean;\n @State() timerProgress = 100;\n @State() visible = false;\n\n /**\n * If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)\n * (NOTE: Has a minimum value of `5000ms`)\n */\n @Prop({ mutable: true }) autoDismissTimeout? = 5000;\n\n /**\n * If toast can be manually dismissed, this prop sets a custom aria-label for the ic-button component\n */\n @Prop() dismissButtonAriaLabel? = \"dismiss\";\n\n /**\n * How the toast will be dismissed. If manual will display a dismiss button.\n */\n @Prop({ mutable: true }) dismissMode?: IcActivationTypes = \"manual\";\n @Watch(\"dismissMode\")\n dismissModeChangeHandler(newValue: IcActivationTypes): void {\n this.isManual = newValue === \"manual\";\n }\n\n /**\n * The title to display at the start of the toast. (NOTE: Should be no more than `70` characters)\n */\n @Prop() heading!: string;\n\n /**\n * The main body message of the toast. (NOTE: Should be no more than `140` characters)\n */\n @Prop() message?: string;\n\n /**\n * Provides a custom alt-text to be announced to screen readers, if slotting a custom neutral icon\n */\n @Prop() neutralIconAriaLabel?: string;\n\n /**\n * The variant of the toast being rendered\n */\n @Prop({ mutable: true }) variant?: IcStatusVariants;\n\n /**\n * Is emitted when the user dismisses the toast\n */\n @Event() icDismiss: EventEmitter<void>;\n\n disconnectedCallback(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n }\n\n componentWillLoad(): void {\n this.handleLongText(\n this.heading.length > TOAST_HEADING_CHAR_LIMIT,\n !!this.message && this.message?.length > TOAST_MESSAGE_CHAR_LIMIT\n );\n\n if (this.autoDismissTimeout! < 5000) this.autoDismissTimeout = 5000;\n\n if (isSlotUsed(this.el, \"action\")) this.dismissMode = \"manual\";\n this.isManual = this.dismissMode === \"manual\";\n\n if (isSlotUsed(this.el, \"neutral-icon\")) this.variant = \"neutral\";\n if (this.variant === \"neutral\") {\n this.neutralVariantLabel =\n this.neutralIconAriaLabel ?? VARIANT_ICONS[this.variant].ariaLabel;\n }\n\n if (this.isManual) {\n const toastMessage: string = isPropDefined(this.message)\n ? `. ${this.message}`\n : \"\";\n this.el.setAttribute(\n \"aria-label\",\n this.variant\n ? this.neutralVariantLabel || VARIANT_ICONS[this.variant].ariaLabel\n : this.heading\n );\n (this.variant || this.message) &&\n this.el.setAttribute(\n \"aria-description\",\n this.variant ? `${this.heading}${toastMessage}` : this.message || \"\"\n );\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Toast\"\n );\n }\n\n componentDidUpdate(): void {\n if (this.focusInteractiveElement && this.isManual) {\n this.resetAutoDismissTimer();\n\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n\n this.focusInteractiveElement = false;\n this.findNextInteractiveElement(this.shiftKeyPressed).setFocus();\n this.shiftKeyPressed = false;\n }\n }\n\n @Watch(\"visible\")\n watchVisibleHandler(): void {\n if (this.visible) {\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n } else {\n this.interactiveElements = [];\n }\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleDismiss(): void {\n this.visible = false;\n this.resetAutoDismissTimer();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.visible) {\n if (this.isManual) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.findNextInteractiveElement(ev.shiftKey).setFocus();\n break;\n case \"Escape\":\n !ev.repeat && this.dismissAction();\n ev.stopImmediatePropagation();\n break;\n }\n } else {\n if (ev.key === \"Tab\") {\n this.shiftKeyPressed = ev.shiftKey;\n this.focusInteractiveElement = true;\n }\n }\n }\n }\n\n @Listen(\"mouseenter\")\n @Listen(\"mouseleave\")\n handleTimer(ev: MouseEvent): void {\n switch (ev.type) {\n case \"mouseenter\":\n if (!this.isManual) {\n this.resetAutoDismissTimer();\n }\n this.isManual = true;\n break;\n case \"mouseleave\":\n if (this.dismissMode === \"automatic\") {\n this.isManual = false;\n this.interactiveElements = [];\n if (this.visible) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n }\n }\n break;\n }\n }\n\n /**\n * @internal Used to display the individual toast.\n * @returns The element that previously had focus before the toast appeared\n */\n @Method()\n async setVisible(): Promise<HTMLElement | null> {\n if (!this.visible) this.visible = true;\n if (!this.isManual) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n return null;\n } else {\n window.setTimeout(() => this.interactiveElements[0].setFocus(), 200);\n return document.activeElement as HTMLElement;\n }\n }\n\n private dismissAction = (): void => {\n this.icDismiss.emit();\n };\n\n private handleProgressChange = () => {\n this.timerProgress -=\n (AUTO_DISMISS_TIMER_REFRESH_RATE_MS / this.autoDismissTimeout!) * 100;\n };\n\n private handleLongText(\n headingTooLong: boolean,\n messageTooLong?: boolean\n ): void {\n if (messageTooLong || headingTooLong) {\n console.error(\n `Too many characters in toast ${headingTooLong ? \"heading\" : \"\"}${\n headingTooLong && messageTooLong ? \" and \" : \"\"\n }${\n messageTooLong ? \"message\" : \"\"\n }. Refer to character limits specified in the prop description`\n );\n }\n }\n\n private findNextInteractiveElement(\n isBackwards: boolean\n ): ActionAreaElementTypes {\n const firstEl = this.interactiveElements[0];\n const lastEl =\n this.interactiveElements[this.interactiveElements.length - 1];\n\n if (this.isActive(isBackwards ? firstEl : lastEl))\n return isBackwards ? lastEl : firstEl;\n\n let currentIndex = 0;\n\n return this.interactiveElements.some((el, index) => {\n if (!this.isActive(el)) return false;\n currentIndex = index;\n return true;\n })\n ? this.interactiveElements[currentIndex + (isBackwards ? -1 : 1)]\n : firstEl;\n }\n\n private resetAutoDismissTimer(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n }\n\n private isActive(targetEl: HTMLElement): boolean {\n return targetEl === this.el\n ? !!this.el.shadowRoot!.activeElement\n : document.activeElement === targetEl;\n }\n\n private onFocus = (): void => {\n if (this.focusInteractiveElement) {\n this.isManual = true;\n }\n };\n\n private onBlur = (): void => {\n this.handleTimer({ type: \"mouseleave\" } as MouseEvent);\n };\n\n render() {\n const {\n variant,\n heading,\n message,\n visible,\n isManual,\n dismissButtonAriaLabel,\n } = this;\n return (\n <Host\n class={{\n [\"ic-toast-hidden\"]: !visible,\n [`ic-toast-variant-${variant}`]: variant !== undefined,\n }}\n tabindex=\"0\"\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n role={isManual ? \"dialog\" : \"alert\"}\n aria-live={isManual ? null : \"polite\"}\n >\n <div class=\"container\">\n {variant && visible && (\n <div class=\"toast-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n {variant === \"neutral\" ? (\n <slot name=\"neutral-icon\" />\n ) : (\n <span\n class=\"toast-icon\"\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n )}\n </div>\n )}\n <div\n class={{\n [\"toast-content\"]: true,\n [\"no-icon\"]:\n variant === \"neutral\" && !isSlotUsed(this.el, \"neutral-icon\"),\n }}\n >\n <div class=\"toast-text\">\n <ic-typography variant=\"subtitle-large\" class=\"toast-heading\">\n {visible && (isManual ? <h5>{heading}</h5> : <p>{heading}</p>)}\n </ic-typography>\n {message && (\n <ic-typography variant=\"body\" class=\"toast-message\">\n {visible && <p>{message}</p>}\n </ic-typography>\n )}\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"toast-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n {!isManual ? (\n <ic-loading-indicator\n class=\"toast-dismiss-timer\"\n theme=\"dark\"\n monochrome\n size=\"icon\"\n progress={this.timerProgress}\n description=\"Dismiss timer\"\n ></ic-loading-indicator>\n ) : (\n <ic-button\n id=\"dismiss-button\"\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon-tertiary\"\n aria-label={dismissButtonAriaLabel}\n ></ic-button>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-toast.js","sourceRoot":"","sources":["../../../src/components/ic-toast/ic-toast.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\nimport {\n getSlot,\n isPropDefined,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcActivationTypes,\n IcStatusVariants,\n IcThemeMode,\n} from \"../../utils/types\";\nimport { ActionAreaElementTypes } from \"./ic-toast.types\";\n\nconst AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;\nconst TOAST_HEADING_CHAR_LIMIT = 70;\nconst TOAST_MESSAGE_CHAR_LIMIT = 140;\n\n/**\n * @slot action - IcButton or IcLink is placed below header and message. If used will default toast to manual `dismiss` type.\n * @slot neutral-icon - A custom neutral icon is placed on the left side of the component. If used will default toast to `neutral` variant.\n */\n@Component({\n tag: \"ic-toast\",\n styleUrl: \"ic-toast.css\",\n shadow: true,\n})\nexport class Toast {\n private dismissTimeout: number;\n private interactiveElements: ActionAreaElementTypes[] = [];\n private neutralVariantLabel: string;\n private timerRefreshInterval: number;\n private focusInteractiveElement: boolean;\n private shiftKeyPressed: boolean;\n\n @Element() el: HTMLIcToastElement;\n\n @State() isManual: boolean;\n @State() timerProgress = 100;\n @State() visible = false;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)\n * (NOTE: Has a minimum value of `5000ms`)\n */\n @Prop({ mutable: true }) autoDismissTimeout? = 5000;\n\n /**\n * If toast can be manually dismissed, this prop sets a custom aria-label for the ic-button component\n */\n @Prop() dismissButtonAriaLabel? = \"dismiss\";\n\n /**\n * How the toast will be dismissed. If manual will display a dismiss button.\n */\n @Prop({ mutable: true }) dismissMode?: IcActivationTypes = \"manual\";\n @Watch(\"dismissMode\")\n dismissModeChangeHandler(newValue: IcActivationTypes): void {\n this.isManual = newValue === \"manual\";\n }\n\n /**\n * The title to display at the start of the toast. (NOTE: Should be no more than `70` characters)\n */\n @Prop() heading!: string;\n\n /**\n * The main body message of the toast. (NOTE: Should be no more than `140` characters)\n */\n @Prop() message?: string;\n\n /**\n * Provides a custom alt-text to be announced to screen readers, if slotting a custom neutral icon\n */\n @Prop() neutralIconAriaLabel?: string;\n\n /**\n * The variant of the toast being rendered\n */\n @Prop({ mutable: true }) variant?: IcStatusVariants;\n\n /**\n * Is emitted when the user dismisses the toast\n */\n @Event() icDismiss: EventEmitter<void>;\n\n disconnectedCallback(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n }\n\n componentWillLoad(): void {\n this.handleLongText(\n this.heading.length > TOAST_HEADING_CHAR_LIMIT,\n !!this.message && this.message?.length > TOAST_MESSAGE_CHAR_LIMIT\n );\n\n if (this.autoDismissTimeout! < 5000) this.autoDismissTimeout = 5000;\n\n if (isSlotUsed(this.el, \"action\")) this.dismissMode = \"manual\";\n this.isManual = this.dismissMode === \"manual\";\n\n if (isSlotUsed(this.el, \"neutral-icon\")) this.variant = \"neutral\";\n if (this.variant === \"neutral\") {\n this.neutralVariantLabel =\n this.neutralIconAriaLabel ?? VARIANT_ICONS[this.variant].ariaLabel;\n }\n\n if (this.isManual) {\n const toastMessage: string = isPropDefined(this.message)\n ? `. ${this.message}`\n : \"\";\n this.el.setAttribute(\n \"aria-label\",\n this.variant\n ? this.neutralVariantLabel || VARIANT_ICONS[this.variant].ariaLabel\n : this.heading\n );\n (this.variant || this.message) &&\n this.el.setAttribute(\n \"aria-description\",\n this.variant ? `${this.heading}${toastMessage}` : this.message || \"\"\n );\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Toast\"\n );\n }\n\n componentDidUpdate(): void {\n if (this.focusInteractiveElement && this.isManual) {\n this.resetAutoDismissTimer();\n\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n\n this.focusInteractiveElement = false;\n this.findNextInteractiveElement(this.shiftKeyPressed).setFocus();\n this.shiftKeyPressed = false;\n }\n }\n\n @Watch(\"visible\")\n watchVisibleHandler(): void {\n if (this.visible) {\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n } else {\n this.interactiveElements = [];\n }\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleDismiss(): void {\n this.visible = false;\n this.resetAutoDismissTimer();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.visible) {\n if (this.isManual) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.findNextInteractiveElement(ev.shiftKey).setFocus();\n break;\n case \"Escape\":\n !ev.repeat && this.dismissAction();\n ev.stopImmediatePropagation();\n break;\n }\n } else {\n if (ev.key === \"Tab\") {\n this.shiftKeyPressed = ev.shiftKey;\n this.focusInteractiveElement = true;\n }\n }\n }\n }\n\n @Listen(\"mouseenter\")\n @Listen(\"mouseleave\")\n handleTimer(ev: MouseEvent): void {\n switch (ev.type) {\n case \"mouseenter\":\n if (!this.isManual) {\n this.resetAutoDismissTimer();\n }\n this.isManual = true;\n break;\n case \"mouseleave\":\n if (this.dismissMode === \"automatic\") {\n this.isManual = false;\n this.interactiveElements = [];\n if (this.visible) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n }\n }\n break;\n }\n }\n\n /**\n * @internal Used to display the individual toast.\n * @returns The element that previously had focus before the toast appeared\n */\n @Method()\n async setVisible(): Promise<HTMLElement | null> {\n if (!this.visible) this.visible = true;\n if (!this.isManual) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n return null;\n } else {\n window.setTimeout(() => this.interactiveElements[0].setFocus(), 200);\n return document.activeElement as HTMLElement;\n }\n }\n\n private dismissAction = (): void => {\n this.icDismiss.emit();\n };\n\n private handleProgressChange = () => {\n this.timerProgress -=\n (AUTO_DISMISS_TIMER_REFRESH_RATE_MS / this.autoDismissTimeout!) * 100;\n };\n\n private handleLongText(\n headingTooLong: boolean,\n messageTooLong?: boolean\n ): void {\n if (messageTooLong || headingTooLong) {\n console.error(\n `Too many characters in toast ${headingTooLong ? \"heading\" : \"\"}${\n headingTooLong && messageTooLong ? \" and \" : \"\"\n }${\n messageTooLong ? \"message\" : \"\"\n }. Refer to character limits specified in the prop description`\n );\n }\n }\n\n private findNextInteractiveElement(\n isBackwards: boolean\n ): ActionAreaElementTypes {\n const firstEl = this.interactiveElements[0];\n const lastEl =\n this.interactiveElements[this.interactiveElements.length - 1];\n\n if (this.isActive(isBackwards ? firstEl : lastEl))\n return isBackwards ? lastEl : firstEl;\n\n let currentIndex = 0;\n\n return this.interactiveElements.some((el, index) => {\n if (!this.isActive(el)) return false;\n currentIndex = index;\n return true;\n })\n ? this.interactiveElements[currentIndex + (isBackwards ? -1 : 1)]\n : firstEl;\n }\n\n private resetAutoDismissTimer(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n }\n\n private isActive(targetEl: HTMLElement): boolean {\n return targetEl === this.el\n ? !!this.el.shadowRoot!.activeElement\n : document.activeElement === targetEl;\n }\n\n private onFocus = (): void => {\n if (this.focusInteractiveElement) {\n this.isManual = true;\n }\n };\n\n private onBlur = (): void => {\n this.handleTimer({ type: \"mouseleave\" } as MouseEvent);\n };\n\n render() {\n const {\n variant,\n heading,\n message,\n visible,\n isManual,\n dismissButtonAriaLabel,\n theme,\n } = this;\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-toast-hidden\"]: !visible,\n [`ic-toast-variant-${variant}`]: variant !== undefined,\n }}\n tabindex=\"0\"\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n role={isManual ? \"dialog\" : \"alert\"}\n aria-live={isManual ? null : \"polite\"}\n >\n <div\n class={{\n [\"container\"]: true,\n [`container-${variant}`]: variant !== undefined,\n }}\n >\n {variant && visible && (\n <div class=\"toast-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n {variant === \"neutral\" ? (\n <slot name=\"neutral-icon\" />\n ) : (\n <span\n class=\"toast-icon\"\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n )}\n </div>\n )}\n <div\n class={{\n [\"toast-content\"]: true,\n [\"no-icon\"]:\n variant === \"neutral\" && !isSlotUsed(this.el, \"neutral-icon\"),\n }}\n >\n <div class=\"toast-text\">\n <ic-typography variant=\"subtitle-large\" class=\"toast-heading\">\n {visible && (isManual ? <h5>{heading}</h5> : <p>{heading}</p>)}\n </ic-typography>\n {message && (\n <ic-typography variant=\"body\" class=\"toast-message\">\n {visible && <p>{message}</p>}\n </ic-typography>\n )}\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"toast-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n {!isManual ? (\n <ic-loading-indicator\n class=\"toast-dismiss-timer\"\n theme=\"dark\"\n monochrome\n size=\"icon\"\n progress={this.timerProgress}\n description=\"Dismiss timer\"\n ></ic-loading-indicator>\n ) : (\n <ic-button\n id=\"dismiss-button\"\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon-tertiary\"\n aria-label={dismissButtonAriaLabel}\n ></ic-button>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -10,6 +10,7 @@ const defaultArgs = {
10
10
  variant: "neutral",
11
11
  actionSlot: "action",
12
12
  neutralIconSlot: "neutral-icon",
13
+ theme: "inherit",
13
14
  };
14
15
 
15
16
  export default {
@@ -18,7 +19,7 @@ export default {
18
19
  };
19
20
 
20
21
  export const Default = {
21
- render: (args) =>
22
+ render: () =>
22
23
  html`<button onclick="func()">Display toast</button>
23
24
  <script>
24
25
  var toastRegion = document.querySelector("ic-toast-region");
@@ -35,7 +36,7 @@ export const Default = {
35
36
  };
36
37
 
37
38
  export const WithVariant = {
38
- render: (args) =>
39
+ render: () =>
39
40
  html`<button onclick="func()">Display toast</button>
40
41
  <script>
41
42
  var toastRegion = document.querySelector("ic-toast-region");
@@ -57,7 +58,7 @@ export const WithVariant = {
57
58
  };
58
59
 
59
60
  export const MultilineMessage = {
60
- render: (args) =>
61
+ render: () =>
61
62
  html`<button onclick="func()">Display toast</button>
62
63
  <script>
63
64
  var toastRegion = document.querySelector("ic-toast-region");
@@ -78,7 +79,7 @@ export const MultilineMessage = {
78
79
  };
79
80
 
80
81
  export const SlottedActionElements = {
81
- render: (args) =>
82
+ render: () =>
82
83
  html`<button onclick="func()">Display toast 1</button>
83
84
  <button onclick="func2()">Display toast 2</button>
84
85
  <script>
@@ -115,7 +116,7 @@ export const SlottedActionElements = {
115
116
  };
116
117
 
117
118
  export const AutoDismiss = {
118
- render: (args) =>
119
+ render: () =>
119
120
  html`<button onclick="func()">Display toast 1</button>
120
121
  <button onclick="func2()">Display toast 2</button>
121
122
  <script>
@@ -152,7 +153,7 @@ export const AutoDismiss = {
152
153
  };
153
154
 
154
155
  export const CustomNeutralIconAndDismissAriaLabel = {
155
- render: (args) =>
156
+ render: () =>
156
157
  html`<button onclick="func()">Display toast</button>
157
158
  <script>
158
159
  var toastRegion = document.querySelector("ic-toast-region");
@@ -188,7 +189,7 @@ export const CustomNeutralIconAndDismissAriaLabel = {
188
189
  };
189
190
 
190
191
  export const ExampleOnPage = {
191
- render: (args) =>
192
+ render: () =>
192
193
  html` <script>
193
194
  var toastRegion = document.querySelector("ic-toast-region");
194
195
  function func() {
@@ -317,6 +318,8 @@ export const ExampleOnPage = {
317
318
  name: "Example on page",
318
319
  };
319
320
 
321
+ const inlineRadioSelector = "inline-radio";
322
+
320
323
  export const Playground = {
321
324
  render: (args) =>
322
325
  html`<button onclick="func()">Display toast</button>
@@ -337,6 +340,7 @@ export const Playground = {
337
340
  auto-dismiss-timeout=${args.autoDismissTimeout}
338
341
  neutral-icon-aria-label=${args.neutralIconAriaLabel}
339
342
  dismiss-button-aria-label=${args.dismissButtonAriaLabel}
343
+ theme=${args.theme}
340
344
  >
341
345
  <ic-button slot=${args.actionSlot} appearance="light"
342
346
  >Click me</ic-button
@@ -363,7 +367,7 @@ export const Playground = {
363
367
  options: ["manual", "automatic"],
364
368
 
365
369
  control: {
366
- type: "inline-radio",
370
+ type: inlineRadioSelector,
367
371
  },
368
372
  },
369
373
 
@@ -371,7 +375,7 @@ export const Playground = {
371
375
  options: ["neutral", "info", "warning", "error", "success", "ai", ""],
372
376
 
373
377
  control: {
374
- type: "inline-radio",
378
+ type: inlineRadioSelector,
375
379
  },
376
380
  },
377
381
 
@@ -390,6 +394,14 @@ export const Playground = {
390
394
  type: "select",
391
395
  },
392
396
  },
397
+
398
+ theme: {
399
+ options: ["inherit", "light", "dark"],
400
+
401
+ control: {
402
+ type: inlineRadioSelector,
403
+ },
404
+ },
393
405
  },
394
406
 
395
407
  name: "Playground",
@@ -50,7 +50,7 @@ const defaultIconArgs = {
50
50
  };
51
51
 
52
52
  export const Default = {
53
- render: (args) =>
53
+ render: () =>
54
54
  html`<ic-toggle-button label="Toggle"></ic-toggle-button>
55
55
  <script>
56
56
  var toggle = document.querySelector("ic-toggle-button");
@@ -63,13 +63,13 @@ export const Default = {
63
63
  };
64
64
 
65
65
  export const Checked = {
66
- render: (args) =>
66
+ render: () =>
67
67
  html`<ic-toggle-button label="Toggle" checked="true"></ic-toggle-button>`,
68
68
  name: "Checked",
69
69
  };
70
70
 
71
71
  export const Disabled = {
72
- render: (args) =>
72
+ render: () =>
73
73
  html`<ic-toggle-button label="Toggle" disabled="true"></ic-toggle-button>
74
74
  <ic-toggle-button
75
75
  label="Toggle"
@@ -81,7 +81,7 @@ export const Disabled = {
81
81
  };
82
82
 
83
83
  export const WithIcon = {
84
- render: (args) =>
84
+ render: () =>
85
85
  html`<ic-toggle-button label="Toggle">
86
86
  <svg
87
87
  slot="icon"
@@ -102,7 +102,7 @@ export const WithIcon = {
102
102
  };
103
103
 
104
104
  export const Sizes = {
105
- render: (args) =>
105
+ render: () =>
106
106
  html`<div style="padding: 6px">
107
107
  <ic-toggle-button label="Toggle" size="small"></ic-toggle-button>
108
108
  </div>
@@ -117,7 +117,7 @@ export const Sizes = {
117
117
  };
118
118
 
119
119
  export const WithBadge = {
120
- render: (args) =>
120
+ render: () =>
121
121
  html`<ic-toggle-button label="Toggle">
122
122
  <ic-badge label="1" slot="badge" variant="success"></ic-badge>
123
123
  </ic-toggle-button>
@@ -129,7 +129,7 @@ export const WithBadge = {
129
129
  };
130
130
 
131
131
  export const Monochrome = {
132
- render: (args) =>
132
+ render: () =>
133
133
  html`<ic-toggle-button
134
134
  label="Toggle"
135
135
  monochrome="true"
@@ -139,7 +139,7 @@ export const Monochrome = {
139
139
  };
140
140
 
141
141
  export const FullWidth = {
142
- render: (args) =>
142
+ render: () =>
143
143
  html`<ic-toggle-button
144
144
  label="Toggle"
145
145
  full-width="true"
@@ -149,7 +149,7 @@ export const FullWidth = {
149
149
  };
150
150
 
151
151
  export const Loading = {
152
- render: (args) =>
152
+ render: () =>
153
153
  html`<div style="padding: 6px">
154
154
  <ic-toggle-button label="Toggle" loading="true"></ic-toggle-button>
155
155
  <ic-toggle-button
@@ -252,7 +252,7 @@ export const Loading = {
252
252
  };
253
253
 
254
254
  export const IconOnly = {
255
- render: (args) =>
255
+ render: () =>
256
256
  html`<div style="padding:6px 10px; width:fit-content">
257
257
  <ic-toggle-button
258
258
  variant="icon"
@@ -367,7 +367,7 @@ export const IconOnly = {
367
367
  };
368
368
 
369
369
  export const IconRight = {
370
- render: (args) =>
370
+ render: () =>
371
371
  html`<ic-toggle-button label="Toggle" icon-placement="right">
372
372
  <svg
373
373
  slot="icon"
@@ -388,7 +388,7 @@ export const IconRight = {
388
388
  };
389
389
 
390
390
  export const IconTop = {
391
- render: (args) =>
391
+ render: () =>
392
392
  html`<ic-toggle-button label="Toggle" icon-placement="top">
393
393
  <svg
394
394
  slot="icon"
@@ -409,7 +409,7 @@ export const IconTop = {
409
409
  };
410
410
 
411
411
  export const TooltipPlacement = {
412
- render: (args) =>
412
+ render: () =>
413
413
  html`<div style="padding:100px 10px; width:fit-content">
414
414
  <ic-toggle-button
415
415
  variant="icon"
@@ -471,7 +471,7 @@ export const TooltipPlacement = {
471
471
  };
472
472
 
473
473
  export const HideOutline = {
474
- render: (args) =>
474
+ render: () =>
475
475
  html`<ic-toggle-button label="Toggle" outline="false"></ic-toggle-button>`,
476
476
 
477
477
  name: "Hide outline",
@@ -32,7 +32,7 @@ export default {
32
32
  };
33
33
 
34
34
  export const SelectType = {
35
- render: (args) => html`
35
+ render: () => html`
36
36
  <ic-typography>Single and manual</ic-typography>
37
37
  <ic-toggle-button-group
38
38
  select-type="single"
@@ -68,7 +68,7 @@ export const SelectType = {
68
68
  };
69
69
 
70
70
  export const Sizes = {
71
- render: (args) => html`
71
+ render: () => html`
72
72
  <ic-typography>Default</ic-typography>
73
73
  <ic-toggle-button-group
74
74
  label="Label for single and manual"
@@ -139,7 +139,7 @@ export const Sizes = {
139
139
  };
140
140
 
141
141
  export const Monochrome = {
142
- render: (args) =>
142
+ render: () =>
143
143
  html`<ic-toggle-button-group
144
144
  monochrome="true"
145
145
  accessible-label="Single and manual select toggle group"
@@ -153,7 +153,7 @@ export const Monochrome = {
153
153
  };
154
154
 
155
155
  export const Disabled = {
156
- render: (args) =>
156
+ render: () =>
157
157
  html`<ic-typography>Disabled</ic-typography>
158
158
  <ic-toggle-button-group
159
159
  disabled="true"
@@ -168,7 +168,7 @@ export const Disabled = {
168
168
  };
169
169
 
170
170
  export const Loading = {
171
- render: (args) =>
171
+ render: () =>
172
172
  html`<ic-toggle-button-group
173
173
  loading="true"
174
174
  accessible-label="Single and manual select toggle group"
@@ -192,7 +192,7 @@ export const Loading = {
192
192
  };
193
193
 
194
194
  export const WithIcons = {
195
- render: (args) =>
195
+ render: () =>
196
196
  html`<ic-typography>Icon only</ic-typography>
197
197
  <ic-toggle-button-group
198
198
  variant="icon"
@@ -379,7 +379,7 @@ export const WithIcons = {
379
379
  };
380
380
 
381
381
  export const HideOutline = {
382
- render: (args) =>
382
+ render: () =>
383
383
  html`<ic-toggle-button-group
384
384
  select-type="single"
385
385
  accessible-label="Hide outline toggle group"
@@ -15,7 +15,7 @@ export default {
15
15
  };
16
16
 
17
17
  export const Default = {
18
- render: (args) =>
18
+ render: () =>
19
19
  html`<ic-tooltip
20
20
  label="This is a description of the button"
21
21
  id="ic-tooltip-1"
@@ -32,7 +32,7 @@ export const Default = {
32
32
  };
33
33
 
34
34
  export const UsingExternalMethod = {
35
- render: (args) =>
35
+ render: () =>
36
36
  html`<script>
37
37
  let display = true;
38
38
  document
@@ -58,7 +58,7 @@ export const UsingExternalMethod = {
58
58
  };
59
59
 
60
60
  export const DisabledHover = {
61
- render: (args) =>
61
+ render: () =>
62
62
  html`<ic-tooltip
63
63
  label="This shows 'Code' has been copied"
64
64
  id="ic-tooltip-test-button-disable-hover"
@@ -76,7 +76,7 @@ export const DisabledHover = {
76
76
  };
77
77
 
78
78
  export const TopPlacements = {
79
- render: (args) =>
79
+ render: () =>
80
80
  html` <div style="margin: 40px">
81
81
  <ic-tooltip
82
82
  placement="top-start"
@@ -109,7 +109,7 @@ export const TopPlacements = {
109
109
  };
110
110
 
111
111
  export const BottomPlacements = {
112
- render: (args) =>
112
+ render: () =>
113
113
  html` <div style="margin: 40px">
114
114
  <ic-tooltip
115
115
  placement="bottom-start"
@@ -142,7 +142,7 @@ export const BottomPlacements = {
142
142
  };
143
143
 
144
144
  export const RightPlacements = {
145
- render: (args) =>
145
+ render: () =>
146
146
  html` <div style="margin: 40px">
147
147
  <ic-tooltip
148
148
  placement="right-start"
@@ -175,7 +175,7 @@ export const RightPlacements = {
175
175
  };
176
176
 
177
177
  export const LeftPlacements = {
178
- render: (args) =>
178
+ render: () =>
179
179
  html` <div style="margin-left: 400px">
180
180
  <ic-tooltip
181
181
  placement="left-start"
@@ -208,7 +208,7 @@ export const LeftPlacements = {
208
208
  };
209
209
 
210
210
  export const Truncation = {
211
- render: (args) =>
211
+ render: () =>
212
212
  html`<ic-tooltip
213
213
  label="This is a body of text that is truncated to three lines within a tooltip. It has been truncated based on the max-lines property. The number of lines in the text is clamped to the number passed through the max-lines property."
214
214
  max-lines="3"
@@ -223,7 +223,7 @@ export const Truncation = {
223
223
  };
224
224
 
225
225
  export const DarkBackground = {
226
- render: (args) =>
226
+ render: () =>
227
227
  html`<div style="height: 100px;background-color:#333333;">
228
228
  <ic-tooltip
229
229
  label="This is a description of the button"
@@ -237,7 +237,7 @@ export const DarkBackground = {
237
237
  };
238
238
 
239
239
  export const ChangingLabel = {
240
- render: (args) =>
240
+ render: () =>
241
241
  html`<script>
242
242
  var icButton = document.querySelector("#testbutton");
243
243
  function handleClick() {
@@ -270,7 +270,7 @@ export const ChangingLabel = {
270
270
  };
271
271
 
272
272
  export const PositioningStrategy = {
273
- render: (args) =>
273
+ render: () =>
274
274
  html` <script>
275
275
  var switchEl = document.querySelector("ic-switch");
276
276
  var tooltipEl = document.querySelector("ic-tooltip");
@@ -21,7 +21,7 @@ export default {
21
21
  };
22
22
 
23
23
  export const AppIconAndTitle = {
24
- render: (args) =>
24
+ render: () =>
25
25
  html`<ic-top-navigation app-title="Application Name">
26
26
  <svg
27
27
  slot="app-icon"
@@ -46,7 +46,7 @@ export const AppIconAndTitle = {
46
46
  };
47
47
 
48
48
  export const SlottedTitleLink = {
49
- render: (args) =>
49
+ render: () =>
50
50
  html`<ic-top-navigation>
51
51
  <a slot="app-title" href="/">Application Name</a>
52
52
  <a slot="short-app-title" href="/">App name</a>
@@ -74,7 +74,7 @@ export const SlottedTitleLink = {
74
74
  };
75
75
 
76
76
  export const StatusAndVersion = {
77
- render: (args) =>
77
+ render: () =>
78
78
  html`<ic-top-navigation
79
79
  app-title="Application Name"
80
80
  status="alpha"
@@ -103,7 +103,7 @@ export const StatusAndVersion = {
103
103
  };
104
104
 
105
105
  export const WithSearch = {
106
- render: (args) =>
106
+ render: () =>
107
107
  html`<ic-top-navigation
108
108
  app-title="Application Name"
109
109
  status="alpha"
@@ -148,7 +148,7 @@ export const WithSearch = {
148
148
  };
149
149
 
150
150
  export const WithIcons = {
151
- render: (args) =>
151
+ render: () =>
152
152
  html`<ic-top-navigation
153
153
  app-title="Application Name"
154
154
  status="alpha"
@@ -257,7 +257,7 @@ export const WithIcons = {
257
257
  };
258
258
 
259
259
  export const LongAppTitle = {
260
- render: (args) =>
260
+ render: () =>
261
261
  html`<ic-top-navigation
262
262
  app-title="Application with a long name"
263
263
  status="alpha-beta-gamma-delta-epsilon"
@@ -310,7 +310,7 @@ export const LongAppTitle = {
310
310
  };
311
311
 
312
312
  export const WithNavigation = {
313
- render: (args) =>
313
+ render: () =>
314
314
  html`<ic-top-navigation
315
315
  app-title="Application Name"
316
316
  status="alpha"
@@ -390,7 +390,7 @@ export const WithNavigation = {
390
390
  };
391
391
 
392
392
  export const UsingUnnamedSlots = {
393
- render: (args) =>
393
+ render: () =>
394
394
  html`<ic-top-navigation
395
395
  app-title="Application Name"
396
396
  status="alpha"
@@ -428,7 +428,7 @@ export const UsingUnnamedSlots = {
428
428
  };
429
429
 
430
430
  export const WithGroupedNavigation = {
431
- render: (args) =>
431
+ render: () =>
432
432
  html`<ic-top-navigation
433
433
  app-title="Application Name"
434
434
  status="alpha"
@@ -520,7 +520,7 @@ export const WithGroupedNavigation = {
520
520
  };
521
521
 
522
522
  export const ContentCenterAligned = {
523
- render: (args) =>
523
+ render: () =>
524
524
  html`<ic-top-navigation
525
525
  app-title="Application Name"
526
526
  status="alpha"
@@ -600,7 +600,7 @@ export const ContentCenterAligned = {
600
600
  };
601
601
 
602
602
  export const ContentLeftAligned = {
603
- render: (args) =>
603
+ render: () =>
604
604
  html`<ic-top-navigation
605
605
  app-title="Application Name"
606
606
  status="alpha"
@@ -680,7 +680,7 @@ export const ContentLeftAligned = {
680
680
  };
681
681
 
682
682
  export const Brand = {
683
- render: (args) =>
683
+ render: () =>
684
684
  html`<ic-theme brand-color="rgb(27, 60, 121)" id="brand-story-ic-theme">
685
685
  <ic-top-navigation
686
686
  app-title="Application Name"
@@ -806,7 +806,7 @@ export const Brand = {
806
806
  };
807
807
 
808
808
  export const LongSingleWordAppTitle = {
809
- render: (args) =>
809
+ render: () =>
810
810
  html`<ic-top-navigation
811
811
  app-title="Applicationwithareallyreallylongsinglewordname"
812
812
  status="alpha"
@@ -859,7 +859,7 @@ export const LongSingleWordAppTitle = {
859
859
  };
860
860
 
861
861
  export const ShortTitle = {
862
- render: (args) =>
862
+ render: () =>
863
863
  html`<ic-top-navigation
864
864
  app-title="Application Name"
865
865
  short-app-title="App Name"
@@ -887,7 +887,7 @@ export const ShortTitle = {
887
887
  };
888
888
 
889
889
  export const TopNavResizedEvent = {
890
- render: (args) =>
890
+ render: () =>
891
891
  html`<script>
892
892
  var topNav = document.querySelector("ic-top-navigation");
893
893
  topNav.addEventListener("icTopNavResized", function (event) {
@@ -16,7 +16,7 @@ export default {
16
16
  };
17
17
 
18
18
  export const Default = {
19
- render: (args) => html`<ic-typography>I am typography</ic-typography>`,
19
+ render: () => html`<ic-typography>I am typography</ic-typography>`,
20
20
  name: "Default",
21
21
  };
22
22
 
@@ -5,7 +5,7 @@ export default {
5
5
  };
6
6
 
7
7
  export const SingleColumnWithTopNavigationAndFooter = {
8
- render: (args) =>
8
+ render: () =>
9
9
  html`<div>
10
10
  <div style="display: flex; flex-direction: column; min-height: 100vh;">
11
11
  <ic-top-navigation