se-design 1.0.92 → 1.0.94

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 (171) hide show
  1. package/dist/assets/icons/share.svg +6 -0
  2. package/dist/assets/style.css +1 -1
  3. package/dist/components/OnboardingTour/index.d.ts +4 -0
  4. package/dist/index12.js +2 -2
  5. package/dist/index13.js +2 -2
  6. package/dist/index16.js +1 -1
  7. package/dist/index183.js +1 -1
  8. package/dist/index183.js.map +1 -1
  9. package/dist/index184.js +1 -1
  10. package/dist/index184.js.map +1 -1
  11. package/dist/index185.js +1 -1
  12. package/dist/index185.js.map +1 -1
  13. package/dist/index186.js +1 -1
  14. package/dist/index186.js.map +1 -1
  15. package/dist/index187.js +1 -1
  16. package/dist/index187.js.map +1 -1
  17. package/dist/index188.js +1 -1
  18. package/dist/index188.js.map +1 -1
  19. package/dist/index189.js +1 -1
  20. package/dist/index189.js.map +1 -1
  21. package/dist/index19.js +1 -1
  22. package/dist/index190.js +1 -1
  23. package/dist/index190.js.map +1 -1
  24. package/dist/index191.js +2 -2
  25. package/dist/index191.js.map +1 -1
  26. package/dist/index192.js +2 -2
  27. package/dist/index192.js.map +1 -1
  28. package/dist/index193.js +1 -1
  29. package/dist/index193.js.map +1 -1
  30. package/dist/index194.js +1 -1
  31. package/dist/index194.js.map +1 -1
  32. package/dist/index195.js +2 -2
  33. package/dist/index195.js.map +1 -1
  34. package/dist/index196.js +2 -2
  35. package/dist/index196.js.map +1 -1
  36. package/dist/index197.js +1 -1
  37. package/dist/index197.js.map +1 -1
  38. package/dist/index198.js +1 -1
  39. package/dist/index198.js.map +1 -1
  40. package/dist/index199.js +1 -1
  41. package/dist/index199.js.map +1 -1
  42. package/dist/index200.js +1 -1
  43. package/dist/index200.js.map +1 -1
  44. package/dist/index201.js +1 -1
  45. package/dist/index201.js.map +1 -1
  46. package/dist/index202.js +1 -1
  47. package/dist/index202.js.map +1 -1
  48. package/dist/index203.js +1 -1
  49. package/dist/index203.js.map +1 -1
  50. package/dist/index204.js +1 -1
  51. package/dist/index204.js.map +1 -1
  52. package/dist/index205.js +1 -1
  53. package/dist/index205.js.map +1 -1
  54. package/dist/index206.js +2 -2
  55. package/dist/index206.js.map +1 -1
  56. package/dist/index207.js +2 -2
  57. package/dist/index207.js.map +1 -1
  58. package/dist/index208.js +2 -2
  59. package/dist/index208.js.map +1 -1
  60. package/dist/index209.js +2 -149
  61. package/dist/index209.js.map +1 -1
  62. package/dist/index210.js +149 -9
  63. package/dist/index210.js.map +1 -1
  64. package/dist/index211.js +8 -5
  65. package/dist/index211.js.map +1 -1
  66. package/dist/index212.js +5 -42
  67. package/dist/index212.js.map +1 -1
  68. package/dist/index213.js +40 -18
  69. package/dist/index213.js.map +1 -1
  70. package/dist/index214.js +24 -0
  71. package/dist/index214.js.map +1 -0
  72. package/dist/index221.js +24 -68
  73. package/dist/index221.js.map +1 -1
  74. package/dist/index222.js +75 -0
  75. package/dist/index222.js.map +1 -0
  76. package/dist/{index228.js → index229.js} +1 -1
  77. package/dist/{index228.js.map → index229.js.map} +1 -1
  78. package/dist/{index230.js → index231.js} +1 -1
  79. package/dist/{index230.js.map → index231.js.map} +1 -1
  80. package/dist/{index238.js → index239.js} +1 -1
  81. package/dist/{index238.js.map → index239.js.map} +1 -1
  82. package/dist/index24.js +1 -1
  83. package/dist/{index241.js → index242.js} +1 -1
  84. package/dist/{index241.js.map → index242.js.map} +1 -1
  85. package/dist/index251.js +169 -3
  86. package/dist/index251.js.map +1 -1
  87. package/dist/index252.js +7 -0
  88. package/dist/index252.js.map +1 -0
  89. package/dist/index254.js +18 -9
  90. package/dist/index254.js.map +1 -1
  91. package/dist/index255.js +9 -9
  92. package/dist/index255.js.map +1 -1
  93. package/dist/index256.js +9 -4
  94. package/dist/index256.js.map +1 -1
  95. package/dist/index257.js +5 -170
  96. package/dist/index257.js.map +1 -1
  97. package/dist/index258.js +170 -11
  98. package/dist/index258.js.map +1 -1
  99. package/dist/index259.js +11 -6
  100. package/dist/index259.js.map +1 -1
  101. package/dist/index26.js +1 -1
  102. package/dist/index260.js +5 -5
  103. package/dist/index260.js.map +1 -1
  104. package/dist/index261.js +5 -37
  105. package/dist/index261.js.map +1 -1
  106. package/dist/index262.js +38 -2
  107. package/dist/index262.js.map +1 -1
  108. package/dist/index263.js +2 -8
  109. package/dist/index263.js.map +1 -1
  110. package/dist/index264.js +7 -326
  111. package/dist/index264.js.map +1 -1
  112. package/dist/index265.js +324 -47
  113. package/dist/index265.js.map +1 -1
  114. package/dist/index266.js +50 -2
  115. package/dist/index266.js.map +1 -1
  116. package/dist/index267.js +2 -76
  117. package/dist/index267.js.map +1 -1
  118. package/dist/index268.js +65 -82
  119. package/dist/index268.js.map +1 -1
  120. package/dist/index269.js +89 -48
  121. package/dist/index269.js.map +1 -1
  122. package/dist/index270.js +51 -7
  123. package/dist/index270.js.map +1 -1
  124. package/dist/index271.js +7 -4
  125. package/dist/index271.js.map +1 -1
  126. package/dist/index272.js +4 -51
  127. package/dist/index272.js.map +1 -1
  128. package/dist/index273.js +52 -2
  129. package/dist/index273.js.map +1 -1
  130. package/dist/index274.js +2 -2
  131. package/dist/index275.js +5 -0
  132. package/dist/index275.js.map +1 -0
  133. package/dist/index29.js +2 -2
  134. package/dist/index30.js +1 -1
  135. package/dist/index31.js +1 -1
  136. package/dist/index33.js +11 -10
  137. package/dist/index34.js +1 -1
  138. package/dist/index36.js +1 -1
  139. package/dist/index37.js +1 -1
  140. package/dist/index38.js +1 -1
  141. package/dist/index39.js +1 -1
  142. package/dist/index40.js +2 -2
  143. package/dist/index41.js +1 -1
  144. package/dist/index43.js +8 -7
  145. package/dist/index44.js +3 -2
  146. package/dist/index46.js +1 -1
  147. package/dist/index51.js +2 -2
  148. package/dist/index54.js +1 -1
  149. package/dist/index56.js +1 -1
  150. package/dist/index57.js +1 -1
  151. package/dist/index58.js +1 -1
  152. package/dist/index6.js +39 -37
  153. package/dist/index6.js.map +1 -1
  154. package/dist/index60.js +17 -16
  155. package/dist/index62.js +1 -1
  156. package/dist/index66.js +1 -1
  157. package/dist/index67.js +78 -67
  158. package/dist/index67.js.map +1 -1
  159. package/dist/index68.js +1 -1
  160. package/dist/index7.js +9 -8
  161. package/dist/index70.js +3 -2
  162. package/dist/index84.js +1 -1
  163. package/dist/index86.js +1 -1
  164. package/dist/index9.js +1 -1
  165. package/package.json +1 -1
  166. package/dist/index220.js +0 -31
  167. package/dist/index220.js.map +0 -1
  168. package/dist/index250.js +0 -173
  169. package/dist/index250.js.map +0 -1
  170. package/dist/index253.js +0 -22
  171. package/dist/index253.js.map +0 -1
package/dist/index60.js CHANGED
@@ -1,4 +1,4 @@
1
- import a from "react";
1
+ import t from "react";
2
2
  /* empty css */
3
3
  const n = ({
4
4
  element: e,
@@ -15,12 +15,12 @@ const n = ({
15
15
  "--shimmer-base-color": s,
16
16
  "--shimmer-highlight-color": m
17
17
  }, r = `se-design-shimmer-element se-design-shimmer-${e.type}`;
18
- return /* @__PURE__ */ a.createElement("div", {
18
+ return /* @__PURE__ */ t.createElement("div", {
19
19
  className: r,
20
20
  style: i
21
- }, e.children && e.children.map((t, p) => /* @__PURE__ */ a.createElement(n, {
21
+ }, e.children && e.children.map((a, p) => /* @__PURE__ */ t.createElement(n, {
22
22
  key: p,
23
- element: t,
23
+ element: a,
24
24
  animationDuration: d,
25
25
  baseColor: s,
26
26
  highlightColor: m
@@ -40,48 +40,48 @@ const n = ({
40
40
  alignItems: e.alignItems,
41
41
  flex: e.flex
42
42
  };
43
- return /* @__PURE__ */ a.createElement("div", {
43
+ return /* @__PURE__ */ t.createElement("div", {
44
44
  className: `se-design-shimmer-container ${e.className || ""}`,
45
45
  style: i
46
- }, e.children.map((r, t) => r.type === "container" ? /* @__PURE__ */ a.createElement(y, {
47
- key: t,
46
+ }, e.children.map((r, a) => r.type === "container" ? /* @__PURE__ */ t.createElement(y, {
47
+ key: a,
48
48
  container: r,
49
49
  animationDuration: d,
50
50
  baseColor: s,
51
51
  highlightColor: m
52
- }) : /* @__PURE__ */ a.createElement(n, {
53
- key: t,
52
+ }) : /* @__PURE__ */ t.createElement(n, {
53
+ key: a,
54
54
  element: r,
55
55
  animationDuration: d,
56
56
  baseColor: s,
57
57
  highlightColor: m
58
58
  })));
59
- }, g = ({
59
+ }, l = ({
60
60
  structure: e,
61
61
  className: d = "",
62
62
  animationDuration: s = 3,
63
63
  baseColor: m = "var(--color-gray-700)",
64
64
  highlightColor: i = "var(--color-gray-600)",
65
65
  width: r,
66
- height: t
66
+ height: a
67
67
  }) => {
68
68
  const p = {
69
69
  width: r ? typeof r == "number" ? `${r}px` : r : "100%",
70
- height: t ? typeof t == "number" ? `${t}px` : t : "auto",
70
+ height: a ? typeof a == "number" ? `${a}px` : a : "auto",
71
71
  "--shimmer-duration": `${s}s`,
72
72
  "--shimmer-base-color": m,
73
73
  "--shimmer-highlight-color": i
74
74
  };
75
- return /* @__PURE__ */ a.createElement("div", {
75
+ return /* @__PURE__ */ t.createElement("div", {
76
76
  className: `se-design-shimmer-loader ${d}`,
77
77
  style: p
78
- }, e.map((c, o) => c.type === "container" ? /* @__PURE__ */ a.createElement(y, {
78
+ }, e.map((c, o) => c.type === "container" ? /* @__PURE__ */ t.createElement(y, {
79
79
  key: o,
80
80
  container: c,
81
81
  animationDuration: s,
82
82
  baseColor: m,
83
83
  highlightColor: i
84
- }) : /* @__PURE__ */ a.createElement(n, {
84
+ }) : /* @__PURE__ */ t.createElement(n, {
85
85
  key: o,
86
86
  element: c,
87
87
  animationDuration: s,
@@ -90,6 +90,7 @@ const n = ({
90
90
  })));
91
91
  };
92
92
  export {
93
- g as ShimmerLoader
93
+ l as ShimmerLoader,
94
+ l as default
94
95
  };
95
96
  //# sourceMappingURL=index60.js.map
package/dist/index62.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import p, { useState as A, useRef as O, useEffect as j } from "react";
2
- import { useStableId as W } from "./index211.js";
2
+ import { useStableId as W } from "./index212.js";
3
3
  /* empty css */
4
4
  const M = ({
5
5
  length: n = 6,
package/dist/index66.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import n, { useState as u, useCallback as y, useEffect as P } from "react";
2
2
  import { Popover as I } from "./index19.js";
3
- import { useStableId as k } from "./index211.js";
3
+ import { useStableId as k } from "./index212.js";
4
4
  /* empty css */
5
5
  function p() {
6
6
  return p = Object.assign ? Object.assign.bind() : function(r) {
package/dist/index67.js CHANGED
@@ -1,32 +1,35 @@
1
- import o, { useState as B, useRef as C, useCallback as m, useEffect as w } from "react";
2
- import { Button as L } from "./index4.js";
3
- import { Tooltip as D } from "./index16.js";
1
+ import o, { useState as U, useRef as P, useCallback as m, useEffect as k } from "react";
2
+ import { Button as M } from "./index4.js";
3
+ import { Tooltip as Y } from "./index16.js";
4
+ import { Icon as K } from "./index6.js";
4
5
  /* empty css */
5
- const u = {
6
+ const f = {
6
7
  gotIt: "got_it",
7
8
  finish: "finish",
8
9
  next: "next",
9
10
  back: "back"
10
- }, Q = ({
11
- steps: e = [],
11
+ }, te = ({
12
+ steps: t = [],
12
13
  screenBaseElementSelector: T = "",
13
14
  handleCloseProductTour: d,
14
15
  tourType: g = "",
15
- automationId: f = "onboarding-tour",
16
- highlightBorderRadius: E = 6,
16
+ automationId: h = "onboarding-tour",
17
+ highlightBorderRadius: w = 6,
18
+ customClassName: W = "",
19
+ showSkipCTA: v = !1,
17
20
  labels: A
18
21
  }) => {
19
- const [t, k] = B(0), c = C(null), l = C(null), {
20
- next: H = "Next",
21
- gotIt: P = "Got It",
22
- finish: M = "Finish",
23
- skip: W = "Skip tour",
24
- stepInfo: O = "Step {step} of {total}"
25
- } = A || {}, s = document.querySelector(T), y = m(() => {
22
+ const [e, y] = U(0), c = P(null), l = P(null), {
23
+ next: O = "Next",
24
+ gotIt: V = "Got It",
25
+ finish: z = "Finish",
26
+ skip: $ = "Skip tour",
27
+ stepInfo: F = "Step {step} of {total}"
28
+ } = A || {}, s = document.querySelector(T), x = m(() => {
26
29
  let n;
27
- if (t >= e.length)
30
+ if (e >= t.length)
28
31
  return n;
29
- const i = document.querySelector(e[t]?.targetElementContainerSelector ? e[t].targetElementContainerSelector : e[t]?.targetElementSelector);
32
+ const i = document.querySelector(t[e]?.targetElementContainerSelector ? t[e].targetElementContainerSelector : t[e]?.targetElementSelector);
30
33
  if (!i)
31
34
  return n;
32
35
  const r = i.getBoundingClientRect();
@@ -37,56 +40,56 @@ const u = {
37
40
  behavior: "auto",
38
41
  block: "end"
39
42
  })), n = setTimeout(() => {
40
- const x = document.querySelector(e[t]?.targetElementSelector);
41
- if (!x || !c.current || !l.current)
43
+ const I = document.querySelector(t[e]?.targetElementSelector);
44
+ if (!I || !c.current || !l.current)
42
45
  return;
43
- const a = x.getBoundingClientRect(), p = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
46
+ const a = I.getBoundingClientRect(), p = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
44
47
  c.current.style.height = `${p}px`;
45
- const h = e[t]?.targetElementGap || {
48
+ const u = t[e]?.targetElementGap || {
46
49
  horizontal: 0,
47
50
  vertical: 0
48
- }, S = E * 2, I = a.left - h.horizontal, N = a.top + window.scrollY - h.vertical, z = a.right + h.horizontal, F = a.bottom + window.scrollY + h.vertical, G = z - I, q = F - N, R = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth), _ = encodeURIComponent(`
49
- <svg width="${R}" height="${p}" xmlns="http://www.w3.org/2000/svg">
51
+ }, C = w * 2, R = a.left - u.horizontal, _ = a.top + window.scrollY - u.vertical, G = a.right + u.horizontal, q = a.bottom + window.scrollY + u.vertical, B = G - R, D = q - _, L = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth), H = encodeURIComponent(`
52
+ <svg width="${L}" height="${p}" xmlns="http://www.w3.org/2000/svg">
50
53
  <defs>
51
- <mask id="highlight-mask-${t}">
52
- <rect x="0" y="0" width="${R}" height="${p}" fill="white"/>
53
- <rect x="${I}" y="${N}" width="${G}" height="${q}" rx="${S}" ry="${S}" fill="black"/>
54
+ <mask id="highlight-mask-${e}">
55
+ <rect x="0" y="0" width="${L}" height="${p}" fill="white"/>
56
+ <rect x="${R}" y="${_}" width="${B}" height="${D}" rx="${C}" ry="${C}" fill="black"/>
54
57
  </mask>
55
58
  </defs>
56
59
  </svg>
57
60
  `);
58
- c.current.style.maskImage = `url("data:image/svg+xml,${_}#highlight-mask-${t}")`, c.current.style.webkitMaskImage = `url("data:image/svg+xml,${_}#highlight-mask-${t}")`, l.current.style.top = `${a.top}px`, l.current.style.left = `${a.left}px`, l.current.style.width = `${a.width}px`, l.current.style.height = `${a.height}px`, l.current.style.borderRadius = `${E}px`;
61
+ c.current.style.maskImage = `url("data:image/svg+xml,${H}#highlight-mask-${e}")`, c.current.style.webkitMaskImage = `url("data:image/svg+xml,${H}#highlight-mask-${e}")`, l.current.style.top = `${a.top}px`, l.current.style.left = `${a.left}px`, l.current.style.width = `${a.width}px`, l.current.style.height = `${a.height}px`, l.current.style.borderRadius = `${w}px`;
59
62
  }, 50), n;
60
- }, [t, e]), V = m(() => {
63
+ }, [e, t]), N = m(() => {
61
64
  d(), s && s.scrollTo({
62
65
  top: 0,
63
66
  behavior: "smooth"
64
67
  });
65
- }, [d, s]), v = m((n) => {
66
- n?.preventDefault(), n?.stopPropagation(), t < e.length - 1 ? k((i) => i + 1) : (d(n), s && s.scrollTo({
68
+ }, [d, s]), b = m((n) => {
69
+ n?.preventDefault(), n?.stopPropagation(), e < t.length - 1 ? y((i) => i + 1) : (d(n), s && s.scrollTo({
67
70
  top: 0,
68
71
  behavior: "smooth"
69
- })), e[t]?.tourMixPanelHandler?.({
72
+ })), t[e]?.tourMixPanelHandler?.({
70
73
  user_path: g,
71
- action_type: `clicked_${t === e.length - 1 ? e.length === 1 ? u.gotIt : u.finish : u.next}`
74
+ action_type: `clicked_${e === t.length - 1 ? t.length === 1 ? f.gotIt : f.finish : f.next}`
72
75
  });
73
- }, [t, e, d, g, s]), $ = m(() => {
74
- t > 0 && k((n) => n - 1), e[t]?.tourMixPanelHandler?.({
76
+ }, [e, t, d, g, s]), S = m(() => {
77
+ e > 0 && y((n) => n - 1), t[e]?.tourMixPanelHandler?.({
75
78
  user_path: g,
76
- action_type: `clicked_${u.back}`
79
+ action_type: `clicked_${f.back}`
77
80
  });
78
- }, [t, e, g]), b = m((n) => {
79
- (n.keyCode === 37 || n.key === "ArrowLeft") && t > 0 && $(), (n.keyCode === 39 || n.key === "ArrowRight") && v();
80
- }, [t, v, $]);
81
- return w(() => (window.addEventListener("keydown", b), () => {
82
- window.removeEventListener("keydown", b);
83
- }), [b]), w(() => {
81
+ }, [e, t, g]), E = m((n) => {
82
+ (n.keyCode === 37 || n.key === "ArrowLeft") && e > 0 && S(), (n.keyCode === 39 || n.key === "ArrowRight") && b();
83
+ }, [e, b, S]);
84
+ return k(() => (window.addEventListener("keydown", E), () => {
85
+ window.removeEventListener("keydown", E);
86
+ }), [E]), k(() => {
84
87
  let n;
85
- return t < e.length && (n = y()), () => {
88
+ return e < t.length && (n = x()), () => {
86
89
  n && clearTimeout(n);
87
90
  };
88
- }, [t, e, y]), w(() => {
89
- if (t < e.length && c.current) {
91
+ }, [e, t, x]), k(() => {
92
+ if (e < t.length && c.current) {
90
93
  const n = c.current, i = (r) => {
91
94
  r.preventDefault(), r.stopPropagation();
92
95
  };
@@ -100,49 +103,57 @@ const u = {
100
103
  n.removeEventListener("wheel", i), n.removeEventListener("touchmove", i), n.removeEventListener("scroll", i);
101
104
  };
102
105
  }
103
- }, [t]), !e || e.length === 0 ? null : /* @__PURE__ */ o.createElement(o.Fragment, null, /* @__PURE__ */ o.createElement("div", {
106
+ }, [e]), !t || t.length === 0 ? null : /* @__PURE__ */ o.createElement(o.Fragment, null, /* @__PURE__ */ o.createElement("div", {
104
107
  className: "se-design-onboarding-tour-overlay",
105
108
  ref: c,
106
- "data-automation-id": `${f}-overlay`
107
- }), /* @__PURE__ */ o.createElement(D, {
109
+ "data-automation-id": `${h}-overlay`
110
+ }), /* @__PURE__ */ o.createElement(Y, {
108
111
  content: /* @__PURE__ */ o.createElement("div", {
109
- className: "se-design-onboarding-tour-tooltip-content"
110
- }, e[t]?.content?.illustration && /* @__PURE__ */ o.createElement("img", {
111
- src: e[t].content.illustration,
112
+ className: `se-design-onboarding-tour-tooltip-content ${W}`
113
+ }, t[e]?.content?.illustration && /* @__PURE__ */ o.createElement("img", {
114
+ src: t[e].content.illustration,
112
115
  className: "se-design-onboarding-tour-illustration",
113
116
  alt: "illustration"
114
117
  }), /* @__PURE__ */ o.createElement("div", {
115
118
  className: "se-design-onboarding-tour-content"
116
- }, e[t]?.content?.title && /* @__PURE__ */ o.createElement("p", {
117
- className: "se-design-onboarding-tour-title"
118
- }, e[t].content.title), e[t]?.content?.description && /* @__PURE__ */ o.createElement("p", {
119
- className: "se-design-onboarding-tour-description"
120
- }, e[t].content.description)), /* @__PURE__ */ o.createElement("div", {
119
+ }, (t[e]?.content?.title || !v) && /* @__PURE__ */ o.createElement("div", {
120
+ className: "se-design-onboarding-tour-header"
121
+ }, t[e]?.content?.title && /* @__PURE__ */ o.createElement("p", {
122
+ className: `se-design-onboarding-tour-title ${t[e].content.titleClassName || ""}`
123
+ }, t[e].content.title), !v && /* @__PURE__ */ o.createElement(K, {
124
+ name: "close",
125
+ onClick: N,
126
+ ariaLabel: $,
127
+ className: "se-design-onboarding-tour-close-icon cursor-pointer",
128
+ automationId: `${h}-skip-button`
129
+ })), t[e]?.content?.description && /* @__PURE__ */ o.createElement("p", {
130
+ className: `se-design-onboarding-tour-description ${t[e].content.descriptionClassName || ""}`
131
+ }, t[e].content.description)), /* @__PURE__ */ o.createElement("div", {
121
132
  className: "se-design-onboarding-tour-actions"
122
- }, e.length > 1 && /* @__PURE__ */ o.createElement("span", {
133
+ }, t.length > 1 && /* @__PURE__ */ o.createElement("span", {
123
134
  className: "steps"
124
- }, O.replace("{step}", `${t + 1}`).replace("{total}", `${e.length}`)), /* @__PURE__ */ o.createElement("div", {
135
+ }, F.replace("{step}", `${e + 1}`).replace("{total}", `${t.length}`)), /* @__PURE__ */ o.createElement("div", {
125
136
  className: "btns-container"
126
- }, t !== e.length - 1 && /* @__PURE__ */ o.createElement(L, {
137
+ }, v && e !== t.length - 1 && /* @__PURE__ */ o.createElement(M, {
127
138
  theme: "white",
128
139
  type: "link",
129
- label: W,
130
- automationId: `${f}-skip-button`,
131
- onClick: V
132
- }), /* @__PURE__ */ o.createElement(L, {
140
+ label: $,
141
+ automationId: `${h}-skip-button`,
142
+ onClick: N
143
+ }), /* @__PURE__ */ o.createElement(M, {
133
144
  theme: "white",
134
145
  type: "primary",
135
146
  size: "sm",
136
- label: t === e.length - 1 ? e.length === 1 ? P : M : H,
137
- automationId: `${f}-next-button`,
138
- onClick: v
147
+ label: e === t.length - 1 ? t.length === 1 ? V : z : O,
148
+ automationId: `${h}-next-button`,
149
+ onClick: b
139
150
  })))),
140
151
  tooltipSrc: /* @__PURE__ */ o.createElement("div", {
141
152
  className: "blocker",
142
153
  ref: l
143
154
  }),
144
155
  tooltipSrcRef: l,
145
- position: e[t]?.tooltipPosition || "bottom-center",
156
+ position: t[e]?.tooltipPosition || "bottom-center",
146
157
  tooltipOffset: 16,
147
158
  displayOn: "always-on",
148
159
  isWithPortal: !0,
@@ -150,6 +161,6 @@ const u = {
150
161
  }));
151
162
  };
152
163
  export {
153
- Q as OnboardingTour
164
+ te as OnboardingTour
154
165
  };
155
166
  //# sourceMappingURL=index67.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index67.js","sources":["../src/components/OnboardingTour/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useRef, useState, useCallback } from 'react';\n\nimport { Button } from 'components/Button';\nimport { Tooltip } from 'components/Tooltip';\n\nimport './style.scss';\n\nconst TOUR_NAVIGATION_STEPS = {\n gotIt: 'got_it',\n finish: 'finish',\n next: 'next',\n back: 'back'\n};\n\nexport interface TourStep {\n targetElementSelector: string;\n targetElementContainerSelector?: string;\n targetElementGap?: {\n horizontal: number;\n vertical: number;\n };\n tooltipPosition?:\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n content: {\n title?: string;\n description?: string;\n illustration?: any;\n };\n tourMixPanelHandler?: (data: { user_path: string; action_type: string }) => void;\n}\n\nexport interface OnboardingTourProps {\n steps: TourStep[];\n screenBaseElementSelector: string;\n handleCloseProductTour: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n tourType?: string;\n highlightBorderRadius?: number;\n automationId?: string;\n labels?: {\n next: string;\n gotIt: string;\n finish: string;\n skip: string;\n stepInfo: string;\n };\n}\n\nexport const OnboardingTour: FC<OnboardingTourProps> = ({\n steps = [],\n screenBaseElementSelector = '',\n handleCloseProductTour,\n tourType = '',\n automationId = 'onboarding-tour',\n highlightBorderRadius = 6,\n labels\n}) => {\n const [currentStep, setCurrentStep] = useState(0);\n const overlayRef = useRef<HTMLDivElement>(null);\n const blockerRef = useRef<HTMLDivElement>(null);\n\n const {\n next = 'Next',\n gotIt = 'Got It',\n finish = 'Finish',\n skip = 'Skip tour',\n stepInfo = 'Step {step} of {total}'\n } = labels || {};\n\n const parentScreenElement = document.querySelector(screenBaseElementSelector) as HTMLElement | null;\n\n const clipTargetElementAndPositionTooltip = useCallback(() => {\n let timerId: any;\n\n if (currentStep >= steps.length) {\n return timerId;\n }\n\n // get the target element\n const initialTargetElement = document.querySelector(\n steps[currentStep]?.targetElementContainerSelector\n ? steps[currentStep].targetElementContainerSelector\n : steps[currentStep]?.targetElementSelector\n ) as HTMLElement | null;\n\n if (!initialTargetElement) {\n return timerId;\n }\n\n const initialTargetArea = initialTargetElement.getBoundingClientRect();\n\n // check whether target element is fully visible in viewport\n const isFullyVisible =\n initialTargetArea.top >= 0 &&\n initialTargetArea.left >= 0 &&\n initialTargetArea.bottom <= window.innerHeight &&\n initialTargetArea.right <= window.innerWidth;\n\n if (!isFullyVisible) {\n if (initialTargetArea.top < 0) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'start' });\n } else if (initialTargetArea.bottom > window.innerHeight) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'end' });\n }\n }\n\n // if the target element is visible, then clip the target element and position the tooltip\n timerId = setTimeout(() => {\n const targetElement = document.querySelector(steps[currentStep]?.targetElementSelector) as HTMLElement | null;\n\n if (!targetElement || !overlayRef.current || !blockerRef.current) {\n return;\n }\n\n const targetArea = targetElement.getBoundingClientRect();\n\n const documentHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n\n // Update overlay dimensions and calculate target element area to focus\n overlayRef.current.style.height = `${documentHeight}px`;\n\n // Providing gap around target element\n const targetElementGap = steps[currentStep]?.targetElementGap || { horizontal: 0, vertical: 0 };\n\n // clip the target element with rounded corners\n const borderRadius = highlightBorderRadius * 2;\n const left = targetArea.left - targetElementGap.horizontal;\n const top = targetArea.top + window.scrollY - targetElementGap.vertical;\n const right = targetArea.right + targetElementGap.horizontal;\n const bottom = targetArea.bottom + window.scrollY + targetElementGap.vertical;\n const width = right - left;\n const height = bottom - top;\n const documentWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n\n // Create SVG mask with rounded rectangle hole\n const svgMask = encodeURIComponent(`\n <svg width=\"${documentWidth}\" height=\"${documentHeight}\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <mask id=\"highlight-mask-${currentStep}\">\n <rect x=\"0\" y=\"0\" width=\"${documentWidth}\" height=\"${documentHeight}\" fill=\"white\"/>\n <rect x=\"${left}\" y=\"${top}\" width=\"${width}\" height=\"${height}\" rx=\"${borderRadius}\" ry=\"${borderRadius}\" fill=\"black\"/>\n </mask>\n </defs>\n </svg>\n `);\n\n // Apply created mask to the overlay\n overlayRef.current.style.maskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n overlayRef.current.style.webkitMaskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n\n // Position blocker over clipped area to avoid clicks on the target element\n blockerRef.current.style.top = `${targetArea.top}px`;\n blockerRef.current.style.left = `${targetArea.left}px`;\n blockerRef.current.style.width = `${targetArea.width}px`;\n blockerRef.current.style.height = `${targetArea.height}px`;\n blockerRef.current.style.borderRadius = `${highlightBorderRadius}px`;\n }, 50);\n\n return timerId;\n }, [currentStep, steps]);\n\n const handleSkipTour = useCallback(() => {\n handleCloseProductTour();\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [handleCloseProductTour, parentScreenElement]);\n\n const handleNextClick = useCallback(\n (e?: React.MouseEvent<HTMLButtonElement>) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n if (currentStep < steps.length - 1) {\n setCurrentStep((prev) => prev + 1);\n } else {\n handleCloseProductTour(e);\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${\n currentStep === steps.length - 1\n ? steps.length === 1\n ? TOUR_NAVIGATION_STEPS.gotIt\n : TOUR_NAVIGATION_STEPS.finish\n : TOUR_NAVIGATION_STEPS.next\n }`\n });\n },\n [currentStep, steps, handleCloseProductTour, tourType, parentScreenElement]\n );\n\n const handlePrevClick = useCallback(() => {\n if (currentStep > 0) {\n setCurrentStep((prev) => prev - 1);\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${TOUR_NAVIGATION_STEPS.back}`\n });\n }, [currentStep, steps, tourType]);\n\n const handleKeyPress = useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 37 || e.key === 'ArrowLeft') {\n // for previous navigation\n if (currentStep > 0) {\n handlePrevClick();\n }\n }\n if (e.keyCode === 39 || e.key === 'ArrowRight') {\n // for next navigation\n handleNextClick();\n }\n },\n [currentStep, handleNextClick, handlePrevClick]\n );\n\n useEffect(() => {\n // Adding event listener for keydown\n window.addEventListener('keydown', handleKeyPress);\n\n return () => {\n window.removeEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n let timerId: any;\n if (currentStep < steps.length) {\n timerId = clipTargetElementAndPositionTooltip();\n }\n\n return () => {\n if (timerId) {\n clearTimeout(timerId);\n }\n };\n }, [currentStep, steps, clipTargetElementAndPositionTooltip]);\n\n // To prevent scroll when tour is active\n useEffect(() => {\n if (currentStep < steps.length && overlayRef.current) {\n const overlay = overlayRef.current;\n\n const preventScroll = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n overlay.addEventListener('wheel', preventScroll, { passive: false });\n overlay.addEventListener('touchmove', preventScroll, { passive: false });\n overlay.addEventListener('scroll', preventScroll, { passive: false });\n\n return () => {\n overlay.removeEventListener('wheel', preventScroll);\n overlay.removeEventListener('touchmove', preventScroll);\n overlay.removeEventListener('scroll', preventScroll);\n };\n }\n }, [currentStep]);\n\n if (!steps || steps.length === 0) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"se-design-onboarding-tour-overlay\"\n ref={overlayRef}\n data-automation-id={`${automationId}-overlay`}\n />\n\n <Tooltip\n content={\n <div className=\"se-design-onboarding-tour-tooltip-content\">\n {steps[currentStep]?.content?.illustration && (\n <img\n src={steps[currentStep].content.illustration}\n className=\"se-design-onboarding-tour-illustration\"\n alt=\"illustration\"\n />\n )}\n <div className=\"se-design-onboarding-tour-content\">\n {steps[currentStep]?.content?.title && (\n <p className=\"se-design-onboarding-tour-title\">{steps[currentStep].content.title}</p>\n )}\n {steps[currentStep]?.content?.description && (\n <p className=\"se-design-onboarding-tour-description\">{steps[currentStep].content.description}</p>\n )}\n </div>\n\n <div className=\"se-design-onboarding-tour-actions\">\n {steps.length > 1 && (\n <span className=\"steps\">\n {stepInfo.replace('{step}', `${currentStep + 1}`).replace('{total}', `${steps.length}`)}\n </span>\n )}\n <div className=\"btns-container\">\n {currentStep !== steps.length - 1 && (\n <Button\n theme=\"white\"\n type=\"link\"\n label={skip}\n automationId={`${automationId}-skip-button`}\n onClick={handleSkipTour}\n />\n )}\n <Button\n theme=\"white\"\n type=\"primary\"\n size=\"sm\"\n label={currentStep === steps.length - 1 ? (steps.length === 1 ? gotIt : finish) : next}\n automationId={`${automationId}-next-button`}\n onClick={handleNextClick}\n />\n </div>\n </div>\n </div>\n }\n tooltipSrc={<div className=\"blocker\" ref={blockerRef} />}\n tooltipSrcRef={blockerRef as React.RefObject<HTMLDivElement>}\n position={steps[currentStep]?.tooltipPosition || 'bottom-center'}\n tooltipOffset={16}\n displayOn=\"always-on\"\n isWithPortal={true}\n maxWidth={384}\n />\n </>\n );\n};\n"],"names":["React__default","useState","useRef","useCallback","useEffect","Button","Tooltip","TOUR_NAVIGATION_STEPS","gotIt","finish","next","back","OnboardingTour","steps","screenBaseElementSelector","handleCloseProductTour","tourType","automationId","highlightBorderRadius","labels","currentStep","setCurrentStep","overlayRef","blockerRef","skip","stepInfo","parentScreenElement","document","querySelector","clipTargetElementAndPositionTooltip","timerId","length","initialTargetElement","targetElementContainerSelector","targetElementSelector","initialTargetArea","getBoundingClientRect","top","left","bottom","window","innerHeight","right","innerWidth","scrollIntoView","behavior","block","setTimeout","targetElement","current","targetArea","documentHeight","Math","max","documentElement","scrollHeight","body","style","height","targetElementGap","horizontal","vertical","borderRadius","scrollY","width","documentWidth","scrollWidth","svgMask","encodeURIComponent","maskImage","webkitMaskImage","handleSkipTour","scrollTo","handleNextClick","e","preventDefault","stopPropagation","prev","tourMixPanelHandler","user_path","action_type","handlePrevClick","handleKeyPress","keyCode","key","addEventListener","removeEventListener","clearTimeout","overlay","preventScroll","passive","createElement","React","Fragment","className","ref","content","illustration","src","alt","title","description","replace","theme","type","label","onClick","size","tooltipSrc","tooltipSrcRef","position","tooltipPosition","tooltipOffset","displayOn","isWithPortal","maxWidth"],"mappings":"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"}
1
+ {"version":3,"file":"index67.js","sources":["../src/components/OnboardingTour/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useRef, useState, useCallback } from 'react';\n\nimport { Button } from 'components/Button';\nimport { Tooltip } from 'components/Tooltip';\nimport { Icon } from 'components/Icon';\n\nimport './style.scss';\n\nconst TOUR_NAVIGATION_STEPS = {\n gotIt: 'got_it',\n finish: 'finish',\n next: 'next',\n back: 'back'\n};\n\nexport interface TourStep {\n targetElementSelector: string;\n targetElementContainerSelector?: string;\n targetElementGap?: {\n horizontal: number;\n vertical: number;\n };\n tooltipPosition?:\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n content: {\n title?: string;\n description?: string;\n illustration?: any;\n titleClassName?: string;\n descriptionClassName?: string;\n };\n tourMixPanelHandler?: (data: { user_path: string; action_type: string }) => void;\n}\n\nexport interface OnboardingTourProps {\n steps: TourStep[];\n screenBaseElementSelector: string;\n handleCloseProductTour: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n tourType?: string;\n highlightBorderRadius?: number;\n automationId?: string;\n customClassName?: string;\n showSkipCTA?: boolean;\n labels?: {\n next: string;\n gotIt: string;\n finish: string;\n skip: string;\n stepInfo: string;\n };\n}\n\nexport const OnboardingTour: FC<OnboardingTourProps> = ({\n steps = [],\n screenBaseElementSelector = '',\n handleCloseProductTour,\n tourType = '',\n automationId = 'onboarding-tour',\n highlightBorderRadius = 6,\n customClassName = '',\n showSkipCTA = false,\n labels\n}) => {\n const [currentStep, setCurrentStep] = useState(0);\n const overlayRef = useRef<HTMLDivElement>(null);\n const blockerRef = useRef<HTMLDivElement>(null);\n\n const {\n next = 'Next',\n gotIt = 'Got It',\n finish = 'Finish',\n skip = 'Skip tour',\n stepInfo = 'Step {step} of {total}'\n } = labels || {};\n\n const parentScreenElement = document.querySelector(screenBaseElementSelector) as HTMLElement | null;\n\n const clipTargetElementAndPositionTooltip = useCallback(() => {\n let timerId: any;\n\n if (currentStep >= steps.length) {\n return timerId;\n }\n\n // get the target element\n const initialTargetElement = document.querySelector(\n steps[currentStep]?.targetElementContainerSelector\n ? steps[currentStep].targetElementContainerSelector\n : steps[currentStep]?.targetElementSelector\n ) as HTMLElement | null;\n\n if (!initialTargetElement) {\n return timerId;\n }\n\n const initialTargetArea = initialTargetElement.getBoundingClientRect();\n\n // check whether target element is fully visible in viewport\n const isFullyVisible =\n initialTargetArea.top >= 0 &&\n initialTargetArea.left >= 0 &&\n initialTargetArea.bottom <= window.innerHeight &&\n initialTargetArea.right <= window.innerWidth;\n\n if (!isFullyVisible) {\n if (initialTargetArea.top < 0) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'start' });\n } else if (initialTargetArea.bottom > window.innerHeight) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'end' });\n }\n }\n\n // if the target element is visible, then clip the target element and position the tooltip\n timerId = setTimeout(() => {\n const targetElement = document.querySelector(steps[currentStep]?.targetElementSelector) as HTMLElement | null;\n\n if (!targetElement || !overlayRef.current || !blockerRef.current) {\n return;\n }\n\n const targetArea = targetElement.getBoundingClientRect();\n\n const documentHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n\n // Update overlay dimensions and calculate target element area to focus\n overlayRef.current.style.height = `${documentHeight}px`;\n\n // Providing gap around target element\n const targetElementGap = steps[currentStep]?.targetElementGap || { horizontal: 0, vertical: 0 };\n\n // clip the target element with rounded corners\n const borderRadius = highlightBorderRadius * 2;\n const left = targetArea.left - targetElementGap.horizontal;\n const top = targetArea.top + window.scrollY - targetElementGap.vertical;\n const right = targetArea.right + targetElementGap.horizontal;\n const bottom = targetArea.bottom + window.scrollY + targetElementGap.vertical;\n const width = right - left;\n const height = bottom - top;\n const documentWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n\n // Create SVG mask with rounded rectangle hole\n const svgMask = encodeURIComponent(`\n <svg width=\"${documentWidth}\" height=\"${documentHeight}\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <mask id=\"highlight-mask-${currentStep}\">\n <rect x=\"0\" y=\"0\" width=\"${documentWidth}\" height=\"${documentHeight}\" fill=\"white\"/>\n <rect x=\"${left}\" y=\"${top}\" width=\"${width}\" height=\"${height}\" rx=\"${borderRadius}\" ry=\"${borderRadius}\" fill=\"black\"/>\n </mask>\n </defs>\n </svg>\n `);\n\n // Apply created mask to the overlay\n overlayRef.current.style.maskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n overlayRef.current.style.webkitMaskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n\n // Position blocker over clipped area to avoid clicks on the target element\n blockerRef.current.style.top = `${targetArea.top}px`;\n blockerRef.current.style.left = `${targetArea.left}px`;\n blockerRef.current.style.width = `${targetArea.width}px`;\n blockerRef.current.style.height = `${targetArea.height}px`;\n blockerRef.current.style.borderRadius = `${highlightBorderRadius}px`;\n }, 50);\n\n return timerId;\n }, [currentStep, steps]);\n\n const handleSkipTour = useCallback(() => {\n handleCloseProductTour();\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [handleCloseProductTour, parentScreenElement]);\n\n const handleNextClick = useCallback(\n (e?: React.MouseEvent<HTMLButtonElement>) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n if (currentStep < steps.length - 1) {\n setCurrentStep((prev) => prev + 1);\n } else {\n handleCloseProductTour(e);\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${\n currentStep === steps.length - 1\n ? steps.length === 1\n ? TOUR_NAVIGATION_STEPS.gotIt\n : TOUR_NAVIGATION_STEPS.finish\n : TOUR_NAVIGATION_STEPS.next\n }`\n });\n },\n [currentStep, steps, handleCloseProductTour, tourType, parentScreenElement]\n );\n\n const handlePrevClick = useCallback(() => {\n if (currentStep > 0) {\n setCurrentStep((prev) => prev - 1);\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${TOUR_NAVIGATION_STEPS.back}`\n });\n }, [currentStep, steps, tourType]);\n\n const handleKeyPress = useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 37 || e.key === 'ArrowLeft') {\n // for previous navigation\n if (currentStep > 0) {\n handlePrevClick();\n }\n }\n if (e.keyCode === 39 || e.key === 'ArrowRight') {\n // for next navigation\n handleNextClick();\n }\n },\n [currentStep, handleNextClick, handlePrevClick]\n );\n\n useEffect(() => {\n // Adding event listener for keydown\n window.addEventListener('keydown', handleKeyPress);\n\n return () => {\n window.removeEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n let timerId: any;\n if (currentStep < steps.length) {\n timerId = clipTargetElementAndPositionTooltip();\n }\n\n return () => {\n if (timerId) {\n clearTimeout(timerId);\n }\n };\n }, [currentStep, steps, clipTargetElementAndPositionTooltip]);\n\n // To prevent scroll when tour is active\n useEffect(() => {\n if (currentStep < steps.length && overlayRef.current) {\n const overlay = overlayRef.current;\n\n const preventScroll = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n overlay.addEventListener('wheel', preventScroll, { passive: false });\n overlay.addEventListener('touchmove', preventScroll, { passive: false });\n overlay.addEventListener('scroll', preventScroll, { passive: false });\n\n return () => {\n overlay.removeEventListener('wheel', preventScroll);\n overlay.removeEventListener('touchmove', preventScroll);\n overlay.removeEventListener('scroll', preventScroll);\n };\n }\n }, [currentStep]);\n\n if (!steps || steps.length === 0) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"se-design-onboarding-tour-overlay\"\n ref={overlayRef}\n data-automation-id={`${automationId}-overlay`}\n />\n\n <Tooltip\n content={\n <div className={`se-design-onboarding-tour-tooltip-content ${customClassName}`}>\n {steps[currentStep]?.content?.illustration && (\n <img\n src={steps[currentStep].content.illustration}\n className=\"se-design-onboarding-tour-illustration\"\n alt=\"illustration\"\n />\n )}\n <div className=\"se-design-onboarding-tour-content\">\n {(steps[currentStep]?.content?.title || !showSkipCTA) && (\n <div className=\"se-design-onboarding-tour-header\">\n {steps[currentStep]?.content?.title && (\n <p\n className={`se-design-onboarding-tour-title ${steps[currentStep].content.titleClassName || ''}`}\n >\n {steps[currentStep].content.title}\n </p>\n )}\n {!showSkipCTA && (\n <Icon\n name=\"close\"\n onClick={handleSkipTour}\n ariaLabel={skip}\n className=\"se-design-onboarding-tour-close-icon cursor-pointer\"\n automationId={`${automationId}-skip-button`}\n />\n )}\n </div>\n )}\n {steps[currentStep]?.content?.description && (\n <p\n className={`se-design-onboarding-tour-description ${\n steps[currentStep].content.descriptionClassName || ''\n }`}\n >\n {steps[currentStep].content.description}\n </p>\n )}\n </div>\n\n <div className=\"se-design-onboarding-tour-actions\">\n {steps.length > 1 && (\n <span className=\"steps\">\n {stepInfo.replace('{step}', `${currentStep + 1}`).replace('{total}', `${steps.length}`)}\n </span>\n )}\n <div className=\"btns-container\">\n {showSkipCTA && currentStep !== steps.length - 1 && (\n <Button\n theme=\"white\"\n type=\"link\"\n label={skip}\n automationId={`${automationId}-skip-button`}\n onClick={handleSkipTour}\n />\n )}\n <Button\n theme=\"white\"\n type=\"primary\"\n size=\"sm\"\n label={currentStep === steps.length - 1 ? (steps.length === 1 ? gotIt : finish) : next}\n automationId={`${automationId}-next-button`}\n onClick={handleNextClick}\n />\n </div>\n </div>\n </div>\n }\n tooltipSrc={<div className=\"blocker\" ref={blockerRef} />}\n tooltipSrcRef={blockerRef as React.RefObject<HTMLDivElement>}\n position={steps[currentStep]?.tooltipPosition || 'bottom-center'}\n tooltipOffset={16}\n displayOn=\"always-on\"\n isWithPortal={true}\n maxWidth={384}\n />\n </>\n );\n};\n"],"names":["React__default","useState","useRef","useCallback","useEffect","Button","Tooltip","Icon","TOUR_NAVIGATION_STEPS","gotIt","finish","next","back","OnboardingTour","steps","screenBaseElementSelector","handleCloseProductTour","tourType","automationId","highlightBorderRadius","customClassName","showSkipCTA","labels","currentStep","setCurrentStep","overlayRef","blockerRef","skip","stepInfo","parentScreenElement","document","querySelector","clipTargetElementAndPositionTooltip","timerId","length","initialTargetElement","targetElementContainerSelector","targetElementSelector","initialTargetArea","getBoundingClientRect","top","left","bottom","window","innerHeight","right","innerWidth","scrollIntoView","behavior","block","setTimeout","targetElement","current","targetArea","documentHeight","Math","max","documentElement","scrollHeight","body","style","height","targetElementGap","horizontal","vertical","borderRadius","scrollY","width","documentWidth","scrollWidth","svgMask","encodeURIComponent","maskImage","webkitMaskImage","handleSkipTour","scrollTo","handleNextClick","e","preventDefault","stopPropagation","prev","tourMixPanelHandler","user_path","action_type","handlePrevClick","handleKeyPress","keyCode","key","addEventListener","removeEventListener","clearTimeout","overlay","preventScroll","passive","createElement","React","Fragment","className","ref","content","illustration","src","alt","title","titleClassName","name","onClick","ariaLabel","description","descriptionClassName","replace","theme","type","label","size","tooltipSrc","tooltipSrcRef","position","tooltipPosition","tooltipOffset","displayOn","isWithPortal","maxWidth"],"mappings":"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"}
package/dist/index68.js CHANGED
@@ -2,7 +2,7 @@ import F, { useState as ot, useRef as X, useEffect as $ } from "react";
2
2
  import { createPortal as nt } from "react-dom";
3
3
  import { Icon as it } from "./index6.js";
4
4
  import { Button as rt } from "./index4.js";
5
- import { debounce as lt } from "./index230.js";
5
+ import { debounce as lt } from "./index231.js";
6
6
  const q = 500, S = 50, U = 150, st = {
7
7
  "top-left": {
8
8
  rotate: "315",
package/dist/index7.js CHANGED
@@ -1,11 +1,11 @@
1
- import c, { useState as h, useCallback as i } from "react";
1
+ import s, { useState as h, useCallback as i } from "react";
2
2
  import "./index77.js";
3
- import { isElementVisible as p } from "./index210.js";
3
+ import { isElementVisible as p } from "./index211.js";
4
4
  const x = ({
5
5
  skipLinks: n,
6
- className: r = ""
6
+ className: c = ""
7
7
  }) => {
8
- const [s, u] = h(n), l = i(() => {
8
+ const [r, u] = h(n), l = i(() => {
9
9
  const t = n.filter((e) => {
10
10
  const o = document.getElementById(e.id);
11
11
  return p(o);
@@ -30,10 +30,10 @@ const x = ({
30
30
  });
31
31
  }
32
32
  }, []);
33
- return n.length === 0 ? null : /* @__PURE__ */ c.createElement("div", {
34
- className: `se-design-skip-links-bar relative w-full h-0 overflow-hidden p-0 flex items-center justify-center bg-[var(--color-blue-50)] transition-[height] duration-300 ease-out focus-within:h-auto focus-within:py-1 focus-within:px-2 ${r}`,
33
+ return n.length === 0 ? null : /* @__PURE__ */ s.createElement("div", {
34
+ className: `se-design-skip-links-bar relative w-full h-0 overflow-hidden p-0 flex items-center justify-center bg-[var(--color-blue-50)] transition-[height] duration-300 ease-out focus-within:h-auto focus-within:py-1 focus-within:px-2 ${c}`,
35
35
  onFocus: a
36
- }, s.map((t) => /* @__PURE__ */ c.createElement("a", {
36
+ }, r.map((t) => /* @__PURE__ */ s.createElement("a", {
37
37
  key: t.id,
38
38
  href: `#${t.id}`,
39
39
  className: "absolute -left-[9999px] [clip:rect(0,0,0,0)] no-underline text-[var(--color-blue-500)] text-md py-1 px-2.5 rounded capitalize focus:static focus:left-auto focus:[clip:auto] focus:outline-none focus-visible:!outline-none hover:text-[var(--color-blue-600)] hover:bg-[var(--color-blue-200)]",
@@ -43,6 +43,7 @@ const x = ({
43
43
  }, t.label)));
44
44
  };
45
45
  export {
46
- x as SkipLinksBar
46
+ x as SkipLinksBar,
47
+ x as default
47
48
  };
48
49
  //# sourceMappingURL=index7.js.map
package/dist/index70.js CHANGED
@@ -4,7 +4,7 @@ import { Badge as j } from "./index10.js";
4
4
  import { Icon as q } from "./index6.js";
5
5
  import { Link as N } from "./index69.js";
6
6
  import { CustomModal as G } from "./index13.js";
7
- import { useStableId as J } from "./index211.js";
7
+ import { useStableId as J } from "./index212.js";
8
8
  /* empty css */
9
9
  const K = {
10
10
  lg: {
@@ -142,6 +142,7 @@ const K = {
142
142
  }));
143
143
  };
144
144
  export {
145
- ea as Paywall
145
+ ea as Paywall,
146
+ ea as default
146
147
  };
147
148
  //# sourceMappingURL=index70.js.map
package/dist/index84.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { useState as m, useEffect as E, useCallback as w } from "react";
2
- import { useScrollActiveIntoView as I } from "./index253.js";
2
+ import { useScrollActiveIntoView as I } from "./index254.js";
3
3
  function A({
4
4
  items: u,
5
5
  isOpen: t,
package/dist/index86.js CHANGED
@@ -1,4 +1,4 @@
1
- import { mergeIds as i } from "./index228.js";
1
+ import { mergeIds as i } from "./index229.js";
2
2
  function n({
3
3
  ariaLabel: t,
4
4
  ariaLabelledBy: o,
package/dist/index9.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import o from "react";
2
- import { useStableId as A } from "./index211.js";
2
+ import { useStableId as A } from "./index212.js";
3
3
  import { getA11yNameAttributes as O } from "./index86.js";
4
4
  import { useAccessiblePress as C } from "./index72.js";
5
5
  import "./index77.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "se-design",
3
- "version": "1.0.92",
3
+ "version": "1.0.94",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "exports": {
package/dist/index220.js DELETED
@@ -1,31 +0,0 @@
1
- import { useCallback as y, useEffect as d } from "react";
2
- function p({
3
- containerRef: E,
4
- onDismiss: e,
5
- enabled: t = !0,
6
- useDocumentListener: u = !1,
7
- preventDefault: c = !0,
8
- stopPropagation: n = !0
9
- }) {
10
- const f = y((r) => {
11
- !t || !e || r.key !== "Escape" || (c && r.preventDefault(), n && r.stopPropagation(), e());
12
- }, [t, e, c, n]);
13
- return d(() => {
14
- if (!u || !t || !e) return;
15
- const r = E?.current, a = (o) => {
16
- o.key === "Escape" && (r && !r.contains(document.activeElement) || (c && o.preventDefault(), n && o.stopPropagation(), e()));
17
- };
18
- return document.addEventListener("keydown", a, {
19
- capture: !0
20
- }), () => document.removeEventListener("keydown", a, {
21
- capture: !0
22
- });
23
- }, [u, t, e, E, c, n]), {
24
- onKeyDown: u ? () => {
25
- } : f
26
- };
27
- }
28
- export {
29
- p as useDismissOnEscape
30
- };
31
- //# sourceMappingURL=index220.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index220.js","sources":["../src/utils/a11y/useDismissOnEscape.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport type { RefObject } from 'react';\n\nexport interface UseDismissOnEscapeOptions<T extends HTMLElement = HTMLElement> {\n /**\n * Container element ref — used for focus-check in document-level mode,\n * and for the returned onKeyDown in React-event mode.\n */\n containerRef?: RefObject<T | null>;\n /**\n * Callback when Escape key is pressed.\n */\n onDismiss?: () => void;\n /**\n * Whether the Escape handler is active.\n * Default: true\n */\n enabled?: boolean;\n /**\n * Use a native document-level capture listener instead of React's event system.\n * Only use this when React events can't reach the container (e.g. portals outside\n * the container's DOM tree). Prefer the default (false) for layered dismiss support.\n * Default: false\n */\n useDocumentListener?: boolean;\n /**\n * Whether to call e.preventDefault() on Escape.\n * Default: true\n */\n preventDefault?: boolean;\n /**\n * Whether to call e.stopPropagation() on Escape.\n * In React-event mode this is the layered-dismiss mechanism — set false only if\n * you want the event to continue bubbling to a parent dismiss handler.\n * Default: true\n */\n stopPropagation?: boolean;\n}\n\nexport interface UseDismissOnEscapeReturn {\n /**\n * Spread on the container element. In document-listener mode this is a no-op object.\n */\n onKeyDown: (e: React.KeyboardEvent) => void;\n}\n\n/**\n * Hook to handle Escape key dismissal.\n *\n * Default mode: returns an onKeyDown handler for the container element.\n * Uses React's synthetic events so child stopPropagation() is respected,\n * enabling layered dismiss (e.g. dropdown closes before sidebar).\n *\n * Document-listener mode (useDocumentListener: true): registers a native\n * capture listener on document. Use only when focus may be in a portal\n * outside the container's DOM tree.\n */\nexport function useDismissOnEscape<T extends HTMLElement = HTMLElement>({\n containerRef,\n onDismiss,\n enabled = true,\n useDocumentListener = false,\n preventDefault = true,\n stopPropagation = true,\n}: UseDismissOnEscapeOptions<T>): UseDismissOnEscapeReturn {\n // React-event mode: return handler to spread on container\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (!enabled || !onDismiss || e.key !== 'Escape') return;\n preventDefault && e.preventDefault();\n stopPropagation && e.stopPropagation();\n onDismiss();\n },\n [enabled, onDismiss, preventDefault, stopPropagation]\n );\n\n // Document-listener mode: native capture handler\n useEffect(() => {\n if (!useDocumentListener || !enabled || !onDismiss) return;\n\n const container = containerRef?.current;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key !== 'Escape') return;\n // Only fire if focus is within the container (if provided)\n if (container && !container.contains(document.activeElement)) return;\n preventDefault && e.preventDefault();\n stopPropagation && e.stopPropagation();\n onDismiss();\n };\n\n document.addEventListener('keydown', handleEscape, { capture: true });\n return () => document.removeEventListener('keydown', handleEscape, { capture: true });\n }, [useDocumentListener, enabled, onDismiss, containerRef, preventDefault, stopPropagation]);\n\n return { onKeyDown: useDocumentListener ? (() => {}) : onKeyDown };\n}\n"],"names":["useCallback","useEffect","useDismissOnEscape","containerRef","onDismiss","enabled","useDocumentListener","preventDefault","stopPropagation","onKeyDown","e","key","container","current","handleEscape","contains","document","activeElement","addEventListener","capture","removeEventListener"],"mappings":"AAyDO,SAAA,eAAAA,GAAA,aAAAC,SAAA;AAAA,SAASC,EAAwD;AAAA,EACtEC,cAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,SAAAA,IAAU;AAAA,EACVC,qBAAAA,IAAsB;AAAA,EACtBC,gBAAAA,IAAiB;AAAA,EACjBC,iBAAAA,IAAkB;AACU,GAA6B;AAEzD,QAAMC,IAAYT,EAChB,CAACU,MAA2B;AAC1B,IAAI,CAACL,KAAW,CAACD,KAAaM,EAAEC,QAAQ,aACxCJ,KAAkBG,EAAEH,eAAAA,GACpBC,KAAmBE,EAAEF,gBAAAA,GACrBJ,EAAAA;AAAAA,EACF,GACA,CAACC,GAASD,GAAWG,GAAgBC,CAAe,CACtD;AAGAP,SAAAA,EAAU,MAAM;AACd,QAAI,CAACK,KAAuB,CAACD,KAAW,CAACD,EAAW;AAEpD,UAAMQ,IAAYT,GAAcU,SAE1BC,IAAeA,CAACJ,MAAqB;AACzC,MAAIA,EAAEC,QAAQ,aAEVC,KAAa,CAACA,EAAUG,SAASC,SAASC,aAAa,MAC3DV,KAAkBG,EAAEH,eAAAA,GACpBC,KAAmBE,EAAEF,gBAAAA,GACrBJ,EAAAA;AAAAA,IACF;AAEAY,oBAASE,iBAAiB,WAAWJ,GAAc;AAAA,MAAEK,SAAS;AAAA,IAAA,CAAM,GAC7D,MAAMH,SAASI,oBAAoB,WAAWN,GAAc;AAAA,MAAEK,SAAS;AAAA,IAAA,CAAM;AAAA,EACtF,GAAG,CAACb,GAAqBD,GAASD,GAAWD,GAAcI,GAAgBC,CAAe,CAAC,GAEpF;AAAA,IAAEC,WAAWH,IAAuB,MAAM;AAAA,IAAC,IAAKG;AAAAA,EAAAA;AACzD;"}