@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.
- package/AI_GUIDE.md +6518 -0
- package/README.md +106 -2
- package/llms.txt +6518 -0
- package/package.json +1099 -4
- package/src/core/index.ts +2 -0
- package/src/core/tailwind-preset.cjs +62 -0
- package/src/core/tailwind-preset.ts +85 -0
- package/src/core/theme/tokens.css +663 -0
- package/src/core/types.ts +836 -0
- package/src/index.ts +17 -0
- package/src/tailwind-preset.cjs +62 -0
- package/src/tailwind-preset.ts +85 -0
- package/src/types.ts +1 -0
- package/src/web/accordion/AI_GUIDE.md +149 -0
- package/src/web/accordion/accordion.css +1 -0
- package/src/web/accordion/accordion.tsx +430 -0
- package/src/web/accordion/index.ts +3 -0
- package/src/web/accordion/manifest.json +351 -0
- package/src/web/alert/AI_GUIDE.md +139 -0
- package/src/web/alert/alert.css +1 -0
- package/src/web/alert/alert.tsx +318 -0
- package/src/web/alert/index.ts +3 -0
- package/src/web/alert/manifest.json +240 -0
- package/src/web/avatar/AI_GUIDE.md +118 -0
- package/src/web/avatar/avatar.css +1 -0
- package/src/web/avatar/avatar.tsx +233 -0
- package/src/web/avatar/index.ts +3 -0
- package/src/web/avatar/manifest.json +195 -0
- package/src/web/badge/AI_GUIDE.md +94 -0
- package/src/web/badge/badge.css +1 -0
- package/src/web/badge/badge.tsx +140 -0
- package/src/web/badge/index.ts +2 -0
- package/src/web/badge/manifest.json +141 -0
- package/src/web/banner/AI_GUIDE.md +130 -0
- package/src/web/banner/banner.css +1 -0
- package/src/web/banner/banner.tsx +334 -0
- package/src/web/banner/index.ts +3 -0
- package/src/web/banner/manifest.json +240 -0
- package/src/web/breadcrumb/AI_GUIDE.md +120 -0
- package/src/web/breadcrumb/breadcrumb.css +1 -0
- package/src/web/breadcrumb/breadcrumb.tsx +306 -0
- package/src/web/breadcrumb/index.ts +3 -0
- package/src/web/breadcrumb/manifest.json +225 -0
- package/src/web/button/AI_GUIDE.md +121 -0
- package/src/web/button/button.css +1 -0
- package/src/web/button/button.tsx +287 -0
- package/src/web/button/index.ts +2 -0
- package/src/web/button/manifest.json +177 -0
- package/src/web/calendar/AI_GUIDE.md +151 -0
- package/src/web/calendar/calendar.css +1 -0
- package/src/web/calendar/calendar.tsx +1611 -0
- package/src/web/calendar/index.ts +3 -0
- package/src/web/calendar/manifest.json +470 -0
- package/src/web/card/AI_GUIDE.md +133 -0
- package/src/web/card/card.css +1 -0
- package/src/web/card/card.tsx +408 -0
- package/src/web/card/index.ts +4 -0
- package/src/web/card/manifest.json +357 -0
- package/src/web/checkbox/AI_GUIDE.md +146 -0
- package/src/web/checkbox/checkbox.css +1 -0
- package/src/web/checkbox/checkbox.tsx +307 -0
- package/src/web/checkbox/index.ts +2 -0
- package/src/web/checkbox/manifest.json +294 -0
- package/src/web/chip/AI_GUIDE.md +186 -0
- package/src/web/chip/chip.css +1 -0
- package/src/web/chip/chip.tsx +230 -0
- package/src/web/chip/index.ts +2 -0
- package/src/web/chip/manifest.json +186 -0
- package/src/web/dropdown/AI_GUIDE.md +167 -0
- package/src/web/dropdown/dropdown.css +1 -0
- package/src/web/dropdown/dropdown.tsx +1274 -0
- package/src/web/dropdown/index.ts +3 -0
- package/src/web/dropdown/manifest.json +576 -0
- package/src/web/flex/AI_GUIDE.md +113 -0
- package/src/web/flex/flex-item.tsx +97 -0
- package/src/web/flex/flex.css +1 -0
- package/src/web/flex/flex.tsx +108 -0
- package/src/web/flex/index.ts +5 -0
- package/src/web/flex/manifest.json +162 -0
- package/src/web/form/index.ts +7 -0
- package/src/web/grid/AI_GUIDE.md +112 -0
- package/src/web/grid/grid-item.tsx +112 -0
- package/src/web/grid/grid.css +1 -0
- package/src/web/grid/grid.tsx +99 -0
- package/src/web/grid/index.ts +5 -0
- package/src/web/grid/manifest.json +153 -0
- package/src/web/index.ts +86 -0
- package/src/web/input/AI_GUIDE.md +159 -0
- package/src/web/input/index.ts +3 -0
- package/src/web/input/input.css +1 -0
- package/src/web/input/input.tsx +537 -0
- package/src/web/input/manifest.json +465 -0
- package/src/web/input-number/AI_GUIDE.md +164 -0
- package/src/web/input-number/index.ts +3 -0
- package/src/web/input-number/input-number.css +1 -0
- package/src/web/input-number/input-number.tsx +1193 -0
- package/src/web/input-number/manifest.json +575 -0
- package/src/web/modal/AI_GUIDE.md +171 -0
- package/src/web/modal/index.ts +3 -0
- package/src/web/modal/manifest.json +375 -0
- package/src/web/modal/modal.css +1 -0
- package/src/web/modal/modal.tsx +571 -0
- package/src/web/pagination/AI_GUIDE.md +148 -0
- package/src/web/pagination/index.ts +21 -0
- package/src/web/pagination/manifest.json +432 -0
- package/src/web/pagination/pagination-content.tsx +45 -0
- package/src/web/pagination/pagination-ellipsis.tsx +54 -0
- package/src/web/pagination/pagination-first.tsx +155 -0
- package/src/web/pagination/pagination-item.tsx +45 -0
- package/src/web/pagination/pagination-last.tsx +155 -0
- package/src/web/pagination/pagination-link.tsx +121 -0
- package/src/web/pagination/pagination-next.tsx +158 -0
- package/src/web/pagination/pagination-previous.tsx +158 -0
- package/src/web/pagination/pagination.css +1 -0
- package/src/web/pagination/pagination.tsx +687 -0
- package/src/web/popover/AI_GUIDE.md +163 -0
- package/src/web/popover/index.ts +3 -0
- package/src/web/popover/manifest.json +396 -0
- package/src/web/popover/popover.css +1 -0
- package/src/web/popover/popover.tsx +702 -0
- package/src/web/radio/AI_GUIDE.md +155 -0
- package/src/web/radio/index.ts +2 -0
- package/src/web/radio/manifest.json +294 -0
- package/src/web/radio/radio.css +1 -0
- package/src/web/radio/radio.tsx +290 -0
- package/src/web/selectbox/AI_GUIDE.md +216 -0
- package/src/web/selectbox/index.ts +3 -0
- package/src/web/selectbox/manifest.json +477 -0
- package/src/web/selectbox/selectbox.css +1 -0
- package/src/web/selectbox/selectbox.tsx +1048 -0
- package/src/web/sonner/AI_GUIDE.md +98 -0
- package/src/web/sonner/index.ts +114 -0
- package/src/web/sonner/manifest.json +132 -0
- package/src/web/sonner/sonner.css +1 -0
- package/src/web/sonner/sonner.tsx +177 -0
- package/src/web/table/AI_GUIDE.md +145 -0
- package/src/web/table/index.ts +35 -0
- package/src/web/table/manifest.json +168 -0
- package/src/web/table/table-body.tsx +45 -0
- package/src/web/table/table-caption.tsx +45 -0
- package/src/web/table/table-cell.tsx +74 -0
- package/src/web/table/table-empty.tsx +108 -0
- package/src/web/table/table-footer.tsx +45 -0
- package/src/web/table/table-head.tsx +80 -0
- package/src/web/table/table-header.tsx +45 -0
- package/src/web/table/table-row.tsx +69 -0
- package/src/web/table/table.css +1 -0
- package/src/web/table/table.tsx +305 -0
- package/src/web/tabs/AI_GUIDE.md +150 -0
- package/src/web/tabs/index.ts +3 -0
- package/src/web/tabs/manifest.json +315 -0
- package/src/web/tabs/tabs.css +1 -0
- package/src/web/tabs/tabs.tsx +332 -0
- package/src/web/text/AI_GUIDE.md +129 -0
- package/src/web/text/index.ts +3 -0
- package/src/web/text/manifest.json +195 -0
- package/src/web/text/text.css +1 -0
- package/src/web/text/text.tsx +689 -0
- package/src/web/textarea/AI_GUIDE.md +141 -0
- package/src/web/textarea/index.ts +3 -0
- package/src/web/textarea/manifest.json +438 -0
- package/src/web/textarea/textarea.css +1 -0
- package/src/web/textarea/textarea.tsx +467 -0
- package/src/web/tooltip/AI_GUIDE.md +110 -0
- package/src/web/tooltip/index.ts +3 -0
- package/src/web/tooltip/manifest.json +222 -0
- package/src/web/tooltip/tooltip.css +1 -0
- package/src/web/tooltip/tooltip.tsx +423 -0
- package/src/webview/bottomsheet/AI_GUIDE.md +141 -0
- package/src/webview/bottomsheet/bottomsheet.css +1 -0
- package/src/webview/bottomsheet/bottomsheet.tsx +603 -0
- package/src/webview/bottomsheet/index.ts +4 -0
- package/src/webview/bottomsheet/manifest.json +377 -0
- package/src/webview/button/AI_GUIDE.md +79 -0
- package/src/webview/button/button-ios.css +1 -0
- package/src/webview/button/button-ios.tsx +138 -0
- package/src/webview/button/button-material.css +1 -0
- package/src/webview/button/button-material.tsx +138 -0
- package/src/webview/button/index.ts +7 -0
- package/src/webview/button/manifest.json +148 -0
- package/src/webview/index.ts +7 -0
- package/tailwind-preset.cjs +62 -0
- package/tailwind-preset.js +62 -0
- package/ttdk-manifest.json +10188 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
|
|
4
|
+
export type ButtonMaterialUiProps = UiProps;
|
|
5
|
+
export interface ButtonMaterialProps {
|
|
6
|
+
/**
|
|
7
|
+
* Inline CSS style kustom.
|
|
8
|
+
*/
|
|
9
|
+
style?: React.CSSProperties;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 5 Tipe tombol resmi Material Design 3 (M3):
|
|
13
|
+
* - `'filled'`: Tombol kontainer warna primer pekat (high emphasis, default).
|
|
14
|
+
* - `'elevated'`: Tombol berlatar surface dengan bayangan elevasi level 1.
|
|
15
|
+
* - `'tonal'`: Tombol warna kontainer sekunder (medium-high emphasis).
|
|
16
|
+
* - `'outlined'`: Tombol bergaris tepi 1px dengan latar transparan.
|
|
17
|
+
* - `'text'`: Tombol teks tanpa latar dan border (low emphasis).
|
|
18
|
+
*
|
|
19
|
+
* @default 'filled'
|
|
20
|
+
*/
|
|
21
|
+
variant?: "filled" | "elevated" | "tonal" | "outlined" | "text";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Skema peran warna Material 3:
|
|
25
|
+
* - `'primary'`: Warna tema primer (M3 Primary).
|
|
26
|
+
* - `'secondary'`: Warna tema sekunder (M3 Secondary).
|
|
27
|
+
* - `'tertiary'`: Warna tema tersier (M3 Tertiary).
|
|
28
|
+
* - `'error'`: Warna peringatan / bahaya (M3 Error).
|
|
29
|
+
*
|
|
30
|
+
* @default 'primary'
|
|
31
|
+
*/
|
|
32
|
+
color?: "primary" | "secondary" | "tertiary" | "error";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Skala ukuran tombol M3:
|
|
36
|
+
* - `'sm'`: 32px (compact)
|
|
37
|
+
* - `'md'`: 40px (standar M3 spec)
|
|
38
|
+
* - `'lg'`: 48px (large touch target)
|
|
39
|
+
*
|
|
40
|
+
* @default 'md'
|
|
41
|
+
*/
|
|
42
|
+
size?: "sm" | "md" | "lg";
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Bentuk sudut kontainer:
|
|
46
|
+
* - `'pill'`: Full rounded pill khas Material 3 (border-radius: 9999px).
|
|
47
|
+
* - `'rounded'`: Sudut membulat medium (~12px).
|
|
48
|
+
*
|
|
49
|
+
* @default 'pill'
|
|
50
|
+
*/
|
|
51
|
+
shape?: "pill" | "rounded";
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Tipe tombol HTML native.
|
|
55
|
+
* @default 'button'
|
|
56
|
+
*/
|
|
57
|
+
type?: "button" | "submit" | "reset";
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Kondisi non-aktif tombol.
|
|
61
|
+
* @default false
|
|
62
|
+
*/
|
|
63
|
+
disabled?: boolean;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Menampilkan spinner loading M3.
|
|
67
|
+
* @default false
|
|
68
|
+
*/
|
|
69
|
+
loading?: boolean;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Lebar penuh 100% mengikuti kontainer induk.
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
block?: boolean;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* ID unik elemen HTML.
|
|
79
|
+
*/
|
|
80
|
+
id?: string;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Konfigurasi styling kustom UI.
|
|
84
|
+
*/
|
|
85
|
+
ui?: ButtonMaterialUiProps;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Callback saat tombol ditekan / diklik.
|
|
89
|
+
*/
|
|
90
|
+
onClick?: (event: any) => void;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Konten label / elemen di dalam tombol.
|
|
94
|
+
*/
|
|
95
|
+
children?: any;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
import { buildUiVars, UiProps } from "../../core/types";
|
|
99
|
+
|
|
100
|
+
function ButtonMaterial(props: ButtonMaterialProps) {
|
|
101
|
+
return (
|
|
102
|
+
<button
|
|
103
|
+
id={props.id}
|
|
104
|
+
type={props.type || "button"}
|
|
105
|
+
disabled={props.disabled || props.loading}
|
|
106
|
+
className={
|
|
107
|
+
"ttdk-btn-m3" +
|
|
108
|
+
" ttdk-btn-m3--" +
|
|
109
|
+
(props.variant || "filled") +
|
|
110
|
+
" ttdk-btn-m3--" +
|
|
111
|
+
(props.color || "primary") +
|
|
112
|
+
" ttdk-btn-m3--" +
|
|
113
|
+
(props.size || "md") +
|
|
114
|
+
(props.shape === "rounded" ? " ttdk-btn-m3--rounded" : "") +
|
|
115
|
+
(props.block ? " ttdk-btn-m3--block" : "") +
|
|
116
|
+
(props.loading ? " ttdk-btn-m3--loading" : "") +
|
|
117
|
+
(props.disabled ? " ttdk-btn-m3--disabled" : "") +
|
|
118
|
+
(props.ui?.class ? " " + props.ui.class : "")
|
|
119
|
+
}
|
|
120
|
+
style={{
|
|
121
|
+
...buildUiVars(props.ui?.style),
|
|
122
|
+
...props.style,
|
|
123
|
+
}}
|
|
124
|
+
onClick={(e) => {
|
|
125
|
+
if (!props.disabled && !props.loading && props.onClick) {
|
|
126
|
+
props.onClick(e);
|
|
127
|
+
}
|
|
128
|
+
}}
|
|
129
|
+
>
|
|
130
|
+
{props.loading ? (
|
|
131
|
+
<span className="ttdk-btn-m3__spinner" aria-hidden="true" />
|
|
132
|
+
) : null}
|
|
133
|
+
<>{props.children}</>
|
|
134
|
+
</button>
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export default ButtonMaterial;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as ButtonIos } from './button-ios';
|
|
2
|
+
export type { ButtonIosProps, ButtonIosUiProps } from './button-ios';
|
|
3
|
+
export * from './button-ios';
|
|
4
|
+
|
|
5
|
+
export { default as ButtonMaterial } from './button-material';
|
|
6
|
+
export type { ButtonMaterialProps, ButtonMaterialUiProps } from './button-material';
|
|
7
|
+
export * from './button-material';
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ttdk-design-system/button",
|
|
3
|
+
"component": "ButtonMaterial",
|
|
4
|
+
"folder": "button",
|
|
5
|
+
"description": "TTDK ButtonMaterial component with multi-theme support.",
|
|
6
|
+
"stylesheets": [
|
|
7
|
+
{
|
|
8
|
+
"theme": "common",
|
|
9
|
+
"file": "button-ios.css",
|
|
10
|
+
"importPath": "webview/button/button-ios.css"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"theme": "common",
|
|
14
|
+
"file": "button-material.css",
|
|
15
|
+
"importPath": "webview/button/button-material.css"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"props": {},
|
|
19
|
+
"subInterfaces": {
|
|
20
|
+
"ButtonMaterialProps": {
|
|
21
|
+
"style": {
|
|
22
|
+
"name": "style",
|
|
23
|
+
"type": "any",
|
|
24
|
+
"optional": true,
|
|
25
|
+
"default": null,
|
|
26
|
+
"description": "Inline CSS style kustom.",
|
|
27
|
+
"example": null,
|
|
28
|
+
"param": null
|
|
29
|
+
},
|
|
30
|
+
"variant": {
|
|
31
|
+
"name": "variant",
|
|
32
|
+
"type": "'filled' | 'elevated' | 'tonal' | 'outlined' | 'text'",
|
|
33
|
+
"optional": true,
|
|
34
|
+
"default": "filled",
|
|
35
|
+
"description": "5 Tipe tombol resmi Material Design 3 (M3): - `'filled'`: Tombol kontainer warna primer pekat (high emphasis, default). - `'elevated'`: Tombol berlatar surface dengan bayangan elevasi level 1. - `'tonal'`: Tombol warna kontainer sekunder (medium-high emphasis). - `'outlined'`: Tombol bergaris tepi 1px dengan latar transparan. - `'text'`: Tombol teks tanpa latar dan border (low emphasis).",
|
|
36
|
+
"example": null,
|
|
37
|
+
"param": null
|
|
38
|
+
},
|
|
39
|
+
"color": {
|
|
40
|
+
"name": "color",
|
|
41
|
+
"type": "'primary' | 'secondary' | 'tertiary' | 'error'",
|
|
42
|
+
"optional": true,
|
|
43
|
+
"default": "primary",
|
|
44
|
+
"description": "Skema peran warna Material 3: - `'primary'`: Warna tema primer (M3 Primary). - `'secondary'`: Warna tema sekunder (M3 Secondary). - `'tertiary'`: Warna tema tersier (M3 Tertiary). - `'error'`: Warna peringatan / bahaya (M3 Error).",
|
|
45
|
+
"example": null,
|
|
46
|
+
"param": null
|
|
47
|
+
},
|
|
48
|
+
"size": {
|
|
49
|
+
"name": "size",
|
|
50
|
+
"type": "'sm' | 'md' | 'lg'",
|
|
51
|
+
"optional": true,
|
|
52
|
+
"default": "md",
|
|
53
|
+
"description": "Skala ukuran tombol M3: - `'sm'`: 32px (compact) - `'md'`: 40px (standar M3 spec) - `'lg'`: 48px (large touch target)",
|
|
54
|
+
"example": null,
|
|
55
|
+
"param": null
|
|
56
|
+
},
|
|
57
|
+
"shape": {
|
|
58
|
+
"name": "shape",
|
|
59
|
+
"type": "'pill' | 'rounded'",
|
|
60
|
+
"optional": true,
|
|
61
|
+
"default": "pill",
|
|
62
|
+
"description": "Bentuk sudut kontainer: - `'pill'`: Full rounded pill khas Material 3 (border-radius: 9999px). - `'rounded'`: Sudut membulat medium (~12px).",
|
|
63
|
+
"example": null,
|
|
64
|
+
"param": null
|
|
65
|
+
},
|
|
66
|
+
"type": {
|
|
67
|
+
"name": "type",
|
|
68
|
+
"type": "'button' | 'submit' | 'reset'",
|
|
69
|
+
"optional": true,
|
|
70
|
+
"default": "button",
|
|
71
|
+
"description": "Tipe tombol HTML native.",
|
|
72
|
+
"example": null,
|
|
73
|
+
"param": null
|
|
74
|
+
},
|
|
75
|
+
"disabled": {
|
|
76
|
+
"name": "disabled",
|
|
77
|
+
"type": "boolean",
|
|
78
|
+
"optional": true,
|
|
79
|
+
"default": "false",
|
|
80
|
+
"description": "Kondisi non-aktif tombol.",
|
|
81
|
+
"example": null,
|
|
82
|
+
"param": null
|
|
83
|
+
},
|
|
84
|
+
"loading": {
|
|
85
|
+
"name": "loading",
|
|
86
|
+
"type": "boolean",
|
|
87
|
+
"optional": true,
|
|
88
|
+
"default": "false",
|
|
89
|
+
"description": "Menampilkan spinner loading M3.",
|
|
90
|
+
"example": null,
|
|
91
|
+
"param": null
|
|
92
|
+
},
|
|
93
|
+
"block": {
|
|
94
|
+
"name": "block",
|
|
95
|
+
"type": "boolean",
|
|
96
|
+
"optional": true,
|
|
97
|
+
"default": "false",
|
|
98
|
+
"description": "Lebar penuh 100% mengikuti kontainer induk.",
|
|
99
|
+
"example": null,
|
|
100
|
+
"param": null
|
|
101
|
+
},
|
|
102
|
+
"id": {
|
|
103
|
+
"name": "id",
|
|
104
|
+
"type": "string",
|
|
105
|
+
"optional": true,
|
|
106
|
+
"default": null,
|
|
107
|
+
"description": "ID unik elemen HTML.",
|
|
108
|
+
"example": null,
|
|
109
|
+
"param": null
|
|
110
|
+
},
|
|
111
|
+
"ui": {
|
|
112
|
+
"name": "ui",
|
|
113
|
+
"type": "ButtonMaterialUiProps",
|
|
114
|
+
"optional": true,
|
|
115
|
+
"default": null,
|
|
116
|
+
"description": "Konfigurasi styling kustom UI.",
|
|
117
|
+
"example": null,
|
|
118
|
+
"param": null
|
|
119
|
+
},
|
|
120
|
+
"onClick": {
|
|
121
|
+
"name": "onClick",
|
|
122
|
+
"type": "(event: any) => void",
|
|
123
|
+
"optional": true,
|
|
124
|
+
"default": null,
|
|
125
|
+
"description": "Callback saat tombol ditekan / diklik.",
|
|
126
|
+
"example": null,
|
|
127
|
+
"param": null
|
|
128
|
+
},
|
|
129
|
+
"children": {
|
|
130
|
+
"name": "children",
|
|
131
|
+
"type": "any",
|
|
132
|
+
"optional": true,
|
|
133
|
+
"default": null,
|
|
134
|
+
"description": "Konten label / elemen di dalam tombol.",
|
|
135
|
+
"example": null,
|
|
136
|
+
"param": null
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"supportedFrameworks": [
|
|
141
|
+
"react",
|
|
142
|
+
"vue",
|
|
143
|
+
"svelte"
|
|
144
|
+
],
|
|
145
|
+
"themes": [
|
|
146
|
+
"tw"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTDK Design System — Official Tailwind CSS Preset (CommonJS)
|
|
3
|
+
*/
|
|
4
|
+
module.exports = {
|
|
5
|
+
theme: {
|
|
6
|
+
extend: {
|
|
7
|
+
spacing: {
|
|
8
|
+
"0": "var(--ttdk-spacing-0, 0px)",
|
|
9
|
+
"2": "var(--ttdk-spacing-2, 2px)",
|
|
10
|
+
"4": "var(--ttdk-spacing-4, 4px)",
|
|
11
|
+
"6": "var(--ttdk-spacing-6, 6px)",
|
|
12
|
+
"8": "var(--ttdk-spacing-8, 8px)",
|
|
13
|
+
"12": "var(--ttdk-spacing-12, 12px)",
|
|
14
|
+
"16": "var(--ttdk-spacing-16, 16px)",
|
|
15
|
+
"20": "var(--ttdk-spacing-20, 20px)",
|
|
16
|
+
"24": "var(--ttdk-spacing-24, 24px)",
|
|
17
|
+
"32": "var(--ttdk-spacing-32, 32px)",
|
|
18
|
+
"48": "var(--ttdk-spacing-48, 48px)",
|
|
19
|
+
"64": "var(--ttdk-spacing-64, 64px)",
|
|
20
|
+
"96": "var(--ttdk-spacing-96, 96px)",
|
|
21
|
+
},
|
|
22
|
+
boxShadow: {
|
|
23
|
+
"ttdk-sm": "var(--ttdk-shadow-sm, 0px 1px 10px 0px rgba(0, 0, 0, 0.08))",
|
|
24
|
+
"ttdk-md": "var(--ttdk-shadow-md, 0px 1px 15px 0px rgba(0, 0, 0, 0.1))",
|
|
25
|
+
"ttdk-lg": "var(--ttdk-shadow-lg, 0px 4px 12px 0px rgba(48, 49, 53, 0.2))",
|
|
26
|
+
"ttdk-top": "var(--ttdk-shadow-top, 0px 4px 12px 0px rgba(48, 49, 53, 0.2))",
|
|
27
|
+
"ttdk-bottom": "var(--ttdk-shadow-bottom, 0px 4px 16px 0px rgba(0, 0, 0, 0.08))",
|
|
28
|
+
"ttdk-right": "var(--ttdk-shadow-right, 4px 0px 16px 0px rgba(0, 0, 0, 0.08))",
|
|
29
|
+
"ttdk-left": "var(--ttdk-shadow-left, -4px 0px 16px 0px rgba(0, 0, 0, 0.08))",
|
|
30
|
+
},
|
|
31
|
+
maxWidth: {
|
|
32
|
+
"ttdk-mobile": "var(--ttdk-grid-mobile-container, 328px)",
|
|
33
|
+
"ttdk-desktop": "var(--ttdk-grid-desktop-container, 1128px)",
|
|
34
|
+
},
|
|
35
|
+
colors: {
|
|
36
|
+
ttdk: {
|
|
37
|
+
primary: {
|
|
38
|
+
DEFAULT: "var(--ttdk-brand-default, #16b3ac)",
|
|
39
|
+
hover: "var(--ttdk-brand-strong, #128f8a)",
|
|
40
|
+
subtle: "var(--ttdk-brand-subtle, #b8edea)",
|
|
41
|
+
},
|
|
42
|
+
accent: {
|
|
43
|
+
DEFAULT: "var(--ttdk-color-brand-blue-500, #3899fe)",
|
|
44
|
+
hover: "var(--ttdk-color-brand-blue-600, #1e81e8)",
|
|
45
|
+
},
|
|
46
|
+
surface: {
|
|
47
|
+
DEFAULT: "var(--ttdk-bg-base-primary, #ffffff)",
|
|
48
|
+
subtle: "var(--ttdk-bg-secondary-disabled, #f1f2f3)",
|
|
49
|
+
dark: "var(--ttdk-color-neutral-black, #141313)",
|
|
50
|
+
},
|
|
51
|
+
border: {
|
|
52
|
+
DEFAULT: "var(--ttdk-stroke-subtle, #e4e5e7)",
|
|
53
|
+
dark: "var(--ttdk-stroke-subtle, #313336)",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
fontFamily: {
|
|
58
|
+
sans: ["Manrope", "ui-sans-serif", "system-ui", "-apple-system", "sans-serif"],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTDK Design System — Official Tailwind CSS Preset (CommonJS)
|
|
3
|
+
*/
|
|
4
|
+
module.exports = {
|
|
5
|
+
theme: {
|
|
6
|
+
extend: {
|
|
7
|
+
spacing: {
|
|
8
|
+
"0": "var(--ttdk-spacing-0, 0px)",
|
|
9
|
+
"2": "var(--ttdk-spacing-2, 2px)",
|
|
10
|
+
"4": "var(--ttdk-spacing-4, 4px)",
|
|
11
|
+
"6": "var(--ttdk-spacing-6, 6px)",
|
|
12
|
+
"8": "var(--ttdk-spacing-8, 8px)",
|
|
13
|
+
"12": "var(--ttdk-spacing-12, 12px)",
|
|
14
|
+
"16": "var(--ttdk-spacing-16, 16px)",
|
|
15
|
+
"20": "var(--ttdk-spacing-20, 20px)",
|
|
16
|
+
"24": "var(--ttdk-spacing-24, 24px)",
|
|
17
|
+
"32": "var(--ttdk-spacing-32, 32px)",
|
|
18
|
+
"48": "var(--ttdk-spacing-48, 48px)",
|
|
19
|
+
"64": "var(--ttdk-spacing-64, 64px)",
|
|
20
|
+
"96": "var(--ttdk-spacing-96, 96px)",
|
|
21
|
+
},
|
|
22
|
+
boxShadow: {
|
|
23
|
+
"ttdk-sm": "var(--ttdk-shadow-sm, 0px 1px 10px 0px rgba(0, 0, 0, 0.08))",
|
|
24
|
+
"ttdk-md": "var(--ttdk-shadow-md, 0px 1px 15px 0px rgba(0, 0, 0, 0.1))",
|
|
25
|
+
"ttdk-lg": "var(--ttdk-shadow-lg, 0px 4px 12px 0px rgba(48, 49, 53, 0.2))",
|
|
26
|
+
"ttdk-top": "var(--ttdk-shadow-top, 0px 4px 12px 0px rgba(48, 49, 53, 0.2))",
|
|
27
|
+
"ttdk-bottom": "var(--ttdk-shadow-bottom, 0px 4px 16px 0px rgba(0, 0, 0, 0.08))",
|
|
28
|
+
"ttdk-right": "var(--ttdk-shadow-right, 4px 0px 16px 0px rgba(0, 0, 0, 0.08))",
|
|
29
|
+
"ttdk-left": "var(--ttdk-shadow-left, -4px 0px 16px 0px rgba(0, 0, 0, 0.08))",
|
|
30
|
+
},
|
|
31
|
+
maxWidth: {
|
|
32
|
+
"ttdk-mobile": "var(--ttdk-grid-mobile-container, 328px)",
|
|
33
|
+
"ttdk-desktop": "var(--ttdk-grid-desktop-container, 1128px)",
|
|
34
|
+
},
|
|
35
|
+
colors: {
|
|
36
|
+
ttdk: {
|
|
37
|
+
primary: {
|
|
38
|
+
DEFAULT: "var(--ttdk-brand-default, #16b3ac)",
|
|
39
|
+
hover: "var(--ttdk-brand-strong, #128f8a)",
|
|
40
|
+
subtle: "var(--ttdk-brand-subtle, #b8edea)",
|
|
41
|
+
},
|
|
42
|
+
accent: {
|
|
43
|
+
DEFAULT: "var(--ttdk-color-brand-blue-500, #3899fe)",
|
|
44
|
+
hover: "var(--ttdk-color-brand-blue-600, #1e81e8)",
|
|
45
|
+
},
|
|
46
|
+
surface: {
|
|
47
|
+
DEFAULT: "var(--ttdk-bg-base-primary, #ffffff)",
|
|
48
|
+
subtle: "var(--ttdk-bg-secondary-disabled, #f1f2f3)",
|
|
49
|
+
dark: "var(--ttdk-color-neutral-black, #141313)",
|
|
50
|
+
},
|
|
51
|
+
border: {
|
|
52
|
+
DEFAULT: "var(--ttdk-stroke-subtle, #e4e5e7)",
|
|
53
|
+
dark: "var(--ttdk-stroke-subtle, #313336)",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
fontFamily: {
|
|
58
|
+
sans: ["Manrope", "ui-sans-serif", "system-ui", "-apple-system", "sans-serif"],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
};
|