@ttdk-design-system/library-svelte 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/AI_GUIDE.md +6518 -0
  2. package/dist/core/index.d.ts +2 -0
  3. package/dist/core/index.js +2 -0
  4. package/dist/core/tailwind-preset.cjs +62 -0
  5. package/dist/core/tailwind-preset.d.cts +63 -0
  6. package/dist/core/tailwind-preset.d.ts +74 -0
  7. package/dist/core/tailwind-preset.js +79 -0
  8. package/dist/core/theme/tokens.css +663 -0
  9. package/dist/core/types.d.ts +152 -0
  10. package/dist/core/types.js +735 -0
  11. package/dist/index.d.ts +14 -0
  12. package/dist/index.js +15 -0
  13. package/dist/tailwind-preset.cjs +62 -0
  14. package/dist/tailwind-preset.d.cts +63 -0
  15. package/dist/tailwind-preset.d.ts +74 -0
  16. package/dist/tailwind-preset.js +79 -0
  17. package/dist/types.d.ts +1 -0
  18. package/dist/types.js +1 -0
  19. package/dist/web/accordion/AI_GUIDE.md +149 -0
  20. package/dist/web/accordion/accordion.css +1 -0
  21. package/dist/web/accordion/accordion.svelte +217 -0
  22. package/dist/web/accordion/accordion.svelte.d.ts +224 -0
  23. package/dist/web/accordion/index.d.ts +2 -0
  24. package/dist/web/accordion/index.js +2 -0
  25. package/dist/web/accordion/manifest.json +351 -0
  26. package/dist/web/alert/AI_GUIDE.md +139 -0
  27. package/dist/web/alert/alert.css +1 -0
  28. package/dist/web/alert/alert.svelte +175 -0
  29. package/dist/web/alert/alert.svelte.d.ts +165 -0
  30. package/dist/web/alert/index.d.ts +2 -0
  31. package/dist/web/alert/index.js +2 -0
  32. package/dist/web/alert/manifest.json +240 -0
  33. package/dist/web/avatar/AI_GUIDE.md +118 -0
  34. package/dist/web/avatar/avatar.css +1 -0
  35. package/dist/web/avatar/avatar.svelte +108 -0
  36. package/dist/web/avatar/avatar.svelte.d.ts +147 -0
  37. package/dist/web/avatar/index.d.ts +2 -0
  38. package/dist/web/avatar/index.js +2 -0
  39. package/dist/web/avatar/manifest.json +195 -0
  40. package/dist/web/badge/AI_GUIDE.md +94 -0
  41. package/dist/web/badge/badge.css +1 -0
  42. package/dist/web/badge/badge.svelte +50 -0
  43. package/dist/web/badge/badge.svelte.d.ts +111 -0
  44. package/dist/web/badge/index.d.ts +2 -0
  45. package/dist/web/badge/index.js +2 -0
  46. package/dist/web/badge/manifest.json +141 -0
  47. package/dist/web/banner/AI_GUIDE.md +130 -0
  48. package/dist/web/banner/banner.css +1 -0
  49. package/dist/web/banner/banner.svelte +180 -0
  50. package/dist/web/banner/banner.svelte.d.ts +172 -0
  51. package/dist/web/banner/index.d.ts +2 -0
  52. package/dist/web/banner/index.js +2 -0
  53. package/dist/web/banner/manifest.json +240 -0
  54. package/dist/web/breadcrumb/AI_GUIDE.md +120 -0
  55. package/dist/web/breadcrumb/breadcrumb.css +1 -0
  56. package/dist/web/breadcrumb/breadcrumb.svelte +168 -0
  57. package/dist/web/breadcrumb/breadcrumb.svelte.d.ts +141 -0
  58. package/dist/web/breadcrumb/index.d.ts +2 -0
  59. package/dist/web/breadcrumb/index.js +2 -0
  60. package/dist/web/breadcrumb/manifest.json +225 -0
  61. package/dist/web/button/AI_GUIDE.md +121 -0
  62. package/dist/web/button/button.css +1 -0
  63. package/dist/web/button/button.svelte +154 -0
  64. package/dist/web/button/button.svelte.d.ts +159 -0
  65. package/dist/web/button/index.d.ts +2 -0
  66. package/dist/web/button/index.js +2 -0
  67. package/dist/web/button/manifest.json +177 -0
  68. package/dist/web/calendar/AI_GUIDE.md +151 -0
  69. package/dist/web/calendar/calendar.css +1 -0
  70. package/dist/web/calendar/calendar.svelte +1091 -0
  71. package/dist/web/calendar/calendar.svelte.d.ts +268 -0
  72. package/dist/web/calendar/index.d.ts +2 -0
  73. package/dist/web/calendar/index.js +2 -0
  74. package/dist/web/calendar/manifest.json +470 -0
  75. package/dist/web/card/AI_GUIDE.md +133 -0
  76. package/dist/web/card/card.css +1 -0
  77. package/dist/web/card/card.svelte +217 -0
  78. package/dist/web/card/card.svelte.d.ts +242 -0
  79. package/dist/web/card/index.d.ts +2 -0
  80. package/dist/web/card/index.js +2 -0
  81. package/dist/web/card/manifest.json +357 -0
  82. package/dist/web/checkbox/AI_GUIDE.md +146 -0
  83. package/dist/web/checkbox/checkbox.css +1 -0
  84. package/dist/web/checkbox/checkbox.svelte +131 -0
  85. package/dist/web/checkbox/checkbox.svelte.d.ts +199 -0
  86. package/dist/web/checkbox/index.d.ts +2 -0
  87. package/dist/web/checkbox/index.js +2 -0
  88. package/dist/web/checkbox/manifest.json +294 -0
  89. package/dist/web/chip/AI_GUIDE.md +186 -0
  90. package/dist/web/chip/chip.css +1 -0
  91. package/dist/web/chip/chip.svelte +113 -0
  92. package/dist/web/chip/chip.svelte.d.ts +145 -0
  93. package/dist/web/chip/index.d.ts +2 -0
  94. package/dist/web/chip/index.js +2 -0
  95. package/dist/web/chip/manifest.json +186 -0
  96. package/dist/web/dropdown/AI_GUIDE.md +167 -0
  97. package/dist/web/dropdown/dropdown.css +1 -0
  98. package/dist/web/dropdown/dropdown.svelte +844 -0
  99. package/dist/web/dropdown/dropdown.svelte.d.ts +361 -0
  100. package/dist/web/dropdown/index.d.ts +2 -0
  101. package/dist/web/dropdown/index.js +2 -0
  102. package/dist/web/dropdown/manifest.json +576 -0
  103. package/dist/web/flex/AI_GUIDE.md +113 -0
  104. package/dist/web/flex/flex-item.svelte +37 -0
  105. package/dist/web/flex/flex-item.svelte.d.ts +96 -0
  106. package/dist/web/flex/flex.css +1 -0
  107. package/dist/web/flex/flex.svelte +39 -0
  108. package/dist/web/flex/flex.svelte.d.ts +104 -0
  109. package/dist/web/flex/index.d.ts +3 -0
  110. package/dist/web/flex/index.js +3 -0
  111. package/dist/web/flex/manifest.json +162 -0
  112. package/dist/web/form/index.d.ts +1 -0
  113. package/dist/web/form/index.js +2 -0
  114. package/dist/web/grid/AI_GUIDE.md +112 -0
  115. package/dist/web/grid/grid-item.svelte +41 -0
  116. package/dist/web/grid/grid-item.svelte.d.ts +112 -0
  117. package/dist/web/grid/grid.css +1 -0
  118. package/dist/web/grid/grid.svelte +37 -0
  119. package/dist/web/grid/grid.svelte.d.ts +96 -0
  120. package/dist/web/grid/index.d.ts +3 -0
  121. package/dist/web/grid/index.js +3 -0
  122. package/dist/web/grid/manifest.json +153 -0
  123. package/dist/web/index.d.ts +58 -0
  124. package/dist/web/index.js +57 -0
  125. package/dist/web/input/AI_GUIDE.md +159 -0
  126. package/dist/web/input/index.d.ts +2 -0
  127. package/dist/web/input/index.js +2 -0
  128. package/dist/web/input/input.css +1 -0
  129. package/dist/web/input/input.svelte +283 -0
  130. package/dist/web/input/input.svelte.d.ts +283 -0
  131. package/dist/web/input/manifest.json +465 -0
  132. package/dist/web/input-number/AI_GUIDE.md +164 -0
  133. package/dist/web/input-number/index.d.ts +2 -0
  134. package/dist/web/input-number/index.js +2 -0
  135. package/dist/web/input-number/input-number.css +1 -0
  136. package/dist/web/input-number/input-number.svelte +783 -0
  137. package/dist/web/input-number/input-number.svelte.d.ts +352 -0
  138. package/dist/web/input-number/manifest.json +575 -0
  139. package/dist/web/modal/AI_GUIDE.md +171 -0
  140. package/dist/web/modal/index.d.ts +2 -0
  141. package/dist/web/modal/index.js +2 -0
  142. package/dist/web/modal/manifest.json +375 -0
  143. package/dist/web/modal/modal.css +1 -0
  144. package/dist/web/modal/modal.svelte +333 -0
  145. package/dist/web/modal/modal.svelte.d.ts +231 -0
  146. package/dist/web/pagination/AI_GUIDE.md +148 -0
  147. package/dist/web/pagination/index.d.ts +19 -0
  148. package/dist/web/pagination/index.js +19 -0
  149. package/dist/web/pagination/manifest.json +432 -0
  150. package/dist/web/pagination/pagination-content.svelte +25 -0
  151. package/dist/web/pagination/pagination-content.svelte.d.ts +36 -0
  152. package/dist/web/pagination/pagination-ellipsis.svelte +38 -0
  153. package/dist/web/pagination/pagination-ellipsis.svelte.d.ts +35 -0
  154. package/dist/web/pagination/pagination-first.svelte +105 -0
  155. package/dist/web/pagination/pagination-first.svelte.d.ts +74 -0
  156. package/dist/web/pagination/pagination-item.svelte +25 -0
  157. package/dist/web/pagination/pagination-item.svelte.d.ts +36 -0
  158. package/dist/web/pagination/pagination-last.svelte +105 -0
  159. package/dist/web/pagination/pagination-last.svelte.d.ts +74 -0
  160. package/dist/web/pagination/pagination-link.svelte +67 -0
  161. package/dist/web/pagination/pagination-link.svelte.d.ts +69 -0
  162. package/dist/web/pagination/pagination-next.svelte +99 -0
  163. package/dist/web/pagination/pagination-next.svelte.d.ts +75 -0
  164. package/dist/web/pagination/pagination-previous.svelte +99 -0
  165. package/dist/web/pagination/pagination-previous.svelte.d.ts +75 -0
  166. package/dist/web/pagination/pagination.css +1 -0
  167. package/dist/web/pagination/pagination.svelte +471 -0
  168. package/dist/web/pagination/pagination.svelte.d.ts +256 -0
  169. package/dist/web/popover/AI_GUIDE.md +163 -0
  170. package/dist/web/popover/index.d.ts +3 -0
  171. package/dist/web/popover/index.js +3 -0
  172. package/dist/web/popover/manifest.json +396 -0
  173. package/dist/web/popover/popover.css +1 -0
  174. package/dist/web/popover/popover.svelte +497 -0
  175. package/dist/web/popover/popover.svelte.d.ts +116 -0
  176. package/dist/web/radio/AI_GUIDE.md +155 -0
  177. package/dist/web/radio/index.d.ts +2 -0
  178. package/dist/web/radio/index.js +2 -0
  179. package/dist/web/radio/manifest.json +294 -0
  180. package/dist/web/radio/radio.css +1 -0
  181. package/dist/web/radio/radio.svelte +123 -0
  182. package/dist/web/radio/radio.svelte.d.ts +192 -0
  183. package/dist/web/selectbox/AI_GUIDE.md +216 -0
  184. package/dist/web/selectbox/index.d.ts +2 -0
  185. package/dist/web/selectbox/index.js +2 -0
  186. package/dist/web/selectbox/manifest.json +477 -0
  187. package/dist/web/selectbox/selectbox.css +1 -0
  188. package/dist/web/selectbox/selectbox.svelte +704 -0
  189. package/dist/web/selectbox/selectbox.svelte.d.ts +296 -0
  190. package/dist/web/sonner/AI_GUIDE.md +98 -0
  191. package/dist/web/sonner/index.d.ts +46 -0
  192. package/dist/web/sonner/index.js +64 -0
  193. package/dist/web/sonner/manifest.json +132 -0
  194. package/dist/web/sonner/sonner.css +1 -0
  195. package/dist/web/sonner/sonner.svelte +85 -0
  196. package/dist/web/sonner/sonner.svelte.d.ts +105 -0
  197. package/dist/web/table/AI_GUIDE.md +145 -0
  198. package/dist/web/table/index.d.ts +21 -0
  199. package/dist/web/table/index.js +22 -0
  200. package/dist/web/table/manifest.json +168 -0
  201. package/dist/web/table/table-body.svelte +23 -0
  202. package/dist/web/table/table-body.svelte.d.ts +36 -0
  203. package/dist/web/table/table-caption.svelte +23 -0
  204. package/dist/web/table/table-caption.svelte.d.ts +36 -0
  205. package/dist/web/table/table-cell.svelte +35 -0
  206. package/dist/web/table/table-cell.svelte.d.ts +57 -0
  207. package/dist/web/table/table-empty.svelte +56 -0
  208. package/dist/web/table/table-empty.svelte.d.ts +65 -0
  209. package/dist/web/table/table-footer.svelte +23 -0
  210. package/dist/web/table/table-footer.svelte.d.ts +36 -0
  211. package/dist/web/table/table-head.svelte +39 -0
  212. package/dist/web/table/table-head.svelte.d.ts +58 -0
  213. package/dist/web/table/table-header.svelte +23 -0
  214. package/dist/web/table/table-header.svelte.d.ts +36 -0
  215. package/dist/web/table/table-row.svelte +33 -0
  216. package/dist/web/table/table-row.svelte.d.ts +52 -0
  217. package/dist/web/table/table.css +1 -0
  218. package/dist/web/table/table.svelte +178 -0
  219. package/dist/web/table/table.svelte.d.ts +120 -0
  220. package/dist/web/tabs/AI_GUIDE.md +150 -0
  221. package/dist/web/tabs/index.d.ts +2 -0
  222. package/dist/web/tabs/index.js +2 -0
  223. package/dist/web/tabs/manifest.json +315 -0
  224. package/dist/web/tabs/tabs.css +1 -0
  225. package/dist/web/tabs/tabs.svelte +138 -0
  226. package/dist/web/tabs/tabs.svelte.d.ts +204 -0
  227. package/dist/web/text/AI_GUIDE.md +129 -0
  228. package/dist/web/text/index.d.ts +2 -0
  229. package/dist/web/text/index.js +2 -0
  230. package/dist/web/text/manifest.json +195 -0
  231. package/dist/web/text/text.css +1 -0
  232. package/dist/web/text/text.svelte +515 -0
  233. package/dist/web/text/text.svelte.d.ts +168 -0
  234. package/dist/web/textarea/AI_GUIDE.md +141 -0
  235. package/dist/web/textarea/index.d.ts +2 -0
  236. package/dist/web/textarea/index.js +2 -0
  237. package/dist/web/textarea/manifest.json +438 -0
  238. package/dist/web/textarea/textarea.css +1 -0
  239. package/dist/web/textarea/textarea.svelte +224 -0
  240. package/dist/web/textarea/textarea.svelte.d.ts +274 -0
  241. package/dist/web/tooltip/AI_GUIDE.md +110 -0
  242. package/dist/web/tooltip/index.d.ts +2 -0
  243. package/dist/web/tooltip/index.js +2 -0
  244. package/dist/web/tooltip/manifest.json +222 -0
  245. package/dist/web/tooltip/tooltip.css +1 -0
  246. package/dist/web/tooltip/tooltip.svelte +292 -0
  247. package/dist/web/tooltip/tooltip.svelte.d.ts +140 -0
  248. package/dist/webview/bottomsheet/AI_GUIDE.md +141 -0
  249. package/dist/webview/bottomsheet/bottomsheet.css +1 -0
  250. package/dist/webview/bottomsheet/bottomsheet.svelte +462 -0
  251. package/dist/webview/bottomsheet/bottomsheet.svelte.d.ts +200 -0
  252. package/dist/webview/bottomsheet/index.d.ts +4 -0
  253. package/dist/webview/bottomsheet/index.js +3 -0
  254. package/dist/webview/bottomsheet/manifest.json +377 -0
  255. package/dist/webview/button/AI_GUIDE.md +79 -0
  256. package/dist/webview/button/button-ios.css +1 -0
  257. package/dist/webview/button/button-ios.svelte +58 -0
  258. package/dist/webview/button/button-ios.svelte.d.ts +114 -0
  259. package/dist/webview/button/button-material.css +1 -0
  260. package/dist/webview/button/button-material.svelte +58 -0
  261. package/dist/webview/button/button-material.svelte.d.ts +114 -0
  262. package/dist/webview/button/index.d.ts +6 -0
  263. package/dist/webview/button/index.js +4 -0
  264. package/dist/webview/button/manifest.json +148 -0
  265. package/dist/webview/index.d.ts +6 -0
  266. package/dist/webview/index.js +6 -0
  267. package/llms.txt +6518 -0
  268. package/package.json +709 -4
  269. package/ttdk-manifest.json +10188 -0
  270. package/README.md +0 -3
@@ -0,0 +1,147 @@
1
+ import { SvelteComponent } from "svelte";
2
+ export type AvatarUiProps = UiProps;
3
+ export interface AvatarProps {
4
+ /**
5
+ * URL gambar profil avatar.
6
+ * Jika kosong atau gagal dimuat, tampilan otomatis beralih ke `initials` atau ikon pengguna bawaan.
7
+ */
8
+ src?: string;
9
+ /**
10
+ * Teks alternatif (alt) untuk elemen gambar avatar.
11
+ */
12
+ alt?: string;
13
+ /**
14
+ * Teks inisial pengguna yang ditampilkan di dalam lingkaran avatar (misal: "NA", "SR").
15
+ * Ditampilkan apabila `src` tidak tersedia atau gagal dimuat.
16
+ */
17
+ initials?: string;
18
+ /**
19
+ * Skala ukuran avatar:
20
+ * - `'xs'`: Lingkaran 28px.
21
+ * - `'sm'`: Lingkaran 32px.
22
+ * - `'md'`: Lingkaran 40px (standar).
23
+ * - `'lg'`: Lingkaran 48px.
24
+ * - `'xl'`: Lingkaran 56px.
25
+ *
26
+ * @default 'md'
27
+ */
28
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
29
+ /**
30
+ * Varian warna semantik untuk latar & teks/ikon fallback avatar:
31
+ * - `'info'`: Biru informasi sesuai standar profil (default).
32
+ * - `'primary'`: Brand Teal utama.
33
+ * - `'success'`: Hijau sukses.
34
+ * - `'warning'`: Kuning / amber peringatan.
35
+ * - `'danger'`: Merah bahaya.
36
+ * - `'neutral'`: Abu-abu netral.
37
+ *
38
+ * @default 'info'
39
+ */
40
+ variant?: "info" | "primary" | "success" | "warning" | "danger" | "neutral";
41
+ /**
42
+ * Sudut kelengkungan lingkaran avatar:
43
+ * - `'full'`: Lingkaran penuh 9999px (default).
44
+ * - `'lg'`: Radius membulat 12px.
45
+ * - `'md'`: Radius sedang 8px.
46
+ * - `'sm'`: Radius halus 4px.
47
+ * - `'none'`: Persegi tajam 0px.
48
+ *
49
+ * @default 'full'
50
+ */
51
+ rounded?: "none" | "sm" | "md" | "lg" | "full";
52
+ /**
53
+ * Indikator status kehadiran atau verifikasi di pojok kanan bawah lingkaran avatar:
54
+ * - `'online'`: Titik hijau status aktif.
55
+ * - `'offline'`: Titik abu-abu status luring.
56
+ * - `'verified'`: Lencana perisai biru terverifikasi.
57
+ */
58
+ status?: "online" | "offline" | "verified";
59
+ /**
60
+ * Ikon kustom untuk menggantikan ikon pengguna bawaan saat `src` dan `initials` tidak diisi.
61
+ */
62
+ icon?: any;
63
+ /**
64
+ * Warna kustom untuk ikon di dalam avatar.
65
+ */
66
+ iconColor?: string;
67
+ /**
68
+ * Menjadikan komponen avatar interaktif (memiliki efek hover & fokus keyboard).
69
+ * @default false
70
+ */
71
+ interactive?: boolean;
72
+ /**
73
+ * Menonaktifkan interaksi klik pada avatar.
74
+ * @default false
75
+ */
76
+ disabled?: boolean;
77
+ /**
78
+ * Event handler saat komponen avatar diklik.
79
+ */
80
+ onClick?: (event?: any) => void;
81
+ /**
82
+ * Event handler saat gambar `src` gagal dimuat.
83
+ */
84
+ onImageError?: (event?: any) => void;
85
+ /**
86
+ * Kustomisasi visual granular pada elemen root melalui style-like object (+ support pseudo-class: hover, active).
87
+ */
88
+ ui?: UiProps;
89
+ /**
90
+ * Inline CSS style object native pada elemen root.
91
+ */
92
+ style?: any;
93
+ /**
94
+ * Style kustom untuk elemen gambar `<img>` di dalam avatar (UiProps).
95
+ */
96
+ imageStyle?: UiProps;
97
+ /**
98
+ * Class CSS kustom untuk elemen gambar `<img>`.
99
+ */
100
+ imageClass?: string;
101
+ /**
102
+ * Class CSS kustom pada elemen root.
103
+ */
104
+ className?: string;
105
+ /**
106
+ * Slot konten tambahan atau pengganti ikon di dalam avatar.
107
+ */
108
+ children?: any;
109
+ }
110
+ import { UiProps } from "../../core/types";
111
+ declare const __propDef: {
112
+ props: {
113
+ onImageError?: AvatarProps["onImageError"];
114
+ disabled?: AvatarProps["disabled"];
115
+ onClick?: AvatarProps["onClick"];
116
+ className?: AvatarProps["className"];
117
+ size?: AvatarProps["size"];
118
+ variant?: AvatarProps["variant"];
119
+ rounded?: AvatarProps["rounded"];
120
+ src?: AvatarProps["src"];
121
+ initials?: AvatarProps["initials"];
122
+ interactive?: AvatarProps["interactive"];
123
+ ui?: AvatarProps["ui"];
124
+ iconColor?: AvatarProps["iconColor"];
125
+ imageClass?: AvatarProps["imageClass"];
126
+ alt?: AvatarProps["alt"];
127
+ imageStyle?: AvatarProps["imageStyle"];
128
+ icon?: AvatarProps["icon"];
129
+ status?: AvatarProps["status"];
130
+ };
131
+ events: {
132
+ click: CustomEvent<any>;
133
+ } & {
134
+ [evt: string]: CustomEvent<any>;
135
+ };
136
+ slots: {
137
+ default: {};
138
+ };
139
+ exports?: {} | undefined;
140
+ bindings?: string | undefined;
141
+ };
142
+ type AvatarProps_ = typeof __propDef.props;
143
+ export type AvatarEvents = typeof __propDef.events;
144
+ export type AvatarSlots = typeof __propDef.slots;
145
+ export default class Avatar extends SvelteComponent<AvatarProps_, AvatarEvents, AvatarSlots> {
146
+ }
147
+ export {};
@@ -0,0 +1,2 @@
1
+ export { default } from './avatar.svelte';
2
+ export { default as Avatar } from './avatar.svelte';
@@ -0,0 +1,2 @@
1
+ export { default } from './avatar.svelte';
2
+ export { default as Avatar } from './avatar.svelte';
@@ -0,0 +1,195 @@
1
+ {
2
+ "name": "@ttdk-design-system/avatar",
3
+ "component": "Avatar",
4
+ "folder": "avatar",
5
+ "description": "Komponen Avatar untuk menampilkan foto profil, inisial nama, atau ikon pengguna.",
6
+ "stylesheets": [
7
+ {
8
+ "theme": "common",
9
+ "file": "avatar.css",
10
+ "importPath": "web/avatar/avatar.css"
11
+ }
12
+ ],
13
+ "props": {
14
+ "src": {
15
+ "name": "src",
16
+ "type": "string",
17
+ "optional": true,
18
+ "default": null,
19
+ "description": "URL gambar profil avatar. Jika kosong atau gagal dimuat, tampilan otomatis beralih ke `initials` atau ikon pengguna bawaan.",
20
+ "example": null,
21
+ "param": null
22
+ },
23
+ "alt": {
24
+ "name": "alt",
25
+ "type": "string",
26
+ "optional": true,
27
+ "default": null,
28
+ "description": "Teks alternatif (alt) untuk elemen gambar avatar.",
29
+ "example": null,
30
+ "param": null
31
+ },
32
+ "initials": {
33
+ "name": "initials",
34
+ "type": "string",
35
+ "optional": true,
36
+ "default": null,
37
+ "description": "Teks inisial pengguna yang ditampilkan di dalam lingkaran avatar (misal: \"NA\", \"SR\"). Ditampilkan apabila `src` tidak tersedia atau gagal dimuat.",
38
+ "example": null,
39
+ "param": null
40
+ },
41
+ "size": {
42
+ "name": "size",
43
+ "type": "'xs' | 'sm' | 'md' | 'lg' | 'xl'",
44
+ "optional": true,
45
+ "default": "md",
46
+ "description": "Skala ukuran avatar: - `'xs'`: Lingkaran 28px. - `'sm'`: Lingkaran 32px. - `'md'`: Lingkaran 40px (standar). - `'lg'`: Lingkaran 48px. - `'xl'`: Lingkaran 56px.",
47
+ "example": null,
48
+ "param": null
49
+ },
50
+ "variant": {
51
+ "name": "variant",
52
+ "type": "'info' | 'primary' | 'success' | 'warning' | 'danger' | 'neutral'",
53
+ "optional": true,
54
+ "default": "info",
55
+ "description": "Varian warna semantik untuk latar & teks/ikon fallback avatar: - `'info'`: Biru informasi sesuai standar profil (default). - `'primary'`: Brand Teal utama. - `'success'`: Hijau sukses. - `'warning'`: Kuning / amber peringatan. - `'danger'`: Merah bahaya. - `'neutral'`: Abu-abu netral.",
56
+ "example": null,
57
+ "param": null
58
+ },
59
+ "rounded": {
60
+ "name": "rounded",
61
+ "type": "'none' | 'sm' | 'md' | 'lg' | 'full'",
62
+ "optional": true,
63
+ "default": "full",
64
+ "description": "Sudut kelengkungan lingkaran avatar: - `'full'`: Lingkaran penuh 9999px (default). - `'lg'`: Radius membulat 12px. - `'md'`: Radius sedang 8px. - `'sm'`: Radius halus 4px. - `'none'`: Persegi tajam 0px.",
65
+ "example": null,
66
+ "param": null
67
+ },
68
+ "status": {
69
+ "name": "status",
70
+ "type": "'online' | 'offline' | 'verified'",
71
+ "optional": true,
72
+ "default": null,
73
+ "description": "Indikator status kehadiran atau verifikasi di pojok kanan bawah lingkaran avatar: - `'online'`: Titik hijau status aktif. - `'offline'`: Titik abu-abu status luring. - `'verified'`: Lencana perisai biru terverifikasi.",
74
+ "example": null,
75
+ "param": null
76
+ },
77
+ "icon": {
78
+ "name": "icon",
79
+ "type": "any",
80
+ "optional": true,
81
+ "default": null,
82
+ "description": "Ikon kustom untuk menggantikan ikon pengguna bawaan saat `src` dan `initials` tidak diisi.",
83
+ "example": null,
84
+ "param": null
85
+ },
86
+ "iconColor": {
87
+ "name": "iconColor",
88
+ "type": "string",
89
+ "optional": true,
90
+ "default": null,
91
+ "description": "Warna kustom untuk ikon di dalam avatar.",
92
+ "example": null,
93
+ "param": null
94
+ },
95
+ "interactive": {
96
+ "name": "interactive",
97
+ "type": "boolean",
98
+ "optional": true,
99
+ "default": "false",
100
+ "description": "Menjadikan komponen avatar interaktif (memiliki efek hover & fokus keyboard).",
101
+ "example": null,
102
+ "param": null
103
+ },
104
+ "disabled": {
105
+ "name": "disabled",
106
+ "type": "boolean",
107
+ "optional": true,
108
+ "default": "false",
109
+ "description": "Menonaktifkan interaksi klik pada avatar.",
110
+ "example": null,
111
+ "param": null
112
+ },
113
+ "onClick": {
114
+ "name": "onClick",
115
+ "type": "(event?: any) => void",
116
+ "optional": true,
117
+ "default": null,
118
+ "description": "Event handler saat komponen avatar diklik.",
119
+ "example": null,
120
+ "param": null
121
+ },
122
+ "onImageError": {
123
+ "name": "onImageError",
124
+ "type": "(event?: any) => void",
125
+ "optional": true,
126
+ "default": null,
127
+ "description": "Event handler saat gambar `src` gagal dimuat.",
128
+ "example": null,
129
+ "param": null
130
+ },
131
+ "ui": {
132
+ "name": "ui",
133
+ "type": "UiProps",
134
+ "optional": true,
135
+ "default": null,
136
+ "description": "Kustomisasi visual granular pada elemen root melalui style-like object (+ support pseudo-class: hover, active).",
137
+ "example": null,
138
+ "param": null
139
+ },
140
+ "style": {
141
+ "name": "style",
142
+ "type": "any",
143
+ "optional": true,
144
+ "default": null,
145
+ "description": "Inline CSS style object native pada elemen root.",
146
+ "example": null,
147
+ "param": null
148
+ },
149
+ "imageStyle": {
150
+ "name": "imageStyle",
151
+ "type": "UiProps",
152
+ "optional": true,
153
+ "default": null,
154
+ "description": "Style kustom untuk elemen gambar `<img>` di dalam avatar (UiProps).",
155
+ "example": null,
156
+ "param": null
157
+ },
158
+ "imageClass": {
159
+ "name": "imageClass",
160
+ "type": "string",
161
+ "optional": true,
162
+ "default": null,
163
+ "description": "Class CSS kustom untuk elemen gambar `<img>`.",
164
+ "example": null,
165
+ "param": null
166
+ },
167
+ "className": {
168
+ "name": "className",
169
+ "type": "string",
170
+ "optional": true,
171
+ "default": null,
172
+ "description": "Class CSS kustom pada elemen root.",
173
+ "example": null,
174
+ "param": null
175
+ },
176
+ "children": {
177
+ "name": "children",
178
+ "type": "any",
179
+ "optional": true,
180
+ "default": null,
181
+ "description": "Slot konten tambahan atau pengganti ikon di dalam avatar.",
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,94 @@
1
+ # <Badge /> — TTDK Component Reference
2
+
3
+ TTDK Badge 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/badge/badge.css";`
8
+
9
+ ## 2. Subpath Component Import
10
+ ```ts
11
+ // React
12
+ import Badge from "@ttdk-design-system/library-react/web/badge";
13
+
14
+ // Vue 3
15
+ import Badge from "@ttdk-design-system/library-vue/web/badge";
16
+
17
+ // Svelte
18
+ import Badge from "@ttdk-design-system/library-svelte/web/badge";
19
+ ```
20
+
21
+ ## 3. Props & API Reference
22
+
23
+ | Prop | Type | Default | Description |
24
+ | :--- | :--- | :--- | :--- |
25
+ | `label?` | `string` | `-` | Teks label yang ditampilkan di dalam badge (misal: "CSV", "Publik", "Aktif"). |
26
+ | `variant?` | `| 'primary'
27
+ | 'success'
28
+ | 'info'
29
+ | 'warning'
30
+ | 'danger'
31
+ | 'neutral'
32
+ | 'disabled'` | `primary` | Varian warna semantik tema badge: - `'primary'`: Brand Teal utama (#00B5AD). - `'success'`: Sukses hijau (#04B761). - `'info'`: Biru informasi (#2196F3). - `'warning'`: Peringatan kuning / amber (#F88000). - `'danger'`: Bahaya / merah (#D0021B). |
33
+ | `appearance?` | `'soft' | 'solid' | 'outline'` | `soft` | Gaya visual tampilan badge: - `'soft'`: Latar belakang lembut transparan dengan teks berwarna (default). - `'solid'`: Latar belakang pekat solid dengan teks kontras putih/gelap. - `'outline'`: Garis tepi tipis dengan latar belakang transparan. |
34
+ | `size?` | `'sm' | 'md' | 'lg'` | `md` | Skala ukuran badge: - `'sm'`: Kecil (tinggi 28px, font 12px). - `'md'`: Sedang (tinggi 32px, font 13px, standar). - `'lg'`: Besar (tinggi 38px, font 15px). |
35
+ | `rounded?` | `'none' | 'sm' | 'md' | 'lg' | 'full'` | `full` | Sudut kelengkungan badge: - `'none'`: Sudut tajam kotak (0px). - `'sm'`: Radius halus (4px). - `'md'`: Radius sedang (6px). - `'lg'`: Radius membulat (8px). - `'full'`: Pill-shaped membulat penuh (9999px, default). |
36
+ | `dot?` | `boolean` | `false` | Menampilkan titik indikator status (dot) di sisi kiri teks badge. |
37
+ | `dotColor?` | `string` | `-` | Warna kustom untuk titik indikator status (dot). |
38
+ | `dotStyle?` | `UiProps` | `-` | Style kustom untuk titik indikator status (UiProps / style object + pseudo support). |
39
+ | `dotClass?` | `string` | `-` | Class CSS kustom untuk titik indikator status. |
40
+ | `ui?` | `UiProps` | `-` | Kustomisasi visual granular melalui style-like object (+ support pseudo-class: hover, active). |
41
+ | `style?` | `any` | `-` | Inline CSS style object native. |
42
+ | `className?` | `string` | `-` | Class CSS kustom. |
43
+ | `children?` | `any` | `-` | Konten kustom atau ikon yang disisipkan ke dalam badge. |
44
+
45
+ ## 4. Usage Examples
46
+
47
+ ### React Example
48
+ ```tsx
49
+ import Badge from "@ttdk-design-system/library-react/web/badge";
50
+ import "@ttdk-design-system/library-react/web/badge/badge.css";
51
+
52
+ export function Example() {
53
+ return (
54
+ <div style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>
55
+ <Badge variant="default" label="Publik" />
56
+ <Badge variant="success" dot label="Aktif" />
57
+ <Badge variant="warning" appearance="solid" label="Dalam Review" />
58
+ <Badge variant="danger" appearance="outline" label="Gagal" />
59
+ </div>
60
+ );
61
+ }
62
+ ```
63
+
64
+ ### Vue 3 Example
65
+ ```vue
66
+ <script setup lang="ts">
67
+ import Badge from "@ttdk-design-system/library-vue/web/badge";
68
+ import "@ttdk-design-system/library-vue/web/badge/badge.css";
69
+ </script>
70
+
71
+ <template>
72
+ <div style="display: flex; gap: 8px; align-items: center;">
73
+ <Badge variant="default" label="Publik" />
74
+ <Badge variant="success" :dot="true" label="Aktif" />
75
+ <Badge variant="warning" appearance="solid" label="Dalam Review" />
76
+ <Badge variant="danger" appearance="outline" label="Gagal" />
77
+ </div>
78
+ </template>
79
+ ```
80
+
81
+ ### Svelte Example
82
+ ```svelte
83
+ <script lang="ts">
84
+ import Badge from "@ttdk-design-system/library-svelte/web/badge";
85
+ import "@ttdk-design-system/library-svelte/web/badge/badge.css";
86
+ </script>
87
+
88
+ <div style="display: flex; gap: 8px; align-items: center;">
89
+ <Badge variant="default" label="Publik" />
90
+ <Badge variant="success" dot={true} label="Aktif" />
91
+ <Badge variant="warning" appearance="solid" label="Dalam Review" />
92
+ <Badge variant="danger" appearance="outline" label="Gagal" />
93
+ </div>
94
+ ```
@@ -0,0 +1 @@
1
+ .ttdk-badge{font-family:var(--ttdk-font-sans);font-weight:var(--ttdk-font-weight-medium,500);letter-spacing:.15px;box-sizing:border-box;user-select:none;white-space:nowrap;vertical-align:middle;border-radius:var(--ttdk-radius-full,9999px);border-style:solid;border-width:.8px;justify-content:center;align-items:center;gap:6px;line-height:100%;text-decoration:none;transition:all .15s cubic-bezier(.4,0,.2,1);display:inline-flex;position:relative}.ttdk-badge[data-size=xs]{min-width:45px;height:24px;padding:0 var(--ttdk-spacing-xs);border-width:.8px;font-size:11px}.ttdk-badge[data-size=sm]{min-width:55px;height:28px;font-size:var(--ttdk-font-size-12);letter-spacing:.15px;border-width:.8px;padding:0 10px;font-weight:500;line-height:1}.ttdk-badge[data-size=md]{letter-spacing:.15px;border-width:.8px;min-width:60px;height:32px;padding:0 14px;font-size:13px;font-weight:500;line-height:1}.ttdk-badge[data-size=lg]{letter-spacing:.15px;border-width:1px;min-width:60px;height:38px;padding:0 18px;font-size:15px;font-weight:500;line-height:1}.ttdk-badge[data-rounded=full]{border-radius:var(--ttdk-radius-full,9999px)}.ttdk-badge[data-rounded=lg]{border-radius:var(--ttdk-radius-md,12px)}.ttdk-badge[data-rounded=md]{border-radius:var(--ttdk-radius-sm,8px)}.ttdk-badge[data-rounded=sm]{border-radius:var(--ttdk-radius-xs,4px)}.ttdk-badge[data-rounded=none]{border-radius:var(--ttdk-radius-none,0px)}.ttdk-badge[data-appearance=soft][data-variant=primary]{background-color:var(--ttdk-brand-subtle);border-color:var(--ttdk-brand-default);color:var(--ttdk-brand-default)}.ttdk-badge[data-appearance=soft][data-variant=success]{background-color:var(--ttdk-bg-status-success-subtle);border-color:var(--ttdk-stroke-status-success);color:var(--ttdk-text-icon-status-success)}.ttdk-badge[data-appearance=soft][data-variant=info]{background-color:var(--ttdk-bg-status-info-subtle);border-color:var(--ttdk-stroke-status-info);color:var(--ttdk-text-icon-status-info)}.ttdk-badge[data-appearance=soft][data-variant=warning]{background-color:var(--ttdk-bg-status-warning-subtle);border-color:var(--ttdk-stroke-status-warning);color:var(--ttdk-text-icon-status-warning)}.ttdk-badge[data-appearance=soft][data-variant=danger]{background-color:var(--ttdk-bg-status-error-subtle);border-color:var(--ttdk-stroke-status-error);color:var(--ttdk-text-icon-status-error)}.ttdk-badge[data-variant=neutral],.ttdk-badge[data-appearance=soft][data-variant=neutral]{background-color:var(--ttdk-bg-secondary-disabled);border-color:var(--ttdk-stroke-divider);color:var(--ttdk-text-icon-primary)}.ttdk-badge[data-variant=disable],.ttdk-badge[data-variant=disabled],.ttdk-badge[data-appearance=soft][data-variant=disable],.ttdk-badge[data-appearance=soft][data-variant=disabled]{background-color:var(--ttdk-bg-secondary-disabled);border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-disabled)}.ttdk-badge[data-appearance=solid][data-variant=primary]{background-color:var(--ttdk-brand-default);border-color:var(--ttdk-brand-default);color:var(--ttdk-color-white)}.ttdk-badge[data-appearance=solid][data-variant=success]{background-color:var(--ttdk-bg-status-success);border-color:var(--ttdk-bg-status-success);color:var(--ttdk-color-white)}.ttdk-badge[data-appearance=solid][data-variant=info]{background-color:var(--ttdk-bg-status-info);border-color:var(--ttdk-bg-status-info);color:var(--ttdk-color-white)}.ttdk-badge[data-appearance=solid][data-variant=warning]{background-color:var(--ttdk-bg-status-warning);border-color:var(--ttdk-bg-status-warning);color:var(--ttdk-color-black)}.ttdk-badge[data-appearance=solid][data-variant=danger]{background-color:var(--ttdk-bg-status-error);border-color:var(--ttdk-bg-status-error);color:var(--ttdk-color-white)}.ttdk-badge[data-appearance=solid][data-variant=neutral]{background-color:var(--ttdk-bg-secondary-disabled);border-color:var(--ttdk-stroke-divider);color:var(--ttdk-text-icon-primary)}.ttdk-badge[data-appearance=solid][data-variant=disable],.ttdk-badge[data-appearance=solid][data-variant=disabled]{background-color:var(--ttdk-bg-secondary-disabled);border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-disabled)}.ttdk-badge[data-appearance=outline]{background-color:#0000}.ttdk-badge[data-appearance=outline][data-variant=primary]{border-color:var(--ttdk-brand-default);color:var(--ttdk-brand-default)}.ttdk-badge[data-appearance=outline][data-variant=success]{border-color:var(--ttdk-stroke-status-success);color:var(--ttdk-text-icon-status-success)}.ttdk-badge[data-appearance=outline][data-variant=info]{border-color:var(--ttdk-stroke-status-info);color:var(--ttdk-text-icon-status-info)}.ttdk-badge[data-appearance=outline][data-variant=warning]{border-color:var(--ttdk-stroke-status-warning);color:var(--ttdk-text-icon-status-warning)}.ttdk-badge[data-appearance=outline][data-variant=danger]{border-color:var(--ttdk-stroke-status-error);color:var(--ttdk-text-icon-status-error)}.ttdk-badge[data-appearance=outline][data-variant=neutral]{border-color:var(--ttdk-stroke-divider);color:var(--ttdk-text-icon-primary)}.ttdk-badge[data-appearance=outline][data-variant=disable],.ttdk-badge[data-appearance=outline][data-variant=disabled]{border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-disabled)}.dark .ttdk-badge[data-appearance=soft][data-variant=primary],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=primary]{background-color:var(--ttdk-brand-subtle-dark);border-color:var(--ttdk-brand-default)}.dark .ttdk-badge[data-appearance=soft][data-variant=success],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=success]{background-color:var(--ttdk-bg-status-success-subtle);border-color:var(--ttdk-stroke-status-success)}.dark .ttdk-badge[data-appearance=soft][data-variant=info],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=info]{background-color:var(--ttdk-bg-status-info-subtle);border-color:var(--ttdk-stroke-status-info)}.dark .ttdk-badge[data-appearance=soft][data-variant=warning],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=warning]{background-color:var(--ttdk-bg-status-warning-subtle);border-color:var(--ttdk-stroke-status-warning)}.dark .ttdk-badge[data-appearance=soft][data-variant=danger],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=danger]{background-color:var(--ttdk-bg-status-error-subtle);border-color:var(--ttdk-stroke-status-error)}.dark .ttdk-badge[data-appearance=solid][data-variant=neutral],[data-theme=dark] .ttdk-badge[data-appearance=solid][data-variant=neutral]{background-color:var(--ttdk-bg-stay-black);border-color:var(--ttdk-bg-stay-black);color:var(--ttdk-text-icon-stay-white)}.dark .ttdk-badge[data-appearance=soft][data-variant=neutral],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=neutral],.dark .ttdk-badge[data-variant=neutral],[data-theme=dark] .ttdk-badge[data-variant=neutral]{background-color:var(--ttdk-color-neutral-900);border-color:var(--ttdk-stroke-strong);color:var(--ttdk-text-icon-primary)}.dark .ttdk-badge[data-appearance=outline][data-variant=neutral],[data-theme=dark] .ttdk-badge[data-appearance=outline][data-variant=neutral]{background-color:var(--ttdk-bg-stay-black);border-color:var(--ttdk-stroke-stay-white);color:var(--ttdk-text-icon-primary)}.dark .ttdk-badge[data-appearance=soft][data-variant=disable],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=disable],.dark .ttdk-badge[data-appearance=soft][data-variant=disabled],[data-theme=dark] .ttdk-badge[data-appearance=soft][data-variant=disabled],.dark .ttdk-badge[data-variant=disable],[data-theme=dark] .ttdk-badge[data-variant=disable],.dark .ttdk-badge[data-variant=disabled],[data-theme=dark] .ttdk-badge[data-variant=disabled],.dark .ttdk-badge[data-appearance=solid][data-variant=disable],[data-theme=dark] .ttdk-badge[data-appearance=solid][data-variant=disable],.dark .ttdk-badge[data-appearance=solid][data-variant=disabled],[data-theme=dark] .ttdk-badge[data-appearance=solid][data-variant=disabled]{background-color:var(--ttdk-bg-secondary-disabled);border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-disabled)}.dark .ttdk-badge[data-appearance=outline][data-variant=disable],[data-theme=dark] .ttdk-badge[data-appearance=outline][data-variant=disable],.dark .ttdk-badge[data-appearance=outline][data-variant=disabled],[data-theme=dark] .ttdk-badge[data-appearance=outline][data-variant=disabled]{border-color:var(--ttdk-stroke-subtle);color:var(--ttdk-text-icon-disabled);background-color:#0000}.ttdk-badge-dot{background-color:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.ttdk-badge[data-size=xs] .ttdk-badge-dot{width:4px;height:4px}.ttdk-badge[data-size=lg] .ttdk-badge-dot{width:8px;height:8px}
@@ -0,0 +1,50 @@
1
+ <script context="module"></script>
2
+
3
+ <script>import { buildUiVars, UiProps } from "../../core/types";
4
+ export let className = void 0;
5
+ export let variant = void 0;
6
+ export let appearance = void 0;
7
+ export let size = void 0;
8
+ export let rounded = void 0;
9
+ export let ui = void 0;
10
+ export let dot = void 0;
11
+ export let dotClass = void 0;
12
+ export let dotStyle = void 0;
13
+ export let dotColor = void 0;
14
+ export let label = void 0;
15
+ function stringifyStyles(stylesObj) {
16
+ let styles = "";
17
+ for (let key in stylesObj) {
18
+ const dashedKey = key.replace(/[A-Z]/g, function(match) {
19
+ return "-" + match.toLowerCase();
20
+ });
21
+ styles += dashedKey + ":" + stylesObj[key] + ";";
22
+ }
23
+ return styles;
24
+ }
25
+ </script>
26
+
27
+ <span
28
+ style={stringifyStyles({
29
+ ...buildUiVars(ui),
30
+ })}
31
+ class={`ttdk-badge ${className || ""}`.trim()}
32
+ data-variant={variant || "primary"}
33
+ data-appearance={appearance || "soft"}
34
+ data-size={size || "md"}
35
+ data-rounded={rounded || "full"}
36
+ >
37
+ {#if dot}
38
+ <span
39
+ style={stringifyStyles({
40
+ ...buildUiVars(dotStyle),
41
+ ...(dotColor
42
+ ? {
43
+ backgroundColor: dotColor,
44
+ }
45
+ : {}),
46
+ })}
47
+ class={`ttdk-badge-dot ${dotClass || ""}`.trim()}
48
+ />
49
+ {/if}<slot />{label}</span
50
+ >
@@ -0,0 +1,111 @@
1
+ import { SvelteComponent } from "svelte";
2
+ export type BadgeUiProps = UiProps;
3
+ export interface BadgeProps {
4
+ /**
5
+ * Teks label yang ditampilkan di dalam badge (misal: "CSV", "Publik", "Aktif").
6
+ */
7
+ label?: string;
8
+ /**
9
+ * Varian warna semantik tema badge:
10
+ * - `'primary'`: Brand Teal utama (#00B5AD).
11
+ * - `'success'`: Sukses hijau (#04B761).
12
+ * - `'info'`: Biru informasi (#2196F3).
13
+ * - `'warning'`: Peringatan kuning / amber (#F88000).
14
+ * - `'danger'`: Bahaya / merah (#D0021B).
15
+ *
16
+ * @default 'primary'
17
+ */
18
+ variant?: "primary" | "success" | "info" | "warning" | "danger" | "neutral" | "disabled";
19
+ /**
20
+ * Gaya visual tampilan badge:
21
+ * - `'soft'`: Latar belakang lembut transparan dengan teks berwarna (default).
22
+ * - `'solid'`: Latar belakang pekat solid dengan teks kontras putih/gelap.
23
+ * - `'outline'`: Garis tepi tipis dengan latar belakang transparan.
24
+ *
25
+ * @default 'soft'
26
+ */
27
+ appearance?: "soft" | "solid" | "outline";
28
+ /**
29
+ * Skala ukuran badge:
30
+ * - `'sm'`: Kecil (tinggi 28px, font 12px).
31
+ * - `'md'`: Sedang (tinggi 32px, font 13px, standar).
32
+ * - `'lg'`: Besar (tinggi 38px, font 15px).
33
+ *
34
+ * @default 'md'
35
+ */
36
+ size?: "sm" | "md" | "lg";
37
+ /**
38
+ * Sudut kelengkungan badge:
39
+ * - `'none'`: Sudut tajam kotak (0px).
40
+ * - `'sm'`: Radius halus (4px).
41
+ * - `'md'`: Radius sedang (6px).
42
+ * - `'lg'`: Radius membulat (8px).
43
+ * - `'full'`: Pill-shaped membulat penuh (9999px, default).
44
+ *
45
+ * @default 'full'
46
+ */
47
+ rounded?: "none" | "sm" | "md" | "lg" | "full";
48
+ /**
49
+ * Menampilkan titik indikator status (dot) di sisi kiri teks badge.
50
+ * @default false
51
+ */
52
+ dot?: boolean;
53
+ /**
54
+ * Warna kustom untuk titik indikator status (dot).
55
+ */
56
+ dotColor?: string;
57
+ /**
58
+ * Style kustom untuk titik indikator status (UiProps / style object + pseudo support).
59
+ */
60
+ dotStyle?: UiProps;
61
+ /**
62
+ * Class CSS kustom untuk titik indikator status.
63
+ */
64
+ dotClass?: string;
65
+ /**
66
+ * Kustomisasi visual granular melalui style-like object (+ support pseudo-class: hover, active).
67
+ */
68
+ ui?: UiProps;
69
+ /**
70
+ * Inline CSS style object native.
71
+ */
72
+ style?: any;
73
+ /**
74
+ * Class CSS kustom.
75
+ */
76
+ className?: string;
77
+ /**
78
+ * Konten kustom atau ikon yang disisipkan ke dalam badge.
79
+ */
80
+ children?: any;
81
+ }
82
+ import { UiProps } from "../../core/types";
83
+ declare const __propDef: {
84
+ props: {
85
+ className?: BadgeProps["className"];
86
+ variant?: BadgeProps["variant"];
87
+ appearance?: BadgeProps["appearance"];
88
+ size?: BadgeProps["size"];
89
+ rounded?: BadgeProps["rounded"];
90
+ ui?: BadgeProps["ui"];
91
+ dot?: BadgeProps["dot"];
92
+ dotClass?: BadgeProps["dotClass"];
93
+ dotStyle?: BadgeProps["dotStyle"];
94
+ dotColor?: BadgeProps["dotColor"];
95
+ label?: BadgeProps["label"];
96
+ };
97
+ events: {
98
+ [evt: string]: CustomEvent<any>;
99
+ };
100
+ slots: {
101
+ default: {};
102
+ };
103
+ exports?: {} | undefined;
104
+ bindings?: string | undefined;
105
+ };
106
+ type BadgeProps_ = typeof __propDef.props;
107
+ export type BadgeEvents = typeof __propDef.events;
108
+ export type BadgeSlots = typeof __propDef.slots;
109
+ export default class Badge extends SvelteComponent<BadgeProps_, BadgeEvents, BadgeSlots> {
110
+ }
111
+ export {};
@@ -0,0 +1,2 @@
1
+ export { default } from './badge.svelte';
2
+ export { default as Badge } from './badge.svelte';
@@ -0,0 +1,2 @@
1
+ export { default } from './badge.svelte';
2
+ export { default as Badge } from './badge.svelte';