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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/AI_GUIDE.md +6518 -0
  2. package/dist/core/index.d.ts +2 -0
  3. package/dist/core/index.js +2 -0
  4. package/dist/core/tailwind-preset.cjs +62 -0
  5. package/dist/core/tailwind-preset.d.cts +63 -0
  6. package/dist/core/tailwind-preset.d.ts +74 -0
  7. package/dist/core/tailwind-preset.js +79 -0
  8. package/dist/core/theme/tokens.css +663 -0
  9. package/dist/core/types.d.ts +152 -0
  10. package/dist/core/types.js +735 -0
  11. package/dist/index.d.ts +14 -0
  12. package/dist/index.js +15 -0
  13. package/dist/tailwind-preset.cjs +62 -0
  14. package/dist/tailwind-preset.d.cts +63 -0
  15. package/dist/tailwind-preset.d.ts +74 -0
  16. package/dist/tailwind-preset.js +79 -0
  17. package/dist/types.d.ts +1 -0
  18. package/dist/types.js +1 -0
  19. package/dist/web/accordion/AI_GUIDE.md +149 -0
  20. package/dist/web/accordion/accordion.css +1 -0
  21. package/dist/web/accordion/accordion.svelte +217 -0
  22. package/dist/web/accordion/accordion.svelte.d.ts +224 -0
  23. package/dist/web/accordion/index.d.ts +2 -0
  24. package/dist/web/accordion/index.js +2 -0
  25. package/dist/web/accordion/manifest.json +351 -0
  26. package/dist/web/alert/AI_GUIDE.md +139 -0
  27. package/dist/web/alert/alert.css +1 -0
  28. package/dist/web/alert/alert.svelte +175 -0
  29. package/dist/web/alert/alert.svelte.d.ts +165 -0
  30. package/dist/web/alert/index.d.ts +2 -0
  31. package/dist/web/alert/index.js +2 -0
  32. package/dist/web/alert/manifest.json +240 -0
  33. package/dist/web/avatar/AI_GUIDE.md +118 -0
  34. package/dist/web/avatar/avatar.css +1 -0
  35. package/dist/web/avatar/avatar.svelte +108 -0
  36. package/dist/web/avatar/avatar.svelte.d.ts +147 -0
  37. package/dist/web/avatar/index.d.ts +2 -0
  38. package/dist/web/avatar/index.js +2 -0
  39. package/dist/web/avatar/manifest.json +195 -0
  40. package/dist/web/badge/AI_GUIDE.md +94 -0
  41. package/dist/web/badge/badge.css +1 -0
  42. package/dist/web/badge/badge.svelte +50 -0
  43. package/dist/web/badge/badge.svelte.d.ts +111 -0
  44. package/dist/web/badge/index.d.ts +2 -0
  45. package/dist/web/badge/index.js +2 -0
  46. package/dist/web/badge/manifest.json +141 -0
  47. package/dist/web/banner/AI_GUIDE.md +130 -0
  48. package/dist/web/banner/banner.css +1 -0
  49. package/dist/web/banner/banner.svelte +180 -0
  50. package/dist/web/banner/banner.svelte.d.ts +172 -0
  51. package/dist/web/banner/index.d.ts +2 -0
  52. package/dist/web/banner/index.js +2 -0
  53. package/dist/web/banner/manifest.json +240 -0
  54. package/dist/web/breadcrumb/AI_GUIDE.md +120 -0
  55. package/dist/web/breadcrumb/breadcrumb.css +1 -0
  56. package/dist/web/breadcrumb/breadcrumb.svelte +168 -0
  57. package/dist/web/breadcrumb/breadcrumb.svelte.d.ts +141 -0
  58. package/dist/web/breadcrumb/index.d.ts +2 -0
  59. package/dist/web/breadcrumb/index.js +2 -0
  60. package/dist/web/breadcrumb/manifest.json +225 -0
  61. package/dist/web/button/AI_GUIDE.md +121 -0
  62. package/dist/web/button/button.css +1 -0
  63. package/dist/web/button/button.svelte +154 -0
  64. package/dist/web/button/button.svelte.d.ts +159 -0
  65. package/dist/web/button/index.d.ts +2 -0
  66. package/dist/web/button/index.js +2 -0
  67. package/dist/web/button/manifest.json +177 -0
  68. package/dist/web/calendar/AI_GUIDE.md +151 -0
  69. package/dist/web/calendar/calendar.css +1 -0
  70. package/dist/web/calendar/calendar.svelte +1091 -0
  71. package/dist/web/calendar/calendar.svelte.d.ts +268 -0
  72. package/dist/web/calendar/index.d.ts +2 -0
  73. package/dist/web/calendar/index.js +2 -0
  74. package/dist/web/calendar/manifest.json +470 -0
  75. package/dist/web/card/AI_GUIDE.md +133 -0
  76. package/dist/web/card/card.css +1 -0
  77. package/dist/web/card/card.svelte +217 -0
  78. package/dist/web/card/card.svelte.d.ts +242 -0
  79. package/dist/web/card/index.d.ts +2 -0
  80. package/dist/web/card/index.js +2 -0
  81. package/dist/web/card/manifest.json +357 -0
  82. package/dist/web/checkbox/AI_GUIDE.md +146 -0
  83. package/dist/web/checkbox/checkbox.css +1 -0
  84. package/dist/web/checkbox/checkbox.svelte +131 -0
  85. package/dist/web/checkbox/checkbox.svelte.d.ts +199 -0
  86. package/dist/web/checkbox/index.d.ts +2 -0
  87. package/dist/web/checkbox/index.js +2 -0
  88. package/dist/web/checkbox/manifest.json +294 -0
  89. package/dist/web/chip/AI_GUIDE.md +186 -0
  90. package/dist/web/chip/chip.css +1 -0
  91. package/dist/web/chip/chip.svelte +113 -0
  92. package/dist/web/chip/chip.svelte.d.ts +145 -0
  93. package/dist/web/chip/index.d.ts +2 -0
  94. package/dist/web/chip/index.js +2 -0
  95. package/dist/web/chip/manifest.json +186 -0
  96. package/dist/web/dropdown/AI_GUIDE.md +167 -0
  97. package/dist/web/dropdown/dropdown.css +1 -0
  98. package/dist/web/dropdown/dropdown.svelte +844 -0
  99. package/dist/web/dropdown/dropdown.svelte.d.ts +361 -0
  100. package/dist/web/dropdown/index.d.ts +2 -0
  101. package/dist/web/dropdown/index.js +2 -0
  102. package/dist/web/dropdown/manifest.json +576 -0
  103. package/dist/web/flex/AI_GUIDE.md +113 -0
  104. package/dist/web/flex/flex-item.svelte +37 -0
  105. package/dist/web/flex/flex-item.svelte.d.ts +96 -0
  106. package/dist/web/flex/flex.css +1 -0
  107. package/dist/web/flex/flex.svelte +39 -0
  108. package/dist/web/flex/flex.svelte.d.ts +104 -0
  109. package/dist/web/flex/index.d.ts +3 -0
  110. package/dist/web/flex/index.js +3 -0
  111. package/dist/web/flex/manifest.json +162 -0
  112. package/dist/web/form/index.d.ts +1 -0
  113. package/dist/web/form/index.js +2 -0
  114. package/dist/web/grid/AI_GUIDE.md +112 -0
  115. package/dist/web/grid/grid-item.svelte +41 -0
  116. package/dist/web/grid/grid-item.svelte.d.ts +112 -0
  117. package/dist/web/grid/grid.css +1 -0
  118. package/dist/web/grid/grid.svelte +37 -0
  119. package/dist/web/grid/grid.svelte.d.ts +96 -0
  120. package/dist/web/grid/index.d.ts +3 -0
  121. package/dist/web/grid/index.js +3 -0
  122. package/dist/web/grid/manifest.json +153 -0
  123. package/dist/web/index.d.ts +58 -0
  124. package/dist/web/index.js +57 -0
  125. package/dist/web/input/AI_GUIDE.md +159 -0
  126. package/dist/web/input/index.d.ts +2 -0
  127. package/dist/web/input/index.js +2 -0
  128. package/dist/web/input/input.css +1 -0
  129. package/dist/web/input/input.svelte +283 -0
  130. package/dist/web/input/input.svelte.d.ts +283 -0
  131. package/dist/web/input/manifest.json +465 -0
  132. package/dist/web/input-number/AI_GUIDE.md +164 -0
  133. package/dist/web/input-number/index.d.ts +2 -0
  134. package/dist/web/input-number/index.js +2 -0
  135. package/dist/web/input-number/input-number.css +1 -0
  136. package/dist/web/input-number/input-number.svelte +783 -0
  137. package/dist/web/input-number/input-number.svelte.d.ts +352 -0
  138. package/dist/web/input-number/manifest.json +575 -0
  139. package/dist/web/modal/AI_GUIDE.md +171 -0
  140. package/dist/web/modal/index.d.ts +2 -0
  141. package/dist/web/modal/index.js +2 -0
  142. package/dist/web/modal/manifest.json +375 -0
  143. package/dist/web/modal/modal.css +1 -0
  144. package/dist/web/modal/modal.svelte +333 -0
  145. package/dist/web/modal/modal.svelte.d.ts +231 -0
  146. package/dist/web/pagination/AI_GUIDE.md +148 -0
  147. package/dist/web/pagination/index.d.ts +19 -0
  148. package/dist/web/pagination/index.js +19 -0
  149. package/dist/web/pagination/manifest.json +432 -0
  150. package/dist/web/pagination/pagination-content.svelte +25 -0
  151. package/dist/web/pagination/pagination-content.svelte.d.ts +36 -0
  152. package/dist/web/pagination/pagination-ellipsis.svelte +38 -0
  153. package/dist/web/pagination/pagination-ellipsis.svelte.d.ts +35 -0
  154. package/dist/web/pagination/pagination-first.svelte +105 -0
  155. package/dist/web/pagination/pagination-first.svelte.d.ts +74 -0
  156. package/dist/web/pagination/pagination-item.svelte +25 -0
  157. package/dist/web/pagination/pagination-item.svelte.d.ts +36 -0
  158. package/dist/web/pagination/pagination-last.svelte +105 -0
  159. package/dist/web/pagination/pagination-last.svelte.d.ts +74 -0
  160. package/dist/web/pagination/pagination-link.svelte +67 -0
  161. package/dist/web/pagination/pagination-link.svelte.d.ts +69 -0
  162. package/dist/web/pagination/pagination-next.svelte +99 -0
  163. package/dist/web/pagination/pagination-next.svelte.d.ts +75 -0
  164. package/dist/web/pagination/pagination-previous.svelte +99 -0
  165. package/dist/web/pagination/pagination-previous.svelte.d.ts +75 -0
  166. package/dist/web/pagination/pagination.css +1 -0
  167. package/dist/web/pagination/pagination.svelte +471 -0
  168. package/dist/web/pagination/pagination.svelte.d.ts +256 -0
  169. package/dist/web/popover/AI_GUIDE.md +163 -0
  170. package/dist/web/popover/index.d.ts +3 -0
  171. package/dist/web/popover/index.js +3 -0
  172. package/dist/web/popover/manifest.json +396 -0
  173. package/dist/web/popover/popover.css +1 -0
  174. package/dist/web/popover/popover.svelte +497 -0
  175. package/dist/web/popover/popover.svelte.d.ts +116 -0
  176. package/dist/web/radio/AI_GUIDE.md +155 -0
  177. package/dist/web/radio/index.d.ts +2 -0
  178. package/dist/web/radio/index.js +2 -0
  179. package/dist/web/radio/manifest.json +294 -0
  180. package/dist/web/radio/radio.css +1 -0
  181. package/dist/web/radio/radio.svelte +123 -0
  182. package/dist/web/radio/radio.svelte.d.ts +192 -0
  183. package/dist/web/selectbox/AI_GUIDE.md +216 -0
  184. package/dist/web/selectbox/index.d.ts +2 -0
  185. package/dist/web/selectbox/index.js +2 -0
  186. package/dist/web/selectbox/manifest.json +477 -0
  187. package/dist/web/selectbox/selectbox.css +1 -0
  188. package/dist/web/selectbox/selectbox.svelte +704 -0
  189. package/dist/web/selectbox/selectbox.svelte.d.ts +296 -0
  190. package/dist/web/sonner/AI_GUIDE.md +98 -0
  191. package/dist/web/sonner/index.d.ts +46 -0
  192. package/dist/web/sonner/index.js +64 -0
  193. package/dist/web/sonner/manifest.json +132 -0
  194. package/dist/web/sonner/sonner.css +1 -0
  195. package/dist/web/sonner/sonner.svelte +85 -0
  196. package/dist/web/sonner/sonner.svelte.d.ts +105 -0
  197. package/dist/web/table/AI_GUIDE.md +145 -0
  198. package/dist/web/table/index.d.ts +21 -0
  199. package/dist/web/table/index.js +22 -0
  200. package/dist/web/table/manifest.json +168 -0
  201. package/dist/web/table/table-body.svelte +23 -0
  202. package/dist/web/table/table-body.svelte.d.ts +36 -0
  203. package/dist/web/table/table-caption.svelte +23 -0
  204. package/dist/web/table/table-caption.svelte.d.ts +36 -0
  205. package/dist/web/table/table-cell.svelte +35 -0
  206. package/dist/web/table/table-cell.svelte.d.ts +57 -0
  207. package/dist/web/table/table-empty.svelte +56 -0
  208. package/dist/web/table/table-empty.svelte.d.ts +65 -0
  209. package/dist/web/table/table-footer.svelte +23 -0
  210. package/dist/web/table/table-footer.svelte.d.ts +36 -0
  211. package/dist/web/table/table-head.svelte +39 -0
  212. package/dist/web/table/table-head.svelte.d.ts +58 -0
  213. package/dist/web/table/table-header.svelte +23 -0
  214. package/dist/web/table/table-header.svelte.d.ts +36 -0
  215. package/dist/web/table/table-row.svelte +33 -0
  216. package/dist/web/table/table-row.svelte.d.ts +52 -0
  217. package/dist/web/table/table.css +1 -0
  218. package/dist/web/table/table.svelte +178 -0
  219. package/dist/web/table/table.svelte.d.ts +120 -0
  220. package/dist/web/tabs/AI_GUIDE.md +150 -0
  221. package/dist/web/tabs/index.d.ts +2 -0
  222. package/dist/web/tabs/index.js +2 -0
  223. package/dist/web/tabs/manifest.json +315 -0
  224. package/dist/web/tabs/tabs.css +1 -0
  225. package/dist/web/tabs/tabs.svelte +138 -0
  226. package/dist/web/tabs/tabs.svelte.d.ts +204 -0
  227. package/dist/web/text/AI_GUIDE.md +129 -0
  228. package/dist/web/text/index.d.ts +2 -0
  229. package/dist/web/text/index.js +2 -0
  230. package/dist/web/text/manifest.json +195 -0
  231. package/dist/web/text/text.css +1 -0
  232. package/dist/web/text/text.svelte +515 -0
  233. package/dist/web/text/text.svelte.d.ts +168 -0
  234. package/dist/web/textarea/AI_GUIDE.md +141 -0
  235. package/dist/web/textarea/index.d.ts +2 -0
  236. package/dist/web/textarea/index.js +2 -0
  237. package/dist/web/textarea/manifest.json +438 -0
  238. package/dist/web/textarea/textarea.css +1 -0
  239. package/dist/web/textarea/textarea.svelte +224 -0
  240. package/dist/web/textarea/textarea.svelte.d.ts +274 -0
  241. package/dist/web/tooltip/AI_GUIDE.md +110 -0
  242. package/dist/web/tooltip/index.d.ts +2 -0
  243. package/dist/web/tooltip/index.js +2 -0
  244. package/dist/web/tooltip/manifest.json +222 -0
  245. package/dist/web/tooltip/tooltip.css +1 -0
  246. package/dist/web/tooltip/tooltip.svelte +292 -0
  247. package/dist/web/tooltip/tooltip.svelte.d.ts +140 -0
  248. package/dist/webview/bottomsheet/AI_GUIDE.md +141 -0
  249. package/dist/webview/bottomsheet/bottomsheet.css +1 -0
  250. package/dist/webview/bottomsheet/bottomsheet.svelte +462 -0
  251. package/dist/webview/bottomsheet/bottomsheet.svelte.d.ts +200 -0
  252. package/dist/webview/bottomsheet/index.d.ts +4 -0
  253. package/dist/webview/bottomsheet/index.js +3 -0
  254. package/dist/webview/bottomsheet/manifest.json +377 -0
  255. package/dist/webview/button/AI_GUIDE.md +79 -0
  256. package/dist/webview/button/button-ios.css +1 -0
  257. package/dist/webview/button/button-ios.svelte +58 -0
  258. package/dist/webview/button/button-ios.svelte.d.ts +114 -0
  259. package/dist/webview/button/button-material.css +1 -0
  260. package/dist/webview/button/button-material.svelte +58 -0
  261. package/dist/webview/button/button-material.svelte.d.ts +114 -0
  262. package/dist/webview/button/index.d.ts +6 -0
  263. package/dist/webview/button/index.js +4 -0
  264. package/dist/webview/button/manifest.json +148 -0
  265. package/dist/webview/index.d.ts +6 -0
  266. package/dist/webview/index.js +6 -0
  267. package/llms.txt +6518 -0
  268. package/package.json +709 -4
  269. package/ttdk-manifest.json +10188 -0
  270. package/README.md +0 -3
@@ -0,0 +1,471 @@
1
+ <script context="module"></script>
2
+
3
+ <script>import { buildUiVars, UiProps } from "../../core/types";
4
+ import Selectbox from "../selectbox/selectbox.svelte";
5
+ export let page = void 0;
6
+ export let maxPages = void 0;
7
+ export let totalPages = void 0;
8
+ export let canPrevPage = void 0;
9
+ export let canNextPage = void 0;
10
+ export let showLimit = void 0;
11
+ export let onLimitChange = void 0;
12
+ export let limitOptions = void 0;
13
+ export let siblingCount = void 0;
14
+ export let className = void 0;
15
+ export let size = void 0;
16
+ export let ui = void 0;
17
+ export let limitClass = void 0;
18
+ export let limitStyle = void 0;
19
+ export let showLimitLabel = void 0;
20
+ export let limitLabel = void 0;
21
+ export let limitSlot = void 0;
22
+ export let limit = void 0;
23
+ export let limitSelectStyle = void 0;
24
+ export let contentClass = void 0;
25
+ export let contentStyle = void 0;
26
+ export let showEdges = void 0;
27
+ export let onFirstPage = void 0;
28
+ export let linkClass = void 0;
29
+ export let onPageChange = void 0;
30
+ export let linkStyle = void 0;
31
+ export let firstIcon = void 0;
32
+ export let onPrevPage = void 0;
33
+ export let prevIcon = void 0;
34
+ export let iconOnly = void 0;
35
+ export let prevText = void 0;
36
+ export let showPageNumbers = void 0;
37
+ export let ellipsisIcon = void 0;
38
+ export let activeLinkClass = void 0;
39
+ export let activeLinkStyle = void 0;
40
+ export let onNextPage = void 0;
41
+ export let nextText = void 0;
42
+ export let nextIcon = void 0;
43
+ export let onLastPage = void 0;
44
+ export let lastIcon = void 0;
45
+ function stringifyStyles(stylesObj) {
46
+ let styles = "";
47
+ for (let key in stylesObj) {
48
+ const dashedKey = key.replace(/[A-Z]/g, function(match) {
49
+ return "-" + match.toLowerCase();
50
+ });
51
+ styles += dashedKey + ":" + stylesObj[key] + ";";
52
+ }
53
+ return styles;
54
+ }
55
+ function getCurrentPage(_p) {
56
+ const p = _p !== void 0 ? _p : page;
57
+ return p !== void 0 ? p : 1;
58
+ }
59
+ function getTotalPages(_max, _total) {
60
+ const m = _max !== void 0 ? _max : maxPages;
61
+ if (m !== void 0)
62
+ return m;
63
+ const t = _total !== void 0 ? _total : totalPages;
64
+ if (t !== void 0)
65
+ return t;
66
+ return 1;
67
+ }
68
+ function getCanPrev(_p, _can) {
69
+ const can = _can !== void 0 ? _can : canPrevPage;
70
+ if (can !== void 0)
71
+ return can;
72
+ return getCurrentPage(_p) > 1;
73
+ }
74
+ function getCanNext(_p, _max, _total, _can) {
75
+ const can = _can !== void 0 ? _can : canNextPage;
76
+ if (can !== void 0)
77
+ return can;
78
+ return getCurrentPage(_p) < getTotalPages(_max, _total);
79
+ }
80
+ function getShouldShowLimit(_show, _cb) {
81
+ const show = _show !== void 0 ? _show : showLimit;
82
+ if (show !== void 0) {
83
+ return Boolean(show);
84
+ }
85
+ return Boolean(_cb !== void 0 ? _cb : onLimitChange);
86
+ }
87
+ function getLimitOptions() {
88
+ const opts = limitOptions || [10, 20, 50, 100];
89
+ return opts.map((opt) => ({
90
+ label: String(opt),
91
+ value: opt
92
+ }));
93
+ }
94
+ function getPageRange(_p, _max, _total, _sibling) {
95
+ const total = getTotalPages(_max, _total);
96
+ const current = getCurrentPage(_p);
97
+ const sibling = _sibling !== void 0 ? _sibling : siblingCount !== void 0 ? siblingCount : 1;
98
+ if (total <= 1) {
99
+ return [
100
+ {
101
+ type: "page",
102
+ value: 1,
103
+ key: "page-1"
104
+ }
105
+ ];
106
+ }
107
+ const totalPageNumbers = sibling * 2 + 5;
108
+ if (total <= totalPageNumbers) {
109
+ const pages2 = [];
110
+ for (let i = 1; i <= total; i++) {
111
+ pages2.push({
112
+ type: "page",
113
+ value: i,
114
+ key: `page-${i}`
115
+ });
116
+ }
117
+ return pages2;
118
+ }
119
+ const leftSiblingIndex = Math.max(current - sibling, 1);
120
+ const rightSiblingIndex = Math.min(current + sibling, total);
121
+ const shouldShowLeftDots = leftSiblingIndex > 2;
122
+ const shouldShowRightDots = rightSiblingIndex < total - 1;
123
+ if (!shouldShowLeftDots && shouldShowRightDots) {
124
+ const leftItemCount = 3 + 2 * sibling;
125
+ const pages2 = [];
126
+ for (let i = 1; i <= leftItemCount; i++) {
127
+ pages2.push({
128
+ type: "page",
129
+ value: i,
130
+ key: `page-${i}`
131
+ });
132
+ }
133
+ pages2.push({
134
+ type: "ellipsis",
135
+ value: "...",
136
+ key: "ellipsis-right"
137
+ });
138
+ pages2.push({
139
+ type: "page",
140
+ value: total,
141
+ key: `page-${total}`
142
+ });
143
+ return pages2;
144
+ }
145
+ if (shouldShowLeftDots && !shouldShowRightDots) {
146
+ const rightItemCount = 3 + 2 * sibling;
147
+ const pages2 = [
148
+ {
149
+ type: "page",
150
+ value: 1,
151
+ key: "page-1"
152
+ },
153
+ {
154
+ type: "ellipsis",
155
+ value: "...",
156
+ key: "ellipsis-left"
157
+ }
158
+ ];
159
+ for (let i = total - rightItemCount + 1; i <= total; i++) {
160
+ pages2.push({
161
+ type: "page",
162
+ value: i,
163
+ key: `page-${i}`
164
+ });
165
+ }
166
+ return pages2;
167
+ }
168
+ const pages = [
169
+ {
170
+ type: "page",
171
+ value: 1,
172
+ key: "page-1"
173
+ },
174
+ {
175
+ type: "ellipsis",
176
+ value: "...",
177
+ key: "ellipsis-left"
178
+ }
179
+ ];
180
+ for (let i = leftSiblingIndex; i <= rightSiblingIndex; i++) {
181
+ pages.push({
182
+ type: "page",
183
+ value: i,
184
+ key: `page-${i}`
185
+ });
186
+ }
187
+ pages.push({
188
+ type: "ellipsis",
189
+ value: "...",
190
+ key: "ellipsis-right"
191
+ });
192
+ pages.push({
193
+ type: "page",
194
+ value: total,
195
+ key: `page-${total}`
196
+ });
197
+ return pages;
198
+ }
199
+ function handleLimitChange(val) {
200
+ if (onLimitChange) {
201
+ onLimitChange(Number(val));
202
+ }
203
+ }
204
+ </script>
205
+
206
+ <nav
207
+ style={stringifyStyles({
208
+ ...buildUiVars(ui),
209
+ })}
210
+ role="navigation"
211
+ aria-label="pagination"
212
+ class={`ttdk-pagination ${className || ""}`.trim()}
213
+ data-size={size || "md"}
214
+ >
215
+ {#if $$slots.default}
216
+ <slot />
217
+ {/if}
218
+ {#if !$$slots.default}
219
+ <div class="ttdk-pagination-auto-wrapper">
220
+ {#if getShouldShowLimit(showLimit, onLimitChange)}
221
+ <div
222
+ style={stringifyStyles({
223
+ ...buildUiVars(limitStyle),
224
+ })}
225
+ class={`ttdk-pagination-limit ${limitClass || ""}`.trim()}
226
+ >
227
+ {#if showLimitLabel !== false}
228
+ <span class="ttdk-pagination-limit-label"
229
+ >{limitLabel || "Baris per halaman:"}</span
230
+ >
231
+ {/if}
232
+ {#if limitSlot}
233
+ {limitSlot}
234
+ {/if}
235
+ {#if !limitSlot}
236
+ <Selectbox
237
+ size={size === "lg" ? "md" : "sm"}
238
+ value={limit || 10}
239
+ options={getLimitOptions()}
240
+ onChange={(val) => handleLimitChange(val)}
241
+ controlStyle={{
242
+ minWidth: "70px",
243
+ width: "76px",
244
+ height:
245
+ size === "sm" ? "28px" : size === "lg" ? "44px" : "36px",
246
+ minHeight:
247
+ size === "sm" ? "28px" : size === "lg" ? "44px" : "36px",
248
+ padding: "0 8px",
249
+ fontSize: "12px",
250
+ ...buildUiVars(limitSelectStyle),
251
+ }}
252
+ />
253
+ {/if}
254
+ </div>
255
+ {/if}
256
+ <ul
257
+ style={stringifyStyles({
258
+ ...buildUiVars(contentStyle),
259
+ })}
260
+ class={`ttdk-pagination-content ${contentClass || ""}`.trim()}
261
+ >
262
+ {#if showEdges || Boolean(onFirstPage)}
263
+ <li class="ttdk-pagination-item">
264
+ <button
265
+ style={stringifyStyles({
266
+ ...buildUiVars(linkStyle),
267
+ })}
268
+ type="button"
269
+ aria-label="Go to first page"
270
+ class={`ttdk-pagination-link ttdk-pagination-first ${
271
+ linkClass || ""
272
+ }`.trim()}
273
+ data-size={size || "md"}
274
+ data-disabled={!getCanPrev(page, canPrevPage) ? "true" : "false"}
275
+ disabled={!getCanPrev(page, canPrevPage)}
276
+ on:click={(event) => {
277
+ if (onFirstPage) {
278
+ onFirstPage();
279
+ } else if (onPageChange) {
280
+ onPageChange(1);
281
+ }
282
+ }}
283
+ >
284
+ {#if firstIcon}
285
+ {firstIcon}
286
+ {/if}
287
+ {#if !firstIcon}
288
+ <svg
289
+ class="ttdk-pagination-icon"
290
+ viewBox="0 0 24 24"
291
+ fill="none"
292
+ aria-hidden="true"
293
+ ><polyline points="11 17 6 12 11 7" /><polyline
294
+ points="18 17 13 12 18 7"
295
+ /></svg
296
+ >
297
+ {/if}</button
298
+ >
299
+ </li>
300
+ {/if}
301
+ <li class="ttdk-pagination-item">
302
+ <button
303
+ style={stringifyStyles({
304
+ ...buildUiVars(linkStyle),
305
+ })}
306
+ type="button"
307
+ aria-label="Go to previous page"
308
+ class={`ttdk-pagination-link ttdk-pagination-prev ${
309
+ linkClass || ""
310
+ }`.trim()}
311
+ data-size={size || "md"}
312
+ data-disabled={!getCanPrev(page, canPrevPage) ? "true" : "false"}
313
+ disabled={!getCanPrev(page, canPrevPage)}
314
+ on:click={(event) => {
315
+ if (onPrevPage) {
316
+ onPrevPage();
317
+ } else if (onPageChange) {
318
+ onPageChange(Math.max(1, getCurrentPage(page) - 1));
319
+ }
320
+ }}
321
+ >
322
+ {#if prevIcon}
323
+ {prevIcon}
324
+ {/if}
325
+ {#if !prevIcon}
326
+ <svg
327
+ class="ttdk-pagination-icon"
328
+ viewBox="0 0 24 24"
329
+ fill="none"
330
+ aria-hidden="true"><polyline points="15 18 9 12 15 6" /></svg
331
+ >
332
+ {/if}
333
+ {#if !iconOnly}
334
+ <span class="ttdk-pagination-prev-text"
335
+ >{prevText || "Previous"}</span
336
+ >
337
+ {/if}</button
338
+ >
339
+ </li>
340
+ {#if showPageNumbers !== false}
341
+ {#each getPageRange(page, maxPages, totalPages, siblingCount) as item (item.key)}
342
+ <li class="ttdk-pagination-item">
343
+ {#if item.type === "ellipsis"}
344
+ <span aria-hidden="true" class="ttdk-pagination-ellipsis">
345
+ {#if ellipsisIcon}
346
+ {ellipsisIcon}
347
+ {/if}
348
+ {#if !ellipsisIcon}
349
+ <svg
350
+ class="ttdk-pagination-icon"
351
+ viewBox="0 0 24 24"
352
+ fill="none"
353
+ ><circle cx="12" cy="12" r="1" /><circle
354
+ cx="19"
355
+ cy="12"
356
+ r="1"
357
+ /><circle cx="5" cy="12" r="1" /></svg
358
+ >
359
+ {/if}<span class="ttdk-sr-only">More pages</span></span
360
+ >
361
+ {/if}
362
+ {#if item.type === "page"}
363
+ <button
364
+ style={stringifyStyles({
365
+ ...buildUiVars(linkStyle),
366
+ ...(item.value === getCurrentPage(page)
367
+ ? buildUiVars(activeLinkStyle)
368
+ : {}),
369
+ })}
370
+ type="button"
371
+ class={`ttdk-pagination-link ${linkClass || ""} ${
372
+ item.value === getCurrentPage(page) ? activeLinkClass || "" : ""
373
+ }`.trim()}
374
+ aria-current={item.value === getCurrentPage(page)
375
+ ? "page"
376
+ : undefined}
377
+ data-active={item.value === getCurrentPage(page)
378
+ ? "true"
379
+ : "false"}
380
+ data-size={size || "md"}
381
+ on:click={(event) => {
382
+ if (onPageChange) {
383
+ onPageChange(Number(item.value));
384
+ }
385
+ }}>{item.value}</button
386
+ >
387
+ {/if}
388
+ </li>
389
+ {/each}
390
+ {/if}
391
+ <li class="ttdk-pagination-item">
392
+ <button
393
+ style={stringifyStyles({
394
+ ...buildUiVars(linkStyle),
395
+ })}
396
+ type="button"
397
+ aria-label="Go to next page"
398
+ class={`ttdk-pagination-link ttdk-pagination-next ${
399
+ linkClass || ""
400
+ }`.trim()}
401
+ data-size={size || "md"}
402
+ data-disabled={!getCanNext(page, maxPages, totalPages, canNextPage) ? "true" : "false"}
403
+ disabled={!getCanNext(page, maxPages, totalPages, canNextPage)}
404
+ on:click={(event) => {
405
+ if (onNextPage) {
406
+ onNextPage();
407
+ } else if (onPageChange) {
408
+ onPageChange(Math.min(getTotalPages(maxPages, totalPages), getCurrentPage(page) + 1));
409
+ }
410
+ }}
411
+ >
412
+ {#if !iconOnly}
413
+ <span class="ttdk-pagination-next-text">{nextText || "Next"}</span
414
+ >
415
+ {/if}
416
+ {#if nextIcon}
417
+ {nextIcon}
418
+ {/if}
419
+ {#if !nextIcon}
420
+ <svg
421
+ class="ttdk-pagination-icon"
422
+ viewBox="0 0 24 24"
423
+ fill="none"
424
+ aria-hidden="true"><polyline points="9 18 15 12 9 6" /></svg
425
+ >
426
+ {/if}</button
427
+ >
428
+ </li>
429
+ {#if showEdges || Boolean(onLastPage)}
430
+ <li class="ttdk-pagination-item">
431
+ <button
432
+ style={stringifyStyles({
433
+ ...buildUiVars(linkStyle),
434
+ })}
435
+ type="button"
436
+ aria-label="Go to last page"
437
+ class={`ttdk-pagination-link ttdk-pagination-last ${
438
+ linkClass || ""
439
+ }`.trim()}
440
+ data-size={size || "md"}
441
+ data-disabled={!getCanNext(page, maxPages, totalPages, canNextPage) ? "true" : "false"}
442
+ disabled={!getCanNext(page, maxPages, totalPages, canNextPage)}
443
+ on:click={(event) => {
444
+ if (onLastPage) {
445
+ onLastPage();
446
+ } else if (onPageChange) {
447
+ onPageChange(getTotalPages(maxPages, totalPages));
448
+ }
449
+ }}
450
+ >
451
+ {#if lastIcon}
452
+ {lastIcon}
453
+ {/if}
454
+ {#if !lastIcon}
455
+ <svg
456
+ class="ttdk-pagination-icon"
457
+ viewBox="0 0 24 24"
458
+ fill="none"
459
+ aria-hidden="true"
460
+ ><polyline points="13 17 18 12 13 7" /><polyline
461
+ points="6 17 11 12 6 7"
462
+ /></svg
463
+ >
464
+ {/if}</button
465
+ >
466
+ </li>
467
+ {/if}
468
+ </ul>
469
+ </div>
470
+ {/if}
471
+ </nav>