@frontify/fondue-components 29.1.0 → 30.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 (317) hide show
  1. package/dist/fondue-components.js +72 -70
  2. package/dist/fondue-components.js.map +1 -1
  3. package/dist/fondue-components10.js +181 -33
  4. package/dist/fondue-components10.js.map +1 -1
  5. package/dist/fondue-components100.js +8 -23
  6. package/dist/fondue-components100.js.map +1 -1
  7. package/dist/fondue-components101.js +11 -34
  8. package/dist/fondue-components101.js.map +1 -1
  9. package/dist/fondue-components102.js +10 -10
  10. package/dist/fondue-components103.js +6 -67
  11. package/dist/fondue-components103.js.map +1 -1
  12. package/dist/fondue-components104.js +12 -14
  13. package/dist/fondue-components104.js.map +1 -1
  14. package/dist/fondue-components105.js +22 -25
  15. package/dist/fondue-components105.js.map +1 -1
  16. package/dist/fondue-components106.js +34 -19
  17. package/dist/fondue-components106.js.map +1 -1
  18. package/dist/fondue-components107.js +10 -24
  19. package/dist/fondue-components107.js.map +1 -1
  20. package/dist/fondue-components108.js +67 -8
  21. package/dist/fondue-components108.js.map +1 -1
  22. package/dist/fondue-components109.js +14 -30
  23. package/dist/fondue-components109.js.map +1 -1
  24. package/dist/fondue-components11.js +35 -185
  25. package/dist/fondue-components11.js.map +1 -1
  26. package/dist/fondue-components110.js +23 -4
  27. package/dist/fondue-components110.js.map +1 -1
  28. package/dist/fondue-components111.js +18 -4
  29. package/dist/fondue-components111.js.map +1 -1
  30. package/dist/fondue-components112.js +24 -4
  31. package/dist/fondue-components112.js.map +1 -1
  32. package/dist/fondue-components113.js +9 -14
  33. package/dist/fondue-components113.js.map +1 -1
  34. package/dist/fondue-components114.js +32 -16
  35. package/dist/fondue-components114.js.map +1 -1
  36. package/dist/fondue-components115.js +7 -111
  37. package/dist/fondue-components115.js.map +1 -1
  38. package/dist/fondue-components116.js +4 -12
  39. package/dist/fondue-components116.js.map +1 -1
  40. package/dist/fondue-components117.js +5 -17
  41. package/dist/fondue-components117.js.map +1 -1
  42. package/dist/fondue-components118.js +214 -10
  43. package/dist/fondue-components118.js.map +1 -1
  44. package/dist/fondue-components119.js +18 -16
  45. package/dist/fondue-components119.js.map +1 -1
  46. package/dist/fondue-components12.js +185 -7
  47. package/dist/fondue-components12.js.map +1 -1
  48. package/dist/fondue-components120.js +15 -125
  49. package/dist/fondue-components120.js.map +1 -1
  50. package/dist/fondue-components121.js +151 -11
  51. package/dist/fondue-components121.js.map +1 -1
  52. package/dist/fondue-components122.js +45 -36
  53. package/dist/fondue-components122.js.map +1 -1
  54. package/dist/fondue-components123.js +16 -216
  55. package/dist/fondue-components123.js.map +1 -1
  56. package/dist/fondue-components124.js +14 -19
  57. package/dist/fondue-components124.js.map +1 -1
  58. package/dist/fondue-components125.js +16 -16
  59. package/dist/fondue-components125.js.map +1 -1
  60. package/dist/fondue-components126.js +107 -147
  61. package/dist/fondue-components126.js.map +1 -1
  62. package/dist/fondue-components127.js +12 -44
  63. package/dist/fondue-components127.js.map +1 -1
  64. package/dist/fondue-components128.js +17 -42
  65. package/dist/fondue-components128.js.map +1 -1
  66. package/dist/fondue-components129.js +16 -0
  67. package/dist/fondue-components129.js.map +1 -0
  68. package/dist/fondue-components13.js +8 -63
  69. package/dist/fondue-components13.js.map +1 -1
  70. package/dist/fondue-components130.js +127 -41
  71. package/dist/fondue-components130.js.map +1 -1
  72. package/dist/fondue-components131.js +11 -170
  73. package/dist/fondue-components131.js.map +1 -1
  74. package/dist/fondue-components132.js +34 -58
  75. package/dist/fondue-components132.js.map +1 -1
  76. package/dist/fondue-components133.js +33 -9
  77. package/dist/fondue-components133.js.map +1 -1
  78. package/dist/fondue-components134.js +6 -256
  79. package/dist/fondue-components134.js.map +1 -1
  80. package/dist/fondue-components137.js +4 -4
  81. package/dist/fondue-components138.js +1 -1
  82. package/dist/fondue-components139.js +1 -1
  83. package/dist/fondue-components14.js +61 -35
  84. package/dist/fondue-components14.js.map +1 -1
  85. package/dist/fondue-components140.js +2 -2
  86. package/dist/fondue-components141.js +3 -3
  87. package/dist/fondue-components142.js +2 -2
  88. package/dist/fondue-components143.js +168 -17
  89. package/dist/fondue-components143.js.map +1 -1
  90. package/dist/fondue-components144.js +60 -70
  91. package/dist/fondue-components144.js.map +1 -1
  92. package/dist/fondue-components145.js +7 -1350
  93. package/dist/fondue-components145.js.map +1 -1
  94. package/dist/fondue-components146.js +217 -902
  95. package/dist/fondue-components146.js.map +1 -1
  96. package/dist/fondue-components147.js +17 -196
  97. package/dist/fondue-components147.js.map +1 -1
  98. package/dist/fondue-components149.js +41 -39
  99. package/dist/fondue-components149.js.map +1 -1
  100. package/dist/fondue-components15.js +36 -121
  101. package/dist/fondue-components15.js.map +1 -1
  102. package/dist/fondue-components150.js +40 -67
  103. package/dist/fondue-components150.js.map +1 -1
  104. package/dist/fondue-components151.js +20 -30
  105. package/dist/fondue-components151.js.map +1 -1
  106. package/dist/fondue-components152.js +40 -9
  107. package/dist/fondue-components152.js.map +1 -1
  108. package/dist/fondue-components153.js +67 -150
  109. package/dist/fondue-components153.js.map +1 -1
  110. package/dist/fondue-components154.js +1351 -107
  111. package/dist/fondue-components154.js.map +1 -1
  112. package/dist/fondue-components155.js +943 -18
  113. package/dist/fondue-components155.js.map +1 -1
  114. package/dist/fondue-components156.js +197 -15
  115. package/dist/fondue-components156.js.map +1 -1
  116. package/dist/fondue-components157.js +68 -29
  117. package/dist/fondue-components157.js.map +1 -1
  118. package/dist/fondue-components158.js +31 -13
  119. package/dist/fondue-components158.js.map +1 -1
  120. package/dist/fondue-components159.js +9 -7
  121. package/dist/fondue-components159.js.map +1 -1
  122. package/dist/fondue-components16.js +121 -36
  123. package/dist/fondue-components16.js.map +1 -1
  124. package/dist/fondue-components160.js +156 -0
  125. package/dist/fondue-components160.js.map +1 -0
  126. package/dist/fondue-components161.js +111 -0
  127. package/dist/fondue-components161.js.map +1 -0
  128. package/dist/fondue-components162.js +19 -0
  129. package/dist/fondue-components162.js.map +1 -0
  130. package/dist/fondue-components163.js +32 -0
  131. package/dist/fondue-components163.js.map +1 -0
  132. package/dist/fondue-components164.js +16 -0
  133. package/dist/fondue-components164.js.map +1 -0
  134. package/dist/fondue-components165.js +19 -0
  135. package/dist/fondue-components165.js.map +1 -0
  136. package/dist/fondue-components166.js +10 -0
  137. package/dist/fondue-components166.js.map +1 -0
  138. package/dist/fondue-components17.js +30 -39
  139. package/dist/fondue-components17.js.map +1 -1
  140. package/dist/fondue-components18.js +44 -41
  141. package/dist/fondue-components18.js.map +1 -1
  142. package/dist/fondue-components19.js +42 -57
  143. package/dist/fondue-components19.js.map +1 -1
  144. package/dist/fondue-components20.js +55 -41
  145. package/dist/fondue-components20.js.map +1 -1
  146. package/dist/fondue-components21.js +39 -16
  147. package/dist/fondue-components21.js.map +1 -1
  148. package/dist/fondue-components22.js +17 -43
  149. package/dist/fondue-components22.js.map +1 -1
  150. package/dist/fondue-components23.js +46 -68
  151. package/dist/fondue-components23.js.map +1 -1
  152. package/dist/fondue-components24.js +67 -71
  153. package/dist/fondue-components24.js.map +1 -1
  154. package/dist/fondue-components25.js +72 -16
  155. package/dist/fondue-components25.js.map +1 -1
  156. package/dist/fondue-components26.js +18 -77
  157. package/dist/fondue-components26.js.map +1 -1
  158. package/dist/fondue-components27.js +75 -34
  159. package/dist/fondue-components27.js.map +1 -1
  160. package/dist/fondue-components28.js +34 -53
  161. package/dist/fondue-components28.js.map +1 -1
  162. package/dist/fondue-components29.js +55 -23
  163. package/dist/fondue-components29.js.map +1 -1
  164. package/dist/fondue-components3.js +1 -1
  165. package/dist/fondue-components30.js +23 -55
  166. package/dist/fondue-components30.js.map +1 -1
  167. package/dist/fondue-components31.js +52 -97
  168. package/dist/fondue-components31.js.map +1 -1
  169. package/dist/fondue-components32.js +98 -31
  170. package/dist/fondue-components32.js.map +1 -1
  171. package/dist/fondue-components33.js +31 -194
  172. package/dist/fondue-components33.js.map +1 -1
  173. package/dist/fondue-components34.js +184 -134
  174. package/dist/fondue-components34.js.map +1 -1
  175. package/dist/fondue-components35.js +143 -130
  176. package/dist/fondue-components35.js.map +1 -1
  177. package/dist/fondue-components36.js +131 -30
  178. package/dist/fondue-components36.js.map +1 -1
  179. package/dist/fondue-components37.js +29 -79
  180. package/dist/fondue-components37.js.map +1 -1
  181. package/dist/fondue-components38.js +68 -110
  182. package/dist/fondue-components38.js.map +1 -1
  183. package/dist/fondue-components39.js +121 -34
  184. package/dist/fondue-components39.js.map +1 -1
  185. package/dist/fondue-components4.js +21 -19
  186. package/dist/fondue-components4.js.map +1 -1
  187. package/dist/fondue-components40.js +36 -56
  188. package/dist/fondue-components40.js.map +1 -1
  189. package/dist/fondue-components41.js +56 -20
  190. package/dist/fondue-components41.js.map +1 -1
  191. package/dist/fondue-components42.js +20 -25
  192. package/dist/fondue-components42.js.map +1 -1
  193. package/dist/fondue-components43.js +25 -7
  194. package/dist/fondue-components43.js.map +1 -1
  195. package/dist/fondue-components44.js +7 -8
  196. package/dist/fondue-components44.js.map +1 -1
  197. package/dist/fondue-components45.js +9 -41
  198. package/dist/fondue-components45.js.map +1 -1
  199. package/dist/fondue-components46.js +41 -5
  200. package/dist/fondue-components46.js.map +1 -1
  201. package/dist/fondue-components47.js +1 -1
  202. package/dist/fondue-components48.js +3 -11
  203. package/dist/fondue-components48.js.map +1 -1
  204. package/dist/fondue-components49.js +25 -29
  205. package/dist/fondue-components49.js.map +1 -1
  206. package/dist/fondue-components5.js +2 -2
  207. package/dist/fondue-components50.js +33 -54
  208. package/dist/fondue-components50.js.map +1 -1
  209. package/dist/fondue-components51.js +20 -130
  210. package/dist/fondue-components51.js.map +1 -1
  211. package/dist/fondue-components52.js +85 -20
  212. package/dist/fondue-components52.js.map +1 -1
  213. package/dist/fondue-components53.js +13 -53
  214. package/dist/fondue-components53.js.map +1 -1
  215. package/dist/fondue-components54.js +32 -8
  216. package/dist/fondue-components54.js.map +1 -1
  217. package/dist/fondue-components55.js +54 -13
  218. package/dist/fondue-components55.js.map +1 -1
  219. package/dist/fondue-components56.js +130 -16
  220. package/dist/fondue-components56.js.map +1 -1
  221. package/dist/fondue-components57.js +20 -4
  222. package/dist/fondue-components57.js.map +1 -1
  223. package/dist/fondue-components58.js +52 -17
  224. package/dist/fondue-components58.js.map +1 -1
  225. package/dist/fondue-components59.js +7 -18
  226. package/dist/fondue-components59.js.map +1 -1
  227. package/dist/fondue-components6.js +1 -1
  228. package/dist/fondue-components60.js +13 -44
  229. package/dist/fondue-components60.js.map +1 -1
  230. package/dist/fondue-components61.js +16 -24
  231. package/dist/fondue-components61.js.map +1 -1
  232. package/dist/fondue-components62.js +4 -22
  233. package/dist/fondue-components62.js.map +1 -1
  234. package/dist/fondue-components63.js +18 -7
  235. package/dist/fondue-components63.js.map +1 -1
  236. package/dist/fondue-components64.js +18 -4
  237. package/dist/fondue-components64.js.map +1 -1
  238. package/dist/fondue-components65.js +43 -12
  239. package/dist/fondue-components65.js.map +1 -1
  240. package/dist/fondue-components66.js +24 -4
  241. package/dist/fondue-components66.js.map +1 -1
  242. package/dist/fondue-components67.js +22 -17
  243. package/dist/fondue-components67.js.map +1 -1
  244. package/dist/fondue-components68.js +4 -8
  245. package/dist/fondue-components68.js.map +1 -1
  246. package/dist/fondue-components69.js +4 -36
  247. package/dist/fondue-components69.js.map +1 -1
  248. package/dist/fondue-components7.js +32 -65
  249. package/dist/fondue-components7.js.map +1 -1
  250. package/dist/fondue-components70.js +12 -6
  251. package/dist/fondue-components70.js.map +1 -1
  252. package/dist/fondue-components71.js +1 -1
  253. package/dist/fondue-components72.js +17 -12
  254. package/dist/fondue-components72.js.map +1 -1
  255. package/dist/fondue-components73.js +10 -51
  256. package/dist/fondue-components73.js.map +1 -1
  257. package/dist/fondue-components74.js +37 -44
  258. package/dist/fondue-components74.js.map +1 -1
  259. package/dist/fondue-components75.js +7 -6
  260. package/dist/fondue-components75.js.map +1 -1
  261. package/dist/fondue-components76.js +5 -6
  262. package/dist/fondue-components76.js.map +1 -1
  263. package/dist/fondue-components77.js +13 -13
  264. package/dist/fondue-components77.js.map +1 -1
  265. package/dist/fondue-components78.js +51 -27
  266. package/dist/fondue-components78.js.map +1 -1
  267. package/dist/fondue-components79.js +42 -11
  268. package/dist/fondue-components79.js.map +1 -1
  269. package/dist/fondue-components8.js +65 -51
  270. package/dist/fondue-components8.js.map +1 -1
  271. package/dist/fondue-components80.js +6 -5
  272. package/dist/fondue-components80.js.map +1 -1
  273. package/dist/fondue-components81.js +6 -13
  274. package/dist/fondue-components81.js.map +1 -1
  275. package/dist/fondue-components82.js +13 -48
  276. package/dist/fondue-components82.js.map +1 -1
  277. package/dist/fondue-components83.js +27 -22
  278. package/dist/fondue-components83.js.map +1 -1
  279. package/dist/fondue-components84.js +13 -629
  280. package/dist/fondue-components84.js.map +1 -1
  281. package/dist/fondue-components85.js +4 -8
  282. package/dist/fondue-components85.js.map +1 -1
  283. package/dist/fondue-components86.js +12 -12
  284. package/dist/fondue-components86.js.map +1 -1
  285. package/dist/fondue-components87.js +47 -4
  286. package/dist/fondue-components87.js.map +1 -1
  287. package/dist/fondue-components88.js +22 -24
  288. package/dist/fondue-components88.js.map +1 -1
  289. package/dist/fondue-components89.js +628 -16
  290. package/dist/fondue-components89.js.map +1 -1
  291. package/dist/fondue-components9.js +46 -173
  292. package/dist/fondue-components9.js.map +1 -1
  293. package/dist/fondue-components90.js +9 -20
  294. package/dist/fondue-components90.js.map +1 -1
  295. package/dist/fondue-components91.js +13 -20
  296. package/dist/fondue-components91.js.map +1 -1
  297. package/dist/fondue-components92.js +5 -20
  298. package/dist/fondue-components92.js.map +1 -1
  299. package/dist/fondue-components93.js +24 -19
  300. package/dist/fondue-components93.js.map +1 -1
  301. package/dist/fondue-components94.js +17 -19
  302. package/dist/fondue-components94.js.map +1 -1
  303. package/dist/fondue-components95.js +20 -8
  304. package/dist/fondue-components95.js.map +1 -1
  305. package/dist/fondue-components96.js +20 -11
  306. package/dist/fondue-components96.js.map +1 -1
  307. package/dist/fondue-components97.js +20 -11
  308. package/dist/fondue-components97.js.map +1 -1
  309. package/dist/fondue-components98.js +20 -7
  310. package/dist/fondue-components98.js.map +1 -1
  311. package/dist/fondue-components99.js +19 -13
  312. package/dist/fondue-components99.js.map +1 -1
  313. package/dist/index.d.ts +187 -15
  314. package/dist/style.css +1 -1
  315. package/package.json +9 -5
  316. package/dist/fondue-components148.js +0 -24
  317. package/dist/fondue-components148.js.map +0 -1
@@ -1,199 +1,36 @@
1
- import { jsx as n, jsxs as T } from "react/jsx-runtime";
2
- import { IconArrowUp as O, IconArrowDown as K, IconArrowBidirectional as W } from "@frontify/fondue-icons";
3
- import { forwardRef as u, useRef as v, useState as _, useEffect as D, useMemo as L } from "react";
4
- import { useSyncRefs as R } from "./fondue-components54.js";
5
- import { useTextTruncation as h } from "./fondue-components99.js";
6
- import { useTranslation as j } from "./fondue-components42.js";
7
- import { Box as M } from "./fondue-components5.js";
8
- import { LoadingCircle as S } from "./fondue-components21.js";
9
- import s from "./fondue-components100.js";
10
- import { handleKeyDown as U, shouldIgnoreRowClick as q } from "./fondue-components101.js";
11
- const x = u(
12
- ({ layout: t = "auto", fontSize: e = "medium", gutter: r = "0px", sticky: o, noBorder: a = !1, children: l, ...m }, f) => {
13
- const b = v(null), [p, i] = _(!1);
14
- R(b, f);
15
- const d = o === "head" || o === "both", N = o === "col" || o === "both";
16
- return D(() => {
17
- const c = b.current;
18
- if (!c)
19
- return;
20
- const y = () => {
21
- const g = c.parentElement;
22
- if (!g)
23
- return;
24
- const C = c.scrollWidth, E = g.clientWidth;
25
- i(C > E);
26
- };
27
- y();
28
- const w = new ResizeObserver(y);
29
- return w.observe(c), c.parentElement && w.observe(c.parentElement), () => {
30
- w.disconnect();
31
- };
32
- }, [l]), // eslint-disable-next-line jsx-a11y-x/no-noninteractive-element-interactions
33
- /* @__PURE__ */ n(
34
- "table",
35
- {
36
- ref: b,
37
- className: s.table,
38
- style: {
39
- // @ts-expect-error CSS custom properties are not in CSSProperties type
40
- "--table-gutter": r
41
- },
42
- "data-layout": t,
43
- "data-font-size": e,
44
- "data-sticky-header": d,
45
- "data-sticky-left-column": N,
46
- "data-no-border": a,
47
- "data-has-horizontal-overflow": p,
48
- onKeyDown: U,
49
- ...m,
50
- children: l
51
- }
52
- );
53
- }
54
- );
55
- x.displayName = "Table.Root";
56
- const k = u(({ children: t }, e) => /* @__PURE__ */ n("caption", { ref: e, className: s.caption, children: t }));
57
- k.displayName = "Table.Caption";
58
- const z = u(
59
- ({ sticky: t = !1, children: e, "aria-label": r, "aria-busy": o }, a) => /* @__PURE__ */ n("thead", { ref: a, className: s.header, "data-sticky": t, "aria-label": r, "aria-busy": o, children: e })
60
- );
61
- z.displayName = "Table.Header";
62
- const H = u(
63
- ({
64
- noShrink: t = !1,
65
- truncate: e = !1,
66
- align: r = "left",
67
- scope: o = "col",
68
- sortTranslations: a,
69
- sortDirection: l,
70
- colSpan: m,
71
- width: f,
72
- state: b = "idle",
73
- loadingStateAriaLabel: p,
74
- onSortChange: i,
75
- children: d
76
- }, N) => {
77
- const { t: c } = j(), y = v(null);
78
- R(y, N), h(y);
79
- const w = L(() => typeof d == "string" ? l === "ascending" ? (a == null ? void 0 : a.sortDescending) ?? c("Table_sortByDescending", { column: d }) : (a == null ? void 0 : a.sortAscending) ?? c("Table_sortByAscending", { column: d }) : c(l === "ascending" ? "Table_sortDescending" : "Table_sortAscending"), [d, l, a, c]), g = () => {
80
- if (!i)
81
- return;
82
- i(l === void 0 || l === "descending" ? "ascending" : "descending");
83
- };
84
- return /* @__PURE__ */ n(
85
- "th",
86
- {
87
- ref: y,
88
- style: { width: f },
89
- className: s.headerCell,
90
- scope: o,
91
- colSpan: m,
92
- "data-align": r,
93
- "data-truncate": e,
94
- "data-no-shrink": t,
95
- "data-sortable": !!i,
96
- "aria-sort": i ? l || "none" : void 0,
97
- children: b === "loading" ? /* @__PURE__ */ T("div", { className: s.cellContent, "aria-live": "polite", "aria-label": p, children: [
98
- typeof d == "string" && e ? /* @__PURE__ */ n("span", { className: s.buttonText, children: d }) : d,
99
- /* @__PURE__ */ n(S, { "data-test-id": "fondue-loading-circle", size: "xx-small" })
100
- ] }) : i ? /* @__PURE__ */ T(
101
- "button",
102
- {
103
- className: s.cellContent,
104
- "aria-label": w,
105
- "data-active": !!l,
106
- onClick: g,
107
- type: "button",
108
- children: [
109
- typeof d == "string" && e ? /* @__PURE__ */ n("span", { className: s.buttonText, children: d }) : d,
110
- /* @__PURE__ */ n(M, { width: 3, children: l === "ascending" ? /* @__PURE__ */ n(O, { className: s.sortIndicator, size: "12" }) : l === "descending" ? /* @__PURE__ */ n(K, { className: s.sortIndicator, size: "12" }) : /* @__PURE__ */ n(W, { className: s.sortIndicator, size: "12" }) })
111
- ]
112
- }
113
- ) : d
114
- }
115
- );
116
- }
117
- );
118
- H.displayName = "Table.HeaderCell";
119
- const I = u(
120
- ({ firstColumnSticky: t = !1, lastColumnSticky: e = !1, children: r, "aria-busy": o }, a) => /* @__PURE__ */ n(
121
- "tbody",
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import * as a from "@radix-ui/react-switch";
3
+ import { forwardRef as n } from "react";
4
+ import { useTranslation as f } from "./fondue-components43.js";
5
+ import e from "./fondue-components103.js";
6
+ const p = ({
7
+ value: o,
8
+ defaultValue: i,
9
+ size: r = "medium",
10
+ onChange: m,
11
+ "data-test-id": s = "fondue-switch",
12
+ "aria-label": c,
13
+ ...d
14
+ }, h) => {
15
+ const { t: l } = f();
16
+ return /* @__PURE__ */ t(
17
+ a.Root,
122
18
  {
123
- ref: a,
124
- className: s.body,
125
- "data-first-column-sticky": t,
126
- "data-last-column-sticky": e,
127
- "aria-busy": o,
128
- children: r
19
+ ref: h,
20
+ checked: o,
21
+ defaultChecked: i,
22
+ className: e.root,
23
+ onCheckedChange: m,
24
+ "aria-label": c ?? l("Switch_defaultLabel"),
25
+ "data-test-id": s,
26
+ "data-size": r,
27
+ ...d,
28
+ children: /* @__PURE__ */ t(a.Thumb, { className: e.thumb })
129
29
  }
130
- )
131
- );
132
- I.displayName = "Table.Body";
133
- const B = u(
134
- ({ disabled: t = !1, selected: e = !1, onClick: r, children: o, "aria-label": a, "data-test-id": l }, m) => {
135
- const f = r !== void 0 && !t, b = (i) => {
136
- t || q(i) || r && r(e);
137
- }, p = (i) => {
138
- f && (i.key === "Enter" || i.key === " ") && (i.preventDefault(), b());
139
- };
140
- return /* @__PURE__ */ n(
141
- "tr",
142
- {
143
- ref: m,
144
- className: s.row,
145
- tabIndex: 0,
146
- role: f ? "button" : "row",
147
- "data-disabled": t,
148
- "data-interactive": f,
149
- "data-selected": f ? void 0 : e,
150
- "aria-disabled": t,
151
- "aria-label": a,
152
- "aria-selected": f ? void 0 : e,
153
- onClick: f ? b : void 0,
154
- onKeyDown: f ? p : void 0,
155
- "data-test-id": l,
156
- children: o
157
- }
158
- );
159
- }
160
- );
161
- B.displayName = "Table.Row";
162
- const A = u(
163
- ({ colSpan: t, truncate: e, align: r = "left", children: o, "aria-label": a }, l) => {
164
- const m = v(null);
165
- return R(m, l), h(m), /* @__PURE__ */ n(
166
- "td",
167
- {
168
- ref: m,
169
- className: s.rowCell,
170
- colSpan: t,
171
- "data-align": r,
172
- "data-truncate": e,
173
- "aria-label": a,
174
- children: o
175
- }
176
- );
177
- }
178
- );
179
- A.displayName = "Table.RowCell";
180
- const ee = {
181
- Root: x,
182
- Caption: k,
183
- Header: z,
184
- HeaderCell: H,
185
- Body: I,
186
- Row: B,
187
- RowCell: A
188
- };
30
+ );
31
+ }, u = n(p);
32
+ u.displayName = "Switch";
189
33
  export {
190
- ee as Table,
191
- I as TableBody,
192
- k as TableCaption,
193
- z as TableHeader,
194
- H as TableHeaderCell,
195
- x as TableRoot,
196
- B as TableRow,
197
- A as TableRowCell
34
+ u as Switch
198
35
  };
199
36
  //# sourceMappingURL=fondue-components33.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components33.js","sources":["../src/components/Table/Table.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconArrowBidirectional, IconArrowDown, IconArrowUp } from '@frontify/fondue-icons';\nimport {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type AriaAttributes,\n type CSSProperties,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\n\nimport { useSyncRefs } from '#/hooks/useSyncRefs';\nimport { useTextTruncation } from '#/hooks/useTextTruncation';\nimport { useTranslation } from '#/hooks/useTranslation';\nimport { type CommonAriaAttrs } from '#/utilities/types';\n\nimport { Box } from '../Box/Box';\nimport { LoadingCircle } from '../LoadingCircle/LoadingCircle';\n\nimport styles from './styles/table.module.scss';\nimport { handleKeyDown, shouldIgnoreRowClick } from './utils';\n\ntype TableRootProps = {\n /**\n * Whether the table should have a fixed or auto layout\n * @default 'auto'\n */\n layout?: 'auto' | 'fixed';\n /**\n * Font size of the table content\n * @default 'small'\n */\n fontSize?: 'small' | 'medium';\n /**\n * Additional spacing between table cells (both horizontal and vertical)\n *\n * This value is added to the default cell spacing. For example, with `gutter=\"48px\"`,\n * cells will have 48px of additional space between them in both directions\n * (24px added to each side).\n *\n * Accepts any CSS length value with units (e.g., '16px', '1rem', '48px')\n *\n * **Important:** Always include a unit, even for zero (use '0px', not '0')\n * @default '0px'\n */\n gutter?: CSSProperties['borderSpacing'];\n /**\n * Whether header should stick to the top when scrolling\n * @deprecated Use `Table.Header sticky` prop instead. For sticky columns, use `Table.Body firstColumnSticky` or `lastColumnSticky` props\n */\n sticky?: 'head' | 'col' | 'both';\n /**\n * Whether to remove the top and bottom borders from the table\n * @default false\n */\n noBorder?: boolean;\n children: ReactNode;\n} & CommonAriaAttrs &\n Pick<AriaAttributes, 'aria-multiselectable'>;\n\nexport const TableRoot = forwardRef<HTMLTableElement, TableRootProps>(\n ({ layout = 'auto', fontSize = 'medium', gutter = '0px', sticky, noBorder = false, children, ...props }, ref) => {\n const tableRef = useRef<HTMLTableElement>(null);\n const [hasHorizontalOverflow, setHasHorizontalOverflow] = useState(false);\n\n useSyncRefs<HTMLTableElement>(tableRef, ref);\n\n // Handle deprecated `sticky` prop for backward compatibility\n const legacyStickyHeader = sticky === 'head' || sticky === 'both';\n const legacyStickyLeftColumn = sticky === 'col' || sticky === 'both';\n\n useEffect(() => {\n const table = tableRef.current;\n if (!table) {\n return;\n }\n\n const checkOverflow = () => {\n const parent = table.parentElement;\n if (!parent) {\n return;\n }\n\n const tableWidth = table.scrollWidth;\n const parentWidth = parent.clientWidth;\n setHasHorizontalOverflow(tableWidth > parentWidth);\n };\n\n checkOverflow();\n\n const resizeObserver = new ResizeObserver(checkOverflow);\n resizeObserver.observe(table);\n if (table.parentElement) {\n resizeObserver.observe(table.parentElement);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [children]);\n\n return (\n // eslint-disable-next-line jsx-a11y-x/no-noninteractive-element-interactions\n <table\n ref={tableRef}\n className={styles.table}\n style={{\n // @ts-expect-error CSS custom properties are not in CSSProperties type\n '--table-gutter': gutter,\n }}\n data-layout={layout}\n data-font-size={fontSize}\n data-sticky-header={legacyStickyHeader}\n data-sticky-left-column={legacyStickyLeftColumn}\n data-no-border={noBorder}\n data-has-horizontal-overflow={hasHorizontalOverflow}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </table>\n );\n },\n);\nTableRoot.displayName = 'Table.Root';\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, { children: ReactNode }>(({ children }, ref) => {\n return (\n <caption ref={ref} className={styles.caption}>\n {children}\n </caption>\n );\n});\nTableCaption.displayName = 'Table.Caption';\n\ntype TableHeaderProps = {\n /**\n * Whether the header should stick to the top when scrolling\n * @default false\n */\n sticky?: boolean;\n children: ReactNode;\n 'aria-label'?: string;\n 'aria-busy'?: boolean;\n};\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ sticky = false, children, 'aria-label': ariaLabel, 'aria-busy': ariaBusy }, ref) => {\n return (\n <thead ref={ref} className={styles.header} data-sticky={sticky} aria-label={ariaLabel} aria-busy={ariaBusy}>\n {children}\n </thead>\n );\n },\n);\nTableHeader.displayName = 'Table.Header';\n\ntype SortDirection = 'ascending' | 'descending' | undefined;\ntype HorizontalAlignment = 'left' | 'center' | 'right';\n\ntype TableHeaderCellProps = {\n /**\n * Scope of the column\n * @default 'col'\n */\n scope?: HTMLTableCellElement['scope'];\n /**\n * Number of columns the cell should span\n */\n colSpan?: HTMLTableCellElement['colSpan'];\n /**\n * Width of the column\n */\n width?: CSSProperties['width'];\n /**\n * Current sort direction of the column\n */\n sortDirection?: SortDirection;\n /**\n * Horizontal alignment of the content\n * @default 'left'\n */\n align?: HorizontalAlignment;\n /**\n * Whether to truncate content with ellipsis when it overflows\n * @default false\n */\n truncate?: boolean;\n /**\n * Aria label for ascending/descending sort. Variables: {column} - column name\n * @default \"Sort by {column} ascending/descending\"\n */\n sortTranslations?: {\n sortAscending?: string;\n sortDescending?: string;\n };\n /**\n * Whether the column should have a minimum width\n * @default false\n */\n noShrink?: boolean;\n /**\n * State of the cell, used for displaying loading state\n * @default 'idle'\n */\n state?: 'idle' | 'loading';\n /**\n * The aria-label to be applied when state='loading'\n */\n loadingStateAriaLabel?: string;\n /**\n * Handler called when the sort direction changes\n * @param direction - The new sort direction\n */\n onSortChange?: (direction: SortDirection) => void;\n children: ReactNode;\n};\n\nexport const TableHeaderCell = forwardRef<HTMLTableCellElement, TableHeaderCellProps>(\n (\n {\n noShrink = false,\n truncate = false,\n align = 'left',\n scope = 'col',\n sortTranslations,\n sortDirection,\n colSpan,\n width,\n state = 'idle',\n loadingStateAriaLabel,\n onSortChange,\n children,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const cellRef = useRef<HTMLTableCellElement>(null);\n useSyncRefs<HTMLTableCellElement>(cellRef, ref);\n\n useTextTruncation(cellRef);\n\n const sortLabel = useMemo(() => {\n if (typeof children === 'string') {\n if (sortDirection === 'ascending') {\n return sortTranslations?.sortDescending ?? t('Table_sortByDescending', { column: children });\n }\n return sortTranslations?.sortAscending ?? t('Table_sortByAscending', { column: children });\n }\n\n return sortDirection === 'ascending' ? t('Table_sortDescending') : t('Table_sortAscending');\n }, [children, sortDirection, sortTranslations, t]);\n\n const handleSortChange = () => {\n if (!onSortChange) {\n return;\n }\n\n const newDirection: SortDirection =\n sortDirection === undefined || sortDirection === 'descending' ? 'ascending' : 'descending';\n\n onSortChange(newDirection);\n };\n\n return (\n <th\n ref={cellRef}\n style={{ width }}\n className={styles.headerCell}\n scope={scope}\n colSpan={colSpan}\n data-align={align}\n data-truncate={truncate}\n data-no-shrink={noShrink}\n data-sortable={!!onSortChange}\n aria-sort={onSortChange ? sortDirection || 'none' : undefined}\n >\n {state === 'loading' ? (\n <div className={styles.cellContent} aria-live=\"polite\" aria-label={loadingStateAriaLabel}>\n {typeof children === 'string' && truncate ? (\n <span className={styles.buttonText}>{children}</span>\n ) : (\n children\n )}\n <LoadingCircle data-test-id=\"fondue-loading-circle\" size=\"xx-small\" />\n </div>\n ) : onSortChange ? (\n <button\n className={styles.cellContent}\n aria-label={sortLabel}\n data-active={!!sortDirection}\n onClick={handleSortChange}\n type=\"button\"\n >\n {typeof children === 'string' && truncate ? (\n <span className={styles.buttonText}>{children}</span>\n ) : (\n children\n )}\n <Box width={3}>\n {sortDirection === 'ascending' ? (\n <IconArrowUp className={styles.sortIndicator} size=\"12\" />\n ) : sortDirection === 'descending' ? (\n <IconArrowDown className={styles.sortIndicator} size=\"12\" />\n ) : (\n <IconArrowBidirectional className={styles.sortIndicator} size=\"12\" />\n )}\n </Box>\n </button>\n ) : (\n children\n )}\n </th>\n );\n },\n);\nTableHeaderCell.displayName = 'Table.HeaderCell';\n\ntype TableBodyProps = {\n /**\n * Whether the first column should stick to the left when scrolling horizontally\n * @default false\n */\n firstColumnSticky?: boolean;\n /**\n * Whether the last column should stick to the right when scrolling horizontally\n * @default false\n */\n lastColumnSticky?: boolean;\n children: ReactNode;\n 'aria-busy'?: boolean;\n};\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ firstColumnSticky = false, lastColumnSticky = false, children, 'aria-busy': ariaBusy }, ref) => {\n return (\n <tbody\n ref={ref}\n className={styles.body}\n data-first-column-sticky={firstColumnSticky}\n data-last-column-sticky={lastColumnSticky}\n aria-busy={ariaBusy}\n >\n {children}\n </tbody>\n );\n },\n);\nTableBody.displayName = 'Table.Body';\n\ntype TableRowProps = {\n /**\n * Whether the row is in a selected state\n * @default false\n */\n selected?: boolean;\n /**\n * Whether to disable interactions for this row\n * @default false\n */\n disabled?: boolean;\n /**\n * Handler called when the row is clicked or activated via keyboard\n * If provided, the row will be hoverable and interactive\n */\n onClick?: (selected: boolean) => void;\n /**\n * Content to be rendered within the row\n */\n children: ReactNode;\n /**\n * Accessible label for the row\n */\n 'aria-label'?: string;\n 'data-test-id'?: string;\n};\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { disabled = false, selected = false, onClick, children, 'aria-label': ariaLabel, 'data-test-id': dataTestId },\n ref,\n ) => {\n const isInteractive = onClick !== undefined && !disabled;\n\n const handleClick = (event?: MouseEvent) => {\n if (disabled) {\n return;\n }\n\n if (shouldIgnoreRowClick(event)) {\n return;\n }\n\n if (onClick) {\n onClick(selected);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTableRowElement>) => {\n if (!isInteractive) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleClick();\n }\n };\n\n return (\n <tr\n ref={ref}\n className={styles.row}\n tabIndex={0}\n role={isInteractive ? 'button' : 'row'}\n data-disabled={disabled}\n data-interactive={isInteractive}\n data-selected={!isInteractive ? selected : undefined}\n aria-disabled={disabled}\n aria-label={ariaLabel}\n aria-selected={!isInteractive ? selected : undefined}\n onClick={isInteractive ? handleClick : undefined}\n onKeyDown={isInteractive ? handleKeyDown : undefined}\n data-test-id={dataTestId}\n >\n {children}\n </tr>\n );\n },\n);\nTableRow.displayName = 'Table.Row';\n\ntype TableRowCellProps = {\n /**\n * Number of columns the cell should span\n */\n colSpan?: HTMLTableCellElement['colSpan'];\n /**\n * Whether to truncate content with ellipsis when it overflows\n * @default false\n */\n truncate?: boolean;\n /**\n * Horizontal alignment of the content\n * @default 'left'\n */\n align?: HorizontalAlignment;\n children: ReactNode;\n 'aria-label'?: string;\n};\n\nexport const TableRowCell = forwardRef<HTMLTableCellElement, TableRowCellProps>(\n ({ colSpan, truncate, align = 'left', children, 'aria-label': ariaLabel }, ref): ReactElement => {\n const cellRef = useRef<HTMLTableCellElement>(null);\n useSyncRefs<HTMLTableCellElement>(cellRef, ref);\n\n useTextTruncation(cellRef);\n\n return (\n <td\n ref={cellRef}\n className={styles.rowCell}\n colSpan={colSpan}\n data-align={align}\n data-truncate={truncate}\n aria-label={ariaLabel}\n >\n {children}\n </td>\n );\n },\n);\nTableRowCell.displayName = 'Table.RowCell';\n\nexport const Table = {\n Root: TableRoot,\n Caption: TableCaption,\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n Body: TableBody,\n Row: TableRow,\n RowCell: TableRowCell,\n};\n"],"names":["TableRoot","forwardRef","layout","fontSize","gutter","sticky","noBorder","children","props","ref","tableRef","useRef","hasHorizontalOverflow","setHasHorizontalOverflow","useState","useSyncRefs","legacyStickyHeader","legacyStickyLeftColumn","useEffect","table","checkOverflow","parent","tableWidth","parentWidth","resizeObserver","jsx","styles","handleKeyDown","TableCaption","TableHeader","ariaLabel","ariaBusy","TableHeaderCell","noShrink","truncate","align","scope","sortTranslations","sortDirection","colSpan","width","state","loadingStateAriaLabel","onSortChange","t","useTranslation","cellRef","useTextTruncation","sortLabel","useMemo","handleSortChange","jsxs","LoadingCircle","Box","IconArrowUp","IconArrowDown","IconArrowBidirectional","TableBody","firstColumnSticky","lastColumnSticky","TableRow","disabled","selected","onClick","dataTestId","isInteractive","handleClick","event","shouldIgnoreRowClick","TableRowCell","Table"],"mappings":"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"}
1
+ {"version":3,"file":"fondue-components33.js","sources":["../src/components/Switch/Switch.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport * as RadixSwitch from '@radix-ui/react-switch';\nimport { type FormEvent, type ForwardedRef, forwardRef } from 'react';\n\nimport { useTranslation } from '#/hooks/useTranslation';\nimport { type CommonAriaAttrs } from '#/utilities/types';\n\nimport styles from './styles/switch.module.scss';\n\ntype SwitchProps = {\n id?: string;\n name?: string;\n /**\n * The size of the switch component.\n * @default medium\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * The active value in the select component. This is used to control the select externally.\n * @default false\n */\n value?: boolean;\n /**\n * The default value of the select component. Used for uncontrolled usages.\n * @default false\n */\n defaultValue?: boolean;\n /**\n * Disables the select component.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the switch is required.\n * @default false\n */\n required?: boolean;\n /**\n * Callback function that is called when the switch is toggled.\n * @param checked - The new checked state of the switch\n */\n onChange?: (checked: boolean) => void;\n /**\n * Event handler called when the checkbox is blurred\n * @param event - The event object\n */\n onBlur?: (event: FormEvent<HTMLButtonElement>) => void;\n /**\n * Event handler called when the checkbox is focused\n * @param event - The event object\n */\n onFocus?: (event: FormEvent<HTMLButtonElement>) => void;\n 'data-test-id'?: string;\n} & CommonAriaAttrs;\n\nconst SwitchComponent = (\n {\n value,\n defaultValue,\n size = 'medium',\n onChange,\n 'data-test-id': dataTestId = 'fondue-switch',\n 'aria-label': ariaLabel,\n ...props\n }: SwitchProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) => {\n const { t } = useTranslation();\n\n return (\n <RadixSwitch.Root\n ref={ref}\n checked={value}\n defaultChecked={defaultValue}\n className={styles.root}\n onCheckedChange={onChange}\n aria-label={ariaLabel ?? t('Switch_defaultLabel')}\n data-test-id={dataTestId}\n data-size={size}\n {...props}\n >\n <RadixSwitch.Thumb className={styles.thumb} />\n </RadixSwitch.Root>\n );\n};\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(SwitchComponent);\nSwitch.displayName = 'Switch';\n"],"names":["SwitchComponent","value","defaultValue","size","onChange","dataTestId","ariaLabel","props","ref","t","useTranslation","jsx","RadixSwitch","styles","Switch","forwardRef"],"mappings":";;;;;AAwDA,MAAMA,IAAkB,CACpB;AAAA,EACI,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC;AAAA,EACA,gBAAgBC,IAAa;AAAA,EAC7B,cAAcC;AAAA,EACd,GAAGC;AACP,GACAC,MACC;AACD,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,SACI,gBAAAC;AAAA,IAACC,EAAY;AAAA,IAAZ;AAAA,MACG,KAAAJ;AAAA,MACA,SAASP;AAAA,MACT,gBAAgBC;AAAA,MAChB,WAAWW,EAAO;AAAA,MAClB,iBAAiBT;AAAA,MACjB,cAAYE,KAAaG,EAAE,qBAAqB;AAAA,MAChD,gBAAcJ;AAAA,MACd,aAAWF;AAAA,MACV,GAAGI;AAAA,MAEJ,4BAACK,EAAY,OAAZ,EAAkB,WAAWC,EAAO,MAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAGxD,GAEaC,IAASC,EAA2Cf,CAAe;AAChFc,EAAO,cAAc;"}
@@ -1,149 +1,199 @@
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-components102.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
- ] });
1
+ import { jsx as n, jsxs as T } from "react/jsx-runtime";
2
+ import { IconArrowUp as O, IconArrowDown as K, IconArrowBidirectional as W } from "@frontify/fondue-icons";
3
+ import { forwardRef as u, useRef as v, useState as _, useEffect as D, useMemo as L } from "react";
4
+ import { useSyncRefs as R } from "./fondue-components59.js";
5
+ import { useTextTruncation as h } from "./fondue-components104.js";
6
+ import { useTranslation as j } from "./fondue-components43.js";
7
+ import { Box as M } from "./fondue-components5.js";
8
+ import { LoadingCircle as S } from "./fondue-components22.js";
9
+ import s from "./fondue-components105.js";
10
+ import { handleKeyDown as U, shouldIgnoreRowClick as q } from "./fondue-components106.js";
11
+ const x = u(
12
+ ({ layout: t = "auto", fontSize: e = "medium", gutter: r = "0px", sticky: o, noBorder: a = !1, children: l, ...m }, f) => {
13
+ const b = v(null), [p, i] = _(!1);
14
+ R(b, f);
15
+ const d = o === "head" || o === "both", N = o === "col" || o === "both";
16
+ return D(() => {
17
+ const c = b.current;
18
+ if (!c)
19
+ return;
20
+ const y = () => {
21
+ const g = c.parentElement;
22
+ if (!g)
23
+ return;
24
+ const C = c.scrollWidth, E = g.clientWidth;
25
+ i(C > E);
26
+ };
27
+ y();
28
+ const w = new ResizeObserver(y);
29
+ return w.observe(c), c.parentElement && w.observe(c.parentElement), () => {
30
+ w.disconnect();
31
+ };
32
+ }, [l]), // eslint-disable-next-line jsx-a11y-x/no-noninteractive-element-interactions
33
+ /* @__PURE__ */ n(
34
+ "table",
35
+ {
36
+ ref: b,
37
+ className: s.table,
38
+ style: {
39
+ // @ts-expect-error CSS custom properties are not in CSSProperties type
40
+ "--table-gutter": r
41
+ },
42
+ "data-layout": t,
43
+ "data-font-size": e,
44
+ "data-sticky-header": d,
45
+ "data-sticky-left-column": N,
46
+ "data-no-border": a,
47
+ "data-has-horizontal-overflow": p,
48
+ onKeyDown: U,
49
+ ...m,
50
+ children: l
51
+ }
52
+ );
58
53
  }
59
54
  );
60
- S.displayName = "Tag";
61
- const z = x(
55
+ x.displayName = "Table.Root";
56
+ const k = u(({ children: t }, e) => /* @__PURE__ */ n("caption", { ref: e, className: s.caption, children: t }));
57
+ k.displayName = "Table.Caption";
58
+ const z = u(
59
+ ({ sticky: t = !1, children: e, "aria-label": r, "aria-busy": o }, a) => /* @__PURE__ */ n("thead", { ref: a, className: s.header, "data-sticky": t, "aria-label": r, "aria-busy": o, children: e })
60
+ );
61
+ z.displayName = "Table.Header";
62
+ const H = u(
62
63
  ({
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",
64
+ noShrink: t = !1,
65
+ truncate: e = !1,
66
+ align: r = "left",
67
+ scope: o = "col",
68
+ sortTranslations: a,
69
+ sortDirection: l,
70
+ colSpan: m,
71
+ width: f,
72
+ state: b = "idle",
73
+ loadingStateAriaLabel: p,
74
+ onSortChange: i,
75
+ children: d
76
+ }, N) => {
77
+ const { t: c } = j(), y = v(null);
78
+ R(y, N), h(y);
79
+ const w = L(() => typeof d == "string" ? l === "ascending" ? (a == null ? void 0 : a.sortDescending) ?? c("Table_sortByDescending", { column: d }) : (a == null ? void 0 : a.sortAscending) ?? c("Table_sortByAscending", { column: d }) : c(l === "ascending" ? "Table_sortDescending" : "Table_sortAscending"), [d, l, a, c]), g = () => {
80
+ if (!i)
81
+ return;
82
+ i(l === void 0 || l === "descending" ? "ascending" : "descending");
83
+ };
84
+ return /* @__PURE__ */ n(
85
+ "th",
102
86
  {
103
87
  ref: y,
104
- className: s.mainContent,
105
- onMouseEnter: i,
106
- onMouseLeave: p,
107
- "data-test-id": n,
108
- children: d
88
+ style: { width: f },
89
+ className: s.headerCell,
90
+ scope: o,
91
+ colSpan: m,
92
+ "data-align": r,
93
+ "data-truncate": e,
94
+ "data-no-shrink": t,
95
+ "data-sortable": !!i,
96
+ "aria-sort": i ? l || "none" : void 0,
97
+ children: b === "loading" ? /* @__PURE__ */ T("div", { className: s.cellContent, "aria-live": "polite", "aria-label": p, children: [
98
+ typeof d == "string" && e ? /* @__PURE__ */ n("span", { className: s.buttonText, children: d }) : d,
99
+ /* @__PURE__ */ n(S, { "data-test-id": "fondue-loading-circle", size: "xx-small" })
100
+ ] }) : i ? /* @__PURE__ */ T(
101
+ "button",
102
+ {
103
+ className: s.cellContent,
104
+ "aria-label": w,
105
+ "data-active": !!l,
106
+ onClick: g,
107
+ type: "button",
108
+ children: [
109
+ typeof d == "string" && e ? /* @__PURE__ */ n("span", { className: s.buttonText, children: d }) : d,
110
+ /* @__PURE__ */ n(M, { width: 3, children: l === "ascending" ? /* @__PURE__ */ n(O, { className: s.sortIndicator, size: "12" }) : l === "descending" ? /* @__PURE__ */ n(K, { className: s.sortIndicator, size: "12" }) : /* @__PURE__ */ n(W, { className: s.sortIndicator, size: "12" }) })
111
+ ]
112
+ }
113
+ ) : d
109
114
  }
110
115
  );
111
116
  }
112
117
  );
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",
117
- {
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" })
124
- }
125
- ),
126
- a && /* @__PURE__ */ t(
127
- "button",
118
+ H.displayName = "Table.HeaderCell";
119
+ const I = u(
120
+ ({ firstColumnSticky: t = !1, lastColumnSticky: e = !1, children: r, "aria-busy": o }, a) => /* @__PURE__ */ n(
121
+ "tbody",
128
122
  {
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" })
123
+ ref: a,
124
+ className: s.body,
125
+ "data-first-column-sticky": t,
126
+ "data-last-column-sticky": e,
127
+ "aria-busy": o,
128
+ children: r
135
129
  }
136
130
  )
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;
131
+ );
132
+ I.displayName = "Table.Body";
133
+ const B = u(
134
+ ({ disabled: t = !1, selected: e = !1, onClick: r, children: o, "aria-label": a, "data-test-id": l }, m) => {
135
+ const f = r !== void 0 && !t, b = (i) => {
136
+ t || q(i) || r && r(e);
137
+ }, p = (i) => {
138
+ f && (i.key === "Enter" || i.key === " ") && (i.preventDefault(), b());
139
+ };
140
+ return /* @__PURE__ */ n(
141
+ "tr",
142
+ {
143
+ ref: m,
144
+ className: s.row,
145
+ tabIndex: 0,
146
+ role: f ? "button" : "row",
147
+ "data-disabled": t,
148
+ "data-interactive": f,
149
+ "data-selected": f ? void 0 : e,
150
+ "aria-disabled": t,
151
+ "aria-label": a,
152
+ "aria-selected": f ? void 0 : e,
153
+ onClick: f ? b : void 0,
154
+ onKeyDown: f ? p : void 0,
155
+ "data-test-id": l,
156
+ children: o
157
+ }
158
+ );
159
+ }
160
+ );
161
+ B.displayName = "Table.Row";
162
+ const A = u(
163
+ ({ colSpan: t, truncate: e, align: r = "left", children: o, "aria-label": a }, l) => {
164
+ const m = v(null);
165
+ return R(m, l), h(m), /* @__PURE__ */ n(
166
+ "td",
167
+ {
168
+ ref: m,
169
+ className: s.rowCell,
170
+ colSpan: t,
171
+ "data-align": r,
172
+ "data-truncate": e,
173
+ "aria-label": a,
174
+ children: o
175
+ }
176
+ );
177
+ }
178
+ );
179
+ A.displayName = "Table.RowCell";
180
+ const ee = {
181
+ Root: x,
182
+ Caption: k,
183
+ Header: z,
184
+ HeaderCell: H,
185
+ Body: I,
186
+ Row: B,
187
+ RowCell: A
188
+ };
144
189
  export {
145
- B as Tag,
146
- N as TagHoverContent,
147
- T as TagSecondaryContent
190
+ ee as Table,
191
+ I as TableBody,
192
+ k as TableCaption,
193
+ z as TableHeader,
194
+ H as TableHeaderCell,
195
+ x as TableRoot,
196
+ B as TableRow,
197
+ A as TableRowCell
148
198
  };
149
199
  //# sourceMappingURL=fondue-components34.js.map