@ttdk-design-system/library-vue 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 (232) hide show
  1. package/AI_GUIDE.md +6518 -0
  2. package/README.md +104 -2
  3. package/llms.txt +6518 -0
  4. package/package.json +1097 -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.vue +432 -0
  17. package/src/web/accordion/accordion.vue.d.ts +227 -0
  18. package/src/web/accordion/index.ts +3 -0
  19. package/src/web/accordion/manifest.json +351 -0
  20. package/src/web/alert/AI_GUIDE.md +139 -0
  21. package/src/web/alert/alert.css +1 -0
  22. package/src/web/alert/alert.vue +290 -0
  23. package/src/web/alert/alert.vue.d.ts +154 -0
  24. package/src/web/alert/index.ts +3 -0
  25. package/src/web/alert/manifest.json +240 -0
  26. package/src/web/avatar/AI_GUIDE.md +118 -0
  27. package/src/web/avatar/avatar.css +1 -0
  28. package/src/web/avatar/avatar.vue +217 -0
  29. package/src/web/avatar/avatar.vue.d.ts +135 -0
  30. package/src/web/avatar/index.ts +3 -0
  31. package/src/web/avatar/manifest.json +195 -0
  32. package/src/web/badge/AI_GUIDE.md +94 -0
  33. package/src/web/badge/badge.css +1 -0
  34. package/src/web/badge/badge.vue +135 -0
  35. package/src/web/badge/badge.vue.d.ts +108 -0
  36. package/src/web/badge/index.ts +3 -0
  37. package/src/web/badge/manifest.json +141 -0
  38. package/src/web/banner/AI_GUIDE.md +130 -0
  39. package/src/web/banner/banner.css +1 -0
  40. package/src/web/banner/banner.vue +303 -0
  41. package/src/web/banner/banner.vue.d.ts +162 -0
  42. package/src/web/banner/index.ts +3 -0
  43. package/src/web/banner/manifest.json +240 -0
  44. package/src/web/breadcrumb/AI_GUIDE.md +120 -0
  45. package/src/web/breadcrumb/breadcrumb.css +1 -0
  46. package/src/web/breadcrumb/breadcrumb.vue +313 -0
  47. package/src/web/breadcrumb/breadcrumb.vue.d.ts +139 -0
  48. package/src/web/breadcrumb/index.ts +3 -0
  49. package/src/web/breadcrumb/manifest.json +225 -0
  50. package/src/web/button/AI_GUIDE.md +121 -0
  51. package/src/web/button/button.css +1 -0
  52. package/src/web/button/button.vue +283 -0
  53. package/src/web/button/button.vue.d.ts +147 -0
  54. package/src/web/button/index.ts +3 -0
  55. package/src/web/button/manifest.json +177 -0
  56. package/src/web/calendar/AI_GUIDE.md +151 -0
  57. package/src/web/calendar/calendar.css +1 -0
  58. package/src/web/calendar/calendar.vue +1536 -0
  59. package/src/web/calendar/calendar.vue.d.ts +261 -0
  60. package/src/web/calendar/index.ts +3 -0
  61. package/src/web/calendar/manifest.json +470 -0
  62. package/src/web/card/AI_GUIDE.md +133 -0
  63. package/src/web/card/card.css +1 -0
  64. package/src/web/card/card.vue +423 -0
  65. package/src/web/card/card.vue.d.ts +232 -0
  66. package/src/web/card/index.ts +3 -0
  67. package/src/web/card/manifest.json +357 -0
  68. package/src/web/checkbox/AI_GUIDE.md +146 -0
  69. package/src/web/checkbox/checkbox.css +1 -0
  70. package/src/web/checkbox/checkbox.vue +304 -0
  71. package/src/web/checkbox/checkbox.vue.d.ts +189 -0
  72. package/src/web/checkbox/index.ts +3 -0
  73. package/src/web/checkbox/manifest.json +294 -0
  74. package/src/web/chip/AI_GUIDE.md +186 -0
  75. package/src/web/chip/chip.css +1 -0
  76. package/src/web/chip/chip.vue +220 -0
  77. package/src/web/chip/chip.vue.d.ts +140 -0
  78. package/src/web/chip/index.ts +3 -0
  79. package/src/web/chip/manifest.json +186 -0
  80. package/src/web/dropdown/AI_GUIDE.md +167 -0
  81. package/src/web/dropdown/dropdown.css +1 -0
  82. package/src/web/dropdown/dropdown.vue +1257 -0
  83. package/src/web/dropdown/dropdown.vue.d.ts +381 -0
  84. package/src/web/dropdown/index.ts +3 -0
  85. package/src/web/dropdown/manifest.json +576 -0
  86. package/src/web/flex/AI_GUIDE.md +113 -0
  87. package/src/web/flex/flex-item.vue +94 -0
  88. package/src/web/flex/flex-item.vue.d.ts +84 -0
  89. package/src/web/flex/flex.css +1 -0
  90. package/src/web/flex/flex.vue +103 -0
  91. package/src/web/flex/flex.vue.d.ts +92 -0
  92. package/src/web/flex/index.ts +5 -0
  93. package/src/web/flex/manifest.json +162 -0
  94. package/src/web/form/index.ts +7 -0
  95. package/src/web/grid/AI_GUIDE.md +112 -0
  96. package/src/web/grid/grid-item.vue +109 -0
  97. package/src/web/grid/grid-item.vue.d.ts +99 -0
  98. package/src/web/grid/grid.css +1 -0
  99. package/src/web/grid/grid.vue +94 -0
  100. package/src/web/grid/grid.vue.d.ts +84 -0
  101. package/src/web/grid/index.ts +5 -0
  102. package/src/web/grid/manifest.json +153 -0
  103. package/src/web/index.ts +86 -0
  104. package/src/web/input/AI_GUIDE.md +159 -0
  105. package/src/web/input/index.ts +3 -0
  106. package/src/web/input/input.css +1 -0
  107. package/src/web/input/input.vue +521 -0
  108. package/src/web/input/input.vue.d.ts +274 -0
  109. package/src/web/input/manifest.json +465 -0
  110. package/src/web/input-number/AI_GUIDE.md +164 -0
  111. package/src/web/input-number/index.ts +3 -0
  112. package/src/web/input-number/input-number.css +1 -0
  113. package/src/web/input-number/input-number.vue +1153 -0
  114. package/src/web/input-number/input-number.vue.d.ts +343 -0
  115. package/src/web/input-number/manifest.json +575 -0
  116. package/src/web/modal/AI_GUIDE.md +171 -0
  117. package/src/web/modal/index.ts +3 -0
  118. package/src/web/modal/manifest.json +375 -0
  119. package/src/web/modal/modal.css +1 -0
  120. package/src/web/modal/modal.vue +344 -0
  121. package/src/web/modal/modal.vue.d.ts +64 -0
  122. package/src/web/pagination/AI_GUIDE.md +148 -0
  123. package/src/web/pagination/index.ts +21 -0
  124. package/src/web/pagination/manifest.json +432 -0
  125. package/src/web/pagination/pagination-content.vue +42 -0
  126. package/src/web/pagination/pagination-content.vue.d.ts +28 -0
  127. package/src/web/pagination/pagination-ellipsis.vue +55 -0
  128. package/src/web/pagination/pagination-ellipsis.vue.d.ts +28 -0
  129. package/src/web/pagination/pagination-first.vue +161 -0
  130. package/src/web/pagination/pagination-first.vue.d.ts +67 -0
  131. package/src/web/pagination/pagination-item.vue +42 -0
  132. package/src/web/pagination/pagination-item.vue.d.ts +28 -0
  133. package/src/web/pagination/pagination-last.vue +161 -0
  134. package/src/web/pagination/pagination-last.vue.d.ts +67 -0
  135. package/src/web/pagination/pagination-link.vue +118 -0
  136. package/src/web/pagination/pagination-link.vue.d.ts +61 -0
  137. package/src/web/pagination/pagination-next.vue +160 -0
  138. package/src/web/pagination/pagination-next.vue.d.ts +68 -0
  139. package/src/web/pagination/pagination-previous.vue +160 -0
  140. package/src/web/pagination/pagination-previous.vue.d.ts +68 -0
  141. package/src/web/pagination/pagination.css +1 -0
  142. package/src/web/pagination/pagination.vue +730 -0
  143. package/src/web/pagination/pagination.vue.d.ts +247 -0
  144. package/src/web/popover/AI_GUIDE.md +163 -0
  145. package/src/web/popover/index.ts +3 -0
  146. package/src/web/popover/manifest.json +396 -0
  147. package/src/web/popover/popover.css +1 -0
  148. package/src/web/popover/popover.vue +579 -0
  149. package/src/web/popover/popover.vue.d.ts +83 -0
  150. package/src/web/radio/AI_GUIDE.md +155 -0
  151. package/src/web/radio/index.ts +3 -0
  152. package/src/web/radio/manifest.json +294 -0
  153. package/src/web/radio/radio.css +1 -0
  154. package/src/web/radio/radio.vue +288 -0
  155. package/src/web/radio/radio.vue.d.ts +182 -0
  156. package/src/web/selectbox/AI_GUIDE.md +216 -0
  157. package/src/web/selectbox/index.ts +3 -0
  158. package/src/web/selectbox/manifest.json +477 -0
  159. package/src/web/selectbox/selectbox.css +1 -0
  160. package/src/web/selectbox/selectbox.vue +1024 -0
  161. package/src/web/selectbox/selectbox.vue.d.ts +300 -0
  162. package/src/web/sonner/AI_GUIDE.md +98 -0
  163. package/src/web/sonner/index.ts +114 -0
  164. package/src/web/sonner/manifest.json +132 -0
  165. package/src/web/sonner/sonner.css +1 -0
  166. package/src/web/sonner/sonner.vue +180 -0
  167. package/src/web/sonner/sonner.vue.d.ts +113 -0
  168. package/src/web/table/AI_GUIDE.md +145 -0
  169. package/src/web/table/index.ts +34 -0
  170. package/src/web/table/manifest.json +168 -0
  171. package/src/web/table/table-body.vue +42 -0
  172. package/src/web/table/table-body.vue.d.ts +28 -0
  173. package/src/web/table/table-caption.vue +42 -0
  174. package/src/web/table/table-caption.vue.d.ts +28 -0
  175. package/src/web/table/table-cell.vue +71 -0
  176. package/src/web/table/table-cell.vue.d.ts +49 -0
  177. package/src/web/table/table-empty.vue +105 -0
  178. package/src/web/table/table-empty.vue.d.ts +57 -0
  179. package/src/web/table/table-footer.vue +42 -0
  180. package/src/web/table/table-footer.vue.d.ts +28 -0
  181. package/src/web/table/table-head.vue +78 -0
  182. package/src/web/table/table-head.vue.d.ts +50 -0
  183. package/src/web/table/table-header.vue +42 -0
  184. package/src/web/table/table-header.vue.d.ts +28 -0
  185. package/src/web/table/table-row.vue +70 -0
  186. package/src/web/table/table-row.vue.d.ts +44 -0
  187. package/src/web/table/table.css +1 -0
  188. package/src/web/table/table.vue +298 -0
  189. package/src/web/table/table.vue.d.ts +119 -0
  190. package/src/web/tabs/AI_GUIDE.md +150 -0
  191. package/src/web/tabs/index.ts +2 -0
  192. package/src/web/tabs/manifest.json +315 -0
  193. package/src/web/tabs/tabs.css +1 -0
  194. package/src/web/tabs/tabs.vue +164 -0
  195. package/src/web/tabs/tabs.vue.d.ts +60 -0
  196. package/src/web/text/AI_GUIDE.md +129 -0
  197. package/src/web/text/index.ts +2 -0
  198. package/src/web/text/manifest.json +195 -0
  199. package/src/web/text/text.css +1 -0
  200. package/src/web/text/text.vue +195 -0
  201. package/src/web/text/text.vue.d.ts +161 -0
  202. package/src/web/textarea/AI_GUIDE.md +141 -0
  203. package/src/web/textarea/index.ts +3 -0
  204. package/src/web/textarea/manifest.json +438 -0
  205. package/src/web/textarea/textarea.css +1 -0
  206. package/src/web/textarea/textarea.vue +458 -0
  207. package/src/web/textarea/textarea.vue.d.ts +265 -0
  208. package/src/web/tooltip/AI_GUIDE.md +110 -0
  209. package/src/web/tooltip/index.ts +3 -0
  210. package/src/web/tooltip/manifest.json +222 -0
  211. package/src/web/tooltip/tooltip.css +1 -0
  212. package/src/web/tooltip/tooltip.vue +417 -0
  213. package/src/web/tooltip/tooltip.vue.d.ts +150 -0
  214. package/src/webview/bottomsheet/AI_GUIDE.md +141 -0
  215. package/src/webview/bottomsheet/bottomsheet.css +1 -0
  216. package/src/webview/bottomsheet/bottomsheet.vue +441 -0
  217. package/src/webview/bottomsheet/bottomsheet.vue.d.ts +178 -0
  218. package/src/webview/bottomsheet/index.ts +4 -0
  219. package/src/webview/bottomsheet/manifest.json +377 -0
  220. package/src/webview/button/AI_GUIDE.md +79 -0
  221. package/src/webview/button/button-ios.css +1 -0
  222. package/src/webview/button/button-ios.vue +138 -0
  223. package/src/webview/button/button-ios.vue.d.ts +102 -0
  224. package/src/webview/button/button-material.css +1 -0
  225. package/src/webview/button/button-material.vue +138 -0
  226. package/src/webview/button/button-material.vue.d.ts +102 -0
  227. package/src/webview/button/index.ts +7 -0
  228. package/src/webview/button/manifest.json +148 -0
  229. package/src/webview/index.ts +7 -0
  230. package/tailwind-preset.cjs +62 -0
  231. package/tailwind-preset.js +62 -0
  232. package/ttdk-manifest.json +10188 -0
@@ -0,0 +1,109 @@
1
+ <template>
2
+ <div
3
+ :class="`ttdk-grid-item ${className || ''}`.trim()"
4
+ :style="{
5
+ ...buildGridItemVars(props),
6
+ ...buildUiVars(ui),
7
+ ...(typeof style === 'object' ? style : {}),
8
+ }"
9
+ >
10
+ <slot />
11
+ </div>
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import { buildGridItemVars, buildUiVars, UiProps } from "../../core/types";
16
+
17
+ export interface GridItemBreakpointProps {
18
+ /**
19
+ * Jumlah kolom yang ditempati item ini (grid-column).
20
+ * Nilai angka N (misal: 6 atau 12) otomatis dikonversi ke 'span N / span N'.
21
+ * Nilai string (misal: "span 4", "1 / -1", "auto").
22
+ */
23
+ col?: number | string;
24
+
25
+ /**
26
+ * Posisi awal garis kolom (grid-column-start).
27
+ */
28
+ colStart?: number | string;
29
+
30
+ /**
31
+ * Posisi akhir garis kolom (grid-column-end).
32
+ */
33
+ colEnd?: number | string;
34
+
35
+ /**
36
+ * Jumlah baris yang ditempati item ini (grid-row).
37
+ * Nilai angka N otomatis dikonversi ke 'span N / span N'.
38
+ */
39
+ row?: number | string;
40
+
41
+ /**
42
+ * Posisi awal garis baris (grid-row-start).
43
+ */
44
+ rowStart?: number | string;
45
+
46
+ /**
47
+ * Posisi akhir garis baris (grid-row-end).
48
+ */
49
+ rowEnd?: number | string;
50
+
51
+ /**
52
+ * Perataan horizontal item di dalam sel grid (justify-self).
53
+ */
54
+ justifySelf?: "auto" | "start" | "center" | "end" | "stretch";
55
+
56
+ /**
57
+ * Urutan tampilan item di dalam grid (order).
58
+ */
59
+ order?: number | string;
60
+ }
61
+ export interface GridItemProps extends GridItemBreakpointProps {
62
+ /**
63
+ * Override pada breakpoint sm (min-width: 640px).
64
+ */
65
+ sm?: GridItemBreakpointProps;
66
+
67
+ /**
68
+ * Override pada breakpoint md (min-width: 768px).
69
+ */
70
+ md?: GridItemBreakpointProps;
71
+
72
+ /**
73
+ * Override pada breakpoint lg (min-width: 1024px).
74
+ */
75
+ lg?: GridItemBreakpointProps;
76
+
77
+ /**
78
+ * Override pada breakpoint xl (min-width: 1280px).
79
+ */
80
+ xl?: GridItemBreakpointProps;
81
+
82
+ /**
83
+ * Override pada breakpoint xxl / 2xl (min-width: 1536px).
84
+ */
85
+ xxl?: GridItemBreakpointProps;
86
+
87
+ /**
88
+ * Kustomisasi visual granular root kontainer (UiProps).
89
+ */
90
+ ui?: UiProps;
91
+
92
+ /**
93
+ * Class CSS kustom.
94
+ */
95
+ className?: string;
96
+
97
+ /**
98
+ * Style kustom inline.
99
+ */
100
+ style?: any;
101
+
102
+ /**
103
+ * Konten di dalam item grid.
104
+ */
105
+ children?: any;
106
+ }
107
+
108
+ const props = defineProps<GridItemProps>();
109
+ </script>
@@ -0,0 +1,99 @@
1
+ /* eslint-disable */
2
+ // Auto-generated by TTDK Design System Vue Type Generator
3
+ import type { DefineComponent } from "vue";
4
+ import { buildGridItemVars, buildUiVars, UiProps } from "../../core/types";
5
+
6
+ export interface GridItemBreakpointProps {
7
+ /**
8
+ * Jumlah kolom yang ditempati item ini (grid-column).
9
+ * Nilai angka N (misal: 6 atau 12) otomatis dikonversi ke 'span N / span N'.
10
+ * Nilai string (misal: "span 4", "1 / -1", "auto").
11
+ */
12
+ col?: number | string;
13
+
14
+ /**
15
+ * Posisi awal garis kolom (grid-column-start).
16
+ */
17
+ colStart?: number | string;
18
+
19
+ /**
20
+ * Posisi akhir garis kolom (grid-column-end).
21
+ */
22
+ colEnd?: number | string;
23
+
24
+ /**
25
+ * Jumlah baris yang ditempati item ini (grid-row).
26
+ * Nilai angka N otomatis dikonversi ke 'span N / span N'.
27
+ */
28
+ row?: number | string;
29
+
30
+ /**
31
+ * Posisi awal garis baris (grid-row-start).
32
+ */
33
+ rowStart?: number | string;
34
+
35
+ /**
36
+ * Posisi akhir garis baris (grid-row-end).
37
+ */
38
+ rowEnd?: number | string;
39
+
40
+ /**
41
+ * Perataan horizontal item di dalam sel grid (justify-self).
42
+ */
43
+ justifySelf?: "auto" | "start" | "center" | "end" | "stretch";
44
+
45
+ /**
46
+ * Urutan tampilan item di dalam grid (order).
47
+ */
48
+ order?: number | string;
49
+ }
50
+
51
+ export interface GridItemProps extends GridItemBreakpointProps {
52
+ /**
53
+ * Override pada breakpoint sm (min-width: 640px).
54
+ */
55
+ sm?: GridItemBreakpointProps;
56
+
57
+ /**
58
+ * Override pada breakpoint md (min-width: 768px).
59
+ */
60
+ md?: GridItemBreakpointProps;
61
+
62
+ /**
63
+ * Override pada breakpoint lg (min-width: 1024px).
64
+ */
65
+ lg?: GridItemBreakpointProps;
66
+
67
+ /**
68
+ * Override pada breakpoint xl (min-width: 1280px).
69
+ */
70
+ xl?: GridItemBreakpointProps;
71
+
72
+ /**
73
+ * Override pada breakpoint xxl / 2xl (min-width: 1536px).
74
+ */
75
+ xxl?: GridItemBreakpointProps;
76
+
77
+ /**
78
+ * Kustomisasi visual granular root kontainer (UiProps).
79
+ */
80
+ ui?: UiProps;
81
+
82
+ /**
83
+ * Class CSS kustom.
84
+ */
85
+ className?: string;
86
+
87
+ /**
88
+ * Style kustom inline.
89
+ */
90
+ style?: any;
91
+
92
+ /**
93
+ * Konten di dalam item grid.
94
+ */
95
+ children?: any;
96
+ }
97
+
98
+ declare const component: DefineComponent<GridItemProps>;
99
+ export default component;
@@ -0,0 +1 @@
1
+ .ttdk-grid{box-sizing:border-box;grid-template-columns:var(--ttdk-grid-template-columns,repeat(1, minmax(0, 1fr)));grid-template-rows:var(--ttdk-grid-template-rows,auto);gap:var(--ttdk-grid-gap,0);justify-content:var(--ttdk-grid-justify-content,normal);align-content:var(--ttdk-grid-align-content,normal);display:grid}.ttdk-grid-item{box-sizing:border-box;grid-column:var(--ttdk-grid-item-col,auto);grid-row:var(--ttdk-grid-item-row,auto);justify-self:var(--ttdk-grid-item-justify-self,auto);order:var(--ttdk-grid-item-order,0);min-width:0}@media (width>=640px){.ttdk-grid{grid-template-columns:var(--ttdk-grid-template-columns-sm,var(--ttdk-grid-template-columns,repeat(1, minmax(0, 1fr))));grid-template-rows:var(--ttdk-grid-template-rows-sm,var(--ttdk-grid-template-rows,auto));gap:var(--ttdk-grid-gap-sm,var(--ttdk-grid-gap,0));justify-content:var(--ttdk-grid-justify-content-sm,var(--ttdk-grid-justify-content,normal));align-content:var(--ttdk-grid-align-content-sm,var(--ttdk-grid-align-content,normal))}.ttdk-grid-item{grid-column:var(--ttdk-grid-item-col-sm,var(--ttdk-grid-item-col,auto));grid-row:var(--ttdk-grid-item-row-sm,var(--ttdk-grid-item-row,auto));justify-self:var(--ttdk-grid-item-justify-self-sm,var(--ttdk-grid-item-justify-self,auto));order:var(--ttdk-grid-item-order-sm,var(--ttdk-grid-item-order,0))}}@media (width>=768px){.ttdk-grid{grid-template-columns:var(--ttdk-grid-template-columns-md,var(--ttdk-grid-template-columns-sm,var(--ttdk-grid-template-columns,repeat(1, minmax(0, 1fr)))));grid-template-rows:var(--ttdk-grid-template-rows-md,var(--ttdk-grid-template-rows-sm,var(--ttdk-grid-template-rows,auto)));gap:var(--ttdk-grid-gap-md,var(--ttdk-grid-gap-sm,var(--ttdk-grid-gap,0)));justify-content:var(--ttdk-grid-justify-content-md,var(--ttdk-grid-justify-content-sm,var(--ttdk-grid-justify-content,normal)));align-content:var(--ttdk-grid-align-content-md,var(--ttdk-grid-align-content-sm,var(--ttdk-grid-align-content,normal)))}.ttdk-grid-item{grid-column:var(--ttdk-grid-item-col-md,var(--ttdk-grid-item-col-sm,var(--ttdk-grid-item-col,auto)));grid-row:var(--ttdk-grid-item-row-md,var(--ttdk-grid-item-row-sm,var(--ttdk-grid-item-row,auto)));justify-self:var(--ttdk-grid-item-justify-self-md,var(--ttdk-grid-item-justify-self-sm,var(--ttdk-grid-item-justify-self,auto)));order:var(--ttdk-grid-item-order-md,var(--ttdk-grid-item-order-sm,var(--ttdk-grid-item-order,0)))}}@media (width>=1024px){.ttdk-grid{grid-template-columns:var(--ttdk-grid-template-columns-lg,var(--ttdk-grid-template-columns-md,var(--ttdk-grid-template-columns-sm,var(--ttdk-grid-template-columns,repeat(1, minmax(0, 1fr))))));grid-template-rows:var(--ttdk-grid-template-rows-lg,var(--ttdk-grid-template-rows-md,var(--ttdk-grid-template-rows-sm,var(--ttdk-grid-template-rows,auto))));gap:var(--ttdk-grid-gap-lg,var(--ttdk-grid-gap-md,var(--ttdk-grid-gap-sm,var(--ttdk-grid-gap,0))));justify-content:var(--ttdk-grid-justify-content-lg,var(--ttdk-grid-justify-content-md,var(--ttdk-grid-justify-content-sm,var(--ttdk-grid-justify-content,normal))));align-content:var(--ttdk-grid-align-content-lg,var(--ttdk-grid-align-content-md,var(--ttdk-grid-align-content-sm,var(--ttdk-grid-align-content,normal))))}.ttdk-grid-item{grid-column:var(--ttdk-grid-item-col-lg,var(--ttdk-grid-item-col-md,var(--ttdk-grid-item-col-sm,var(--ttdk-grid-item-col,auto))));grid-row:var(--ttdk-grid-item-row-lg,var(--ttdk-grid-item-row-md,var(--ttdk-grid-item-row-sm,var(--ttdk-grid-item-row,auto))));justify-self:var(--ttdk-grid-item-justify-self-lg,var(--ttdk-grid-item-justify-self-md,var(--ttdk-grid-item-justify-self-sm,var(--ttdk-grid-item-justify-self,auto))));order:var(--ttdk-grid-item-order-lg,var(--ttdk-grid-item-order-md,var(--ttdk-grid-item-order-sm,var(--ttdk-grid-item-order,0))))}}@media (width>=1280px){.ttdk-grid{grid-template-columns:var(--ttdk-grid-template-columns-xl,var(--ttdk-grid-template-columns-lg,var(--ttdk-grid-template-columns-md,var(--ttdk-grid-template-columns-sm,var(--ttdk-grid-template-columns,repeat(1, minmax(0, 1fr)))))));grid-template-rows:var(--ttdk-grid-template-rows-xl,var(--ttdk-grid-template-rows-lg,var(--ttdk-grid-template-rows-md,var(--ttdk-grid-template-rows-sm,var(--ttdk-grid-template-rows,auto)))));gap:var(--ttdk-grid-gap-xl,var(--ttdk-grid-gap-lg,var(--ttdk-grid-gap-md,var(--ttdk-grid-gap-sm,var(--ttdk-grid-gap,0)))));justify-content:var(--ttdk-grid-justify-content-xl,var(--ttdk-grid-justify-content-lg,var(--ttdk-grid-justify-content-md,var(--ttdk-grid-justify-content-sm,var(--ttdk-grid-justify-content,normal)))));align-content:var(--ttdk-grid-align-content-xl,var(--ttdk-grid-align-content-lg,var(--ttdk-grid-align-content-md,var(--ttdk-grid-align-content-sm,var(--ttdk-grid-align-content,normal)))))}.ttdk-grid-item{grid-column:var(--ttdk-grid-item-col-xl,var(--ttdk-grid-item-col-lg,var(--ttdk-grid-item-col-md,var(--ttdk-grid-item-col-sm,var(--ttdk-grid-item-col,auto)))));grid-row:var(--ttdk-grid-item-row-xl,var(--ttdk-grid-item-row-lg,var(--ttdk-grid-item-row-md,var(--ttdk-grid-item-row-sm,var(--ttdk-grid-item-row,auto)))));justify-self:var(--ttdk-grid-item-justify-self-xl,var(--ttdk-grid-item-justify-self-lg,var(--ttdk-grid-item-justify-self-md,var(--ttdk-grid-item-justify-self-sm,var(--ttdk-grid-item-justify-self,auto)))));order:var(--ttdk-grid-item-order-xl,var(--ttdk-grid-item-order-lg,var(--ttdk-grid-item-order-md,var(--ttdk-grid-item-order-sm,var(--ttdk-grid-item-order,0)))))}}@media (width>=1536px){.ttdk-grid{grid-template-columns:var(--ttdk-grid-template-columns-2xl,var(--ttdk-grid-template-columns-xl,var(--ttdk-grid-template-columns-lg,var(--ttdk-grid-template-columns-md,var(--ttdk-grid-template-columns-sm,var(--ttdk-grid-template-columns,repeat(1, minmax(0, 1fr))))))));grid-template-rows:var(--ttdk-grid-template-rows-2xl,var(--ttdk-grid-template-rows-xl,var(--ttdk-grid-template-rows-lg,var(--ttdk-grid-template-rows-md,var(--ttdk-grid-template-rows-sm,var(--ttdk-grid-template-rows,auto))))));gap:var(--ttdk-grid-gap-2xl,var(--ttdk-grid-gap-xl,var(--ttdk-grid-gap-lg,var(--ttdk-grid-gap-md,var(--ttdk-grid-gap-sm,var(--ttdk-grid-gap,0))))));justify-content:var(--ttdk-grid-justify-content-2xl,var(--ttdk-grid-justify-content-xl,var(--ttdk-grid-justify-content-lg,var(--ttdk-grid-justify-content-md,var(--ttdk-grid-justify-content-sm,var(--ttdk-grid-justify-content,normal))))));align-content:var(--ttdk-grid-align-content-2xl,var(--ttdk-grid-align-content-xl,var(--ttdk-grid-align-content-lg,var(--ttdk-grid-align-content-md,var(--ttdk-grid-align-content-sm,var(--ttdk-grid-align-content,normal))))))}.ttdk-grid-item{grid-column:var(--ttdk-grid-item-col-2xl,var(--ttdk-grid-item-col-xl,var(--ttdk-grid-item-col-lg,var(--ttdk-grid-item-col-md,var(--ttdk-grid-item-col-sm,var(--ttdk-grid-item-col,auto))))));grid-row:var(--ttdk-grid-item-row-2xl,var(--ttdk-grid-item-row-xl,var(--ttdk-grid-item-row-lg,var(--ttdk-grid-item-row-md,var(--ttdk-grid-item-row-sm,var(--ttdk-grid-item-row,auto))))));justify-self:var(--ttdk-grid-item-justify-self-2xl,var(--ttdk-grid-item-justify-self-xl,var(--ttdk-grid-item-justify-self-lg,var(--ttdk-grid-item-justify-self-md,var(--ttdk-grid-item-justify-self-sm,var(--ttdk-grid-item-justify-self,auto))))));order:var(--ttdk-grid-item-order-2xl,var(--ttdk-grid-item-order-xl,var(--ttdk-grid-item-order-lg,var(--ttdk-grid-item-order-md,var(--ttdk-grid-item-order-sm,var(--ttdk-grid-item-order,0))))))}}
@@ -0,0 +1,94 @@
1
+ <template>
2
+ <div
3
+ :class="`ttdk-grid ${className || ''}`.trim()"
4
+ :style="{
5
+ ...buildGridVars(props),
6
+ ...buildUiVars(ui),
7
+ ...(typeof style === 'object' ? style : {}),
8
+ }"
9
+ >
10
+ <slot />
11
+ </div>
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import { buildGridVars, buildUiVars, UiProps } from "../../core/types";
16
+
17
+ export interface GridBreakpointProps {
18
+ /**
19
+ * Jumlah atau pola template kolom pada grid (grid-template-columns).
20
+ * Nilai angka (misal: 3 atau 12) otomatis dikonversi ke repeat(N, minmax(0, 1fr)).
21
+ * Nilai string (misal: "200px 1fr 2fr", "repeat(4, 1fr)").
22
+ */
23
+ templateColumns?: string | number;
24
+
25
+ /**
26
+ * Jumlah atau pola template baris pada grid (grid-template-rows).
27
+ */
28
+ templateRows?: string | number;
29
+
30
+ /**
31
+ * Jarak celah antar baris dan kolom (gap).
32
+ * Nilai angka (misal: 16) atau string (misal: "16px", "1rem", "var(--ttdk-spacing-16)").
33
+ */
34
+ gap?: string | number;
35
+
36
+ /**
37
+ * Distribusi horizontal keseluruhan grid container (justify-content).
38
+ */
39
+ justifyContent?: "start" | "center" | "end" | "around" | "between" | "evenly";
40
+
41
+ /**
42
+ * Distribusi vertikal baris di dalam grid container (align-content).
43
+ */
44
+ alignContent?: "evenly" | "around" | "between" | "center" | "start" | "end";
45
+ }
46
+ export interface GridProps extends GridBreakpointProps {
47
+ /**
48
+ * Override pada breakpoint sm (min-width: 640px).
49
+ */
50
+ sm?: GridBreakpointProps;
51
+
52
+ /**
53
+ * Override pada breakpoint md (min-width: 768px).
54
+ */
55
+ md?: GridBreakpointProps;
56
+
57
+ /**
58
+ * Override pada breakpoint lg (min-width: 1024px).
59
+ */
60
+ lg?: GridBreakpointProps;
61
+
62
+ /**
63
+ * Override pada breakpoint xl (min-width: 1280px).
64
+ */
65
+ xl?: GridBreakpointProps;
66
+
67
+ /**
68
+ * Override pada breakpoint xxl / 2xl (min-width: 1536px).
69
+ */
70
+ xxl?: GridBreakpointProps;
71
+
72
+ /**
73
+ * Kustomisasi visual granular root kontainer (UiProps).
74
+ */
75
+ ui?: UiProps;
76
+
77
+ /**
78
+ * Class CSS kustom.
79
+ */
80
+ className?: string;
81
+
82
+ /**
83
+ * Style kustom inline.
84
+ */
85
+ style?: any;
86
+
87
+ /**
88
+ * Konten anak di dalam Grid (<GridItem>).
89
+ */
90
+ children?: any;
91
+ }
92
+
93
+ const props = defineProps<GridProps>();
94
+ </script>
@@ -0,0 +1,84 @@
1
+ /* eslint-disable */
2
+ // Auto-generated by TTDK Design System Vue Type Generator
3
+ import type { DefineComponent } from "vue";
4
+ import { buildGridVars, buildUiVars, UiProps } from "../../core/types";
5
+
6
+ export interface GridBreakpointProps {
7
+ /**
8
+ * Jumlah atau pola template kolom pada grid (grid-template-columns).
9
+ * Nilai angka (misal: 3 atau 12) otomatis dikonversi ke repeat(N, minmax(0, 1fr)).
10
+ * Nilai string (misal: "200px 1fr 2fr", "repeat(4, 1fr)").
11
+ */
12
+ templateColumns?: string | number;
13
+
14
+ /**
15
+ * Jumlah atau pola template baris pada grid (grid-template-rows).
16
+ */
17
+ templateRows?: string | number;
18
+
19
+ /**
20
+ * Jarak celah antar baris dan kolom (gap).
21
+ * Nilai angka (misal: 16) atau string (misal: "16px", "1rem", "var(--ttdk-spacing-16)").
22
+ */
23
+ gap?: string | number;
24
+
25
+ /**
26
+ * Distribusi horizontal keseluruhan grid container (justify-content).
27
+ */
28
+ justifyContent?: "start" | "center" | "end" | "around" | "between" | "evenly";
29
+
30
+ /**
31
+ * Distribusi vertikal baris di dalam grid container (align-content).
32
+ */
33
+ alignContent?: "evenly" | "around" | "between" | "center" | "start" | "end";
34
+ }
35
+
36
+ export interface GridProps extends GridBreakpointProps {
37
+ /**
38
+ * Override pada breakpoint sm (min-width: 640px).
39
+ */
40
+ sm?: GridBreakpointProps;
41
+
42
+ /**
43
+ * Override pada breakpoint md (min-width: 768px).
44
+ */
45
+ md?: GridBreakpointProps;
46
+
47
+ /**
48
+ * Override pada breakpoint lg (min-width: 1024px).
49
+ */
50
+ lg?: GridBreakpointProps;
51
+
52
+ /**
53
+ * Override pada breakpoint xl (min-width: 1280px).
54
+ */
55
+ xl?: GridBreakpointProps;
56
+
57
+ /**
58
+ * Override pada breakpoint xxl / 2xl (min-width: 1536px).
59
+ */
60
+ xxl?: GridBreakpointProps;
61
+
62
+ /**
63
+ * Kustomisasi visual granular root kontainer (UiProps).
64
+ */
65
+ ui?: UiProps;
66
+
67
+ /**
68
+ * Class CSS kustom.
69
+ */
70
+ className?: string;
71
+
72
+ /**
73
+ * Style kustom inline.
74
+ */
75
+ style?: any;
76
+
77
+ /**
78
+ * Konten anak di dalam Grid (<GridItem>).
79
+ */
80
+ children?: any;
81
+ }
82
+
83
+ declare const component: DefineComponent<GridProps>;
84
+ export default component;
@@ -0,0 +1,5 @@
1
+ export { default } from './grid.vue';
2
+ export { default as Grid } from './grid.vue';
3
+ export * from './grid.vue';
4
+ export { default as GridItem } from './grid-item.vue';
5
+ export * from './grid-item.vue';
@@ -0,0 +1,153 @@
1
+ {
2
+ "name": "@ttdk-design-system/grid",
3
+ "component": "Grid",
4
+ "folder": "grid",
5
+ "description": "TTDK Grid component with multi-theme support.",
6
+ "stylesheets": [
7
+ {
8
+ "theme": "common",
9
+ "file": "grid.css",
10
+ "importPath": "web/grid/grid.css"
11
+ }
12
+ ],
13
+ "props": {
14
+ "sm": {
15
+ "name": "sm",
16
+ "type": "GridBreakpointProps",
17
+ "optional": true,
18
+ "default": null,
19
+ "description": "Override pada breakpoint sm (min-width: 640px).",
20
+ "example": null,
21
+ "param": null
22
+ },
23
+ "md": {
24
+ "name": "md",
25
+ "type": "GridBreakpointProps",
26
+ "optional": true,
27
+ "default": null,
28
+ "description": "Override pada breakpoint md (min-width: 768px).",
29
+ "example": null,
30
+ "param": null
31
+ },
32
+ "lg": {
33
+ "name": "lg",
34
+ "type": "GridBreakpointProps",
35
+ "optional": true,
36
+ "default": null,
37
+ "description": "Override pada breakpoint lg (min-width: 1024px).",
38
+ "example": null,
39
+ "param": null
40
+ },
41
+ "xl": {
42
+ "name": "xl",
43
+ "type": "GridBreakpointProps",
44
+ "optional": true,
45
+ "default": null,
46
+ "description": "Override pada breakpoint xl (min-width: 1280px).",
47
+ "example": null,
48
+ "param": null
49
+ },
50
+ "xxl": {
51
+ "name": "xxl",
52
+ "type": "GridBreakpointProps",
53
+ "optional": true,
54
+ "default": null,
55
+ "description": "Override pada breakpoint xxl / 2xl (min-width: 1536px).",
56
+ "example": null,
57
+ "param": null
58
+ },
59
+ "ui": {
60
+ "name": "ui",
61
+ "type": "UiProps",
62
+ "optional": true,
63
+ "default": null,
64
+ "description": "Kustomisasi visual granular root kontainer (UiProps).",
65
+ "example": null,
66
+ "param": null
67
+ },
68
+ "className": {
69
+ "name": "className",
70
+ "type": "string",
71
+ "optional": true,
72
+ "default": null,
73
+ "description": "Class CSS kustom.",
74
+ "example": null,
75
+ "param": null
76
+ },
77
+ "style": {
78
+ "name": "style",
79
+ "type": "any",
80
+ "optional": true,
81
+ "default": null,
82
+ "description": "Style kustom inline.",
83
+ "example": null,
84
+ "param": null
85
+ },
86
+ "children": {
87
+ "name": "children",
88
+ "type": "any",
89
+ "optional": true,
90
+ "default": null,
91
+ "description": "Konten anak di dalam Grid (<GridItem>).",
92
+ "example": null,
93
+ "param": null
94
+ }
95
+ },
96
+ "subInterfaces": {
97
+ "GridBreakpointProps": {
98
+ "templateColumns": {
99
+ "name": "templateColumns",
100
+ "type": "string | number",
101
+ "optional": true,
102
+ "default": null,
103
+ "description": "Jumlah atau pola template kolom pada grid (grid-template-columns). Nilai angka (misal: 3 atau 12) otomatis dikonversi ke repeat(N, minmax(0, 1fr)). Nilai string (misal: \"200px 1fr 2fr\", \"repeat(4, 1fr)\").",
104
+ "example": null,
105
+ "param": null
106
+ },
107
+ "templateRows": {
108
+ "name": "templateRows",
109
+ "type": "string | number",
110
+ "optional": true,
111
+ "default": null,
112
+ "description": "Jumlah atau pola template baris pada grid (grid-template-rows).",
113
+ "example": null,
114
+ "param": null
115
+ },
116
+ "gap": {
117
+ "name": "gap",
118
+ "type": "string | number",
119
+ "optional": true,
120
+ "default": null,
121
+ "description": "Jarak celah antar baris dan kolom (gap). Nilai angka (misal: 16) atau string (misal: \"16px\", \"1rem\", \"var(--ttdk-spacing-16)\").",
122
+ "example": null,
123
+ "param": null
124
+ },
125
+ "justifyContent": {
126
+ "name": "justifyContent",
127
+ "type": "'start' | 'center' | 'end' | 'around' | 'between' | 'evenly'",
128
+ "optional": true,
129
+ "default": null,
130
+ "description": "Distribusi horizontal keseluruhan grid container (justify-content).",
131
+ "example": null,
132
+ "param": null
133
+ },
134
+ "alignContent": {
135
+ "name": "alignContent",
136
+ "type": "'evenly' | 'around' | 'between' | 'center' | 'start' | 'end'",
137
+ "optional": true,
138
+ "default": null,
139
+ "description": "Distribusi vertikal baris di dalam grid container (align-content).",
140
+ "example": null,
141
+ "param": null
142
+ }
143
+ }
144
+ },
145
+ "supportedFrameworks": [
146
+ "react",
147
+ "vue",
148
+ "svelte"
149
+ ],
150
+ "themes": [
151
+ "tw"
152
+ ]
153
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * TTDK Design System — Web Module (VUE)
3
+ */
4
+
5
+ export { default as Accordion } from './accordion/accordion.vue';
6
+ export * from './accordion';
7
+
8
+ export { default as Alert } from './alert/alert.vue';
9
+ export * from './alert';
10
+
11
+ export { default as Avatar } from './avatar/avatar.vue';
12
+ export * from './avatar';
13
+
14
+ export { default as Badge } from './badge/badge.vue';
15
+ export * from './badge';
16
+
17
+ export { default as Banner } from './banner/banner.vue';
18
+ export * from './banner';
19
+
20
+ export { default as Breadcrumb } from './breadcrumb/breadcrumb.vue';
21
+ export * from './breadcrumb';
22
+
23
+ export { default as Button } from './button/button.vue';
24
+ export * from './button';
25
+
26
+ export { default as Calendar } from './calendar/calendar.vue';
27
+ export * from './calendar';
28
+
29
+ export { default as Card } from './card/card.vue';
30
+ export * from './card';
31
+
32
+ export { default as Checkbox } from './checkbox/checkbox.vue';
33
+ export * from './checkbox';
34
+
35
+ export { default as Chip } from './chip/chip.vue';
36
+ export * from './chip';
37
+
38
+ export { default as Dropdown } from './dropdown/dropdown.vue';
39
+ export * from './dropdown';
40
+
41
+ export { default as Flex } from './flex/flex.vue';
42
+ export * from './flex';
43
+
44
+ export { default as Grid } from './grid/grid.vue';
45
+ export * from './grid';
46
+
47
+ export { default as Input } from './input/input.vue';
48
+ export * from './input';
49
+
50
+ export { default as InputNumber } from './input-number/input-number.vue';
51
+ export * from './input-number';
52
+
53
+ export { default as Modal } from './modal/modal.vue';
54
+ export * from './modal';
55
+
56
+ export { default as Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationFirst, PaginationLast, PaginationEllipsis } from './pagination';
57
+ export * from './pagination';
58
+
59
+ export { default as Popover } from './popover/popover.vue';
60
+ export * from './popover';
61
+
62
+ export { default as Radio } from './radio/radio.vue';
63
+ export * from './radio';
64
+
65
+ export { default as Selectbox } from './selectbox/selectbox.vue';
66
+ export * from './selectbox';
67
+
68
+ export { default as Sonner, default as Toaster, toast } from './sonner';
69
+ export * from './sonner';
70
+
71
+ export { default as Table, default as DataTable, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption, TableEmpty } from './table';
72
+ export type { TableProps, TableUiProps } from './table/table.vue';
73
+ export * from './table';
74
+
75
+ export { default as Tabs } from './tabs/tabs.vue';
76
+ export * from './tabs';
77
+
78
+ export { default as Text } from './text/text.vue';
79
+ export * from './text';
80
+
81
+ export { default as Textarea } from './textarea/textarea.vue';
82
+ export * from './textarea';
83
+
84
+ export { default as Tooltip } from './tooltip/tooltip.vue';
85
+ export * from './tooltip';
86
+