@exem-ui/react 0.1.0-next.bf3c711

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 (274) hide show
  1. package/README.en.md +141 -0
  2. package/README.md +141 -0
  3. package/dist/Button-CMenVfb7.d.mts +35 -0
  4. package/dist/Button-CMenVfb7.d.ts +35 -0
  5. package/dist/Select-DMvWV_rF.d.mts +94 -0
  6. package/dist/Select-DMvWV_rF.d.ts +94 -0
  7. package/dist/avatar/index.d.mts +37 -0
  8. package/dist/avatar/index.d.ts +37 -0
  9. package/dist/avatar/index.js +13 -0
  10. package/dist/avatar/index.js.map +1 -0
  11. package/dist/avatar/index.mjs +4 -0
  12. package/dist/avatar/index.mjs.map +1 -0
  13. package/dist/badge/index.d.mts +29 -0
  14. package/dist/badge/index.d.ts +29 -0
  15. package/dist/badge/index.js +12 -0
  16. package/dist/badge/index.js.map +1 -0
  17. package/dist/badge/index.mjs +3 -0
  18. package/dist/badge/index.mjs.map +1 -0
  19. package/dist/breadcrumb/index.d.mts +43 -0
  20. package/dist/breadcrumb/index.d.ts +43 -0
  21. package/dist/breadcrumb/index.js +13 -0
  22. package/dist/breadcrumb/index.js.map +1 -0
  23. package/dist/breadcrumb/index.mjs +4 -0
  24. package/dist/breadcrumb/index.mjs.map +1 -0
  25. package/dist/button/index.d.mts +9 -0
  26. package/dist/button/index.d.ts +9 -0
  27. package/dist/button/index.js +29 -0
  28. package/dist/button/index.js.map +1 -0
  29. package/dist/button/index.mjs +12 -0
  30. package/dist/button/index.mjs.map +1 -0
  31. package/dist/checkbox/index.d.mts +54 -0
  32. package/dist/checkbox/index.d.ts +54 -0
  33. package/dist/checkbox/index.js +13 -0
  34. package/dist/checkbox/index.js.map +1 -0
  35. package/dist/checkbox/index.mjs +4 -0
  36. package/dist/checkbox/index.mjs.map +1 -0
  37. package/dist/chunk-34QIGWCT.mjs +10 -0
  38. package/dist/chunk-34QIGWCT.mjs.map +1 -0
  39. package/dist/chunk-3FPMWAQT.js +30 -0
  40. package/dist/chunk-3FPMWAQT.js.map +1 -0
  41. package/dist/chunk-3HMT3DQV.js +104 -0
  42. package/dist/chunk-3HMT3DQV.js.map +1 -0
  43. package/dist/chunk-4WAO7CUT.mjs +95 -0
  44. package/dist/chunk-4WAO7CUT.mjs.map +1 -0
  45. package/dist/chunk-5M47B2XJ.js +4096 -0
  46. package/dist/chunk-5M47B2XJ.js.map +1 -0
  47. package/dist/chunk-5QX4TO4F.js +61 -0
  48. package/dist/chunk-5QX4TO4F.js.map +1 -0
  49. package/dist/chunk-5TEFN2CW.js +97 -0
  50. package/dist/chunk-5TEFN2CW.js.map +1 -0
  51. package/dist/chunk-5TES5PG6.js +41 -0
  52. package/dist/chunk-5TES5PG6.js.map +1 -0
  53. package/dist/chunk-5TVMECVF.js +148 -0
  54. package/dist/chunk-5TVMECVF.js.map +1 -0
  55. package/dist/chunk-5WGNZX7Z.mjs +27 -0
  56. package/dist/chunk-5WGNZX7Z.mjs.map +1 -0
  57. package/dist/chunk-AQ3OIM2T.js +103 -0
  58. package/dist/chunk-AQ3OIM2T.js.map +1 -0
  59. package/dist/chunk-AU5NTBK3.js +361 -0
  60. package/dist/chunk-AU5NTBK3.js.map +1 -0
  61. package/dist/chunk-DJHGCJR4.mjs +224 -0
  62. package/dist/chunk-DJHGCJR4.mjs.map +1 -0
  63. package/dist/chunk-DPUTW5KD.mjs +74 -0
  64. package/dist/chunk-DPUTW5KD.mjs.map +1 -0
  65. package/dist/chunk-E53FHDVN.mjs +336 -0
  66. package/dist/chunk-E53FHDVN.mjs.map +1 -0
  67. package/dist/chunk-ECRQD7UU.js +82 -0
  68. package/dist/chunk-ECRQD7UU.js.map +1 -0
  69. package/dist/chunk-FB4ESGOX.mjs +59 -0
  70. package/dist/chunk-FB4ESGOX.mjs.map +1 -0
  71. package/dist/chunk-FDX4IQK5.js +76 -0
  72. package/dist/chunk-FDX4IQK5.js.map +1 -0
  73. package/dist/chunk-FOMIUDRM.js +96 -0
  74. package/dist/chunk-FOMIUDRM.js.map +1 -0
  75. package/dist/chunk-FR5F3VTU.js +139 -0
  76. package/dist/chunk-FR5F3VTU.js.map +1 -0
  77. package/dist/chunk-GW53LH3I.mjs +81 -0
  78. package/dist/chunk-GW53LH3I.mjs.map +1 -0
  79. package/dist/chunk-GXMRIT5E.mjs +94 -0
  80. package/dist/chunk-GXMRIT5E.mjs.map +1 -0
  81. package/dist/chunk-IANSI7F7.mjs +393 -0
  82. package/dist/chunk-IANSI7F7.mjs.map +1 -0
  83. package/dist/chunk-IDM6MZHF.js +415 -0
  84. package/dist/chunk-IDM6MZHF.js.map +1 -0
  85. package/dist/chunk-J5ZYQ3TP.js +104 -0
  86. package/dist/chunk-J5ZYQ3TP.js.map +1 -0
  87. package/dist/chunk-KPAUBWZA.mjs +39 -0
  88. package/dist/chunk-KPAUBWZA.mjs.map +1 -0
  89. package/dist/chunk-L7P2NDST.mjs +124 -0
  90. package/dist/chunk-L7P2NDST.mjs.map +1 -0
  91. package/dist/chunk-LZWKMQJL.mjs +3886 -0
  92. package/dist/chunk-LZWKMQJL.mjs.map +1 -0
  93. package/dist/chunk-M6OWN7QH.js +118 -0
  94. package/dist/chunk-M6OWN7QH.js.map +1 -0
  95. package/dist/chunk-MQVHREEI.js +448 -0
  96. package/dist/chunk-MQVHREEI.js.map +1 -0
  97. package/dist/chunk-MT47ECUN.js +127 -0
  98. package/dist/chunk-MT47ECUN.js.map +1 -0
  99. package/dist/chunk-N6U54JI4.mjs +126 -0
  100. package/dist/chunk-N6U54JI4.mjs.map +1 -0
  101. package/dist/chunk-NDG4LR3Q.js +139 -0
  102. package/dist/chunk-NDG4LR3Q.js.map +1 -0
  103. package/dist/chunk-PPD4BU4W.mjs +80 -0
  104. package/dist/chunk-PPD4BU4W.mjs.map +1 -0
  105. package/dist/chunk-PU5NO5EZ.js +4 -0
  106. package/dist/chunk-PU5NO5EZ.js.map +1 -0
  107. package/dist/chunk-Q442ZDTI.mjs +117 -0
  108. package/dist/chunk-Q442ZDTI.mjs.map +1 -0
  109. package/dist/chunk-QH23RO3C.mjs +137 -0
  110. package/dist/chunk-QH23RO3C.mjs.map +1 -0
  111. package/dist/chunk-REBHUF4L.js +226 -0
  112. package/dist/chunk-REBHUF4L.js.map +1 -0
  113. package/dist/chunk-RGB3QLQT.js +275 -0
  114. package/dist/chunk-RGB3QLQT.js.map +1 -0
  115. package/dist/chunk-T7U2QRLC.js +94 -0
  116. package/dist/chunk-T7U2QRLC.js.map +1 -0
  117. package/dist/chunk-TEHHJ3CS.mjs +73 -0
  118. package/dist/chunk-TEHHJ3CS.mjs.map +1 -0
  119. package/dist/chunk-TJY4MIBC.js +117 -0
  120. package/dist/chunk-TJY4MIBC.js.map +1 -0
  121. package/dist/chunk-VCMZQOQM.mjs +102 -0
  122. package/dist/chunk-VCMZQOQM.mjs.map +1 -0
  123. package/dist/chunk-VKN4H4WI.mjs +3 -0
  124. package/dist/chunk-VKN4H4WI.mjs.map +1 -0
  125. package/dist/chunk-VSB25XTY.js +12 -0
  126. package/dist/chunk-VSB25XTY.js.map +1 -0
  127. package/dist/chunk-VWTE74UT.mjs +96 -0
  128. package/dist/chunk-VWTE74UT.mjs.map +1 -0
  129. package/dist/chunk-WBTL7PBV.js +105 -0
  130. package/dist/chunk-WBTL7PBV.js.map +1 -0
  131. package/dist/chunk-WOK3EP3O.js +83 -0
  132. package/dist/chunk-WOK3EP3O.js.map +1 -0
  133. package/dist/chunk-WWT73GGM.mjs +83 -0
  134. package/dist/chunk-WWT73GGM.mjs.map +1 -0
  135. package/dist/chunk-XBDXTRK3.mjs +102 -0
  136. package/dist/chunk-XBDXTRK3.mjs.map +1 -0
  137. package/dist/chunk-YGBEKZWU.mjs +81 -0
  138. package/dist/chunk-YGBEKZWU.mjs.map +1 -0
  139. package/dist/chunk-YVFLRPFV.mjs +72 -0
  140. package/dist/chunk-YVFLRPFV.mjs.map +1 -0
  141. package/dist/chunk-ZMVBIQ2Z.mjs +253 -0
  142. package/dist/chunk-ZMVBIQ2Z.mjs.map +1 -0
  143. package/dist/chunk-ZWCMSHDP.mjs +425 -0
  144. package/dist/chunk-ZWCMSHDP.mjs.map +1 -0
  145. package/dist/flat/index.d.mts +13 -0
  146. package/dist/flat/index.d.ts +13 -0
  147. package/dist/flat/index.js +31 -0
  148. package/dist/flat/index.js.map +1 -0
  149. package/dist/flat/index.mjs +10 -0
  150. package/dist/flat/index.mjs.map +1 -0
  151. package/dist/flat/segment.d.mts +39 -0
  152. package/dist/flat/segment.d.ts +39 -0
  153. package/dist/flat/segment.js +13 -0
  154. package/dist/flat/segment.js.map +1 -0
  155. package/dist/flat/segment.mjs +4 -0
  156. package/dist/flat/segment.mjs.map +1 -0
  157. package/dist/flat/select.d.mts +58 -0
  158. package/dist/flat/select.d.ts +58 -0
  159. package/dist/flat/select.js +14 -0
  160. package/dist/flat/select.js.map +1 -0
  161. package/dist/flat/select.mjs +5 -0
  162. package/dist/flat/select.mjs.map +1 -0
  163. package/dist/flat/tooltip.d.mts +98 -0
  164. package/dist/flat/tooltip.d.ts +98 -0
  165. package/dist/flat/tooltip.js +17 -0
  166. package/dist/flat/tooltip.js.map +1 -0
  167. package/dist/flat/tooltip.mjs +4 -0
  168. package/dist/flat/tooltip.mjs.map +1 -0
  169. package/dist/icon/index.d.mts +1258 -0
  170. package/dist/icon/index.d.ts +1258 -0
  171. package/dist/icon/index.js +1672 -0
  172. package/dist/icon/index.js.map +1 -0
  173. package/dist/icon/index.mjs +3 -0
  174. package/dist/icon/index.mjs.map +1 -0
  175. package/dist/index-CXip5Wb1.d.mts +62 -0
  176. package/dist/index-Drz3P-6Y.d.ts +62 -0
  177. package/dist/index.d.mts +37 -0
  178. package/dist/index.d.ts +37 -0
  179. package/dist/index.js +150 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/index.mjs +29 -0
  182. package/dist/index.mjs.map +1 -0
  183. package/dist/input/index.d.mts +82 -0
  184. package/dist/input/index.d.ts +82 -0
  185. package/dist/input/index.js +22 -0
  186. package/dist/input/index.js.map +1 -0
  187. package/dist/input/index.mjs +5 -0
  188. package/dist/input/index.mjs.map +1 -0
  189. package/dist/loading/index.d.mts +54 -0
  190. package/dist/loading/index.d.ts +54 -0
  191. package/dist/loading/index.js +12 -0
  192. package/dist/loading/index.js.map +1 -0
  193. package/dist/loading/index.mjs +3 -0
  194. package/dist/loading/index.mjs.map +1 -0
  195. package/dist/messageBox/index.d.mts +33 -0
  196. package/dist/messageBox/index.d.ts +33 -0
  197. package/dist/messageBox/index.js +13 -0
  198. package/dist/messageBox/index.js.map +1 -0
  199. package/dist/messageBox/index.mjs +4 -0
  200. package/dist/messageBox/index.mjs.map +1 -0
  201. package/dist/modal/index.d.mts +97 -0
  202. package/dist/modal/index.d.ts +97 -0
  203. package/dist/modal/index.js +15 -0
  204. package/dist/modal/index.js.map +1 -0
  205. package/dist/modal/index.mjs +6 -0
  206. package/dist/modal/index.mjs.map +1 -0
  207. package/dist/picker/index.d.mts +12 -0
  208. package/dist/picker/index.d.ts +12 -0
  209. package/dist/picker/index.js +13 -0
  210. package/dist/picker/index.js.map +1 -0
  211. package/dist/picker/index.mjs +4 -0
  212. package/dist/picker/index.mjs.map +1 -0
  213. package/dist/progress/index.d.mts +36 -0
  214. package/dist/progress/index.d.ts +36 -0
  215. package/dist/progress/index.js +12 -0
  216. package/dist/progress/index.js.map +1 -0
  217. package/dist/progress/index.mjs +3 -0
  218. package/dist/progress/index.mjs.map +1 -0
  219. package/dist/radio/index.d.mts +39 -0
  220. package/dist/radio/index.d.ts +39 -0
  221. package/dist/radio/index.js +12 -0
  222. package/dist/radio/index.js.map +1 -0
  223. package/dist/radio/index.mjs +3 -0
  224. package/dist/radio/index.mjs.map +1 -0
  225. package/dist/scrollArea/index.d.mts +31 -0
  226. package/dist/scrollArea/index.d.ts +31 -0
  227. package/dist/scrollArea/index.js +16 -0
  228. package/dist/scrollArea/index.js.map +1 -0
  229. package/dist/scrollArea/index.mjs +3 -0
  230. package/dist/scrollArea/index.mjs.map +1 -0
  231. package/dist/segment/index.d.mts +46 -0
  232. package/dist/segment/index.d.ts +46 -0
  233. package/dist/segment/index.js +12 -0
  234. package/dist/segment/index.js.map +1 -0
  235. package/dist/segment/index.mjs +3 -0
  236. package/dist/segment/index.mjs.map +1 -0
  237. package/dist/star/index.d.mts +30 -0
  238. package/dist/star/index.d.ts +30 -0
  239. package/dist/star/index.js +12 -0
  240. package/dist/star/index.js.map +1 -0
  241. package/dist/star/index.mjs +3 -0
  242. package/dist/star/index.mjs.map +1 -0
  243. package/dist/switch/index.d.mts +32 -0
  244. package/dist/switch/index.d.ts +32 -0
  245. package/dist/switch/index.js +12 -0
  246. package/dist/switch/index.js.map +1 -0
  247. package/dist/switch/index.mjs +3 -0
  248. package/dist/switch/index.mjs.map +1 -0
  249. package/dist/tabs/index.d.mts +52 -0
  250. package/dist/tabs/index.d.ts +52 -0
  251. package/dist/tabs/index.js +12 -0
  252. package/dist/tabs/index.js.map +1 -0
  253. package/dist/tabs/index.mjs +3 -0
  254. package/dist/tabs/index.mjs.map +1 -0
  255. package/dist/tag/index.d.mts +68 -0
  256. package/dist/tag/index.d.ts +68 -0
  257. package/dist/tag/index.js +17 -0
  258. package/dist/tag/index.js.map +1 -0
  259. package/dist/tag/index.mjs +4 -0
  260. package/dist/tag/index.mjs.map +1 -0
  261. package/dist/toast/index.d.mts +175 -0
  262. package/dist/toast/index.d.ts +175 -0
  263. package/dist/toast/index.js +25 -0
  264. package/dist/toast/index.js.map +1 -0
  265. package/dist/toast/index.mjs +4 -0
  266. package/dist/toast/index.mjs.map +1 -0
  267. package/dist/tooltip/index.d.mts +26 -0
  268. package/dist/tooltip/index.d.ts +26 -0
  269. package/dist/tooltip/index.js +12 -0
  270. package/dist/tooltip/index.js.map +1 -0
  271. package/dist/tooltip/index.mjs +3 -0
  272. package/dist/tooltip/index.mjs.map +1 -0
  273. package/package.json +251 -0
  274. package/styles.css +20 -0
@@ -0,0 +1,393 @@
1
+ import { commonInputVariants } from './chunk-ZWCMSHDP.mjs';
2
+ import { cva, cn } from '@exem-ui/core/utils';
3
+ import * as React from 'react';
4
+ import { createContext, useId, forwardRef, useContext } from 'react';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ var TextAreaContext = createContext(null);
8
+ var useTextAreaContext = () => {
9
+ const context = useContext(TextAreaContext);
10
+ if (!context) {
11
+ throw new Error("TextArea components must be used within a TextArea");
12
+ }
13
+ return context;
14
+ };
15
+ var textAreaVariants = {
16
+ container: commonInputVariants.container,
17
+ label: commonInputVariants.label,
18
+ field: cva(
19
+ "scrollbar-overlay block w-full resize-none rounded-medium border transition-colors focus:outline-none",
20
+ {
21
+ variants: {
22
+ variant: {
23
+ fill: "border-transparent bg-elevation-elevation-2",
24
+ line: "border-border-primary"
25
+ },
26
+ size: {
27
+ xsmall: "min-h-[60px] px-1.5 py-[3.5px] text-body-3",
28
+ small: "min-h-[80px] px-2 py-1 text-body-2",
29
+ medium: "min-h-[100px] px-2.5 py-1.5 text-body-2",
30
+ large: "min-h-[120px] px-3 py-[9px] text-body-1"
31
+ },
32
+ state: {
33
+ default: "text-text-primary placeholder:text-text-tertiary",
34
+ focused: "text-text-primary placeholder:text-text-tertiary",
35
+ error: "text-text-primary placeholder:text-text-tertiary",
36
+ disabled: "cursor-not-allowed text-text-disabled placeholder:text-text-disabled"
37
+ }
38
+ },
39
+ compoundVariants: [
40
+ { variant: "fill", state: "focused", class: "border-border-focused" },
41
+ { variant: "fill", state: "error", class: "border-border-critical" },
42
+ {
43
+ variant: "fill",
44
+ state: "disabled",
45
+ class: "bg-elevation-elevation-2 border-transparent"
46
+ },
47
+ { variant: "line", state: "focused", class: "border-border-focused" },
48
+ { variant: "line", state: "error", class: "border-border-critical" },
49
+ { variant: "line", state: "disabled", class: "border-border-primary" }
50
+ ],
51
+ defaultVariants: { variant: "fill", size: "medium", state: "default" }
52
+ }
53
+ ),
54
+ descriptionContainer: cva("flex flex-row items-center justify-between", {
55
+ variants: {
56
+ size: {
57
+ xsmall: "gap-0.5 text-caption",
58
+ small: "gap-1 text-body-3",
59
+ medium: "gap-1 text-body-3",
60
+ large: "gap-1 text-body-2"
61
+ }
62
+ },
63
+ defaultVariants: { size: "medium" }
64
+ }),
65
+ description: commonInputVariants.description,
66
+ counter: cva("text-nowrap font-regular", {
67
+ variants: {
68
+ disabled: {
69
+ true: "text-gray-04",
70
+ false: "text-text-tertiary"
71
+ }
72
+ },
73
+ defaultVariants: { disabled: false }
74
+ })
75
+ };
76
+ var TextArea = React.forwardRef(
77
+ ({
78
+ children,
79
+ variant = "fill",
80
+ size = "medium",
81
+ error = false,
82
+ disabled = false,
83
+ value = "",
84
+ maxLength,
85
+ className,
86
+ ...textAreaProps
87
+ }, ref) => {
88
+ const uniqueId = useId();
89
+ const id = `text-area-${uniqueId}`;
90
+ const { onChange, ...restTextAreaProps } = textAreaProps;
91
+ return /* @__PURE__ */ jsx(
92
+ TextAreaContext.Provider,
93
+ {
94
+ value: { variant, size, error, disabled, id, value, maxLength, onChange },
95
+ children: /* @__PURE__ */ jsx("div", { ref, className: cn(textAreaVariants.container, className), children: children || /* @__PURE__ */ jsx(TextArea.Field, { ...restTextAreaProps }) })
96
+ }
97
+ );
98
+ }
99
+ );
100
+ TextArea.Label = React.forwardRef(
101
+ ({ children, required = false, className }, ref) => {
102
+ const { size, disabled, id } = useTextAreaContext();
103
+ return /* @__PURE__ */ jsx(
104
+ "label",
105
+ {
106
+ ref,
107
+ htmlFor: id,
108
+ className: cn(textAreaVariants.label({ size, disabled, required }), className),
109
+ children
110
+ }
111
+ );
112
+ }
113
+ );
114
+ TextArea.Field = React.forwardRef(
115
+ ({ className, onFocus, onBlur, ...props }, ref) => {
116
+ const {
117
+ variant,
118
+ size,
119
+ error,
120
+ disabled,
121
+ id,
122
+ maxLength,
123
+ value: contextValue,
124
+ onChange: contextOnChange
125
+ } = useTextAreaContext();
126
+ const [focused, setFocused] = React.useState(false);
127
+ const handleFocus = (e) => {
128
+ setFocused(true);
129
+ onFocus?.(e);
130
+ };
131
+ const handleBlur = (e) => {
132
+ setFocused(false);
133
+ onBlur?.(e);
134
+ };
135
+ const state = disabled ? "disabled" : error ? "error" : focused ? "focused" : "default";
136
+ const isControlled = contextValue !== void 0;
137
+ return /* @__PURE__ */ jsx(
138
+ "textarea",
139
+ {
140
+ ref,
141
+ id,
142
+ disabled,
143
+ maxLength,
144
+ className: cn(textAreaVariants.field({ variant, size, state }), className),
145
+ onFocus: handleFocus,
146
+ onBlur: handleBlur,
147
+ onChange: (e) => {
148
+ contextOnChange?.(e);
149
+ },
150
+ ...isControlled ? { value: contextValue } : {},
151
+ ...props
152
+ }
153
+ );
154
+ }
155
+ );
156
+ TextArea.Description = React.forwardRef(
157
+ ({ children, showCounter = true, className }, ref) => {
158
+ const { size, error, disabled, value = "", maxLength } = useTextAreaContext();
159
+ if (!children && (!showCounter || !maxLength)) {
160
+ return null;
161
+ }
162
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn(textAreaVariants.descriptionContainer({ size }), className), children: [
163
+ children && /* @__PURE__ */ jsx("p", { className: cn(textAreaVariants.description({ size, error, disabled }), "flex-1"), children }),
164
+ showCounter && maxLength && /* @__PURE__ */ jsxs("span", { className: cn(textAreaVariants.counter({ disabled })), children: [
165
+ value.length,
166
+ "/",
167
+ maxLength
168
+ ] })
169
+ ] });
170
+ }
171
+ );
172
+ TextArea.displayName = "TextArea";
173
+ TextArea.Label.displayName = "TextArea.Label";
174
+ TextArea.Field.displayName = "TextArea.Field";
175
+ TextArea.Description.displayName = "TextArea.Description";
176
+ var TextFieldContext = createContext(null);
177
+ var useTextFieldContext = () => {
178
+ const context = useContext(TextFieldContext);
179
+ if (!context) {
180
+ throw new Error("TextField components must be used within a TextField");
181
+ }
182
+ return context;
183
+ };
184
+ var textFieldVariants = {
185
+ container: commonInputVariants.container,
186
+ label: commonInputVariants.label,
187
+ wrapper: cva(
188
+ "flex w-full flex-row items-center rounded-medium border transition-colors focus-within:border-border-focused focus-within:outline-none",
189
+ {
190
+ variants: {
191
+ variant: {
192
+ fill: "border-transparent bg-elevation-elevation-2",
193
+ line: "border-border-primary"
194
+ },
195
+ size: {
196
+ xsmall: "h-6 gap-0 px-1",
197
+ small: "h-7 gap-0.5 px-1.5",
198
+ medium: "h-8 gap-0.5 px-2",
199
+ large: "h-10 gap-1 px-2.5"
200
+ },
201
+ state: {
202
+ default: "text-text-primary",
203
+ error: "text-text-primary",
204
+ disabled: "cursor-not-allowed text-text-disabled"
205
+ }
206
+ },
207
+ compoundVariants: [
208
+ { variant: "fill", state: "error", class: "border-border-critical" },
209
+ {
210
+ variant: "fill",
211
+ state: "disabled",
212
+ class: "bg-elevation-elevation-2 border-transparent"
213
+ },
214
+ { variant: "line", state: "error", class: "border-border-critical" },
215
+ { variant: "line", state: "disabled", class: "border-border-primary" }
216
+ ],
217
+ defaultVariants: { variant: "fill", size: "medium", state: "default" }
218
+ }
219
+ ),
220
+ input: cva(
221
+ "w-full border-none bg-transparent p-0 focus:outline-none focus:ring-0 disabled:cursor-not-allowed",
222
+ {
223
+ variants: {
224
+ size: {
225
+ xsmall: "text-body-3 placeholder:text-body-3",
226
+ small: "text-body-2 placeholder:text-body-2",
227
+ medium: "text-body-2 placeholder:text-body-2",
228
+ large: "text-body-1 placeholder:text-body-1"
229
+ },
230
+ state: {
231
+ default: "text-text-primary placeholder:text-text-tertiary",
232
+ error: "text-text-primary placeholder:text-text-tertiary",
233
+ disabled: "text-text-disabled placeholder:text-text-disabled"
234
+ }
235
+ },
236
+ defaultVariants: { size: "medium", state: "default" }
237
+ }
238
+ ),
239
+ description: cva("mt-0.5 font-regular text-text-tertiary", {
240
+ variants: {
241
+ size: {
242
+ xsmall: "text-caption",
243
+ small: "text-body-3",
244
+ medium: "text-body-3",
245
+ large: "text-body-2"
246
+ },
247
+ error: {
248
+ true: "text-text-critical",
249
+ false: ""
250
+ },
251
+ disabled: {
252
+ true: "text-text-disabled",
253
+ false: ""
254
+ }
255
+ },
256
+ compoundVariants: [
257
+ {
258
+ disabled: true,
259
+ error: true,
260
+ class: "text-text-disabled"
261
+ // disabled가 error보다 우선
262
+ }
263
+ ],
264
+ defaultVariants: { size: "medium", error: false, disabled: false }
265
+ }),
266
+ subText: cva("ml-1 shrink-0 font-regular", {
267
+ variants: {
268
+ size: {
269
+ xsmall: "text-body-3",
270
+ small: "text-body-2",
271
+ medium: "text-body-2",
272
+ large: "text-body-1"
273
+ },
274
+ disabled: {
275
+ true: "text-text-disabled",
276
+ false: "text-text-tertiary"
277
+ }
278
+ },
279
+ defaultVariants: { size: "medium", disabled: false }
280
+ }),
281
+ icon: cva("shrink-0 text-icon-tertiary", {
282
+ variants: {
283
+ size: {
284
+ xsmall: "size-4",
285
+ small: "size-4",
286
+ medium: "size-4",
287
+ large: "size-5"
288
+ }
289
+ },
290
+ defaultVariants: { size: "medium" }
291
+ })
292
+ };
293
+ var TextField = forwardRef(
294
+ ({
295
+ children,
296
+ variant = "fill",
297
+ size = "medium",
298
+ error = false,
299
+ disabled = false,
300
+ className,
301
+ id: providedId,
302
+ value,
303
+ onChange,
304
+ ...inputProps
305
+ }, ref) => {
306
+ const uniqueId = useId();
307
+ const id = providedId || `text-field-${uniqueId}`;
308
+ return /* @__PURE__ */ jsx(TextFieldContext.Provider, { value: { variant, size, error, disabled, id, value, onChange }, children: /* @__PURE__ */ jsx("div", { ref, className: cn(textFieldVariants.container, className), children: children || /* @__PURE__ */ jsx(TextField.Input, { ...inputProps }) }) });
309
+ }
310
+ );
311
+ TextField.Label = forwardRef(
312
+ ({ children, required = false, className }, ref) => {
313
+ const { size, disabled, id } = useTextFieldContext();
314
+ return /* @__PURE__ */ jsx(
315
+ "label",
316
+ {
317
+ ref,
318
+ htmlFor: id,
319
+ className: cn(textFieldVariants.label({ size, disabled, required }), className),
320
+ children
321
+ }
322
+ );
323
+ }
324
+ );
325
+ TextField.Input = forwardRef(
326
+ ({ className, leftIcon, rightIcon, subText, ...props }, ref) => {
327
+ const {
328
+ variant,
329
+ size,
330
+ error,
331
+ disabled,
332
+ id,
333
+ value: contextValue,
334
+ onChange: contextOnChange
335
+ } = useTextFieldContext();
336
+ const state = disabled ? "disabled" : error ? "error" : "default";
337
+ const isControlled = contextValue !== void 0;
338
+ return /* @__PURE__ */ jsxs("div", { className: cn(textFieldVariants.wrapper({ variant, size, state }), className), children: [
339
+ leftIcon && /* @__PURE__ */ jsx(
340
+ "span",
341
+ {
342
+ className: cn("flex items-center justify-center", textFieldVariants.icon({ size })),
343
+ children: leftIcon
344
+ }
345
+ ),
346
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-row items-center justify-center", children: [
347
+ /* @__PURE__ */ jsx(
348
+ "input",
349
+ {
350
+ ref,
351
+ id,
352
+ disabled,
353
+ className: cn(textFieldVariants.input({ size, state })),
354
+ onChange: (e) => {
355
+ contextOnChange?.(e);
356
+ },
357
+ ...props,
358
+ ...isControlled ? { value: contextValue } : {}
359
+ }
360
+ ),
361
+ subText && /* @__PURE__ */ jsx("span", { className: cn(textFieldVariants.subText({ size, disabled })), children: subText })
362
+ ] }),
363
+ rightIcon && /* @__PURE__ */ jsx(
364
+ "span",
365
+ {
366
+ className: cn("flex items-center justify-center", textFieldVariants.icon({ size })),
367
+ children: rightIcon
368
+ }
369
+ )
370
+ ] });
371
+ }
372
+ );
373
+ TextField.Description = forwardRef(
374
+ ({ children, className }, ref) => {
375
+ const { size, error, disabled } = useTextFieldContext();
376
+ return /* @__PURE__ */ jsx(
377
+ "p",
378
+ {
379
+ ref,
380
+ className: cn(textFieldVariants.description({ size, error, disabled }), className),
381
+ children
382
+ }
383
+ );
384
+ }
385
+ );
386
+ TextField.displayName = "TextField";
387
+ TextField.Label.displayName = "TextField.Label";
388
+ TextField.Input.displayName = "TextField.Input";
389
+ TextField.Description.displayName = "TextField.Description";
390
+
391
+ export { TextArea, TextField };
392
+ //# sourceMappingURL=chunk-IANSI7F7.mjs.map
393
+ //# sourceMappingURL=chunk-IANSI7F7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/input/TextArea.tsx","../src/input/TextField.tsx"],"names":["createContext","useContext","cva","forwardRef","useId","jsx","cn","jsxs"],"mappings":"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","file":"chunk-IANSI7F7.mjs","sourcesContent":["import { cn, cva } from '@exem-ui/core/utils';\nimport * as React from 'react';\nimport { createContext, useContext, useId } from 'react';\n\nimport { commonInputVariants, type Size, type Variant } from './inputVariants';\n\ntype TextAreaLabelProps = {\n children: React.ReactNode;\n required?: boolean;\n className?: string;\n};\n\ntype TextAreaFieldProps = Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'size' | 'disabled' | 'id' | 'value' | 'onChange' | 'maxLength'\n>;\n\ntype TextAreaDescriptionProps = {\n children?: React.ReactNode;\n showCounter?: boolean;\n className?: string;\n};\n\ntype TextAreaRootProps = {\n children?: React.ReactNode;\n /**\n * 입력 필드 스타일 유형\n * @default 'fill'\n */\n variant?: Variant;\n size?: Size;\n error?: boolean;\n disabled?: boolean;\n /**\n * TextArea의 기본값. Context를 통해 하위 컴포넌트로 전달됩니다.\n * TextArea.Field에서 value prop이 전달되면 Field의 value가 우선 적용됩니다.\n *\n * 사용 패턴:\n * - 통합 관리: <TextArea value={state}> - Context로 모든 Field에 적용\n * - 개별 제어: <TextArea.Field value={localState}> - 특정 Field만 개별 제어\n */\n value?: string;\n maxLength?: number;\n className?: string;\n} & Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'size' | 'disabled' | 'id' | 'className'\n>;\n\ntype TextAreaComponent = React.ForwardRefExoticComponent<\n TextAreaRootProps & React.RefAttributes<HTMLDivElement>\n> & {\n Label: React.ForwardRefExoticComponent<\n TextAreaLabelProps & React.RefAttributes<HTMLLabelElement>\n >;\n Field: React.ForwardRefExoticComponent<\n TextAreaFieldProps & React.RefAttributes<HTMLTextAreaElement>\n >;\n Description: React.ForwardRefExoticComponent<\n TextAreaDescriptionProps & React.RefAttributes<HTMLDivElement>\n >;\n};\n\ntype TextAreaContextType = {\n variant: Variant;\n size?: Size;\n error?: boolean;\n disabled?: boolean;\n id: string;\n value?: string;\n maxLength?: number;\n onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;\n};\n\nconst TextAreaContext = createContext<TextAreaContextType | null>(null);\n\nconst useTextAreaContext = () => {\n const context = useContext(TextAreaContext);\n if (!context) {\n throw new Error('TextArea components must be used within a TextArea');\n }\n return context;\n};\n\nconst textAreaVariants = {\n container: commonInputVariants.container,\n label: commonInputVariants.label,\n\n field: cva(\n 'scrollbar-overlay block w-full resize-none rounded-medium border transition-colors focus:outline-none',\n {\n variants: {\n variant: {\n fill: 'border-transparent bg-elevation-elevation-2',\n line: 'border-border-primary',\n },\n size: {\n xsmall: 'min-h-[60px] px-1.5 py-[3.5px] text-body-3',\n small: 'min-h-[80px] px-2 py-1 text-body-2',\n medium: 'min-h-[100px] px-2.5 py-1.5 text-body-2',\n large: 'min-h-[120px] px-3 py-[9px] text-body-1',\n },\n state: {\n default: 'text-text-primary placeholder:text-text-tertiary',\n focused: 'text-text-primary placeholder:text-text-tertiary',\n error: 'text-text-primary placeholder:text-text-tertiary',\n disabled: 'cursor-not-allowed text-text-disabled placeholder:text-text-disabled',\n },\n },\n compoundVariants: [\n { variant: 'fill', state: 'focused', class: 'border-border-focused' },\n { variant: 'fill', state: 'error', class: 'border-border-critical' },\n {\n variant: 'fill',\n state: 'disabled',\n class: 'bg-elevation-elevation-2 border-transparent',\n },\n { variant: 'line', state: 'focused', class: 'border-border-focused' },\n { variant: 'line', state: 'error', class: 'border-border-critical' },\n { variant: 'line', state: 'disabled', class: 'border-border-primary' },\n ],\n defaultVariants: { variant: 'fill', size: 'medium', state: 'default' },\n },\n ),\n\n descriptionContainer: cva('flex flex-row items-center justify-between', {\n variants: {\n size: {\n xsmall: 'gap-0.5 text-caption',\n small: 'gap-1 text-body-3',\n medium: 'gap-1 text-body-3',\n large: 'gap-1 text-body-2',\n },\n },\n defaultVariants: { size: 'medium' },\n }),\n\n description: commonInputVariants.description,\n\n counter: cva('text-nowrap font-regular', {\n variants: {\n disabled: {\n true: 'text-gray-04',\n false: 'text-text-tertiary',\n },\n },\n defaultVariants: { disabled: false },\n }),\n};\n\nconst TextArea = React.forwardRef<HTMLDivElement, TextAreaRootProps>(\n (\n {\n children,\n variant = 'fill',\n size = 'medium',\n error = false,\n disabled = false,\n value = '',\n maxLength,\n className,\n ...textAreaProps\n },\n ref,\n ) => {\n const uniqueId = useId();\n const id = `text-area-${uniqueId}`;\n const { onChange, ...restTextAreaProps } = textAreaProps;\n\n return (\n <TextAreaContext.Provider\n value={{ variant, size, error, disabled, id, value, maxLength, onChange }}\n >\n <div ref={ref} className={cn(textAreaVariants.container, className)}>\n {children || <TextArea.Field {...restTextAreaProps} />}\n </div>\n </TextAreaContext.Provider>\n );\n },\n) as TextAreaComponent;\n\nTextArea.Label = React.forwardRef<HTMLLabelElement, TextAreaLabelProps>(\n ({ children, required = false, className }, ref) => {\n const { size, disabled, id } = useTextAreaContext();\n\n return (\n <label\n ref={ref}\n htmlFor={id}\n className={cn(textAreaVariants.label({ size, disabled, required }), className)}\n >\n {children}\n </label>\n );\n },\n) as TextAreaComponent['Label'];\n\nTextArea.Field = React.forwardRef<HTMLTextAreaElement, TextAreaFieldProps>(\n ({ className, onFocus, onBlur, ...props }, ref) => {\n const {\n variant,\n size,\n error,\n disabled,\n id,\n maxLength,\n value: contextValue,\n onChange: contextOnChange,\n } = useTextAreaContext();\n const [focused, setFocused] = React.useState(false);\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setFocused(false);\n onBlur?.(e);\n };\n\n const state = disabled ? 'disabled' : error ? 'error' : focused ? 'focused' : 'default';\n\n const isControlled = contextValue !== undefined;\n\n return (\n <textarea\n ref={ref}\n id={id}\n disabled={disabled}\n maxLength={maxLength}\n className={cn(textAreaVariants.field({ variant, size, state }), className)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={(e) => {\n contextOnChange?.(e);\n }}\n {...(isControlled ? { value: contextValue } : {})}\n {...props}\n />\n );\n },\n) as TextAreaComponent['Field'];\n\nTextArea.Description = React.forwardRef<HTMLDivElement, TextAreaDescriptionProps>(\n ({ children, showCounter = true, className }, ref) => {\n const { size, error, disabled, value = '', maxLength } = useTextAreaContext();\n\n if (!children && (!showCounter || !maxLength)) {\n return null;\n }\n\n return (\n <div ref={ref} className={cn(textAreaVariants.descriptionContainer({ size }), className)}>\n {children && (\n <p className={cn(textAreaVariants.description({ size, error, disabled }), 'flex-1')}>\n {children}\n </p>\n )}\n {showCounter && maxLength && (\n <span className={cn(textAreaVariants.counter({ disabled }))}>\n {value.length}/{maxLength}\n </span>\n )}\n </div>\n );\n },\n) as TextAreaComponent['Description'];\n\nTextArea.displayName = 'TextArea';\nTextArea.Label.displayName = 'TextArea.Label';\nTextArea.Field.displayName = 'TextArea.Field';\nTextArea.Description.displayName = 'TextArea.Description';\n\nexport { TextArea };\nexport type {\n TextAreaComponent,\n TextAreaRootProps,\n TextAreaLabelProps,\n TextAreaFieldProps,\n TextAreaDescriptionProps,\n};\n","import { cn, cva } from '@exem-ui/core/utils';\nimport type React from 'react';\nimport { createContext, forwardRef, useContext, useId } from 'react';\nimport { commonInputVariants, type Icon, type Size, type Variant } from './inputVariants';\n\ntype TextFieldContextType = {\n variant: Variant;\n size: Size;\n error: boolean;\n disabled: boolean;\n id: string;\n value?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n};\n\ntype TextFieldRootProps = {\n children?: React.ReactNode;\n /**\n * 입력 필드 스타일 유형\n * @default 'fill'\n */\n variant?: Variant;\n size?: Size;\n error?: boolean;\n disabled?: boolean;\n className?: string;\n value?: string;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n} & Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'disabled' | 'className' | 'value' | 'onChange'\n>;\n\ntype TextFieldLabelProps = {\n children: React.ReactNode;\n required?: boolean;\n className?: string;\n};\n\ntype TextFieldInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'disabled' | 'id' | 'value' | 'onChange'\n> & {\n leftIcon?: Icon;\n rightIcon?: Icon;\n subText?: string;\n};\n\ntype TextFieldDescriptionProps = {\n children: React.ReactNode;\n className?: string;\n};\n\ntype TextFieldComponent = React.ForwardRefExoticComponent<\n TextFieldRootProps & React.RefAttributes<HTMLDivElement>\n> & {\n Label: React.ForwardRefExoticComponent<\n TextFieldLabelProps & React.RefAttributes<HTMLLabelElement>\n >;\n Input: React.ForwardRefExoticComponent<\n TextFieldInputProps & React.RefAttributes<HTMLInputElement>\n >;\n Description: React.ForwardRefExoticComponent<\n TextFieldDescriptionProps & React.RefAttributes<HTMLParagraphElement>\n >;\n};\n\nconst TextFieldContext = createContext<TextFieldContextType | null>(null);\n\nconst useTextFieldContext = () => {\n const context = useContext(TextFieldContext);\n if (!context) {\n throw new Error('TextField components must be used within a TextField');\n }\n return context;\n};\n\nconst textFieldVariants = {\n container: commonInputVariants.container,\n label: commonInputVariants.label,\n\n wrapper: cva(\n 'flex w-full flex-row items-center rounded-medium border transition-colors focus-within:border-border-focused focus-within:outline-none',\n {\n variants: {\n variant: {\n fill: 'border-transparent bg-elevation-elevation-2',\n line: 'border-border-primary',\n },\n size: {\n xsmall: 'h-6 gap-0 px-1',\n small: 'h-7 gap-0.5 px-1.5',\n medium: 'h-8 gap-0.5 px-2',\n large: 'h-10 gap-1 px-2.5',\n },\n state: {\n default: 'text-text-primary',\n error: 'text-text-primary',\n disabled: 'cursor-not-allowed text-text-disabled',\n },\n },\n compoundVariants: [\n { variant: 'fill', state: 'error', class: 'border-border-critical' },\n {\n variant: 'fill',\n state: 'disabled',\n class: 'bg-elevation-elevation-2 border-transparent',\n },\n { variant: 'line', state: 'error', class: 'border-border-critical' },\n { variant: 'line', state: 'disabled', class: 'border-border-primary' },\n ],\n defaultVariants: { variant: 'fill', size: 'medium', state: 'default' },\n },\n ),\n\n input: cva(\n 'w-full border-none bg-transparent p-0 focus:outline-none focus:ring-0 disabled:cursor-not-allowed',\n {\n variants: {\n size: {\n xsmall: 'text-body-3 placeholder:text-body-3',\n small: 'text-body-2 placeholder:text-body-2',\n medium: 'text-body-2 placeholder:text-body-2',\n large: 'text-body-1 placeholder:text-body-1',\n },\n state: {\n default: 'text-text-primary placeholder:text-text-tertiary',\n error: 'text-text-primary placeholder:text-text-tertiary',\n disabled: 'text-text-disabled placeholder:text-text-disabled',\n },\n },\n defaultVariants: { size: 'medium', state: 'default' },\n },\n ),\n\n description: cva('mt-0.5 font-regular text-text-tertiary', {\n variants: {\n size: {\n xsmall: 'text-caption',\n small: 'text-body-3',\n medium: 'text-body-3',\n large: 'text-body-2',\n },\n error: {\n true: 'text-text-critical',\n false: '',\n },\n disabled: {\n true: 'text-text-disabled',\n false: '',\n },\n },\n compoundVariants: [\n {\n disabled: true,\n error: true,\n class: 'text-text-disabled', // disabled가 error보다 우선\n },\n ],\n defaultVariants: { size: 'medium', error: false, disabled: false },\n }),\n\n subText: cva('ml-1 shrink-0 font-regular', {\n variants: {\n size: {\n xsmall: 'text-body-3',\n small: 'text-body-2',\n medium: 'text-body-2',\n large: 'text-body-1',\n },\n disabled: {\n true: 'text-text-disabled',\n false: 'text-text-tertiary',\n },\n },\n defaultVariants: { size: 'medium', disabled: false },\n }),\n\n icon: cva('shrink-0 text-icon-tertiary', {\n variants: {\n size: {\n xsmall: 'size-4',\n small: 'size-4',\n medium: 'size-4',\n large: 'size-5',\n },\n },\n defaultVariants: { size: 'medium' },\n }),\n};\n\nconst TextField = forwardRef<HTMLDivElement, TextFieldRootProps>(\n (\n {\n children,\n variant = 'fill',\n size = 'medium',\n error = false,\n disabled = false,\n className,\n id: providedId,\n value,\n onChange,\n ...inputProps\n },\n ref,\n ) => {\n const uniqueId = useId();\n const id = providedId || `text-field-${uniqueId}`;\n\n return (\n <TextFieldContext.Provider value={{ variant, size, error, disabled, id, value, onChange }}>\n <div ref={ref} className={cn(textFieldVariants.container, className)}>\n {children || <TextField.Input {...inputProps} />}\n </div>\n </TextFieldContext.Provider>\n );\n },\n) as TextFieldComponent;\n\nTextField.Label = forwardRef<HTMLLabelElement, TextFieldLabelProps>(\n ({ children, required = false, className }, ref) => {\n const { size, disabled, id } = useTextFieldContext();\n\n return (\n <label\n ref={ref}\n htmlFor={id}\n className={cn(textFieldVariants.label({ size, disabled, required }), className)}\n >\n {children}\n </label>\n );\n },\n) as TextFieldComponent['Label'];\n\nTextField.Input = forwardRef<HTMLInputElement, TextFieldInputProps>(\n ({ className, leftIcon, rightIcon, subText, ...props }, ref) => {\n const {\n variant,\n size,\n error,\n disabled,\n id,\n value: contextValue,\n onChange: contextOnChange,\n } = useTextFieldContext();\n const state = disabled ? 'disabled' : error ? 'error' : 'default';\n const isControlled = contextValue !== undefined;\n\n return (\n <div className={cn(textFieldVariants.wrapper({ variant, size, state }), className)}>\n {leftIcon && (\n <span\n className={cn('flex items-center justify-center', textFieldVariants.icon({ size }))}\n >\n {leftIcon}\n </span>\n )}\n\n <div className=\"flex flex-1 flex-row items-center justify-center\">\n <input\n ref={ref}\n id={id}\n disabled={disabled}\n className={cn(textFieldVariants.input({ size, state }))}\n onChange={(e) => {\n contextOnChange?.(e);\n }}\n {...props}\n {...(isControlled ? { value: contextValue } : {})}\n />\n {subText && (\n <span className={cn(textFieldVariants.subText({ size, disabled }))}>{subText}</span>\n )}\n </div>\n\n {rightIcon && (\n <span\n className={cn('flex items-center justify-center', textFieldVariants.icon({ size }))}\n >\n {rightIcon}\n </span>\n )}\n </div>\n );\n },\n) as TextFieldComponent['Input'];\n\nTextField.Description = forwardRef<HTMLParagraphElement, TextFieldDescriptionProps>(\n ({ children, className }, ref) => {\n const { size, error, disabled } = useTextFieldContext();\n\n return (\n <p\n ref={ref}\n className={cn(textFieldVariants.description({ size, error, disabled }), className)}\n >\n {children}\n </p>\n );\n },\n) as TextFieldComponent['Description'];\n\nTextField.displayName = 'TextField';\nTextField.Label.displayName = 'TextField.Label';\nTextField.Input.displayName = 'TextField.Input';\nTextField.Description.displayName = 'TextField.Description';\n\nexport { TextField };\nexport type {\n TextFieldComponent,\n TextFieldRootProps,\n TextFieldLabelProps,\n TextFieldInputProps,\n TextFieldDescriptionProps,\n};\n"]}