@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 +1 @@
1
- {"version":3,"file":"fondue-components36.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' | '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-components36.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,85 +1,35 @@
1
- import { jsxs as m, jsx as t } from "react/jsx-runtime";
2
- import { IconCheckMark as w, IconExclamationMarkTriangle as h } from "@frontify/fondue-icons";
3
- import { forwardRef as f, useRef as S } from "react";
4
- import { LoadingCircle as T } from "./fondue-components21.js";
5
- import a from "./fondue-components106.js";
6
- const u = ({
7
- children: s,
8
- className: d,
9
- status: e = "neutral",
10
- "data-test-id": l = "fondue-text-input",
11
- "aria-errormessage": R,
12
- placeholder: c,
13
- ...r
14
- }, N) => {
15
- const n = S(!1);
16
- return /* @__PURE__ */ m(
17
- "div",
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { forwardRef as p } from "react";
3
+ import t from "./fondue-components110.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,
18
16
  {
19
- className: [a.root, d].filter(Boolean).join(" "),
20
- "data-status": e,
21
- "data-test-id": l,
22
- children: [
23
- e === "loading" ? /* @__PURE__ */ t("div", { className: a.loadingStatus, "data-test-id": `${l}-loader`, children: /* @__PURE__ */ t(T, { size: "xx-small" }) }) : null,
24
- /* @__PURE__ */ m("div", { className: a.inputWrapper, children: [
25
- c && /* @__PURE__ */ t("div", { className: a.placeholder, children: c }),
26
- /* @__PURE__ */ t(
27
- "input",
28
- {
29
- onMouseDown: (o) => {
30
- n.current = !0, o.currentTarget.dataset.showFocusRing = "false";
31
- },
32
- type: "text",
33
- placeholder: c,
34
- ...r,
35
- onFocus: (o) => {
36
- var i;
37
- n.current || (o.target.dataset.showFocusRing = "true"), (i = r.onFocus) == null || i.call(r, o);
38
- },
39
- onBlur: (o) => {
40
- var i;
41
- o.target.dataset.showFocusRing = "false", n.current = !1, (i = r.onBlur) == null || i.call(r, o);
42
- },
43
- ref: N,
44
- className: a.input,
45
- "aria-invalid": e === "error",
46
- "aria-errormessage": e === "error" ? R : void 0
47
- }
48
- )
49
- ] }),
50
- e === "success" ? /* @__PURE__ */ t(w, { size: 16, className: a.iconSuccess, "data-test-id": `${l}-success-icon` }) : null,
51
- e === "error" ? /* @__PURE__ */ t(
52
- h,
53
- {
54
- size: 16,
55
- className: a.iconError,
56
- "data-test-id": `${l}-error-icon`
57
- }
58
- ) : null,
59
- s
60
- ]
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
61
28
  }
62
- );
63
- };
64
- u.displayName = "TextField.Root";
65
- const x = ({ name: s, className: d, ...e }, l) => /* @__PURE__ */ t(
66
- "div",
67
- {
68
- "data-slot": !0,
69
- "data-name": s,
70
- "data-label-ignore-disabled": "true",
71
- ...e,
72
- ref: l,
73
- className: [a.slot, d].filter(Boolean).join(" ")
74
- }
29
+ )
75
30
  );
76
- x.displayName = "TextField.Slot";
77
- const g = f(u), v = f(x), F = g;
78
- F.Root = g;
79
- F.Slot = v;
31
+ n.displayName = "FondueText";
80
32
  export {
81
- u as TextFieldRoot,
82
- x as TextFieldSlot,
83
- F as TextInput
33
+ n as Text
84
34
  };
85
35
  //# sourceMappingURL=fondue-components37.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components37.js","sources":["../src/components/TextInput/TextInput.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCheckMark, IconExclamationMarkTriangle } from '@frontify/fondue-icons';\nimport {\n forwardRef,\n useRef,\n type ChangeEvent,\n type FocusEvent,\n type ForwardedRef,\n type KeyboardEvent,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\n\nimport { LoadingCircle } from '../LoadingCircle/LoadingCircle';\n\nimport styles from './styles/text.module.scss';\n\nexport type TextInputProps = {\n id?: string;\n name?: string;\n /**\n * The place where the input slots are placed\n */\n children?: ReactNode;\n /**\n * The default value of the text input\n * Used for uncontrolled components\n */\n defaultValue?: string | number;\n /**\n * The controlled value of the text input\n */\n value?: string | number;\n /**\n * Type of the text input\n * @default \"text\"\n */\n type?: 'email' | 'hidden' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'time' | 'url';\n /**\n * The placeholder in the text input\n */\n placeholder?: string;\n /**\n * Disable the text input\n * @default false\n */\n disabled?: boolean;\n /**\n * Make the text input required in form\n * @default false\n */\n required?: boolean;\n /**\n * Make the text input spell-checkable\n * @default true\n */\n spellCheck?: boolean;\n /**\n * Make the text input read-only\n * @default false\n */\n readOnly?: boolean;\n /**\n * Set the type of input so autocomplete can help the user\n * @default \"on\"\n */\n autoComplete?: string;\n /**\n * The maximum length of the text input\n */\n maxLength?: number;\n /**\n * Status of the text input\n * @default \"neutral\"\n */\n status?: 'neutral' | 'success' | 'error' | 'loading';\n className?: string;\n /**\n * Event handler called when the text input value changes\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the text input is blurred\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the text input is focused\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when a key is pressed\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when a key is released\n */\n onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the text inside of text input is selected\n */\n onSelect?: (event: SyntheticEvent<HTMLInputElement>) => void;\n 'data-test-id'?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-errormessage'?: string;\n};\n\nexport const TextFieldRoot = (\n {\n children,\n className,\n status = 'neutral',\n 'data-test-id': dataTestId = 'fondue-text-input',\n 'aria-errormessage': ariaErrormessage,\n placeholder,\n ...inputProps\n }: TextInputProps,\n ref: ForwardedRef<HTMLInputElement>,\n) => {\n const wasClicked = useRef(false);\n\n return (\n <div\n className={[styles.root, className].filter(Boolean).join(' ')}\n data-status={status}\n data-test-id={dataTestId}\n >\n {status === 'loading' ? (\n <div className={styles.loadingStatus} data-test-id={`${dataTestId}-loader`}>\n <LoadingCircle size=\"xx-small\" />\n </div>\n ) : null}\n <div className={styles.inputWrapper}>\n {placeholder && <div className={styles.placeholder}>{placeholder}</div>}\n <input\n onMouseDown={(mouseEvent) => {\n wasClicked.current = true;\n mouseEvent.currentTarget.dataset.showFocusRing = 'false';\n }}\n type=\"text\"\n placeholder={placeholder}\n {...inputProps}\n onFocus={(focusEvent) => {\n if (!wasClicked.current) {\n focusEvent.target.dataset.showFocusRing = 'true';\n }\n inputProps.onFocus?.(focusEvent);\n }}\n onBlur={(blurEvent) => {\n blurEvent.target.dataset.showFocusRing = 'false';\n wasClicked.current = false;\n inputProps.onBlur?.(blurEvent);\n }}\n ref={ref}\n className={styles.input}\n aria-invalid={status === 'error'}\n aria-errormessage={status === 'error' ? ariaErrormessage : undefined}\n />\n </div>\n\n {status === 'success' ? (\n <IconCheckMark size={16} className={styles.iconSuccess} data-test-id={`${dataTestId}-success-icon`} />\n ) : null}\n\n {status === 'error' ? (\n <IconExclamationMarkTriangle\n size={16}\n className={styles.iconError}\n data-test-id={`${dataTestId}-error-icon`}\n />\n ) : null}\n\n {children}\n </div>\n );\n};\nTextFieldRoot.displayName = 'TextField.Root';\n\nexport type TextFieldSlotProps = {\n children: ReactNode;\n name?: 'left' | 'right';\n className?: string;\n};\n\nexport const TextFieldSlot = (\n { name, className, ...slotProps }: TextFieldSlotProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) => {\n return (\n <div\n data-slot\n data-name={name}\n data-label-ignore-disabled=\"true\"\n {...slotProps}\n ref={forwardedRef}\n className={[styles.slot, className].filter(Boolean).join(' ')}\n />\n );\n};\n\nTextFieldSlot.displayName = 'TextField.Slot';\n\nconst ForwardedRefTextFieldRoot = forwardRef<HTMLInputElement, TextInputProps>(TextFieldRoot);\nconst ForwardedRefTextFieldSlot = forwardRef<HTMLDivElement, TextFieldSlotProps>(TextFieldSlot);\n// @ts-expect-error We support both single component (without slots) and compound components (with slots)\nexport const TextInput: typeof TextFieldRoot & {\n Root: typeof ForwardedRefTextFieldRoot;\n Slot: typeof ForwardedRefTextFieldSlot;\n} = ForwardedRefTextFieldRoot;\nTextInput.Root = ForwardedRefTextFieldRoot;\nTextInput.Slot = ForwardedRefTextFieldSlot;\n"],"names":["TextFieldRoot","children","className","status","dataTestId","ariaErrormessage","placeholder","inputProps","ref","wasClicked","useRef","jsxs","styles","jsx","LoadingCircle","mouseEvent","focusEvent","_a","blurEvent","IconCheckMark","IconExclamationMarkTriangle","TextFieldSlot","name","slotProps","forwardedRef","ForwardedRefTextFieldRoot","forwardRef","ForwardedRefTextFieldSlot","TextInput"],"mappings":";;;;;AA6GO,MAAMA,IAAgB,CACzB;AAAA,EACI,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,gBAAgBC,IAAa;AAAA,EAC7B,qBAAqBC;AAAA,EACrB,aAAAC;AAAA,EACA,GAAGC;AACP,GACAC,MACC;AACD,QAAMC,IAAaC,EAAO,EAAK;AAE/B,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,CAACC,EAAO,MAAMV,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC5D,eAAaC;AAAA,MACb,gBAAcC;AAAA,MAEb,UAAA;AAAA,QAAAD,MAAW,YACR,gBAAAU,EAAC,OAAA,EAAI,WAAWD,EAAO,eAAe,gBAAc,GAAGR,CAAU,WAC7D,UAAA,gBAAAS,EAACC,GAAA,EAAc,MAAK,WAAA,CAAW,GACnC,IACA;AAAA,QACJ,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAO,cAClB,UAAA;AAAA,UAAAN,KAAe,gBAAAO,EAAC,OAAA,EAAI,WAAWD,EAAO,aAAc,UAAAN,GAAY;AAAA,UACjE,gBAAAO;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAa,CAACE,MAAe;AACzB,gBAAAN,EAAW,UAAU,IACrBM,EAAW,cAAc,QAAQ,gBAAgB;AAAA,cACrD;AAAA,cACA,MAAK;AAAA,cACL,aAAAT;AAAA,cACC,GAAGC;AAAA,cACJ,SAAS,CAACS,MAAe;;AACrB,gBAAKP,EAAW,YACZO,EAAW,OAAO,QAAQ,gBAAgB,UAE9CC,IAAAV,EAAW,YAAX,QAAAU,EAAA,KAAAV,GAAqBS;AAAA,cACzB;AAAA,cACA,QAAQ,CAACE,MAAc;;AACnB,gBAAAA,EAAU,OAAO,QAAQ,gBAAgB,SACzCT,EAAW,UAAU,KACrBQ,IAAAV,EAAW,WAAX,QAAAU,EAAA,KAAAV,GAAoBW;AAAA,cACxB;AAAA,cACA,KAAAV;AAAA,cACA,WAAWI,EAAO;AAAA,cAClB,gBAAcT,MAAW;AAAA,cACzB,qBAAmBA,MAAW,UAAUE,IAAmB;AAAA,YAAA;AAAA,UAAA;AAAA,QAC/D,GACJ;AAAA,QAECF,MAAW,YACR,gBAAAU,EAACM,GAAA,EAAc,MAAM,IAAI,WAAWP,EAAO,aAAa,gBAAc,GAAGR,CAAU,iBAAiB,IACpG;AAAA,QAEHD,MAAW,UACR,gBAAAU;AAAA,UAACO;AAAA,UAAA;AAAA,YACG,MAAM;AAAA,YACN,WAAWR,EAAO;AAAA,YAClB,gBAAc,GAAGR,CAAU;AAAA,UAAA;AAAA,QAAA,IAE/B;AAAA,QAEHH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGb;AACAD,EAAc,cAAc;AAQrB,MAAMqB,IAAgB,CACzB,EAAE,MAAAC,GAAM,WAAApB,GAAW,GAAGqB,EAAA,GACtBC,MAGI,gBAAAX;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,aAAS;AAAA,IACT,aAAWS;AAAA,IACX,8BAA2B;AAAA,IAC1B,GAAGC;AAAA,IACJ,KAAKC;AAAA,IACL,WAAW,CAACZ,EAAO,MAAMV,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAAA;AAAA;AAKxEmB,EAAc,cAAc;AAE5B,MAAMI,IAA4BC,EAA6C1B,CAAa,GACtF2B,IAA4BD,EAA+CL,CAAa,GAEjFO,IAGTH;AACJG,EAAU,OAAOH;AACjBG,EAAU,OAAOD;"}
1
+ {"version":3,"file":"fondue-components37.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' | '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,127 +1,85 @@
1
- import { jsxs as F, jsx as e } from "react/jsx-runtime";
2
- import { IconCheckMark as J, IconExclamationMarkTriangle as L, IconCross as Q } from "@frontify/fondue-icons";
3
- import { forwardRef as B, useRef as y, useState as U, useEffect as z } from "react";
4
- import { useSyncRefs as X } from "./fondue-components54.js";
5
- import o from "./fondue-components107.js";
6
- const D = ({
7
- "data-test-id": c = "fondue-textarea",
8
- autocomplete: i,
9
- autosize: u,
10
- children: m,
11
- clearable: f,
12
- decorator: h,
13
- defaultValue: g,
14
- disabled: n,
15
- extraActions: r,
16
- focusOnMount: v,
17
- minRows: M = 1,
18
- maxRows: k,
19
- onEnterPressed: w,
20
- readOnly: d,
21
- resizable: $,
22
- selectable: b = !0,
23
- status: s = "default",
24
- value: N,
25
- ...l
26
- }, W) => {
27
- const R = y(null), T = y(!1);
28
- X(R, W);
29
- const [x, S] = U(N ?? g ?? ""), C = (r == null ? void 0 : r.length) !== void 0 || f || ["success", "error"].includes(s), q = () => {
30
- S("");
31
- }, G = (a) => {
32
- var t;
33
- a.key === "Enter" && (w == null || w(a)), (t = l.onKeyDown) == null || t.call(l, a);
34
- };
35
- return z(() => {
36
- S(N ?? g ?? "");
37
- }, [g, N]), z(() => {
38
- var a;
39
- v && ((a = R.current) == null || a.focus());
40
- }, [v]), /* @__PURE__ */ F(
1
+ import { jsxs as m, jsx as t } from "react/jsx-runtime";
2
+ import { IconCheckMark as w, IconExclamationMarkTriangle as h } from "@frontify/fondue-icons";
3
+ import { forwardRef as f, useRef as S } from "react";
4
+ import { LoadingCircle as T } from "./fondue-components22.js";
5
+ import a from "./fondue-components111.js";
6
+ const u = ({
7
+ children: s,
8
+ className: d,
9
+ status: e = "neutral",
10
+ "data-test-id": l = "fondue-text-input",
11
+ "aria-errormessage": R,
12
+ placeholder: c,
13
+ ...r
14
+ }, N) => {
15
+ const n = S(!1);
16
+ return /* @__PURE__ */ m(
41
17
  "div",
42
18
  {
43
- className: o.root,
44
- "data-autosize": u,
45
- "data-clearable": f,
46
- "data-disabled": n || d,
47
- "data-has-decorator": !!h,
48
- "data-has-tools": C,
49
- "data-resizable": $,
50
- "data-status": s,
51
- "data-max-rows": !!k,
52
- "data-test-id": c,
53
- style: { "--max-rows": `${k}` },
19
+ className: [a.root, d].filter(Boolean).join(" "),
20
+ "data-status": e,
21
+ "data-test-id": l,
54
22
  children: [
55
- h ? /* @__PURE__ */ e("div", { className: o.decorator, children: h }) : null,
56
- /* @__PURE__ */ e("div", { className: o.textareaWrapper, "data-replicated-value": x, children: /* @__PURE__ */ e(
57
- "textarea",
58
- {
59
- ...l,
60
- onMouseDown: (a) => {
61
- T.current = !0, a.currentTarget.dataset.showFocusRing = "false";
62
- },
63
- onFocus: (a) => {
64
- var t;
65
- T.current || (a.target.dataset.showFocusRing = "true"), (t = l.onFocus) == null || t.call(l, a);
66
- },
67
- onBlur: (a) => {
68
- var t;
69
- a.target.dataset.showFocusRing = "false", T.current = !1, (t = l.onBlur) == null || t.call(l, a);
70
- },
71
- autoComplete: i ? "on" : "off",
72
- className: o.textarea,
73
- disabled: n,
74
- onKeyDown: G,
75
- onInput: (a) => S(a.currentTarget.value),
76
- onSelect: (a) => {
77
- b || (a.currentTarget.selectionStart = a.currentTarget.selectionEnd);
78
- },
79
- readOnly: d,
80
- ref: R,
81
- rows: M,
82
- value: x
83
- }
84
- ) }),
85
- s === "loading" && /* @__PURE__ */ e("div", { className: o.loadingStatus, "data-test-id": `${c}-loader` }),
86
- C && /* @__PURE__ */ F("div", { className: o.tools, children: [
87
- s === "success" && /* @__PURE__ */ e("div", { className: o.success, children: /* @__PURE__ */ e(J, { size: 20 }) }),
88
- s === "error" && /* @__PURE__ */ e("div", { className: o[s], children: /* @__PURE__ */ e(L, { size: 20 }) }),
89
- r == null ? void 0 : r.map(({ icon: a, title: t, callback: H }) => /* @__PURE__ */ e(
90
- "button",
23
+ e === "loading" ? /* @__PURE__ */ t("div", { className: a.loadingStatus, "data-test-id": `${l}-loader`, children: /* @__PURE__ */ t(T, { size: "xx-small" }) }) : null,
24
+ /* @__PURE__ */ m("div", { className: a.inputWrapper, children: [
25
+ c && /* @__PURE__ */ t("div", { className: a.placeholder, children: c }),
26
+ /* @__PURE__ */ t(
27
+ "input",
91
28
  {
92
- className: o.toolsButton,
93
- disabled: n || d,
94
- onClick: H,
95
- title: t,
96
- children: a
97
- },
98
- t
99
- )),
100
- f && /* @__PURE__ */ e("button", { className: o.toolsButton, onClick: q, disabled: n || d, children: /* @__PURE__ */ e(Q, { size: 20, fill: "currentColor" }) })
29
+ onMouseDown: (o) => {
30
+ n.current = !0, o.currentTarget.dataset.showFocusRing = "false";
31
+ },
32
+ type: "text",
33
+ placeholder: c,
34
+ ...r,
35
+ onFocus: (o) => {
36
+ var i;
37
+ n.current || (o.target.dataset.showFocusRing = "true"), (i = r.onFocus) == null || i.call(r, o);
38
+ },
39
+ onBlur: (o) => {
40
+ var i;
41
+ o.target.dataset.showFocusRing = "false", n.current = !1, (i = r.onBlur) == null || i.call(r, o);
42
+ },
43
+ ref: N,
44
+ className: a.input,
45
+ "aria-invalid": e === "error",
46
+ "aria-errormessage": e === "error" ? R : void 0
47
+ }
48
+ )
101
49
  ] }),
102
- m
50
+ e === "success" ? /* @__PURE__ */ t(w, { size: 16, className: a.iconSuccess, "data-test-id": `${l}-success-icon` }) : null,
51
+ e === "error" ? /* @__PURE__ */ t(
52
+ h,
53
+ {
54
+ size: 16,
55
+ className: a.iconError,
56
+ "data-test-id": `${l}-error-icon`
57
+ }
58
+ ) : null,
59
+ s
103
60
  ]
104
61
  }
105
62
  );
106
63
  };
107
- D.displayName = "Textarea.Root";
108
- const j = ({ name: c, className: i, ...u }, m) => /* @__PURE__ */ e(
64
+ u.displayName = "TextField.Root";
65
+ const x = ({ name: s, className: d, ...e }, l) => /* @__PURE__ */ t(
109
66
  "div",
110
67
  {
111
68
  "data-slot": !0,
112
- "data-name": c,
113
- ...u,
114
- ref: m,
115
- className: [o.slot, i].filter(Boolean).join(" ")
69
+ "data-name": s,
70
+ "data-label-ignore-disabled": "true",
71
+ ...e,
72
+ ref: l,
73
+ className: [a.slot, d].filter(Boolean).join(" ")
116
74
  }
117
75
  );
118
- j.displayName = "Textarea.Slot";
119
- const I = B(D), Y = B(j), K = I;
120
- K.Root = I;
121
- K.Slot = Y;
76
+ x.displayName = "TextField.Slot";
77
+ const g = f(u), v = f(x), F = g;
78
+ F.Root = g;
79
+ F.Slot = v;
122
80
  export {
123
- K as Textarea,
124
- D as TextareaRoot,
125
- j as TextareaSlot
81
+ u as TextFieldRoot,
82
+ x as TextFieldSlot,
83
+ F as TextInput
126
84
  };
127
85
  //# sourceMappingURL=fondue-components38.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components38.js","sources":["../src/components/Textarea/Textarea.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCheckMark, IconCross, IconExclamationMarkTriangle } from '@frontify/fondue-icons';\nimport {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type ChangeEventHandler,\n type CSSProperties,\n type FocusEventHandler,\n type ForwardedRef,\n type KeyboardEventHandler,\n type ReactElement,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\n\nimport { useSyncRefs } from '#/hooks/useSyncRefs';\n\nimport styles from './styles/textarea.module.scss';\n\n/**\n * @deprecated Use Textarea.Slot instead for custom actions\n */\nexport type ExtraAction = {\n icon: ReactElement;\n title: string;\n callback: () => void;\n};\n\ntype Status = 'default' | 'loading' | 'success' | 'error';\n\ntype TextareaProps = {\n /**\n * The id of the textarea\n */\n id?: string;\n /**\n * The place where the textarea slots are placed\n */\n children?: ReactNode;\n /**\n * If `true`, Textarea will have `autoComplete` functionality\n */\n autocomplete?: boolean;\n /**\n * If `true`, component rendered is a auto sizing Textarea\n */\n autosize?: boolean;\n /**\n * Render `clear` button to clear input on click\n */\n clearable?: boolean;\n /**\n * A `ReactElement` that will be rendered at the start of the `Textarea`\n */\n decorator?: ReactElement;\n /**\n * Initial value\n */\n defaultValue?: string;\n disabled?: boolean;\n /**\n * Collection of extra actions the input can preform\n * @deprecated Use Textarea.Slot instead for custom actions\n */\n extraActions?: ExtraAction[];\n /**\n * If `true`, Textarea will be focused on mount\n */\n focusOnMount?: boolean;\n /**\n * If autosize is false, this is used as rows property for default textarea\n * @default 1\n */\n minRows?: number;\n /**\n * If `autosize` is `false`, this property is ignored\n */\n maxRows?: number;\n /**\n * Event handler called when the textarea value changes\n */\n onChange?: ChangeEventHandler<HTMLTextAreaElement>;\n /**\n * Event handler called when the text input is blurred\n */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n /**\n * Event handler called when the text input is focused\n */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n /**\n * Event handler called when a key is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLTextAreaElement>;\n /**\n * Event handler called when Enter is pressed\n */\n onEnterPressed?: KeyboardEventHandler<HTMLTextAreaElement>;\n /**\n * Event handler called when a key is released\n */\n onKeyUp?: KeyboardEventHandler<HTMLTextAreaElement>;\n /**\n * Event handler called when the text inside of text input is selected\n */\n onSelect?: (event: SyntheticEvent<HTMLTextAreaElement>) => void;\n /**\n * If `true`, Textarea will be required\n */\n required?: boolean;\n /**\n * The test id of the textarea\n */\n 'data-test-id'?: string;\n placeholder?: string;\n readOnly?: boolean;\n resizable?: boolean;\n selectable?: boolean;\n /**\n * The current status of the input. It will trigger the corresponding icon to be appended to the Textarea.\n * @default 'default'\n */\n status?: Status;\n value?: string;\n};\n\nexport const TextareaRoot = (\n {\n 'data-test-id': dataTestId = 'fondue-textarea',\n autocomplete,\n autosize,\n children,\n clearable,\n decorator,\n defaultValue,\n disabled,\n extraActions,\n focusOnMount,\n minRows: rows = 1,\n maxRows,\n onEnterPressed,\n readOnly,\n resizable,\n selectable = true,\n status = 'default',\n value: inputValue,\n ...props\n }: TextareaProps,\n forwardedRef: ForwardedRef<HTMLTextAreaElement>,\n) => {\n const ref = useRef<HTMLTextAreaElement>(null);\n const wasClicked = useRef(false);\n\n useSyncRefs<HTMLTextAreaElement>(ref, forwardedRef);\n\n const [value, setValue] = useState(inputValue ?? defaultValue ?? '');\n\n const hasTools = extraActions?.length !== undefined || clearable || ['success', 'error'].includes(status);\n\n const clear = () => {\n setValue('');\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (event) => {\n if (event.key === 'Enter') {\n onEnterPressed?.(event);\n }\n props.onKeyDown?.(event);\n };\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setValue(inputValue ?? defaultValue ?? '');\n }, [defaultValue, inputValue]);\n\n useEffect(() => {\n if (focusOnMount) {\n ref.current?.focus();\n }\n }, [focusOnMount]);\n\n return (\n <div\n className={styles.root}\n data-autosize={autosize}\n data-clearable={clearable}\n data-disabled={disabled || readOnly}\n data-has-decorator={decorator ? true : false}\n data-has-tools={hasTools}\n data-resizable={resizable}\n data-status={status}\n data-max-rows={!!maxRows}\n data-test-id={dataTestId}\n style={{ '--max-rows': `${maxRows}` } as CSSProperties}\n >\n {decorator ? <div className={styles.decorator}>{decorator}</div> : null}\n <div className={styles.textareaWrapper} data-replicated-value={value}>\n <textarea\n {...props}\n onMouseDown={(mouseEvent) => {\n wasClicked.current = true;\n mouseEvent.currentTarget.dataset.showFocusRing = 'false';\n }}\n onFocus={(focusEvent) => {\n if (!wasClicked.current) {\n focusEvent.target.dataset.showFocusRing = 'true';\n }\n props.onFocus?.(focusEvent);\n }}\n onBlur={(blurEvent) => {\n blurEvent.target.dataset.showFocusRing = 'false';\n wasClicked.current = false;\n props.onBlur?.(blurEvent);\n }}\n autoComplete={autocomplete ? 'on' : 'off'}\n className={styles.textarea}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onInput={(event) => setValue(event.currentTarget.value)}\n onSelect={(event) => {\n if (!selectable) {\n event.currentTarget.selectionStart = event.currentTarget.selectionEnd;\n }\n }}\n readOnly={readOnly}\n ref={ref}\n rows={rows}\n value={value}\n ></textarea>\n </div>\n {status === 'loading' && <div className={styles.loadingStatus} data-test-id={`${dataTestId}-loader`} />}\n {hasTools && (\n <div className={styles.tools}>\n {status === 'success' && (\n <div className={styles.success}>\n <IconCheckMark size={20} />\n </div>\n )}\n {status === 'error' && (\n <div className={styles[status]}>\n <IconExclamationMarkTriangle size={20} />\n </div>\n )}\n {extraActions?.map(({ icon, title, callback }) => (\n <button\n className={styles.toolsButton}\n disabled={disabled || readOnly}\n key={title}\n onClick={callback}\n title={title}\n >\n {icon}\n </button>\n ))}\n {clearable && (\n <button className={styles.toolsButton} onClick={clear} disabled={disabled || readOnly}>\n <IconCross size={20} fill=\"currentColor\" />\n </button>\n )}\n </div>\n )}\n {children}\n </div>\n );\n};\nTextareaRoot.displayName = 'Textarea.Root';\n\nexport type TextareaSlotProps = {\n children: ReactNode;\n name?: 'left' | 'right';\n className?: string;\n};\n\nexport const TextareaSlot = (\n { name, className, ...slotProps }: TextareaSlotProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) => {\n return (\n <div\n data-slot\n data-name={name}\n {...slotProps}\n ref={forwardedRef}\n className={[styles.slot, className].filter(Boolean).join(' ')}\n />\n );\n};\n\nTextareaSlot.displayName = 'Textarea.Slot';\n\nconst ForwardedRefTextareaRoot = forwardRef<HTMLTextAreaElement, TextareaProps>(TextareaRoot);\nconst ForwardedRefTextareaSlot = forwardRef<HTMLDivElement, TextareaSlotProps>(TextareaSlot);\n\n// @ts-expect-error We support both single component (without slots) and compound components (with slots)\nexport const Textarea: typeof TextareaRoot & {\n Root: typeof ForwardedRefTextareaRoot;\n Slot: typeof ForwardedRefTextareaSlot;\n} = ForwardedRefTextareaRoot;\nTextarea.Root = ForwardedRefTextareaRoot;\nTextarea.Slot = ForwardedRefTextareaSlot;\n"],"names":["TextareaRoot","dataTestId","autocomplete","autosize","children","clearable","decorator","defaultValue","disabled","extraActions","focusOnMount","rows","maxRows","onEnterPressed","readOnly","resizable","selectable","status","inputValue","props","forwardedRef","ref","useRef","wasClicked","useSyncRefs","value","setValue","useState","hasTools","clear","handleKeyDown","event","_a","useEffect","jsxs","styles","jsx","mouseEvent","focusEvent","blurEvent","IconCheckMark","IconExclamationMarkTriangle","icon","title","callback","IconCross","TextareaSlot","name","className","slotProps","ForwardedRefTextareaRoot","forwardRef","ForwardedRefTextareaSlot","Textarea"],"mappings":"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"}
1
+ {"version":3,"file":"fondue-components38.js","sources":["../src/components/TextInput/TextInput.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCheckMark, IconExclamationMarkTriangle } from '@frontify/fondue-icons';\nimport {\n forwardRef,\n useRef,\n type ChangeEvent,\n type FocusEvent,\n type ForwardedRef,\n type KeyboardEvent,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\n\nimport { LoadingCircle } from '../LoadingCircle/LoadingCircle';\n\nimport styles from './styles/text.module.scss';\n\nexport type TextInputProps = {\n id?: string;\n name?: string;\n /**\n * The place where the input slots are placed\n */\n children?: ReactNode;\n /**\n * The default value of the text input\n * Used for uncontrolled components\n */\n defaultValue?: string | number;\n /**\n * The controlled value of the text input\n */\n value?: string | number;\n /**\n * Type of the text input\n * @default \"text\"\n */\n type?: 'email' | 'hidden' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'time' | 'url';\n /**\n * The placeholder in the text input\n */\n placeholder?: string;\n /**\n * Disable the text input\n * @default false\n */\n disabled?: boolean;\n /**\n * Make the text input required in form\n * @default false\n */\n required?: boolean;\n /**\n * Make the text input spell-checkable\n * @default true\n */\n spellCheck?: boolean;\n /**\n * Make the text input read-only\n * @default false\n */\n readOnly?: boolean;\n /**\n * Set the type of input so autocomplete can help the user\n * @default \"on\"\n */\n autoComplete?: string;\n /**\n * The maximum length of the text input\n */\n maxLength?: number;\n /**\n * Status of the text input\n * @default \"neutral\"\n */\n status?: 'neutral' | 'success' | 'error' | 'loading';\n className?: string;\n /**\n * Event handler called when the text input value changes\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the text input is blurred\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the text input is focused\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when a key is pressed\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when a key is released\n */\n onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Event handler called when the text inside of text input is selected\n */\n onSelect?: (event: SyntheticEvent<HTMLInputElement>) => void;\n 'data-test-id'?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-errormessage'?: string;\n};\n\nexport const TextFieldRoot = (\n {\n children,\n className,\n status = 'neutral',\n 'data-test-id': dataTestId = 'fondue-text-input',\n 'aria-errormessage': ariaErrormessage,\n placeholder,\n ...inputProps\n }: TextInputProps,\n ref: ForwardedRef<HTMLInputElement>,\n) => {\n const wasClicked = useRef(false);\n\n return (\n <div\n className={[styles.root, className].filter(Boolean).join(' ')}\n data-status={status}\n data-test-id={dataTestId}\n >\n {status === 'loading' ? (\n <div className={styles.loadingStatus} data-test-id={`${dataTestId}-loader`}>\n <LoadingCircle size=\"xx-small\" />\n </div>\n ) : null}\n <div className={styles.inputWrapper}>\n {placeholder && <div className={styles.placeholder}>{placeholder}</div>}\n <input\n onMouseDown={(mouseEvent) => {\n wasClicked.current = true;\n mouseEvent.currentTarget.dataset.showFocusRing = 'false';\n }}\n type=\"text\"\n placeholder={placeholder}\n {...inputProps}\n onFocus={(focusEvent) => {\n if (!wasClicked.current) {\n focusEvent.target.dataset.showFocusRing = 'true';\n }\n inputProps.onFocus?.(focusEvent);\n }}\n onBlur={(blurEvent) => {\n blurEvent.target.dataset.showFocusRing = 'false';\n wasClicked.current = false;\n inputProps.onBlur?.(blurEvent);\n }}\n ref={ref}\n className={styles.input}\n aria-invalid={status === 'error'}\n aria-errormessage={status === 'error' ? ariaErrormessage : undefined}\n />\n </div>\n\n {status === 'success' ? (\n <IconCheckMark size={16} className={styles.iconSuccess} data-test-id={`${dataTestId}-success-icon`} />\n ) : null}\n\n {status === 'error' ? (\n <IconExclamationMarkTriangle\n size={16}\n className={styles.iconError}\n data-test-id={`${dataTestId}-error-icon`}\n />\n ) : null}\n\n {children}\n </div>\n );\n};\nTextFieldRoot.displayName = 'TextField.Root';\n\nexport type TextFieldSlotProps = {\n children: ReactNode;\n name?: 'left' | 'right';\n className?: string;\n};\n\nexport const TextFieldSlot = (\n { name, className, ...slotProps }: TextFieldSlotProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) => {\n return (\n <div\n data-slot\n data-name={name}\n data-label-ignore-disabled=\"true\"\n {...slotProps}\n ref={forwardedRef}\n className={[styles.slot, className].filter(Boolean).join(' ')}\n />\n );\n};\n\nTextFieldSlot.displayName = 'TextField.Slot';\n\nconst ForwardedRefTextFieldRoot = forwardRef<HTMLInputElement, TextInputProps>(TextFieldRoot);\nconst ForwardedRefTextFieldSlot = forwardRef<HTMLDivElement, TextFieldSlotProps>(TextFieldSlot);\n// @ts-expect-error We support both single component (without slots) and compound components (with slots)\nexport const TextInput: typeof TextFieldRoot & {\n Root: typeof ForwardedRefTextFieldRoot;\n Slot: typeof ForwardedRefTextFieldSlot;\n} = ForwardedRefTextFieldRoot;\nTextInput.Root = ForwardedRefTextFieldRoot;\nTextInput.Slot = ForwardedRefTextFieldSlot;\n"],"names":["TextFieldRoot","children","className","status","dataTestId","ariaErrormessage","placeholder","inputProps","ref","wasClicked","useRef","jsxs","styles","jsx","LoadingCircle","mouseEvent","focusEvent","_a","blurEvent","IconCheckMark","IconExclamationMarkTriangle","TextFieldSlot","name","slotProps","forwardedRef","ForwardedRefTextFieldRoot","forwardRef","ForwardedRefTextFieldSlot","TextInput"],"mappings":";;;;;AA6GO,MAAMA,IAAgB,CACzB;AAAA,EACI,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,gBAAgBC,IAAa;AAAA,EAC7B,qBAAqBC;AAAA,EACrB,aAAAC;AAAA,EACA,GAAGC;AACP,GACAC,MACC;AACD,QAAMC,IAAaC,EAAO,EAAK;AAE/B,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAW,CAACC,EAAO,MAAMV,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAC5D,eAAaC;AAAA,MACb,gBAAcC;AAAA,MAEb,UAAA;AAAA,QAAAD,MAAW,YACR,gBAAAU,EAAC,OAAA,EAAI,WAAWD,EAAO,eAAe,gBAAc,GAAGR,CAAU,WAC7D,UAAA,gBAAAS,EAACC,GAAA,EAAc,MAAK,WAAA,CAAW,GACnC,IACA;AAAA,QACJ,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAO,cAClB,UAAA;AAAA,UAAAN,KAAe,gBAAAO,EAAC,OAAA,EAAI,WAAWD,EAAO,aAAc,UAAAN,GAAY;AAAA,UACjE,gBAAAO;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,aAAa,CAACE,MAAe;AACzB,gBAAAN,EAAW,UAAU,IACrBM,EAAW,cAAc,QAAQ,gBAAgB;AAAA,cACrD;AAAA,cACA,MAAK;AAAA,cACL,aAAAT;AAAA,cACC,GAAGC;AAAA,cACJ,SAAS,CAACS,MAAe;;AACrB,gBAAKP,EAAW,YACZO,EAAW,OAAO,QAAQ,gBAAgB,UAE9CC,IAAAV,EAAW,YAAX,QAAAU,EAAA,KAAAV,GAAqBS;AAAA,cACzB;AAAA,cACA,QAAQ,CAACE,MAAc;;AACnB,gBAAAA,EAAU,OAAO,QAAQ,gBAAgB,SACzCT,EAAW,UAAU,KACrBQ,IAAAV,EAAW,WAAX,QAAAU,EAAA,KAAAV,GAAoBW;AAAA,cACxB;AAAA,cACA,KAAAV;AAAA,cACA,WAAWI,EAAO;AAAA,cAClB,gBAAcT,MAAW;AAAA,cACzB,qBAAmBA,MAAW,UAAUE,IAAmB;AAAA,YAAA;AAAA,UAAA;AAAA,QAC/D,GACJ;AAAA,QAECF,MAAW,YACR,gBAAAU,EAACM,GAAA,EAAc,MAAM,IAAI,WAAWP,EAAO,aAAa,gBAAc,GAAGR,CAAU,iBAAiB,IACpG;AAAA,QAEHD,MAAW,UACR,gBAAAU;AAAA,UAACO;AAAA,UAAA;AAAA,YACG,MAAM;AAAA,YACN,WAAWR,EAAO;AAAA,YAClB,gBAAc,GAAGR,CAAU;AAAA,UAAA;AAAA,QAAA,IAE/B;AAAA,QAEHH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGb;AACAD,EAAc,cAAc;AAQrB,MAAMqB,IAAgB,CACzB,EAAE,MAAAC,GAAM,WAAApB,GAAW,GAAGqB,EAAA,GACtBC,MAGI,gBAAAX;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,aAAS;AAAA,IACT,aAAWS;AAAA,IACX,8BAA2B;AAAA,IAC1B,GAAGC;AAAA,IACJ,KAAKC;AAAA,IACL,WAAW,CAACZ,EAAO,MAAMV,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAAA;AAAA;AAKxEmB,EAAc,cAAc;AAE5B,MAAMI,IAA4BC,EAA6C1B,CAAa,GACtF2B,IAA4BD,EAA+CL,CAAa,GAEjFO,IAGTH;AACJG,EAAU,OAAOH;AACjBG,EAAU,OAAOD;"}
@@ -1,40 +1,127 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import d from "./fondue-components108.js";
3
- import { Slot as p } from "@radix-ui/react-slot";
4
- import { createContext as u, useContext as a, useMemo as x } from "react";
5
- import { enUS as s } from "./fondue-components109.js";
6
- const r = u({
7
- theme: "light",
8
- dir: "ltr",
9
- translations: s
10
- });
11
- r.displayName = "ThemeContext";
12
- const g = () => {
13
- const e = a(r);
14
- return {
15
- ...e,
16
- dir: e.dir || "ltr"
1
+ import { jsxs as F, jsx as e } from "react/jsx-runtime";
2
+ import { IconCheckMark as J, IconExclamationMarkTriangle as L, IconCross as Q } from "@frontify/fondue-icons";
3
+ import { forwardRef as B, useRef as y, useState as U, useEffect as z } from "react";
4
+ import { useSyncRefs as X } from "./fondue-components59.js";
5
+ import o from "./fondue-components112.js";
6
+ const D = ({
7
+ "data-test-id": c = "fondue-textarea",
8
+ autocomplete: i,
9
+ autosize: u,
10
+ children: m,
11
+ clearable: f,
12
+ decorator: h,
13
+ defaultValue: g,
14
+ disabled: n,
15
+ extraActions: r,
16
+ focusOnMount: v,
17
+ minRows: M = 1,
18
+ maxRows: k,
19
+ onEnterPressed: w,
20
+ readOnly: d,
21
+ resizable: $,
22
+ selectable: b = !0,
23
+ status: s = "default",
24
+ value: N,
25
+ ...l
26
+ }, W) => {
27
+ const R = y(null), T = y(!1);
28
+ X(R, W);
29
+ const [x, S] = U(N ?? g ?? ""), C = (r == null ? void 0 : r.length) !== void 0 || f || ["success", "error"].includes(s), q = () => {
30
+ S("");
31
+ }, G = (a) => {
32
+ var t;
33
+ a.key === "Enter" && (w == null || w(a)), (t = l.onKeyDown) == null || t.call(l, a);
17
34
  };
18
- }, y = ({
19
- children: e,
20
- theme: t = "light",
21
- dir: o = "ltr",
22
- translations: m = s,
23
- asChild: i = !1
24
- }) => {
25
- const l = i ? p : "div", c = x(
26
- () => ({
27
- theme: t,
28
- dir: o,
29
- translations: m
30
- }),
31
- [o, t, m]
35
+ return z(() => {
36
+ S(N ?? g ?? "");
37
+ }, [g, N]), z(() => {
38
+ var a;
39
+ v && ((a = R.current) == null || a.focus());
40
+ }, [v]), /* @__PURE__ */ F(
41
+ "div",
42
+ {
43
+ className: o.root,
44
+ "data-autosize": u,
45
+ "data-clearable": f,
46
+ "data-disabled": n || d,
47
+ "data-has-decorator": !!h,
48
+ "data-has-tools": C,
49
+ "data-resizable": $,
50
+ "data-status": s,
51
+ "data-max-rows": !!k,
52
+ "data-test-id": c,
53
+ style: { "--max-rows": `${k}` },
54
+ children: [
55
+ h ? /* @__PURE__ */ e("div", { className: o.decorator, children: h }) : null,
56
+ /* @__PURE__ */ e("div", { className: o.textareaWrapper, "data-replicated-value": x, children: /* @__PURE__ */ e(
57
+ "textarea",
58
+ {
59
+ ...l,
60
+ onMouseDown: (a) => {
61
+ T.current = !0, a.currentTarget.dataset.showFocusRing = "false";
62
+ },
63
+ onFocus: (a) => {
64
+ var t;
65
+ T.current || (a.target.dataset.showFocusRing = "true"), (t = l.onFocus) == null || t.call(l, a);
66
+ },
67
+ onBlur: (a) => {
68
+ var t;
69
+ a.target.dataset.showFocusRing = "false", T.current = !1, (t = l.onBlur) == null || t.call(l, a);
70
+ },
71
+ autoComplete: i ? "on" : "off",
72
+ className: o.textarea,
73
+ disabled: n,
74
+ onKeyDown: G,
75
+ onInput: (a) => S(a.currentTarget.value),
76
+ onSelect: (a) => {
77
+ b || (a.currentTarget.selectionStart = a.currentTarget.selectionEnd);
78
+ },
79
+ readOnly: d,
80
+ ref: R,
81
+ rows: M,
82
+ value: x
83
+ }
84
+ ) }),
85
+ s === "loading" && /* @__PURE__ */ e("div", { className: o.loadingStatus, "data-test-id": `${c}-loader` }),
86
+ C && /* @__PURE__ */ F("div", { className: o.tools, children: [
87
+ s === "success" && /* @__PURE__ */ e("div", { className: o.success, children: /* @__PURE__ */ e(J, { size: 20 }) }),
88
+ s === "error" && /* @__PURE__ */ e("div", { className: o[s], children: /* @__PURE__ */ e(L, { size: 20 }) }),
89
+ r == null ? void 0 : r.map(({ icon: a, title: t, callback: H }) => /* @__PURE__ */ e(
90
+ "button",
91
+ {
92
+ className: o.toolsButton,
93
+ disabled: n || d,
94
+ onClick: H,
95
+ title: t,
96
+ children: a
97
+ },
98
+ t
99
+ )),
100
+ f && /* @__PURE__ */ e("button", { className: o.toolsButton, onClick: q, disabled: n || d, children: /* @__PURE__ */ e(Q, { size: 20, fill: "currentColor" }) })
101
+ ] }),
102
+ m
103
+ ]
104
+ }
32
105
  );
33
- return /* @__PURE__ */ n(r.Provider, { value: c, children: /* @__PURE__ */ n(l, { dir: o, className: `${d[t]} fondue-theme-provider`, children: e }) });
34
106
  };
107
+ D.displayName = "Textarea.Root";
108
+ const j = ({ name: c, className: i, ...u }, m) => /* @__PURE__ */ e(
109
+ "div",
110
+ {
111
+ "data-slot": !0,
112
+ "data-name": c,
113
+ ...u,
114
+ ref: m,
115
+ className: [o.slot, i].filter(Boolean).join(" ")
116
+ }
117
+ );
118
+ j.displayName = "Textarea.Slot";
119
+ const I = B(D), Y = B(j), K = I;
120
+ K.Root = I;
121
+ K.Slot = Y;
35
122
  export {
36
- r as ThemeContext,
37
- y as ThemeProvider,
38
- g as useFondueTheme
123
+ K as Textarea,
124
+ D as TextareaRoot,
125
+ j as TextareaSlot
39
126
  };
40
127
  //# sourceMappingURL=fondue-components39.js.map