wcz-test 6.13.1 → 6.20.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 (49) hide show
  1. package/dist/ApprovalStatus-C9HPyMiS.js.map +1 -1
  2. package/dist/DialogsHooks-Bi8dZoyu.js +338 -0
  3. package/dist/DialogsHooks-Bi8dZoyu.js.map +1 -0
  4. package/dist/{FileHooks-BbjesS5D.js → FileHooks-hWKTwLCr.js} +2 -2
  5. package/dist/FileHooks-hWKTwLCr.js.map +1 -0
  6. package/dist/FileMeta-G1oT3mYK.js.map +1 -1
  7. package/dist/{RouterListItemButton-Cx7rXEfm.js → RouterListItemButton-CHS7rofI.js} +4 -4
  8. package/dist/RouterListItemButton-CHS7rofI.js.map +1 -0
  9. package/dist/auth-client-B6cIXYDV.js +1417 -0
  10. package/dist/auth-client-B6cIXYDV.js.map +1 -0
  11. package/dist/client.d.ts +6 -0
  12. package/dist/client.js +7 -3
  13. package/dist/client.js.map +1 -1
  14. package/dist/components.js +66 -67
  15. package/dist/components.js.map +1 -1
  16. package/dist/env-CoxTjaDr.js.map +1 -1
  17. package/dist/error-BhAKg8LX-X0sdNXNa.js +195 -0
  18. package/dist/error-BhAKg8LX-X0sdNXNa.js.map +1 -0
  19. package/dist/hooks.d.ts +6 -2
  20. package/dist/hooks.js +34 -32
  21. package/dist/hooks.js.map +1 -1
  22. package/dist/index.js +84 -85
  23. package/dist/index.js.map +1 -1
  24. package/dist/manifest.webmanifest +18 -18
  25. package/dist/models.d.ts +10 -10
  26. package/dist/models.js +4 -4
  27. package/dist/models.js.map +1 -1
  28. package/dist/queries.d.ts +6 -6
  29. package/dist/queries.js +2 -2
  30. package/dist/queries.js.map +1 -1
  31. package/dist/server-mxQ3s5dx-CC81W42s.js +644 -0
  32. package/dist/server-mxQ3s5dx-CC81W42s.js.map +1 -0
  33. package/dist/server.d.ts +2 -0
  34. package/dist/server.js +8659 -5
  35. package/dist/server.js.map +1 -1
  36. package/dist/{utils-JYv9O0GI.js → utils-DKyKGba7.js} +2 -1
  37. package/dist/utils-DKyKGba7.js.map +1 -0
  38. package/dist/utils.d.ts +11 -0
  39. package/dist/utils.js +9 -0
  40. package/dist/utils.js.map +1 -0
  41. package/dist/vite.js.map +1 -1
  42. package/package.json +120 -116
  43. package/dist/DialogsHooks-BlUsVlfv.js +0 -39
  44. package/dist/DialogsHooks-BlUsVlfv.js.map +0 -1
  45. package/dist/FileHooks-BbjesS5D.js.map +0 -1
  46. package/dist/RouterListItemButton-Cx7rXEfm.js.map +0 -1
  47. package/dist/auth-client-o9U0_qmf.js +0 -79
  48. package/dist/auth-client-o9U0_qmf.js.map +0 -1
  49. package/dist/utils-JYv9O0GI.js.map +0 -1
@@ -36,6 +36,7 @@ const rootRouteHead = () => ({
36
36
  });
37
37
  const httpClient = axios.create({
38
38
  baseURL: clientEnv.VITE_API_URL
39
+ // TODO: Not working in children projects
39
40
  });
40
41
  const getFieldStatus = (field) => {
41
42
  const { meta } = field.state;
@@ -54,4 +55,4 @@ export {
54
55
  rootRouteHead as r,
55
56
  toKebabCase as t
56
57
  };
57
- //# sourceMappingURL=utils-JYv9O0GI.js.map
58
+ //# sourceMappingURL=utils-DKyKGba7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-DKyKGba7.js","sources":["../src/lib/utils.ts"],"sourcesContent":["import axios from \"axios\";\nimport type { AnyFieldApi } from \"@tanstack/react-form\";\nimport { clientEnv } from \"~/env\";\n\nexport class Platform {\n static get isAndroid() { return /android/i.test(this.userAgent); }\n static get isIOS() { return /iPad|iPhone|iPod/.test(this.userAgent); }\n static get isWindows() { return /windows/i.test(this.userAgent); }\n static get isMacOS() { return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent); }\n\n private static get userAgent() { return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent; }\n}\n\nexport const rootRouteHead = () => ({\n meta: [\n { charSet: \"utf-8\" },\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\n { title: clientEnv.VITE_APP_TITLE },\n { name: \"og:type\", content: \"website\" },\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\n { name: \"og:image\", content: \"/favicon-32x32.png\" }\n ],\n links: [\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\", },\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\", },\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\", },\n { rel: \"manifest\", href: \"/manifest.webmanifest\" },\n { rel: \"icon\", href: \"/favicon.ico\" },\n ],\n});\n\nexport const httpClient = axios.create({\n baseURL: clientEnv.VITE_API_URL // TODO: Not working in children projects\n});\n\n/* Internal Utils */\nexport type FormOmittedProps =\n \"name\" |\n \"value\" |\n \"onChange\" |\n \"onBlur\" |\n \"error\" |\n \"helperText\" |\n \"renderInput\" |\n \"type\" |\n \"aria-label\";\n\nexport const getFieldStatus = (field: AnyFieldApi) => {\n const { meta } = field.state;\n\n const isTouched = meta.isTouched;\n const hasError = !!meta.errors.length;\n const helperText = meta.errors[0]?.message;\n\n return { isTouched, hasError, helperText };\n};\n\nexport const toKebabCase = (str: string): string => {\n return str\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\n .replaceAll(/[\\s_]+/g, \"-\")\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\n .toLowerCase()\n .replaceAll(/-+/g, \"-\")\n .replaceAll(/(^-|-$)/g, \"\");\n};\n"],"names":[],"mappings":";;AAIO,MAAM,SAAS;AAAA,EAClB,WAAW,YAAY;AAAE,WAAO,WAAW,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EACjE,WAAW,QAAQ;AAAE,WAAO,mBAAmB,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EACrE,WAAW,YAAY;AAAE,WAAO,WAAW,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EACjE,WAAW,UAAU;AAAE,WAAO,mCAAmC,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EAEvF,WAAmB,YAAY;AAAE,WAAO,OAAO,cAAc,cAAc,KAAK,UAAU;AAAA,EAAW;AACzG;AAEO,MAAM,gBAAgB,OAAO;AAAA,EAChC,MAAM;AAAA,IACF,EAAE,SAAS,QAAA;AAAA,IACX,EAAE,MAAM,YAAY,SAAS,sCAAA;AAAA,IAC7B,EAAE,OAAO,UAAU,eAAA;AAAA,IACnB,EAAE,MAAM,WAAW,SAAS,UAAA;AAAA,IAC5B,EAAE,MAAM,YAAY,SAAS,UAAU,eAAA;AAAA,IACvC,EAAE,MAAM,YAAY,SAAS,qBAAA;AAAA,EAAqB;AAAA,EAEtD,OAAO;AAAA,IACH,EAAE,KAAK,oBAAoB,OAAO,WAAW,MAAM,wBAAA;AAAA,IACnD,EAAE,KAAK,QAAQ,MAAM,aAAa,OAAO,SAAS,MAAM,qBAAA;AAAA,IACxD,EAAE,KAAK,QAAQ,MAAM,aAAa,OAAO,SAAS,MAAM,qBAAA;AAAA,IACxD,EAAE,KAAK,YAAY,MAAM,wBAAA;AAAA,IACzB,EAAE,KAAK,QAAQ,MAAM,eAAA;AAAA,EAAe;AAE5C;AAEO,MAAM,aAAa,MAAM,OAAO;AAAA,EACnC,SAAS,UAAU;AAAA;AACvB,CAAC;AAcM,MAAM,iBAAiB,CAAC,UAAuB;AAClD,QAAM,EAAE,SAAS,MAAM;AAEvB,QAAM,YAAY,KAAK;AACvB,QAAM,WAAW,CAAC,CAAC,KAAK,OAAO;AAC/B,QAAM,aAAa,KAAK,OAAO,CAAC,GAAG;AAEnC,SAAO,EAAE,WAAW,UAAU,WAAA;AAClC;AAEO,MAAM,cAAc,CAAC,QAAwB;AAChD,SAAO,IACF,WAAW,mBAAmB,OAAO,EACrC,WAAW,WAAW,GAAG,EACzB,WAAW,kBAAkB,EAAE,EAC/B,cACA,WAAW,OAAO,GAAG,EACrB,WAAW,YAAY,EAAE;AAClC;"}
@@ -0,0 +1,11 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { createEnv } from '@t3-oss/env-core';
3
+ import { uuidv7 } from 'uuidv7';
4
+
5
+ export { createEnv }
6
+
7
+ export declare const httpClient: AxiosInstance;
8
+
9
+ export { uuidv7 }
10
+
11
+ export { }
package/dist/utils.js ADDED
@@ -0,0 +1,9 @@
1
+ import { uuidv7 } from "uuidv7";
2
+ import { h } from "./utils-DKyKGba7.js";
3
+ import { createEnv } from "@t3-oss/env-core";
4
+ export {
5
+ createEnv,
6
+ h as httpClient,
7
+ uuidv7
8
+ };
9
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
package/dist/vite.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vite.js","sources":["../src/lib/vite-plugin.ts"],"sourcesContent":["import fs from \"node:fs\";\r\nimport path from \"node:path\";\r\nimport type { Resource } from \"i18next\";\r\nimport type { Plugin } from \"vite\";\r\n\r\nexport function viteWczLayout(): Plugin {\r\n const virtualModuleId = \"virtual:wcz-layout\";\r\n const resolvedVirtualModuleId = \"\\0\" + virtualModuleId;\r\n\r\n let localesPath: string;\r\n\r\n return {\r\n name: \"vite:wcz-layout\",\r\n enforce: \"pre\",\r\n configResolved(resolvedConfig) {\r\n localesPath = path.resolve(resolvedConfig.root, \"src/locales\");\r\n },\r\n config() {\r\n return {\r\n optimizeDeps: {\r\n exclude: [virtualModuleId],\r\n },\r\n ssr: {\r\n noExternal: [\"@mui/*\"],\r\n },\r\n };\r\n },\r\n resolveId(id) {\r\n if (id === virtualModuleId) return resolvedVirtualModuleId;\r\n return null;\r\n },\r\n load(id) {\r\n if (id !== resolvedVirtualModuleId) return null;\r\n\r\n if (!fs.existsSync(localesPath)) {\r\n fs.mkdirSync(localesPath, { recursive: true });\r\n }\r\n\r\n const enPath = path.join(localesPath, \"en.json\");\r\n if (!fs.existsSync(enPath)) {\r\n fs.writeFileSync(enPath, JSON.stringify({}));\r\n }\r\n\r\n const files = fs.readdirSync(localesPath);\r\n const jsonFiles = files.filter((f) => f.endsWith(\".json\"));\r\n\r\n const resources: Resource = {};\r\n\r\n for (const file of jsonFiles) {\r\n const lang = path.basename(file, \".json\");\r\n const filePath = path.join(localesPath, file);\r\n\r\n try {\r\n const content = fs.readFileSync(filePath, \"utf-8\");\r\n const translations = JSON.parse(content);\r\n resources[lang] = { translation: translations };\r\n } catch (error) {\r\n console.error(`[vite:layout] Error parsing ${file}:`, error);\r\n resources[lang] = { translation: {} };\r\n }\r\n\r\n this.addWatchFile(filePath);\r\n }\r\n\r\n return `export const resources = ${JSON.stringify(resources)};`;\r\n },\r\n };\r\n}\r\n"],"names":[],"mappings":";;AAKO,SAAS,gBAAwB;AACpC,QAAM,kBAAkB;AACxB,QAAM,0BAA0B,OAAO;AAEvC,MAAI;AAEJ,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,gBAAgB;AAC3B,oBAAc,KAAK,QAAQ,eAAe,MAAM,aAAa;AAAA,IACjE;AAAA,IACA,SAAS;AACL,aAAO;AAAA,QACH,cAAc;AAAA,UACV,SAAS,CAAC,eAAe;AAAA,QAAA;AAAA,QAE7B,KAAK;AAAA,UACD,YAAY,CAAC,QAAQ;AAAA,QAAA;AAAA,MACzB;AAAA,IAER;AAAA,IACA,UAAU,IAAI;AACV,UAAI,OAAO,gBAAiB,QAAO;AACnC,aAAO;AAAA,IACX;AAAA,IACA,KAAK,IAAI;AACL,UAAI,OAAO,wBAAyB,QAAO;AAE3C,UAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAC7B,WAAG,UAAU,aAAa,EAAE,WAAW,MAAM;AAAA,MACjD;AAEA,YAAM,SAAS,KAAK,KAAK,aAAa,SAAS;AAC/C,UAAI,CAAC,GAAG,WAAW,MAAM,GAAG;AACxB,WAAG,cAAc,QAAQ,KAAK,UAAU,CAAA,CAAE,CAAC;AAAA,MAC/C;AAEA,YAAM,QAAQ,GAAG,YAAY,WAAW;AACxC,YAAM,YAAY,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC;AAEzD,YAAM,YAAsB,CAAA;AAE5B,iBAAW,QAAQ,WAAW;AAC1B,cAAM,OAAO,KAAK,SAAS,MAAM,OAAO;AACxC,cAAM,WAAW,KAAK,KAAK,aAAa,IAAI;AAE5C,YAAI;AACA,gBAAM,UAAU,GAAG,aAAa,UAAU,OAAO;AACjD,gBAAM,eAAe,KAAK,MAAM,OAAO;AACvC,oBAAU,IAAI,IAAI,EAAE,aAAa,aAAA;AAAA,QACrC,SAAS,OAAO;AACZ,kBAAQ,MAAM,+BAA+B,IAAI,KAAK,KAAK;AAC3D,oBAAU,IAAI,IAAI,EAAE,aAAa,CAAA,EAAC;AAAA,QACtC;AAEA,aAAK,aAAa,QAAQ;AAAA,MAC9B;AAEA,aAAO,4BAA4B,KAAK,UAAU,SAAS,CAAC;AAAA,IAChE;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"vite.js","sources":["../src/lib/vite-plugin.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { Resource } from \"i18next\";\nimport type { Plugin } from \"vite\";\n\nexport function viteWczLayout(): Plugin {\n const virtualModuleId = \"virtual:wcz-layout\";\n const resolvedVirtualModuleId = \"\\0\" + virtualModuleId;\n\n let localesPath: string;\n\n return {\n name: \"vite:wcz-layout\",\n enforce: \"pre\",\n configResolved(resolvedConfig) {\n localesPath = path.resolve(resolvedConfig.root, \"src/locales\");\n },\n config() {\n return {\n optimizeDeps: {\n exclude: [virtualModuleId],\n },\n ssr: {\n noExternal: [\"@mui/*\"],\n },\n };\n },\n resolveId(id) {\n if (id === virtualModuleId) return resolvedVirtualModuleId;\n return null;\n },\n load(id) {\n if (id !== resolvedVirtualModuleId) return null;\n\n if (!fs.existsSync(localesPath)) {\n fs.mkdirSync(localesPath, { recursive: true });\n }\n\n const enPath = path.join(localesPath, \"en.json\");\n if (!fs.existsSync(enPath)) {\n fs.writeFileSync(enPath, JSON.stringify({}));\n }\n\n const files = fs.readdirSync(localesPath);\n const jsonFiles = files.filter((f) => f.endsWith(\".json\"));\n\n const resources: Resource = {};\n\n for (const file of jsonFiles) {\n const lang = path.basename(file, \".json\");\n const filePath = path.join(localesPath, file);\n\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n const translations = JSON.parse(content);\n resources[lang] = { translation: translations };\n } catch (error) {\n console.error(`[vite:layout] Error parsing ${file}:`, error);\n resources[lang] = { translation: {} };\n }\n\n this.addWatchFile(filePath);\n }\n\n return `export const resources = ${JSON.stringify(resources)};`;\n },\n };\n}\n"],"names":[],"mappings":";;AAKO,SAAS,gBAAwB;AACpC,QAAM,kBAAkB;AACxB,QAAM,0BAA0B,OAAO;AAEvC,MAAI;AAEJ,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,IACT,eAAe,gBAAgB;AAC3B,oBAAc,KAAK,QAAQ,eAAe,MAAM,aAAa;AAAA,IACjE;AAAA,IACA,SAAS;AACL,aAAO;AAAA,QACH,cAAc;AAAA,UACV,SAAS,CAAC,eAAe;AAAA,QAAA;AAAA,QAE7B,KAAK;AAAA,UACD,YAAY,CAAC,QAAQ;AAAA,QAAA;AAAA,MACzB;AAAA,IAER;AAAA,IACA,UAAU,IAAI;AACV,UAAI,OAAO,gBAAiB,QAAO;AACnC,aAAO;AAAA,IACX;AAAA,IACA,KAAK,IAAI;AACL,UAAI,OAAO,wBAAyB,QAAO;AAE3C,UAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAC7B,WAAG,UAAU,aAAa,EAAE,WAAW,MAAM;AAAA,MACjD;AAEA,YAAM,SAAS,KAAK,KAAK,aAAa,SAAS;AAC/C,UAAI,CAAC,GAAG,WAAW,MAAM,GAAG;AACxB,WAAG,cAAc,QAAQ,KAAK,UAAU,CAAA,CAAE,CAAC;AAAA,MAC/C;AAEA,YAAM,QAAQ,GAAG,YAAY,WAAW;AACxC,YAAM,YAAY,MAAM,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC;AAEzD,YAAM,YAAsB,CAAA;AAE5B,iBAAW,QAAQ,WAAW;AAC1B,cAAM,OAAO,KAAK,SAAS,MAAM,OAAO;AACxC,cAAM,WAAW,KAAK,KAAK,aAAa,IAAI;AAE5C,YAAI;AACA,gBAAM,UAAU,GAAG,aAAa,UAAU,OAAO;AACjD,gBAAM,eAAe,KAAK,MAAM,OAAO;AACvC,oBAAU,IAAI,IAAI,EAAE,aAAa,aAAA;AAAA,QACrC,SAAS,OAAO;AACZ,kBAAQ,MAAM,+BAA+B,IAAI,KAAK,KAAK;AAC3D,oBAAU,IAAI,IAAI,EAAE,aAAa,CAAA,EAAC;AAAA,QACtC;AAEA,aAAK,aAAa,QAAQ;AAAA,MAC9B;AAEA,aAAO,4BAA4B,KAAK,UAAU,SAAS,CAAC;AAAA,IAChE;AAAA,EAAA;AAER;"}
package/package.json CHANGED
@@ -1,116 +1,120 @@
1
- {
2
- "name": "wcz-test",
3
- "version": "6.13.1",
4
- "private": false,
5
- "sideEffects": false,
6
- "type": "module",
7
- "main": "dist/index.js",
8
- "module": "dist/index.js",
9
- "types": "dist/index.d.ts",
10
- "exports": {
11
- ".": {
12
- "types": "./dist/index.d.ts",
13
- "import": "./dist/index.js"
14
- },
15
- "./client": {
16
- "types": "./dist/client.d.ts",
17
- "import": "./dist/client.js"
18
- },
19
- "./server": {
20
- "types": "./dist/server.d.ts",
21
- "import": "./dist/server.js"
22
- },
23
- "./components": {
24
- "types": "./dist/components.d.ts",
25
- "import": "./dist/components.js"
26
- },
27
- "./hooks": {
28
- "types": "./dist/hooks.d.ts",
29
- "import": "./dist/hooks.js"
30
- },
31
- "./models": {
32
- "types": "./dist/models.d.ts",
33
- "import": "./dist/models.js"
34
- },
35
- "./queries": {
36
- "types": "./dist/queries.d.ts",
37
- "import": "./dist/queries.js"
38
- },
39
- "./vite": {
40
- "types": "./dist/vite.d.ts",
41
- "import": "./dist/vite.js"
42
- }
43
- },
44
- "files": [
45
- "dist"
46
- ],
47
- "scripts": {
48
- "dev": "vite dev",
49
- "patch": "npm version patch --git-tag-version false",
50
- "minor": "npm version minor --git-tag-version false",
51
- "npm:install": "npm install",
52
- "npm:update": "npm update",
53
- "db:studio": "drizzle-kit studio",
54
- "db:generate": "drizzle-kit generate",
55
- "db:push": "drizzle-kit push",
56
- "auth:generate": "npx @better-auth/cli generate --config src/lib/auth/auth.ts --output src/lib/db/schema/auth.ts",
57
- "build": "vite build --config vite.build.config.ts",
58
- "prepublishOnly": "npm run build"
59
- },
60
- "dependencies": {
61
- "@emotion/react": "^11.14.0",
62
- "@emotion/styled": "^11.14.1",
63
- "@mui/icons-material": "^7.3.5",
64
- "@mui/material": "^7.3.5",
65
- "@mui/x-data-grid-premium": "^8.20.0",
66
- "@mui/x-date-pickers-pro": "^8.19.0",
67
- "@t3-oss/env-core": "^0.13.8",
68
- "@tanstack/query-db-collection": "^1.0.5",
69
- "@tanstack/react-db": "^0.1.53",
70
- "@tanstack/react-form": "^1.26.0",
71
- "@tanstack/react-query": "^5.90.11",
72
- "@tanstack/react-router": "^1.139.12",
73
- "@tanstack/react-router-ssr-query": "^1.139.12",
74
- "@tanstack/react-start": "^1.139.12",
75
- "axios": "^1.13.2",
76
- "better-auth": "1.4.1",
77
- "dayjs": "^1.11.19",
78
- "drizzle-orm": "^0.44.7",
79
- "file-saver": "^2.0.5",
80
- "i18next": "^25.7.0",
81
- "i18next-browser-languagedetector": "^8.2.0",
82
- "pg": "^8.16.3",
83
- "react-dropzone": "^14.3.8",
84
- "react-i18next": "^16.3.5",
85
- "react-intersection-observer": "^10.0.0",
86
- "react-number-format": "^5.4.4",
87
- "tus-js-client": "^4.3.1",
88
- "uuidv7": "^1.1.0",
89
- "zod": "^4.1.13"
90
- },
91
- "devDependencies": {
92
- "@tanstack/eslint-config": "^0.3.3",
93
- "@tanstack/eslint-plugin-query": "^5.91.2",
94
- "@tanstack/eslint-plugin-router": "^1.139.0",
95
- "@types/file-saver": "^2.0.7",
96
- "@types/node": "^22.10.2",
97
- "@types/pg": "^8.15.6",
98
- "@types/react": "^19.2.7",
99
- "@types/react-dom": "^19.2.3",
100
- "@vitejs/plugin-react": "^5.1.1",
101
- "babel-plugin-react-compiler": "^1.0.0",
102
- "drizzle-kit": "^0.31.7",
103
- "nitro": "^3.0.1-alpha.1",
104
- "react-markdown": "^10.1.0",
105
- "typescript": "^5.9.3",
106
- "vite": "^7.2.6",
107
- "vite-plugin-checker": "^0.11.0",
108
- "vite-plugin-dts": "^4.5.4",
109
- "vite-plugin-pwa": "^1.2.0",
110
- "vite-tsconfig-paths": "^5.1.4"
111
- },
112
- "peerDependencies": {
113
- "react": "^19.2.0",
114
- "react-dom": "^19.2.0"
115
- }
116
- }
1
+ {
2
+ "name": "wcz-test",
3
+ "version": "6.20.0",
4
+ "private": false,
5
+ "sideEffects": false,
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "module": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ },
15
+ "./client": {
16
+ "types": "./dist/client.d.ts",
17
+ "import": "./dist/client.js"
18
+ },
19
+ "./server": {
20
+ "types": "./dist/server.d.ts",
21
+ "import": "./dist/server.js"
22
+ },
23
+ "./components": {
24
+ "types": "./dist/components.d.ts",
25
+ "import": "./dist/components.js"
26
+ },
27
+ "./hooks": {
28
+ "types": "./dist/hooks.d.ts",
29
+ "import": "./dist/hooks.js"
30
+ },
31
+ "./models": {
32
+ "types": "./dist/models.d.ts",
33
+ "import": "./dist/models.js"
34
+ },
35
+ "./queries": {
36
+ "types": "./dist/queries.d.ts",
37
+ "import": "./dist/queries.js"
38
+ },
39
+ "./utils": {
40
+ "types": "./dist/utils.d.ts",
41
+ "import": "./dist/utils.js"
42
+ },
43
+ "./vite": {
44
+ "types": "./dist/vite.d.ts",
45
+ "import": "./dist/vite.js"
46
+ }
47
+ },
48
+ "files": [
49
+ "dist"
50
+ ],
51
+ "scripts": {
52
+ "dev": "vite dev",
53
+ "patch": "npm version patch --git-tag-version false",
54
+ "minor": "npm version minor --git-tag-version false",
55
+ "npm:install": "npm install",
56
+ "npm:update": "npm update",
57
+ "db:studio": "drizzle-kit studio",
58
+ "db:generate": "drizzle-kit generate",
59
+ "db:push": "drizzle-kit push",
60
+ "auth:generate": "npx @better-auth/cli generate --config src/lib/auth/auth.ts --output src/lib/db/schema/auth.ts",
61
+ "build": "vite build --config vite.build.config.ts",
62
+ "prepublishOnly": "npm run build"
63
+ },
64
+ "dependencies": {
65
+ "@t3-oss/env-core": "^0.13.8",
66
+ "@types/pg": "^8.15.6",
67
+ "axios": "^1.13.2",
68
+ "better-auth": "1.4.1",
69
+ "dayjs": "^1.11.19",
70
+ "drizzle-orm": "^0.44.7",
71
+ "file-saver": "^2.0.5",
72
+ "i18next": "^25.6.3",
73
+ "i18next-browser-languagedetector": "^8.2.0",
74
+ "pg": "^8.16.3",
75
+ "react-dropzone": "^14.3.8",
76
+ "react-i18next": "^16.3.5",
77
+ "react-intersection-observer": "^10.0.0",
78
+ "react-number-format": "^5.4.4",
79
+ "tus-js-client": "^4.3.1",
80
+ "uuidv7": "^1.1.0",
81
+ "zod": "^4.1.13"
82
+ },
83
+ "devDependencies": {
84
+ "@tanstack/eslint-config": "^0.3.3",
85
+ "@tanstack/eslint-plugin-query": "^5.91.2",
86
+ "@tanstack/eslint-plugin-router": "^1.139.0",
87
+ "@types/file-saver": "^2.0.7",
88
+ "@types/node": "^22.10.2",
89
+ "@types/react": "^19.2.7",
90
+ "@types/react-dom": "^19.2.3",
91
+ "@vitejs/plugin-react": "^5.1.1",
92
+ "babel-plugin-react-compiler": "^1.0.0",
93
+ "drizzle-kit": "^0.31.7",
94
+ "nitro": "^3.0.1-alpha.1",
95
+ "react-markdown": "^10.1.0",
96
+ "typescript": "^5.9.3",
97
+ "vite": "^7.2.6",
98
+ "vite-plugin-checker": "^0.11.0",
99
+ "vite-plugin-dts": "^4.5.4",
100
+ "vite-plugin-pwa": "^1.2.0",
101
+ "vite-tsconfig-paths": "^5.1.4"
102
+ },
103
+ "peerDependencies": {
104
+ "@emotion/react": "11.x",
105
+ "@emotion/styled": "11.x",
106
+ "@mui/icons-material": "7.x",
107
+ "@mui/material": "7.x",
108
+ "@mui/x-data-grid-premium": "8.x",
109
+ "@mui/x-date-pickers-pro": "8.x",
110
+ "@tanstack/query-db-collection": "1.x",
111
+ "@tanstack/react-db": "0.x",
112
+ "@tanstack/react-form": "1.x",
113
+ "@tanstack/react-query": "5.x",
114
+ "@tanstack/react-router": "1.x",
115
+ "@tanstack/react-router-ssr-query": "1.x",
116
+ "@tanstack/react-start": "1.x",
117
+ "react": "19.x",
118
+ "react-dom": "19.x"
119
+ }
120
+ }
@@ -1,39 +0,0 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { useEventCallback, Dialog, DialogTitle, DialogContent, DialogActions, Button } from "@mui/material";
3
- import { createContext, useContext } from "react";
4
- import { useTranslation } from "react-i18next";
5
- const DialogsContext = createContext({});
6
- function AlertDialog({ open, payload, onClose }) {
7
- const { t } = useTranslation();
8
- return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(), disableRestoreFocus: true, children: [
9
- /* @__PURE__ */ jsx(DialogTitle, { children: payload.title ?? t("Layout.Dialog.Alert") }),
10
- /* @__PURE__ */ jsx(DialogContent, { children: payload.message }),
11
- /* @__PURE__ */ jsx(DialogActions, { children: /* @__PURE__ */ jsx(Button, { onClick: () => onClose(), autoFocus: true, children: t("Layout.Dialog.Confirm") }) })
12
- ] });
13
- }
14
- function ConfirmDialog({ open, payload, onClose }) {
15
- const { t } = useTranslation();
16
- return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "xs", fullWidth: true, open, onClose: () => onClose(false), disableRestoreFocus: true, children: [
17
- /* @__PURE__ */ jsx(DialogTitle, { children: payload.title ?? t("Layout.Dialog.Confirm") }),
18
- /* @__PURE__ */ jsx(DialogContent, { children: payload.message }),
19
- /* @__PURE__ */ jsxs(DialogActions, { children: [
20
- /* @__PURE__ */ jsx(Button, { onClick: () => onClose(false), children: payload.cancelText ?? t("Layout.Dialog.Cancel") }),
21
- /* @__PURE__ */ jsx(Button, { onClick: () => onClose(true), autoFocus: true, children: t("Layout.Dialog.Confirm") })
22
- ] })
23
- ] });
24
- }
25
- function useDialogs() {
26
- const { open, close } = useContext(DialogsContext);
27
- const alert = useEventCallback(
28
- (message, { ...options } = {}) => open(AlertDialog, { ...options, message })
29
- );
30
- const confirm = useEventCallback(
31
- (message, { ...options } = {}) => open(ConfirmDialog, { ...options, message })
32
- );
33
- return { alert, confirm, open, close };
34
- }
35
- export {
36
- DialogsContext as D,
37
- useDialogs as u
38
- };
39
- //# sourceMappingURL=DialogsHooks-BlUsVlfv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DialogsHooks-BlUsVlfv.js","sources":["../src/contexts/DialogsContext.ts","../src/hooks/DialogsHooks.tsx"],"sourcesContent":["import { createContext } from \"react\";\r\nimport type { CloseDialog, OpenDialog } from \"../hooks/DialogsHooks\";\r\n\r\nexport interface DialogsContextValue {\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport const DialogsContext = createContext<DialogsContextValue>({} as DialogsContextValue);","import { Button, Dialog, DialogActions, DialogContent, DialogTitle, useEventCallback } from \"@mui/material\";\r\nimport { useContext } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DialogsContext } from \"../contexts/DialogsContext\";\r\nimport type { ReactNode } from \"react\";\r\n\r\nexport interface OpenDialogOptions<TResult> {\r\n onClose?: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport interface AlertOptions {\r\n title?: ReactNode;\r\n}\r\n\r\nexport interface ConfirmOptions {\r\n title?: ReactNode;\r\n cancelText?: ReactNode;\r\n}\r\n\r\nexport interface DialogProps<TPayload = undefined, TResult = void> {\r\n payload: TPayload;\r\n open: boolean;\r\n onClose: (result: TResult) => Promise<void>;\r\n}\r\n\r\nexport type OpenAlertDialog = (message: ReactNode, options?: AlertOptions) => Promise<void>;\r\n\r\nexport type OpenConfirmDialog = (message: ReactNode, options?: ConfirmOptions) => Promise<boolean>;\r\n\r\nexport type DialogComponent<TPayload, TResult> = React.ComponentType<DialogProps<TPayload, TResult>>;\r\n\r\nexport interface OpenDialog {\r\n <TPayload extends undefined, TResult>(Component: DialogComponent<TPayload, TResult>, payload?: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n <TPayload, TResult>(Component: DialogComponent<TPayload, TResult>, payload: TPayload, options?: OpenDialogOptions<TResult>): Promise<TResult>;\r\n}\r\n\r\nexport type CloseDialog = <TResult>(dialog: Promise<TResult>, result: TResult) => Promise<TResult>;\r\n\r\nexport interface AlertDialogPayload extends AlertOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type AlertDialogProps = DialogProps<AlertDialogPayload, void>\r\n\r\nexport function AlertDialog({ open, payload, onClose }: Readonly<AlertDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose()} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Alert\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose()} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport interface ConfirmDialogPayload extends ConfirmOptions {\r\n message: ReactNode;\r\n}\r\n\r\nexport type ConfirmDialogProps = DialogProps<ConfirmDialogPayload, boolean>\r\n\r\nexport function ConfirmDialog({ open, payload, onClose }: Readonly<ConfirmDialogProps>) {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n <Dialog maxWidth=\"xs\" fullWidth open={open} onClose={() => onClose(false)} disableRestoreFocus>\r\n <DialogTitle>{payload.title ?? t(\"Layout.Dialog.Confirm\")}</DialogTitle>\r\n <DialogContent>{payload.message}</DialogContent>\r\n <DialogActions>\r\n <Button onClick={() => onClose(false)}>\r\n {payload.cancelText ?? t(\"Layout.Dialog.Cancel\")}\r\n </Button>\r\n <Button onClick={() => onClose(true)} autoFocus>\r\n {t(\"Layout.Dialog.Confirm\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n}\r\n\r\ninterface DialogHook {\r\n alert: OpenAlertDialog;\r\n confirm: OpenConfirmDialog;\r\n open: OpenDialog;\r\n close: CloseDialog;\r\n}\r\n\r\nexport function useDialogs(): DialogHook {\r\n const { open, close } = useContext(DialogsContext);\r\n\r\n const alert = useEventCallback<OpenAlertDialog>((message, { ...options } = {}) =>\r\n open(AlertDialog, { ...options, message }),\r\n );\r\n\r\n const confirm = useEventCallback<OpenConfirmDialog>((message, { ...options } = {}) =>\r\n open(ConfirmDialog, { ...options, message }),\r\n );\r\n\r\n return { alert, confirm, open, close };\r\n}\r\n"],"names":[],"mappings":";;;;AAQO,MAAM,iBAAiB,cAAmC,CAAA,CAAyB;ACoCnF,SAAS,YAAY,EAAE,MAAM,SAAS,WAAuC;AAChF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,SACI,qBAAC,QAAA,EAAO,UAAS,MAAK,WAAS,MAAC,MAAY,SAAS,MAAM,QAAA,GAAW,qBAAmB,MACrF,UAAA;AAAA,IAAA,oBAAC,aAAA,EAAa,UAAA,QAAQ,SAAS,EAAE,qBAAqB,GAAE;AAAA,IACxD,oBAAC,eAAA,EAAe,UAAA,QAAQ,QAAA,CAAQ;AAAA,IAChC,oBAAC,eAAA,EACG,UAAA,oBAAC,QAAA,EAAO,SAAS,MAAM,QAAA,GAAW,WAAS,MACtC,UAAA,EAAE,uBAAuB,GAC9B,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;AAQO,SAAS,cAAc,EAAE,MAAM,SAAS,WAAyC;AACpF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,SACI,qBAAC,QAAA,EAAO,UAAS,MAAK,WAAS,MAAC,MAAY,SAAS,MAAM,QAAQ,KAAK,GAAG,qBAAmB,MAC1F,UAAA;AAAA,IAAA,oBAAC,aAAA,EAAa,UAAA,QAAQ,SAAS,EAAE,uBAAuB,GAAE;AAAA,IAC1D,oBAAC,eAAA,EAAe,UAAA,QAAQ,QAAA,CAAQ;AAAA,yBAC/B,eAAA,EACG,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAO,SAAS,MAAM,QAAQ,KAAK,GAC/B,UAAA,QAAQ,cAAc,EAAE,sBAAsB,EAAA,CACnD;AAAA,MACA,oBAAC,QAAA,EAAO,SAAS,MAAM,QAAQ,IAAI,GAAG,WAAS,MAC1C,UAAA,EAAE,uBAAuB,EAAA,CAC9B;AAAA,IAAA,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;AASO,SAAS,aAAyB;AACrC,QAAM,EAAE,MAAM,UAAU,WAAW,cAAc;AAEjD,QAAM,QAAQ;AAAA,IAAkC,CAAC,SAAS,EAAE,GAAG,YAAY,CAAA,MACvE,KAAK,aAAa,EAAE,GAAG,SAAS,SAAS;AAAA,EAAA;AAG7C,QAAM,UAAU;AAAA,IAAoC,CAAC,SAAS,EAAE,GAAG,YAAY,CAAA,MAC3E,KAAK,eAAe,EAAE,GAAG,SAAS,SAAS;AAAA,EAAA;AAG/C,SAAO,EAAE,OAAO,SAAS,MAAM,MAAA;AACnC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileHooks-BbjesS5D.js","sources":["../src/queries/FileHooks.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\r\nimport saveAs from \"file-saver\";\r\nimport { useState } from \"react\";\r\nimport { Upload as TusUpload } from \"tus-js-client\";\r\nimport { uuidv7 } from \"uuidv7\";\r\nimport z from \"zod\";\r\nimport type { DetailedError } from \"tus-js-client\";\r\nimport type { DefinedInitialDataOptions, UseMutationOptions } from \"@tanstack/react-query\";\r\nimport type { FileMeta } from \"~/models/file/FileMeta\";\r\nimport { FileMetaSchema } from \"~/models/file/FileMeta\";\r\nimport { httpClient, toKebabCase } from \"~/lib/utils\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nconst QUERY_KEY = \"file\";\r\nconst HOUR = 1000 * 60 * 60;\r\nconst APP_NAME = toKebabCase(clientEnv.VITE_APP_TITLE);\r\n\r\ntype OptionalId = string | undefined | null;\r\n\r\ntype BaseFileMetaArrayQueryOptions = Omit<DefinedInitialDataOptions<Array<FileMeta>>, \"queryKey\" | \"queryFn\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseBlobQueryOptions = Omit<DefinedInitialDataOptions<Blob, Error, string>, \"queryKey\" | \"queryFn\" | \"select\" | \"staleTime\" | \"gcTime\" | \"refetchOnWindowFocus\" | \"initialData\">;\r\ntype BaseFileMetaMutationOptions = Omit<UseMutationOptions<FileMeta, Error, FileMeta>, \"mutationFn\" | \"onSettled\">;\r\ntype BaseBlobMutationOptions = Omit<UseMutationOptions<Blob, Error, FileMeta>, \"mutationFn\" | \"onSuccess\">;\r\ntype BaseStringMutationOptions = Omit<UseMutationOptions<string, Error, string>, \"mutationFn\" | \"onSettled\">;\r\n\r\nexport const GetFileMetasParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n subId: z.uuid(),\r\n});\r\n\r\nexport type GetFileMetasParams = z.infer<typeof GetFileMetasParamsSchema>;\r\n\r\nexport const useGetFileMetas = (params: GetFileMetasParams, options?: BaseFileMetaArrayQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"subId\", params.subId);\r\n\r\n return useQuery<Array<FileMeta>>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"meta\", params.appName ?? APP_NAME, params.subId],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/meta?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n }),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n });\r\n};\r\n\r\nexport const GetFileThumbnailParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema.nullish(),\r\n});\r\n\r\nexport type GetFileThumbnailParams = z.infer<typeof GetFileThumbnailParamsSchema>;\r\n\r\nexport const useGetFileThumbnail = (params: GetFileThumbnailParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta?.id ?? \"\");\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, \"thumbnail\", params.appName ?? APP_NAME, params.meta?.id],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/thumbnail?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n enabled: !!params.meta && options?.enabled !== false,\r\n });\r\n};\r\n\r\nexport const GetFileParamsSchema = z.object({\r\n appName: z.string().min(1).max(255).default(APP_NAME).optional(),\r\n meta: FileMetaSchema.nullish(),\r\n});\r\n\r\nexport type GetFileParams = z.infer<typeof GetFileParamsSchema>;\r\n\r\nexport const useGetFile = (params: GetFileParams, options?: BaseBlobQueryOptions) => {\r\n const queryParams = new URLSearchParams();\r\n queryParams.append(\"appName\", params.appName ?? APP_NAME);\r\n queryParams.append(\"id\", params.meta?.id ?? \"\");\r\n\r\n return useQuery<Blob, Error, string>({\r\n ...options,\r\n queryKey: [QUERY_KEY, params.appName ?? APP_NAME, params.meta?.id],\r\n queryFn: ({ signal }) => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?${queryParams.toString()}`,\r\n method: \"GET\",\r\n signal,\r\n responseType: \"blob\"\r\n }),\r\n select: data => URL.createObjectURL(data),\r\n staleTime: HOUR,\r\n gcTime: HOUR,\r\n refetchOnWindowFocus: false,\r\n enabled: !!params.meta && options?.enabled !== false,\r\n });\r\n};\r\n\r\nexport const useDownloadFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/download?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }),\r\n onSuccess: (data, variables) => saveAs(data, `${variables.fileName}.${variables.fileExtension}`)\r\n });\r\n};\r\n\r\nexport const useOpenFile = (options?: BaseBlobMutationOptions) => {\r\n return useMutation<Blob, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }),\r\n onSuccess: data => { window.open(URL.createObjectURL(data)); }\r\n });\r\n};\r\n\r\nexport const useUpdateFileMeta = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1/meta?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"PUT\",\r\n data: meta\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\nexport const useDeleteFile = (options?: BaseFileMetaMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<FileMeta, Error, FileMeta>({\r\n ...options,\r\n mutationFn: meta => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&id=${meta.id}`,\r\n method: \"DELETE\"\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false }),\r\n });\r\n};\r\n\r\nexport const useDeleteFiles = (options?: BaseStringMutationOptions) => {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation<string, Error, string>({\r\n ...options,\r\n mutationFn: subId => httpClient.request({\r\n url: `/${QUERY_KEY}/v1?appName=${APP_NAME}&subId=${subId}`,\r\n method: \"DELETE\"\r\n }),\r\n onSettled: () => queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\"], exact: false })\r\n });\r\n};\r\n\r\ninterface UseUploadFileProps {\r\n subId: OptionalId;\r\n onSuccess?: (meta: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\">) => void;\r\n onError?: (error: Error | DetailedError) => void;\r\n}\r\n\r\nexport const useUploadFile = ({ subId, onSuccess, onError }: UseUploadFileProps) => {\r\n const [progress, setProgress] = useState<number>(0);\r\n const queryClient = useQueryClient();\r\n\r\n const mutate = async (file: File) => {\r\n if (!subId) throw new Error(\"subId is required for file upload\");\r\n\r\n const metadata: Pick<FileMeta, \"id\" | \"appName\" | \"subId\" | \"fileName\"> = {\r\n id: uuidv7(),\r\n appName: APP_NAME,\r\n subId: subId,\r\n fileName: file.name,\r\n };\r\n\r\n const upload = new TusUpload(file, {\r\n endpoint: `${clientEnv.VITE_API_URL}/${QUERY_KEY}/v1/upload`,\r\n chunkSize: 1_048_576, // 1 MB\r\n metadata: {\r\n id: metadata.id,\r\n appName: metadata.appName,\r\n subId: metadata.subId,\r\n fileName: metadata.fileName,\r\n fileExtension: file.type\r\n },\r\n // headers: { \"Authorization\": `Bearer ${await getToken()}` }, //TODO: implement token retrieval\r\n onError: (error) => {\r\n setProgress(0);\r\n onError?.(error);\r\n },\r\n onProgress: (bytesUploaded, bytesTotal) => {\r\n setProgress((bytesUploaded / bytesTotal) * 100);\r\n },\r\n onSuccess: () => {\r\n setProgress(0);\r\n queryClient.invalidateQueries({ queryKey: [QUERY_KEY, \"meta\", subId], exact: false });\r\n onSuccess?.(metadata);\r\n },\r\n });\r\n\r\n const previousUploads = await upload.findPreviousUploads();\r\n if (previousUploads.length > 0) {\r\n upload.resumeFromPreviousUpload(previousUploads[0]);\r\n }\r\n\r\n upload.start();\r\n };\r\n\r\n return { mutate, progress };\r\n};\r\n"],"names":["z","TusUpload"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouterListItemButton-Cx7rXEfm.js","sources":["../src/components/router/RouterListItemButton.tsx"],"sourcesContent":["import { ListItemButton } from \"@mui/material\";\r\nimport { createLink } from \"@tanstack/react-router\";\r\nimport React from \"react\";\r\nimport type { ListItemButtonProps } from \"@mui/material\";\r\nimport type { LinkComponent } from \"@tanstack/react-router\";\r\n\r\nconst Component = React.forwardRef<HTMLAnchorElement, ListItemButtonProps<\"a\">>(function ButtonComponent(props, reference) {\r\n return <ListItemButton ref={reference} component=\"a\" {...props} />;\r\n});\r\n\r\nconst CreatedComponent = createLink(Component);\r\n\r\nexport const RouterListItemButton: LinkComponent<typeof Component> = (props) => {\r\n return <CreatedComponent {...props} />;\r\n};\r\n"],"names":[],"mappings":";;;;AAMA,MAAM,YAAY,MAAM,WAAwD,SAAS,gBAAgB,OAAO,WAAW;AACvH,6BAAQ,gBAAA,EAAe,KAAK,WAAW,WAAU,KAAK,GAAG,OAAO;AACpE,CAAC;AAED,MAAM,mBAAmB,WAAW,SAAS;AAEtC,MAAM,uBAAwD,CAAC,UAAU;AAC5E,SAAO,oBAAC,kBAAA,EAAkB,GAAG,MAAA,CAAO;AACxC;"}
@@ -1,79 +0,0 @@
1
- import { createTheme, darken, lighten } from "@mui/material";
2
- import { grey } from "@mui/material/colors";
3
- import { enUS as enUS$2, csCZ as csCZ$2 } from "@mui/material/locale";
4
- import { enUS, csCZ } from "@mui/x-data-grid/locales";
5
- import { enUS as enUS$1, csCZ as csCZ$1 } from "@mui/x-date-pickers/locales";
6
- import { useTranslation } from "react-i18next";
7
- import { createAuthClient } from "better-auth/react";
8
- import { c as clientEnv } from "./env-CoxTjaDr.js";
9
- const WISTRON_PRIMARY_COLOR = "#00506E";
10
- const WISTRON_SECONDARY_COLOR = "#64DC00";
11
- const LOCALE_MAP = {
12
- cs: [csCZ, csCZ$1, csCZ$2],
13
- en: [enUS, enUS$1, enUS$2]
14
- };
15
- const useGetTheme = (theme) => {
16
- const { i18n } = useTranslation();
17
- return createTheme(
18
- {
19
- cssVariables: {
20
- colorSchemeSelector: "data-mui-color-scheme"
21
- },
22
- colorSchemes: {
23
- light: {
24
- palette: {
25
- primary: { main: WISTRON_PRIMARY_COLOR },
26
- secondary: { main: WISTRON_SECONDARY_COLOR }
27
- }
28
- },
29
- dark: {
30
- palette: {
31
- primary: { main: lighten(WISTRON_PRIMARY_COLOR, 0.5) },
32
- secondary: { main: darken(WISTRON_SECONDARY_COLOR, 0.5) }
33
- }
34
- },
35
- ...theme?.colorSchemes
36
- },
37
- components: {
38
- MuiCssBaseline: {
39
- styleOverrides: ({ palette }) => {
40
- return {
41
- body: {
42
- "&::-webkit-scrollbar, & *::-webkit-scrollbar": {
43
- width: "0.7em",
44
- height: "0.7em"
45
- },
46
- "&::-webkit-scrollbar-track, & *::-webkit-scrollbar-track": {
47
- backgroundColor: palette.mode === "dark" ? grey[900] : grey[200],
48
- borderRadius: "5px"
49
- },
50
- "&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb": {
51
- backgroundColor: palette.mode === "dark" ? grey[800] : grey[400],
52
- borderRadius: "10px"
53
- },
54
- "&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover": {
55
- backgroundColor: palette.mode === "dark" ? grey[700] : grey[500]
56
- },
57
- "&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner": {
58
- backgroundColor: "transparent"
59
- }
60
- }
61
- };
62
- }
63
- },
64
- ...theme?.components
65
- }
66
- },
67
- ...LOCALE_MAP[i18n.language]
68
- );
69
- };
70
- const authClient = createAuthClient({
71
- baseURL: clientEnv.VITE_API_URL
72
- });
73
- export {
74
- WISTRON_PRIMARY_COLOR as W,
75
- authClient as a,
76
- WISTRON_SECONDARY_COLOR as b,
77
- useGetTheme as u
78
- };
79
- //# sourceMappingURL=auth-client-o9U0_qmf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-client-o9U0_qmf.js","sources":["../src/hooks/ThemeHook.ts","../src/lib/auth/auth-client.ts"],"sourcesContent":["import { createTheme, darken, lighten } from \"@mui/material\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport { csCZ, enUS } from \"@mui/material/locale\";\r\nimport { csCZ as dataGridCsCz, enUS as dataGridEnUs } from \"@mui/x-data-grid/locales\";\r\nimport { csCZ as datePickersCsCz, enUS as datePickersEnUs } from \"@mui/x-date-pickers/locales\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport type { CssVarsThemeOptions } from \"@mui/material\";\r\n\r\nexport const WISTRON_PRIMARY_COLOR = \"#00506E\";\r\nexport const WISTRON_SECONDARY_COLOR = \"#64DC00\";\r\n\r\nconst LOCALE_MAP = {\r\n cs: [dataGridCsCz, datePickersCsCz, csCZ],\r\n en: [dataGridEnUs, datePickersEnUs, enUS],\r\n} as const;\r\n\r\nexport const useGetTheme = (theme?: Pick<CssVarsThemeOptions, \"colorSchemes\" | \"components\">) => {\r\n const { i18n } = useTranslation();\r\n\r\n return createTheme(\r\n {\r\n cssVariables: {\r\n colorSchemeSelector: \"data-mui-color-scheme\"\r\n },\r\n colorSchemes: {\r\n light: {\r\n palette: {\r\n primary: { main: WISTRON_PRIMARY_COLOR },\r\n secondary: { main: WISTRON_SECONDARY_COLOR },\r\n },\r\n },\r\n dark: {\r\n palette: {\r\n primary: { main: lighten(WISTRON_PRIMARY_COLOR, 0.5) },\r\n secondary: { main: darken(WISTRON_SECONDARY_COLOR, 0.5) },\r\n },\r\n },\r\n ...theme?.colorSchemes\r\n },\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: ({ palette }) => {\r\n return {\r\n body: {\r\n \"&::-webkit-scrollbar, & *::-webkit-scrollbar\": {\r\n width: \"0.7em\",\r\n height: \"0.7em\",\r\n },\r\n \"&::-webkit-scrollbar-track, & *::-webkit-scrollbar-track\": {\r\n backgroundColor:\r\n palette.mode === \"dark\" ? grey[900] : grey[200],\r\n borderRadius: \"5px\",\r\n },\r\n \"&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb\": {\r\n backgroundColor:\r\n palette.mode === \"dark\" ? grey[800] : grey[400],\r\n borderRadius: \"10px\",\r\n },\r\n \"&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover\":\r\n {\r\n backgroundColor:\r\n palette.mode === \"dark\" ? grey[700] : grey[500],\r\n },\r\n \"&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n },\r\n };\r\n },\r\n },\r\n ...theme?.components\r\n },\r\n },\r\n ...LOCALE_MAP[i18n.language as keyof typeof LOCALE_MAP]\r\n );\r\n};\r\n","import { createAuthClient } from \"better-auth/react\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nexport const authClient = createAuthClient({\r\n baseURL: clientEnv.VITE_API_URL,\r\n});\r\n"],"names":["dataGridCsCz","datePickersCsCz","csCZ","dataGridEnUs","datePickersEnUs","enUS"],"mappings":";;;;;;;;AAQO,MAAM,wBAAwB;AAC9B,MAAM,0BAA0B;AAEvC,MAAM,aAAa;AAAA,EACf,IAAI,CAACA,MAAcC,QAAiBC,MAAI;AAAA,EACxC,IAAI,CAACC,MAAcC,QAAiBC,MAAI;AAC5C;AAEO,MAAM,cAAc,CAAC,UAAqE;AAC7F,QAAM,EAAE,KAAA,IAAS,eAAA;AAEjB,SAAO;AAAA,IACH;AAAA,MACI,cAAc;AAAA,QACV,qBAAqB;AAAA,MAAA;AAAA,MAEzB,cAAc;AAAA,QACV,OAAO;AAAA,UACH,SAAS;AAAA,YACL,SAAS,EAAE,MAAM,sBAAA;AAAA,YACjB,WAAW,EAAE,MAAM,wBAAA;AAAA,UAAwB;AAAA,QAC/C;AAAA,QAEJ,MAAM;AAAA,UACF,SAAS;AAAA,YACL,SAAS,EAAE,MAAM,QAAQ,uBAAuB,GAAG,EAAA;AAAA,YACnD,WAAW,EAAE,MAAM,OAAO,yBAAyB,GAAG,EAAA;AAAA,UAAE;AAAA,QAC5D;AAAA,QAEJ,GAAG,OAAO;AAAA,MAAA;AAAA,MAEd,YAAY;AAAA,QACR,gBAAgB;AAAA,UACZ,gBAAgB,CAAC,EAAE,cAAc;AAC7B,mBAAO;AAAA,cACH,MAAM;AAAA,gBACF,gDAAgD;AAAA,kBAC5C,OAAO;AAAA,kBACP,QAAQ;AAAA,gBAAA;AAAA,gBAEZ,4DAA4D;AAAA,kBACxD,iBACI,QAAQ,SAAS,SAAS,KAAK,GAAG,IAAI,KAAK,GAAG;AAAA,kBAClD,cAAc;AAAA,gBAAA;AAAA,gBAElB,4DAA4D;AAAA,kBACxD,iBACI,QAAQ,SAAS,SAAS,KAAK,GAAG,IAAI,KAAK,GAAG;AAAA,kBAClD,cAAc;AAAA,gBAAA;AAAA,gBAElB,wEACA;AAAA,kBACI,iBACI,QAAQ,SAAS,SAAS,KAAK,GAAG,IAAI,KAAK,GAAG;AAAA,gBAAA;AAAA,gBAEtD,8DAA8D;AAAA,kBAC1D,iBAAiB;AAAA,gBAAA;AAAA,cACrB;AAAA,YACJ;AAAA,UAER;AAAA,QAAA;AAAA,QAEJ,GAAG,OAAO;AAAA,MAAA;AAAA,IACd;AAAA,IAEJ,GAAG,WAAW,KAAK,QAAmC;AAAA,EAAA;AAE9D;ACxEO,MAAM,aAAa,iBAAiB;AAAA,EACvC,SAAS,UAAU;AACvB,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils-JYv9O0GI.js","sources":["../src/lib/utils.ts"],"sourcesContent":["import axios from \"axios\";\r\nimport type { AnyFieldApi } from \"@tanstack/react-form\";\r\nimport { clientEnv } from \"~/env\";\r\n\r\nexport class Platform {\r\n static get isAndroid() { return /android/i.test(this.userAgent); }\r\n static get isIOS() { return /iPad|iPhone|iPod/.test(this.userAgent); }\r\n static get isWindows() { return /windows/i.test(this.userAgent); }\r\n static get isMacOS() { return /Macintosh|MacIntel|MacPPC|Mac68K/.test(this.userAgent); }\r\n\r\n private static get userAgent() { return typeof navigator === \"undefined\" ? \"\" : navigator.userAgent; }\r\n}\r\n\r\nexport const rootRouteHead = () => ({\r\n meta: [\r\n { charSet: \"utf-8\" },\r\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" },\r\n { title: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:type\", content: \"website\" },\r\n { name: \"og:title\", content: clientEnv.VITE_APP_TITLE },\r\n { name: \"og:image\", content: \"/favicon-32x32.png\" }\r\n ],\r\n links: [\r\n { rel: \"apple-touch-icon\", sizes: \"180x180\", href: \"/apple-touch-icon.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"32x32\", href: \"/favicon-32x32.png\", },\r\n { rel: \"icon\", type: \"image/png\", sizes: \"16x16\", href: \"/favicon-16x16.png\", },\r\n { rel: \"manifest\", href: \"/manifest.webmanifest\" },\r\n { rel: \"icon\", href: \"/favicon.ico\" },\r\n ],\r\n});\r\n\r\nexport const httpClient = axios.create({\r\n baseURL: clientEnv.VITE_API_URL,\r\n});\r\n\r\n/* Internal Utils */\r\nexport type FormOmittedProps =\r\n \"name\" |\r\n \"value\" |\r\n \"onChange\" |\r\n \"onBlur\" |\r\n \"error\" |\r\n \"helperText\" |\r\n \"renderInput\" |\r\n \"type\" |\r\n \"aria-label\";\r\n\r\nexport const getFieldStatus = (field: AnyFieldApi) => {\r\n const { meta } = field.state;\r\n\r\n const isTouched = meta.isTouched;\r\n const hasError = !!meta.errors.length;\r\n const helperText = meta.errors[0]?.message;\r\n\r\n return { isTouched, hasError, helperText };\r\n};\r\n\r\nexport const toKebabCase = (str: string): string => {\r\n return str\r\n .replaceAll(/([a-z])([A-Z])/g, \"$1-$2\")\r\n .replaceAll(/[\\s_]+/g, \"-\")\r\n .replaceAll(/[^a-zA-Z0-9-]/g, \"\")\r\n .toLowerCase()\r\n .replaceAll(/-+/g, \"-\")\r\n .replaceAll(/(^-|-$)/g, \"\");\r\n};\r\n"],"names":[],"mappings":";;AAIO,MAAM,SAAS;AAAA,EAClB,WAAW,YAAY;AAAE,WAAO,WAAW,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EACjE,WAAW,QAAQ;AAAE,WAAO,mBAAmB,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EACrE,WAAW,YAAY;AAAE,WAAO,WAAW,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EACjE,WAAW,UAAU;AAAE,WAAO,mCAAmC,KAAK,KAAK,SAAS;AAAA,EAAG;AAAA,EAEvF,WAAmB,YAAY;AAAE,WAAO,OAAO,cAAc,cAAc,KAAK,UAAU;AAAA,EAAW;AACzG;AAEO,MAAM,gBAAgB,OAAO;AAAA,EAChC,MAAM;AAAA,IACF,EAAE,SAAS,QAAA;AAAA,IACX,EAAE,MAAM,YAAY,SAAS,sCAAA;AAAA,IAC7B,EAAE,OAAO,UAAU,eAAA;AAAA,IACnB,EAAE,MAAM,WAAW,SAAS,UAAA;AAAA,IAC5B,EAAE,MAAM,YAAY,SAAS,UAAU,eAAA;AAAA,IACvC,EAAE,MAAM,YAAY,SAAS,qBAAA;AAAA,EAAqB;AAAA,EAEtD,OAAO;AAAA,IACH,EAAE,KAAK,oBAAoB,OAAO,WAAW,MAAM,wBAAA;AAAA,IACnD,EAAE,KAAK,QAAQ,MAAM,aAAa,OAAO,SAAS,MAAM,qBAAA;AAAA,IACxD,EAAE,KAAK,QAAQ,MAAM,aAAa,OAAO,SAAS,MAAM,qBAAA;AAAA,IACxD,EAAE,KAAK,YAAY,MAAM,wBAAA;AAAA,IACzB,EAAE,KAAK,QAAQ,MAAM,eAAA;AAAA,EAAe;AAE5C;AAEO,MAAM,aAAa,MAAM,OAAO;AAAA,EACnC,SAAS,UAAU;AACvB,CAAC;AAcM,MAAM,iBAAiB,CAAC,UAAuB;AAClD,QAAM,EAAE,SAAS,MAAM;AAEvB,QAAM,YAAY,KAAK;AACvB,QAAM,WAAW,CAAC,CAAC,KAAK,OAAO;AAC/B,QAAM,aAAa,KAAK,OAAO,CAAC,GAAG;AAEnC,SAAO,EAAE,WAAW,UAAU,WAAA;AAClC;AAEO,MAAM,cAAc,CAAC,QAAwB;AAChD,SAAO,IACF,WAAW,mBAAmB,OAAO,EACrC,WAAW,WAAW,GAAG,EACzB,WAAW,kBAAkB,EAAE,EAC/B,cACA,WAAW,OAAO,GAAG,EACrB,WAAW,YAAY,EAAE;AAClC;"}