@ttdk-design-system/library-react 0.0.0-stage → 1.0.1

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 (184) hide show
  1. package/AI_GUIDE.md +6518 -0
  2. package/README.md +106 -2
  3. package/llms.txt +6518 -0
  4. package/package.json +1099 -4
  5. package/src/core/index.ts +2 -0
  6. package/src/core/tailwind-preset.cjs +62 -0
  7. package/src/core/tailwind-preset.ts +85 -0
  8. package/src/core/theme/tokens.css +663 -0
  9. package/src/core/types.ts +836 -0
  10. package/src/index.ts +17 -0
  11. package/src/tailwind-preset.cjs +62 -0
  12. package/src/tailwind-preset.ts +85 -0
  13. package/src/types.ts +1 -0
  14. package/src/web/accordion/AI_GUIDE.md +149 -0
  15. package/src/web/accordion/accordion.css +1 -0
  16. package/src/web/accordion/accordion.tsx +430 -0
  17. package/src/web/accordion/index.ts +3 -0
  18. package/src/web/accordion/manifest.json +351 -0
  19. package/src/web/alert/AI_GUIDE.md +139 -0
  20. package/src/web/alert/alert.css +1 -0
  21. package/src/web/alert/alert.tsx +318 -0
  22. package/src/web/alert/index.ts +3 -0
  23. package/src/web/alert/manifest.json +240 -0
  24. package/src/web/avatar/AI_GUIDE.md +118 -0
  25. package/src/web/avatar/avatar.css +1 -0
  26. package/src/web/avatar/avatar.tsx +233 -0
  27. package/src/web/avatar/index.ts +3 -0
  28. package/src/web/avatar/manifest.json +195 -0
  29. package/src/web/badge/AI_GUIDE.md +94 -0
  30. package/src/web/badge/badge.css +1 -0
  31. package/src/web/badge/badge.tsx +140 -0
  32. package/src/web/badge/index.ts +2 -0
  33. package/src/web/badge/manifest.json +141 -0
  34. package/src/web/banner/AI_GUIDE.md +130 -0
  35. package/src/web/banner/banner.css +1 -0
  36. package/src/web/banner/banner.tsx +334 -0
  37. package/src/web/banner/index.ts +3 -0
  38. package/src/web/banner/manifest.json +240 -0
  39. package/src/web/breadcrumb/AI_GUIDE.md +120 -0
  40. package/src/web/breadcrumb/breadcrumb.css +1 -0
  41. package/src/web/breadcrumb/breadcrumb.tsx +306 -0
  42. package/src/web/breadcrumb/index.ts +3 -0
  43. package/src/web/breadcrumb/manifest.json +225 -0
  44. package/src/web/button/AI_GUIDE.md +121 -0
  45. package/src/web/button/button.css +1 -0
  46. package/src/web/button/button.tsx +287 -0
  47. package/src/web/button/index.ts +2 -0
  48. package/src/web/button/manifest.json +177 -0
  49. package/src/web/calendar/AI_GUIDE.md +151 -0
  50. package/src/web/calendar/calendar.css +1 -0
  51. package/src/web/calendar/calendar.tsx +1611 -0
  52. package/src/web/calendar/index.ts +3 -0
  53. package/src/web/calendar/manifest.json +470 -0
  54. package/src/web/card/AI_GUIDE.md +133 -0
  55. package/src/web/card/card.css +1 -0
  56. package/src/web/card/card.tsx +408 -0
  57. package/src/web/card/index.ts +4 -0
  58. package/src/web/card/manifest.json +357 -0
  59. package/src/web/checkbox/AI_GUIDE.md +146 -0
  60. package/src/web/checkbox/checkbox.css +1 -0
  61. package/src/web/checkbox/checkbox.tsx +307 -0
  62. package/src/web/checkbox/index.ts +2 -0
  63. package/src/web/checkbox/manifest.json +294 -0
  64. package/src/web/chip/AI_GUIDE.md +186 -0
  65. package/src/web/chip/chip.css +1 -0
  66. package/src/web/chip/chip.tsx +230 -0
  67. package/src/web/chip/index.ts +2 -0
  68. package/src/web/chip/manifest.json +186 -0
  69. package/src/web/dropdown/AI_GUIDE.md +167 -0
  70. package/src/web/dropdown/dropdown.css +1 -0
  71. package/src/web/dropdown/dropdown.tsx +1274 -0
  72. package/src/web/dropdown/index.ts +3 -0
  73. package/src/web/dropdown/manifest.json +576 -0
  74. package/src/web/flex/AI_GUIDE.md +113 -0
  75. package/src/web/flex/flex-item.tsx +97 -0
  76. package/src/web/flex/flex.css +1 -0
  77. package/src/web/flex/flex.tsx +108 -0
  78. package/src/web/flex/index.ts +5 -0
  79. package/src/web/flex/manifest.json +162 -0
  80. package/src/web/form/index.ts +7 -0
  81. package/src/web/grid/AI_GUIDE.md +112 -0
  82. package/src/web/grid/grid-item.tsx +112 -0
  83. package/src/web/grid/grid.css +1 -0
  84. package/src/web/grid/grid.tsx +99 -0
  85. package/src/web/grid/index.ts +5 -0
  86. package/src/web/grid/manifest.json +153 -0
  87. package/src/web/index.ts +86 -0
  88. package/src/web/input/AI_GUIDE.md +159 -0
  89. package/src/web/input/index.ts +3 -0
  90. package/src/web/input/input.css +1 -0
  91. package/src/web/input/input.tsx +537 -0
  92. package/src/web/input/manifest.json +465 -0
  93. package/src/web/input-number/AI_GUIDE.md +164 -0
  94. package/src/web/input-number/index.ts +3 -0
  95. package/src/web/input-number/input-number.css +1 -0
  96. package/src/web/input-number/input-number.tsx +1193 -0
  97. package/src/web/input-number/manifest.json +575 -0
  98. package/src/web/modal/AI_GUIDE.md +171 -0
  99. package/src/web/modal/index.ts +3 -0
  100. package/src/web/modal/manifest.json +375 -0
  101. package/src/web/modal/modal.css +1 -0
  102. package/src/web/modal/modal.tsx +571 -0
  103. package/src/web/pagination/AI_GUIDE.md +148 -0
  104. package/src/web/pagination/index.ts +21 -0
  105. package/src/web/pagination/manifest.json +432 -0
  106. package/src/web/pagination/pagination-content.tsx +45 -0
  107. package/src/web/pagination/pagination-ellipsis.tsx +54 -0
  108. package/src/web/pagination/pagination-first.tsx +155 -0
  109. package/src/web/pagination/pagination-item.tsx +45 -0
  110. package/src/web/pagination/pagination-last.tsx +155 -0
  111. package/src/web/pagination/pagination-link.tsx +121 -0
  112. package/src/web/pagination/pagination-next.tsx +158 -0
  113. package/src/web/pagination/pagination-previous.tsx +158 -0
  114. package/src/web/pagination/pagination.css +1 -0
  115. package/src/web/pagination/pagination.tsx +687 -0
  116. package/src/web/popover/AI_GUIDE.md +163 -0
  117. package/src/web/popover/index.ts +3 -0
  118. package/src/web/popover/manifest.json +396 -0
  119. package/src/web/popover/popover.css +1 -0
  120. package/src/web/popover/popover.tsx +702 -0
  121. package/src/web/radio/AI_GUIDE.md +155 -0
  122. package/src/web/radio/index.ts +2 -0
  123. package/src/web/radio/manifest.json +294 -0
  124. package/src/web/radio/radio.css +1 -0
  125. package/src/web/radio/radio.tsx +290 -0
  126. package/src/web/selectbox/AI_GUIDE.md +216 -0
  127. package/src/web/selectbox/index.ts +3 -0
  128. package/src/web/selectbox/manifest.json +477 -0
  129. package/src/web/selectbox/selectbox.css +1 -0
  130. package/src/web/selectbox/selectbox.tsx +1048 -0
  131. package/src/web/sonner/AI_GUIDE.md +98 -0
  132. package/src/web/sonner/index.ts +114 -0
  133. package/src/web/sonner/manifest.json +132 -0
  134. package/src/web/sonner/sonner.css +1 -0
  135. package/src/web/sonner/sonner.tsx +177 -0
  136. package/src/web/table/AI_GUIDE.md +145 -0
  137. package/src/web/table/index.ts +35 -0
  138. package/src/web/table/manifest.json +168 -0
  139. package/src/web/table/table-body.tsx +45 -0
  140. package/src/web/table/table-caption.tsx +45 -0
  141. package/src/web/table/table-cell.tsx +74 -0
  142. package/src/web/table/table-empty.tsx +108 -0
  143. package/src/web/table/table-footer.tsx +45 -0
  144. package/src/web/table/table-head.tsx +80 -0
  145. package/src/web/table/table-header.tsx +45 -0
  146. package/src/web/table/table-row.tsx +69 -0
  147. package/src/web/table/table.css +1 -0
  148. package/src/web/table/table.tsx +305 -0
  149. package/src/web/tabs/AI_GUIDE.md +150 -0
  150. package/src/web/tabs/index.ts +3 -0
  151. package/src/web/tabs/manifest.json +315 -0
  152. package/src/web/tabs/tabs.css +1 -0
  153. package/src/web/tabs/tabs.tsx +332 -0
  154. package/src/web/text/AI_GUIDE.md +129 -0
  155. package/src/web/text/index.ts +3 -0
  156. package/src/web/text/manifest.json +195 -0
  157. package/src/web/text/text.css +1 -0
  158. package/src/web/text/text.tsx +689 -0
  159. package/src/web/textarea/AI_GUIDE.md +141 -0
  160. package/src/web/textarea/index.ts +3 -0
  161. package/src/web/textarea/manifest.json +438 -0
  162. package/src/web/textarea/textarea.css +1 -0
  163. package/src/web/textarea/textarea.tsx +467 -0
  164. package/src/web/tooltip/AI_GUIDE.md +110 -0
  165. package/src/web/tooltip/index.ts +3 -0
  166. package/src/web/tooltip/manifest.json +222 -0
  167. package/src/web/tooltip/tooltip.css +1 -0
  168. package/src/web/tooltip/tooltip.tsx +423 -0
  169. package/src/webview/bottomsheet/AI_GUIDE.md +141 -0
  170. package/src/webview/bottomsheet/bottomsheet.css +1 -0
  171. package/src/webview/bottomsheet/bottomsheet.tsx +603 -0
  172. package/src/webview/bottomsheet/index.ts +4 -0
  173. package/src/webview/bottomsheet/manifest.json +377 -0
  174. package/src/webview/button/AI_GUIDE.md +79 -0
  175. package/src/webview/button/button-ios.css +1 -0
  176. package/src/webview/button/button-ios.tsx +138 -0
  177. package/src/webview/button/button-material.css +1 -0
  178. package/src/webview/button/button-material.tsx +138 -0
  179. package/src/webview/button/index.ts +7 -0
  180. package/src/webview/button/manifest.json +148 -0
  181. package/src/webview/index.ts +7 -0
  182. package/tailwind-preset.cjs +62 -0
  183. package/tailwind-preset.js +62 -0
  184. package/ttdk-manifest.json +10188 -0
@@ -0,0 +1,689 @@
1
+ import * as React from "react";
2
+
3
+ export type TextUiProps = UiProps;
4
+ export interface TextProps {
5
+ /**
6
+ * Tag elemen HTML semantik yang digunakan untuk me-render teks.
7
+ * - `'span'`: Inline span (default).
8
+ * - `'p'`: Paragraf teks.
9
+ * - `'div'`: Blok generik.
10
+ * - `'h1'` s/d `'h6'`: Heading level 1 sampai 6.
11
+ * - `'label'`: Elemen label formulir.
12
+ * - `'small'`: Teks berukuran kecil / disclaimer.
13
+ * - `'strong'`: Teks tebal berpenekanan penting.
14
+ * - `'em'`: Teks berpenekanan miring.
15
+ * - `'code'`: Format kode inline monospace.
16
+ * - `'blockquote'`: Kutipan blok.
17
+ * - `'a'`: Tautan / link teks.
18
+ *
19
+ * @default 'span'
20
+ */
21
+ as?:
22
+ | "span"
23
+ | "p"
24
+ | "div"
25
+ | "h1"
26
+ | "h2"
27
+ | "h3"
28
+ | "h4"
29
+ | "h5"
30
+ | "h6"
31
+ | "label"
32
+ | "small"
33
+ | "strong"
34
+ | "em"
35
+ | "code"
36
+ | "blockquote"
37
+ | "a";
38
+
39
+ /**
40
+ * Varian warna semantik teks (disesuaikan dengan Chip / Badge TTDK).
41
+ * - `'primary'`: Warna utama tema penekanan aksi (brand teal).
42
+ * - `'success'`: Warna status sukses (hijau).
43
+ * - `'info'`: Warna status informasi (biru).
44
+ * - `'warning'`: Warna status peringatan (kuning).
45
+ * - `'danger'`: Warna status bahaya / kesalahan (merah).
46
+ * - `'neutral'`: Warna teks dasar foreground (standar).
47
+ *
48
+ * @default 'neutral'
49
+ */
50
+ variant?: "primary" | "success" | "info" | "warning" | "danger" | "neutral";
51
+
52
+ /**
53
+ * Ukuran tipografi teks yang memengaruhi font-size dan line-height.
54
+ * - `'xs'`: 12px (line-height: 16px)
55
+ * - `'sm'`: 14px (line-height: 20px)
56
+ * - `'md'`: 16px (line-height: 24px)
57
+ * - `'lg'`: 18px (line-height: 28px)
58
+ * - `'xl'`: 20px (line-height: 28px)
59
+ * - `'2xl'`: 24px (line-height: 32px)
60
+ * - `'3xl'`: 30px (line-height: 36px)
61
+ * - `'4xl'`: 36px (line-height: 40px)
62
+ * - `'5xl'`: 48px (line-height: 1.1)
63
+ * - `'6xl'`: 60px (line-height: 1.05)
64
+ */
65
+ size?:
66
+ | "xs"
67
+ | "sm"
68
+ | "md"
69
+ | "lg"
70
+ | "xl"
71
+ | "2xl"
72
+ | "3xl"
73
+ | "4xl"
74
+ | "5xl"
75
+ | "6xl";
76
+
77
+ /**
78
+ * Ketebalan font teks.
79
+ * - `'normal'`: 400
80
+ * - `'medium'`: 500
81
+ * - `'semibold'`: 600
82
+ * - `'bold'`: 700
83
+ * - `'extrabold'`: 800
84
+ */
85
+ weight?: "normal" | "medium" | "semibold" | "bold" | "extrabold";
86
+
87
+ /**
88
+ * Perataan horizontal teks.
89
+ * - `'left'`: Rata kiri.
90
+ * - `'center'`: Rata tengah.
91
+ * - `'right'`: Rata kanan.
92
+ * - `'justify'`: Rata kiri-kanan.
93
+ */
94
+ align?: "left" | "center" | "right" | "justify";
95
+
96
+ /**
97
+ * Transformasi huruf kapital/kecil pada teks.
98
+ * - `'uppercase'`: SEMUA HURUF BESAR.
99
+ * - `'lowercase'`: semua huruf kecil.
100
+ * - `'capitalize'`: Huruf Pertama Besar Setiap Kata.
101
+ * - `'normal'`: Normal sesuai aslinya.
102
+ */
103
+ transform?: "uppercase" | "lowercase" | "capitalize" | "normal";
104
+
105
+ /**
106
+ * Memotong teks satu baris yang melebihi batas dengan elipsis (...).
107
+ *
108
+ * @default false
109
+ */
110
+ truncate?: boolean;
111
+
112
+ /**
113
+ * Memotong teks multi-baris pada jumlah baris tertentu menggunakan CSS line-clamp.
114
+ */
115
+ lineClamp?: "1" | "2" | "3" | "4" | "5" | "6" | 1 | 2 | 3 | 4 | 5 | 6;
116
+
117
+ /**
118
+ * Mencegah teks dari wrapping (white-space: nowrap).
119
+ *
120
+ * @default false
121
+ */
122
+ noWrap?: boolean;
123
+
124
+ /**
125
+ * Menampilkan teks dalam gaya miring (italic).
126
+ *
127
+ * @default false
128
+ */
129
+ italic?: boolean;
130
+
131
+ /**
132
+ * Menampilkan garis bawah pada teks (underline).
133
+ *
134
+ * @default false
135
+ */
136
+ underline?: boolean;
137
+
138
+ /**
139
+ * Margin kustom pada elemen teks (misal: '0 0 16px 0', '8px', '1rem').
140
+ */
141
+ margin?: string;
142
+
143
+ /**
144
+ * Padding kustom pada elemen teks (misal: '8px 12px', '4px 8px').
145
+ */
146
+ padding?: string;
147
+
148
+ /**
149
+ * URL tujuan jika `as="a"`.
150
+ */
151
+ href?: string;
152
+
153
+ /**
154
+ * Target link jika `as="a"`.
155
+ */
156
+ target?: string;
157
+
158
+ /**
159
+ * Class CSS kustom.
160
+ */
161
+ className?: string;
162
+
163
+ /**
164
+ * Inline CSS style object native.
165
+ */
166
+ style?: React.CSSProperties;
167
+
168
+ /**
169
+ * Kustomisasi visual granular ala Nuxt UI / Universal UI System (UiProps).
170
+ */
171
+ ui?: UiProps;
172
+
173
+ /**
174
+ * Konten teks atau elemen anak di dalam komponen Text.
175
+ */
176
+ children?: any;
177
+ }
178
+
179
+ import { buildUiVars, UiProps } from "../../core/types";
180
+
181
+ function Text(props: TextProps) {
182
+ return (
183
+ <>
184
+ {props.as === "p" ? (
185
+ <p
186
+ className={`ttdk-text ${props.className || ""}`.trim()}
187
+ data-variant={props.variant || "neutral"}
188
+ data-size={props.size}
189
+ data-weight={props.weight}
190
+ data-align={props.align}
191
+ data-transform={props.transform}
192
+ data-truncate={props.truncate}
193
+ data-line-clamp={props.lineClamp}
194
+ data-no-wrap={props.noWrap}
195
+ data-italic={props.italic}
196
+ data-underline={props.underline}
197
+ style={{
198
+ ...(props.margin
199
+ ? {
200
+ margin: props.margin,
201
+ }
202
+ : {}),
203
+ ...(props.padding
204
+ ? {
205
+ padding: props.padding,
206
+ }
207
+ : {}),
208
+ ...buildUiVars(props.ui),
209
+ ...((props as any)["style"] || {}),
210
+ ...props.style,
211
+ }}
212
+ >
213
+ <>{props.children}</>
214
+ </p>
215
+ ) : null}
216
+ {props.as === "h1" ? (
217
+ <h1
218
+ className={`ttdk-text ${props.className || ""}`.trim()}
219
+ data-variant={props.variant || "neutral"}
220
+ data-size={props.size}
221
+ data-weight={props.weight}
222
+ data-align={props.align}
223
+ data-transform={props.transform}
224
+ data-truncate={props.truncate}
225
+ data-line-clamp={props.lineClamp}
226
+ data-no-wrap={props.noWrap}
227
+ data-italic={props.italic}
228
+ data-underline={props.underline}
229
+ style={{
230
+ ...(props.margin
231
+ ? {
232
+ margin: props.margin,
233
+ }
234
+ : {}),
235
+ ...(props.padding
236
+ ? {
237
+ padding: props.padding,
238
+ }
239
+ : {}),
240
+ ...buildUiVars(props.ui),
241
+ ...((props as any)["style"] || {}),
242
+ }}
243
+ >
244
+ <>{props.children}</>
245
+ </h1>
246
+ ) : null}
247
+ {props.as === "h2" ? (
248
+ <h2
249
+ className={`ttdk-text ${props.className || ""}`.trim()}
250
+ data-variant={props.variant || "neutral"}
251
+ data-size={props.size}
252
+ data-weight={props.weight}
253
+ data-align={props.align}
254
+ data-transform={props.transform}
255
+ data-truncate={props.truncate}
256
+ data-line-clamp={props.lineClamp}
257
+ data-no-wrap={props.noWrap}
258
+ data-italic={props.italic}
259
+ data-underline={props.underline}
260
+ style={{
261
+ ...(props.margin
262
+ ? {
263
+ margin: props.margin,
264
+ }
265
+ : {}),
266
+ ...(props.padding
267
+ ? {
268
+ padding: props.padding,
269
+ }
270
+ : {}),
271
+ ...buildUiVars(props.ui),
272
+ ...((props as any)["style"] || {}),
273
+ }}
274
+ >
275
+ <>{props.children}</>
276
+ </h2>
277
+ ) : null}
278
+ {props.as === "h3" ? (
279
+ <h3
280
+ className={`ttdk-text ${props.className || ""}`.trim()}
281
+ data-variant={props.variant || "neutral"}
282
+ data-size={props.size}
283
+ data-weight={props.weight}
284
+ data-align={props.align}
285
+ data-transform={props.transform}
286
+ data-truncate={props.truncate}
287
+ data-line-clamp={props.lineClamp}
288
+ data-no-wrap={props.noWrap}
289
+ data-italic={props.italic}
290
+ data-underline={props.underline}
291
+ style={{
292
+ ...(props.margin
293
+ ? {
294
+ margin: props.margin,
295
+ }
296
+ : {}),
297
+ ...(props.padding
298
+ ? {
299
+ padding: props.padding,
300
+ }
301
+ : {}),
302
+ ...buildUiVars(props.ui),
303
+ ...((props as any)["style"] || {}),
304
+ }}
305
+ >
306
+ <>{props.children}</>
307
+ </h3>
308
+ ) : null}
309
+ {props.as === "h4" ? (
310
+ <h4
311
+ className={`ttdk-text ${props.className || ""}`.trim()}
312
+ data-variant={props.variant || "neutral"}
313
+ data-size={props.size}
314
+ data-weight={props.weight}
315
+ data-align={props.align}
316
+ data-transform={props.transform}
317
+ data-truncate={props.truncate}
318
+ data-line-clamp={props.lineClamp}
319
+ data-no-wrap={props.noWrap}
320
+ data-italic={props.italic}
321
+ data-underline={props.underline}
322
+ style={{
323
+ ...(props.margin
324
+ ? {
325
+ margin: props.margin,
326
+ }
327
+ : {}),
328
+ ...(props.padding
329
+ ? {
330
+ padding: props.padding,
331
+ }
332
+ : {}),
333
+ ...buildUiVars(props.ui),
334
+ ...((props as any)["style"] || {}),
335
+ }}
336
+ >
337
+ <>{props.children}</>
338
+ </h4>
339
+ ) : null}
340
+ {props.as === "h5" ? (
341
+ <h5
342
+ className={`ttdk-text ${props.className || ""}`.trim()}
343
+ data-variant={props.variant || "neutral"}
344
+ data-size={props.size}
345
+ data-weight={props.weight}
346
+ data-align={props.align}
347
+ data-transform={props.transform}
348
+ data-truncate={props.truncate}
349
+ data-line-clamp={props.lineClamp}
350
+ data-no-wrap={props.noWrap}
351
+ data-italic={props.italic}
352
+ data-underline={props.underline}
353
+ style={{
354
+ ...(props.margin
355
+ ? {
356
+ margin: props.margin,
357
+ }
358
+ : {}),
359
+ ...(props.padding
360
+ ? {
361
+ padding: props.padding,
362
+ }
363
+ : {}),
364
+ ...buildUiVars(props.ui),
365
+ ...((props as any)["style"] || {}),
366
+ }}
367
+ >
368
+ <>{props.children}</>
369
+ </h5>
370
+ ) : null}
371
+ {props.as === "h6" ? (
372
+ <h6
373
+ className={`ttdk-text ${props.className || ""}`.trim()}
374
+ data-variant={props.variant || "neutral"}
375
+ data-size={props.size}
376
+ data-weight={props.weight}
377
+ data-align={props.align}
378
+ data-transform={props.transform}
379
+ data-truncate={props.truncate}
380
+ data-line-clamp={props.lineClamp}
381
+ data-no-wrap={props.noWrap}
382
+ data-italic={props.italic}
383
+ data-underline={props.underline}
384
+ style={{
385
+ ...(props.margin
386
+ ? {
387
+ margin: props.margin,
388
+ }
389
+ : {}),
390
+ ...(props.padding
391
+ ? {
392
+ padding: props.padding,
393
+ }
394
+ : {}),
395
+ ...buildUiVars(props.ui),
396
+ ...((props as any)["style"] || {}),
397
+ }}
398
+ >
399
+ <>{props.children}</>
400
+ </h6>
401
+ ) : null}
402
+ {props.as === "div" ? (
403
+ <div
404
+ className={`ttdk-text ${props.className || ""}`.trim()}
405
+ data-variant={props.variant || "neutral"}
406
+ data-size={props.size}
407
+ data-weight={props.weight}
408
+ data-align={props.align}
409
+ data-transform={props.transform}
410
+ data-truncate={props.truncate}
411
+ data-line-clamp={props.lineClamp}
412
+ data-no-wrap={props.noWrap}
413
+ data-italic={props.italic}
414
+ data-underline={props.underline}
415
+ style={{
416
+ ...(props.margin
417
+ ? {
418
+ margin: props.margin,
419
+ }
420
+ : {}),
421
+ ...(props.padding
422
+ ? {
423
+ padding: props.padding,
424
+ }
425
+ : {}),
426
+ ...buildUiVars(props.ui),
427
+ ...((props as any)["style"] || {}),
428
+ }}
429
+ >
430
+ <>{props.children}</>
431
+ </div>
432
+ ) : null}
433
+ {props.as === "label" ? (
434
+ <label
435
+ className={`ttdk-text ${props.className || ""}`.trim()}
436
+ data-variant={props.variant || "neutral"}
437
+ data-size={props.size}
438
+ data-weight={props.weight}
439
+ data-align={props.align}
440
+ data-transform={props.transform}
441
+ data-truncate={props.truncate}
442
+ data-line-clamp={props.lineClamp}
443
+ data-no-wrap={props.noWrap}
444
+ data-italic={props.italic}
445
+ data-underline={props.underline}
446
+ style={{
447
+ ...(props.margin
448
+ ? {
449
+ margin: props.margin,
450
+ }
451
+ : {}),
452
+ ...(props.padding
453
+ ? {
454
+ padding: props.padding,
455
+ }
456
+ : {}),
457
+ ...buildUiVars(props.ui),
458
+ ...((props as any)["style"] || {}),
459
+ }}
460
+ >
461
+ <>{props.children}</>
462
+ </label>
463
+ ) : null}
464
+ {props.as === "small" ? (
465
+ <small
466
+ className={`ttdk-text ${props.className || ""}`.trim()}
467
+ data-variant={props.variant || "neutral"}
468
+ data-size={props.size}
469
+ data-weight={props.weight}
470
+ data-align={props.align}
471
+ data-transform={props.transform}
472
+ data-truncate={props.truncate}
473
+ data-line-clamp={props.lineClamp}
474
+ data-no-wrap={props.noWrap}
475
+ data-italic={props.italic}
476
+ data-underline={props.underline}
477
+ style={{
478
+ ...(props.margin
479
+ ? {
480
+ margin: props.margin,
481
+ }
482
+ : {}),
483
+ ...(props.padding
484
+ ? {
485
+ padding: props.padding,
486
+ }
487
+ : {}),
488
+ ...buildUiVars(props.ui),
489
+ ...((props as any)["style"] || {}),
490
+ }}
491
+ >
492
+ <>{props.children}</>
493
+ </small>
494
+ ) : null}
495
+ {props.as === "strong" ? (
496
+ <strong
497
+ className={`ttdk-text ${props.className || ""}`.trim()}
498
+ data-variant={props.variant || "neutral"}
499
+ data-size={props.size}
500
+ data-weight={props.weight || "bold"}
501
+ data-align={props.align}
502
+ data-transform={props.transform}
503
+ data-truncate={props.truncate}
504
+ data-line-clamp={props.lineClamp}
505
+ data-no-wrap={props.noWrap}
506
+ data-italic={props.italic}
507
+ data-underline={props.underline}
508
+ style={{
509
+ ...(props.margin
510
+ ? {
511
+ margin: props.margin,
512
+ }
513
+ : {}),
514
+ ...(props.padding
515
+ ? {
516
+ padding: props.padding,
517
+ }
518
+ : {}),
519
+ ...buildUiVars(props.ui),
520
+ ...((props as any)["style"] || {}),
521
+ }}
522
+ >
523
+ <>{props.children}</>
524
+ </strong>
525
+ ) : null}
526
+ {props.as === "em" ? (
527
+ <em
528
+ data-italic="true"
529
+ className={`ttdk-text ${props.className || ""}`.trim()}
530
+ data-variant={props.variant || "neutral"}
531
+ data-size={props.size}
532
+ data-weight={props.weight}
533
+ data-align={props.align}
534
+ data-transform={props.transform}
535
+ data-truncate={props.truncate}
536
+ data-line-clamp={props.lineClamp}
537
+ data-no-wrap={props.noWrap}
538
+ data-underline={props.underline}
539
+ style={{
540
+ ...(props.margin
541
+ ? {
542
+ margin: props.margin,
543
+ }
544
+ : {}),
545
+ ...(props.padding
546
+ ? {
547
+ padding: props.padding,
548
+ }
549
+ : {}),
550
+ ...buildUiVars(props.ui),
551
+ ...((props as any)["style"] || {}),
552
+ }}
553
+ >
554
+ <>{props.children}</>
555
+ </em>
556
+ ) : null}
557
+ {props.as === "code" ? (
558
+ <code
559
+ className={`ttdk-text ${props.className || ""}`.trim()}
560
+ data-variant={props.variant || "neutral"}
561
+ data-size={props.size}
562
+ data-weight={props.weight}
563
+ data-align={props.align}
564
+ data-transform={props.transform}
565
+ data-truncate={props.truncate}
566
+ data-line-clamp={props.lineClamp}
567
+ data-no-wrap={props.noWrap}
568
+ data-italic={props.italic}
569
+ data-underline={props.underline}
570
+ style={{
571
+ ...(props.margin
572
+ ? {
573
+ margin: props.margin,
574
+ }
575
+ : {}),
576
+ ...(props.padding
577
+ ? {
578
+ padding: props.padding,
579
+ }
580
+ : {}),
581
+ ...buildUiVars(props.ui),
582
+ ...((props as any)["style"] || {}),
583
+ }}
584
+ >
585
+ <>{props.children}</>
586
+ </code>
587
+ ) : null}
588
+ {props.as === "blockquote" ? (
589
+ <blockquote
590
+ data-italic="true"
591
+ className={`ttdk-text ${props.className || ""}`.trim()}
592
+ data-variant={props.variant || "neutral"}
593
+ data-size={props.size}
594
+ data-weight={props.weight}
595
+ data-align={props.align}
596
+ data-transform={props.transform}
597
+ data-truncate={props.truncate}
598
+ data-line-clamp={props.lineClamp}
599
+ data-no-wrap={props.noWrap}
600
+ data-underline={props.underline}
601
+ style={{
602
+ ...(props.margin
603
+ ? {
604
+ margin: props.margin,
605
+ }
606
+ : {}),
607
+ ...(props.padding
608
+ ? {
609
+ padding: props.padding,
610
+ }
611
+ : {}),
612
+ ...buildUiVars(props.ui),
613
+ ...((props as any)["style"] || {}),
614
+ }}
615
+ >
616
+ <>{props.children}</>
617
+ </blockquote>
618
+ ) : null}
619
+ {props.as === "a" ? (
620
+ <a
621
+ className={`ttdk-text ${props.className || ""}`.trim()}
622
+ href={props.href}
623
+ target={props.target}
624
+ data-variant={props.variant || "info"}
625
+ data-size={props.size}
626
+ data-weight={props.weight}
627
+ data-align={props.align}
628
+ data-transform={props.transform}
629
+ data-truncate={props.truncate}
630
+ data-line-clamp={props.lineClamp}
631
+ data-no-wrap={props.noWrap}
632
+ data-italic={props.italic}
633
+ data-underline={props.underline}
634
+ style={{
635
+ ...(props.margin
636
+ ? {
637
+ margin: props.margin,
638
+ }
639
+ : {}),
640
+ ...(props.padding
641
+ ? {
642
+ padding: props.padding,
643
+ }
644
+ : {}),
645
+ ...buildUiVars(props.ui),
646
+ ...((props as any)["style"] || {}),
647
+ }}
648
+ >
649
+ <>{props.children}</>
650
+ </a>
651
+ ) : null}
652
+ {!props.as || props.as === "span" ? (
653
+ <span
654
+ className={`ttdk-text ${props.className || ""}`.trim()}
655
+ data-variant={props.variant || "neutral"}
656
+ data-size={props.size}
657
+ data-weight={props.weight}
658
+ data-align={props.align}
659
+ data-transform={props.transform}
660
+ data-truncate={props.truncate}
661
+ data-line-clamp={props.lineClamp}
662
+ data-no-wrap={props.noWrap}
663
+ data-italic={props.italic}
664
+ data-underline={props.underline}
665
+ style={{
666
+ ...(props.margin
667
+ ? {
668
+ margin: props.margin,
669
+ }
670
+ : {}),
671
+ ...(props.padding
672
+ ? {
673
+ padding: props.padding,
674
+ }
675
+ : {}),
676
+ ...buildUiVars(props.ui),
677
+ ...((props as any)["style"] || {}),
678
+ }}
679
+ >
680
+ <>{props.children}</>
681
+ </span>
682
+ ) : null}
683
+ </>
684
+ );
685
+ }
686
+
687
+ export default Text;
688
+
689
+ export { Text };