@vitnode/core 1.2.0-canary.60 → 1.2.0-canary.62

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 (274) hide show
  1. package/dist/scripts/get-config.js +15 -0
  2. package/dist/scripts/plugin.js +188 -0
  3. package/dist/scripts/prepare-database.js +177 -0
  4. package/dist/scripts/prepare-plugins-files.js +134 -0
  5. package/dist/scripts/run-interactive-shell-command.js +21 -0
  6. package/dist/scripts/scripts.js +39 -13
  7. package/dist/scripts/shared/file-utils.js +203 -0
  8. package/dist/src/api/adapters/sso/discord.js +1 -77
  9. package/dist/src/api/adapters/sso/facebook.js +1 -76
  10. package/dist/src/api/adapters/sso/google.js +1 -87
  11. package/dist/src/api/config.js +1 -67
  12. package/dist/src/api/lib/check-plugin-id.js +1 -43
  13. package/dist/src/api/lib/cron.js +1 -22
  14. package/dist/src/api/lib/logger-middleware.js +1 -35
  15. package/dist/src/api/lib/module.js +1 -22
  16. package/dist/src/api/lib/plugin.js +1 -22
  17. package/dist/src/api/lib/route.js +1 -27
  18. package/dist/src/api/lib/with-pagination.js +1 -83
  19. package/dist/src/api/middlewares/captcha.middleware.js +1 -63
  20. package/dist/src/api/middlewares/cron-auth.middleware.js +1 -19
  21. package/dist/src/api/middlewares/global.middleware.js +1 -93
  22. package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -32
  23. package/dist/src/api/models/device.js +1 -61
  24. package/dist/src/api/models/email.js +1 -76
  25. package/dist/src/api/models/password.js +1 -36
  26. package/dist/src/api/models/session-admin.js +1 -106
  27. package/dist/src/api/models/session.js +1 -85
  28. package/dist/src/api/models/sso.js +1 -120
  29. package/dist/src/api/models/user/get-user-by-id.js +1 -19
  30. package/dist/src/api/models/user/sign-in-with-passwords.js +1 -22
  31. package/dist/src/api/models/user/sign-up.js +1 -73
  32. package/dist/src/api/models/user.js +1 -8
  33. package/dist/src/api/modules/admin/admin.module.js +1 -19
  34. package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +1 -11
  35. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.js +1 -12
  36. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +1 -66
  37. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +1 -95
  38. package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -10
  39. package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -94
  40. package/dist/src/api/modules/admin/routes/session.route.js +1 -47
  41. package/dist/src/api/modules/admin/users/routes/list.route.js +1 -79
  42. package/dist/src/api/modules/admin/users/routes/users.route.js +1 -84
  43. package/dist/src/api/modules/admin/users/users.admin.module.js +1 -10
  44. package/dist/src/api/modules/cron/cron/clean.cron.js +1 -24
  45. package/dist/src/api/modules/cron/cron.module.js +1 -14
  46. package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts.map +1 -1
  47. package/dist/src/api/modules/cron/helpers/process-cron-jobs.js +1 -76
  48. package/dist/src/api/modules/cron/routes/cron.route.js +1 -101
  49. package/dist/src/api/modules/middleware/middleware.module.js +1 -10
  50. package/dist/src/api/modules/middleware/route.js +1 -49
  51. package/dist/src/api/modules/users/avatar-color.js +1 -43
  52. package/dist/src/api/modules/users/routes/change-password.route.js +1 -58
  53. package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -91
  54. package/dist/src/api/modules/users/routes/session.route.js +1 -46
  55. package/dist/src/api/modules/users/routes/sign-in.route.js +1 -71
  56. package/dist/src/api/modules/users/routes/sign-out.route.js +1 -43
  57. package/dist/src/api/modules/users/routes/sign-up.route.js +1 -77
  58. package/dist/src/api/modules/users/routes/test.route.js +1 -33
  59. package/dist/src/api/modules/users/sso/routes/callback.route.js +1 -52
  60. package/dist/src/api/modules/users/sso/routes/create-url.route.js +1 -36
  61. package/dist/src/api/modules/users/sso/sso.module.js +1 -12
  62. package/dist/src/api/modules/users/users.module.js +1 -26
  63. package/dist/src/api/plugin.js +1 -15
  64. package/dist/src/app/login/page.js +1 -16
  65. package/dist/src/app/login/reset-password/page.js +1 -18
  66. package/dist/src/app/login/sso/[providerId]/page.js +1 -10
  67. package/dist/src/app/register/page.js +1 -16
  68. package/dist/src/app_admin/core/advanced/cron/page.js +1 -42
  69. package/dist/src/app_admin/core/debug/page.js +1 -45
  70. package/dist/src/app_admin/core/page.js +1 -5
  71. package/dist/src/app_admin/core/test/page.js +1 -5
  72. package/dist/src/app_admin/core/users/page.js +1 -38
  73. package/dist/src/components/avatar.js +1 -14
  74. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -42
  75. package/dist/src/components/confirm-action/content.js +1 -31
  76. package/dist/src/components/date-format.js +1 -41
  77. package/dist/src/components/form/auto-form.js +1 -103
  78. package/dist/src/components/form/common/desc.js +1 -9
  79. package/dist/src/components/form/common/label.js +1 -18
  80. package/dist/src/components/form/fields/checkbox.js +1 -37
  81. package/dist/src/components/form/fields/combobox-async.js +1 -123
  82. package/dist/src/components/form/fields/combobox.js +1 -87
  83. package/dist/src/components/form/fields/input.js +1 -39
  84. package/dist/src/components/form/fields/radio-group.js +1 -50
  85. package/dist/src/components/form/fields/select.js +1 -58
  86. package/dist/src/components/form/fields/switch.js +1 -36
  87. package/dist/src/components/form/fields/textarea.js +1 -36
  88. package/dist/src/components/i18n-provider.js +1 -43
  89. package/dist/src/components/logo-vitnode.js +1 -119
  90. package/dist/src/components/switchers/langs/language-switcher.js +1 -47
  91. package/dist/src/components/switchers/themes/theme-switcher.js +1 -28
  92. package/dist/src/components/table/content.js +1 -81
  93. package/dist/src/components/table/data-table.js +1 -68
  94. package/dist/src/components/table/order-table-head.js +1 -50
  95. package/dist/src/components/table/pagination.js +1 -122
  96. package/dist/src/components/tiptap/extension.js +1 -33
  97. package/dist/src/components/tiptap/toolbar/actions/alignment-action.js +1 -91
  98. package/dist/src/components/tiptap/toolbar/actions/bold-action.js +1 -39
  99. package/dist/src/components/tiptap/toolbar/actions/headings-action.js +1 -93
  100. package/dist/src/components/tiptap/toolbar/actions/italic-action.js +1 -38
  101. package/dist/src/components/tiptap/toolbar/actions/list-action.js +1 -61
  102. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -59
  103. package/dist/src/components/tiptap/toolbar/actions/underline-action.js +1 -38
  104. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.js +1 -63
  105. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.js +1 -11
  106. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js +1 -55
  107. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.js +1 -5
  108. package/dist/src/components/ui/accordion.js +1 -46
  109. package/dist/src/components/ui/alert-dialog.js +1 -123
  110. package/dist/src/components/ui/alert.js +1 -39
  111. package/dist/src/components/ui/badge.js +1 -28
  112. package/dist/src/components/ui/button-client.js +1 -57
  113. package/dist/src/components/ui/button.js +1 -32
  114. package/dist/src/components/ui/card.js +1 -52
  115. package/dist/src/components/ui/checkbox.js +1 -20
  116. package/dist/src/components/ui/collapsible.js +1 -22
  117. package/dist/src/components/ui/command.js +1 -98
  118. package/dist/src/components/ui/context-menu.js +1 -140
  119. package/dist/src/components/ui/dialog.js +1 -189
  120. package/dist/src/components/ui/drawer.js +1 -83
  121. package/dist/src/components/ui/dropdown-menu.js +1 -141
  122. package/dist/src/components/ui/editor-content.js +1 -10
  123. package/dist/src/components/ui/editor.js +1 -35
  124. package/dist/src/components/ui/form.js +1 -148
  125. package/dist/src/components/ui/header-content.js +1 -30
  126. package/dist/src/components/ui/hover-card.js +1 -29
  127. package/dist/src/components/ui/input-otp.js +1 -48
  128. package/dist/src/components/ui/input.js +1 -11
  129. package/dist/src/components/ui/label.js +1 -12
  130. package/dist/src/components/ui/loader.js +1 -16
  131. package/dist/src/components/ui/menubar.js +1 -151
  132. package/dist/src/components/ui/navigation-menu.js +1 -82
  133. package/dist/src/components/ui/popover.js +1 -35
  134. package/dist/src/components/ui/progress.js +1 -19
  135. package/dist/src/components/ui/radio-group.js +1 -27
  136. package/dist/src/components/ui/scroll-area.js +1 -33
  137. package/dist/src/components/ui/select.js +1 -113
  138. package/dist/src/components/ui/separator.js +1 -14
  139. package/dist/src/components/ui/sheet.js +1 -92
  140. package/dist/src/components/ui/sidebar.js +1 -433
  141. package/dist/src/components/ui/skeleton.js +1 -10
  142. package/dist/src/components/ui/slider.js +1 -50
  143. package/dist/src/components/ui/sonner.js +1 -26
  144. package/dist/src/components/ui/switch.js +1 -16
  145. package/dist/src/components/ui/table.js +1 -63
  146. package/dist/src/components/ui/tabs.js +1 -33
  147. package/dist/src/components/ui/textarea.js +1 -10
  148. package/dist/src/components/ui/toggle-group.js +1 -45
  149. package/dist/src/components/ui/toggle.js +1 -34
  150. package/dist/src/components/ui/tooltip.js +1 -57
  151. package/dist/src/config.js +1 -4
  152. package/dist/src/database/admins.js +1 -74
  153. package/dist/src/database/cron.js +1 -22
  154. package/dist/src/database/languages.js +1 -52
  155. package/dist/src/database/logs.js +1 -34
  156. package/dist/src/database/moderators.js +1 -37
  157. package/dist/src/database/roles.js +1 -13
  158. package/dist/src/database/sessions.js +1 -60
  159. package/dist/src/database/users.js +1 -145
  160. package/dist/src/drizzle.config.js +1 -67
  161. package/dist/src/emails/default-template.js +1 -99
  162. package/dist/src/emails/reset-password.js +1 -132
  163. package/dist/src/emails/ui/button.js +1 -36
  164. package/dist/src/emails/ui/card.js +1 -39
  165. package/dist/src/hooks/use-before-unload.js +1 -30
  166. package/dist/src/hooks/use-captcha.js +1 -122
  167. package/dist/src/hooks/use-mobile.js +1 -16
  168. package/dist/src/lib/api/get-middleware-api.js +1 -13
  169. package/dist/src/lib/api/get-next-cron-run-date.js +1 -14
  170. package/dist/src/lib/api/get-next-cron-run-date.test.js +1 -55
  171. package/dist/src/lib/api/get-session-admin-api.js +1 -19
  172. package/dist/src/lib/api/get-session-api.js +1 -14
  173. package/dist/src/lib/api/should-cron-job-run.js +1 -16
  174. package/dist/src/lib/api/should-cron-job-run.test.js +1 -213
  175. package/dist/src/lib/api/validate-cron-schedule.d.ts +2 -0
  176. package/dist/src/lib/api/validate-cron-schedule.d.ts.map +1 -0
  177. package/dist/src/lib/api/validate-cron-schedule.js +1 -0
  178. package/dist/src/lib/api/validate-cron-schedule.test.d.ts +2 -0
  179. package/dist/src/lib/api/validate-cron-schedule.test.d.ts.map +1 -0
  180. package/dist/src/lib/api/validate-cron-schedule.test.js +1 -0
  181. package/dist/src/lib/colors.js +1 -140
  182. package/dist/src/lib/colors.test.js +1 -173
  183. package/dist/src/lib/config.js +1 -14
  184. package/dist/src/lib/ctrl-or-command-character.js +1 -5
  185. package/dist/src/lib/fetcher/cookie-from-string-to-object.js +1 -12
  186. package/dist/src/lib/fetcher/cookie-from-string-to-object.test.js +1 -78
  187. package/dist/src/lib/fetcher/core.js +3 -48
  188. package/dist/src/lib/fetcher/helpers-server.js +1 -18
  189. package/dist/src/lib/fetcher/helpers.js +1 -16
  190. package/dist/src/lib/fetcher/helpers.test.js +1 -37
  191. package/dist/src/lib/fetcher/types.js +1 -1
  192. package/dist/src/lib/fetcher-client.js +1 -17
  193. package/dist/src/lib/fetcher.js +1 -33
  194. package/dist/src/lib/helpers/auto-form.js +1 -98
  195. package/dist/src/lib/helpers/auto-form.test.js +1 -336
  196. package/dist/src/lib/navigation.js +1 -11
  197. package/dist/src/lib/plugin.js +1 -3
  198. package/dist/src/lib/special-characters.js +1 -4
  199. package/dist/src/lib/special-characters.test.js +1 -56
  200. package/dist/src/lib/utils.js +1 -5
  201. package/dist/src/locales/en.json +308 -0
  202. package/dist/src/tests/setup.js +1 -6
  203. package/dist/src/views/admin/layouts/admin-layout.js +1 -73
  204. package/dist/src/views/admin/layouts/sidebar/nav/item.js +1 -98
  205. package/dist/src/views/admin/layouts/sidebar/nav/nav.js +1 -60
  206. package/dist/src/views/admin/layouts/sidebar/sidebar.js +1 -28
  207. package/dist/src/views/admin/layouts/sidebar/sign-out.js +1 -14
  208. package/dist/src/views/admin/layouts/user-bar/client.js +1 -69
  209. package/dist/src/views/admin/layouts/user-bar/user-bar.js +1 -32
  210. package/dist/src/views/admin/sign-in/sign-in-admin-view.js +1 -27
  211. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +1 -97
  212. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.js +1 -23
  213. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -38
  214. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.js +1 -44
  215. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -35
  216. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +1 -5
  217. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.js +1 -281
  218. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -67
  219. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.js +1 -14
  220. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.js +1 -30
  221. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js +1 -96
  222. package/dist/src/views/admin/views/core/test.js +1 -161
  223. package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -89
  224. package/dist/src/views/auth/password-reset/change-password-form/form.js +1 -48
  225. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.js +1 -22
  226. package/dist/src/views/auth/password-reset/change-password-form/use-form.js +1 -36
  227. package/dist/src/views/auth/password-reset/form/form.js +1 -104
  228. package/dist/src/views/auth/password-reset/form/mutation-api.js +1 -21
  229. package/dist/src/views/auth/password-reset/form/use-form.js +1 -33
  230. package/dist/src/views/auth/password-reset/password-reset-view.js +1 -37
  231. package/dist/src/views/auth/sign-in/form/form.js +1 -64
  232. package/dist/src/views/auth/sign-in/form/mutation-api.js +1 -33
  233. package/dist/src/views/auth/sign-in/form/use-form.js +1 -38
  234. package/dist/src/views/auth/sign-in/sign-in-view.js +1 -61
  235. package/dist/src/views/auth/sign-up/components/password-input.js +1 -96
  236. package/dist/src/views/auth/sign-up/email-confirmation-view.js +1 -55
  237. package/dist/src/views/auth/sign-up/form/form.js +1 -89
  238. package/dist/src/views/auth/sign-up/form/mutation-api.js +1 -30
  239. package/dist/src/views/auth/sign-up/form/use-form.js +1 -70
  240. package/dist/src/views/auth/sign-up/sign-up-view.js +1 -65
  241. package/dist/src/views/auth/sign-up/wrapper.js +1 -22
  242. package/dist/src/views/auth/sso/buttons/client.js +1 -22
  243. package/dist/src/views/auth/sso/buttons/mutation-api.js +1 -24
  244. package/dist/src/views/auth/sso/buttons/sso-buttons.js +1 -56
  245. package/dist/src/views/auth/sso/callback/callback-sso-view.js +1 -32
  246. package/dist/src/views/auth/sso/callback/client/client.js +1 -68
  247. package/dist/src/views/auth/sso/callback/client/mutation-api.js +1 -32
  248. package/dist/src/views/error/back-button.js +1 -14
  249. package/dist/src/views/error/error-view.js +1 -58
  250. package/dist/src/views/error/global-error-view.js +1 -50
  251. package/dist/src/views/layouts/provider.js +1 -44
  252. package/dist/src/views/layouts/root-layout.js +1 -25
  253. package/dist/src/views/layouts/theme/header/header.js +1 -38
  254. package/dist/src/views/layouts/theme/header/user/auth/auth.js +1 -33
  255. package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -47
  256. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.js +1 -27
  257. package/dist/src/views/layouts/theme/header/user/user.js +1 -32
  258. package/dist/src/views/layouts/theme/layout.js +1 -16
  259. package/dist/src/vitnode.config.js +1 -42
  260. package/dist/tsconfig.tsbuildinfo +1 -1
  261. package/dist/tsup.config.js +18 -0
  262. package/dist/vitest.config.d.ts.map +1 -1
  263. package/dist/vitest.config.js +49 -0
  264. package/eslint.config.mjs +2 -0
  265. package/package.json +6 -10
  266. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts +0 -3
  267. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts.map +0 -1
  268. package/dist/src/api/adapters/cron/node-cron.adapter.js +0 -11
  269. package/dist/src/api/adapters/email/nodemailer.d.ts +0 -10
  270. package/dist/src/api/adapters/email/nodemailer.d.ts.map +0 -1
  271. package/dist/src/api/adapters/email/nodemailer.js +0 -30
  272. package/dist/src/api/adapters/email/resend.d.ts +0 -6
  273. package/dist/src/api/adapters/email/resend.d.ts.map +0 -1
  274. package/dist/src/api/adapters/email/resend.js +0 -21
@@ -1,119 +1 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- export const LogoVitNode = ({ className, small, ...props })=>{
4
- if (small) return /*#__PURE__*/ _jsxs("svg", {
5
- "aria-label": "Logo VitNode",
6
- className: cn("text-foreground", className),
7
- fill: "none",
8
- viewBox: "0 0 375 376",
9
- xmlns: "http://www.w3.org/2000/svg",
10
- ...props,
11
- children: [
12
- /*#__PURE__*/ _jsx("title", {
13
- children: "Logo VitNode"
14
- }),
15
- /*#__PURE__*/ _jsx("path", {
16
- d: "M169.385 16.196C180.827 9.60134 194.923 9.60134 206.365 16.196L329.51 87.1749C340.952 93.7695 348 105.957 348 119.146V261.104C348 274.293 340.952 286.481 329.51 293.075L206.365 364.054C194.923 370.649 180.827 370.649 169.385 364.054L46.2396 293.075C34.7982 286.481 27.75 274.293 27.75 261.104V119.146C27.75 105.957 34.7982 93.7695 46.2396 87.1749L169.385 16.196Z",
17
- fill: "#FDFEFF"
18
- }),
19
- /*#__PURE__*/ _jsx("path", {
20
- clipRule: "evenodd",
21
- d: "M168.101 5.19482C180.105 -1.73161 194.895 -1.73161 206.899 5.19482L336.101 79.745C348.105 86.6714 355.5 99.472 355.5 113.325V262.425C355.5 276.278 348.105 289.079 336.101 296.005L206.899 370.555C194.895 377.482 180.105 377.482 168.101 370.555L38.899 296.005C26.8948 289.079 19.5 276.278 19.5 262.425V113.325C19.5 99.472 26.8948 86.6714 38.899 79.745L168.101 5.19482ZM109.649 106.082L187.5 61.1613L265.351 106.082L187.5 241.071L109.649 106.082ZM77.6969 148.394V251.232L166.585 302.521L77.6969 148.394ZM208.415 302.521L297.303 251.232V148.394L208.415 302.521Z",
22
- fill: "url(#paint0_linear_123_23)",
23
- fillRule: "evenodd"
24
- }),
25
- /*#__PURE__*/ _jsx("defs", {
26
- children: /*#__PURE__*/ _jsxs("linearGradient", {
27
- gradientUnits: "userSpaceOnUse",
28
- id: "paint0_linear_123_23",
29
- x1: "187.5",
30
- x2: "187.5",
31
- y1: "0",
32
- y2: "375.75",
33
- children: [
34
- /*#__PURE__*/ _jsx("stop", {
35
- stopColor: "#3261BF"
36
- }),
37
- /*#__PURE__*/ _jsx("stop", {
38
- offset: "1",
39
- stopColor: "#363795"
40
- })
41
- ]
42
- })
43
- })
44
- ]
45
- });
46
- return /*#__PURE__*/ _jsxs("svg", {
47
- "aria-label": "Logo VitNode",
48
- className: cn("text-foreground", className),
49
- fill: "none",
50
- viewBox: "0 0 762 191",
51
- xmlns: "http://www.w3.org/2000/svg",
52
- ...props,
53
- children: [
54
- /*#__PURE__*/ _jsx("title", {
55
- children: "Logo VitNode"
56
- }),
57
- /*#__PURE__*/ _jsxs("g", {
58
- children: [
59
- /*#__PURE__*/ _jsx("path", {
60
- d: "M550.7 157H543.7L505 98.2V157H498V87.1H505L543.7 145.8V87.1H550.7V157ZM597.955 157.7C591.488 157.7 585.621 156.2 580.355 153.2C575.088 150.133 570.921 145.9 567.855 140.5C564.855 135.033 563.355 128.867 563.355 122C563.355 115.133 564.855 109 567.855 103.6C570.921 98.1333 575.088 93.9 580.355 90.9C585.621 87.8333 591.488 86.3 597.955 86.3C604.488 86.3 610.388 87.8333 615.655 90.9C620.921 93.9 625.055 98.1333 628.055 103.6C631.055 109 632.555 115.133 632.555 122C632.555 128.867 631.055 135.033 628.055 140.5C625.055 145.9 620.921 150.133 615.655 153.2C610.388 156.2 604.488 157.7 597.955 157.7ZM597.955 151.6C603.155 151.6 607.821 150.4 611.955 148C616.088 145.6 619.355 142.167 621.755 137.7C624.155 133.167 625.355 127.933 625.355 122C625.355 116.067 624.155 110.867 621.755 106.4C619.355 101.933 616.088 98.5 611.955 96.1C607.821 93.7 603.155 92.5 597.955 92.5C592.755 92.5 588.088 93.7 583.955 96.1C579.821 98.5 576.555 101.933 574.155 106.4C571.755 110.867 570.555 116.067 570.555 122C570.555 127.933 571.755 133.167 574.155 137.7C576.555 142.167 579.821 145.6 583.955 148C588.088 150.4 592.755 151.6 597.955 151.6ZM666.063 87.1C673.797 87.1 680.43 88.5 685.963 91.3C691.497 94.1 695.73 98.1333 698.663 103.4C701.597 108.667 703.063 114.933 703.063 122.2C703.063 129.4 701.597 135.633 698.663 140.9C695.73 146.1 691.497 150.1 685.963 152.9C680.43 155.633 673.797 157 666.063 157H645.363V87.1H666.063ZM666.063 151.2C675.797 151.2 683.197 148.667 688.263 143.6C693.397 138.467 695.963 131.333 695.963 122.2C695.963 113 693.397 105.833 688.263 100.7C683.197 95.5 675.797 92.9 666.063 92.9H652.363V151.2H666.063ZM722.969 92.8V118.9H749.469V124.7H722.969V151.2H752.469V157H715.969V87H752.469V92.8H722.969Z",
61
- fill: "currentColor"
62
- }),
63
- /*#__PURE__*/ _jsx("path", {
64
- d: "M349.338 32.044L305.016 157H266.924L222.602 32.044H254.998L285.97 126.384L317.12 32.044H349.338ZM392.497 32.044V157H362.059V32.044H392.497ZM504.446 32.044V56.43H471.338V157H440.9V56.43H407.792V32.044H504.446Z",
65
- fill: "url(#paint0_linear_205_42)"
66
- })
67
- ]
68
- }),
69
- /*#__PURE__*/ _jsx("path", {
70
- d: "M85.7722 8.20596C91.5658 4.86468 98.7039 4.86468 104.497 8.20596L166.855 44.1686C172.649 47.5099 176.218 53.6848 176.218 60.3674V132.293C176.218 138.975 172.649 145.15 166.855 148.491L104.497 184.454C98.7039 187.795 91.5658 187.795 85.7722 184.454L23.4144 148.491C17.6208 145.15 14.0518 138.975 14.0518 132.293V60.3674C14.0518 53.6848 17.6208 47.5099 23.4144 44.1686L85.7722 8.20596Z",
71
- fill: "#FDFEFF"
72
- }),
73
- /*#__PURE__*/ _jsx("path", {
74
- clipRule: "evenodd",
75
- d: "M85.1219 2.63204C91.2005 -0.877348 98.6896 -0.877348 104.768 2.63204L170.193 40.4041C176.271 43.9135 180.016 50.3991 180.016 57.4179V132.962C180.016 139.981 176.271 146.466 170.193 149.976L104.768 187.748C98.6896 191.257 91.2005 191.257 85.1219 187.748L19.6974 149.976C13.6188 146.466 9.87427 139.981 9.87427 132.962V57.4179C9.87427 50.3991 13.6188 43.9135 19.6974 40.4041L85.1219 2.63204ZM55.5232 53.7481L94.945 30.9884L134.367 53.7481L94.945 122.143L55.5232 53.7481ZM39.3436 75.1861V127.291L84.3544 153.277L39.3436 75.1861ZM105.536 153.277L150.546 127.291V75.1861L105.536 153.277Z",
76
- fill: "url(#paint1_linear_205_42)",
77
- fillRule: "evenodd"
78
- }),
79
- /*#__PURE__*/ _jsxs("defs", {
80
- children: [
81
- /*#__PURE__*/ _jsxs("linearGradient", {
82
- gradientUnits: "userSpaceOnUse",
83
- id: "paint0_linear_205_42",
84
- x1: "381.603",
85
- x2: "381.603",
86
- y1: "6",
87
- y2: "196",
88
- children: [
89
- /*#__PURE__*/ _jsx("stop", {
90
- stopColor: "#3261BF"
91
- }),
92
- /*#__PURE__*/ _jsx("stop", {
93
- offset: "1",
94
- stopColor: "#363795"
95
- })
96
- ]
97
- }),
98
- /*#__PURE__*/ _jsxs("linearGradient", {
99
- gradientUnits: "userSpaceOnUse",
100
- id: "paint1_linear_205_42",
101
- x1: "94.945",
102
- x2: "94.945",
103
- y1: "0",
104
- y2: "190.38",
105
- children: [
106
- /*#__PURE__*/ _jsx("stop", {
107
- stopColor: "#3261BF"
108
- }),
109
- /*#__PURE__*/ _jsx("stop", {
110
- offset: "1",
111
- stopColor: "#363795"
112
- })
113
- ]
114
- })
115
- ]
116
- })
117
- ]
118
- });
119
- };
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{cn}from"../lib/utils.js";export const LogoVitNode=({className,small,...props})=>{if(small)return _jsxs("svg",{"aria-label":"Logo VitNode",className:cn("text-foreground",className),fill:"none",viewBox:"0 0 375 376",xmlns:"http://www.w3.org/2000/svg",...props,children:[_jsx("title",{children:"Logo VitNode"}),_jsx("path",{d:"M169.385 16.196C180.827 9.60134 194.923 9.60134 206.365 16.196L329.51 87.1749C340.952 93.7695 348 105.957 348 119.146V261.104C348 274.293 340.952 286.481 329.51 293.075L206.365 364.054C194.923 370.649 180.827 370.649 169.385 364.054L46.2396 293.075C34.7982 286.481 27.75 274.293 27.75 261.104V119.146C27.75 105.957 34.7982 93.7695 46.2396 87.1749L169.385 16.196Z",fill:"#FDFEFF"}),_jsx("path",{clipRule:"evenodd",d:"M168.101 5.19482C180.105 -1.73161 194.895 -1.73161 206.899 5.19482L336.101 79.745C348.105 86.6714 355.5 99.472 355.5 113.325V262.425C355.5 276.278 348.105 289.079 336.101 296.005L206.899 370.555C194.895 377.482 180.105 377.482 168.101 370.555L38.899 296.005C26.8948 289.079 19.5 276.278 19.5 262.425V113.325C19.5 99.472 26.8948 86.6714 38.899 79.745L168.101 5.19482ZM109.649 106.082L187.5 61.1613L265.351 106.082L187.5 241.071L109.649 106.082ZM77.6969 148.394V251.232L166.585 302.521L77.6969 148.394ZM208.415 302.521L297.303 251.232V148.394L208.415 302.521Z",fill:"url(#paint0_linear_123_23)",fillRule:"evenodd"}),_jsx("defs",{children:_jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:"paint0_linear_123_23",x1:"187.5",x2:"187.5",y1:"0",y2:"375.75",children:[_jsx("stop",{stopColor:"#3261BF"}),_jsx("stop",{offset:"1",stopColor:"#363795"})]})})]});return _jsxs("svg",{"aria-label":"Logo VitNode",className:cn("text-foreground",className),fill:"none",viewBox:"0 0 762 191",xmlns:"http://www.w3.org/2000/svg",...props,children:[_jsx("title",{children:"Logo VitNode"}),_jsxs("g",{children:[_jsx("path",{d:"M550.7 157H543.7L505 98.2V157H498V87.1H505L543.7 145.8V87.1H550.7V157ZM597.955 157.7C591.488 157.7 585.621 156.2 580.355 153.2C575.088 150.133 570.921 145.9 567.855 140.5C564.855 135.033 563.355 128.867 563.355 122C563.355 115.133 564.855 109 567.855 103.6C570.921 98.1333 575.088 93.9 580.355 90.9C585.621 87.8333 591.488 86.3 597.955 86.3C604.488 86.3 610.388 87.8333 615.655 90.9C620.921 93.9 625.055 98.1333 628.055 103.6C631.055 109 632.555 115.133 632.555 122C632.555 128.867 631.055 135.033 628.055 140.5C625.055 145.9 620.921 150.133 615.655 153.2C610.388 156.2 604.488 157.7 597.955 157.7ZM597.955 151.6C603.155 151.6 607.821 150.4 611.955 148C616.088 145.6 619.355 142.167 621.755 137.7C624.155 133.167 625.355 127.933 625.355 122C625.355 116.067 624.155 110.867 621.755 106.4C619.355 101.933 616.088 98.5 611.955 96.1C607.821 93.7 603.155 92.5 597.955 92.5C592.755 92.5 588.088 93.7 583.955 96.1C579.821 98.5 576.555 101.933 574.155 106.4C571.755 110.867 570.555 116.067 570.555 122C570.555 127.933 571.755 133.167 574.155 137.7C576.555 142.167 579.821 145.6 583.955 148C588.088 150.4 592.755 151.6 597.955 151.6ZM666.063 87.1C673.797 87.1 680.43 88.5 685.963 91.3C691.497 94.1 695.73 98.1333 698.663 103.4C701.597 108.667 703.063 114.933 703.063 122.2C703.063 129.4 701.597 135.633 698.663 140.9C695.73 146.1 691.497 150.1 685.963 152.9C680.43 155.633 673.797 157 666.063 157H645.363V87.1H666.063ZM666.063 151.2C675.797 151.2 683.197 148.667 688.263 143.6C693.397 138.467 695.963 131.333 695.963 122.2C695.963 113 693.397 105.833 688.263 100.7C683.197 95.5 675.797 92.9 666.063 92.9H652.363V151.2H666.063ZM722.969 92.8V118.9H749.469V124.7H722.969V151.2H752.469V157H715.969V87H752.469V92.8H722.969Z",fill:"currentColor"}),_jsx("path",{d:"M349.338 32.044L305.016 157H266.924L222.602 32.044H254.998L285.97 126.384L317.12 32.044H349.338ZM392.497 32.044V157H362.059V32.044H392.497ZM504.446 32.044V56.43H471.338V157H440.9V56.43H407.792V32.044H504.446Z",fill:"url(#paint0_linear_205_42)"})]}),_jsx("path",{d:"M85.7722 8.20596C91.5658 4.86468 98.7039 4.86468 104.497 8.20596L166.855 44.1686C172.649 47.5099 176.218 53.6848 176.218 60.3674V132.293C176.218 138.975 172.649 145.15 166.855 148.491L104.497 184.454C98.7039 187.795 91.5658 187.795 85.7722 184.454L23.4144 148.491C17.6208 145.15 14.0518 138.975 14.0518 132.293V60.3674C14.0518 53.6848 17.6208 47.5099 23.4144 44.1686L85.7722 8.20596Z",fill:"#FDFEFF"}),_jsx("path",{clipRule:"evenodd",d:"M85.1219 2.63204C91.2005 -0.877348 98.6896 -0.877348 104.768 2.63204L170.193 40.4041C176.271 43.9135 180.016 50.3991 180.016 57.4179V132.962C180.016 139.981 176.271 146.466 170.193 149.976L104.768 187.748C98.6896 191.257 91.2005 191.257 85.1219 187.748L19.6974 149.976C13.6188 146.466 9.87427 139.981 9.87427 132.962V57.4179C9.87427 50.3991 13.6188 43.9135 19.6974 40.4041L85.1219 2.63204ZM55.5232 53.7481L94.945 30.9884L134.367 53.7481L94.945 122.143L55.5232 53.7481ZM39.3436 75.1861V127.291L84.3544 153.277L39.3436 75.1861ZM105.536 153.277L150.546 127.291V75.1861L105.536 153.277Z",fill:"url(#paint1_linear_205_42)",fillRule:"evenodd"}),_jsxs("defs",{children:[_jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:"paint0_linear_205_42",x1:"381.603",x2:"381.603",y1:"6",y2:"196",children:[_jsx("stop",{stopColor:"#3261BF"}),_jsx("stop",{offset:"1",stopColor:"#363795"})]}),_jsxs("linearGradient",{gradientUnits:"userSpaceOnUse",id:"paint1_linear_205_42",x1:"94.945",x2:"94.945",y1:"0",y2:"190.38",children:[_jsx("stop",{stopColor:"#3261BF"}),_jsx("stop",{offset:"1",stopColor:"#363795"})]})]})]})};
@@ -1,47 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { CheckIcon, LanguagesIcon } from "lucide-react";
4
- import { useLocale, useTranslations } from "next-intl";
5
- import React from "react";
6
- import { usePathname, useRouter } from "../../../lib/navigation.js";
7
- import { Button } from "../../ui/button.js";
8
- import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../../ui/dropdown-menu.js";
9
- export const LanguageSwitcher = ({ locales })=>{
10
- const currentLocale = useLocale();
11
- const [isPending, startTransition] = React.useTransition();
12
- const { replace } = useRouter();
13
- const t = useTranslations("core.global");
14
- const pathname = usePathname();
15
- return /*#__PURE__*/ _jsxs(DropdownMenu, {
16
- children: [
17
- /*#__PURE__*/ _jsx(DropdownMenuTrigger, {
18
- asChild: true,
19
- children: /*#__PURE__*/ _jsx(Button, {
20
- "aria-label": t("language_switcher"),
21
- className: "relative",
22
- isLoading: isPending,
23
- size: "icon",
24
- variant: "ghost",
25
- children: /*#__PURE__*/ _jsx(LanguagesIcon, {})
26
- })
27
- }),
28
- /*#__PURE__*/ _jsx(DropdownMenuContent, {
29
- children: locales.map((locale)=>/*#__PURE__*/ _jsxs(DropdownMenuItem, {
30
- onClick: ()=>{
31
- startTransition(()=>{
32
- replace(pathname, {
33
- locale: locale.code
34
- });
35
- });
36
- },
37
- children: [
38
- locale.name,
39
- locale.code === currentLocale && /*#__PURE__*/ _jsx(CheckIcon, {
40
- className: "ml-auto"
41
- })
42
- ]
43
- }, locale.code))
44
- })
45
- ]
46
- });
47
- };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{CheckIcon,LanguagesIcon}from"lucide-react";import{useLocale,useTranslations}from"next-intl";import React from"react";import{usePathname,useRouter}from"../../../lib/navigation.js";import{Button}from"../../ui/button.js";import{DropdownMenu,DropdownMenuContent,DropdownMenuItem,DropdownMenuTrigger}from"../../ui/dropdown-menu.js";export const LanguageSwitcher=({locales})=>{const currentLocale=useLocale();const[isPending,startTransition]=React.useTransition();const{replace}=useRouter();const t=useTranslations("core.global");const pathname=usePathname();return _jsxs(DropdownMenu,{children:[_jsx(DropdownMenuTrigger,{asChild:true,children:_jsx(Button,{"aria-label":t("language_switcher"),className:"relative",isLoading:isPending,size:"icon",variant:"ghost",children:_jsx(LanguagesIcon,{})})}),_jsx(DropdownMenuContent,{children:locales.map(locale=>_jsxs(DropdownMenuItem,{onClick:()=>{startTransition(()=>{replace(pathname,{locale:locale.code})})},children:[locale.name,locale.code===currentLocale&&_jsx(CheckIcon,{className:"ml-auto"})]},locale.code))})]})};
@@ -1,28 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Moon, Sun } from "lucide-react";
4
- import { useTranslations } from "next-intl";
5
- import { useTheme } from "next-themes";
6
- import { Button } from "../../ui/button.js";
7
- export const ThemeSwitcher = ()=>{
8
- const { setTheme, resolvedTheme } = useTheme();
9
- const t = useTranslations("core.global");
10
- return /*#__PURE__*/ _jsxs(Button, {
11
- "aria-label": t("theme_switcher"),
12
- className: "relative",
13
- onClick: ()=>{
14
- const nextTheme = resolvedTheme === "dark" ? "light" : "dark";
15
- setTheme(nextTheme);
16
- },
17
- size: "icon",
18
- variant: "ghost",
19
- children: [
20
- /*#__PURE__*/ _jsx(Sun, {
21
- className: "size-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90"
22
- }),
23
- /*#__PURE__*/ _jsx(Moon, {
24
- className: "absolute size-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0"
25
- })
26
- ]
27
- });
28
- };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Moon,Sun}from"lucide-react";import{useTranslations}from"next-intl";import{useTheme}from"next-themes";import{Button}from"../../ui/button.js";export const ThemeSwitcher=()=>{const{setTheme,resolvedTheme}=useTheme();const t=useTranslations("core.global");return _jsxs(Button,{"aria-label":t("theme_switcher"),className:"relative",onClick:()=>{const nextTheme=resolvedTheme==="dark"?"light":"dark";setTheme(nextTheme)},size:"icon",variant:"ghost",children:[_jsx(Sun,{className:"size-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90"}),_jsx(Moon,{className:"absolute size-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0"})]})};
@@ -1,81 +1 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { SearchXIcon } from "lucide-react";
3
- import { useTranslations } from "next-intl";
4
- import { cn } from "../../lib/utils.js";
5
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../ui/table.js";
6
- import { OrderTableHeadDataTable } from "./order-table-head.js";
7
- import { PaginationDataTable } from "./pagination.js";
8
- export function ContentDataTable({ columns, edges, pageInfo, order, customNotFoundComponent, ...props }) {
9
- const t = useTranslations("core.global");
10
- return /*#__PURE__*/ _jsxs("div", {
11
- className: "space-y-4",
12
- children: [
13
- /*#__PURE__*/ _jsx("div", {
14
- className: "[&>div]:rounded-md [&>div]:border",
15
- children: /*#__PURE__*/ _jsxs(Table, {
16
- ...props,
17
- children: [
18
- /*#__PURE__*/ _jsx(TableHeader, {
19
- className: "bg-card",
20
- children: /*#__PURE__*/ _jsx(TableRow, {
21
- children: columns.map((column)=>/*#__PURE__*/ _jsx(TableHead, {
22
- className: cn(column.className),
23
- children: order.columns?.includes(column.id) ? /*#__PURE__*/ _jsx(OrderTableHeadDataTable, {
24
- id: column.id,
25
- order: order,
26
- children: column.label
27
- }) : column.label
28
- }, column.id.toString()))
29
- })
30
- }),
31
- /*#__PURE__*/ _jsx(TableBody, {
32
- children: edges.length ? edges.map((row)=>/*#__PURE__*/ _jsx(TableRow, {
33
- children: columns.map((column)=>{
34
- const content = column.cell?.({
35
- allData: edges,
36
- row
37
- }) ?? (column.id === "actions" ? "" : String(row[column.id]));
38
- return /*#__PURE__*/ _jsx(TableCell, {
39
- className: cn({
40
- "flex items-center justify-end gap-2": column.id === "actions"
41
- }),
42
- children: content
43
- }, `${row.id}_${column.id.toString()}`);
44
- })
45
- }, row.id)) : /*#__PURE__*/ _jsx(TableRow, {
46
- children: /*#__PURE__*/ _jsx(TableCell, {
47
- className: "mx-auto max-w-sm p-4 text-center whitespace-normal sm:px-10 sm:py-12",
48
- colSpan: columns.length,
49
- children: customNotFoundComponent ?? /*#__PURE__*/ _jsxs("div", {
50
- className: "flex flex-col items-center justify-center gap-6",
51
- children: [
52
- /*#__PURE__*/ _jsx(SearchXIcon, {
53
- className: "text-muted-foreground size-16 sm:size-24"
54
- }),
55
- /*#__PURE__*/ _jsxs("div", {
56
- className: "space-y-2 text-center",
57
- children: [
58
- /*#__PURE__*/ _jsx("h3", {
59
- className: "text-xl font-semibold tracking-tight",
60
- children: t("no_results.title")
61
- }),
62
- /*#__PURE__*/ _jsx("p", {
63
- className: "text-muted-foreground text-sm",
64
- children: t("no_results.desc")
65
- })
66
- ]
67
- })
68
- ]
69
- })
70
- })
71
- })
72
- })
73
- ]
74
- })
75
- }),
76
- /*#__PURE__*/ _jsx(PaginationDataTable, {
77
- pageInfo: pageInfo
78
- })
79
- ]
80
- });
81
- }
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{SearchXIcon}from"lucide-react";import{useTranslations}from"next-intl";import{cn}from"../../lib/utils.js";import{Table,TableBody,TableCell,TableHead,TableHeader,TableRow}from"../ui/table.js";import{OrderTableHeadDataTable}from"./order-table-head.js";import{PaginationDataTable}from"./pagination.js";export function ContentDataTable({columns,edges,pageInfo,order,customNotFoundComponent,...props}){const t=useTranslations("core.global");return _jsxs("div",{className:"space-y-4",children:[_jsx("div",{className:"[&>div]:rounded-md [&>div]:border",children:_jsxs(Table,{...props,children:[_jsx(TableHeader,{className:"bg-card",children:_jsx(TableRow,{children:columns.map(column=>_jsx(TableHead,{className:cn(column.className),children:order.columns?.includes(column.id)?_jsx(OrderTableHeadDataTable,{id:column.id,order:order,children:column.label}):column.label},column.id.toString()))})}),_jsx(TableBody,{children:edges.length?edges.map(row=>_jsx(TableRow,{children:columns.map(column=>{const content=column.cell?.({allData:edges,row})??(column.id==="actions"?"":String(row[column.id]));return _jsx(TableCell,{className:cn({"flex items-center justify-end gap-2":column.id==="actions"}),children:content},`${row.id}_${column.id.toString()}`)})},row.id)):_jsx(TableRow,{children:_jsx(TableCell,{className:"mx-auto max-w-sm p-4 text-center whitespace-normal sm:px-10 sm:py-12",colSpan:columns.length,children:customNotFoundComponent??_jsxs("div",{className:"flex flex-col items-center justify-center gap-6",children:[_jsx(SearchXIcon,{className:"text-muted-foreground size-16 sm:size-24"}),_jsxs("div",{className:"space-y-2 text-center",children:[_jsx("h3",{className:"text-xl font-semibold tracking-tight",children:t("no_results.title")}),_jsx("p",{className:"text-muted-foreground text-sm",children:t("no_results.desc")})]})]})})})})]})}),_jsx(PaginationDataTable,{pageInfo:pageInfo})]})}
@@ -1,68 +1 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from "react";
3
- import { ErrorView } from "../../views/error/error-view.js";
4
- import { Skeleton } from "../ui/skeleton.js";
5
- import { Table, TableBody, TableHead, TableHeader, TableRow } from "../ui/table.js";
6
- import { ContentDataTable } from "./content.js";
7
- export const DataTableSkeleton = ({ columns })=>{
8
- const headerIds = React.useMemo(()=>Array.from({
9
- length: columns
10
- }).map(()=>`s-head-${Math.random().toString(36).slice(2, 9)}`), [
11
- columns
12
- ]);
13
- const rowIds = React.useMemo(()=>Array.from({
14
- length: 6
15
- }).map(()=>`s-row-${Math.random().toString(36).slice(2, 9)}`), []);
16
- return /*#__PURE__*/ _jsxs("div", {
17
- className: "space-y-4",
18
- children: [
19
- /*#__PURE__*/ _jsx("div", {
20
- className: "[&>div]:rounded-md [&>div]:border",
21
- children: /*#__PURE__*/ _jsxs(Table, {
22
- className: "min-w-full",
23
- children: [
24
- /*#__PURE__*/ _jsx(TableHeader, {
25
- children: /*#__PURE__*/ _jsx(TableRow, {
26
- children: headerIds.map((hid)=>/*#__PURE__*/ _jsx(TableHead, {
27
- className: "px-4 py-3",
28
- children: /*#__PURE__*/ _jsx(Skeleton, {
29
- className: "h-4 w-24"
30
- })
31
- }, hid))
32
- })
33
- }),
34
- /*#__PURE__*/ _jsx(TableBody, {
35
- children: rowIds.map((rid)=>/*#__PURE__*/ _jsx(TableRow, {
36
- children: headerIds.map((_, j)=>{
37
- const cellId = `s-cell-${rid}-${j}`;
38
- return /*#__PURE__*/ _jsx("td", {
39
- className: "px-4 py-3",
40
- children: /*#__PURE__*/ _jsx(Skeleton, {
41
- className: "h-4 w-full"
42
- })
43
- }, cellId);
44
- })
45
- }, rid))
46
- })
47
- ]
48
- })
49
- }),
50
- /*#__PURE__*/ _jsx("div", {
51
- className: "flex justify-end",
52
- children: /*#__PURE__*/ _jsx(Skeleton, {
53
- className: "h-8 w-32"
54
- })
55
- })
56
- ]
57
- });
58
- };
59
- export function DataTable(props) {
60
- if (!(props.edges && props.pageInfo)) {
61
- return /*#__PURE__*/ _jsx(ErrorView, {
62
- code: 500
63
- });
64
- }
65
- return /*#__PURE__*/ _jsx(ContentDataTable, {
66
- ...props
67
- });
68
- }
1
+ import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import React from"react";import{ErrorView}from"../../views/error/error-view.js";import{Skeleton}from"../ui/skeleton.js";import{Table,TableBody,TableHead,TableHeader,TableRow}from"../ui/table.js";import{ContentDataTable}from"./content.js";export const DataTableSkeleton=({columns})=>{const headerIds=React.useMemo(()=>Array.from({length:columns}).map(()=>`s-head-${Math.random().toString(36).slice(2,9)}`),[columns]);const rowIds=React.useMemo(()=>Array.from({length:6}).map(()=>`s-row-${Math.random().toString(36).slice(2,9)}`),[]);return _jsxs("div",{className:"space-y-4",children:[_jsx("div",{className:"[&>div]:rounded-md [&>div]:border",children:_jsxs(Table,{className:"min-w-full",children:[_jsx(TableHeader,{children:_jsx(TableRow,{children:headerIds.map(hid=>_jsx(TableHead,{className:"px-4 py-3",children:_jsx(Skeleton,{className:"h-4 w-24"})},hid))})}),_jsx(TableBody,{children:rowIds.map(rid=>_jsx(TableRow,{children:headerIds.map((_,j)=>{const cellId=`s-cell-${rid}-${j}`;return _jsx("td",{className:"px-4 py-3",children:_jsx(Skeleton,{className:"h-4 w-full"})},cellId)})},rid))})]})}),_jsx("div",{className:"flex justify-end",children:_jsx(Skeleton,{className:"h-8 w-32"})})]})};export function DataTable(props){if(!(props.edges&&props.pageInfo)){return _jsx(ErrorView,{code:500})}return _jsx(ContentDataTable,{...props})}
@@ -1,50 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { ArrowDown, ArrowUp, ChevronsUpDown } from "lucide-react";
4
- import { useSearchParams } from "next/navigation";
5
- import React from "react";
6
- import { usePathname, useRouter } from "../../lib/navigation.js";
7
- import { Button } from "../ui/button.js";
8
- import { Loader } from "../ui/loader.js";
9
- export function OrderTableHeadDataTable({ id, children, order: { defaultOrder } }) {
10
- const [isPending, startTransition] = React.useTransition();
11
- const searchParams = useSearchParams();
12
- const pathname = usePathname();
13
- const { push } = useRouter();
14
- const currentOrderBy = searchParams.get("orderBy") ?? defaultOrder.column.toString();
15
- const currentOrder = searchParams.get("order") ?? defaultOrder.order;
16
- const isActive = currentOrderBy === id.toString();
17
- const nextOrder = isActive && currentOrder === "asc" ? "desc" : "asc";
18
- return /*#__PURE__*/ _jsxs(Button, {
19
- className: "[&_svg]:text-muted-foreground -ml-2 flex h-8 items-center gap-1.5 rounded-md px-2 py-1.5 [&_svg]:size-4 [&_svg]:shrink-0",
20
- onClick: ()=>{
21
- startTransition(()=>{
22
- const params = new URLSearchParams(searchParams.toString());
23
- params.set("orderBy", id.toString());
24
- params.set("order", nextOrder);
25
- push(`${pathname}?${params.toString()}`, {
26
- scroll: false
27
- });
28
- });
29
- },
30
- size: "sm",
31
- variant: "ghost",
32
- children: [
33
- children,
34
- (()=>{
35
- if (isPending) {
36
- return /*#__PURE__*/ _jsx(Loader, {
37
- small: true
38
- });
39
- }
40
- if (isActive) {
41
- if (currentOrder === "asc") {
42
- return /*#__PURE__*/ _jsx(ArrowUp, {});
43
- }
44
- return /*#__PURE__*/ _jsx(ArrowDown, {});
45
- }
46
- return /*#__PURE__*/ _jsx(ChevronsUpDown, {});
47
- })()
48
- ]
49
- });
50
- }
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ArrowDown,ArrowUp,ChevronsUpDown}from"lucide-react";import{useSearchParams}from"next/navigation";import React from"react";import{usePathname,useRouter}from"../../lib/navigation.js";import{Button}from"../ui/button.js";import{Loader}from"../ui/loader.js";export function OrderTableHeadDataTable({id,children,order:{defaultOrder}}){const[isPending,startTransition]=React.useTransition();const searchParams=useSearchParams();const pathname=usePathname();const{push}=useRouter();const currentOrderBy=searchParams.get("orderBy")??defaultOrder.column.toString();const currentOrder=searchParams.get("order")??defaultOrder.order;const isActive=currentOrderBy===id.toString();const nextOrder=isActive&&currentOrder==="asc"?"desc":"asc";return _jsxs(Button,{className:"[&_svg]:text-muted-foreground -ml-2 flex h-8 items-center gap-1.5 rounded-md px-2 py-1.5 [&_svg]:size-4 [&_svg]:shrink-0",onClick:()=>{startTransition(()=>{const params=new URLSearchParams(searchParams.toString());params.set("orderBy",id.toString());params.set("order",nextOrder);push(`${pathname}?${params.toString()}`,{scroll:false})})},size:"sm",variant:"ghost",children:[children,(()=>{if(isPending){return _jsx(Loader,{small:true})}if(isActive){if(currentOrder==="asc"){return _jsx(ArrowUp,{})}return _jsx(ArrowDown,{})}return _jsx(ChevronsUpDown,{})})()]})}
@@ -1,122 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
4
- import { useTranslations } from "next-intl";
5
- import { useSearchParams } from "next/navigation";
6
- import React from "react";
7
- import { usePathname, useRouter } from "../../lib/navigation.js";
8
- import { Button } from "../ui/button.js";
9
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../ui/select.js";
10
- import { Skeleton } from "../ui/skeleton.js";
11
- const PAGE_SIZE_OPTIONS = [
12
- 10,
13
- 20,
14
- 30,
15
- 40
16
- ];
17
- export const PaginationDataTable = ({ pageInfo: { hasNextPage, hasPreviousPage, startCursor, endCursor } })=>{
18
- const t = useTranslations("core.global");
19
- const { push } = useRouter();
20
- const [isPending, startTransition] = React.useTransition();
21
- const pathname = usePathname();
22
- const searchParams = useSearchParams();
23
- const pagination = {
24
- first: searchParams.get("first"),
25
- last: searchParams.get("last"),
26
- cursor: searchParams.get("cursor")
27
- };
28
- const pageSize = pagination.first ?? pagination.last ?? 10;
29
- return /*#__PURE__*/ _jsx("div", {
30
- className: "flex w-full flex-col-reverse items-center justify-end gap-4 overflow-auto p-1 sm:flex-row sm:gap-8",
31
- children: /*#__PURE__*/ _jsxs("div", {
32
- className: "flex flex-wrap items-center justify-center gap-4 sm:gap-6 lg:gap-8",
33
- children: [
34
- /*#__PURE__*/ _jsxs(Select, {
35
- disabled: isPending,
36
- onValueChange: (value)=>{
37
- startTransition(()=>{
38
- const params = new URLSearchParams(searchParams.toString());
39
- params.set("first", value);
40
- params.delete("last");
41
- params.delete("cursor");
42
- push(`${pathname}?${params.toString()}`, {
43
- scroll: false
44
- });
45
- });
46
- },
47
- value: `${pageSize}`,
48
- children: [
49
- isPending ? /*#__PURE__*/ _jsx(Skeleton, {
50
- className: "h-9 w-[4.5rem]"
51
- }) : /*#__PURE__*/ _jsx(SelectTrigger, {
52
- className: "bg-card h-8 w-[4.5rem]",
53
- children: /*#__PURE__*/ _jsx(SelectValue, {})
54
- }),
55
- /*#__PURE__*/ _jsx(SelectContent, {
56
- side: "top",
57
- children: PAGE_SIZE_OPTIONS.map((pageSize)=>/*#__PURE__*/ _jsx(SelectItem, {
58
- value: `${pageSize}`,
59
- children: pageSize
60
- }, pageSize))
61
- })
62
- ]
63
- }),
64
- /*#__PURE__*/ _jsxs("div", {
65
- className: "flex items-center space-x-2",
66
- children: [
67
- isPending ? /*#__PURE__*/ _jsx(Skeleton, {
68
- className: "size-8"
69
- }) : /*#__PURE__*/ _jsx(Button, {
70
- "aria-label": t("go_to_prev_page"),
71
- className: "bg-card size-8",
72
- disabled: !hasPreviousPage,
73
- onClick: ()=>{
74
- startTransition(()=>{
75
- const params = new URLSearchParams(searchParams.toString());
76
- params.set("last", `${Number(pageSize)}`);
77
- if (startCursor) {
78
- params.set("cursor", `${startCursor}`);
79
- } else {
80
- params.delete("cursor");
81
- }
82
- params.delete("first");
83
- push(`${pathname}?${params.toString()}`, {
84
- scroll: false
85
- });
86
- });
87
- },
88
- size: "icon",
89
- variant: "outline",
90
- children: /*#__PURE__*/ _jsx(ChevronLeftIcon, {})
91
- }),
92
- isPending ? /*#__PURE__*/ _jsx(Skeleton, {
93
- className: "size-8"
94
- }) : /*#__PURE__*/ _jsx(Button, {
95
- "aria-label": t("go_to_next_page"),
96
- className: "bg-card size-8",
97
- disabled: !hasNextPage || isPending,
98
- onClick: ()=>{
99
- startTransition(()=>{
100
- const params = new URLSearchParams(searchParams.toString());
101
- params.set("first", `${Number(pageSize)}`);
102
- if (endCursor) {
103
- params.set("cursor", `${endCursor}`);
104
- } else {
105
- params.delete("cursor");
106
- }
107
- params.delete("last");
108
- push(`${pathname}?${params.toString()}`, {
109
- scroll: false
110
- });
111
- });
112
- },
113
- size: "icon",
114
- variant: "outline",
115
- children: /*#__PURE__*/ _jsx(ChevronRightIcon, {})
116
- })
117
- ]
118
- })
119
- ]
120
- })
121
- });
122
- };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ChevronLeftIcon,ChevronRightIcon}from"lucide-react";import{useTranslations}from"next-intl";import{useSearchParams}from"next/navigation";import React from"react";import{usePathname,useRouter}from"../../lib/navigation.js";import{Button}from"../ui/button.js";import{Select,SelectContent,SelectItem,SelectTrigger,SelectValue}from"../ui/select.js";import{Skeleton}from"../ui/skeleton.js";const PAGE_SIZE_OPTIONS=[10,20,30,40];export const PaginationDataTable=({pageInfo:{hasNextPage,hasPreviousPage,startCursor,endCursor}})=>{const t=useTranslations("core.global");const{push}=useRouter();const[isPending,startTransition]=React.useTransition();const pathname=usePathname();const searchParams=useSearchParams();const pagination={first:searchParams.get("first"),last:searchParams.get("last"),cursor:searchParams.get("cursor")};const pageSize=pagination.first??pagination.last??10;return _jsx("div",{className:"flex w-full flex-col-reverse items-center justify-end gap-4 overflow-auto p-1 sm:flex-row sm:gap-8",children:_jsxs("div",{className:"flex flex-wrap items-center justify-center gap-4 sm:gap-6 lg:gap-8",children:[_jsxs(Select,{disabled:isPending,onValueChange:value=>{startTransition(()=>{const params=new URLSearchParams(searchParams.toString());params.set("first",value);params.delete("last");params.delete("cursor");push(`${pathname}?${params.toString()}`,{scroll:false})})},value:`${pageSize}`,children:[isPending?_jsx(Skeleton,{className:"h-9 w-[4.5rem]"}):_jsx(SelectTrigger,{className:"bg-card h-8 w-[4.5rem]",children:_jsx(SelectValue,{})}),_jsx(SelectContent,{side:"top",children:PAGE_SIZE_OPTIONS.map(pageSize=>_jsx(SelectItem,{value:`${pageSize}`,children:pageSize},pageSize))})]}),_jsxs("div",{className:"flex items-center space-x-2",children:[isPending?_jsx(Skeleton,{className:"size-8"}):_jsx(Button,{"aria-label":t("go_to_prev_page"),className:"bg-card size-8",disabled:!hasPreviousPage,onClick:()=>{startTransition(()=>{const params=new URLSearchParams(searchParams.toString());params.set("last",`${Number(pageSize)}`);if(startCursor){params.set("cursor",`${startCursor}`)}else{params.delete("cursor")}params.delete("first");push(`${pathname}?${params.toString()}`,{scroll:false})})},size:"icon",variant:"outline",children:_jsx(ChevronLeftIcon,{})}),isPending?_jsx(Skeleton,{className:"size-8"}):_jsx(Button,{"aria-label":t("go_to_next_page"),className:"bg-card size-8",disabled:!hasNextPage||isPending,onClick:()=>{startTransition(()=>{const params=new URLSearchParams(searchParams.toString());params.set("first",`${Number(pageSize)}`);if(endCursor){params.set("cursor",`${endCursor}`)}else{params.delete("cursor")}params.delete("last");push(`${pathname}?${params.toString()}`,{scroll:false})})},size:"icon",variant:"outline",children:_jsx(ChevronRightIcon,{})})]})]})})};
@@ -1,33 +1 @@
1
- import TextAlign from "@tiptap/extension-text-align";
2
- import StarterKit from "@tiptap/starter-kit";
3
- export const SUPPORTED_HEADINGS_LEVELS = [
4
- 1,
5
- 2,
6
- 3,
7
- 4
8
- ];
9
- export const tiptapExtensions = [
10
- StarterKit.configure({
11
- orderedList: {
12
- HTMLAttributes: {
13
- class: "list-decimal"
14
- }
15
- },
16
- bulletList: {
17
- HTMLAttributes: {
18
- class: "list-disc"
19
- }
20
- },
21
- heading: {
22
- levels: [
23
- ...SUPPORTED_HEADINGS_LEVELS
24
- ]
25
- }
26
- }),
27
- TextAlign.configure({
28
- types: [
29
- "heading",
30
- "paragraph"
31
- ]
32
- })
33
- ];
1
+ import TextAlign from"@tiptap/extension-text-align";import StarterKit from"@tiptap/starter-kit";export const SUPPORTED_HEADINGS_LEVELS=[1,2,3,4];export const tiptapExtensions=[StarterKit.configure({orderedList:{HTMLAttributes:{class:"list-decimal"}},bulletList:{HTMLAttributes:{class:"list-disc"}},heading:{levels:[...SUPPORTED_HEADINGS_LEVELS]}}),TextAlign.configure({types:["heading","paragraph"]})];