@sula-tech/webcomponents 0.19.3 → 0.20.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 (202) hide show
  1. package/dist/cjs/{index-i5WGQEGK.js → index-BjAGuSPl.js} +30 -5
  2. package/dist/cjs/index-BjAGuSPl.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +17 -11
  4. package/dist/cjs/index.cjs.js.map +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/sula-avatar_31.cjs.entry.js +41 -41
  7. package/dist/cjs/sula-avatar_31.cjs.entry.js.map +1 -1
  8. package/dist/cjs/sula-menu.model-BDxbWyPG.js +16 -0
  9. package/dist/cjs/sula-menu.model-BDxbWyPG.js.map +1 -0
  10. package/dist/cjs/sula-toast-stack.cjs.entry.js +314 -0
  11. package/dist/cjs/sula-toast-stack.cjs.entry.js.map +1 -0
  12. package/dist/cjs/sula-toast-stack.entry.cjs.js.map +1 -0
  13. package/dist/cjs/sula-toast.cjs.entry.js +195 -0
  14. package/dist/cjs/sula-toast.cjs.entry.js.map +1 -0
  15. package/dist/cjs/sula-toast.entry.cjs.js.map +1 -0
  16. package/dist/cjs/sula-toast.model-frnF9yhp.js +14 -0
  17. package/dist/cjs/sula-toast.model-frnF9yhp.js.map +1 -0
  18. package/dist/cjs/webcomponents.cjs.js +2 -2
  19. package/dist/collection/collection-manifest.json +2 -0
  20. package/dist/collection/components/sula-avatar/sula-avatar.css +1 -1
  21. package/dist/collection/components/sula-badge/sula-badge.css +1 -1
  22. package/dist/collection/components/sula-breadcrumb/sula-breadcrumb.css +1 -1
  23. package/dist/collection/components/sula-button/sula-button.css +1 -1
  24. package/dist/collection/components/sula-checkbox/sula-checkbox.css +1 -1
  25. package/dist/collection/components/sula-chip/sula-chip.css +1 -1
  26. package/dist/collection/components/sula-dropdown/sula-dropdown.css +1 -1
  27. package/dist/collection/components/sula-icon/sula-icon.css +1 -1
  28. package/dist/collection/components/sula-icon-picker/sula-icon-picker.css +1 -1
  29. package/dist/collection/components/sula-loader/sula-loader.css +1 -1
  30. package/dist/collection/components/sula-menu/sula-menu.css +1 -1
  31. package/dist/collection/components/sula-menu-select-list/sula-menu-select-list.css +1 -1
  32. package/dist/collection/components/sula-modal/sula-modal.css +1 -1
  33. package/dist/collection/components/sula-progress-bar/sula-progress-bar.css +1 -1
  34. package/dist/collection/components/sula-radio-button/sula-radio-button.css +1 -1
  35. package/dist/collection/components/sula-search-bar/sula-search-bar.css +1 -1
  36. package/dist/collection/components/sula-segmented-control/sula-segmented-control.css +1 -1
  37. package/dist/collection/components/sula-switch/sula-switch.css +1 -1
  38. package/dist/collection/components/sula-table/sula-table.css +1 -1
  39. package/dist/collection/components/sula-table-body/sula-table-body.css +1 -1
  40. package/dist/collection/components/sula-table-cell/sula-table-cell.css +1 -1
  41. package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.css +1 -1
  42. package/dist/collection/components/sula-table-header/sula-table-header.css +1 -1
  43. package/dist/collection/components/sula-table-row/sula-table-row.css +1 -1
  44. package/dist/collection/components/sula-tag/sula-tag.css +1 -1
  45. package/dist/collection/components/sula-textarea/sula-textarea.css +1 -1
  46. package/dist/collection/components/sula-textfield/sula-textfield.css +1 -1
  47. package/dist/collection/components/sula-tiles/sula-tiles.css +1 -1
  48. package/dist/collection/components/sula-timeline-list/sula-timeline-list.css +1 -1
  49. package/dist/collection/components/sula-toast/model/sula-toast.model.js +10 -0
  50. package/dist/collection/components/sula-toast/model/sula-toast.model.js.map +1 -0
  51. package/dist/collection/components/sula-toast/sula-toast.css +1 -0
  52. package/dist/collection/components/sula-toast/sula-toast.js +501 -0
  53. package/dist/collection/components/sula-toast/sula-toast.js.map +1 -0
  54. package/dist/collection/components/sula-toast/sula-toast.stories.js +101 -0
  55. package/dist/collection/components/sula-toast/sula-toast.stories.js.map +1 -0
  56. package/dist/collection/components/sula-toast-stack/model/sula-toast-stack.model.js +2 -0
  57. package/dist/collection/components/sula-toast-stack/model/sula-toast-stack.model.js.map +1 -0
  58. package/dist/collection/components/sula-toast-stack/sula-toast-stack.css +1 -0
  59. package/dist/collection/components/sula-toast-stack/sula-toast-stack.js +333 -0
  60. package/dist/collection/components/sula-toast-stack/sula-toast-stack.js.map +1 -0
  61. package/dist/collection/components/sula-toast-stack/sula-toast-stack.motion.js +67 -0
  62. package/dist/collection/components/sula-toast-stack/sula-toast-stack.motion.js.map +1 -0
  63. package/dist/collection/components/sula-toast-stack/sula-toast-stack.stories.js +87 -0
  64. package/dist/collection/components/sula-toast-stack/sula-toast-stack.stories.js.map +1 -0
  65. package/dist/collection/components/sula-toggle/sula-toggle.css +1 -1
  66. package/dist/collection/components/sula-toggle/sula-toggle.js +1 -1
  67. package/dist/collection/components/sula-tooltip/sula-tooltip.css +1 -1
  68. package/dist/collection/components/sula-tooltip/sula-tooltip.js +1 -1
  69. package/dist/collection/index.js +1 -0
  70. package/dist/collection/index.js.map +1 -1
  71. package/dist/components/index.js +3 -15
  72. package/dist/components/index.js.map +1 -1
  73. package/dist/components/{p-CelSwSJG.js → p-CJ2i2jVV.js} +5 -5
  74. package/dist/components/{p-CelSwSJG.js.map → p-CJ2i2jVV.js.map} +1 -1
  75. package/dist/components/p-Cs9RR1ZV.js +16 -0
  76. package/dist/components/p-Cs9RR1ZV.js.map +1 -0
  77. package/dist/components/{p-Bqd5Y-Ir.js → p-D0ZAC0yK.js} +6 -6
  78. package/dist/components/p-D0ZAC0yK.js.map +1 -0
  79. package/dist/components/{p-BJQZqrGi.js → p-DGfvh6dZ.js} +5 -5
  80. package/dist/components/{p-BJQZqrGi.js.map → p-DGfvh6dZ.js.map} +1 -1
  81. package/dist/components/{p-Cy4ZswbA.js → p-DYfmicjp.js} +31 -6
  82. package/dist/components/p-DYfmicjp.js.map +1 -0
  83. package/dist/components/{p-f7rEWsEo.js → p-DmCNhtp_.js} +4 -4
  84. package/dist/components/{p-f7rEWsEo.js.map → p-DmCNhtp_.js.map} +1 -1
  85. package/dist/components/p-DmQoJS86.js +235 -0
  86. package/dist/components/p-DmQoJS86.js.map +1 -0
  87. package/dist/components/{p-bHiC51v2.js → p-DqRqPukj.js} +4 -4
  88. package/dist/components/{p-bHiC51v2.js.map → p-DqRqPukj.js.map} +1 -1
  89. package/dist/components/{p-D1tWu3qb.js → p-b7t6bSNa.js} +6 -6
  90. package/dist/components/{p-D1tWu3qb.js.map → p-b7t6bSNa.js.map} +1 -1
  91. package/dist/components/p-t0X4JATS.js +14 -0
  92. package/dist/components/p-t0X4JATS.js.map +1 -0
  93. package/dist/components/sula-avatar.js +3 -3
  94. package/dist/components/sula-avatar.js.map +1 -1
  95. package/dist/components/sula-badge.js +3 -3
  96. package/dist/components/sula-badge.js.map +1 -1
  97. package/dist/components/sula-breadcrumb.js +3 -3
  98. package/dist/components/sula-breadcrumb.js.map +1 -1
  99. package/dist/components/sula-button.js +1 -1
  100. package/dist/components/sula-checkbox.js +3 -3
  101. package/dist/components/sula-checkbox.js.map +1 -1
  102. package/dist/components/sula-chip.js +4 -4
  103. package/dist/components/sula-chip.js.map +1 -1
  104. package/dist/components/sula-dropdown.js +1 -1
  105. package/dist/components/sula-icon-picker.js +6 -6
  106. package/dist/components/sula-icon-picker.js.map +1 -1
  107. package/dist/components/sula-icon.js +1 -1
  108. package/dist/components/sula-loader.js +1 -1
  109. package/dist/components/sula-menu-select-list.js +1 -1
  110. package/dist/components/sula-menu.js +4 -4
  111. package/dist/components/sula-menu.js.map +1 -1
  112. package/dist/components/sula-modal.js +5 -5
  113. package/dist/components/sula-modal.js.map +1 -1
  114. package/dist/components/sula-progress-bar.js +3 -3
  115. package/dist/components/sula-progress-bar.js.map +1 -1
  116. package/dist/components/sula-radio-button.js +2 -2
  117. package/dist/components/sula-radio-button.js.map +1 -1
  118. package/dist/components/sula-search-bar.js +1 -1
  119. package/dist/components/sula-segmented-control.js +3 -3
  120. package/dist/components/sula-segmented-control.js.map +1 -1
  121. package/dist/components/sula-switch.js +2 -2
  122. package/dist/components/sula-switch.js.map +1 -1
  123. package/dist/components/sula-table-body.js +2 -2
  124. package/dist/components/sula-table-body.js.map +1 -1
  125. package/dist/components/sula-table-cell.js +2 -2
  126. package/dist/components/sula-table-cell.js.map +1 -1
  127. package/dist/components/sula-table-head-cell.js +2 -2
  128. package/dist/components/sula-table-head-cell.js.map +1 -1
  129. package/dist/components/sula-table-header.js +2 -2
  130. package/dist/components/sula-table-header.js.map +1 -1
  131. package/dist/components/sula-table-row.js +2 -2
  132. package/dist/components/sula-table-row.js.map +1 -1
  133. package/dist/components/sula-table.js +2 -2
  134. package/dist/components/sula-table.js.map +1 -1
  135. package/dist/components/sula-tag.js +3 -3
  136. package/dist/components/sula-tag.js.map +1 -1
  137. package/dist/components/sula-textarea.js +2 -2
  138. package/dist/components/sula-textarea.js.map +1 -1
  139. package/dist/components/sula-textfield.js +3 -3
  140. package/dist/components/sula-textfield.js.map +1 -1
  141. package/dist/components/sula-tiles.js +3 -3
  142. package/dist/components/sula-tiles.js.map +1 -1
  143. package/dist/components/sula-timeline-list.js +3 -3
  144. package/dist/components/sula-timeline-list.js.map +1 -1
  145. package/dist/components/sula-toast-stack.d.ts +11 -0
  146. package/dist/components/sula-toast-stack.js +352 -0
  147. package/dist/components/sula-toast-stack.js.map +1 -0
  148. package/dist/components/sula-toast.d.ts +11 -0
  149. package/dist/components/sula-toast.js +9 -0
  150. package/dist/components/sula-toast.js.map +1 -0
  151. package/dist/components/sula-toggle.js +4 -4
  152. package/dist/components/sula-toggle.js.map +1 -1
  153. package/dist/components/sula-tooltip.js +4 -4
  154. package/dist/components/sula-tooltip.js.map +1 -1
  155. package/dist/esm/{index-lrQT_q8m.js → index-BL15Tt3m.js} +30 -5
  156. package/dist/esm/index-BL15Tt3m.js.map +1 -0
  157. package/dist/esm/index.js +2 -13
  158. package/dist/esm/index.js.map +1 -1
  159. package/dist/esm/loader.js +3 -3
  160. package/dist/esm/sula-avatar_31.entry.js +35 -35
  161. package/dist/esm/sula-avatar_31.entry.js.map +1 -1
  162. package/dist/esm/sula-menu.model-Cs9RR1ZV.js +16 -0
  163. package/dist/esm/sula-menu.model-Cs9RR1ZV.js.map +1 -0
  164. package/dist/esm/sula-toast-stack.entry.js +312 -0
  165. package/dist/esm/sula-toast-stack.entry.js.map +1 -0
  166. package/dist/esm/sula-toast.entry.js +193 -0
  167. package/dist/esm/sula-toast.entry.js.map +1 -0
  168. package/dist/esm/sula-toast.model-t0X4JATS.js +14 -0
  169. package/dist/esm/sula-toast.model-t0X4JATS.js.map +1 -0
  170. package/dist/esm/webcomponents.js +3 -3
  171. package/dist/types/components/sula-toast/model/sula-toast.model.d.ts +31 -0
  172. package/dist/types/components/sula-toast/sula-toast.d.ts +64 -0
  173. package/dist/types/components/sula-toast/sula-toast.stories.d.ts +188 -0
  174. package/dist/types/components/sula-toast-stack/model/sula-toast-stack.model.d.ts +8 -0
  175. package/dist/types/components/sula-toast-stack/sula-toast-stack.d.ts +51 -0
  176. package/dist/types/components/sula-toast-stack/sula-toast-stack.motion.d.ts +9 -0
  177. package/dist/types/components/sula-toast-stack/sula-toast-stack.stories.d.ts +64 -0
  178. package/dist/types/components.d.ts +204 -0
  179. package/dist/types/index.d.ts +2 -0
  180. package/dist/webcomponents/index.esm.js +2 -15
  181. package/dist/webcomponents/index.esm.js.map +1 -1
  182. package/dist/webcomponents/p-170854a5.entry.js +270 -0
  183. package/dist/webcomponents/p-170854a5.entry.js.map +1 -0
  184. package/dist/webcomponents/{p-lrQT_q8m.js → p-BL15Tt3m.js} +240 -215
  185. package/dist/webcomponents/p-BL15Tt3m.js.map +1 -0
  186. package/dist/webcomponents/p-Cs9RR1ZV.js +18 -0
  187. package/dist/webcomponents/p-Cs9RR1ZV.js.map +1 -0
  188. package/dist/webcomponents/p-c58125e1.entry.js +376 -0
  189. package/dist/webcomponents/p-c58125e1.entry.js.map +1 -0
  190. package/dist/webcomponents/{p-95ca03c9.entry.js → p-fcc1a28c.entry.js} +42 -42
  191. package/dist/webcomponents/p-t0X4JATS.js +14 -0
  192. package/dist/webcomponents/p-t0X4JATS.js.map +1 -0
  193. package/dist/webcomponents/sula-toast-stack.entry.esm.js.map +1 -0
  194. package/dist/webcomponents/sula-toast.entry.esm.js.map +1 -0
  195. package/dist/webcomponents/webcomponents.esm.js +35 -6
  196. package/package.json +2 -2
  197. package/dist/cjs/index-i5WGQEGK.js.map +0 -1
  198. package/dist/components/p-Bqd5Y-Ir.js.map +0 -1
  199. package/dist/components/p-Cy4ZswbA.js.map +0 -1
  200. package/dist/esm/index-lrQT_q8m.js.map +0 -1
  201. package/dist/webcomponents/p-lrQT_q8m.js.map +0 -1
  202. /package/dist/webcomponents/{p-95ca03c9.entry.js.map → p-fcc1a28c.entry.js.map} +0 -0
@@ -0,0 +1,16 @@
1
+ var SulaMenuDensity;
2
+ (function (SulaMenuDensity) {
3
+ SulaMenuDensity["Compact"] = "compact";
4
+ SulaMenuDensity["Default"] = "default";
5
+ SulaMenuDensity["Comfortable"] = "comfortable";
6
+ })(SulaMenuDensity || (SulaMenuDensity = {}));
7
+ var SulaMenuLabelOverflow;
8
+ (function (SulaMenuLabelOverflow) {
9
+ SulaMenuLabelOverflow["Truncate"] = "truncate";
10
+ SulaMenuLabelOverflow["Wrap"] = "wrap";
11
+ })(SulaMenuLabelOverflow || (SulaMenuLabelOverflow = {}));
12
+
13
+ export { SulaMenuDensity as S, SulaMenuLabelOverflow as a };
14
+ //# sourceMappingURL=sula-menu.model-Cs9RR1ZV.js.map
15
+
16
+ //# sourceMappingURL=sula-menu.model-Cs9RR1ZV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sula-menu.model-Cs9RR1ZV.js","sources":["src/components/sula-menu/model/sula-menu.model.ts"],"sourcesContent":["export enum SulaMenuDensity {\n Compact = 'compact',\n Default = 'default',\n Comfortable = 'comfortable',\n}\n\nexport enum SulaMenuLabelOverflow {\n Truncate = 'truncate',\n Wrap = 'wrap',\n}\n\nexport interface SulaMenuMainItem extends SulaMenuItem {\n children?: SulaMenuSubItem[];\n}\n\nexport interface SulaMenuSubItem extends SulaMenuItem {\n children?: SulaMenuItem[];\n}\n\nexport interface SulaMenuItem {\n id: string;\n label: string;\n icon: string;\n hidden?: boolean;\n open?: boolean;\n route?: string;\n expanded?: boolean;\n selected?: boolean;\n disabled?: boolean;\n}\n\nexport type SelectedMenuItem = {\n id: string;\n parentItemId?: string;\n parentChildId?: string;\n};\n"],"names":[],"mappings":"IAAY;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAGhC,EAAA,CAAA,CAAA;;;;"}
@@ -0,0 +1,312 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-BL15Tt3m.js';
2
+
3
+ const MOTION_DURATION = 260;
4
+ const MOTION_EASING = 'cubic-bezier(0.2, 0.8, 0.2, 1)';
5
+ class SulaToastStackMotion {
6
+ constructor() {
7
+ this.animations = new Set();
8
+ }
9
+ capture(region, list) {
10
+ const cards = new Map();
11
+ list.querySelectorAll('[data-toast-id]').forEach(element => {
12
+ const rect = element.getBoundingClientRect();
13
+ if (element.dataset.toastId && rect.width && rect.height) {
14
+ cards.set(element.dataset.toastId, { rect, opacity: Number(getComputedStyle(element).opacity) });
15
+ }
16
+ });
17
+ const previous = { height: region.getBoundingClientRect().height, cards };
18
+ this.cancelAnimations();
19
+ this.previous = previous;
20
+ }
21
+ play(region, list) {
22
+ const previous = this.previous;
23
+ this.previous = undefined;
24
+ if (!previous)
25
+ return;
26
+ list.querySelectorAll('[data-toast-id]').forEach(element => {
27
+ const rect = element.getBoundingClientRect();
28
+ const transform = getComputedStyle(element).transform;
29
+ const restingTransform = transform === 'none' ? '' : transform;
30
+ const origin = previous.cards.get(element.dataset.toastId);
31
+ if (!rect.width || !rect.height)
32
+ return;
33
+ if (!origin)
34
+ return;
35
+ const deltaX = origin.rect.left - rect.left;
36
+ const deltaY = origin.rect.top - rect.top;
37
+ const scaleX = origin.rect.width / rect.width;
38
+ const scaleY = origin.rect.height / rect.height;
39
+ const moved = Math.abs(deltaX) > 0.5 || Math.abs(deltaY) > 0.5 || Math.abs(scaleX - 1) > 0.005 || Math.abs(scaleY - 1) > 0.005;
40
+ if (!moved && origin.opacity > 0.995)
41
+ return;
42
+ this.animate(element, [
43
+ {
44
+ opacity: origin.opacity,
45
+ transformOrigin: 'top left',
46
+ transform: `translate(${deltaX}px, ${deltaY}px) ${restingTransform} scale(${scaleX}, ${scaleY})`,
47
+ },
48
+ { opacity: 1, transformOrigin: 'top left', transform },
49
+ ]);
50
+ });
51
+ const height = region.getBoundingClientRect().height;
52
+ if (previous.height !== height)
53
+ this.animate(region, [{ height: `${previous.height}px` }, { height: `${height}px` }]);
54
+ }
55
+ cancel() {
56
+ this.previous = undefined;
57
+ this.cancelAnimations();
58
+ }
59
+ animate(element, frames) {
60
+ const animation = element.animate(frames, { duration: MOTION_DURATION, easing: MOTION_EASING });
61
+ this.animations.add(animation);
62
+ animation.onfinish = animation.oncancel = () => this.animations.delete(animation);
63
+ }
64
+ cancelAnimations() {
65
+ this.animations.forEach(animation => animation.cancel());
66
+ this.animations.clear();
67
+ }
68
+ }
69
+
70
+ const sulaToastStackCss = "*,:after,:before{--tw-ring-color:rgba(59,130,246,.5);--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(147,197,253,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border:0 solid #e5e7eb;box-sizing:border-box}::backdrop{--tw-ring-color:rgba(59,130,246,.5);--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(147,197,253,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;tab-size:4}body{font-family:Figtree;line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.absolute{position:absolute}.block{display:block}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}:host,:host button,:host input,:host option,:host select,:host textarea{font-family:Figtree,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:host{background-color:transparent;display:block;max-width:400px;width:100%}.toast-region{background-color:transparent}.toast-list--collapsed{padding-top:var(--toast-layer-offset)}.toast-layer--entering{animation:sula-toast-stack-enter .2s cubic-bezier(.2,.8,.2,1)}@keyframes sula-toast-stack-enter{0%{scale:.98;translate:0 -8px}to{scale:1;translate:0}}@media (prefers-reduced-motion:reduce){.toast-layer--entering{animation:none}}.toast-layer.toast-layer--covered{bottom:0;clip-path:inset(0 0 calc(100% - 12px) 0);position:absolute;top:var(--toast-layer-offset);inset-inline:0;margin-inline:auto;pointer-events:none;transform:translateY(calc(var(--toast-depth)*-12px));width:var(--toast-width)}.toast-layer.toast-layer--covered sula-toast,.toast-layer.toast-layer--covered sula-toast::part(container){height:100%}.toast-layer.toast-layer--covered sula-toast::part(container){box-shadow:none;isolation:auto;overflow:hidden}.toast-layer.toast-layer--covered sula-toast::part(close-button),.toast-layer.toast-layer--covered sula-toast::part(content),.toast-layer.toast-layer--covered sula-toast::part(icon){visibility:hidden}@font-face{font-display:swap;font-family:Figtree;font-style:normal;font-weight:300;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-Light.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:italic;font-weight:300;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-LightItalic.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:normal;font-weight:400;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-Regular.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:italic;font-weight:400;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-Italic.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:normal;font-weight:500;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-Medium.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:italic;font-weight:500;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-MediumItalic.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:normal;font-weight:600;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-SemiBold.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:italic;font-weight:600;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-SemiBoldItalic.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:normal;font-weight:700;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-Bold.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:italic;font-weight:700;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-BoldItalic.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:normal;font-weight:800;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-ExtraBold.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:italic;font-weight:800;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-ExtraBoldItalic.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:normal;font-weight:900;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-Black.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:Figtree;font-style:italic;font-weight:900;src:local(\"Figtree\"),url(@sula-tech/tailwind-css-plugin/assets/fonts/Figtree-BlackItalic.ttf) format(\"truetype\")}:root{--color-green-50:#f1f9f4;--color-green-100:#e6f4ed;--color-green-200:#cae7d8;--color-green-300:#a0d4b8;--color-green-400:#68bb8e;--color-green-500:#04843f;--color-green-600:#037236;--color-green-700:#03632f;--color-green-800:#035428;--color-green-900:#024521;--color-green-950:#012b15;--color-red-50:#fef6f6;--color-red-100:#fde8e8;--color-red-200:#fad1d1;--color-red-300:#f7abab;--color-red-400:#f17474;--color-red-500:#c80505;--color-red-600:#b30404;--color-red-700:#9f0404;--color-red-800:#860303;--color-red-900:#6d0303;--color-red-950:#330d00;--color-yellow-50:#fdf4e7;--color-yellow-100:#fcedd9;--color-yellow-200:#fae0bd;--color-yellow-300:#f6c788;--color-yellow-400:#f3b159;--color-yellow-500:#ef9928;--color-yellow-600:#e49226;--color-yellow-700:#d17e10;--color-yellow-800:#b46d0e;--color-yellow-900:#93590b;--color-yellow-950:#402705;--color-orange-50:#fef4f1;--color-orange-100:#fde8e2;--color-orange-200:#fbd2c6;--color-orange-300:#f8b4a0;--color-orange-400:#f58e70;--color-orange-500:#f05223;--color-orange-600:#ea4210;--color-orange-700:#d23b0e;--color-orange-800:#b5330c;--color-orange-900:#942a0a;--color-orange-950:#401204;--color-blue-50:#ecf0f9;--color-blue-100:#dde3f4;--color-blue-200:#b2c2e5;--color-blue-300:#7994d2;--color-blue-400:#4066bf;--color-blue-500:#001e64;--color-blue-600:#001c5c;--color-blue-700:#00174c;--color-blue-800:#00123d;--color-blue-900:#000f33;--color-blue-950:#000d2b;--color-ambar-50:#fff6eb;--color-ambar-100:#ffefdc;--color-ambar-200:#fedfb9;--color-ambar-300:#fdca8b;--color-ambar-400:#fdb359;--color-ambar-500:#fc9c26;--color-ambar-600:#ec8403;--color-ambar-700:#d87803;--color-ambar-800:#ba6803;--color-ambar-900:#975402;--color-ambar-950:#402301;--color-gray-50:#fff;--color-gray-100:#f3f4f4;--color-gray-200:#e5e6e6;--color-gray-300:#bfc0c0;--color-gray-400:#acaeae;--color-gray-500:#949595;--color-gray-600:#737575;--color-gray-700:#6c6e6e;--color-gray-800:#313333;--color-gray-900:#272929;--color-gray-950:#191d1d;--color-white-opacity-50:#ffffff0d;--color-white-opacity-100:#ffffff1a;--color-white-opacity-200:#ffffff26;--color-white-opacity-300:#ffffff45;--color-white-opacity-400:#ffffff5c;--color-white-opacity-500:#ffffff80;--color-white-opacity-600:#ffffff8c;--color-white-opacity-700:#ffffffa3;--color-white-opacity-800:#ffffffba;--color-white-opacity-900:#fffc;--color-white-opacity-950:#ffffffe8;--color-ciano-50:#f1f6fe;--color-ciano-100:#dfeafc;--color-ciano-200:#c3d9f9;--color-ciano-300:#90b9f4;--color-ciano-400:#5d98ee;--color-ciano-500:#1769e0;--color-ciano-600:#155fcb;--color-ciano-700:#1355b4;--color-ciano-800:#104899;--color-ciano-900:#0d3b7d;--color-ciano-950:#071e40;--color-extra-color-blue-light:#e7f0f4;--color-extra-color-blue-dark:#162931;--color-black-opacity-50:rgba(25,29,29,.02);--color-black-opacity-100:rgba(25,29,29,.05);--color-black-opacity-200:rgba(25,29,29,.11);--color-black-opacity-300:rgba(25,29,29,.28);--color-black-opacity-400:rgba(25,29,29,.36);--color-black-opacity-500:rgba(25,29,29,.44);--color-black-opacity-600:rgba(25,29,29,.62);--color-black-opacity-700:rgba(25,29,29,.64);--color-black-opacity-800:rgba(25,29,29,.72);--color-black-opacity-900:rgba(25,29,29,.8);--color-black-opacity-950:rgba(25,29,29,.96);--color-shadow-opacity-50:rgba(0,0,0,.04);--color-shadow-opacity-100:rgba(0,0,0,.06);--color-shadow-opacity-200:rgba(0,0,0,.12);--color-shadow-opacity-300:rgba(0,0,0,.2);--color-shadow-opacity-400:rgba(0,0,0,.32);--color-shadow-opacity-500:rgba(0,0,0,.5);--color-shadow-opacity-600:rgba(0,0,0,.55);--color-shadow-opacity-700:rgba(0,0,0,.64);--color-shadow-opacity-800:rgba(0,0,0,.73);--color-shadow-opacity-900:rgba(0,0,0,.8);--color-shadow-opacity-950:rgba(0,0,0,.91);--color-feedback-success:#04843f;--color-feedback-error:#c80505;--color-feedback-informational:#1355b4;--color-feedback-alert:#ef9928;--color-brand-primary:#f05223;--color-brand-secondary:#001c5c;--color-brand-tertiary-1:#1769e0;--color-brand-tertiary-2:#fc9c26;--color-surface-body:#fff;--color-surface-on-body:#f3f4f4;--color-surface-on-body-blue:#e7f0f4;--color-surface-on-body-brand:#fff6eb;--color-surface-on-body-feedback-success:#e6f4ed;--color-surface-on-body-feedback-error:#fde8e8;--color-surface-on-body-feedback-alert:#fdf4e7;--color-surface-on-body-feedback-info:#dfeafc;--color-text-brand:#f05223;--color-text-primary:#313333;--color-text-secondary:#6c6e6e;--color-text-disabled:#949595;--color-text-link:#1355b4;--color-states-empty-bg-hover:rgba(25,29,29,.05);--color-states-empty-bg-pressed:rgba(25,29,29,.11);--color-states-bg-disabled:rgba(25,29,29,.02);--color-states-bg-focus:#1355b4;--color-states-primary-hover:#ea4210;--color-states-primary-pressed:#d23b0e;--color-states-danger-hover:#b30404;--color-states-danger-pressed:#9f0404;--color-states-negative-hover:#e5e6e6;--color-states-negative-pressed:#bfc0c0;--color-icon-primary:#6c6e6e;--color-icon-secondary:#fff;--color-icon-tertiary:#b30404;--color-icon-disabled:#acaeae;--color-neutral-neutral-1:#fff;--color-neutral-neutral-2:#f3f4f4;--color-neutral-neutral-3:#acaeae;--color-neutral-neutral-4:#949595;--color-neutral-neutral-5:#737575;--color-neutral-neutral-6:#6c6e6e;--color-neutral-neutral-7:#313333;--color-neutral-neutral-8:#272929;--color-negative-negative-1:#fff;--color-negative-negative-2:#313333;--color-opacity-body:#fffc;--color-opacity-on-body:rgba(25,29,29,.02);--color-opacity-overlay:rgba(25,29,29,.62);--color-opacity-on-overlay:#ffffff1a;--color-opacity-toast:#ffffff45;--color-line-input:#949595;--color-line-general-strong:#bfc0c0;--color-line-general:#e5e6e6;--color-line-hair:rgba(25,29,29,.05);--color-box-shadow-body:#fff;--color-box-shadow-shadow-color-1:rgba(0,0,0,.04);--color-box-shadow-shadow-color-2:rgba(0,0,0,.06)}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.static{position:static}.relative{position:relative}.flex{display:flex}.w-full{width:100%}.min-w-0{min-width:0}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.gap-12{gap:.75rem}.rounded-sm{border-radius:.75rem}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus-visible\\:outline:focus-visible{outline-style:solid}.focus-visible\\:outline-2:focus-visible{outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-feedback-informational:focus-visible{outline-color:var(--color-feedback-informational)}";
71
+
72
+ const MAX_VISIBLE_LAYERS = 3;
73
+ const LAYER_OFFSET = 12;
74
+ const LAYER_WIDTH_STEP = 5;
75
+ const SulaToastStack = class {
76
+ constructor(hostRef) {
77
+ registerInstance(this, hostRef);
78
+ this.toastDismissRequested = createEvent(this, "toastDismissRequested");
79
+ this.toastAction = createEvent(this, "toastAction");
80
+ /** Notifications in chronological order, oldest first. Only the latest three are rendered. Replace the array to update it. IDs must be unique. */
81
+ this.items = [];
82
+ this.hovering = false;
83
+ this.focused = false;
84
+ this.noHover = false;
85
+ this.retainingPointerExpansion = false;
86
+ this.announcements = [];
87
+ this.announcementVersions = 0;
88
+ this.announcementSignatures = new Map();
89
+ this.enteringIds = new Set();
90
+ this.keyboardInteraction = false;
91
+ this.releaseFocusAfterRender = false;
92
+ this.ready = false;
93
+ this.connected = false;
94
+ this.motion = new SulaToastStackMotion();
95
+ this.handleMediaChange = (event) => {
96
+ this.noHover = event.matches;
97
+ this.hovering = false;
98
+ this.stopRetainingPointerExpansion();
99
+ };
100
+ this.handlePointerMove = (event) => {
101
+ var _a;
102
+ const bounds = (_a = this.region) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
103
+ this.hovering = !!bounds && event.clientX >= bounds.left && event.clientX <= bounds.right && event.clientY >= bounds.top && event.clientY <= bounds.bottom;
104
+ this.stopRetainingPointerExpansion();
105
+ };
106
+ this.handleFocusOut = () => {
107
+ if (this.focusFrame !== undefined)
108
+ cancelAnimationFrame(this.focusFrame);
109
+ this.focusFrame = requestAnimationFrame(() => {
110
+ var _a;
111
+ this.focusFrame = undefined;
112
+ this.focused = !!((_a = this.hostElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement);
113
+ });
114
+ };
115
+ this.dismiss = (event, id) => {
116
+ event.stopPropagation();
117
+ this.toastDismissRequested.emit({ id, reason: event.detail.reason });
118
+ };
119
+ this.action = (event, id) => {
120
+ event.stopPropagation();
121
+ this.toastAction.emit({ id });
122
+ };
123
+ }
124
+ get expanded() {
125
+ return this.noHover || this.hovering || this.focused || this.retainingPointerExpansion;
126
+ }
127
+ get visibleItems() {
128
+ return this.items.slice(-3);
129
+ }
130
+ get motionTargets() {
131
+ var _a, _b, _c;
132
+ const reduceMotion = (_b = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(prefers-reduced-motion: reduce)').matches) !== null && _b !== void 0 ? _b : false;
133
+ if (!this.ready || this.noHover || reduceMotion || !((_c = this.region) === null || _c === void 0 ? void 0 : _c.animate) || !this.list)
134
+ return;
135
+ return { region: this.region, list: this.list };
136
+ }
137
+ connectedCallback() {
138
+ this.connected = true;
139
+ if (this.ready)
140
+ this.connectListeners();
141
+ }
142
+ componentDidLoad() {
143
+ this.ready = true;
144
+ this.connectListeners();
145
+ Promise.resolve().then(() => {
146
+ if (this.connected)
147
+ this.updateAnnouncements();
148
+ });
149
+ }
150
+ componentWillRender() {
151
+ if (this.renderedExpanded === this.expanded)
152
+ return;
153
+ this.renderedExpanded = this.expanded;
154
+ const targets = this.motionTargets;
155
+ if (!targets) {
156
+ this.motion.cancel();
157
+ return;
158
+ }
159
+ this.motion.capture(targets.region, targets.list);
160
+ }
161
+ componentDidRender() {
162
+ this.restoreFocus();
163
+ this.releasePointerFocus();
164
+ if (this.region && this.list)
165
+ this.motion.play(this.region, this.list);
166
+ }
167
+ disconnectedCallback() {
168
+ var _a;
169
+ this.connected = false;
170
+ this.motion.cancel();
171
+ (_a = this.media) === null || _a === void 0 ? void 0 : _a.removeEventListener('change', this.handleMediaChange);
172
+ window.removeEventListener('pointermove', this.handlePointerMove);
173
+ if (this.focusFrame !== undefined)
174
+ cancelAnimationFrame(this.focusFrame);
175
+ this.focusFrame = undefined;
176
+ this.keyboardInteraction = false;
177
+ this.retainingPointerExpansion = false;
178
+ this.hovering = false;
179
+ this.focused = false;
180
+ }
181
+ handleItemsChange(next, previous = []) {
182
+ var _a, _b, _c, _d, _e, _f;
183
+ const targets = this.motionTargets;
184
+ if (targets)
185
+ this.motion.capture(targets.region, targets.list);
186
+ else
187
+ this.motion.cancel();
188
+ const active = (_a = this.hostElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement;
189
+ const focusedId = (_b = active === null || active === void 0 ? void 0 : active.closest('[data-toast-id]')) === null || _b === void 0 ? void 0 : _b.dataset.toastId;
190
+ const nextVisible = next.slice(-3);
191
+ const previousVisibleIds = new Set(previous.slice(-3).map(item => item.id));
192
+ this.enteringIds = this.ready ? new Set(nextVisible.filter(item => !previousVisibleIds.has(item.id)).map(item => item.id)) : new Set();
193
+ if (focusedId !== undefined && !nextVisible.some(item => item.id === focusedId)) {
194
+ if (this.keyboardInteraction) {
195
+ const visibleIds = new Set(nextVisible.map(item => item.id));
196
+ const index = previous.findIndex(item => item.id === focusedId);
197
+ const following = previous.slice(index + 1).find(item => visibleIds.has(item.id));
198
+ const preceding = previous
199
+ .slice(0, index)
200
+ .reverse()
201
+ .find(item => visibleIds.has(item.id));
202
+ this.focusTarget = (_f = (_d = (_c = following === null || following === void 0 ? void 0 : following.id) !== null && _c !== void 0 ? _c : preceding === null || preceding === void 0 ? void 0 : preceding.id) !== null && _d !== void 0 ? _d : (_e = nextVisible[0]) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : '';
203
+ }
204
+ else {
205
+ this.focusTarget = undefined;
206
+ this.releaseFocusAfterRender = true;
207
+ if (nextVisible.length && !this.noHover) {
208
+ this.retainingPointerExpansion = true;
209
+ window.addEventListener('pointermove', this.handlePointerMove, { once: true });
210
+ }
211
+ this.focused = false;
212
+ }
213
+ }
214
+ if (this.ready)
215
+ this.updateAnnouncements();
216
+ }
217
+ updateAnnouncements() {
218
+ const records = [];
219
+ const signatures = new Map();
220
+ for (const item of this.visibleItems) {
221
+ const priority = item.announcement || 'polite';
222
+ const text = [item.title, item.message].filter(Boolean).join('. ');
223
+ const signature = JSON.stringify([text, priority]);
224
+ signatures.set(item.id, signature);
225
+ if (priority === 'off' || !text)
226
+ continue;
227
+ const previous = this.announcements.find(record => record.id === item.id);
228
+ records.push(this.announcementSignatures.get(item.id) === signature && previous
229
+ ? previous
230
+ : {
231
+ id: item.id,
232
+ text,
233
+ priority,
234
+ version: ++this.announcementVersions,
235
+ });
236
+ }
237
+ this.announcementSignatures = signatures;
238
+ this.announcements = records;
239
+ }
240
+ connectListeners() {
241
+ var _a, _b, _c, _d;
242
+ this.media = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(hover: none)');
243
+ this.noHover = (_c = (_b = this.media) === null || _b === void 0 ? void 0 : _b.matches) !== null && _c !== void 0 ? _c : false;
244
+ (_d = this.media) === null || _d === void 0 ? void 0 : _d.addEventListener('change', this.handleMediaChange);
245
+ }
246
+ stopRetainingPointerExpansion() {
247
+ window.removeEventListener('pointermove', this.handlePointerMove);
248
+ this.retainingPointerExpansion = false;
249
+ }
250
+ restoreFocus() {
251
+ var _a, _b;
252
+ if (this.focusTarget === undefined)
253
+ return;
254
+ const targetId = this.focusTarget;
255
+ this.focusTarget = undefined;
256
+ const target = Array.from(((_a = this.list) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-toast-id]')) || []).find(element => element.dataset.toastId === targetId);
257
+ (_b = (target || this.region)) === null || _b === void 0 ? void 0 : _b.focus();
258
+ }
259
+ releasePointerFocus() {
260
+ var _a, _b;
261
+ if (!this.releaseFocusAfterRender)
262
+ return;
263
+ this.releaseFocusAfterRender = false;
264
+ let active = (_a = this.hostElement.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement;
265
+ while ((_b = active === null || active === void 0 ? void 0 : active.shadowRoot) === null || _b === void 0 ? void 0 : _b.activeElement)
266
+ active = active.shadowRoot.activeElement;
267
+ active === null || active === void 0 ? void 0 : active.blur();
268
+ this.focused = false;
269
+ }
270
+ render() {
271
+ const expanded = this.expanded;
272
+ const visibleItems = this.visibleItems;
273
+ return (h(Host, { key: 'e52aeb1dd9f0d54498a4c7a0ad2300cdc5d24484' }, h("section", { key: '7c829968e841616450c308571cd1b60341b3c38b', ref: el => (this.region = el), role: "region", "aria-label": "Notifica\u00E7\u00F5es", tabIndex: 0, class: "toast-region w-full rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-feedback-informational focus-visible:outline-offset-2", onMouseEnter: () => {
274
+ if (!this.noHover)
275
+ this.hovering = true;
276
+ }, onMouseLeave: () => (this.hovering = false), onPointerDown: () => {
277
+ this.keyboardInteraction = false;
278
+ this.stopRetainingPointerExpansion();
279
+ }, onKeyDown: () => {
280
+ this.keyboardInteraction = true;
281
+ this.stopRetainingPointerExpansion();
282
+ }, onFocusin: () => (this.focused = true), onFocusout: this.handleFocusOut }, h("div", { key: '2327880499750943034cf47d8f2ea2dfd13d0e5a', ref: el => (this.list = el), class: { 'toast-list relative flex flex-col gap-12': true, 'toast-list--collapsed': !expanded }, style: {
283
+ '--toast-layer-offset': `${Math.max(0, visibleItems.length - 1) * LAYER_OFFSET}px`,
284
+ } }, visibleItems.map((item, index) => {
285
+ var _a, _b, _c, _d;
286
+ const depth = visibleItems.length - 1 - index;
287
+ const covered = !expanded && depth > 0;
288
+ return (h("div", { key: item.id, "data-toast-id": item.id, tabIndex: -1, "aria-hidden": covered ? 'true' : undefined, inert: covered, class: {
289
+ 'toast-layer relative w-full min-w-0 shrink-0': true,
290
+ 'toast-layer--covered': covered,
291
+ 'toast-layer--entering': this.enteringIds.has(item.id),
292
+ }, style: {
293
+ '--toast-depth': String(depth),
294
+ '--toast-width': `${100 - Math.min(depth, MAX_VISIBLE_LAYERS - 1) * LAYER_WIDTH_STEP}%`,
295
+ } }, h("sula-toast", { toastTitle: item.title, message: (_a = item.message) !== null && _a !== void 0 ? _a : '', type: item.type, icon: item.icon, actionText: (_b = item.actionText) !== null && _b !== void 0 ? _b : '', closable: (_c = item.closable) !== null && _c !== void 0 ? _c : true, duration: item.duration, closeLabel: (_d = item.closeLabel) !== null && _d !== void 0 ? _d : 'Fechar notificação', paused: covered || this.hovering || this.focused || this.retainingPointerExpansion, announcement: "off", animated: depth === 0, onToastDismissRequested: event => this.dismiss(event, item.id), onToastAction: event => this.action(event, item.id) })));
296
+ }))), h("div", { key: 'be446beb46594f14b6079a5a0649c9bf3a17b0cb', class: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "false", "aria-relevant": "additions text" }, this.announcements
297
+ .filter(record => record.priority === 'polite')
298
+ .map(record => (h("p", { key: record.version }, record.text)))), h("div", { key: '5d9e871c11e91fb293f22c92ddd5a590517576f1', class: "sr-only", role: "alert", "aria-live": "assertive", "aria-atomic": "false", "aria-relevant": "additions text" }, this.announcements
299
+ .filter(record => record.priority === 'assertive')
300
+ .map(record => (h("p", { key: record.version }, record.text))))));
301
+ }
302
+ get hostElement() { return getElement(this); }
303
+ static get watchers() { return {
304
+ "items": ["handleItemsChange"]
305
+ }; }
306
+ };
307
+ SulaToastStack.style = sulaToastStackCss;
308
+
309
+ export { SulaToastStack as sula_toast_stack };
310
+ //# sourceMappingURL=sula-toast-stack.entry.js.map
311
+
312
+ //# sourceMappingURL=sula-toast-stack.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sula-toast-stack.entry.js","sources":["src/components/sula-toast-stack/sula-toast-stack.motion.ts","src/components/sula-toast-stack/sula-toast-stack.scss?tag=sula-toast-stack&encapsulation=shadow","src/components/sula-toast-stack/sula-toast-stack.tsx"],"sourcesContent":["const MOTION_DURATION = 260;\nconst MOTION_EASING = 'cubic-bezier(0.2, 0.8, 0.2, 1)';\n\ninterface CardLayout {\n rect: DOMRect;\n opacity: number;\n}\n\ninterface StackLayout {\n height: number;\n cards: Map<string, CardLayout>;\n}\n\nexport class SulaToastStackMotion {\n private previous?: StackLayout;\n private animations = new Set<Animation>();\n\n capture(region: HTMLElement, list: HTMLElement) {\n const cards = new Map<string, CardLayout>();\n list.querySelectorAll<HTMLElement>('[data-toast-id]').forEach(element => {\n const rect = element.getBoundingClientRect();\n if (element.dataset.toastId && rect.width && rect.height) {\n cards.set(element.dataset.toastId, { rect, opacity: Number(getComputedStyle(element).opacity) });\n }\n });\n\n const previous = { height: region.getBoundingClientRect().height, cards };\n this.cancelAnimations();\n this.previous = previous;\n }\n\n play(region: HTMLElement, list: HTMLElement) {\n const previous = this.previous;\n this.previous = undefined;\n if (!previous) return;\n\n list.querySelectorAll<HTMLElement>('[data-toast-id]').forEach(element => {\n const rect = element.getBoundingClientRect();\n const transform = getComputedStyle(element).transform;\n const restingTransform = transform === 'none' ? '' : transform;\n const origin = previous.cards.get(element.dataset.toastId);\n if (!rect.width || !rect.height) return;\n if (!origin) return;\n\n const deltaX = origin.rect.left - rect.left;\n const deltaY = origin.rect.top - rect.top;\n const scaleX = origin.rect.width / rect.width;\n const scaleY = origin.rect.height / rect.height;\n const moved = Math.abs(deltaX) > 0.5 || Math.abs(deltaY) > 0.5 || Math.abs(scaleX - 1) > 0.005 || Math.abs(scaleY - 1) > 0.005;\n if (!moved && origin.opacity > 0.995) return;\n\n this.animate(element, [\n {\n opacity: origin.opacity,\n transformOrigin: 'top left',\n transform: `translate(${deltaX}px, ${deltaY}px) ${restingTransform} scale(${scaleX}, ${scaleY})`,\n },\n { opacity: 1, transformOrigin: 'top left', transform },\n ]);\n });\n\n const height = region.getBoundingClientRect().height;\n if (previous.height !== height) this.animate(region, [{ height: `${previous.height}px` }, { height: `${height}px` }]);\n }\n\n cancel() {\n this.previous = undefined;\n this.cancelAnimations();\n }\n\n private animate(element: HTMLElement, frames: Keyframe[]) {\n const animation = element.animate(frames, { duration: MOTION_DURATION, easing: MOTION_EASING });\n this.animations.add(animation);\n animation.onfinish = animation.oncancel = () => this.animations.delete(animation);\n }\n\n private cancelAnimations() {\n this.animations.forEach(animation => animation.cancel());\n this.animations.clear();\n }\n}\n",":host {\n display: block;\n width: 100%;\n max-width: 400px;\n background-color: transparent;\n}\n\n.toast-region {\n background-color: transparent;\n}\n\n.toast-list--collapsed {\n padding-top: var(--toast-layer-offset);\n}\n\n.toast-layer--entering {\n animation: sula-toast-stack-enter 200ms cubic-bezier(0.2, 0.8, 0.2, 1);\n}\n\n@keyframes sula-toast-stack-enter {\n from {\n translate: 0 -8px;\n scale: 0.98;\n }\n\n to {\n translate: 0;\n scale: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast-layer--entering {\n animation: none;\n }\n}\n\n.toast-layer.toast-layer--covered {\n position: absolute;\n top: var(--toast-layer-offset);\n bottom: 0;\n inset-inline: 0;\n margin-inline: auto;\n width: var(--toast-width);\n transform: translateY(calc(var(--toast-depth) * -12px));\n clip-path: inset(0 0 calc(100% - 12px) 0);\n pointer-events: none;\n\n sula-toast,\n sula-toast::part(container) {\n height: 100%;\n }\n\n sula-toast::part(container) {\n overflow: hidden;\n box-shadow: none;\n isolation: auto;\n }\n\n sula-toast::part(icon),\n sula-toast::part(content),\n sula-toast::part(close-button) {\n visibility: hidden;\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { SulaToastDismissEvent, SulaToastItem, SulaToastStackActionEvent, SulaToastStackDismissEvent } from '../sula-toast/model/sula-toast.model';\nimport type { Announcement } from './model/sula-toast-stack.model';\nimport { SulaToastStackMotion } from './sula-toast-stack.motion';\n\nconst MAX_VISIBLE_LAYERS = 3;\nconst LAYER_OFFSET = 12;\nconst LAYER_WIDTH_STEP = 5;\n\n@Component({ tag: 'sula-toast-stack', styleUrl: 'sula-toast-stack.scss', shadow: true })\nexport class SulaToastStack {\n @Element() hostElement: HTMLElement;\n\n /** Notifications in chronological order, oldest first. Only the latest three are rendered. Replace the array to update it. IDs must be unique. */\n @Prop() items: SulaToastItem[] = [];\n\n /** Requests removal of the identified notification by the consumer. */\n @Event() toastDismissRequested: EventEmitter<SulaToastStackDismissEvent>;\n\n /** Requests the identified notification's action without removing it. */\n @Event() toastAction: EventEmitter<SulaToastStackActionEvent>;\n\n @State() hovering = false;\n @State() focused = false;\n @State() noHover = false;\n @State() retainingPointerExpansion = false;\n @State() announcements: Announcement[] = [];\n\n private region?: HTMLElement;\n private list?: HTMLElement;\n private media?: MediaQueryList;\n private announcementVersions = 0;\n private announcementSignatures = new Map<string, string>();\n private enteringIds = new Set<string>();\n private focusTarget?: string;\n private focusFrame?: number;\n private keyboardInteraction = false;\n private releaseFocusAfterRender = false;\n private ready = false;\n private connected = false;\n private renderedExpanded?: boolean;\n private motion = new SulaToastStackMotion();\n\n private get expanded() {\n return this.noHover || this.hovering || this.focused || this.retainingPointerExpansion;\n }\n\n private get visibleItems() {\n return this.items.slice(-MAX_VISIBLE_LAYERS);\n }\n\n private get motionTargets() {\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n if (!this.ready || this.noHover || reduceMotion || !this.region?.animate || !this.list) return;\n return { region: this.region, list: this.list };\n }\n\n connectedCallback() {\n this.connected = true;\n if (this.ready) this.connectListeners();\n }\n\n componentDidLoad() {\n this.ready = true;\n this.connectListeners();\n Promise.resolve().then(() => {\n if (this.connected) this.updateAnnouncements();\n });\n }\n\n componentWillRender() {\n if (this.renderedExpanded === this.expanded) return;\n this.renderedExpanded = this.expanded;\n const targets = this.motionTargets;\n if (!targets) {\n this.motion.cancel();\n return;\n }\n this.motion.capture(targets.region, targets.list);\n }\n\n componentDidRender() {\n this.restoreFocus();\n this.releasePointerFocus();\n if (this.region && this.list) this.motion.play(this.region, this.list);\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.motion.cancel();\n this.media?.removeEventListener('change', this.handleMediaChange);\n window.removeEventListener('pointermove', this.handlePointerMove);\n if (this.focusFrame !== undefined) cancelAnimationFrame(this.focusFrame);\n this.focusFrame = undefined;\n this.keyboardInteraction = false;\n this.retainingPointerExpansion = false;\n this.hovering = false;\n this.focused = false;\n }\n\n @Watch('items')\n handleItemsChange(next: SulaToastItem[], previous: SulaToastItem[] = []) {\n const targets = this.motionTargets;\n if (targets) this.motion.capture(targets.region, targets.list);\n else this.motion.cancel();\n const active = this.hostElement.shadowRoot?.activeElement as HTMLElement | null;\n const focusedId = active?.closest<HTMLElement>('[data-toast-id]')?.dataset.toastId;\n const nextVisible = next.slice(-MAX_VISIBLE_LAYERS);\n const previousVisibleIds = new Set(previous.slice(-MAX_VISIBLE_LAYERS).map(item => item.id));\n this.enteringIds = this.ready ? new Set(nextVisible.filter(item => !previousVisibleIds.has(item.id)).map(item => item.id)) : new Set();\n if (focusedId !== undefined && !nextVisible.some(item => item.id === focusedId)) {\n if (this.keyboardInteraction) {\n const visibleIds = new Set(nextVisible.map(item => item.id));\n const index = previous.findIndex(item => item.id === focusedId);\n const following = previous.slice(index + 1).find(item => visibleIds.has(item.id));\n const preceding = previous\n .slice(0, index)\n .reverse()\n .find(item => visibleIds.has(item.id));\n this.focusTarget = following?.id ?? preceding?.id ?? nextVisible[0]?.id ?? '';\n } else {\n this.focusTarget = undefined;\n this.releaseFocusAfterRender = true;\n if (nextVisible.length && !this.noHover) {\n this.retainingPointerExpansion = true;\n window.addEventListener('pointermove', this.handlePointerMove, { once: true });\n }\n this.focused = false;\n }\n }\n if (this.ready) this.updateAnnouncements();\n }\n\n private updateAnnouncements() {\n const records: Announcement[] = [];\n const signatures = new Map<string, string>();\n for (const item of this.visibleItems) {\n const priority = item.announcement || 'polite';\n const text = [item.title, item.message].filter(Boolean).join('. ');\n const signature = JSON.stringify([text, priority]);\n signatures.set(item.id, signature);\n if (priority === 'off' || !text) continue;\n const previous = this.announcements.find(record => record.id === item.id);\n records.push(\n this.announcementSignatures.get(item.id) === signature && previous\n ? previous\n : {\n id: item.id,\n text,\n priority,\n version: ++this.announcementVersions,\n },\n );\n }\n this.announcementSignatures = signatures;\n this.announcements = records;\n }\n\n private connectListeners() {\n this.media = window.matchMedia?.('(hover: none)');\n this.noHover = this.media?.matches ?? false;\n this.media?.addEventListener('change', this.handleMediaChange);\n }\n\n private handleMediaChange = (event: MediaQueryListEvent) => {\n this.noHover = event.matches;\n this.hovering = false;\n this.stopRetainingPointerExpansion();\n };\n\n private handlePointerMove = (event: PointerEvent) => {\n const bounds = this.region?.getBoundingClientRect();\n this.hovering = !!bounds && event.clientX >= bounds.left && event.clientX <= bounds.right && event.clientY >= bounds.top && event.clientY <= bounds.bottom;\n this.stopRetainingPointerExpansion();\n };\n\n private stopRetainingPointerExpansion() {\n window.removeEventListener('pointermove', this.handlePointerMove);\n this.retainingPointerExpansion = false;\n }\n\n private restoreFocus() {\n if (this.focusTarget === undefined) return;\n const targetId = this.focusTarget;\n this.focusTarget = undefined;\n const target = Array.from(this.list?.querySelectorAll<HTMLElement>('[data-toast-id]') || []).find(element => element.dataset.toastId === targetId);\n (target || this.region)?.focus();\n }\n\n private releasePointerFocus() {\n if (!this.releaseFocusAfterRender) return;\n this.releaseFocusAfterRender = false;\n let active = this.hostElement.shadowRoot?.activeElement as HTMLElement | null;\n while (active?.shadowRoot?.activeElement) active = active.shadowRoot.activeElement as HTMLElement;\n active?.blur();\n this.focused = false;\n }\n\n private handleFocusOut = () => {\n if (this.focusFrame !== undefined) cancelAnimationFrame(this.focusFrame);\n this.focusFrame = requestAnimationFrame(() => {\n this.focusFrame = undefined;\n this.focused = !!this.hostElement.shadowRoot?.activeElement;\n });\n };\n\n private dismiss = (event: CustomEvent<SulaToastDismissEvent>, id: string) => {\n event.stopPropagation();\n this.toastDismissRequested.emit({ id, reason: event.detail.reason });\n };\n\n private action = (event: CustomEvent<void>, id: string) => {\n event.stopPropagation();\n this.toastAction.emit({ id });\n };\n\n render() {\n const expanded = this.expanded;\n const visibleItems = this.visibleItems;\n return (\n <Host>\n <section\n ref={el => (this.region = el)}\n role=\"region\"\n aria-label=\"Notificações\"\n tabIndex={0}\n class=\"toast-region w-full rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-feedback-informational focus-visible:outline-offset-2\"\n onMouseEnter={() => {\n if (!this.noHover) this.hovering = true;\n }}\n onMouseLeave={() => (this.hovering = false)}\n onPointerDown={() => {\n this.keyboardInteraction = false;\n this.stopRetainingPointerExpansion();\n }}\n onKeyDown={() => {\n this.keyboardInteraction = true;\n this.stopRetainingPointerExpansion();\n }}\n onFocusin={() => (this.focused = true)}\n onFocusout={this.handleFocusOut}\n >\n <div\n ref={el => (this.list = el)}\n class={{ 'toast-list relative flex flex-col gap-12': true, 'toast-list--collapsed': !expanded }}\n style={{\n '--toast-layer-offset': `${Math.max(0, visibleItems.length - 1) * LAYER_OFFSET}px`,\n }}\n >\n {visibleItems.map((item, index) => {\n const depth = visibleItems.length - 1 - index;\n const covered = !expanded && depth > 0;\n return (\n <div\n key={item.id}\n data-toast-id={item.id}\n tabIndex={-1}\n aria-hidden={covered ? 'true' : undefined}\n inert={covered}\n class={{\n 'toast-layer relative w-full min-w-0 shrink-0': true,\n 'toast-layer--covered': covered,\n 'toast-layer--entering': this.enteringIds.has(item.id),\n }}\n style={{\n '--toast-depth': String(depth),\n '--toast-width': `${100 - Math.min(depth, MAX_VISIBLE_LAYERS - 1) * LAYER_WIDTH_STEP}%`,\n }}\n >\n <sula-toast\n toastTitle={item.title}\n message={item.message ?? ''}\n type={item.type}\n icon={item.icon}\n actionText={item.actionText ?? ''}\n closable={item.closable ?? true}\n duration={item.duration}\n closeLabel={item.closeLabel ?? 'Fechar notificação'}\n paused={covered || this.hovering || this.focused || this.retainingPointerExpansion}\n announcement=\"off\"\n animated={depth === 0}\n onToastDismissRequested={event => this.dismiss(event, item.id)}\n onToastAction={event => this.action(event, item.id)}\n />\n </div>\n );\n })}\n </div>\n </section>\n <div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"false\" aria-relevant=\"additions text\">\n {this.announcements\n .filter(record => record.priority === 'polite')\n .map(record => (\n <p key={record.version}>{record.text}</p>\n ))}\n </div>\n <div class=\"sr-only\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"false\" aria-relevant=\"additions text\">\n {this.announcements\n .filter(record => record.priority === 'assertive')\n .map(record => (\n <p key={record.version}>{record.text}</p>\n ))}\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}