diff --git a/apps/output/views.py b/apps/output/views.py
index f95e4861..f6ee215d 100644
--- a/apps/output/views.py
+++ b/apps/output/views.py
@@ -489,6 +489,11 @@ def xc_player_api(request):
if action == "get_live_streams":
return xc_get_live_streams(request, user, request.GET.get("category_id"))
+ if action == "get_vod_categories":
+ return JsonResponse([], safe=False)
+ if action == "get_vod_streams":
+ return JsonResponse([], safe=False)
+
def xc_get(request):
action = request.GET.get("action")
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index d8da7f76..291a265a 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -12,13 +12,13 @@
"@dnd-kit/modifiers": "^9.0.0",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
- "@mantine/charts": "^7.17.2",
- "@mantine/core": "^7.17.2",
- "@mantine/dates": "^7.17.2",
- "@mantine/dropzone": "^7.17.2",
- "@mantine/form": "^7.17.3",
- "@mantine/hooks": "^7.17.2",
- "@mantine/notifications": "^7.17.2",
+ "@mantine/charts": "~8.0.1",
+ "@mantine/core": "~8.0.1",
+ "@mantine/dates": "~8.0.1",
+ "@mantine/dropzone": "~8.0.1",
+ "@mantine/form": "~8.0.1",
+ "@mantine/hooks": "~8.0.1",
+ "@mantine/notifications": "~8.0.1",
"@tabler/icons-react": "^3.31.0",
"@tanstack/react-table": "^8.21.2",
"allotment": "^1.20.3",
@@ -27,8 +27,7 @@
"dayjs": "^1.11.13",
"formik": "^2.4.6",
"hls.js": "^1.5.20",
- "lucide-react": "^0.479.0",
- "mantine-react-table": "^2.0.0-beta.9",
+ "lucide-react": "^0.511.0",
"mpegts.js": "^1.8.0",
"prettier": "^3.5.3",
"react": "^19.0.0",
@@ -753,72 +752,72 @@
"license": "Apache-2.0"
},
"node_modules/@mantine/charts": {
- "version": "7.17.2",
- "resolved": "https://registry.npmjs.org/@mantine/charts/-/charts-7.17.2.tgz",
- "integrity": "sha512-ckB23pIqRjzysUz2EiWZD9AVyf7t0r7o7zfJbl01nzOezFgYq5RGeRoxvpcsfBC+YoSbB/43rjNcXtYhtA7QzA==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/charts/-/charts-8.0.1.tgz",
+ "integrity": "sha512-yntk4siXpQGSj83tDwftJw6fHTOBS6c/VWinjvTW29ptEdjBCxbKFfyyDc9UGVVuO7ovbdtpfCZBpuN2I7HPCA==",
"license": "MIT",
"peerDependencies": {
- "@mantine/core": "7.17.2",
- "@mantine/hooks": "7.17.2",
+ "@mantine/core": "8.0.1",
+ "@mantine/hooks": "8.0.1",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x",
"recharts": "^2.13.3"
}
},
"node_modules/@mantine/core": {
- "version": "7.17.2",
- "resolved": "https://registry.npmjs.org/@mantine/core/-/core-7.17.2.tgz",
- "integrity": "sha512-R6MYhitJ0JEgrhadd31Nw9FhRaQwDHjXUs5YIlitKH/fTOz9gKSxKjzmNng3bEBQCcbEDOkZj3FRcBgTUh/F0Q==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.0.1.tgz",
+ "integrity": "sha512-4ezaxKjChSPtawamQ3KrJq+x506uTouXlL0Z5fP+t105KnyxMrAJUENhbh2ivD4pq9Zh1BFiD9IWzyu3IXFR8w==",
"license": "MIT",
"dependencies": {
"@floating-ui/react": "^0.26.28",
"clsx": "^2.1.1",
"react-number-format": "^5.4.3",
"react-remove-scroll": "^2.6.2",
- "react-textarea-autosize": "8.5.6",
+ "react-textarea-autosize": "8.5.9",
"type-fest": "^4.27.0"
},
"peerDependencies": {
- "@mantine/hooks": "7.17.2",
+ "@mantine/hooks": "8.0.1",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/dates": {
- "version": "7.17.2",
- "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-7.17.2.tgz",
- "integrity": "sha512-7bB992j8f+uEi280jab0/8i5yfsN/3oSrMDFwatZ+7XSDUwiP0YFib/FVX0pNSSqdFpbXhUmsZEECX71QtHw+Q==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-8.0.1.tgz",
+ "integrity": "sha512-YCmV5jiGE9Ts2uhNS217IA1Hd5kAa8oaEtfnU0bS1sL36zKEf2s6elmzY718XdF8tFil0jJWAj0jiCrA3/udMg==",
"license": "MIT",
"dependencies": {
"clsx": "^2.1.1"
},
"peerDependencies": {
- "@mantine/core": "7.17.2",
- "@mantine/hooks": "7.17.2",
+ "@mantine/core": "8.0.1",
+ "@mantine/hooks": "8.0.1",
"dayjs": ">=1.0.0",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/dropzone": {
- "version": "7.17.2",
- "resolved": "https://registry.npmjs.org/@mantine/dropzone/-/dropzone-7.17.2.tgz",
- "integrity": "sha512-NMQ1SDmnW0sf3GO6p1r/VIcg/xWqlRmfnWCr00/bGRbBEGbyaUwL3LSn+KYBJdY+3/jNGvGa+xflWDvnby5tzw==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/dropzone/-/dropzone-8.0.1.tgz",
+ "integrity": "sha512-8PH5yrtA/ebCIwjs0m4J9qOvEyS/P4XmNlHrw0E389/qq64Ol7+/ZH7Xtiq64IaY8kvsMW1XHaV0c+bdYrijiA==",
"license": "MIT",
"dependencies": {
- "react-dropzone-esm": "15.2.0"
+ "react-dropzone": "14.3.8"
},
"peerDependencies": {
- "@mantine/core": "7.17.2",
- "@mantine/hooks": "7.17.2",
+ "@mantine/core": "8.0.1",
+ "@mantine/hooks": "8.0.1",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/form": {
- "version": "7.17.3",
- "resolved": "https://registry.npmjs.org/@mantine/form/-/form-7.17.3.tgz",
- "integrity": "sha512-ktERldD8f9lrjjz6wIbwMnNbAZq8XEWPx4K5WuFyjXaK0PI8D+gsXIGKMtA5rVrAUFHCWCdbK3yLgtjJNki8ew==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/form/-/form-8.0.1.tgz",
+ "integrity": "sha512-lQ94gn/9p60C+tKEW7psQ1tZHod58Q0bXLbRDadRKMwnqBb2WFoIuaQWPDo7ox+PqyOv28dtflgS+Lm95EbBhg==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -829,34 +828,34 @@
}
},
"node_modules/@mantine/hooks": {
- "version": "7.17.2",
- "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-7.17.2.tgz",
- "integrity": "sha512-tbErVcGZu0E4dSmE6N0k6Tv1y9R3SQmmQgwqorcc+guEgKMdamc36lucZGlJnSGUmGj+WLUgELkEQ0asdfYBDA==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.0.1.tgz",
+ "integrity": "sha512-GvLdM4Ro3QcDyIgqrdXsUZmeeKye2TNL/k3mEr9JhM5KacHQjr83JPp0u9eLobn7kiyBqpLTYmVYAbmjJdCxHw==",
"license": "MIT",
"peerDependencies": {
"react": "^18.x || ^19.x"
}
},
"node_modules/@mantine/notifications": {
- "version": "7.17.2",
- "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-7.17.2.tgz",
- "integrity": "sha512-vg0L8cmihz0ODg4WJ9MAyK06WPt/6g67ksIUFxd4F8RfdJbIMLTsNG9yWoSfuhtXenUg717KaA917IWLjDSaqw==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-8.0.1.tgz",
+ "integrity": "sha512-7TX9OyAmUcok3qffnheS7gTAMKDczETy8XEYDr38Sy/XIoXLjM+3CwO+a/vfd1F9oW2LvkahkHT0Ey+vBOVd0Q==",
"license": "MIT",
"dependencies": {
- "@mantine/store": "7.17.2",
+ "@mantine/store": "8.0.1",
"react-transition-group": "4.4.5"
},
"peerDependencies": {
- "@mantine/core": "7.17.2",
- "@mantine/hooks": "7.17.2",
+ "@mantine/core": "8.0.1",
+ "@mantine/hooks": "8.0.1",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/store": {
- "version": "7.17.2",
- "resolved": "https://registry.npmjs.org/@mantine/store/-/store-7.17.2.tgz",
- "integrity": "sha512-UoMUYQK/z58hMueCkpDIXc49gPgrVO/zcpb0k+B7MFU51EIUiFzHLxLFBmWrgCAM6rzJORqN8JjyCd/PB9j4aw==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@mantine/store/-/store-8.0.1.tgz",
+ "integrity": "sha512-3wfUDeiERXJEI+MGgRAbh+9aY35D9oE4UzquLqZh8cIiH5i5g64Y/eJx3PfjHgO5+Zeu6lbgTgL6k4lg4a2SBQ==",
"license": "MIT",
"peerDependencies": {
"react": "^18.x || ^19.x"
@@ -1016,22 +1015,6 @@
"react": ">= 16"
}
},
- "node_modules/@tanstack/match-sorter-utils": {
- "version": "8.19.4",
- "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz",
- "integrity": "sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==",
- "license": "MIT",
- "dependencies": {
- "remove-accents": "0.5.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/tannerlinsley"
- }
- },
"node_modules/@tanstack/react-table": {
"version": "8.21.3",
"resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.21.3.tgz",
@@ -1052,23 +1035,6 @@
"react-dom": ">=16.8"
}
},
- "node_modules/@tanstack/react-virtual": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.2.tgz",
- "integrity": "sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==",
- "license": "MIT",
- "dependencies": {
- "@tanstack/virtual-core": "3.11.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/tannerlinsley"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
"node_modules/@tanstack/table-core": {
"version": "8.21.3",
"resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz",
@@ -1082,22 +1048,6 @@
"url": "https://github.com/sponsors/tannerlinsley"
}
},
- "node_modules/@tanstack/virtual-core": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz",
- "integrity": "sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/tannerlinsley"
- }
- },
- "node_modules/@types/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
- "license": "MIT"
- },
"node_modules/@types/d3-array": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
@@ -1392,6 +1342,15 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
+ "node_modules/attr-accept": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz",
+ "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/axios": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
@@ -2126,6 +2085,21 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/fdir": {
+ "version": "6.4.4",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
+ "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
"node_modules/file-entry-cache": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
@@ -2139,6 +2113,18 @@
"node": ">=16.0.0"
}
},
+ "node_modules/file-selector": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz",
+ "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.7.0"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/find-root": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
@@ -2243,6 +2229,21 @@
"react": ">=16.8.0"
}
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -2682,9 +2683,9 @@
}
},
"node_modules/lucide-react": {
- "version": "0.479.0",
- "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.479.0.tgz",
- "integrity": "sha512-aBhNnveRhorBOK7uA4gDjgaf+YlHMdMhQ/3cupk6exM10hWlEU+2QtWYOfhXhjAsmdb6LeKR+NZnow4UxRRiTQ==",
+ "version": "0.511.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.511.0.tgz",
+ "integrity": "sha512-VK5a2ydJ7xm8GvBeKLS9mu1pVK6ucef9780JVUjw6bAjJL/QXnd4Y0p7SPeOUMC27YhzNCZvm5d/QX0Tp3rc0w==",
"license": "ISC",
"peerDependencies": {
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -2701,67 +2702,6 @@
"global": "^4.4.0"
}
},
- "node_modules/mantine-react-table": {
- "version": "2.0.0-beta.9",
- "resolved": "https://registry.npmjs.org/mantine-react-table/-/mantine-react-table-2.0.0-beta.9.tgz",
- "integrity": "sha512-ZdfcwebWaPERoDvAuk43VYcBCzamohARVclnbuepT0PHZ0wRcDPMBR+zgaocL+pFy8EXUGwvWTOKNh25ITpjNQ==",
- "license": "MIT",
- "dependencies": {
- "@tanstack/match-sorter-utils": "8.19.4",
- "@tanstack/react-table": "8.20.5",
- "@tanstack/react-virtual": "3.11.2"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/kevinvandy"
- },
- "peerDependencies": {
- "@mantine/core": "^7.9",
- "@mantine/dates": "^7.9",
- "@mantine/hooks": "^7.9",
- "@tabler/icons-react": ">=2.23.0",
- "clsx": ">=2",
- "dayjs": ">=1.11",
- "react": ">=18.0",
- "react-dom": ">=18.0"
- }
- },
- "node_modules/mantine-react-table/node_modules/@tanstack/react-table": {
- "version": "8.20.5",
- "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz",
- "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==",
- "license": "MIT",
- "dependencies": {
- "@tanstack/table-core": "8.20.5"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/tannerlinsley"
- },
- "peerDependencies": {
- "react": ">=16.8",
- "react-dom": ">=16.8"
- }
- },
- "node_modules/mantine-react-table/node_modules/@tanstack/table-core": {
- "version": "8.20.5",
- "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz",
- "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/tannerlinsley"
- }
- },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -3023,6 +2963,19 @@
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
+ "node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/pkcs7": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.4.tgz",
@@ -3181,12 +3134,14 @@
"node": ">=6"
}
},
- "node_modules/react-dropzone-esm": {
- "version": "15.2.0",
- "resolved": "https://registry.npmjs.org/react-dropzone-esm/-/react-dropzone-esm-15.2.0.tgz",
- "integrity": "sha512-pPwR8xWVL+tFLnbAb8KVH5f6Vtl397tck8dINkZ1cPMxHWH+l9dFmIgRWgbh7V7jbjIcuKXCsVrXbhQz68+dVA==",
+ "node_modules/react-dropzone": {
+ "version": "14.3.8",
+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.8.tgz",
+ "integrity": "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==",
"license": "MIT",
"dependencies": {
+ "attr-accept": "^2.2.4",
+ "file-selector": "^2.1.0",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3288,15 +3243,13 @@
}
},
"node_modules/react-router": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.3.0.tgz",
- "integrity": "sha512-466f2W7HIWaNXTKM5nHTqNxLrHTyXybm7R0eBlVSt0k/u55tTCDO194OIx/NrYD4TS5SXKTNekXfT37kMKUjgw==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.0.tgz",
+ "integrity": "sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==",
"license": "MIT",
"dependencies": {
- "@types/cookie": "^0.6.0",
"cookie": "^1.0.1",
- "set-cookie-parser": "^2.6.0",
- "turbo-stream": "2.4.0"
+ "set-cookie-parser": "^2.6.0"
},
"engines": {
"node": ">=20.0.0"
@@ -3312,12 +3265,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.3.0.tgz",
- "integrity": "sha512-z7Q5FTiHGgQfEurX/FBinkOXhWREJIAB2RiU24lvcBa82PxUpwqvs/PAXb9lJyPjTs2jrl6UkLvCZVGJPeNuuQ==",
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.0.tgz",
+ "integrity": "sha512-DYgm6RDEuKdopSyGOWZGtDfSm7Aofb8CCzgkliTjtu/eDuB0gcsv6qdFhhi8HdtmA+KHkt5MfZ5K2PdzjugYsA==",
"license": "MIT",
"dependencies": {
- "react-router": "7.3.0"
+ "react-router": "7.6.0"
},
"engines": {
"node": ">=20.0.0"
@@ -3365,9 +3318,9 @@
}
},
"node_modules/react-textarea-autosize": {
- "version": "8.5.6",
- "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.6.tgz",
- "integrity": "sha512-aT3ioKXMa8f6zHYGebhbdMD2L00tKeRX1zuVuDx9YQK/JLLRSaSxq3ugECEmUB9z2kvk6bFSIoRHLkkUv0RJiw==",
+ "version": "8.5.9",
+ "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz",
+ "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.20.13",
@@ -3495,12 +3448,6 @@
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"license": "MIT"
},
- "node_modules/remove-accents": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz",
- "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==",
- "license": "MIT"
- },
"node_modules/resolve": {
"version": "1.22.10",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
@@ -3691,6 +3638,23 @@
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"license": "MIT"
},
+ "node_modules/tinyglobby": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
+ "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
"node_modules/toposort": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
@@ -3703,12 +3667,6 @@
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
},
- "node_modules/turbo-stream": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz",
- "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==",
- "license": "ISC"
- },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -3780,9 +3738,9 @@
}
},
"node_modules/use-isomorphic-layout-effect": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz",
- "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz",
+ "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==",
"license": "MIT",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -3906,15 +3864,18 @@
}
},
"node_modules/vite": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz",
- "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==",
+ "version": "6.3.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
+ "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
"postcss": "^8.5.3",
- "rollup": "^4.30.1"
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
},
"bin": {
"vite": "bin/vite.js"
@@ -4008,21 +3969,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/yaml": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
- "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
- "dev": true,
- "license": "ISC",
- "optional": true,
- "peer": true,
- "bin": {
- "yaml": "bin.mjs"
- },
- "engines": {
- "node": ">= 14"
- }
- },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 3b287d79..8802db2c 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -14,13 +14,13 @@
"@dnd-kit/modifiers": "^9.0.0",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
- "@mantine/charts": "^7.17.2",
- "@mantine/core": "^7.17.2",
- "@mantine/dates": "^7.17.2",
- "@mantine/dropzone": "^7.17.2",
- "@mantine/form": "^7.17.3",
- "@mantine/hooks": "^7.17.2",
- "@mantine/notifications": "^7.17.2",
+ "@mantine/charts": "~8.0.1",
+ "@mantine/core": "~8.0.1",
+ "@mantine/dates": "~8.0.1",
+ "@mantine/dropzone": "~8.0.1",
+ "@mantine/form": "~8.0.1",
+ "@mantine/hooks": "~8.0.1",
+ "@mantine/notifications": "~8.0.1",
"@tabler/icons-react": "^3.31.0",
"@tanstack/react-table": "^8.21.2",
"allotment": "^1.20.3",
@@ -29,8 +29,7 @@
"dayjs": "^1.11.13",
"formik": "^2.4.6",
"hls.js": "^1.5.20",
- "lucide-react": "^0.479.0",
- "mantine-react-table": "^2.0.0-beta.9",
+ "lucide-react": "^0.511.0",
"mpegts.js": "^1.8.0",
"prettier": "^3.5.3",
"react": "^19.0.0",
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index a3ddfff7..a057be50 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -21,7 +21,6 @@ import { WebsocketProvider } from './WebSocket';
import { Box, AppShell, MantineProvider } from '@mantine/core';
import '@mantine/core/styles.css'; // Ensure Mantine global styles load
import '@mantine/notifications/styles.css';
-import 'mantine-react-table/styles.css';
import '@mantine/dropzone/styles.css';
import '@mantine/dates/styles.css';
import './index.css';
diff --git a/frontend/src/components/ConfirmationDialog.jsx b/frontend/src/components/ConfirmationDialog.jsx
index 3c0f15e7..822b46f1 100644
--- a/frontend/src/components/ConfirmationDialog.jsx
+++ b/frontend/src/components/ConfirmationDialog.jsx
@@ -18,60 +18,60 @@ import useWarningsStore from '../store/warnings';
* @param {string} [props.size='md'] - Size of the modal
*/
const ConfirmationDialog = ({
- opened,
- onClose,
- onConfirm,
- title = 'Confirm Action',
- message = 'Are you sure you want to proceed?',
- confirmLabel = 'Confirm',
- cancelLabel = 'Cancel',
- actionKey,
- onSuppressChange,
- size = 'md', // Add default size parameter - md is a medium width
+ opened,
+ onClose,
+ onConfirm,
+ title = 'Confirm Action',
+ message = 'Are you sure you want to proceed?',
+ confirmLabel = 'Confirm',
+ cancelLabel = 'Cancel',
+ actionKey,
+ onSuppressChange,
+ size = 'md', // Add default size parameter - md is a medium width
}) => {
- const suppressWarning = useWarningsStore((s) => s.suppressWarning);
- const isWarningSuppressed = useWarningsStore((s) => s.isWarningSuppressed);
- const [suppressChecked, setSuppressChecked] = useState(
- isWarningSuppressed(actionKey)
- );
+ const suppressWarning = useWarningsStore((s) => s.suppressWarning);
+ const isWarningSuppressed = useWarningsStore((s) => s.isWarningSuppressed);
+ const [suppressChecked, setSuppressChecked] = useState(
+ isWarningSuppressed(actionKey)
+ );
- const handleToggleSuppress = (e) => {
- setSuppressChecked(e.currentTarget.checked);
- if (onSuppressChange) {
- onSuppressChange(e.currentTarget.checked);
- }
- };
+ const handleToggleSuppress = (e) => {
+ setSuppressChecked(e.currentTarget.checked);
+ if (onSuppressChange) {
+ onSuppressChange(e.currentTarget.checked);
+ }
+ };
- const handleConfirm = () => {
- if (suppressChecked) {
- suppressWarning(actionKey);
- }
- onConfirm();
- };
+ const handleConfirm = () => {
+ if (suppressChecked) {
+ suppressWarning(actionKey);
+ }
+ onConfirm();
+ };
- return (
-
- {message}
+ return (
+
+ {message}
- {actionKey && (
-
- )}
+ {actionKey && (
+
+ )}
-
-
-
-
-
- );
+
+
+
+
+
+ );
};
export default ConfirmationDialog;
diff --git a/frontend/src/components/forms/Channel.jsx b/frontend/src/components/forms/Channel.jsx
index 17abbc8d..452db052 100644
--- a/frontend/src/components/forms/Channel.jsx
+++ b/frontend/src/components/forms/Channel.jsx
@@ -5,7 +5,6 @@ import useChannelsStore from '../../store/channels';
import API from '../../api';
import useStreamProfilesStore from '../../store/streamProfiles';
import useStreamsStore from '../../store/streams';
-import { MantineReactTable, useMantineReactTable } from 'mantine-react-table';
import ChannelGroupForm from './ChannelGroup';
import usePlaylistsStore from '../../store/playlists';
import logo from '../../images/logo.png';
@@ -224,134 +223,6 @@ const ChannelForm = ({ channel = null, isOpen, onClose }) => {
);
};
- // const activeStreamsTable = useMantineReactTable({
- // data: channelStreams,
- // columns: useMemo(
- // () => [
- // {
- // header: 'Name',
- // accessorKey: 'name',
- // Cell: ({ cell }) => (
- //
- // {cell.getValue()}
- //
- // ),
- // },
- // {
- // header: 'M3U',
- // accessorKey: 'group_name',
- // Cell: ({ cell }) => (
- //
- // {cell.getValue()}
- //
- // ),
- // },
- // ],
- // []
- // ),
- // enableSorting: false,
- // enableBottomToolbar: false,
- // enableTopToolbar: false,
- // columnFilterDisplayMode: 'popover',
- // enablePagination: false,
- // enableRowVirtualization: true,
- // enableRowOrdering: true,
- // rowVirtualizerOptions: { overscan: 5 }, //optionally customize the row virtualizer
- // initialState: {
- // density: 'compact',
- // },
- // enableRowActions: true,
- // positionActionsColumn: 'last',
- // renderRowActions: ({ row }) => (
- // <>
- // removeStream(row.original)}
- // >
- // {/* Small icon size */}
- //
- // >
- // ),
- // mantineTableContainerProps: {
- // style: {
- // height: '200px',
- // },
- // },
- // mantineRowDragHandleProps: ({ table }) => ({
- // onDragEnd: () => {
- // const { draggingRow, hoveredRow } = table.getState();
-
- // if (hoveredRow && draggingRow) {
- // channelStreams.splice(
- // hoveredRow.index,
- // 0,
- // channelStreams.splice(draggingRow.index, 1)[0]
- // );
-
- // setChannelStreams([...channelStreams]);
- // }
- // },
- // }),
- // });
-
- // const availableStreamsTable = useMantineReactTable({
- // data: streams,
- // columns: useMemo(
- // () => [
- // {
- // header: 'Name',
- // accessorKey: 'name',
- // },
- // {
- // header: 'M3U',
- // accessorFn: (row) =>
- // playlists.find((playlist) => playlist.id === row.m3u_account)?.name,
- // },
- // ],
- // []
- // ),
- // enableBottomToolbar: false,
- // enableTopToolbar: false,
- // columnFilterDisplayMode: 'popover',
- // enablePagination: false,
- // enableRowVirtualization: true,
- // rowVirtualizerOptions: { overscan: 5 }, //optionally customize the row virtualizer
- // initialState: {
- // density: 'compact',
- // },
- // enableRowActions: true,
- // renderRowActions: ({ row }) => (
- // <>
- // addStream(row.original)}
- // >
- // {/* Small icon size */}
- //
- // >
- // ),
- // positionActionsColumn: 'last',
- // mantineTableContainerProps: {
- // style: {
- // height: '200px',
- // },
- // },
- // });
-
// Update the handler for when channel group modal is closed
const handleChannelGroupModalClose = (newGroup) => {
setChannelGroupModalOpen(false);
@@ -839,18 +710,6 @@ const ChannelForm = ({ channel = null, isOpen, onClose }) => {
- {/*
-
- Active Streams
-
-
-
-
- Available Streams
-
-
- */}
-