@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,129 @@
1
+ # <Text /> — TTDK Component Reference
2
+
3
+ TTDK Text component with multi-theme support.
4
+
5
+ ## 1. Stylesheets & Theming (Pure CSS)
6
+ Import the corresponding stylesheet for the theme you wish to use:
7
+ - **COMMON Theme**: `import "@ttdk-design-system/library-<react|vue|svelte>/web/text/text.css";`
8
+
9
+ ## 2. Subpath Component Import
10
+ ```ts
11
+ // React
12
+ import Text from "@ttdk-design-system/library-react/web/text";
13
+
14
+ // Vue 3
15
+ import Text from "@ttdk-design-system/library-vue/web/text";
16
+
17
+ // Svelte
18
+ import Text from "@ttdk-design-system/library-svelte/web/text";
19
+ ```
20
+
21
+ ## 3. Props & API Reference
22
+
23
+ | Prop | Type | Default | Description |
24
+ | :--- | :--- | :--- | :--- |
25
+ | `as?` | `| 'span'
26
+ | 'p'
27
+ | 'div'
28
+ | 'h1'
29
+ | 'h2'
30
+ | 'h3'
31
+ | 'h4'
32
+ | 'h5'
33
+ | 'h6'
34
+ | 'label'
35
+ | 'small'
36
+ | 'strong'
37
+ | 'em'
38
+ | 'code'
39
+ | 'blockquote'
40
+ | 'a'` | `span` | Tag elemen HTML semantik yang digunakan untuk me-render teks. - `'span'`: Inline span (default). - `'p'`: Paragraf teks. - `'div'`: Blok generik. - `'h1'` s/d `'h6'`: Heading level 1 sampai 6. - `'label'`: Elemen label formulir. - `'small'`: Teks berukuran kecil / disclaimer. - `'strong'`: Teks tebal berpenekanan penting. - `'em'`: Teks berpenekanan miring. - `'code'`: Format kode inline monospace. - `'blockquote'`: Kutipan blok. - `'a'`: Tautan / link teks. |
41
+ | `variant?` | `| 'primary'
42
+ | 'success'
43
+ | 'info'
44
+ | 'warning'
45
+ | 'danger'
46
+ | 'neutral'` | `neutral` | Varian warna semantik teks (disesuaikan dengan Chip / Badge TTDK). - `'primary'`: Warna utama tema penekanan aksi (brand teal). - `'success'`: Warna status sukses (hijau). - `'info'`: Warna status informasi (biru). - `'warning'`: Warna status peringatan (kuning). - `'danger'`: Warna status bahaya / kesalahan (merah). - `'neutral'`: Warna teks dasar foreground (standar). |
47
+ | `size?` | `'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl'` | `-` | Ukuran tipografi teks yang memengaruhi font-size dan line-height. - `'xs'`: 12px (line-height: 16px) - `'sm'`: 14px (line-height: 20px) - `'md'`: 16px (line-height: 24px) - `'lg'`: 18px (line-height: 28px) - `'xl'`: 20px (line-height: 28px) - `'2xl'`: 24px (line-height: 32px) - `'3xl'`: 30px (line-height: 36px) - `'4xl'`: 36px (line-height: 40px) - `'5xl'`: 48px (line-height: 1.1) - `'6xl'`: 60px (line-height: 1.05) |
48
+ | `weight?` | `'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold'` | `-` | Ketebalan font teks. - `'normal'`: 400 - `'medium'`: 500 - `'semibold'`: 600 - `'bold'`: 700 - `'extrabold'`: 800 |
49
+ | `align?` | `'left' | 'center' | 'right' | 'justify'` | `-` | Perataan horizontal teks. - `'left'`: Rata kiri. - `'center'`: Rata tengah. - `'right'`: Rata kanan. - `'justify'`: Rata kiri-kanan. |
50
+ | `transform?` | `'uppercase' | 'lowercase' | 'capitalize' | 'normal'` | `-` | Transformasi huruf kapital/kecil pada teks. - `'uppercase'`: SEMUA HURUF BESAR. - `'lowercase'`: semua huruf kecil. - `'capitalize'`: Huruf Pertama Besar Setiap Kata. - `'normal'`: Normal sesuai aslinya. |
51
+ | `truncate?` | `boolean` | `false` | Memotong teks satu baris yang melebihi batas dengan elipsis (...). |
52
+ | `lineClamp?` | `'1' | '2' | '3' | '4' | '5' | '6' | 1 | 2 | 3 | 4 | 5 | 6` | `-` | Memotong teks multi-baris pada jumlah baris tertentu menggunakan CSS line-clamp. |
53
+ | `noWrap?` | `boolean` | `false` | Mencegah teks dari wrapping (white-space: nowrap). |
54
+ | `italic?` | `boolean` | `false` | Menampilkan teks dalam gaya miring (italic). |
55
+ | `underline?` | `boolean` | `false` | Menampilkan garis bawah pada teks (underline). |
56
+ | `margin?` | `string` | `-` | Margin kustom pada elemen teks (misal: '0 0 16px 0', '8px', '1rem'). |
57
+ | `padding?` | `string` | `-` | Padding kustom pada elemen teks (misal: '8px 12px', '4px 8px'). |
58
+ | `href?` | `string` | `-` | URL tujuan jika `as="a"`. |
59
+ | `target?` | `string` | `-` | Target link jika `as="a"`. |
60
+ | `className?` | `string` | `-` | Class CSS kustom. |
61
+ | `style?` | `any` | `-` | Inline CSS style object native. |
62
+ | `ui?` | `UiProps` | `-` | Kustomisasi visual granular ala Nuxt UI / Universal UI System (UiProps). |
63
+ | `children?` | `any` | `-` | Konten teks atau elemen anak di dalam komponen Text. |
64
+
65
+ ## 4. Usage Examples
66
+
67
+ ### React Example
68
+ ```tsx
69
+ import Text from "@ttdk-design-system/library-react/web/text";
70
+ import "@ttdk-design-system/library-react/web/text/text.css";
71
+
72
+ export function Example() {
73
+ return (
74
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
75
+ <Text as="h1" size="3xl" weight="bold">
76
+ Judul Halaman Utama
77
+ </Text>
78
+ <Text as="p" size="md" variant="neutral">
79
+ Paragraf deskripsi dengan ukuran standar dan warna netral.
80
+ </Text>
81
+ <Text as="small" variant="neutral">
82
+ Terakhir diperbarui pada 04 September 2026.
83
+ </Text>
84
+ </div>
85
+ );
86
+ }
87
+ ```
88
+
89
+ ### Vue 3 Example
90
+ ```vue
91
+ <script setup lang="ts">
92
+ import Text from "@ttdk-design-system/library-vue/web/text";
93
+ import "@ttdk-design-system/library-vue/web/text/text.css";
94
+ </script>
95
+
96
+ <template>
97
+ <div style="display: flex; flex-direction: column; gap: 8px;">
98
+ <Text as="h1" size="3xl" weight="bold">
99
+ Judul Halaman Utama
100
+ </Text>
101
+ <Text as="p" size="md" variant="neutral">
102
+ Paragraf deskripsi dengan ukuran standar dan warna netral.
103
+ </Text>
104
+ <Text as="small" variant="neutral">
105
+ Terakhir diperbarui pada 04 September 2026.
106
+ </Text>
107
+ </div>
108
+ </template>
109
+ ```
110
+
111
+ ### Svelte Example
112
+ ```svelte
113
+ <script lang="ts">
114
+ import Text from "@ttdk-design-system/library-svelte/web/text";
115
+ import "@ttdk-design-system/library-svelte/web/text/text.css";
116
+ </script>
117
+
118
+ <div style="display: flex; flex-direction: column; gap: 8px;">
119
+ <Text as="h1" size="3xl" weight="bold">
120
+ Judul Halaman Utama
121
+ </Text>
122
+ <Text as="p" size="md" variant="neutral">
123
+ Paragraf deskripsi dengan ukuran standar dan warna netral.
124
+ </Text>
125
+ <Text as="small" variant="neutral">
126
+ Terakhir diperbarui pada 04 September 2026.
127
+ </Text>
128
+ </div>
129
+ ```
@@ -0,0 +1,3 @@
1
+ export { default as Text } from './text';
2
+ export { default } from "./text";
3
+ export type { TextProps, TextUiProps } from "./text"
@@ -0,0 +1,195 @@
1
+ {
2
+ "name": "@ttdk-design-system/text",
3
+ "component": "Text",
4
+ "folder": "text",
5
+ "description": "TTDK Text component with multi-theme support.",
6
+ "stylesheets": [
7
+ {
8
+ "theme": "common",
9
+ "file": "text.css",
10
+ "importPath": "web/text/text.css"
11
+ }
12
+ ],
13
+ "props": {
14
+ "as": {
15
+ "name": "as",
16
+ "type": "| 'span'\n | 'p'\n | 'div'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'label'\n | 'small'\n | 'strong'\n | 'em'\n | 'code'\n | 'blockquote'\n | 'a'",
17
+ "optional": true,
18
+ "default": "span",
19
+ "description": "Tag elemen HTML semantik yang digunakan untuk me-render teks. - `'span'`: Inline span (default). - `'p'`: Paragraf teks. - `'div'`: Blok generik. - `'h1'` s/d `'h6'`: Heading level 1 sampai 6. - `'label'`: Elemen label formulir. - `'small'`: Teks berukuran kecil / disclaimer. - `'strong'`: Teks tebal berpenekanan penting. - `'em'`: Teks berpenekanan miring. - `'code'`: Format kode inline monospace. - `'blockquote'`: Kutipan blok. - `'a'`: Tautan / link teks.",
20
+ "example": null,
21
+ "param": null
22
+ },
23
+ "variant": {
24
+ "name": "variant",
25
+ "type": "| 'primary'\n | 'success'\n | 'info'\n | 'warning'\n | 'danger'\n | 'neutral'",
26
+ "optional": true,
27
+ "default": "neutral",
28
+ "description": "Varian warna semantik teks (disesuaikan dengan Chip / Badge TTDK). - `'primary'`: Warna utama tema penekanan aksi (brand teal). - `'success'`: Warna status sukses (hijau). - `'info'`: Warna status informasi (biru). - `'warning'`: Warna status peringatan (kuning). - `'danger'`: Warna status bahaya / kesalahan (merah). - `'neutral'`: Warna teks dasar foreground (standar).",
29
+ "example": null,
30
+ "param": null
31
+ },
32
+ "size": {
33
+ "name": "size",
34
+ "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl'",
35
+ "optional": true,
36
+ "default": null,
37
+ "description": "Ukuran tipografi teks yang memengaruhi font-size dan line-height. - `'xs'`: 12px (line-height: 16px) - `'sm'`: 14px (line-height: 20px) - `'md'`: 16px (line-height: 24px) - `'lg'`: 18px (line-height: 28px) - `'xl'`: 20px (line-height: 28px) - `'2xl'`: 24px (line-height: 32px) - `'3xl'`: 30px (line-height: 36px) - `'4xl'`: 36px (line-height: 40px) - `'5xl'`: 48px (line-height: 1.1) - `'6xl'`: 60px (line-height: 1.05)",
38
+ "example": null,
39
+ "param": null
40
+ },
41
+ "weight": {
42
+ "name": "weight",
43
+ "type": "'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold'",
44
+ "optional": true,
45
+ "default": null,
46
+ "description": "Ketebalan font teks. - `'normal'`: 400 - `'medium'`: 500 - `'semibold'`: 600 - `'bold'`: 700 - `'extrabold'`: 800",
47
+ "example": null,
48
+ "param": null
49
+ },
50
+ "align": {
51
+ "name": "align",
52
+ "type": "'left' | 'center' | 'right' | 'justify'",
53
+ "optional": true,
54
+ "default": null,
55
+ "description": "Perataan horizontal teks. - `'left'`: Rata kiri. - `'center'`: Rata tengah. - `'right'`: Rata kanan. - `'justify'`: Rata kiri-kanan.",
56
+ "example": null,
57
+ "param": null
58
+ },
59
+ "transform": {
60
+ "name": "transform",
61
+ "type": "'uppercase' | 'lowercase' | 'capitalize' | 'normal'",
62
+ "optional": true,
63
+ "default": null,
64
+ "description": "Transformasi huruf kapital/kecil pada teks. - `'uppercase'`: SEMUA HURUF BESAR. - `'lowercase'`: semua huruf kecil. - `'capitalize'`: Huruf Pertama Besar Setiap Kata. - `'normal'`: Normal sesuai aslinya.",
65
+ "example": null,
66
+ "param": null
67
+ },
68
+ "truncate": {
69
+ "name": "truncate",
70
+ "type": "boolean",
71
+ "optional": true,
72
+ "default": "false",
73
+ "description": "Memotong teks satu baris yang melebihi batas dengan elipsis (...).",
74
+ "example": null,
75
+ "param": null
76
+ },
77
+ "lineClamp": {
78
+ "name": "lineClamp",
79
+ "type": "'1' | '2' | '3' | '4' | '5' | '6' | 1 | 2 | 3 | 4 | 5 | 6",
80
+ "optional": true,
81
+ "default": null,
82
+ "description": "Memotong teks multi-baris pada jumlah baris tertentu menggunakan CSS line-clamp.",
83
+ "example": null,
84
+ "param": null
85
+ },
86
+ "noWrap": {
87
+ "name": "noWrap",
88
+ "type": "boolean",
89
+ "optional": true,
90
+ "default": "false",
91
+ "description": "Mencegah teks dari wrapping (white-space: nowrap).",
92
+ "example": null,
93
+ "param": null
94
+ },
95
+ "italic": {
96
+ "name": "italic",
97
+ "type": "boolean",
98
+ "optional": true,
99
+ "default": "false",
100
+ "description": "Menampilkan teks dalam gaya miring (italic).",
101
+ "example": null,
102
+ "param": null
103
+ },
104
+ "underline": {
105
+ "name": "underline",
106
+ "type": "boolean",
107
+ "optional": true,
108
+ "default": "false",
109
+ "description": "Menampilkan garis bawah pada teks (underline).",
110
+ "example": null,
111
+ "param": null
112
+ },
113
+ "margin": {
114
+ "name": "margin",
115
+ "type": "string",
116
+ "optional": true,
117
+ "default": null,
118
+ "description": "Margin kustom pada elemen teks (misal: '0 0 16px 0', '8px', '1rem').",
119
+ "example": null,
120
+ "param": null
121
+ },
122
+ "padding": {
123
+ "name": "padding",
124
+ "type": "string",
125
+ "optional": true,
126
+ "default": null,
127
+ "description": "Padding kustom pada elemen teks (misal: '8px 12px', '4px 8px').",
128
+ "example": null,
129
+ "param": null
130
+ },
131
+ "href": {
132
+ "name": "href",
133
+ "type": "string",
134
+ "optional": true,
135
+ "default": null,
136
+ "description": "URL tujuan jika `as=\"a\"`.",
137
+ "example": null,
138
+ "param": null
139
+ },
140
+ "target": {
141
+ "name": "target",
142
+ "type": "string",
143
+ "optional": true,
144
+ "default": null,
145
+ "description": "Target link jika `as=\"a\"`.",
146
+ "example": null,
147
+ "param": null
148
+ },
149
+ "className": {
150
+ "name": "className",
151
+ "type": "string",
152
+ "optional": true,
153
+ "default": null,
154
+ "description": "Class CSS kustom.",
155
+ "example": null,
156
+ "param": null
157
+ },
158
+ "style": {
159
+ "name": "style",
160
+ "type": "any",
161
+ "optional": true,
162
+ "default": null,
163
+ "description": "Inline CSS style object native.",
164
+ "example": null,
165
+ "param": null
166
+ },
167
+ "ui": {
168
+ "name": "ui",
169
+ "type": "UiProps",
170
+ "optional": true,
171
+ "default": null,
172
+ "description": "Kustomisasi visual granular ala Nuxt UI / Universal UI System (UiProps).",
173
+ "example": null,
174
+ "param": null
175
+ },
176
+ "children": {
177
+ "name": "children",
178
+ "type": "any",
179
+ "optional": true,
180
+ "default": null,
181
+ "description": "Konten teks atau elemen anak di dalam komponen Text.",
182
+ "example": null,
183
+ "param": null
184
+ }
185
+ },
186
+ "subInterfaces": {},
187
+ "supportedFrameworks": [
188
+ "react",
189
+ "vue",
190
+ "svelte"
191
+ ],
192
+ "themes": [
193
+ "tw"
194
+ ]
195
+ }
@@ -0,0 +1 @@
1
+ :root{--ttdk-text-font-sans:var(--ttdk-font-sans);--ttdk-text-font-mono:var(--ttdk-font-mono);--ttdk-color-text-default:var(--ttdk-text-icon-primary);--ttdk-color-text-muted:var(--ttdk-text-icon-secondary);--ttdk-color-text-primary:var(--ttdk-brand-default);--ttdk-color-text-secondary:var(--ttdk-text-icon-secondary);--ttdk-color-text-accent:var(--ttdk-text-icon-status-info);--ttdk-color-text-danger:var(--ttdk-text-icon-status-error);--ttdk-color-text-success:var(--ttdk-text-icon-status-success);--ttdk-color-text-warning:var(--ttdk-text-icon-status-warning);--ttdk-color-text-info:var(--ttdk-text-icon-status-info);--ttdk-code-bg:var(--ttdk-bg-secondary-disabled);--ttdk-code-border:var(--ttdk-stroke-subtle);--ttdk-blockquote-border:var(--ttdk-stroke-divider)}.dark,:root.dark{--ttdk-color-text-default:var(--ttdk-text-icon-primary);--ttdk-color-text-muted:var(--ttdk-text-icon-secondary);--ttdk-color-text-primary:var(--ttdk-brand-default);--ttdk-color-text-secondary:var(--ttdk-text-icon-secondary);--ttdk-color-text-accent:var(--ttdk-text-icon-status-info);--ttdk-color-text-danger:var(--ttdk-text-icon-status-error);--ttdk-color-text-success:var(--ttdk-text-icon-status-success);--ttdk-color-text-warning:var(--ttdk-text-icon-status-warning);--ttdk-color-text-info:var(--ttdk-text-icon-status-info);--ttdk-code-bg:var(--ttdk-bg-secondary-disabled);--ttdk-code-border:var(--ttdk-stroke-subtle);--ttdk-blockquote-border:var(--ttdk-stroke-divider)}.ttdk-text{font-family:var(--ttdk-text-font-sans);color:var(--ttdk-ui-color,var(--ttdk-color-text-default));box-sizing:border-box;margin:0;padding:0;font-size:16px;font-weight:400;line-height:24px;transition:color .15s}h1.ttdk-text{letter-spacing:-.02em;font-size:36px;font-weight:700;line-height:40px}h2.ttdk-text{letter-spacing:-.015em;font-size:30px;font-weight:600;line-height:36px}h3.ttdk-text{letter-spacing:-.01em;font-size:24px;font-weight:600;line-height:32px}h4.ttdk-text{font-size:20px;font-weight:600;line-height:28px}h5.ttdk-text{font-size:18px;font-weight:500;line-height:28px}h6.ttdk-text{font-size:16px;font-weight:500;line-height:24px}p.ttdk-text{font-size:16px;line-height:24px}small.ttdk-text{color:var(--ttdk-color-text-muted);font-size:12px;line-height:16px}label.ttdk-text{font-size:14px;font-weight:500;line-height:20px}strong.ttdk-text{font-weight:700}.ttdk-text[data-variant=neutral]{color:var(--ttdk-color-text-default)}.ttdk-text[data-variant=primary]{color:var(--ttdk-color-text-primary)}.ttdk-text[data-variant=success]{color:var(--ttdk-color-text-success)}.ttdk-text[data-variant=info]{color:var(--ttdk-color-text-info)}.ttdk-text[data-variant=warning]{color:var(--ttdk-color-text-warning)}.ttdk-text[data-variant=danger]{color:var(--ttdk-color-text-danger)}.ttdk-text[data-variant=muted],.ttdk-text[data-variant=secondary]{color:var(--ttdk-color-text-secondary)}.ttdk-text[data-variant=accent]{color:var(--ttdk-color-text-accent)}.ttdk-text[data-size=xs]{font-size:12px;line-height:16px}.ttdk-text[data-size=sm]{font-size:14px;line-height:20px}.ttdk-text[data-size=md]{font-size:16px;line-height:24px}.ttdk-text[data-size=lg]{font-size:18px;line-height:28px}.ttdk-text[data-size=xl]{font-size:20px;line-height:28px}.ttdk-text[data-size="2xl"]{font-size:24px;line-height:32px}.ttdk-text[data-size="3xl"]{font-size:30px;line-height:36px}.ttdk-text[data-size="4xl"]{letter-spacing:-.02em;font-size:36px;line-height:40px}.ttdk-text[data-size="5xl"]{letter-spacing:-.025em;font-size:48px;line-height:1.1}.ttdk-text[data-size="6xl"]{letter-spacing:-.03em;font-size:60px;line-height:1.05}.ttdk-text[data-weight=normal]{font-weight:400}.ttdk-text[data-weight=medium]{font-weight:500}.ttdk-text[data-weight=semibold]{font-weight:600}.ttdk-text[data-weight=bold]{font-weight:700}.ttdk-text[data-weight=extrabold]{font-weight:800}.ttdk-text[data-align=left]{text-align:left}.ttdk-text[data-align=center]{text-align:center}.ttdk-text[data-align=right]{text-align:right}.ttdk-text[data-align=justify]{text-align:justify}.ttdk-text[data-transform=uppercase]{text-transform:uppercase}.ttdk-text[data-transform=lowercase]{text-transform:lowercase}.ttdk-text[data-transform=capitalize]{text-transform:capitalize}.ttdk-text[data-transform=normal]{text-transform:none}.ttdk-text[data-italic=true]{font-style:italic}.ttdk-text[data-underline=true]{text-underline-offset:3px;text-decoration:underline}.ttdk-text[data-truncate=true]{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.ttdk-text[data-line-clamp="1"]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ttdk-text[data-line-clamp="2"]{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ttdk-text[data-line-clamp="3"]{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ttdk-text[data-line-clamp="4"]{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ttdk-text[data-line-clamp="5"]{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.ttdk-text[data-line-clamp="6"]{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}code.ttdk-text{font-family:var(--ttdk-text-font-mono);background-color:var(--ttdk-code-bg);border:var(--ttdk-stroke-width-thin) solid var(--ttdk-code-border);border-radius:var(--ttdk-radius-input-sm);padding:2px 6px;font-size:.875em}blockquote.ttdk-text{border-left:var(--ttdk-stroke-width-thick) solid var(--ttdk-blockquote-border);padding-left:var(--ttdk-spacing-md);color:var(--ttdk-color-text-muted);font-style:italic}a.ttdk-text{color:var(--ttdk-color-text-accent);text-underline-offset:3px;cursor:pointer;text-decoration:underline}a.ttdk-text:hover{opacity:.85}