@frontify/fondue-components 27.0.0 → 28.0.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 (254) hide show
  1. package/dist/fondue-components.js +55 -53
  2. package/dist/fondue-components.js.map +1 -1
  3. package/dist/fondue-components10.js +1 -1
  4. package/dist/fondue-components100.js +17 -6
  5. package/dist/fondue-components100.js.map +1 -1
  6. package/dist/fondue-components101.js +150 -11
  7. package/dist/fondue-components101.js.map +1 -1
  8. package/dist/fondue-components102.js +44 -70
  9. package/dist/fondue-components102.js.map +1 -1
  10. package/dist/fondue-components103.js +14 -15
  11. package/dist/fondue-components103.js.map +1 -1
  12. package/dist/fondue-components104.js +15 -7
  13. package/dist/fondue-components104.js.map +1 -1
  14. package/dist/fondue-components105.js +107 -85
  15. package/dist/fondue-components105.js.map +1 -1
  16. package/dist/fondue-components106.js +11 -79
  17. package/dist/fondue-components106.js.map +1 -1
  18. package/dist/fondue-components107.js +17 -31
  19. package/dist/fondue-components107.js.map +1 -1
  20. package/dist/fondue-components108.js +11 -19
  21. package/dist/fondue-components108.js.map +1 -1
  22. package/dist/fondue-components109.js +16 -39
  23. package/dist/fondue-components109.js.map +1 -1
  24. package/dist/fondue-components11.js +3 -3
  25. package/dist/fondue-components110.js +9 -0
  26. package/dist/fondue-components110.js.map +1 -0
  27. package/dist/fondue-components111.js +15 -0
  28. package/dist/fondue-components111.js.map +1 -0
  29. package/dist/fondue-components112.js +74 -0
  30. package/dist/fondue-components112.js.map +1 -0
  31. package/dist/fondue-components113.js +18 -0
  32. package/dist/fondue-components113.js.map +1 -0
  33. package/dist/fondue-components114.js +10 -0
  34. package/dist/fondue-components114.js.map +1 -0
  35. package/dist/fondue-components115.js +92 -0
  36. package/dist/fondue-components115.js.map +1 -0
  37. package/dist/fondue-components116.js +84 -0
  38. package/dist/fondue-components116.js.map +1 -0
  39. package/dist/fondue-components117.js +34 -0
  40. package/dist/fondue-components117.js.map +1 -0
  41. package/dist/fondue-components118.js +32 -0
  42. package/dist/fondue-components118.js.map +1 -0
  43. package/dist/fondue-components12.js +7 -37
  44. package/dist/fondue-components12.js.map +1 -1
  45. package/dist/fondue-components120.js +44 -0
  46. package/dist/fondue-components120.js.map +1 -0
  47. package/dist/fondue-components121.js +22 -0
  48. package/dist/fondue-components121.js.map +1 -0
  49. package/dist/fondue-components122.js +24 -0
  50. package/dist/fondue-components122.js.map +1 -0
  51. package/dist/fondue-components123.js +43 -0
  52. package/dist/fondue-components123.js.map +1 -0
  53. package/dist/fondue-components124.js +71 -0
  54. package/dist/fondue-components124.js.map +1 -0
  55. package/dist/fondue-components125.js +34 -0
  56. package/dist/fondue-components125.js.map +1 -0
  57. package/dist/fondue-components126.js +12 -0
  58. package/dist/fondue-components126.js.map +1 -0
  59. package/dist/fondue-components127.js +156 -0
  60. package/dist/fondue-components127.js.map +1 -0
  61. package/dist/fondue-components128.js +111 -0
  62. package/dist/fondue-components128.js.map +1 -0
  63. package/dist/fondue-components129.js +19 -0
  64. package/dist/fondue-components129.js.map +1 -0
  65. package/dist/fondue-components13.js +36 -121
  66. package/dist/fondue-components13.js.map +1 -1
  67. package/dist/fondue-components130.js +19 -0
  68. package/dist/fondue-components130.js.map +1 -0
  69. package/dist/fondue-components131.js +32 -0
  70. package/dist/fondue-components131.js.map +1 -0
  71. package/dist/fondue-components132.js +16 -0
  72. package/dist/fondue-components132.js.map +1 -0
  73. package/dist/fondue-components133.js +10 -0
  74. package/dist/fondue-components133.js.map +1 -0
  75. package/dist/fondue-components14.js +121 -36
  76. package/dist/fondue-components14.js.map +1 -1
  77. package/dist/fondue-components15.js +30 -39
  78. package/dist/fondue-components15.js.map +1 -1
  79. package/dist/fondue-components16.js +44 -41
  80. package/dist/fondue-components16.js.map +1 -1
  81. package/dist/fondue-components17.js +42 -57
  82. package/dist/fondue-components17.js.map +1 -1
  83. package/dist/fondue-components18.js +55 -41
  84. package/dist/fondue-components18.js.map +1 -1
  85. package/dist/fondue-components19.js +39 -16
  86. package/dist/fondue-components19.js.map +1 -1
  87. package/dist/fondue-components20.js +17 -43
  88. package/dist/fondue-components20.js.map +1 -1
  89. package/dist/fondue-components21.js +42 -69
  90. package/dist/fondue-components21.js.map +1 -1
  91. package/dist/fondue-components22.js +72 -16
  92. package/dist/fondue-components22.js.map +1 -1
  93. package/dist/fondue-components23.js +18 -76
  94. package/dist/fondue-components23.js.map +1 -1
  95. package/dist/fondue-components24.js +75 -34
  96. package/dist/fondue-components24.js.map +1 -1
  97. package/dist/fondue-components25.js +34 -53
  98. package/dist/fondue-components25.js.map +1 -1
  99. package/dist/fondue-components26.js +55 -23
  100. package/dist/fondue-components26.js.map +1 -1
  101. package/dist/fondue-components27.js +23 -55
  102. package/dist/fondue-components27.js.map +1 -1
  103. package/dist/fondue-components28.js +52 -97
  104. package/dist/fondue-components28.js.map +1 -1
  105. package/dist/fondue-components29.js +98 -31
  106. package/dist/fondue-components29.js.map +1 -1
  107. package/dist/fondue-components3.js +1 -1
  108. package/dist/fondue-components30.js +31 -194
  109. package/dist/fondue-components30.js.map +1 -1
  110. package/dist/fondue-components31.js +184 -134
  111. package/dist/fondue-components31.js.map +1 -1
  112. package/dist/fondue-components32.js +143 -130
  113. package/dist/fondue-components32.js.map +1 -1
  114. package/dist/fondue-components33.js +131 -30
  115. package/dist/fondue-components33.js.map +1 -1
  116. package/dist/fondue-components34.js +29 -78
  117. package/dist/fondue-components34.js.map +1 -1
  118. package/dist/fondue-components35.js +67 -110
  119. package/dist/fondue-components35.js.map +1 -1
  120. package/dist/fondue-components36.js +121 -34
  121. package/dist/fondue-components36.js.map +1 -1
  122. package/dist/fondue-components37.js +36 -56
  123. package/dist/fondue-components37.js.map +1 -1
  124. package/dist/fondue-components38.js +56 -20
  125. package/dist/fondue-components38.js.map +1 -1
  126. package/dist/fondue-components39.js +20 -23
  127. package/dist/fondue-components39.js.map +1 -1
  128. package/dist/fondue-components4.js +3 -3
  129. package/dist/fondue-components40.js +25 -7
  130. package/dist/fondue-components40.js.map +1 -1
  131. package/dist/fondue-components41.js +7 -8
  132. package/dist/fondue-components41.js.map +1 -1
  133. package/dist/fondue-components42.js +9 -41
  134. package/dist/fondue-components42.js.map +1 -1
  135. package/dist/fondue-components43.js +41 -5
  136. package/dist/fondue-components43.js.map +1 -1
  137. package/dist/fondue-components44.js +1 -1
  138. package/dist/fondue-components45.js +3 -11
  139. package/dist/fondue-components45.js.map +1 -1
  140. package/dist/fondue-components46.js +13 -32
  141. package/dist/fondue-components46.js.map +1 -1
  142. package/dist/fondue-components47.js +32 -54
  143. package/dist/fondue-components47.js.map +1 -1
  144. package/dist/fondue-components48.js +48 -125
  145. package/dist/fondue-components48.js.map +1 -1
  146. package/dist/fondue-components49.js +130 -20
  147. package/dist/fondue-components49.js.map +1 -1
  148. package/dist/fondue-components5.js +2 -2
  149. package/dist/fondue-components50.js +21 -53
  150. package/dist/fondue-components50.js.map +1 -1
  151. package/dist/fondue-components51.js +53 -8
  152. package/dist/fondue-components51.js.map +1 -1
  153. package/dist/fondue-components52.js +8 -13
  154. package/dist/fondue-components52.js.map +1 -1
  155. package/dist/fondue-components53.js +13 -17
  156. package/dist/fondue-components53.js.map +1 -1
  157. package/dist/fondue-components54.js +16 -4
  158. package/dist/fondue-components54.js.map +1 -1
  159. package/dist/fondue-components55.js +5 -18
  160. package/dist/fondue-components55.js.map +1 -1
  161. package/dist/fondue-components56.js +18 -19
  162. package/dist/fondue-components56.js.map +1 -1
  163. package/dist/fondue-components57.js +18 -4
  164. package/dist/fondue-components57.js.map +1 -1
  165. package/dist/fondue-components58.js +43 -12
  166. package/dist/fondue-components58.js.map +1 -1
  167. package/dist/fondue-components59.js +24 -4
  168. package/dist/fondue-components59.js.map +1 -1
  169. package/dist/fondue-components6.js +1 -1
  170. package/dist/fondue-components60.js +22 -17
  171. package/dist/fondue-components60.js.map +1 -1
  172. package/dist/fondue-components61.js +4 -10
  173. package/dist/fondue-components61.js.map +1 -1
  174. package/dist/fondue-components62.js +11 -35
  175. package/dist/fondue-components62.js.map +1 -1
  176. package/dist/fondue-components63.js +4 -6
  177. package/dist/fondue-components63.js.map +1 -1
  178. package/dist/fondue-components64.js +17 -4
  179. package/dist/fondue-components64.js.map +1 -1
  180. package/dist/fondue-components65.js +10 -12
  181. package/dist/fondue-components65.js.map +1 -1
  182. package/dist/fondue-components66.js +35 -7
  183. package/dist/fondue-components66.js.map +1 -1
  184. package/dist/fondue-components67.js +6 -12
  185. package/dist/fondue-components67.js.map +1 -1
  186. package/dist/fondue-components68.js +1 -1
  187. package/dist/fondue-components69.js +12 -24
  188. package/dist/fondue-components69.js.map +1 -1
  189. package/dist/fondue-components7.js +1 -1
  190. package/dist/fondue-components70.js +8 -16
  191. package/dist/fondue-components70.js.map +1 -1
  192. package/dist/fondue-components71.js +13 -20
  193. package/dist/fondue-components71.js.map +1 -1
  194. package/dist/fondue-components72.js +5 -20
  195. package/dist/fondue-components72.js.map +1 -1
  196. package/dist/fondue-components73.js +24 -19
  197. package/dist/fondue-components73.js.map +1 -1
  198. package/dist/fondue-components74.js +17 -20
  199. package/dist/fondue-components74.js.map +1 -1
  200. package/dist/fondue-components75.js +20 -19
  201. package/dist/fondue-components75.js.map +1 -1
  202. package/dist/fondue-components76.js +20 -8
  203. package/dist/fondue-components76.js.map +1 -1
  204. package/dist/fondue-components77.js +20 -11
  205. package/dist/fondue-components77.js.map +1 -1
  206. package/dist/fondue-components78.js +20 -11
  207. package/dist/fondue-components78.js.map +1 -1
  208. package/dist/fondue-components79.js +19 -7
  209. package/dist/fondue-components79.js.map +1 -1
  210. package/dist/fondue-components8.js +5 -5
  211. package/dist/fondue-components80.js +8 -13
  212. package/dist/fondue-components80.js.map +1 -1
  213. package/dist/fondue-components81.js +10 -22
  214. package/dist/fondue-components81.js.map +1 -1
  215. package/dist/fondue-components82.js +11 -34
  216. package/dist/fondue-components82.js.map +1 -1
  217. package/dist/fondue-components83.js +6 -10
  218. package/dist/fondue-components83.js.map +1 -1
  219. package/dist/fondue-components84.js +12 -67
  220. package/dist/fondue-components84.js.map +1 -1
  221. package/dist/fondue-components85.js +22 -14
  222. package/dist/fondue-components85.js.map +1 -1
  223. package/dist/fondue-components86.js +34 -25
  224. package/dist/fondue-components86.js.map +1 -1
  225. package/dist/fondue-components87.js +8 -16
  226. package/dist/fondue-components87.js.map +1 -1
  227. package/dist/fondue-components88.js +67 -24
  228. package/dist/fondue-components88.js.map +1 -1
  229. package/dist/fondue-components89.js +14 -8
  230. package/dist/fondue-components89.js.map +1 -1
  231. package/dist/fondue-components9.js +5 -5
  232. package/dist/fondue-components90.js +24 -25
  233. package/dist/fondue-components90.js.map +1 -1
  234. package/dist/fondue-components91.js +18 -6
  235. package/dist/fondue-components91.js.map +1 -1
  236. package/dist/fondue-components92.js +24 -4
  237. package/dist/fondue-components92.js.map +1 -1
  238. package/dist/fondue-components93.js +8 -4
  239. package/dist/fondue-components93.js.map +1 -1
  240. package/dist/fondue-components94.js +30 -16
  241. package/dist/fondue-components94.js.map +1 -1
  242. package/dist/fondue-components95.js +6 -216
  243. package/dist/fondue-components95.js.map +1 -1
  244. package/dist/fondue-components96.js +4 -18
  245. package/dist/fondue-components96.js.map +1 -1
  246. package/dist/fondue-components97.js +4 -16
  247. package/dist/fondue-components97.js.map +1 -1
  248. package/dist/fondue-components98.js +188 -122
  249. package/dist/fondue-components98.js.map +1 -1
  250. package/dist/fondue-components99.js +18 -44
  251. package/dist/fondue-components99.js.map +1 -1
  252. package/dist/index.d.ts +101 -24
  253. package/dist/style.css +1 -1
  254. package/package.json +7 -5
@@ -1,136 +1,149 @@
1
- import { jsx as a, jsxs as b } from "react/jsx-runtime";
2
- import { createContext as E, forwardRef as d, useContext as f, useRef as y, useEffect as F, useMemo as I, useCallback as H, createElement as z } from "react";
3
- import { IconDotsHorizontal as M } from "@frontify/fondue-icons";
4
- import * as m from "@radix-ui/react-tabs";
5
- import { useControllableState as W } from "./fondue-components69.js";
6
- import { Button as G } from "./fondue-components6.js";
7
- import { Dropdown as c } from "./fondue-components11.js";
8
- import { useFondueTheme as J } from "./fondue-components36.js";
9
- import { useTabTriggers as K } from "./fondue-components84.js";
10
- import n from "./fondue-components85.js";
11
- const u = E({
12
- value: "",
13
- disabled: !1
14
- });
15
- u.displayName = "TabConfigContext";
16
- const v = E({
17
- addTrigger: () => {
1
+ import { jsxs as h, jsx as t, Fragment as b } from "react/jsx-runtime";
2
+ import { IconPlus as j, IconCross as M } from "@frontify/fondue-icons";
3
+ import { forwardRef as x, useState as P, Children as H, isValidElement as I } from "react";
4
+ import s from "./fondue-components87.js";
5
+ const S = x(
6
+ ({
7
+ "aria-label": e,
8
+ "data-test-id": n = "tag",
9
+ children: o,
10
+ disabled: a = !1,
11
+ emphasis: c = "strong",
12
+ onAddClick: m,
13
+ onClick: u,
14
+ onDismiss: i,
15
+ size: p = "default",
16
+ title: l,
17
+ variant: y = "default"
18
+ }, v) => {
19
+ const [C, d] = P(!1);
20
+ let r = null;
21
+ const g = H.map(o, (f) => I(f) && f.type === N ? (r = f.props.children, null) : f), $ = {
22
+ "data-addable": !!m,
23
+ "data-component": "tag",
24
+ "data-disabled": a,
25
+ "data-dismissable": !!i,
26
+ "data-emphasis": c,
27
+ "data-size": p,
28
+ "data-variant": y,
29
+ className: s.root
30
+ };
31
+ return /* @__PURE__ */ h("div", { ...$, children: [
32
+ /* @__PURE__ */ t(
33
+ z,
34
+ {
35
+ ref: v,
36
+ "aria-label": e || l,
37
+ disabled: a,
38
+ hoverContent: r,
39
+ isHover: C,
40
+ onClick: u,
41
+ onMouseEnter: () => d(!0),
42
+ onMouseLeave: () => d(!1),
43
+ title: l,
44
+ "data-test-id": n,
45
+ children: g
46
+ }
47
+ ),
48
+ /* @__PURE__ */ t(
49
+ R,
50
+ {
51
+ "aria-label": e || l,
52
+ disabled: a,
53
+ onAddClick: m,
54
+ onDismiss: i
55
+ }
56
+ )
57
+ ] });
18
58
  }
19
- });
20
- v.displayName = "TabTriggerContext";
21
- const L = ({
22
- padding: t = "compact",
23
- activeTab: o,
24
- defaultActiveTab: s,
25
- size: r = "medium",
26
- onActiveTabChange: p,
27
- children: T,
28
- variant: i = "default",
29
- withDivider: l = !1,
30
- ...D
31
- }, P) => {
32
- var w;
33
- const { dir: j } = J(), [g, C] = W({
34
- prop: o,
35
- defaultProp: s,
36
- onChange: p
37
- }), h = H(
38
- (e) => {
39
- C(e);
40
- },
41
- [C]
42
- ), { triggerListRef: A, activeIndicatorRef: O, triggers: x, triggersOutOfView: N, addTrigger: R } = K({
43
- activeTab: g
44
- }), q = I(() => ({ addTrigger: R }), [R]), B = i === "pill" && l;
45
- return /* @__PURE__ */ a(v.Provider, { value: q, children: /* @__PURE__ */ b(
46
- m.Root,
59
+ );
60
+ S.displayName = "Tag";
61
+ const z = x(
62
+ ({
63
+ "aria-label": e,
64
+ "data-test-id": n,
65
+ children: o,
66
+ disabled: a = !1,
67
+ hoverContent: c,
68
+ isHover: m = !1,
69
+ onClick: u,
70
+ onMouseEnter: i,
71
+ onMouseLeave: p,
72
+ title: l
73
+ }, y) => {
74
+ let v = 0;
75
+ const C = H.map(o, (r) => {
76
+ if (I(r) && r.type === T) {
77
+ const g = v++;
78
+ return /* @__PURE__ */ t("div", { className: s.secondaryContent, children: r.props.children }, `secondary-${g}`);
79
+ }
80
+ return r;
81
+ }), d = c ? /* @__PURE__ */ h("div", { "data-hover": m, children: [
82
+ /* @__PURE__ */ t("div", { children: c }),
83
+ /* @__PURE__ */ t("div", { children: C })
84
+ ] }) : C;
85
+ return u ? /* @__PURE__ */ t(
86
+ "button",
87
+ {
88
+ ref: y,
89
+ type: "button",
90
+ "aria-label": e,
91
+ title: l,
92
+ className: s.mainContent,
93
+ onClick: a ? void 0 : u,
94
+ onMouseEnter: i,
95
+ onMouseLeave: p,
96
+ disabled: a,
97
+ "data-test-id": n,
98
+ children: d
99
+ }
100
+ ) : /* @__PURE__ */ t(
101
+ "div",
102
+ {
103
+ ref: y,
104
+ className: s.mainContent,
105
+ onMouseEnter: i,
106
+ onMouseLeave: p,
107
+ "data-test-id": n,
108
+ children: d
109
+ }
110
+ );
111
+ }
112
+ );
113
+ z.displayName = "TagMainContent";
114
+ const R = ({ "aria-label": e, disabled: n, onAddClick: o, onDismiss: a }) => /* @__PURE__ */ h(b, { children: [
115
+ o && /* @__PURE__ */ t(
116
+ "button",
47
117
  {
48
- ref: P,
49
- dir: j,
50
- className: n.root,
51
- onValueChange: h,
52
- value: g ?? ((w = x[0]) == null ? void 0 : w.value),
53
- "data-tabs-content-padding": t,
54
- "data-tabs-variant": i,
55
- "data-tabs-with-divider": B,
56
- ...D,
57
- children: [
58
- /* @__PURE__ */ b("div", { className: n.triggerListWrapper, children: [
59
- /* @__PURE__ */ a(m.List, { ref: A, "data-size": r, className: n.triggerList, children: x.map((e) => /* @__PURE__ */ z(
60
- m.Trigger,
61
- {
62
- ...e.props,
63
- key: e.value,
64
- value: e.value,
65
- disabled: e.disabled,
66
- className: n.trigger,
67
- ref: e.ref
68
- },
69
- e.element
70
- )) }),
71
- /* @__PURE__ */ b(c.Root, { children: [
72
- N.length > 0 && /* @__PURE__ */ a(c.Trigger, { "data-test-id": "overflow-items-dropdown-trigger", children: /* @__PURE__ */ a(G, { emphasis: "default", aspect: "square", size: "small", children: /* @__PURE__ */ a(M, { size: 16 }) }) }),
73
- /* @__PURE__ */ a(c.Content, { align: "end", "data-test-id": "overflow-items-dropdown-content", children: N.map((e) => /* @__PURE__ */ z(
74
- c.Item,
75
- {
76
- ...e.props,
77
- disabled: e.disabled,
78
- onSelect: () => h(e.value),
79
- key: e.value
80
- },
81
- e.element
82
- )) })
83
- ] }),
84
- /* @__PURE__ */ a(
85
- "span",
86
- {
87
- "data-test-id": "active-tab-indicator",
88
- ref: O,
89
- className: n.activeIndicator
90
- }
91
- )
92
- ] }),
93
- T
94
- ]
118
+ type: "button",
119
+ "aria-label": `Add ${e || ""}`,
120
+ className: s.actionButton,
121
+ disabled: n,
122
+ onClick: o,
123
+ children: /* @__PURE__ */ t(j, { size: "16" })
95
124
  }
96
- ) });
97
- };
98
- L.displayName = "Tabs.Root";
99
- const S = ({ children: t, value: o, disabled: s }) => {
100
- const r = I(() => ({ value: o, disabled: s }), [o, s]);
101
- return /* @__PURE__ */ a(u.Provider, { value: r, children: t });
102
- };
103
- S.displayName = "Tabs.Tab";
104
- const V = ({ children: t, ...o }, s) => {
105
- const { value: r, disabled: p } = f(u), { addTrigger: T } = f(v), i = y(null), l = y();
106
- return F(() => {
107
- T({
108
- ref: i || s,
109
- value: r ?? "",
110
- disabled: p,
111
- props: o,
112
- element: t,
113
- previousElement: l.current
114
- }), l.current = t;
115
- }, [t]), null;
116
- };
117
- V.displayName = "Tabs.Trigger";
118
- const k = ({ children: t, ...o }, s) => {
119
- const { value: r } = f(u);
120
- return /* @__PURE__ */ a(m.Content, { ref: s, ...o, className: n.content, value: r ?? "", children: t });
121
- };
122
- k.displayName = "Tabs.Content";
123
- const ae = {
124
- Root: d(L),
125
- Tab: d(S),
126
- Trigger: d(V),
127
- Content: d(k)
128
- };
125
+ ),
126
+ a && /* @__PURE__ */ t(
127
+ "button",
128
+ {
129
+ type: "button",
130
+ "aria-label": `Dismiss ${e || ""}`,
131
+ className: s.actionButton,
132
+ disabled: n,
133
+ onClick: a,
134
+ children: /* @__PURE__ */ t(M, { size: "16" })
135
+ }
136
+ )
137
+ ] }), N = ({ children: e }) => /* @__PURE__ */ t(b, { children: e });
138
+ N.displayName = "Tag.HoverContent";
139
+ const T = ({ children: e }) => /* @__PURE__ */ t(b, { children: e });
140
+ T.displayName = "Tag.SecondaryContent";
141
+ const B = S;
142
+ B.HoverContent = N;
143
+ B.SecondaryContent = T;
129
144
  export {
130
- ae as Tabs,
131
- k as TabsContent,
132
- L as TabsRoot,
133
- S as TabsTab,
134
- V as TabsTrigger
145
+ B as Tag,
146
+ N as TagHoverContent,
147
+ T as TagSecondaryContent
135
148
  };
136
149
  //# sourceMappingURL=fondue-components32.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components32.js","sources":["../src/components/Tabs/Tabs.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconDotsHorizontal } from '@frontify/fondue-icons';\nimport * as RadixTabs from '@radix-ui/react-tabs';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ForwardedRef,\n type ReactNode,\n} from 'react';\n\nimport { useControllableState } from '#/hooks/useControllableState';\n\nimport { Button } from '../Button/Button';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport { useFondueTheme } from '../ThemeProvider/ThemeProvider';\n\nimport { useTabTriggers } from './hooks/useTabTriggers';\nimport styles from './styles/tabs.module.scss';\nimport { type TabTrigger } from './types';\n\nexport type TabsRootProps = {\n id?: string;\n children: ReactNode;\n /**\n * Define the padding of the dialog\n * @default \"compact\"\n */\n padding?: 'none' | 'tight' | 'compact' | 'comfortable' | 'spacious';\n /**\n * The default active tab\n * Used for uncontrolled components\n */\n defaultActiveTab?: string;\n /**\n * The controlled value of the active tab\n */\n activeTab?: string;\n /**\n * The height of the tabs\n * @default 'medium'\n */\n size?: 'medium' | 'large';\n /**\n * Event handler called when the active tab changes\n */\n onActiveTabChange?: (value: string) => void;\n /**\n * Select the used variant\n * @default 'default'\n */\n variant?: 'default' | 'pill';\n /**\n * Add a divider line below the tabs\n * Only available when variant is 'pill'\n * Useful for tabs placed inside Dialog content\n * @default false\n */\n withDivider?: boolean;\n};\n\nconst TabConfigContext = createContext<{\n value: string;\n disabled?: boolean;\n}>({\n value: '',\n disabled: false,\n});\nTabConfigContext.displayName = 'TabConfigContext';\n\nconst TabTriggerContext = createContext<{\n addTrigger: (trigger: TabTrigger) => void;\n}>({\n addTrigger: () => {},\n});\nTabTriggerContext.displayName = 'TabTriggerContext';\n\nexport const TabsRoot = (\n {\n padding = 'compact',\n activeTab: propsActiveTab,\n defaultActiveTab,\n size = 'medium',\n onActiveTabChange,\n children,\n variant = 'default',\n withDivider = false,\n ...props\n }: TabsRootProps,\n ref: ForwardedRef<HTMLDivElement>,\n) => {\n const { dir } = useFondueTheme();\n\n const [activeTab, setActiveTab] = useControllableState({\n prop: propsActiveTab,\n defaultProp: defaultActiveTab,\n onChange: onActiveTabChange,\n });\n\n const handleSetActiveTab = useCallback(\n (value: string) => {\n setActiveTab(value);\n },\n [setActiveTab],\n );\n\n const { triggerListRef, activeIndicatorRef, triggers, triggersOutOfView, addTrigger } = useTabTriggers({\n activeTab,\n });\n\n const contextValue = useMemo(() => ({ addTrigger }), [addTrigger]);\n\n // Only apply withDivider when variant is 'pill'\n const shouldShowDivider = variant === 'pill' && withDivider;\n\n return (\n <TabTriggerContext.Provider value={contextValue}>\n <RadixTabs.Root\n ref={ref}\n dir={dir}\n className={styles.root}\n onValueChange={handleSetActiveTab}\n value={activeTab ?? triggers[0]?.value}\n data-tabs-content-padding={padding}\n data-tabs-variant={variant}\n data-tabs-with-divider={shouldShowDivider}\n {...props}\n >\n <div className={styles.triggerListWrapper}>\n <RadixTabs.List ref={triggerListRef} data-size={size} className={styles.triggerList}>\n {triggers.map((trigger) => (\n <RadixTabs.Trigger\n {...trigger.props}\n key={trigger.value}\n value={trigger.value}\n disabled={trigger.disabled}\n className={styles.trigger}\n ref={trigger.ref}\n >\n {trigger.element}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n <Dropdown.Root>\n {triggersOutOfView.length > 0 && (\n <Dropdown.Trigger data-test-id=\"overflow-items-dropdown-trigger\">\n <Button emphasis=\"default\" aspect=\"square\" size=\"small\">\n <IconDotsHorizontal size={16} />\n </Button>\n </Dropdown.Trigger>\n )}\n <Dropdown.Content align=\"end\" data-test-id=\"overflow-items-dropdown-content\">\n {triggersOutOfView.map((trigger) => (\n <Dropdown.Item\n {...trigger.props}\n disabled={trigger.disabled}\n onSelect={() => handleSetActiveTab(trigger.value)}\n key={trigger.value}\n >\n {trigger.element}\n </Dropdown.Item>\n ))}\n </Dropdown.Content>\n </Dropdown.Root>\n <span\n data-test-id=\"active-tab-indicator\"\n ref={activeIndicatorRef}\n className={styles.activeIndicator}\n />\n </div>\n {children}\n </RadixTabs.Root>\n </TabTriggerContext.Provider>\n );\n};\nTabsRoot.displayName = 'Tabs.Root';\n\ntype TabsTabProps = {\n children: ReactNode;\n value: string;\n disabled?: boolean;\n};\n\nexport const TabsTab = ({ children, value, disabled }: TabsTabProps) => {\n const contextValue = useMemo(() => ({ value, disabled }), [value, disabled]);\n\n return <TabConfigContext.Provider value={contextValue}>{children}</TabConfigContext.Provider>;\n};\nTabsTab.displayName = 'Tabs.Tab';\n\ntype TabsTriggerProps = {\n children: ReactNode;\n};\n\nexport const TabsTrigger = ({ children, ...props }: TabsTriggerProps, ref: ForwardedRef<HTMLButtonElement>) => {\n const { value, disabled } = useContext(TabConfigContext);\n\n const { addTrigger } = useContext(TabTriggerContext);\n\n const localRef = useRef<HTMLButtonElement>(null);\n const previousElement = useRef<ReactNode>();\n\n useEffect(() => {\n addTrigger({\n ref: localRef || ref,\n value: value ?? '',\n disabled,\n props,\n element: children,\n previousElement: previousElement.current,\n });\n previousElement.current = children;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [children]);\n\n return null;\n};\nTabsTrigger.displayName = 'Tabs.Trigger';\n\ntype TabsContentProps = {\n children: ReactNode;\n asChild?: boolean;\n};\n\nexport const TabsContent = ({ children, ...itemProps }: TabsContentProps, ref: ForwardedRef<HTMLDivElement>) => {\n const { value } = useContext(TabConfigContext);\n\n return (\n <RadixTabs.Content ref={ref} {...itemProps} className={styles.content} value={value ?? ''}>\n {children}\n </RadixTabs.Content>\n );\n};\nTabsContent.displayName = 'Tabs.Content';\n\nexport const Tabs = {\n Root: forwardRef<HTMLDivElement, TabsRootProps>(TabsRoot),\n Tab: forwardRef<HTMLDivElement, TabsTabProps>(TabsTab),\n Trigger: forwardRef<HTMLButtonElement, TabsTriggerProps>(TabsTrigger),\n Content: forwardRef<HTMLDivElement, TabsContentProps>(TabsContent),\n};\n"],"names":["TabConfigContext","createContext","TabTriggerContext","TabsRoot","padding","propsActiveTab","defaultActiveTab","size","onActiveTabChange","children","variant","withDivider","props","ref","dir","useFondueTheme","activeTab","setActiveTab","useControllableState","handleSetActiveTab","useCallback","value","triggerListRef","activeIndicatorRef","triggers","triggersOutOfView","addTrigger","useTabTriggers","contextValue","useMemo","shouldShowDivider","jsx","jsxs","RadixTabs","styles","_a","trigger","createElement","Dropdown","Button","IconDotsHorizontal","TabsTab","disabled","TabsTrigger","useContext","localRef","useRef","previousElement","useEffect","TabsContent","itemProps","Tabs","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"fondue-components32.js","sources":["../src/components/Tag/Tag.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCross, IconPlus } from '@frontify/fondue-icons';\nimport { Children, forwardRef, isValidElement, useState, type MouseEvent, type ReactNode } from 'react';\n\nimport styles from './styles/tag.module.scss';\n\ntype TagStyle = 'default' | 'highlight';\n\ntype TagEmphasis = 'strong' | 'weak';\n\ntype TagSize = 'default' | 'small';\n\ntype TagProps = {\n /**\n * @default 'strong'\n */\n emphasis?: TagEmphasis;\n /**\n * @default 'default'\n */\n variant?: TagStyle;\n /**\n * @default 'default'\n */\n size?: TagSize;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * Click handler - when provided, the Tag renders as a button element\n */\n onClick?: (event?: MouseEvent<HTMLButtonElement>) => void;\n /**\n * Click handler on dismiss - providing this will show the dismiss button\n */\n onDismiss?: (event?: MouseEvent<HTMLButtonElement>) => void;\n /**\n * Click handler on add click - providing this will show the add button\n */\n onAddClick?: (event?: MouseEvent<HTMLButtonElement>) => void;\n title?: string;\n 'aria-label'?: string;\n 'data-test-id'?: string;\n children: ReactNode;\n};\n\nexport type TagPropsWithClick = Omit<TagProps, 'onClick'> & {\n onClick: (event?: MouseEvent<HTMLButtonElement>) => void;\n};\n\nexport type TagPropsWithoutClick = Omit<TagProps, 'onClick'> & {\n onClick?: undefined;\n};\n\nexport type TagHoverContentProps = {\n children: ReactNode;\n};\n\nexport type TagSecondaryContentProps = {\n children: ReactNode;\n};\n\nconst TagRoot = forwardRef<HTMLButtonElement | HTMLDivElement, TagProps>(\n (\n {\n 'aria-label': ariaLabel,\n 'data-test-id': dataTestId = 'tag',\n children,\n disabled = false,\n emphasis = 'strong',\n onAddClick,\n onClick,\n onDismiss,\n size = 'default',\n title,\n variant = 'default',\n },\n ref,\n ) => {\n const [isHover, setIsHover] = useState(false);\n\n // Extract hover content from slots\n let extractedHoverContent: ReactNode = null;\n const processedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && child.type === TagHoverContent) {\n // eslint-disable-next-line react-hooks/immutability\n extractedHoverContent = child.props.children;\n return null;\n }\n return child;\n });\n\n const commonProps = {\n 'data-addable': !!onAddClick,\n 'data-component': 'tag',\n 'data-disabled': disabled,\n 'data-dismissable': !!onDismiss,\n 'data-emphasis': emphasis,\n 'data-size': size,\n 'data-variant': variant,\n className: styles.root,\n };\n\n return (\n <div {...commonProps}>\n <TagMainContent\n ref={ref}\n aria-label={ariaLabel || title}\n disabled={disabled}\n hoverContent={extractedHoverContent}\n isHover={isHover}\n onClick={onClick}\n onMouseEnter={() => setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n title={title}\n data-test-id={dataTestId}\n >\n {processedChildren}\n </TagMainContent>\n <TagActionButtons\n aria-label={ariaLabel || title}\n disabled={disabled}\n onAddClick={onAddClick}\n onDismiss={onDismiss}\n />\n </div>\n );\n },\n);\nTagRoot.displayName = 'Tag';\n\ntype TagMainContentProps = {\n 'aria-label'?: string;\n 'data-test-id'?: string;\n children: ReactNode;\n disabled?: boolean;\n hoverContent?: ReactNode;\n isHover?: boolean;\n onClick?: (event?: MouseEvent<HTMLButtonElement>) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n title?: string;\n};\n\nconst TagMainContent = forwardRef<HTMLButtonElement | HTMLDivElement, TagMainContentProps>(\n (\n {\n 'aria-label': ariaLabel,\n 'data-test-id': dataTestId,\n children,\n disabled = false,\n hoverContent,\n isHover = false,\n onClick,\n onMouseEnter,\n onMouseLeave,\n title,\n },\n ref,\n ) => {\n // Process children to handle secondary content slots in their natural position\n let secondaryIndex = 0;\n const processedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && child.type === TagSecondaryContent) {\n const currentIndex = secondaryIndex++;\n return (\n <div className={styles.secondaryContent} key={`secondary-${currentIndex}`}>\n {/* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */}\n {child.props.children}\n </div>\n );\n }\n return child;\n });\n\n const content = hoverContent ? (\n <div data-hover={isHover}>\n <div>{hoverContent}</div>\n <div>{processedChildren}</div>\n </div>\n ) : (\n processedChildren\n );\n\n if (onClick) {\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n aria-label={ariaLabel}\n title={title}\n className={styles.mainContent}\n onClick={disabled ? undefined : onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n disabled={disabled}\n data-test-id={dataTestId}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n ref={ref as React.Ref<HTMLDivElement>}\n className={styles.mainContent}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-test-id={dataTestId}\n >\n {content}\n </div>\n );\n },\n);\nTagMainContent.displayName = 'TagMainContent';\n\ntype TagActionButtonsProps = {\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * Click handler on dismiss\n */\n onDismiss?: (event?: MouseEvent<HTMLButtonElement>) => void;\n /**\n * Click handler on add click\n */\n onAddClick?: (event?: MouseEvent<HTMLButtonElement>) => void;\n 'aria-label'?: string;\n};\n\nconst TagActionButtons = ({ 'aria-label': ariaLabel, disabled, onAddClick, onDismiss }: TagActionButtonsProps) => {\n return (\n <>\n {onAddClick && (\n <button\n type=\"button\"\n aria-label={`Add ${ariaLabel || ''}`}\n className={styles.actionButton}\n disabled={disabled}\n onClick={onAddClick}\n >\n <IconPlus size=\"16\" />\n </button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n aria-label={`Dismiss ${ariaLabel || ''}`}\n className={styles.actionButton}\n disabled={disabled}\n onClick={onDismiss}\n >\n <IconCross size=\"16\" />\n </button>\n )}\n </>\n );\n};\n\nexport const TagHoverContent = ({ children }: TagHoverContentProps) => {\n return <>{children}</>;\n};\nTagHoverContent.displayName = 'Tag.HoverContent';\n\nexport const TagSecondaryContent = ({ children }: TagSecondaryContentProps) => {\n return <>{children}</>;\n};\nTagSecondaryContent.displayName = 'Tag.SecondaryContent';\n\n/**\n * TagComponent interface with function overloads for conditional ref typing.\n *\n * The overload order matters for TypeScript's type inference:\n * - TypeScript uses the FIRST matching overload when inferring types in generic contexts\n * (e.g., Storybook's StoryObj<typeof Tag>)\n * - By placing TagPropsWithoutClick first, generic inference defaults to HTMLDivElement\n * - When onClick is explicitly provided, TypeScript matches the second overload,\n * correctly inferring HTMLButtonElement for the ref\n */\ntype TagComponent = {\n (props: TagPropsWithoutClick & React.RefAttributes<HTMLDivElement>): React.ReactNode;\n (props: TagPropsWithClick & React.RefAttributes<HTMLButtonElement>): React.ReactNode;\n displayName?: string;\n HoverContent: typeof TagHoverContent;\n SecondaryContent: typeof TagSecondaryContent;\n};\n\nexport const Tag: TagComponent = TagRoot as unknown as TagComponent;\nTag.HoverContent = TagHoverContent;\nTag.SecondaryContent = TagSecondaryContent;\n"],"names":["TagRoot","forwardRef","ariaLabel","dataTestId","children","disabled","emphasis","onAddClick","onClick","onDismiss","size","title","variant","ref","isHover","setIsHover","useState","extractedHoverContent","processedChildren","Children","child","isValidElement","TagHoverContent","commonProps","styles","jsxs","jsx","TagMainContent","TagActionButtons","hoverContent","onMouseEnter","onMouseLeave","secondaryIndex","TagSecondaryContent","currentIndex","content","Fragment","IconPlus","IconCross","Tag"],"mappings":"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"}
@@ -1,35 +1,136 @@
1
- import { jsx as l } from "react/jsx-runtime";
2
- import { forwardRef as p } from "react";
3
- import t from "./fondue-components86.js";
4
- const n = p(
5
- ({
6
- children: o,
7
- as: a = "span",
8
- size: r = "medium",
9
- weight: s = "default",
10
- color: i = "default",
11
- boxColor: e,
12
- className: m,
13
- ...d
14
- }, f) => /* @__PURE__ */ l(
15
- a,
1
+ import { jsx as a, jsxs as b } from "react/jsx-runtime";
2
+ import { createContext as E, forwardRef as d, useContext as f, useRef as y, useEffect as F, useMemo as I, useCallback as H, createElement as z } from "react";
3
+ import { IconDotsHorizontal as M } from "@frontify/fondue-icons";
4
+ import * as m from "@radix-ui/react-tabs";
5
+ import { useControllableState as W } from "./fondue-components73.js";
6
+ import { Button as G } from "./fondue-components6.js";
7
+ import { Dropdown as c } from "./fondue-components11.js";
8
+ import { useFondueTheme as J } from "./fondue-components37.js";
9
+ import { useTabTriggers as K } from "./fondue-components88.js";
10
+ import n from "./fondue-components89.js";
11
+ const u = E({
12
+ value: "",
13
+ disabled: !1
14
+ });
15
+ u.displayName = "TabConfigContext";
16
+ const v = E({
17
+ addTrigger: () => {
18
+ }
19
+ });
20
+ v.displayName = "TabTriggerContext";
21
+ const L = ({
22
+ padding: t = "compact",
23
+ activeTab: o,
24
+ defaultActiveTab: s,
25
+ size: r = "medium",
26
+ onActiveTabChange: p,
27
+ children: T,
28
+ variant: i = "default",
29
+ withDivider: l = !1,
30
+ ...D
31
+ }, P) => {
32
+ var w;
33
+ const { dir: j } = J(), [g, C] = W({
34
+ prop: o,
35
+ defaultProp: s,
36
+ onChange: p
37
+ }), h = H(
38
+ (e) => {
39
+ C(e);
40
+ },
41
+ [C]
42
+ ), { triggerListRef: A, activeIndicatorRef: O, triggers: x, triggersOutOfView: N, addTrigger: R } = K({
43
+ activeTab: g
44
+ }), q = I(() => ({ addTrigger: R }), [R]), B = i === "pill" && l;
45
+ return /* @__PURE__ */ a(v.Provider, { value: q, children: /* @__PURE__ */ b(
46
+ m.Root,
16
47
  {
17
- "data-test-id": "text",
18
- className: [
19
- t.root,
20
- t[`size-${r}`],
21
- t[`weight-${s}`],
22
- t[e ? `color-box-${e}` : `color-${i}`],
23
- m
24
- ].filter(Boolean).join(" "),
25
- ref: f,
26
- ...d,
27
- children: o
48
+ ref: P,
49
+ dir: j,
50
+ className: n.root,
51
+ onValueChange: h,
52
+ value: g ?? ((w = x[0]) == null ? void 0 : w.value),
53
+ "data-tabs-content-padding": t,
54
+ "data-tabs-variant": i,
55
+ "data-tabs-with-divider": B,
56
+ ...D,
57
+ children: [
58
+ /* @__PURE__ */ b("div", { className: n.triggerListWrapper, children: [
59
+ /* @__PURE__ */ a(m.List, { ref: A, "data-size": r, className: n.triggerList, children: x.map((e) => /* @__PURE__ */ z(
60
+ m.Trigger,
61
+ {
62
+ ...e.props,
63
+ key: e.value,
64
+ value: e.value,
65
+ disabled: e.disabled,
66
+ className: n.trigger,
67
+ ref: e.ref
68
+ },
69
+ e.element
70
+ )) }),
71
+ /* @__PURE__ */ b(c.Root, { children: [
72
+ N.length > 0 && /* @__PURE__ */ a(c.Trigger, { "data-test-id": "overflow-items-dropdown-trigger", children: /* @__PURE__ */ a(G, { emphasis: "default", aspect: "square", size: "small", children: /* @__PURE__ */ a(M, { size: 16 }) }) }),
73
+ /* @__PURE__ */ a(c.Content, { align: "end", "data-test-id": "overflow-items-dropdown-content", children: N.map((e) => /* @__PURE__ */ z(
74
+ c.Item,
75
+ {
76
+ ...e.props,
77
+ disabled: e.disabled,
78
+ onSelect: () => h(e.value),
79
+ key: e.value
80
+ },
81
+ e.element
82
+ )) })
83
+ ] }),
84
+ /* @__PURE__ */ a(
85
+ "span",
86
+ {
87
+ "data-test-id": "active-tab-indicator",
88
+ ref: O,
89
+ className: n.activeIndicator
90
+ }
91
+ )
92
+ ] }),
93
+ T
94
+ ]
28
95
  }
29
- )
30
- );
31
- n.displayName = "FondueText";
96
+ ) });
97
+ };
98
+ L.displayName = "Tabs.Root";
99
+ const S = ({ children: t, value: o, disabled: s }) => {
100
+ const r = I(() => ({ value: o, disabled: s }), [o, s]);
101
+ return /* @__PURE__ */ a(u.Provider, { value: r, children: t });
102
+ };
103
+ S.displayName = "Tabs.Tab";
104
+ const V = ({ children: t, ...o }, s) => {
105
+ const { value: r, disabled: p } = f(u), { addTrigger: T } = f(v), i = y(null), l = y();
106
+ return F(() => {
107
+ T({
108
+ ref: i || s,
109
+ value: r ?? "",
110
+ disabled: p,
111
+ props: o,
112
+ element: t,
113
+ previousElement: l.current
114
+ }), l.current = t;
115
+ }, [t]), null;
116
+ };
117
+ V.displayName = "Tabs.Trigger";
118
+ const k = ({ children: t, ...o }, s) => {
119
+ const { value: r } = f(u);
120
+ return /* @__PURE__ */ a(m.Content, { ref: s, ...o, className: n.content, value: r ?? "", children: t });
121
+ };
122
+ k.displayName = "Tabs.Content";
123
+ const ae = {
124
+ Root: d(L),
125
+ Tab: d(S),
126
+ Trigger: d(V),
127
+ Content: d(k)
128
+ };
32
129
  export {
33
- n as Text
130
+ ae as Tabs,
131
+ k as TabsContent,
132
+ L as TabsRoot,
133
+ S as TabsTab,
134
+ V as TabsTrigger
34
135
  };
35
136
  //# sourceMappingURL=fondue-components33.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components33.js","sources":["../src/components/Text/Text.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type ReactNode, forwardRef, type ForwardedRef, type HTMLAttributeAnchorTarget } from 'react';\n\nimport { type CommonAriaProps } from '#/helpers/aria';\n\nimport styles from './styles/text.module.scss';\n\ntype TextWeight = 'default' | 'strong' | 'x-strong';\ntype TextSize = 'x-small' | 'small' | 'medium' | 'large';\ntype TextColor = 'default' | 'weak' | 'x-weak' | 'disabled' | 'negative' | 'positive' | 'warning' | 'interactive';\ntype BoxColor = 'neutral' | 'selected' | 'disabled' | 'positive' | 'negative' | 'warning';\n\ntype TagType = 'a' | 'abbr' | 'address' | 'em' | 'label' | 'li' | 'span' | 'strong' | 'time' | 'p';\n\nexport type TextProps<TTag extends TagType = 'span'> = CommonAriaProps &\n TagProps<TTag> & {\n /**\n * Id of the element\n */\n id?: string;\n /**\n * Size of the text\n *\n * @default 'medium'\n */\n size?: TextSize;\n /**\n * Weight of the font\n *\n * @default 'default'\n */\n weight?: TextWeight;\n /**\n * The html element used to render\n *\n * @default 'span'\n */\n as?: TTag;\n /**\n * Color of the text\n *\n * @default 'default'\n */\n color?: TextColor;\n /**\n * The texts color when used within a box\n *\n * @description optional color prop that uses the inverse box color when accessibility contrast is needed\n **/\n boxColor?: BoxColor;\n className?: string;\n children?: ReactNode;\n };\n\ntype TagPropMap = {\n a: { href?: string; target: HTMLAttributeAnchorTarget; rel?: string; title?: string };\n abbr: { title?: string };\n address: object;\n em: object;\n label: { for?: string };\n li: { value?: string };\n p: object;\n span: object;\n strong: object;\n time: { dateTime?: string };\n};\ntype TagProps<TTag extends TagType> = TagPropMap[TTag];\n\ntype TextElementMap = {\n a: HTMLAnchorElement;\n abbr: HTMLElement;\n address: HTMLElement;\n em: HTMLElement;\n label: HTMLLabelElement;\n li: HTMLLIElement;\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n strong: HTMLElement;\n time: HTMLTimeElement;\n};\ntype TextElementType<TTag extends TagType> = TextElementMap[TTag];\n\nexport const Text = forwardRef(\n (\n {\n children,\n as: Tag = 'span',\n size = 'medium',\n weight = 'default',\n color = 'default',\n boxColor,\n className,\n ...props\n },\n ref,\n ) => (\n <Tag\n data-test-id=\"text\"\n className={[\n styles.root,\n styles[`size-${size}`],\n styles[`weight-${weight}`],\n styles[boxColor ? `color-box-${boxColor}` : `color-${color}`],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n // @ts-expect-error ref can not be inferred properly by TS\n ref={ref}\n {...props}\n >\n {children}\n </Tag>\n ),\n) as (<TTag extends TagType = 'span'>(\n props: TextProps<TTag> & { ref?: ForwardedRef<TextElementType<TTag>> },\n) => JSX.Element) & { displayName: string };\n\nText.displayName = 'FondueText';\n"],"names":["Text","forwardRef","children","Tag","size","weight","color","boxColor","className","props","ref","jsx","styles"],"mappings":";;;AAmFO,MAAMA,IAAOC;AAAA,EAChB,CACI;AAAA,IACI,UAAAC;AAAA,IACA,IAAIC,IAAM;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,QAAAC,IAAS;AAAA,IACT,OAAAC,IAAQ;AAAA,IACR,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEPC,MAEA,gBAAAC;AAAA,IAACR;AAAA,IAAA;AAAA,MACG,gBAAa;AAAA,MACb,WAAW;AAAA,QACPS,EAAO;AAAA,QACPA,EAAO,QAAQR,CAAI,EAAE;AAAA,QACrBQ,EAAO,UAAUP,CAAM,EAAE;AAAA,QACzBO,EAAOL,IAAW,aAAaA,CAAQ,KAAK,SAASD,CAAK,EAAE;AAAA,QAC5DE;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MAEb,KAAAE;AAAA,MACC,GAAGD;AAAA,MAEH,UAAAP;AAAA,IAAA;AAAA,EAAA;AAGb;AAIAF,EAAK,cAAc;"}
1
+ {"version":3,"file":"fondue-components33.js","sources":["../src/components/Tabs/Tabs.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconDotsHorizontal } from '@frontify/fondue-icons';\nimport * as RadixTabs from '@radix-ui/react-tabs';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ForwardedRef,\n type ReactNode,\n} from 'react';\n\nimport { useControllableState } from '#/hooks/useControllableState';\n\nimport { Button } from '../Button/Button';\nimport { Dropdown } from '../Dropdown/Dropdown';\nimport { useFondueTheme } from '../ThemeProvider/ThemeProvider';\n\nimport { useTabTriggers } from './hooks/useTabTriggers';\nimport styles from './styles/tabs.module.scss';\nimport { type TabTrigger } from './types';\n\nexport type TabsRootProps = {\n id?: string;\n children: ReactNode;\n /**\n * Define the padding of the dialog\n * @default \"compact\"\n */\n padding?: 'none' | 'tight' | 'compact' | 'comfortable' | 'spacious';\n /**\n * The default active tab\n * Used for uncontrolled components\n */\n defaultActiveTab?: string;\n /**\n * The controlled value of the active tab\n */\n activeTab?: string;\n /**\n * The height of the tabs\n * @default 'medium'\n */\n size?: 'medium' | 'large';\n /**\n * Event handler called when the active tab changes\n */\n onActiveTabChange?: (value: string) => void;\n /**\n * Select the used variant\n * @default 'default'\n */\n variant?: 'default' | 'pill';\n /**\n * Add a divider line below the tabs\n * Only available when variant is 'pill'\n * Useful for tabs placed inside Dialog content\n * @default false\n */\n withDivider?: boolean;\n};\n\nconst TabConfigContext = createContext<{\n value: string;\n disabled?: boolean;\n}>({\n value: '',\n disabled: false,\n});\nTabConfigContext.displayName = 'TabConfigContext';\n\nconst TabTriggerContext = createContext<{\n addTrigger: (trigger: TabTrigger) => void;\n}>({\n addTrigger: () => {},\n});\nTabTriggerContext.displayName = 'TabTriggerContext';\n\nexport const TabsRoot = (\n {\n padding = 'compact',\n activeTab: propsActiveTab,\n defaultActiveTab,\n size = 'medium',\n onActiveTabChange,\n children,\n variant = 'default',\n withDivider = false,\n ...props\n }: TabsRootProps,\n ref: ForwardedRef<HTMLDivElement>,\n) => {\n const { dir } = useFondueTheme();\n\n const [activeTab, setActiveTab] = useControllableState({\n prop: propsActiveTab,\n defaultProp: defaultActiveTab,\n onChange: onActiveTabChange,\n });\n\n const handleSetActiveTab = useCallback(\n (value: string) => {\n setActiveTab(value);\n },\n [setActiveTab],\n );\n\n const { triggerListRef, activeIndicatorRef, triggers, triggersOutOfView, addTrigger } = useTabTriggers({\n activeTab,\n });\n\n const contextValue = useMemo(() => ({ addTrigger }), [addTrigger]);\n\n // Only apply withDivider when variant is 'pill'\n const shouldShowDivider = variant === 'pill' && withDivider;\n\n return (\n <TabTriggerContext.Provider value={contextValue}>\n <RadixTabs.Root\n ref={ref}\n dir={dir}\n className={styles.root}\n onValueChange={handleSetActiveTab}\n value={activeTab ?? triggers[0]?.value}\n data-tabs-content-padding={padding}\n data-tabs-variant={variant}\n data-tabs-with-divider={shouldShowDivider}\n {...props}\n >\n <div className={styles.triggerListWrapper}>\n <RadixTabs.List ref={triggerListRef} data-size={size} className={styles.triggerList}>\n {triggers.map((trigger) => (\n <RadixTabs.Trigger\n {...trigger.props}\n key={trigger.value}\n value={trigger.value}\n disabled={trigger.disabled}\n className={styles.trigger}\n ref={trigger.ref}\n >\n {trigger.element}\n </RadixTabs.Trigger>\n ))}\n </RadixTabs.List>\n <Dropdown.Root>\n {triggersOutOfView.length > 0 && (\n <Dropdown.Trigger data-test-id=\"overflow-items-dropdown-trigger\">\n <Button emphasis=\"default\" aspect=\"square\" size=\"small\">\n <IconDotsHorizontal size={16} />\n </Button>\n </Dropdown.Trigger>\n )}\n <Dropdown.Content align=\"end\" data-test-id=\"overflow-items-dropdown-content\">\n {triggersOutOfView.map((trigger) => (\n <Dropdown.Item\n {...trigger.props}\n disabled={trigger.disabled}\n onSelect={() => handleSetActiveTab(trigger.value)}\n key={trigger.value}\n >\n {trigger.element}\n </Dropdown.Item>\n ))}\n </Dropdown.Content>\n </Dropdown.Root>\n <span\n data-test-id=\"active-tab-indicator\"\n ref={activeIndicatorRef}\n className={styles.activeIndicator}\n />\n </div>\n {children}\n </RadixTabs.Root>\n </TabTriggerContext.Provider>\n );\n};\nTabsRoot.displayName = 'Tabs.Root';\n\ntype TabsTabProps = {\n children: ReactNode;\n value: string;\n disabled?: boolean;\n};\n\nexport const TabsTab = ({ children, value, disabled }: TabsTabProps) => {\n const contextValue = useMemo(() => ({ value, disabled }), [value, disabled]);\n\n return <TabConfigContext.Provider value={contextValue}>{children}</TabConfigContext.Provider>;\n};\nTabsTab.displayName = 'Tabs.Tab';\n\ntype TabsTriggerProps = {\n children: ReactNode;\n};\n\nexport const TabsTrigger = ({ children, ...props }: TabsTriggerProps, ref: ForwardedRef<HTMLButtonElement>) => {\n const { value, disabled } = useContext(TabConfigContext);\n\n const { addTrigger } = useContext(TabTriggerContext);\n\n const localRef = useRef<HTMLButtonElement>(null);\n const previousElement = useRef<ReactNode>();\n\n useEffect(() => {\n addTrigger({\n ref: localRef || ref,\n value: value ?? '',\n disabled,\n props,\n element: children,\n previousElement: previousElement.current,\n });\n previousElement.current = children;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [children]);\n\n return null;\n};\nTabsTrigger.displayName = 'Tabs.Trigger';\n\ntype TabsContentProps = {\n children: ReactNode;\n asChild?: boolean;\n};\n\nexport const TabsContent = ({ children, ...itemProps }: TabsContentProps, ref: ForwardedRef<HTMLDivElement>) => {\n const { value } = useContext(TabConfigContext);\n\n return (\n <RadixTabs.Content ref={ref} {...itemProps} className={styles.content} value={value ?? ''}>\n {children}\n </RadixTabs.Content>\n );\n};\nTabsContent.displayName = 'Tabs.Content';\n\nexport const Tabs = {\n Root: forwardRef<HTMLDivElement, TabsRootProps>(TabsRoot),\n Tab: forwardRef<HTMLDivElement, TabsTabProps>(TabsTab),\n Trigger: forwardRef<HTMLButtonElement, TabsTriggerProps>(TabsTrigger),\n Content: forwardRef<HTMLDivElement, TabsContentProps>(TabsContent),\n};\n"],"names":["TabConfigContext","createContext","TabTriggerContext","TabsRoot","padding","propsActiveTab","defaultActiveTab","size","onActiveTabChange","children","variant","withDivider","props","ref","dir","useFondueTheme","activeTab","setActiveTab","useControllableState","handleSetActiveTab","useCallback","value","triggerListRef","activeIndicatorRef","triggers","triggersOutOfView","addTrigger","useTabTriggers","contextValue","useMemo","shouldShowDivider","jsx","jsxs","RadixTabs","styles","_a","trigger","createElement","Dropdown","Button","IconDotsHorizontal","TabsTab","disabled","TabsTrigger","useContext","localRef","useRef","previousElement","useEffect","TabsContent","itemProps","Tabs","forwardRef"],"mappings":";;;;;;;;;;AAkEA,MAAMA,IAAmBC,EAGtB;AAAA,EACC,OAAO;AAAA,EACP,UAAU;AACd,CAAC;AACDD,EAAiB,cAAc;AAE/B,MAAME,IAAoBD,EAEvB;AAAA,EACC,YAAY,MAAM;AAAA,EAAC;AACvB,CAAC;AACDC,EAAkB,cAAc;AAEzB,MAAMC,IAAW,CACpB;AAAA,EACI,SAAAC,IAAU;AAAA,EACV,WAAWC;AAAA,EACX,kBAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,mBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,aAAAC,IAAc;AAAA,EACd,GAAGC;AACP,GACAC,MACC;;AACD,QAAM,EAAE,KAAAC,EAAA,IAAQC,EAAA,GAEV,CAACC,GAAWC,CAAY,IAAIC,EAAqB;AAAA,IACnD,MAAMb;AAAA,IACN,aAAaC;AAAA,IACb,UAAUE;AAAA,EAAA,CACb,GAEKW,IAAqBC;AAAA,IACvB,CAACC,MAAkB;AACf,MAAAJ,EAAaI,CAAK;AAAA,IACtB;AAAA,IACA,CAACJ,CAAY;AAAA,EAAA,GAGX,EAAE,gBAAAK,GAAgB,oBAAAC,GAAoB,UAAAC,GAAU,mBAAAC,GAAmB,YAAAC,EAAA,IAAeC,EAAe;AAAA,IACnG,WAAAX;AAAA,EAAA,CACH,GAEKY,IAAeC,EAAQ,OAAO,EAAE,YAAAH,MAAe,CAACA,CAAU,CAAC,GAG3DI,IAAoBpB,MAAY,UAAUC;AAEhD,SACI,gBAAAoB,EAAC7B,EAAkB,UAAlB,EAA2B,OAAO0B,GAC/B,UAAA,gBAAAI;AAAA,IAACC,EAAU;AAAA,IAAV;AAAA,MACG,KAAApB;AAAA,MACA,KAAAC;AAAA,MACA,WAAWoB,EAAO;AAAA,MAClB,eAAef;AAAA,MACf,OAAOH,OAAamB,IAAAX,EAAS,CAAC,MAAV,gBAAAW,EAAa;AAAA,MACjC,6BAA2B/B;AAAA,MAC3B,qBAAmBM;AAAA,MACnB,0BAAwBoB;AAAA,MACvB,GAAGlB;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAoB,EAAC,OAAA,EAAI,WAAWE,EAAO,oBACnB,UAAA;AAAA,UAAA,gBAAAH,EAACE,EAAU,MAAV,EAAe,KAAKX,GAAgB,aAAWf,GAAM,WAAW2B,EAAO,aACnE,UAAAV,EAAS,IAAI,CAACY,MACX,gBAAAC;AAAA,YAACJ,EAAU;AAAA,YAAV;AAAA,cACI,GAAGG,EAAQ;AAAA,cACZ,KAAKA,EAAQ;AAAA,cACb,OAAOA,EAAQ;AAAA,cACf,UAAUA,EAAQ;AAAA,cAClB,WAAWF,EAAO;AAAA,cAClB,KAAKE,EAAQ;AAAA,YAAA;AAAA,YAEZA,EAAQ;AAAA,UAAA,CAEhB,GACL;AAAA,UACA,gBAAAJ,EAACM,EAAS,MAAT,EACI,UAAA;AAAA,YAAAb,EAAkB,SAAS,KACxB,gBAAAM,EAACO,EAAS,SAAT,EAAiB,gBAAa,mCAC3B,UAAA,gBAAAP,EAACQ,GAAA,EAAO,UAAS,WAAU,QAAO,UAAS,MAAK,SAC5C,4BAACC,GAAA,EAAmB,MAAM,IAAI,EAAA,CAClC,EAAA,CACJ;AAAA,YAEJ,gBAAAT,EAACO,EAAS,SAAT,EAAiB,OAAM,OAAM,gBAAa,mCACtC,UAAAb,EAAkB,IAAI,CAACW,MACpB,gBAAAC;AAAA,cAACC,EAAS;AAAA,cAAT;AAAA,gBACI,GAAGF,EAAQ;AAAA,gBACZ,UAAUA,EAAQ;AAAA,gBAClB,UAAU,MAAMjB,EAAmBiB,EAAQ,KAAK;AAAA,gBAChD,KAAKA,EAAQ;AAAA,cAAA;AAAA,cAEZA,EAAQ;AAAA,YAAA,CAEhB,EAAA,CACL;AAAA,UAAA,GACJ;AAAA,UACA,gBAAAL;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,gBAAa;AAAA,cACb,KAAKR;AAAA,cACL,WAAWW,EAAO;AAAA,YAAA;AAAA,UAAA;AAAA,QACtB,GACJ;AAAA,QACCzB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAET;AAER;AACAN,EAAS,cAAc;AAQhB,MAAMsC,IAAU,CAAC,EAAE,UAAAhC,GAAU,OAAAY,GAAO,UAAAqB,QAA6B;AACpE,QAAMd,IAAeC,EAAQ,OAAO,EAAE,OAAAR,GAAO,UAAAqB,MAAa,CAACrB,GAAOqB,CAAQ,CAAC;AAE3E,2BAAQ1C,EAAiB,UAAjB,EAA0B,OAAO4B,GAAe,UAAAnB,GAAS;AACrE;AACAgC,EAAQ,cAAc;AAMf,MAAME,IAAc,CAAC,EAAE,UAAAlC,GAAU,GAAGG,EAAA,GAA2BC,MAAyC;AAC3G,QAAM,EAAE,OAAAQ,GAAO,UAAAqB,MAAaE,EAAW5C,CAAgB,GAEjD,EAAE,YAAA0B,EAAA,IAAekB,EAAW1C,CAAiB,GAE7C2C,IAAWC,EAA0B,IAAI,GACzCC,IAAkBD,EAAA;AAExB,SAAAE,EAAU,MAAM;AACZ,IAAAtB,EAAW;AAAA,MACP,KAAKmB,KAAYhC;AAAA,MACjB,OAAOQ,KAAS;AAAA,MAChB,UAAAqB;AAAA,MACA,OAAA9B;AAAA,MACA,SAASH;AAAA,MACT,iBAAiBsC,EAAgB;AAAA,IAAA,CACpC,GACDA,EAAgB,UAAUtC;AAAA,EAE9B,GAAG,CAACA,CAAQ,CAAC,GAEN;AACX;AACAkC,EAAY,cAAc;AAOnB,MAAMM,IAAc,CAAC,EAAE,UAAAxC,GAAU,GAAGyC,EAAA,GAA+BrC,MAAsC;AAC5G,QAAM,EAAE,OAAAQ,EAAA,IAAUuB,EAAW5C,CAAgB;AAE7C,SACI,gBAAA+B,EAACE,EAAU,SAAV,EAAkB,KAAApB,GAAW,GAAGqC,GAAW,WAAWhB,EAAO,SAAS,OAAOb,KAAS,IAClF,UAAAZ,EAAA,CACL;AAER;AACAwC,EAAY,cAAc;AAEnB,MAAME,KAAO;AAAA,EAChB,MAAMC,EAA0CjD,CAAQ;AAAA,EACxD,KAAKiD,EAAyCX,CAAO;AAAA,EACrD,SAASW,EAAgDT,CAAW;AAAA,EACpE,SAASS,EAA6CH,CAAW;AACrE;"}