From 71df5c005977d4ae1a3e5032bc51ad294e7ff330 Mon Sep 17 00:00:00 2001 From: asleepyskye Date: Mon, 6 Jul 2026 13:38:34 -0400 Subject: [PATCH 01/17] WIP: move files for web monorepo --- .gitignore | 8 +- Dockerfile | 28 -- apps/dashboard/package.json | 49 +++ apps/dashboard/postcss.config.js | 1 + {src => apps/dashboard/src}/api/index.ts | 2 +- .../dashboard/src}/api/parseMarkdown.ts | 0 .../dashboard/src}/api/parseTimestamps.ts | 0 {src => apps/dashboard/src}/api/types.ts | 0 {src => apps/dashboard/src}/api/utils.ts | 0 {src => apps/dashboard/src}/app.d.ts | 0 {src => apps/dashboard/src}/app.html | 1 - .../dashboard/src}/components/NavBar.svelte | 0 .../src}/components/SettingsSideBar.svelte | 7 +- .../src}/components/dash/AwaitHtml.svelte | 2 +- .../src}/components/dash/CopyField.svelte | 0 .../src}/components/dash/CopyPermaLink.svelte | 0 .../src/components/dash/IconImage.svelte | 70 +++ .../src}/components/dash/ImageModal.svelte | 0 .../src}/components/dash/ItemCollapse.svelte | 51 ++- .../src}/components/dash/ListControls.svelte | 6 +- .../src}/components/dash/Pagination.svelte | 0 .../components/dash/PrivacyDisplay.svelte | 0 .../components/dash/RandomControls.svelte | 46 +- .../components/dash/edit/DeleteButton.svelte | 0 .../components/dash/edit/DuplicateName.svelte | 0 .../components/dash/edit/EditBoolean.svelte | 0 .../components/dash/edit/EditColor.svelte | 0 .../dash/edit/EditDescription.svelte | 0 .../components/dash/edit/EditField.svelte | 0 .../components/dash/edit/EditImage.svelte | 0 .../components/dash/edit/EditPrivacy.svelte | 0 .../components/dash/edit/EditProxyTag.svelte | 0 .../dash/edit/OpenEditButton.svelte | 0 .../dash/edit/SubmitCreateButton.svelte | 0 .../dash/edit/SubmitEditButton.svelte | 0 .../dash/filters/AddFilterGroup.svelte | 0 .../components/dash/filters/AddSort.svelte | 0 .../filters/Draggable/DragFilterGroups.svelte | 4 +- .../filters/Draggable/DragFilterHeader.svelte | 0 .../dash/filters/Draggable/DragSorts.svelte | 0 .../dash/filters/FilterGroupHeader.svelte | 0 .../dash/filters/FilterGroups.svelte | 14 +- .../dash/filters/FilterHeader.svelte | 0 .../components/dash/filters/FilterInfo.svelte | 0 .../src}/components/dash/filters/Sorts.svelte | 0 .../components/dash/filters/transition.ts | 0 .../components/dash/groups/GroupCard.svelte | 46 +- .../dash/groups/GroupControls.svelte | 10 +- .../components/dash/groups/GroupHome.svelte | 7 +- .../components/dash/groups/GroupInfo.svelte | 0 .../components/dash/groups/GroupLink.svelte | 6 +- .../components/dash/groups/GroupList.svelte | 0 .../dash/groups/GroupMemberList.svelte | 0 .../dash/groups/GroupMembers.svelte | 9 +- .../components/dash/groups/GroupTiny.svelte | 0 .../components/dash/groups/GroupView.svelte | 0 .../components/dash/groups/RandomGroup.svelte | 16 +- .../dash/groups/SimpleGroupControls.svelte | 3 +- .../dash/groups/create/GroupCreate.svelte | 2 +- .../dash/groups/create/GroupInfoCreate.svelte | 0 .../groups/create/GroupMemberCreate.svelte | 0 .../dash/groups/create/GroupViewCreate.svelte | 0 .../dash/groups/edit/GroupInfoEdit.svelte | 2 +- .../dash/groups/edit/GroupMemberEdit.svelte | 2 +- .../dash/groups/edit/GroupViewEdit.svelte | 2 +- .../components/dash/members/MemberCard.svelte | 47 +- .../dash/members/MemberControls.svelte | 12 +- .../dash/members/MemberGroupList.svelte | 0 .../dash/members/MemberGroups.svelte | 0 .../components/dash/members/MemberHome.svelte | 7 +- .../components/dash/members/MemberInfo.svelte | 0 .../components/dash/members/MemberLink.svelte | 6 +- .../components/dash/members/MemberList.svelte | 0 .../components/dash/members/MemberTiny.svelte | 0 .../components/dash/members/MemberView.svelte | 0 .../dash/members/RandomMember.svelte | 16 +- .../dash/members/SimpleMemberControls.svelte | 30 +- .../dash/members/create/MemberCreate.svelte | 2 +- .../members/create/MemberGroupCreate.svelte | 0 .../members/create/MemberInfoCreate.svelte | 0 .../members/create/MemberViewCreate.svelte | 0 .../dash/members/edit/MemberGroupEdit.svelte | 2 +- .../dash/members/edit/MemberInfoEdit.svelte | 2 +- .../dash/members/edit/MemberViewEdit.svelte | 2 +- .../components/dash/overview/Overview.svelte | 0 .../dash/system/SystemControls.svelte | 0 .../components/dash/system/SystemHome.svelte | 0 .../components/dash/system/SystemInfo.svelte | 0 .../components/dash/system/SystemView.svelte | 0 .../dash/system/edit/SystemInfoEdit.svelte | 2 +- .../dash/system/edit/SystemViewEdit.svelte | 2 +- {src => apps/dashboard/src}/hooks.server.ts | 0 apps/dashboard/src/lib/app.scss | 101 +++++ .../src}/lib/common/cookies.svelte.ts | 0 .../dashboard/src}/lib/dash/dash.svelte.ts | 0 {src => apps/dashboard/src}/lib/dash/edit.ts | 0 .../dashboard/src}/lib/dash/filters.svelte.ts | 6 +- .../src}/lib/dash/group/edit.svelte.ts | 0 .../dashboard/src}/lib/dash/group/utils.ts | 0 {src => apps/dashboard/src}/lib/dash/ids.ts | 0 {src => apps/dashboard/src}/lib/dash/load.ts | 0 .../src}/lib/dash/member/edit.svelte.ts | 0 .../dashboard/src}/lib/dash/member/utils.ts | 0 .../src}/lib/dash/settings.svelte.ts | 0 .../dashboard/src}/lib/dash/sorts.svelte.ts | 6 +- .../src}/lib/dash/system/edit.svelte.ts | 0 {src => apps/dashboard/src}/lib/dash/utils.ts | 23 +- .../dashboard/src}/lib/highlightjs.scss | 0 .../src}/lib/highlightjs/github-dark.scss | 0 .../src}/lib/highlightjs/github-light.scss | 0 .../src}/lib/highlightjs/gruvbox-dark.scss | 0 .../src}/lib/highlightjs/gruvbox-light.scss | 0 .../src}/lib/highlightjs/nightowl.scss | 0 {src => apps/dashboard/src}/lib/index.ts | 0 .../dashboard/src}/lib/nprogress.scss | 0 .../dashboard/src}/routes/+error.svelte | 0 .../dashboard/src}/routes/+layout.server.ts | 0 .../dashboard/src}/routes/+layout.svelte | 5 +- .../dashboard/src}/routes/+page.server.ts | 0 .../dashboard/src}/routes/+page.svelte | 4 +- .../dashboard/src}/routes/dash/+error.svelte | 0 .../src}/routes/dash/+page.server.ts | 0 .../dash/[sid]/(dashboard)/+layout.svelte | 1 - .../[sid]/(dashboard)/config/+page.svelte | 147 +++++++ .../[sid]/(dashboard)/random/+page.svelte | 35 ++ .../src}/routes/dash/[sid]/+layout.server.ts | 0 .../src}/routes/dash/[sid]/+page.svelte | 28 +- .../src}/routes/dash/g/+error.svelte | 0 .../routes/dash/g/[gid]/+layout.server.ts | 0 .../src}/routes/dash/g/[gid]/+layout.svelte | 0 .../src}/routes/dash/g/[gid]/+page.svelte | 0 .../src}/routes/dash/m/+error.svelte | 0 .../routes/dash/m/[mid]/+layout.server.ts | 0 .../src}/routes/dash/m/[mid]/+layout.svelte | 0 .../src}/routes/dash/m/[mid]/+page.svelte | 0 .../src}/routes/profile/g/[gid]/+page.ts | 0 .../src}/routes/profile/m/[mid]/+page.ts | 0 .../src}/routes/profile/s/[sid]/+page.ts | 0 .../src}/routes/settings/+layout.svelte | 0 .../src}/routes/settings/+page.server.ts | 0 .../routes/settings/general/+page.server.ts | 0 .../src}/routes/settings/general/+page.svelte | 7 +- .../src}/routes/settings/layout/+page.svelte | 7 +- .../routes/settings/recovery/+page.svelte | 26 +- .../routes/settings/theme/+page.server.ts | 0 .../src}/routes/settings/theme/+page.svelte | 0 .../src}/routes/view/+page.server.ts | 0 .../dashboard/svelte.config.js | 0 apps/dashboard/tailwind.config.js | 7 + tsconfig.json => apps/dashboard/tsconfig.json | 0 .../dashboard/vite.config.ts | 4 +- flake.lock | 24 + flake.nix | 25 ++ package.json | 52 +-- packages/config/package.json | 18 + .../config/postcss.config.js | 0 .../config/tailwind-preset.js | 0 packages/ui/package.json | 30 ++ .../ui/src/assets}/discord_icon.svg | 0 .../ui/src/assets}/favicon.png | Bin .../ui/src/lib}/components/Footer.svelte | 0 .../ui/src/lib}/components/Spinny.svelte | 0 packages/ui/src/lib/index.ts | 2 + .../ui/src/styles/shared.scss | 96 ---- packages/ui/svelte.config.js | 5 + packages/ui/tsconfig.json | 13 + pnpm-lock.yaml | 413 ++++++++++++------ pnpm-workspace.yaml | 3 + src/components/dash/IconImage.svelte | 70 --- .../[sid]/(dashboard)/config/+page.svelte | 147 ------- .../[sid]/(dashboard)/random/+page.svelte | 43 -- 171 files changed, 1099 insertions(+), 773 deletions(-) delete mode 100644 Dockerfile create mode 100644 apps/dashboard/package.json create mode 100644 apps/dashboard/postcss.config.js rename {src => apps/dashboard/src}/api/index.ts (98%) rename {src => apps/dashboard/src}/api/parseMarkdown.ts (100%) rename {src => apps/dashboard/src}/api/parseTimestamps.ts (100%) rename {src => apps/dashboard/src}/api/types.ts (100%) rename {src => apps/dashboard/src}/api/utils.ts (100%) rename {src => apps/dashboard/src}/app.d.ts (100%) rename {src => apps/dashboard/src}/app.html (82%) rename {src => apps/dashboard/src}/components/NavBar.svelte (100%) rename {src => apps/dashboard/src}/components/SettingsSideBar.svelte (86%) rename {src => apps/dashboard/src}/components/dash/AwaitHtml.svelte (83%) rename {src => apps/dashboard/src}/components/dash/CopyField.svelte (100%) rename {src => apps/dashboard/src}/components/dash/CopyPermaLink.svelte (100%) create mode 100644 apps/dashboard/src/components/dash/IconImage.svelte rename {src => apps/dashboard/src}/components/dash/ImageModal.svelte (100%) rename {src => apps/dashboard/src}/components/dash/ItemCollapse.svelte (78%) rename {src => apps/dashboard/src}/components/dash/ListControls.svelte (91%) rename {src => apps/dashboard/src}/components/dash/Pagination.svelte (100%) rename {src => apps/dashboard/src}/components/dash/PrivacyDisplay.svelte (100%) rename {src => apps/dashboard/src}/components/dash/RandomControls.svelte (66%) rename {src => apps/dashboard/src}/components/dash/edit/DeleteButton.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/DuplicateName.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/EditBoolean.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/EditColor.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/EditDescription.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/EditField.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/EditImage.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/EditPrivacy.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/EditProxyTag.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/OpenEditButton.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/SubmitCreateButton.svelte (100%) rename {src => apps/dashboard/src}/components/dash/edit/SubmitEditButton.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/AddFilterGroup.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/AddSort.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/Draggable/DragFilterGroups.svelte (98%) rename {src => apps/dashboard/src}/components/dash/filters/Draggable/DragFilterHeader.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/Draggable/DragSorts.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/FilterGroupHeader.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/FilterGroups.svelte (92%) rename {src => apps/dashboard/src}/components/dash/filters/FilterHeader.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/FilterInfo.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/Sorts.svelte (100%) rename {src => apps/dashboard/src}/components/dash/filters/transition.ts (100%) rename {src => apps/dashboard/src}/components/dash/groups/GroupCard.svelte (61%) rename {src => apps/dashboard/src}/components/dash/groups/GroupControls.svelte (92%) rename {src => apps/dashboard/src}/components/dash/groups/GroupHome.svelte (87%) rename {src => apps/dashboard/src}/components/dash/groups/GroupInfo.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/GroupLink.svelte (92%) rename {src => apps/dashboard/src}/components/dash/groups/GroupList.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/GroupMemberList.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/GroupMembers.svelte (93%) rename {src => apps/dashboard/src}/components/dash/groups/GroupTiny.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/GroupView.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/RandomGroup.svelte (85%) rename {src => apps/dashboard/src}/components/dash/groups/SimpleGroupControls.svelte (99%) rename {src => apps/dashboard/src}/components/dash/groups/create/GroupCreate.svelte (99%) rename {src => apps/dashboard/src}/components/dash/groups/create/GroupInfoCreate.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/create/GroupMemberCreate.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/create/GroupViewCreate.svelte (100%) rename {src => apps/dashboard/src}/components/dash/groups/edit/GroupInfoEdit.svelte (99%) rename {src => apps/dashboard/src}/components/dash/groups/edit/GroupMemberEdit.svelte (99%) rename {src => apps/dashboard/src}/components/dash/groups/edit/GroupViewEdit.svelte (99%) rename {src => apps/dashboard/src}/components/dash/members/MemberCard.svelte (65%) rename {src => apps/dashboard/src}/components/dash/members/MemberControls.svelte (92%) rename {src => apps/dashboard/src}/components/dash/members/MemberGroupList.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/MemberGroups.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/MemberHome.svelte (87%) rename {src => apps/dashboard/src}/components/dash/members/MemberInfo.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/MemberLink.svelte (92%) rename {src => apps/dashboard/src}/components/dash/members/MemberList.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/MemberTiny.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/MemberView.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/RandomMember.svelte (85%) rename {src => apps/dashboard/src}/components/dash/members/SimpleMemberControls.svelte (90%) rename {src => apps/dashboard/src}/components/dash/members/create/MemberCreate.svelte (99%) rename {src => apps/dashboard/src}/components/dash/members/create/MemberGroupCreate.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/create/MemberInfoCreate.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/create/MemberViewCreate.svelte (100%) rename {src => apps/dashboard/src}/components/dash/members/edit/MemberGroupEdit.svelte (99%) rename {src => apps/dashboard/src}/components/dash/members/edit/MemberInfoEdit.svelte (99%) rename {src => apps/dashboard/src}/components/dash/members/edit/MemberViewEdit.svelte (99%) rename {src => apps/dashboard/src}/components/dash/overview/Overview.svelte (100%) rename {src => apps/dashboard/src}/components/dash/system/SystemControls.svelte (100%) rename {src => apps/dashboard/src}/components/dash/system/SystemHome.svelte (100%) rename {src => apps/dashboard/src}/components/dash/system/SystemInfo.svelte (100%) rename {src => apps/dashboard/src}/components/dash/system/SystemView.svelte (100%) rename {src => apps/dashboard/src}/components/dash/system/edit/SystemInfoEdit.svelte (99%) rename {src => apps/dashboard/src}/components/dash/system/edit/SystemViewEdit.svelte (98%) rename {src => apps/dashboard/src}/hooks.server.ts (100%) create mode 100644 apps/dashboard/src/lib/app.scss rename {src => apps/dashboard/src}/lib/common/cookies.svelte.ts (100%) rename {src => apps/dashboard/src}/lib/dash/dash.svelte.ts (100%) rename {src => apps/dashboard/src}/lib/dash/edit.ts (100%) rename {src => apps/dashboard/src}/lib/dash/filters.svelte.ts (99%) rename {src => apps/dashboard/src}/lib/dash/group/edit.svelte.ts (100%) rename {src => apps/dashboard/src}/lib/dash/group/utils.ts (100%) rename {src => apps/dashboard/src}/lib/dash/ids.ts (100%) rename {src => apps/dashboard/src}/lib/dash/load.ts (100%) rename {src => apps/dashboard/src}/lib/dash/member/edit.svelte.ts (100%) rename {src => apps/dashboard/src}/lib/dash/member/utils.ts (100%) rename {src => apps/dashboard/src}/lib/dash/settings.svelte.ts (100%) rename {src => apps/dashboard/src}/lib/dash/sorts.svelte.ts (97%) rename {src => apps/dashboard/src}/lib/dash/system/edit.svelte.ts (100%) rename {src => apps/dashboard/src}/lib/dash/utils.ts (79%) rename {src => apps/dashboard/src}/lib/highlightjs.scss (100%) rename {src => apps/dashboard/src}/lib/highlightjs/github-dark.scss (100%) rename {src => apps/dashboard/src}/lib/highlightjs/github-light.scss (100%) rename {src => apps/dashboard/src}/lib/highlightjs/gruvbox-dark.scss (100%) rename {src => apps/dashboard/src}/lib/highlightjs/gruvbox-light.scss (100%) rename {src => apps/dashboard/src}/lib/highlightjs/nightowl.scss (100%) rename {src => apps/dashboard/src}/lib/index.ts (100%) rename {src => apps/dashboard/src}/lib/nprogress.scss (100%) rename {src => apps/dashboard/src}/routes/+error.svelte (100%) rename {src => apps/dashboard/src}/routes/+layout.server.ts (100%) rename {src => apps/dashboard/src}/routes/+layout.svelte (91%) rename {src => apps/dashboard/src}/routes/+page.server.ts (100%) rename {src => apps/dashboard/src}/routes/+page.svelte (96%) rename {src => apps/dashboard/src}/routes/dash/+error.svelte (100%) rename {src => apps/dashboard/src}/routes/dash/+page.server.ts (100%) rename {src => apps/dashboard/src}/routes/dash/[sid]/(dashboard)/+layout.svelte (99%) create mode 100644 apps/dashboard/src/routes/dash/[sid]/(dashboard)/config/+page.svelte create mode 100644 apps/dashboard/src/routes/dash/[sid]/(dashboard)/random/+page.svelte rename {src => apps/dashboard/src}/routes/dash/[sid]/+layout.server.ts (100%) rename {src => apps/dashboard/src}/routes/dash/[sid]/+page.svelte (81%) rename {src => apps/dashboard/src}/routes/dash/g/+error.svelte (100%) rename {src => apps/dashboard/src}/routes/dash/g/[gid]/+layout.server.ts (100%) rename {src => apps/dashboard/src}/routes/dash/g/[gid]/+layout.svelte (100%) rename {src => apps/dashboard/src}/routes/dash/g/[gid]/+page.svelte (100%) rename {src => apps/dashboard/src}/routes/dash/m/+error.svelte (100%) rename {src => apps/dashboard/src}/routes/dash/m/[mid]/+layout.server.ts (100%) rename {src => apps/dashboard/src}/routes/dash/m/[mid]/+layout.svelte (100%) rename {src => apps/dashboard/src}/routes/dash/m/[mid]/+page.svelte (100%) rename {src => apps/dashboard/src}/routes/profile/g/[gid]/+page.ts (100%) rename {src => apps/dashboard/src}/routes/profile/m/[mid]/+page.ts (100%) rename {src => apps/dashboard/src}/routes/profile/s/[sid]/+page.ts (100%) rename {src => apps/dashboard/src}/routes/settings/+layout.svelte (100%) rename {src => apps/dashboard/src}/routes/settings/+page.server.ts (100%) rename {src => apps/dashboard/src}/routes/settings/general/+page.server.ts (100%) rename {src => apps/dashboard/src}/routes/settings/general/+page.svelte (87%) rename {src => apps/dashboard/src}/routes/settings/layout/+page.svelte (93%) rename {src => apps/dashboard/src}/routes/settings/recovery/+page.svelte (56%) rename {src => apps/dashboard/src}/routes/settings/theme/+page.server.ts (100%) rename {src => apps/dashboard/src}/routes/settings/theme/+page.svelte (100%) rename {src => apps/dashboard/src}/routes/view/+page.server.ts (100%) rename svelte.config.js => apps/dashboard/svelte.config.js (100%) create mode 100644 apps/dashboard/tailwind.config.js rename tsconfig.json => apps/dashboard/tsconfig.json (100%) rename vite.config.ts => apps/dashboard/vite.config.ts (93%) create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 packages/config/package.json rename postcss.config.js => packages/config/postcss.config.js (100%) rename tailwind.config.js => packages/config/tailwind-preset.js (100%) create mode 100644 packages/ui/package.json rename {static => packages/ui/src/assets}/discord_icon.svg (100%) rename {static => packages/ui/src/assets}/favicon.png (100%) rename {src => packages/ui/src/lib}/components/Footer.svelte (100%) rename {src => packages/ui/src/lib}/components/Spinny.svelte (100%) create mode 100644 packages/ui/src/lib/index.ts rename src/lib/app.scss => packages/ui/src/styles/shared.scss (63%) create mode 100644 packages/ui/svelte.config.js create mode 100644 packages/ui/tsconfig.json create mode 100644 pnpm-workspace.yaml delete mode 100644 src/components/dash/IconImage.svelte delete mode 100644 src/routes/dash/[sid]/(dashboard)/config/+page.svelte delete mode 100644 src/routes/dash/[sid]/(dashboard)/random/+page.svelte diff --git a/.gitignore b/.gitignore index 6635cf5..55e0e20 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ .DS_Store node_modules -/build -/.svelte-kit -/package +build +.svelte-kit +package +.direnv +.envrc .env .env.* !.env.example diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 3bd7222..0000000 --- a/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM node:20-alpine AS base -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable -RUN apk add --no-cache git -WORKDIR /app -COPY . . - -FROM base AS deps -RUN pnpm install --prod --frozen-lockfile - -FROM base AS build -ARG base_api_url=https://api.pluralkit.me -ARG repository_url=https://github.com/PluralKit/dashboard -RUN pnpm install --frozen-lockfile -RUN PUBLIC_REPOSITORY_URL=${repository_url} \ - PUBLIC_BASE_API_URL=${base_api_url} \ - pnpm build - -FROM base -LABEL org.opencontainers.image.source = "https://github.com/PluralKit/dashboard" - -COPY --from=deps /app/node_modules /app/node_modules -COPY --from=build /app/build /app/build - -EXPOSE 3000 -ENV NODE_ENV=production -CMD [ "node", "build" ] diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json new file mode 100644 index 0000000..6476a1e --- /dev/null +++ b/apps/dashboard/package.json @@ -0,0 +1,49 @@ +{ + "name": "@pluralkit-web/dashboard", + "version": "0.0.1", + "private": true, + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "dependencies": { + "@pluralkit-web/ui": "workspace:*", + "highlight.js": "^11.10.0" + }, + "devDependencies": { + "@pluralkit-web/config": "workspace:*", + "@sveltejs/adapter-node": "^5.2.0", + "@sveltejs/kit": "^2.20.4", + "@sveltejs/vite-plugin-svelte": "6.2.1", + "@tabler/icons-svelte": "^3.36.0", + "@tailwindcss/postcss": "^4.1.18", + "@types/node": "^25.0.3", + "@types/nprogress": "^0.2.3", + "caniuse-lite": "^1.0.30001760", + "discord-markdown": "github:Draconizations/discord-markdown#f40d97795f2c8913f6e621daae375d6973fefd63", + "js-base64": "^3.7.8", + "magic-string": "^0.30.21", + "moment": "^2.30.1", + "nprogress": "^0.2.0", + "postcss": "^8.5.3", + "sass": "^1.77.8", + "svelecte": "5.3.0", + "svelte": "5.46.0", + "svelte-check": "^4.3.4", + "svelte-dnd-action": "^0.9.68", + "svelte-textarea-autoresize": "^1.0.0", + "tailwindcss": "^3.4.17", + "tslib": "^2.8.1", + "typescript": "^5.9.3", + "vite": "^7.3.0" + }, + "overrides": { + "@rgossiaux/svelte-headlessui": { + "svelte": "$svelte" + } + } +} diff --git a/apps/dashboard/postcss.config.js b/apps/dashboard/postcss.config.js new file mode 100644 index 0000000..ce16a05 --- /dev/null +++ b/apps/dashboard/postcss.config.js @@ -0,0 +1 @@ +export { default } from "@pluralkit-web/config/postcss" diff --git a/src/api/index.ts b/apps/dashboard/src/api/index.ts similarity index 98% rename from src/api/index.ts rename to apps/dashboard/src/api/index.ts index 04b9cf3..f8bed2f 100644 --- a/src/api/index.ts +++ b/apps/dashboard/src/api/index.ts @@ -103,7 +103,7 @@ async function parseError(resp: Response, reject: (reason: any) => void) { if (resp.headers.get("content-type")?.includes("application/json")) { let body = await resp.json() - ;(err.message = body.message), (err.data = body) + ;((err.message = body.message), (err.data = body)) } reject(err) diff --git a/src/api/parseMarkdown.ts b/apps/dashboard/src/api/parseMarkdown.ts similarity index 100% rename from src/api/parseMarkdown.ts rename to apps/dashboard/src/api/parseMarkdown.ts diff --git a/src/api/parseTimestamps.ts b/apps/dashboard/src/api/parseTimestamps.ts similarity index 100% rename from src/api/parseTimestamps.ts rename to apps/dashboard/src/api/parseTimestamps.ts diff --git a/src/api/types.ts b/apps/dashboard/src/api/types.ts similarity index 100% rename from src/api/types.ts rename to apps/dashboard/src/api/types.ts diff --git a/src/api/utils.ts b/apps/dashboard/src/api/utils.ts similarity index 100% rename from src/api/utils.ts rename to apps/dashboard/src/api/utils.ts diff --git a/src/app.d.ts b/apps/dashboard/src/app.d.ts similarity index 100% rename from src/app.d.ts rename to apps/dashboard/src/app.d.ts diff --git a/src/app.html b/apps/dashboard/src/app.html similarity index 82% rename from src/app.html rename to apps/dashboard/src/app.html index 84ffad1..adf8bd8 100644 --- a/src/app.html +++ b/apps/dashboard/src/app.html @@ -2,7 +2,6 @@ - %sveltekit.head% diff --git a/src/components/NavBar.svelte b/apps/dashboard/src/components/NavBar.svelte similarity index 100% rename from src/components/NavBar.svelte rename to apps/dashboard/src/components/NavBar.svelte diff --git a/src/components/SettingsSideBar.svelte b/apps/dashboard/src/components/SettingsSideBar.svelte similarity index 86% rename from src/components/SettingsSideBar.svelte rename to apps/dashboard/src/components/SettingsSideBar.svelte index b022844..c08ad0b 100644 --- a/src/components/SettingsSideBar.svelte +++ b/apps/dashboard/src/components/SettingsSideBar.svelte @@ -1,11 +1,6 @@ diff --git a/src/components/dash/CopyField.svelte b/apps/dashboard/src/components/dash/CopyField.svelte similarity index 100% rename from src/components/dash/CopyField.svelte rename to apps/dashboard/src/components/dash/CopyField.svelte diff --git a/src/components/dash/CopyPermaLink.svelte b/apps/dashboard/src/components/dash/CopyPermaLink.svelte similarity index 100% rename from src/components/dash/CopyPermaLink.svelte rename to apps/dashboard/src/components/dash/CopyPermaLink.svelte diff --git a/apps/dashboard/src/components/dash/IconImage.svelte b/apps/dashboard/src/components/dash/IconImage.svelte new file mode 100644 index 0000000..b466b90 --- /dev/null +++ b/apps/dashboard/src/components/dash/IconImage.svelte @@ -0,0 +1,70 @@ + + +{#if browser} + {#if type === "member"} + {#if (item as Member).webhook_avatar_url || (item as Member).avatar_url} +
+ {`${item.name}'s +
+ {:else} +
+ Default avatar +
+ {/if} + {:else if type === "system"} + {#if (item as System).avatar_url} +
+ {`Avatar +
+ {:else} +
+ Default avatar +
+ {/if} + {:else if type === "group"} + {#if (item as Group).icon} +
+ {`${item.name}'s +
+ {:else} +
+ Default avatar +
+ {/if} + {/if} +{/if} diff --git a/src/components/dash/ImageModal.svelte b/apps/dashboard/src/components/dash/ImageModal.svelte similarity index 100% rename from src/components/dash/ImageModal.svelte rename to apps/dashboard/src/components/dash/ImageModal.svelte diff --git a/src/components/dash/ItemCollapse.svelte b/apps/dashboard/src/components/dash/ItemCollapse.svelte similarity index 78% rename from src/components/dash/ItemCollapse.svelte rename to apps/dashboard/src/components/dash/ItemCollapse.svelte index cfbad84..ce547e9 100644 --- a/src/components/dash/ItemCollapse.svelte +++ b/apps/dashboard/src/components/dash/ItemCollapse.svelte @@ -115,24 +115,47 @@
{#if type === "member"} - {#if openedOnce} - - - {#if tabbedOnce} - - {/if} + {#if openedOnce} + + + {#if tabbedOnce} + {/if} + {/if} {:else if type === "system"} - - + + {:else if type === "group"} - {#if openedOnce} - - - {#if tabbedOnce} - - {/if} + {#if openedOnce} + + + {#if tabbedOnce} + {/if} + {/if} {/if}
diff --git a/src/components/dash/ListControls.svelte b/apps/dashboard/src/components/dash/ListControls.svelte similarity index 91% rename from src/components/dash/ListControls.svelte rename to apps/dashboard/src/components/dash/ListControls.svelte index 83dd2bb..f2e8e52 100644 --- a/src/components/dash/ListControls.svelte +++ b/apps/dashboard/src/components/dash/ListControls.svelte @@ -8,7 +8,7 @@ list = $bindable(), }: { wide: boolean - list: DashList + list: DashList } = $props() @@ -41,7 +41,7 @@ class="input input-sm input-bordered join-item flex-1" id="member-list-view" bind:value={list.settings.viewType} - onchange={() => list.settings.itemsPerPage = list.settings.view.defaultItemsPerPage} + onchange={() => (list.settings.itemsPerPage = list.settings.view.defaultItemsPerPage)} > Tiny - \ No newline at end of file + diff --git a/src/components/dash/Pagination.svelte b/apps/dashboard/src/components/dash/Pagination.svelte similarity index 100% rename from src/components/dash/Pagination.svelte rename to apps/dashboard/src/components/dash/Pagination.svelte diff --git a/src/components/dash/PrivacyDisplay.svelte b/apps/dashboard/src/components/dash/PrivacyDisplay.svelte similarity index 100% rename from src/components/dash/PrivacyDisplay.svelte rename to apps/dashboard/src/components/dash/PrivacyDisplay.svelte diff --git a/src/components/dash/RandomControls.svelte b/apps/dashboard/src/components/dash/RandomControls.svelte similarity index 66% rename from src/components/dash/RandomControls.svelte rename to apps/dashboard/src/components/dash/RandomControls.svelte index 9fec14d..b6e0b4a 100644 --- a/src/components/dash/RandomControls.svelte +++ b/apps/dashboard/src/components/dash/RandomControls.svelte @@ -10,14 +10,14 @@ privacyFilter = $bindable(), list, type, - selection = $bindable() + selection = $bindable(), }: { - wide: boolean, - amount: number, - randomize: () => void, - privacyFilter: string, - list: DashList, - type: string, + wide: boolean + amount: number + randomize: () => void + privacyFilter: string + list: DashList + type: string selection: string[] } = $props() @@ -29,7 +29,7 @@ >
- - -
+ + + {#if dash.privacyMode === PrivacyMode.PRIVATE} -
+
{ - list.filters.filter(g => !g.draggable)[index].filters[i].value = e.detail.map((i: any) => i.value) + list.filters.filter((g) => !g.draggable)[index].filters[i].value = e.detail.map( + (i: any) => i.value + ) list.process(dash.groups.list.raw) list.paginate() }} diff --git a/src/components/dash/filters/Draggable/DragFilterHeader.svelte b/apps/dashboard/src/components/dash/filters/Draggable/DragFilterHeader.svelte similarity index 100% rename from src/components/dash/filters/Draggable/DragFilterHeader.svelte rename to apps/dashboard/src/components/dash/filters/Draggable/DragFilterHeader.svelte diff --git a/src/components/dash/filters/Draggable/DragSorts.svelte b/apps/dashboard/src/components/dash/filters/Draggable/DragSorts.svelte similarity index 100% rename from src/components/dash/filters/Draggable/DragSorts.svelte rename to apps/dashboard/src/components/dash/filters/Draggable/DragSorts.svelte diff --git a/src/components/dash/filters/FilterGroupHeader.svelte b/apps/dashboard/src/components/dash/filters/FilterGroupHeader.svelte similarity index 100% rename from src/components/dash/filters/FilterGroupHeader.svelte rename to apps/dashboard/src/components/dash/filters/FilterGroupHeader.svelte diff --git a/src/components/dash/filters/FilterGroups.svelte b/apps/dashboard/src/components/dash/filters/FilterGroups.svelte similarity index 92% rename from src/components/dash/filters/FilterGroups.svelte rename to apps/dashboard/src/components/dash/filters/FilterGroups.svelte index 9437005..4a62a97 100644 --- a/src/components/dash/filters/FilterGroups.svelte +++ b/apps/dashboard/src/components/dash/filters/FilterGroups.svelte @@ -120,8 +120,18 @@ {/if}
- - + +
{/each} diff --git a/src/components/dash/filters/FilterHeader.svelte b/apps/dashboard/src/components/dash/filters/FilterHeader.svelte similarity index 100% rename from src/components/dash/filters/FilterHeader.svelte rename to apps/dashboard/src/components/dash/filters/FilterHeader.svelte diff --git a/src/components/dash/filters/FilterInfo.svelte b/apps/dashboard/src/components/dash/filters/FilterInfo.svelte similarity index 100% rename from src/components/dash/filters/FilterInfo.svelte rename to apps/dashboard/src/components/dash/filters/FilterInfo.svelte diff --git a/src/components/dash/filters/Sorts.svelte b/apps/dashboard/src/components/dash/filters/Sorts.svelte similarity index 100% rename from src/components/dash/filters/Sorts.svelte rename to apps/dashboard/src/components/dash/filters/Sorts.svelte diff --git a/src/components/dash/filters/transition.ts b/apps/dashboard/src/components/dash/filters/transition.ts similarity index 100% rename from src/components/dash/filters/transition.ts rename to apps/dashboard/src/components/dash/filters/transition.ts diff --git a/src/components/dash/groups/GroupCard.svelte b/apps/dashboard/src/components/dash/groups/GroupCard.svelte similarity index 61% rename from src/components/dash/groups/GroupCard.svelte rename to apps/dashboard/src/components/dash/groups/GroupCard.svelte index 7677666..4f79733 100644 --- a/src/components/dash/groups/GroupCard.svelte +++ b/apps/dashboard/src/components/dash/groups/GroupCard.svelte @@ -1,5 +1,5 @@

General settings

-

These settings affect the entire dashboard. Such as changing where it fetches data from.

+

+ These settings affect the entire dashboard. Such as changing where it fetches data from. +

+ {#if user}