@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.
- package/AI_GUIDE.md +6518 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +2 -0
- package/dist/core/tailwind-preset.cjs +62 -0
- package/dist/core/tailwind-preset.d.cts +63 -0
- package/dist/core/tailwind-preset.d.ts +74 -0
- package/dist/core/tailwind-preset.js +79 -0
- package/dist/core/theme/tokens.css +663 -0
- package/dist/core/types.d.ts +152 -0
- package/dist/core/types.js +735 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +15 -0
- package/dist/tailwind-preset.cjs +62 -0
- package/dist/tailwind-preset.d.cts +63 -0
- package/dist/tailwind-preset.d.ts +74 -0
- package/dist/tailwind-preset.js +79 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +1 -0
- package/dist/web/accordion/AI_GUIDE.md +149 -0
- package/dist/web/accordion/accordion.css +1 -0
- package/dist/web/accordion/accordion.svelte +217 -0
- package/dist/web/accordion/accordion.svelte.d.ts +224 -0
- package/dist/web/accordion/index.d.ts +2 -0
- package/dist/web/accordion/index.js +2 -0
- package/dist/web/accordion/manifest.json +351 -0
- package/dist/web/alert/AI_GUIDE.md +139 -0
- package/dist/web/alert/alert.css +1 -0
- package/dist/web/alert/alert.svelte +175 -0
- package/dist/web/alert/alert.svelte.d.ts +165 -0
- package/dist/web/alert/index.d.ts +2 -0
- package/dist/web/alert/index.js +2 -0
- package/dist/web/alert/manifest.json +240 -0
- package/dist/web/avatar/AI_GUIDE.md +118 -0
- package/dist/web/avatar/avatar.css +1 -0
- package/dist/web/avatar/avatar.svelte +108 -0
- package/dist/web/avatar/avatar.svelte.d.ts +147 -0
- package/dist/web/avatar/index.d.ts +2 -0
- package/dist/web/avatar/index.js +2 -0
- package/dist/web/avatar/manifest.json +195 -0
- package/dist/web/badge/AI_GUIDE.md +94 -0
- package/dist/web/badge/badge.css +1 -0
- package/dist/web/badge/badge.svelte +50 -0
- package/dist/web/badge/badge.svelte.d.ts +111 -0
- package/dist/web/badge/index.d.ts +2 -0
- package/dist/web/badge/index.js +2 -0
- package/dist/web/badge/manifest.json +141 -0
- package/dist/web/banner/AI_GUIDE.md +130 -0
- package/dist/web/banner/banner.css +1 -0
- package/dist/web/banner/banner.svelte +180 -0
- package/dist/web/banner/banner.svelte.d.ts +172 -0
- package/dist/web/banner/index.d.ts +2 -0
- package/dist/web/banner/index.js +2 -0
- package/dist/web/banner/manifest.json +240 -0
- package/dist/web/breadcrumb/AI_GUIDE.md +120 -0
- package/dist/web/breadcrumb/breadcrumb.css +1 -0
- package/dist/web/breadcrumb/breadcrumb.svelte +168 -0
- package/dist/web/breadcrumb/breadcrumb.svelte.d.ts +141 -0
- package/dist/web/breadcrumb/index.d.ts +2 -0
- package/dist/web/breadcrumb/index.js +2 -0
- package/dist/web/breadcrumb/manifest.json +225 -0
- package/dist/web/button/AI_GUIDE.md +121 -0
- package/dist/web/button/button.css +1 -0
- package/dist/web/button/button.svelte +154 -0
- package/dist/web/button/button.svelte.d.ts +159 -0
- package/dist/web/button/index.d.ts +2 -0
- package/dist/web/button/index.js +2 -0
- package/dist/web/button/manifest.json +177 -0
- package/dist/web/calendar/AI_GUIDE.md +151 -0
- package/dist/web/calendar/calendar.css +1 -0
- package/dist/web/calendar/calendar.svelte +1091 -0
- package/dist/web/calendar/calendar.svelte.d.ts +268 -0
- package/dist/web/calendar/index.d.ts +2 -0
- package/dist/web/calendar/index.js +2 -0
- package/dist/web/calendar/manifest.json +470 -0
- package/dist/web/card/AI_GUIDE.md +133 -0
- package/dist/web/card/card.css +1 -0
- package/dist/web/card/card.svelte +217 -0
- package/dist/web/card/card.svelte.d.ts +242 -0
- package/dist/web/card/index.d.ts +2 -0
- package/dist/web/card/index.js +2 -0
- package/dist/web/card/manifest.json +357 -0
- package/dist/web/checkbox/AI_GUIDE.md +146 -0
- package/dist/web/checkbox/checkbox.css +1 -0
- package/dist/web/checkbox/checkbox.svelte +131 -0
- package/dist/web/checkbox/checkbox.svelte.d.ts +199 -0
- package/dist/web/checkbox/index.d.ts +2 -0
- package/dist/web/checkbox/index.js +2 -0
- package/dist/web/checkbox/manifest.json +294 -0
- package/dist/web/chip/AI_GUIDE.md +186 -0
- package/dist/web/chip/chip.css +1 -0
- package/dist/web/chip/chip.svelte +113 -0
- package/dist/web/chip/chip.svelte.d.ts +145 -0
- package/dist/web/chip/index.d.ts +2 -0
- package/dist/web/chip/index.js +2 -0
- package/dist/web/chip/manifest.json +186 -0
- package/dist/web/dropdown/AI_GUIDE.md +167 -0
- package/dist/web/dropdown/dropdown.css +1 -0
- package/dist/web/dropdown/dropdown.svelte +844 -0
- package/dist/web/dropdown/dropdown.svelte.d.ts +361 -0
- package/dist/web/dropdown/index.d.ts +2 -0
- package/dist/web/dropdown/index.js +2 -0
- package/dist/web/dropdown/manifest.json +576 -0
- package/dist/web/flex/AI_GUIDE.md +113 -0
- package/dist/web/flex/flex-item.svelte +37 -0
- package/dist/web/flex/flex-item.svelte.d.ts +96 -0
- package/dist/web/flex/flex.css +1 -0
- package/dist/web/flex/flex.svelte +39 -0
- package/dist/web/flex/flex.svelte.d.ts +104 -0
- package/dist/web/flex/index.d.ts +3 -0
- package/dist/web/flex/index.js +3 -0
- package/dist/web/flex/manifest.json +162 -0
- package/dist/web/form/index.d.ts +1 -0
- package/dist/web/form/index.js +2 -0
- package/dist/web/grid/AI_GUIDE.md +112 -0
- package/dist/web/grid/grid-item.svelte +41 -0
- package/dist/web/grid/grid-item.svelte.d.ts +112 -0
- package/dist/web/grid/grid.css +1 -0
- package/dist/web/grid/grid.svelte +37 -0
- package/dist/web/grid/grid.svelte.d.ts +96 -0
- package/dist/web/grid/index.d.ts +3 -0
- package/dist/web/grid/index.js +3 -0
- package/dist/web/grid/manifest.json +153 -0
- package/dist/web/index.d.ts +58 -0
- package/dist/web/index.js +57 -0
- package/dist/web/input/AI_GUIDE.md +159 -0
- package/dist/web/input/index.d.ts +2 -0
- package/dist/web/input/index.js +2 -0
- package/dist/web/input/input.css +1 -0
- package/dist/web/input/input.svelte +283 -0
- package/dist/web/input/input.svelte.d.ts +283 -0
- package/dist/web/input/manifest.json +465 -0
- package/dist/web/input-number/AI_GUIDE.md +164 -0
- package/dist/web/input-number/index.d.ts +2 -0
- package/dist/web/input-number/index.js +2 -0
- package/dist/web/input-number/input-number.css +1 -0
- package/dist/web/input-number/input-number.svelte +783 -0
- package/dist/web/input-number/input-number.svelte.d.ts +352 -0
- package/dist/web/input-number/manifest.json +575 -0
- package/dist/web/modal/AI_GUIDE.md +171 -0
- package/dist/web/modal/index.d.ts +2 -0
- package/dist/web/modal/index.js +2 -0
- package/dist/web/modal/manifest.json +375 -0
- package/dist/web/modal/modal.css +1 -0
- package/dist/web/modal/modal.svelte +333 -0
- package/dist/web/modal/modal.svelte.d.ts +231 -0
- package/dist/web/pagination/AI_GUIDE.md +148 -0
- package/dist/web/pagination/index.d.ts +19 -0
- package/dist/web/pagination/index.js +19 -0
- package/dist/web/pagination/manifest.json +432 -0
- package/dist/web/pagination/pagination-content.svelte +25 -0
- package/dist/web/pagination/pagination-content.svelte.d.ts +36 -0
- package/dist/web/pagination/pagination-ellipsis.svelte +38 -0
- package/dist/web/pagination/pagination-ellipsis.svelte.d.ts +35 -0
- package/dist/web/pagination/pagination-first.svelte +105 -0
- package/dist/web/pagination/pagination-first.svelte.d.ts +74 -0
- package/dist/web/pagination/pagination-item.svelte +25 -0
- package/dist/web/pagination/pagination-item.svelte.d.ts +36 -0
- package/dist/web/pagination/pagination-last.svelte +105 -0
- package/dist/web/pagination/pagination-last.svelte.d.ts +74 -0
- package/dist/web/pagination/pagination-link.svelte +67 -0
- package/dist/web/pagination/pagination-link.svelte.d.ts +69 -0
- package/dist/web/pagination/pagination-next.svelte +99 -0
- package/dist/web/pagination/pagination-next.svelte.d.ts +75 -0
- package/dist/web/pagination/pagination-previous.svelte +99 -0
- package/dist/web/pagination/pagination-previous.svelte.d.ts +75 -0
- package/dist/web/pagination/pagination.css +1 -0
- package/dist/web/pagination/pagination.svelte +471 -0
- package/dist/web/pagination/pagination.svelte.d.ts +256 -0
- package/dist/web/popover/AI_GUIDE.md +163 -0
- package/dist/web/popover/index.d.ts +3 -0
- package/dist/web/popover/index.js +3 -0
- package/dist/web/popover/manifest.json +396 -0
- package/dist/web/popover/popover.css +1 -0
- package/dist/web/popover/popover.svelte +497 -0
- package/dist/web/popover/popover.svelte.d.ts +116 -0
- package/dist/web/radio/AI_GUIDE.md +155 -0
- package/dist/web/radio/index.d.ts +2 -0
- package/dist/web/radio/index.js +2 -0
- package/dist/web/radio/manifest.json +294 -0
- package/dist/web/radio/radio.css +1 -0
- package/dist/web/radio/radio.svelte +123 -0
- package/dist/web/radio/radio.svelte.d.ts +192 -0
- package/dist/web/selectbox/AI_GUIDE.md +216 -0
- package/dist/web/selectbox/index.d.ts +2 -0
- package/dist/web/selectbox/index.js +2 -0
- package/dist/web/selectbox/manifest.json +477 -0
- package/dist/web/selectbox/selectbox.css +1 -0
- package/dist/web/selectbox/selectbox.svelte +704 -0
- package/dist/web/selectbox/selectbox.svelte.d.ts +296 -0
- package/dist/web/sonner/AI_GUIDE.md +98 -0
- package/dist/web/sonner/index.d.ts +46 -0
- package/dist/web/sonner/index.js +64 -0
- package/dist/web/sonner/manifest.json +132 -0
- package/dist/web/sonner/sonner.css +1 -0
- package/dist/web/sonner/sonner.svelte +85 -0
- package/dist/web/sonner/sonner.svelte.d.ts +105 -0
- package/dist/web/table/AI_GUIDE.md +145 -0
- package/dist/web/table/index.d.ts +21 -0
- package/dist/web/table/index.js +22 -0
- package/dist/web/table/manifest.json +168 -0
- package/dist/web/table/table-body.svelte +23 -0
- package/dist/web/table/table-body.svelte.d.ts +36 -0
- package/dist/web/table/table-caption.svelte +23 -0
- package/dist/web/table/table-caption.svelte.d.ts +36 -0
- package/dist/web/table/table-cell.svelte +35 -0
- package/dist/web/table/table-cell.svelte.d.ts +57 -0
- package/dist/web/table/table-empty.svelte +56 -0
- package/dist/web/table/table-empty.svelte.d.ts +65 -0
- package/dist/web/table/table-footer.svelte +23 -0
- package/dist/web/table/table-footer.svelte.d.ts +36 -0
- package/dist/web/table/table-head.svelte +39 -0
- package/dist/web/table/table-head.svelte.d.ts +58 -0
- package/dist/web/table/table-header.svelte +23 -0
- package/dist/web/table/table-header.svelte.d.ts +36 -0
- package/dist/web/table/table-row.svelte +33 -0
- package/dist/web/table/table-row.svelte.d.ts +52 -0
- package/dist/web/table/table.css +1 -0
- package/dist/web/table/table.svelte +178 -0
- package/dist/web/table/table.svelte.d.ts +120 -0
- package/dist/web/tabs/AI_GUIDE.md +150 -0
- package/dist/web/tabs/index.d.ts +2 -0
- package/dist/web/tabs/index.js +2 -0
- package/dist/web/tabs/manifest.json +315 -0
- package/dist/web/tabs/tabs.css +1 -0
- package/dist/web/tabs/tabs.svelte +138 -0
- package/dist/web/tabs/tabs.svelte.d.ts +204 -0
- package/dist/web/text/AI_GUIDE.md +129 -0
- package/dist/web/text/index.d.ts +2 -0
- package/dist/web/text/index.js +2 -0
- package/dist/web/text/manifest.json +195 -0
- package/dist/web/text/text.css +1 -0
- package/dist/web/text/text.svelte +515 -0
- package/dist/web/text/text.svelte.d.ts +168 -0
- package/dist/web/textarea/AI_GUIDE.md +141 -0
- package/dist/web/textarea/index.d.ts +2 -0
- package/dist/web/textarea/index.js +2 -0
- package/dist/web/textarea/manifest.json +438 -0
- package/dist/web/textarea/textarea.css +1 -0
- package/dist/web/textarea/textarea.svelte +224 -0
- package/dist/web/textarea/textarea.svelte.d.ts +274 -0
- package/dist/web/tooltip/AI_GUIDE.md +110 -0
- package/dist/web/tooltip/index.d.ts +2 -0
- package/dist/web/tooltip/index.js +2 -0
- package/dist/web/tooltip/manifest.json +222 -0
- package/dist/web/tooltip/tooltip.css +1 -0
- package/dist/web/tooltip/tooltip.svelte +292 -0
- package/dist/web/tooltip/tooltip.svelte.d.ts +140 -0
- package/dist/webview/bottomsheet/AI_GUIDE.md +141 -0
- package/dist/webview/bottomsheet/bottomsheet.css +1 -0
- package/dist/webview/bottomsheet/bottomsheet.svelte +462 -0
- package/dist/webview/bottomsheet/bottomsheet.svelte.d.ts +200 -0
- package/dist/webview/bottomsheet/index.d.ts +4 -0
- package/dist/webview/bottomsheet/index.js +3 -0
- package/dist/webview/bottomsheet/manifest.json +377 -0
- package/dist/webview/button/AI_GUIDE.md +79 -0
- package/dist/webview/button/button-ios.css +1 -0
- package/dist/webview/button/button-ios.svelte +58 -0
- package/dist/webview/button/button-ios.svelte.d.ts +114 -0
- package/dist/webview/button/button-material.css +1 -0
- package/dist/webview/button/button-material.svelte +58 -0
- package/dist/webview/button/button-material.svelte.d.ts +114 -0
- package/dist/webview/button/index.d.ts +6 -0
- package/dist/webview/button/index.js +4 -0
- package/dist/webview/button/manifest.json +148 -0
- package/dist/webview/index.d.ts +6 -0
- package/dist/webview/index.js +6 -0
- package/llms.txt +6518 -0
- package/package.json +709 -4
- package/ttdk-manifest.json +10188 -0
- package/README.md +0 -3
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ttdk-design-system/tooltip",
|
|
3
|
+
"component": "Tooltip",
|
|
4
|
+
"folder": "tooltip",
|
|
5
|
+
"description": "Komponen Tooltip untuk menampilkan informasi kontekstual singkat saat pengguna mengarahkan kursor atau memfokuskan elemen pemicu.",
|
|
6
|
+
"stylesheets": [
|
|
7
|
+
{
|
|
8
|
+
"theme": "common",
|
|
9
|
+
"file": "tooltip.css",
|
|
10
|
+
"importPath": "web/tooltip/tooltip.css"
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"props": {
|
|
14
|
+
"text": {
|
|
15
|
+
"name": "text",
|
|
16
|
+
"type": "string",
|
|
17
|
+
"optional": true,
|
|
18
|
+
"default": null,
|
|
19
|
+
"description": "Teks konten tooltip yang ditampilkan.",
|
|
20
|
+
"example": null,
|
|
21
|
+
"param": null
|
|
22
|
+
},
|
|
23
|
+
"content": {
|
|
24
|
+
"name": "content",
|
|
25
|
+
"type": "any",
|
|
26
|
+
"optional": true,
|
|
27
|
+
"default": null,
|
|
28
|
+
"description": "Konten kustom tooltip (JSX / VNode atau renderable content).",
|
|
29
|
+
"example": null,
|
|
30
|
+
"param": null
|
|
31
|
+
},
|
|
32
|
+
"kbd": {
|
|
33
|
+
"name": "kbd",
|
|
34
|
+
"type": "string | string[]",
|
|
35
|
+
"optional": true,
|
|
36
|
+
"default": null,
|
|
37
|
+
"description": "Pintasan keyboard opsional yang ditampilkan di dalam tooltip (misal: '⌘K', ['Ctrl', 'S']).",
|
|
38
|
+
"example": null,
|
|
39
|
+
"param": null
|
|
40
|
+
},
|
|
41
|
+
"placement": {
|
|
42
|
+
"name": "placement",
|
|
43
|
+
"type": "TooltipPlacement",
|
|
44
|
+
"optional": true,
|
|
45
|
+
"default": "top",
|
|
46
|
+
"description": "Posisi penempatan tooltip terhadap elemen pemicu.",
|
|
47
|
+
"example": null,
|
|
48
|
+
"param": null
|
|
49
|
+
},
|
|
50
|
+
"offsetDistance": {
|
|
51
|
+
"name": "offsetDistance",
|
|
52
|
+
"type": "number",
|
|
53
|
+
"optional": true,
|
|
54
|
+
"default": "8",
|
|
55
|
+
"description": "Jarak offset dalam pixel dari elemen pemicu (trigger).",
|
|
56
|
+
"example": null,
|
|
57
|
+
"param": null
|
|
58
|
+
},
|
|
59
|
+
"arrow": {
|
|
60
|
+
"name": "arrow",
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"optional": true,
|
|
63
|
+
"default": "true",
|
|
64
|
+
"description": "Menampilkan elemen panah segitiga penunjuk arah ke elemen pemicu.",
|
|
65
|
+
"example": null,
|
|
66
|
+
"param": null
|
|
67
|
+
},
|
|
68
|
+
"openDelay": {
|
|
69
|
+
"name": "openDelay",
|
|
70
|
+
"type": "number",
|
|
71
|
+
"optional": true,
|
|
72
|
+
"default": "150",
|
|
73
|
+
"description": "Penundaan kemunculan tooltip dalam milidetik (delay saat pointer enter).",
|
|
74
|
+
"example": null,
|
|
75
|
+
"param": null
|
|
76
|
+
},
|
|
77
|
+
"closeDelay": {
|
|
78
|
+
"name": "closeDelay",
|
|
79
|
+
"type": "number",
|
|
80
|
+
"optional": true,
|
|
81
|
+
"default": "100",
|
|
82
|
+
"description": "Penundaan hilangnya tooltip dalam milidetik (delay saat pointer leave).",
|
|
83
|
+
"example": null,
|
|
84
|
+
"param": null
|
|
85
|
+
},
|
|
86
|
+
"open": {
|
|
87
|
+
"name": "open",
|
|
88
|
+
"type": "boolean",
|
|
89
|
+
"optional": true,
|
|
90
|
+
"default": null,
|
|
91
|
+
"description": "Status visibilitas tooltip terkontrol (controlled mode).",
|
|
92
|
+
"example": null,
|
|
93
|
+
"param": null
|
|
94
|
+
},
|
|
95
|
+
"defaultOpen": {
|
|
96
|
+
"name": "defaultOpen",
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"optional": true,
|
|
99
|
+
"default": "false",
|
|
100
|
+
"description": "Status visibilitas awal (uncontrolled initial state).",
|
|
101
|
+
"example": null,
|
|
102
|
+
"param": null
|
|
103
|
+
},
|
|
104
|
+
"disabled": {
|
|
105
|
+
"name": "disabled",
|
|
106
|
+
"type": "boolean",
|
|
107
|
+
"optional": true,
|
|
108
|
+
"default": "false",
|
|
109
|
+
"description": "Menonaktifkan tooltip sehingga tidak muncul saat di-hover atau difokus.",
|
|
110
|
+
"example": null,
|
|
111
|
+
"param": null
|
|
112
|
+
},
|
|
113
|
+
"ui": {
|
|
114
|
+
"name": "ui",
|
|
115
|
+
"type": "TooltipUiProps",
|
|
116
|
+
"optional": true,
|
|
117
|
+
"default": null,
|
|
118
|
+
"description": "Kustomisasi visual granular container utama (UiProps).",
|
|
119
|
+
"example": null,
|
|
120
|
+
"param": null
|
|
121
|
+
},
|
|
122
|
+
"style": {
|
|
123
|
+
"name": "style",
|
|
124
|
+
"type": "any",
|
|
125
|
+
"optional": true,
|
|
126
|
+
"default": null,
|
|
127
|
+
"description": "Style inline CSS native untuk wrapper luar.",
|
|
128
|
+
"example": null,
|
|
129
|
+
"param": null
|
|
130
|
+
},
|
|
131
|
+
"className": {
|
|
132
|
+
"name": "className",
|
|
133
|
+
"type": "string",
|
|
134
|
+
"optional": true,
|
|
135
|
+
"default": null,
|
|
136
|
+
"description": "Class CSS kustom untuk wrapper luar.",
|
|
137
|
+
"example": null,
|
|
138
|
+
"param": null
|
|
139
|
+
},
|
|
140
|
+
"triggerClass": {
|
|
141
|
+
"name": "triggerClass",
|
|
142
|
+
"type": "string",
|
|
143
|
+
"optional": true,
|
|
144
|
+
"default": null,
|
|
145
|
+
"description": "Class CSS kustom untuk pemicu (trigger container).",
|
|
146
|
+
"example": null,
|
|
147
|
+
"param": null
|
|
148
|
+
},
|
|
149
|
+
"triggerStyle": {
|
|
150
|
+
"name": "triggerStyle",
|
|
151
|
+
"type": "UiProps",
|
|
152
|
+
"optional": true,
|
|
153
|
+
"default": null,
|
|
154
|
+
"description": "Style kustom untuk pemicu (trigger container) (UiProps).",
|
|
155
|
+
"example": null,
|
|
156
|
+
"param": null
|
|
157
|
+
},
|
|
158
|
+
"contentClass": {
|
|
159
|
+
"name": "contentClass",
|
|
160
|
+
"type": "string",
|
|
161
|
+
"optional": true,
|
|
162
|
+
"default": null,
|
|
163
|
+
"description": "Class CSS kustom untuk panel tooltip konten.",
|
|
164
|
+
"example": null,
|
|
165
|
+
"param": null
|
|
166
|
+
},
|
|
167
|
+
"contentStyle": {
|
|
168
|
+
"name": "contentStyle",
|
|
169
|
+
"type": "UiProps",
|
|
170
|
+
"optional": true,
|
|
171
|
+
"default": null,
|
|
172
|
+
"description": "Style kustom untuk panel tooltip konten (UiProps).",
|
|
173
|
+
"example": null,
|
|
174
|
+
"param": null
|
|
175
|
+
},
|
|
176
|
+
"arrowClass": {
|
|
177
|
+
"name": "arrowClass",
|
|
178
|
+
"type": "string",
|
|
179
|
+
"optional": true,
|
|
180
|
+
"default": null,
|
|
181
|
+
"description": "Class CSS kustom untuk elemen panah (arrow).",
|
|
182
|
+
"example": null,
|
|
183
|
+
"param": null
|
|
184
|
+
},
|
|
185
|
+
"arrowStyle": {
|
|
186
|
+
"name": "arrowStyle",
|
|
187
|
+
"type": "UiProps",
|
|
188
|
+
"optional": true,
|
|
189
|
+
"default": null,
|
|
190
|
+
"description": "Style kustom untuk elemen panah (arrow) (UiProps).",
|
|
191
|
+
"example": null,
|
|
192
|
+
"param": null
|
|
193
|
+
},
|
|
194
|
+
"onOpenChange": {
|
|
195
|
+
"name": "onOpenChange",
|
|
196
|
+
"type": "(open: boolean) => void",
|
|
197
|
+
"optional": true,
|
|
198
|
+
"default": null,
|
|
199
|
+
"description": "Callback saat status open berubah.",
|
|
200
|
+
"example": null,
|
|
201
|
+
"param": null
|
|
202
|
+
},
|
|
203
|
+
"children": {
|
|
204
|
+
"name": "children",
|
|
205
|
+
"type": "any",
|
|
206
|
+
"optional": true,
|
|
207
|
+
"default": null,
|
|
208
|
+
"description": "Elemen pemicu (trigger) yang dibungkus oleh tooltip.",
|
|
209
|
+
"example": null,
|
|
210
|
+
"param": null
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
"subInterfaces": {},
|
|
214
|
+
"supportedFrameworks": [
|
|
215
|
+
"react",
|
|
216
|
+
"vue",
|
|
217
|
+
"svelte"
|
|
218
|
+
],
|
|
219
|
+
"themes": [
|
|
220
|
+
"tw"
|
|
221
|
+
]
|
|
222
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ttdk-tooltip-wrapper{box-sizing:border-box;font-family:var(--ttdk-font-sans);vertical-align:middle;display:inline-flex;position:relative}.ttdk-tooltip-trigger{box-sizing:border-box;color:inherit;cursor:pointer;background:0 0;border:none;outline:none;justify-content:center;align-items:center;margin:0;padding:0;font-family:inherit;display:inline-flex}.ttdk-tooltip-trigger[data-disabled=true]{cursor:not-allowed;opacity:.5;pointer-events:none}.ttdk-tooltip-content{z-index:1000;box-sizing:border-box;background:var(--ttdk-ui-bg,var(--ttdk-color-neutral-900,#1f2328));width:max-content;max-width:280px;color:var(--ttdk-ui-color,var(--ttdk-color-neutral-white,#fff));border-radius:var(--ttdk-ui-radius,6px);font-family:var(--ttdk-font-sans);text-align:center;pointer-events:auto;user-select:none;will-change:transform, opacity;align-items:center;padding:5px 9px;font-size:12px;font-weight:500;line-height:16px;animation:.14s cubic-bezier(.16,1,.3,1) forwards ttdk-tooltip-fade-in;display:inline-flex;position:absolute;top:0;left:0;overflow:visible;box-shadow:0 4px 14px #00000038}.ttdk-tooltip-body{z-index:1;word-break:break-word;overflow-wrap:break-word;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:inline-flex;position:relative}.ttdk-tooltip-text{word-break:break-word;overflow-wrap:break-word;display:inline}.ttdk-tooltip-kbd-list{align-items:center;gap:3px;display:inline-flex}.ttdk-tooltip-kbd{box-sizing:border-box;min-width:16px;height:16px;color:inherit;text-transform:uppercase;background:#fff3;border-radius:3px;justify-content:center;align-items:center;padding:0 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.ttdk-tooltip-arrow{background:inherit;z-index:0;pointer-events:none;box-sizing:border-box;width:8px;height:8px;position:absolute;transform:rotate(45deg)}@keyframes ttdk-tooltip-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.dark .ttdk-tooltip-content,html.dark .ttdk-tooltip-content,[data-mode=dark] .ttdk-tooltip-content,[data-theme=dark] .ttdk-tooltip-content{background:var(--ttdk-ui-bg,var(--ttdk-color-neutral-800,#2c3035));color:var(--ttdk-ui-color,var(--ttdk-color-neutral-white,#f1f2f3));border:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26));box-shadow:0 6px 18px #00000073}.dark .ttdk-tooltip-content[data-side=top] .ttdk-tooltip-arrow,html.dark .ttdk-tooltip-content[data-side=top] .ttdk-tooltip-arrow,[data-mode=dark] .ttdk-tooltip-content[data-side=top] .ttdk-tooltip-arrow,[data-theme=dark] .ttdk-tooltip-content[data-side=top] .ttdk-tooltip-arrow{border-right:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26));border-bottom:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26))}.dark .ttdk-tooltip-content[data-side=bottom] .ttdk-tooltip-arrow,html.dark .ttdk-tooltip-content[data-side=bottom] .ttdk-tooltip-arrow,[data-mode=dark] .ttdk-tooltip-content[data-side=bottom] .ttdk-tooltip-arrow,[data-theme=dark] .ttdk-tooltip-content[data-side=bottom] .ttdk-tooltip-arrow{border-left:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26));border-top:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26))}.dark .ttdk-tooltip-content[data-side=left] .ttdk-tooltip-arrow,html.dark .ttdk-tooltip-content[data-side=left] .ttdk-tooltip-arrow,[data-mode=dark] .ttdk-tooltip-content[data-side=left] .ttdk-tooltip-arrow,[data-theme=dark] .ttdk-tooltip-content[data-side=left] .ttdk-tooltip-arrow{border-top:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26));border-right:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26))}.dark .ttdk-tooltip-content[data-side=right] .ttdk-tooltip-arrow,html.dark .ttdk-tooltip-content[data-side=right] .ttdk-tooltip-arrow,[data-mode=dark] .ttdk-tooltip-content[data-side=right] .ttdk-tooltip-arrow,[data-theme=dark] .ttdk-tooltip-content[data-side=right] .ttdk-tooltip-arrow{border-left:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26));border-bottom:1px solid var(--ttdk-ui-border-color,var(--ttdk-stroke-subtle,#ffffff26))}.dark .ttdk-tooltip-kbd,html.dark .ttdk-tooltip-kbd,[data-mode=dark] .ttdk-tooltip-kbd,[data-theme=dark] .ttdk-tooltip-kbd{background:#ffffff24}.ttdk-tooltip-content[style*="background: #fff"],.ttdk-tooltip-content[style*="background:#fff"],.ttdk-tooltip-content[style*="background: white"],.ttdk-tooltip-content[style*="background-color: #fff"],.ttdk-tooltip-content[style*="background-color:#fff"],.ttdk-tooltip-content[style*="background-color: white"],.ttdk-tooltip-content[style*="--ttdk-ui-background: #fff"],.ttdk-tooltip-content[style*="--ttdk-ui-background:#fff"],.ttdk-tooltip-content[style*="--ttdk-ui-background-color: #fff"],.ttdk-tooltip-content[style*="--ttdk-ui-background-color:#fff"]{color:var(--ttdk-ui-color,var(--ttdk-color-neutral-900,#1f2328));border:1px solid var(--ttdk-stroke-subtle,#0000001a)}.ttdk-tooltip-content[style*="background: #fff"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="background:#fff"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="background: white"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="background-color: #fff"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="background-color:#fff"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="background-color: white"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="--ttdk-ui-background: #fff"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="--ttdk-ui-background:#fff"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="--ttdk-ui-background-color: #fff"] .ttdk-tooltip-kbd,.ttdk-tooltip-content[style*="--ttdk-ui-background-color:#fff"] .ttdk-tooltip-kbd{color:var(--ttdk-color-neutral-900,#1f2328);background:#00000014;border:1px solid #0000001f}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
<script context="module"></script>
|
|
2
|
+
|
|
3
|
+
<script>import { onDestroy, onMount, tick } from "svelte";
|
|
4
|
+
import {
|
|
5
|
+
computePosition,
|
|
6
|
+
autoUpdate,
|
|
7
|
+
flip,
|
|
8
|
+
shift,
|
|
9
|
+
offset,
|
|
10
|
+
arrow as floatingArrow
|
|
11
|
+
} from "@floating-ui/dom";
|
|
12
|
+
import { buildUiVars, UiProps } from "../../core/types";
|
|
13
|
+
export let open = void 0;
|
|
14
|
+
export let defaultOpen = void 0;
|
|
15
|
+
export let kbd = void 0;
|
|
16
|
+
export let disabled = void 0;
|
|
17
|
+
export let onOpenChange = void 0;
|
|
18
|
+
export let openDelay = void 0;
|
|
19
|
+
export let closeDelay = void 0;
|
|
20
|
+
export let placement = void 0;
|
|
21
|
+
export let arrow = void 0;
|
|
22
|
+
export let offsetDistance = void 0;
|
|
23
|
+
export let className = void 0;
|
|
24
|
+
export let ui = void 0;
|
|
25
|
+
export let triggerClass = void 0;
|
|
26
|
+
export let triggerStyle = void 0;
|
|
27
|
+
export let contentClass = void 0;
|
|
28
|
+
export let contentStyle = void 0;
|
|
29
|
+
export let arrowClass = void 0;
|
|
30
|
+
export let arrowStyle = void 0;
|
|
31
|
+
export let text = void 0;
|
|
32
|
+
export let content = void 0;
|
|
33
|
+
function stringifyStyles(stylesObj) {
|
|
34
|
+
let styles = "";
|
|
35
|
+
for (let key in stylesObj) {
|
|
36
|
+
const dashedKey = key.replace(/[A-Z]/g, function(match) {
|
|
37
|
+
return "-" + match.toLowerCase();
|
|
38
|
+
});
|
|
39
|
+
styles += dashedKey + ":" + stylesObj[key] + ";";
|
|
40
|
+
}
|
|
41
|
+
return styles;
|
|
42
|
+
}
|
|
43
|
+
function getKbdList() {
|
|
44
|
+
if (!kbd)
|
|
45
|
+
return [];
|
|
46
|
+
if (Array.isArray(kbd))
|
|
47
|
+
return kbd;
|
|
48
|
+
return [kbd];
|
|
49
|
+
}
|
|
50
|
+
function clearTimers() {
|
|
51
|
+
if (openTimer) {
|
|
52
|
+
clearTimeout(openTimer);
|
|
53
|
+
openTimer = null;
|
|
54
|
+
}
|
|
55
|
+
if (closeTimer) {
|
|
56
|
+
clearTimeout(closeTimer);
|
|
57
|
+
closeTimer = null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function setOpen(value) {
|
|
61
|
+
if (disabled && value)
|
|
62
|
+
return;
|
|
63
|
+
if (open === void 0) {
|
|
64
|
+
isOpen = value;
|
|
65
|
+
}
|
|
66
|
+
if (onOpenChange) {
|
|
67
|
+
onOpenChange(value);
|
|
68
|
+
}
|
|
69
|
+
if (value) {
|
|
70
|
+
tick().then(() => {
|
|
71
|
+
startFloating();
|
|
72
|
+
updatePosition();
|
|
73
|
+
});
|
|
74
|
+
} else {
|
|
75
|
+
stopFloating();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function handlePointerEnter() {
|
|
79
|
+
if (disabled)
|
|
80
|
+
return;
|
|
81
|
+
clearTimers();
|
|
82
|
+
const delay = openDelay !== void 0 ? openDelay : 150;
|
|
83
|
+
if (delay <= 0) {
|
|
84
|
+
setOpen(true);
|
|
85
|
+
} else {
|
|
86
|
+
openTimer = setTimeout(() => {
|
|
87
|
+
setOpen(true);
|
|
88
|
+
}, delay);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function handlePointerLeave() {
|
|
92
|
+
clearTimers();
|
|
93
|
+
const delay = closeDelay !== void 0 ? closeDelay : 100;
|
|
94
|
+
if (delay <= 0) {
|
|
95
|
+
setOpen(false);
|
|
96
|
+
} else {
|
|
97
|
+
closeTimer = setTimeout(() => {
|
|
98
|
+
setOpen(false);
|
|
99
|
+
}, delay);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function handleFocus() {
|
|
103
|
+
if (disabled)
|
|
104
|
+
return;
|
|
105
|
+
clearTimers();
|
|
106
|
+
setOpen(true);
|
|
107
|
+
}
|
|
108
|
+
function handleBlur() {
|
|
109
|
+
clearTimers();
|
|
110
|
+
setOpen(false);
|
|
111
|
+
}
|
|
112
|
+
function handleKeyDown(e) {
|
|
113
|
+
if (e.key === "Escape" && isOpen) {
|
|
114
|
+
clearTimers();
|
|
115
|
+
setOpen(false);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function updatePosition() {
|
|
119
|
+
if (!triggerRef || !tooltipRef)
|
|
120
|
+
return;
|
|
121
|
+
const targetPlacement = placement || "top";
|
|
122
|
+
const showArrow = arrow !== false;
|
|
123
|
+
const offsetDist = offsetDistance !== void 0 ? offsetDistance : 8;
|
|
124
|
+
const middleware = [
|
|
125
|
+
offset(offsetDist),
|
|
126
|
+
flip({
|
|
127
|
+
padding: 8
|
|
128
|
+
}),
|
|
129
|
+
shift({
|
|
130
|
+
padding: 8
|
|
131
|
+
})
|
|
132
|
+
];
|
|
133
|
+
if (showArrow && arrowRef) {
|
|
134
|
+
middleware.push(
|
|
135
|
+
floatingArrow({
|
|
136
|
+
element: arrowRef,
|
|
137
|
+
padding: 8
|
|
138
|
+
})
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
computePosition(triggerRef, tooltipRef, {
|
|
142
|
+
placement: targetPlacement,
|
|
143
|
+
middleware
|
|
144
|
+
}).then((data) => {
|
|
145
|
+
if (!tooltipRef)
|
|
146
|
+
return;
|
|
147
|
+
tooltipRef.style.left = `${data.x}px`;
|
|
148
|
+
tooltipRef.style.top = `${data.y}px`;
|
|
149
|
+
const side = data.placement.split("-")[0];
|
|
150
|
+
tooltipRef.setAttribute("data-side", side);
|
|
151
|
+
tooltipRef.setAttribute("data-placement", data.placement);
|
|
152
|
+
if (showArrow && arrowRef && data.middlewareData && data.middlewareData.arrow) {
|
|
153
|
+
const { x: arrowX, y: arrowY } = data.middlewareData.arrow;
|
|
154
|
+
const staticSide = {
|
|
155
|
+
top: "bottom",
|
|
156
|
+
right: "left",
|
|
157
|
+
bottom: "top",
|
|
158
|
+
left: "right"
|
|
159
|
+
}[side];
|
|
160
|
+
arrowRef.style.left = arrowX != null ? `${arrowX}px` : "";
|
|
161
|
+
arrowRef.style.top = arrowY != null ? `${arrowY}px` : "";
|
|
162
|
+
arrowRef.style.right = "";
|
|
163
|
+
arrowRef.style.bottom = "";
|
|
164
|
+
if (staticSide) {
|
|
165
|
+
arrowRef.style[staticSide] = "-4px";
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
function startFloating() {
|
|
171
|
+
stopFloating();
|
|
172
|
+
if (typeof window === "undefined")
|
|
173
|
+
return;
|
|
174
|
+
if (triggerRef && tooltipRef) {
|
|
175
|
+
cleanupAutoUpdate = autoUpdate(triggerRef, tooltipRef, () => {
|
|
176
|
+
updatePosition();
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function stopFloating() {
|
|
181
|
+
if (cleanupAutoUpdate) {
|
|
182
|
+
cleanupAutoUpdate();
|
|
183
|
+
cleanupAutoUpdate = null;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
let triggerRef;
|
|
187
|
+
let tooltipRef;
|
|
188
|
+
let arrowRef;
|
|
189
|
+
let isOpen = open !== void 0 ? open : defaultOpen || false;
|
|
190
|
+
let cleanupAutoUpdate = null;
|
|
191
|
+
let openTimer = null;
|
|
192
|
+
let closeTimer = null;
|
|
193
|
+
onMount(() => {
|
|
194
|
+
if (open !== void 0) {
|
|
195
|
+
isOpen = open;
|
|
196
|
+
}
|
|
197
|
+
if (isOpen) {
|
|
198
|
+
setTimeout(() => {
|
|
199
|
+
startFloating();
|
|
200
|
+
updatePosition();
|
|
201
|
+
}, 0);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
onDestroy(() => {
|
|
205
|
+
clearTimers();
|
|
206
|
+
stopFloating();
|
|
207
|
+
});
|
|
208
|
+
</script>
|
|
209
|
+
|
|
210
|
+
<div
|
|
211
|
+
style={stringifyStyles({
|
|
212
|
+
...buildUiVars(ui),
|
|
213
|
+
})}
|
|
214
|
+
class={`ttdk-tooltip-wrapper ${className || ""}`.trim()}
|
|
215
|
+
data-open={isOpen ? "true" : "false"}
|
|
216
|
+
data-disabled={disabled ? "true" : "false"}
|
|
217
|
+
>
|
|
218
|
+
<div
|
|
219
|
+
style={stringifyStyles({
|
|
220
|
+
...buildUiVars(triggerStyle),
|
|
221
|
+
})}
|
|
222
|
+
bind:this={triggerRef}
|
|
223
|
+
class={`ttdk-tooltip-trigger ${triggerClass || ""}`.trim()}
|
|
224
|
+
tabIndex={disabled ? -1 : 0}
|
|
225
|
+
aria-describedby={isOpen ? "ttdk-tooltip" : undefined}
|
|
226
|
+
data-open={isOpen ? "true" : "false"}
|
|
227
|
+
data-disabled={disabled ? "true" : "false"}
|
|
228
|
+
on:pointerenter={(event) => {
|
|
229
|
+
handlePointerEnter();
|
|
230
|
+
}}
|
|
231
|
+
on:pointerleave={(event) => {
|
|
232
|
+
handlePointerLeave();
|
|
233
|
+
}}
|
|
234
|
+
on:focus={(event) => {
|
|
235
|
+
handleFocus();
|
|
236
|
+
}}
|
|
237
|
+
on:blur={(event) => {
|
|
238
|
+
handleBlur();
|
|
239
|
+
}}
|
|
240
|
+
on:keydown={(e) => {
|
|
241
|
+
handleKeyDown(e);
|
|
242
|
+
}}
|
|
243
|
+
>
|
|
244
|
+
{#if $$slots.default}
|
|
245
|
+
<slot />
|
|
246
|
+
{/if}
|
|
247
|
+
</div>
|
|
248
|
+
{#if isOpen}
|
|
249
|
+
<div
|
|
250
|
+
style={stringifyStyles({
|
|
251
|
+
...buildUiVars(contentStyle),
|
|
252
|
+
})}
|
|
253
|
+
role="tooltip"
|
|
254
|
+
bind:this={tooltipRef}
|
|
255
|
+
class={`ttdk-tooltip-content ${contentClass || ""}`.trim()}
|
|
256
|
+
on:pointerenter={(event) => {
|
|
257
|
+
handlePointerEnter();
|
|
258
|
+
}}
|
|
259
|
+
on:pointerleave={(event) => {
|
|
260
|
+
handlePointerLeave();
|
|
261
|
+
}}
|
|
262
|
+
>
|
|
263
|
+
{#if arrow !== false}
|
|
264
|
+
<div
|
|
265
|
+
style={stringifyStyles({
|
|
266
|
+
...buildUiVars(arrowStyle),
|
|
267
|
+
})}
|
|
268
|
+
bind:this={arrowRef}
|
|
269
|
+
class={`ttdk-tooltip-arrow ${arrowClass || ""}`.trim()}
|
|
270
|
+
/>
|
|
271
|
+
{/if}
|
|
272
|
+
<div class="ttdk-tooltip-body">
|
|
273
|
+
{#if text}
|
|
274
|
+
<span class="ttdk-tooltip-text">{text}</span>
|
|
275
|
+
{/if}
|
|
276
|
+
{#if content && !text}
|
|
277
|
+
{content}
|
|
278
|
+
{/if}
|
|
279
|
+
{#if !text && !content}
|
|
280
|
+
<slot name="content" />
|
|
281
|
+
{/if}
|
|
282
|
+
{#if kbd}
|
|
283
|
+
<span class="ttdk-tooltip-kbd-list">
|
|
284
|
+
{#each getKbdList() as key, idx (idx)}
|
|
285
|
+
<kbd class="ttdk-tooltip-kbd">{key}</kbd>
|
|
286
|
+
{/each}
|
|
287
|
+
</span>
|
|
288
|
+
{/if}
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
{/if}
|
|
292
|
+
</div>
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
export type TooltipPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
|
|
3
|
+
export type TooltipUiProps = UiProps;
|
|
4
|
+
export interface TooltipProps {
|
|
5
|
+
/**
|
|
6
|
+
* Teks konten tooltip yang ditampilkan.
|
|
7
|
+
*/
|
|
8
|
+
text?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Konten kustom tooltip (JSX / VNode atau renderable content).
|
|
11
|
+
*/
|
|
12
|
+
content?: any;
|
|
13
|
+
/**
|
|
14
|
+
* Pintasan keyboard opsional yang ditampilkan di dalam tooltip (misal: '⌘K', ['Ctrl', 'S']).
|
|
15
|
+
*/
|
|
16
|
+
kbd?: string | string[];
|
|
17
|
+
/**
|
|
18
|
+
* Posisi penempatan tooltip terhadap elemen pemicu.
|
|
19
|
+
* @default 'top'
|
|
20
|
+
*/
|
|
21
|
+
placement?: TooltipPlacement;
|
|
22
|
+
/**
|
|
23
|
+
* Jarak offset dalam pixel dari elemen pemicu (trigger).
|
|
24
|
+
* @default 8
|
|
25
|
+
*/
|
|
26
|
+
offsetDistance?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Menampilkan elemen panah segitiga penunjuk arah ke elemen pemicu.
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
arrow?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Penundaan kemunculan tooltip dalam milidetik (delay saat pointer enter).
|
|
34
|
+
* @default 150
|
|
35
|
+
*/
|
|
36
|
+
openDelay?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Penundaan hilangnya tooltip dalam milidetik (delay saat pointer leave).
|
|
39
|
+
* @default 100
|
|
40
|
+
*/
|
|
41
|
+
closeDelay?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Status visibilitas tooltip terkontrol (controlled mode).
|
|
44
|
+
*/
|
|
45
|
+
open?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Status visibilitas awal (uncontrolled initial state).
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
50
|
+
defaultOpen?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Menonaktifkan tooltip sehingga tidak muncul saat di-hover atau difokus.
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
disabled?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Kustomisasi visual granular container utama (UiProps).
|
|
58
|
+
*/
|
|
59
|
+
ui?: TooltipUiProps;
|
|
60
|
+
/**
|
|
61
|
+
* Style inline CSS native untuk wrapper luar.
|
|
62
|
+
*/
|
|
63
|
+
style?: any;
|
|
64
|
+
/**
|
|
65
|
+
* Class CSS kustom untuk wrapper luar.
|
|
66
|
+
*/
|
|
67
|
+
className?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Class CSS kustom untuk pemicu (trigger container).
|
|
70
|
+
*/
|
|
71
|
+
triggerClass?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Style kustom untuk pemicu (trigger container) (UiProps).
|
|
74
|
+
*/
|
|
75
|
+
triggerStyle?: UiProps;
|
|
76
|
+
/**
|
|
77
|
+
* Class CSS kustom untuk panel tooltip konten.
|
|
78
|
+
*/
|
|
79
|
+
contentClass?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Style kustom untuk panel tooltip konten (UiProps).
|
|
82
|
+
*/
|
|
83
|
+
contentStyle?: UiProps;
|
|
84
|
+
/**
|
|
85
|
+
* Class CSS kustom untuk elemen panah (arrow).
|
|
86
|
+
*/
|
|
87
|
+
arrowClass?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Style kustom untuk elemen panah (arrow) (UiProps).
|
|
90
|
+
*/
|
|
91
|
+
arrowStyle?: UiProps;
|
|
92
|
+
/**
|
|
93
|
+
* Callback saat status open berubah.
|
|
94
|
+
*/
|
|
95
|
+
onOpenChange?: (open: boolean) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Elemen pemicu (trigger) yang dibungkus oleh tooltip.
|
|
98
|
+
*/
|
|
99
|
+
children?: any;
|
|
100
|
+
}
|
|
101
|
+
import { UiProps } from "../../core/types";
|
|
102
|
+
declare const __propDef: {
|
|
103
|
+
props: {
|
|
104
|
+
open?: TooltipProps["open"];
|
|
105
|
+
defaultOpen?: TooltipProps["defaultOpen"];
|
|
106
|
+
kbd?: TooltipProps["kbd"];
|
|
107
|
+
disabled?: TooltipProps["disabled"];
|
|
108
|
+
onOpenChange?: TooltipProps["onOpenChange"];
|
|
109
|
+
openDelay?: TooltipProps["openDelay"];
|
|
110
|
+
closeDelay?: TooltipProps["closeDelay"];
|
|
111
|
+
placement?: TooltipProps["placement"];
|
|
112
|
+
arrow?: TooltipProps["arrow"];
|
|
113
|
+
offsetDistance?: TooltipProps["offsetDistance"];
|
|
114
|
+
className?: TooltipProps["className"];
|
|
115
|
+
ui?: TooltipProps["ui"];
|
|
116
|
+
triggerClass?: TooltipProps["triggerClass"];
|
|
117
|
+
triggerStyle?: TooltipProps["triggerStyle"];
|
|
118
|
+
contentClass?: TooltipProps["contentClass"];
|
|
119
|
+
contentStyle?: TooltipProps["contentStyle"];
|
|
120
|
+
arrowClass?: TooltipProps["arrowClass"];
|
|
121
|
+
arrowStyle?: TooltipProps["arrowStyle"];
|
|
122
|
+
text?: TooltipProps["text"];
|
|
123
|
+
content?: TooltipProps["content"];
|
|
124
|
+
};
|
|
125
|
+
events: {
|
|
126
|
+
[evt: string]: CustomEvent<any>;
|
|
127
|
+
};
|
|
128
|
+
slots: {
|
|
129
|
+
default: {};
|
|
130
|
+
content: {};
|
|
131
|
+
};
|
|
132
|
+
exports?: {} | undefined;
|
|
133
|
+
bindings?: string | undefined;
|
|
134
|
+
};
|
|
135
|
+
type TooltipProps_ = typeof __propDef.props;
|
|
136
|
+
export type TooltipEvents = typeof __propDef.events;
|
|
137
|
+
export type TooltipSlots = typeof __propDef.slots;
|
|
138
|
+
export default class Tooltip extends SvelteComponent<TooltipProps_, TooltipEvents, TooltipSlots> {
|
|
139
|
+
}
|
|
140
|
+
export {};
|