From cd2cdbe25406b1cd9e1765db9c0128407077de99 Mon Sep 17 00:00:00 2001 From: melvinchia3636 Date: Fri, 29 May 2026 21:05:25 +0800 Subject: [PATCH] feat: refactor client codebase in progress --- .gitignore | 2 +- apps/lifeforge--achievements | 1 + apps/package.json | 9 + bun.lock | 11 - client/index.html | 14 +- client/package.json | 5 - client/src/App.tsx | 13 +- client/src/bootstrap.tsx | 5 + .../components/AvatarColumn.tsx | 42 +++- .../components/OrdinaryColumn.tsx | 10 +- .../components/PasswordColumn.tsx | 4 +- .../components/TwoFAColumn.tsx | 10 +- client/src/core/accountSettings/index.tsx | 6 +- .../modals/DisableTwoFAModal.tsx | 42 +--- .../components/OTPConfirmScreen.tsx | 14 +- .../components/QRCodeDisplay.tsx | 43 ++-- .../components/TwoFAEnableProcedure.tsx | 13 +- .../modals/EnableTwoFAModal/index.tsx | 8 +- .../accountSettings/modals/ModifyModal.tsx | 2 +- .../components/ConfirmScreen.tsx | 49 +++-- .../components/ErrorScreen.tsx | 39 +++- .../components/SuccessScreen.tsx | 46 +++- .../hooks/useQRLoginApproval.ts | 2 +- .../modals/QRLoginScannerModal/index.tsx | 6 +- .../src/core/apiKeys/components/EntryItem.tsx | 55 ++--- client/src/core/apiKeys/index.tsx | 16 +- .../core/apiKeys/modals/ModifyAPIKeyModal.tsx | 8 +- .../modals/ModulesRequiredListModal.tsx | 61 ++++-- .../src/core/auth/components/AuthFooter.tsx | 19 +- client/src/core/auth/components/AuthForm.tsx | 12 +- .../src/core/auth/components/AuthHeader.tsx | 6 +- .../core/auth/components/AuthSideImage.tsx | 2 +- .../components/SigninWithProviderButton.tsx | 2 +- .../components/AuthSignInButtons/index.tsx | 24 +- .../auth/components/OrAuthWithDivider.tsx | 29 +++ client/src/core/auth/index.tsx | 2 +- .../QRLoginModal/components/QRByStatus.tsx | 62 ++++++ .../QRLoginModal/components/QRContent.tsx | 132 +++++------ .../QRLoginModal/hooks/useQRLoginSession.ts | 14 +- .../core/auth/modals/QRLoginModal/index.tsx | 6 +- .../TwoFAModal/components/ResendOTPButton.tsx | 2 +- .../TwoFAModal/components/UsingAuthApp.tsx | 22 +- .../TwoFAModal/components/UsingEmail.tsx | 111 +++++----- .../src/core/auth/modals/TwoFAModal/index.tsx | 16 +- client/src/core/auth/pages/LoginPage.tsx | 13 +- .../src/core/auth/pages/UserCreationPage.tsx | 52 +++-- .../core/backups/components/BackupItem.tsx | 67 +++--- .../backups/components/CreateBackupModal.tsx | 2 +- client/src/core/backups/index.tsx | 55 ++--- .../dashboard/components/DashboardGrid.tsx | 37 ++-- client/src/core/dashboard/index.tsx | 5 +- .../components/ComponentItem.tsx | 5 +- client/src/core/dashboard/widgets/Quotes.tsx | 3 +- client/src/core/documentation/index.tsx | 8 - .../Categories/components/CategoryItem.tsx | 75 +++++-- .../components/ModifyCategoryModal.tsx | 175 ++++++++------- .../moduleManager/pages/Categories/index.tsx | 37 ++-- .../pages/Modules/components/ModuleItem.tsx | 112 ++++++---- .../moduleManager/pages/Modules/index.tsx | 36 +-- .../components/BgImageSelector/index.tsx | 4 +- .../components/AdjustmentColumn.tsx | 2 +- .../components/BgTempSelector/index.tsx | 90 +++++--- .../components/BorderRadiusSelector/index.tsx | 6 +- .../components/CustomFontUploadModal.tsx | 3 +- .../components/FontListItem.tsx | 2 +- .../tabs/CustomFontSelector.tsx | 4 +- .../tabs/GoogleFontSelector.tsx | 10 +- .../components/FontFamilySelector/index.tsx | 24 +- .../utils/detectFontMetadata.ts | 2 +- .../components/FontScaleSelector.tsx | 37 ++-- .../components/LanguageSelector.tsx | 44 ++-- .../components/DefaultThemeColorSelector.tsx | 68 ++++-- .../components/ThemeColorSelector/index.tsx | 34 +-- .../components/ThemeSelector.tsx | 94 ++++---- client/src/core/personalization/index.tsx | 6 +- .../federation/loaders/loadModuleConfig.ts | 2 +- .../providers/CoreFederationProvider.tsx | 1 + client/src/federation/utils/sortRoutes.ts | 2 +- client/src/forgeAPI.tsx | 4 +- client/src/i18n.ts | 10 +- client/src/index.css | 24 +- client/src/index.tsx | 7 +- .../features/APIKeyStatusProvider.tsx | 38 +++- .../features/UserPersonalizationProvider.tsx | 2 +- client/src/providers/index.tsx | 2 +- client/src/routes/components/RootLayout.tsx | 19 +- .../src/routes/components/Sidebar/Sidebar.tsx | 75 ++++--- .../components/Sidebar/SidebarBottomBar.tsx | 133 ++++++----- .../components/Sidebar/SidebarEventBanner.tsx | 63 +++--- .../components/Sidebar/SidebarHeader.tsx | 60 ++--- .../components/Sidebar/SidebarItems.tsx | 106 ++++----- client/src/routes/hooks/useAppRouter.ts | 14 +- .../routes/providers/AppRoutesProvider.tsx | 4 +- client/tsconfig.json | 33 ++- client/vite.config.ts | 178 ++++++++------- docs/src/main.tsx | 2 +- .../src/components/auth/OTPInputBox/index.tsx | 4 +- .../auth/sso/UnauthorizedScreen/index.tsx | 2 +- .../data-display/OptionsColumn/index.tsx | 6 +- .../components/data-display/TagChip/index.tsx | 15 +- .../data-display/ViewModeSelector/index.tsx | 4 +- .../VirtualGrid/VirtualGrid.stories.tsx | 5 +- .../Widget/components/WidgetIcon.tsx | 4 +- .../components/data-display/Widget/index.tsx | 2 +- .../feedback/LoadingScreen/index.tsx | 9 +- .../ui/src/components/inputs/Button/index.tsx | 2 +- .../src/components/inputs/Checkbox/index.tsx | 2 +- .../modals/FlatUIColorsModal/index.tsx | 2 +- .../modals/ModandiColorPaletteModal/index.tsx | 8 +- .../components/ColorItem.tsx | 2 +- .../components/inputs/ColorInput/index.tsx | 2 +- .../components/ComboboxOption.tsx | 4 +- .../components/ComboboxOptions.tsx | 2 +- .../DateInput/components/CalendarHeader.tsx | 7 +- .../src/components/inputs/DateInput/index.tsx | 20 +- .../ui/src/components/inputs/FAB/index.tsx | 10 +- .../components/AIImageGenerator.tsx | 5 +- .../FilePickerModal/components/ImageURL.tsx | 2 +- .../LocalUpload/components/DnDContainer.tsx | 10 +- .../components/PreviewContainer.tsx | 8 +- .../components/ColorFilter.tsx | 2 +- .../src/components/inputs/FileInput/index.tsx | 38 ++-- .../components/ChipSelector.tsx | 2 +- .../IconPickerModal/components/IconEntry.tsx | 2 +- .../IconInput/IconPickerModal/index.tsx | 8 +- .../IconSetList/components/CategoryEntry.tsx | 2 +- .../inputs/Listbox/Listbox.stories.tsx | 31 ++- .../src/components/inputs/Listbox/index.tsx | 4 +- .../components/ListboxNullOption.tsx | 10 +- .../ListboxInput/components/ListboxOption.tsx | 4 +- .../components/ListboxOptions.tsx | 2 +- .../components/inputs/QRCodeScanner/index.tsx | 2 +- .../components/SelectableFormWrapper.tsx | 2 +- .../SearchInput/SearchInput.stories.tsx | 2 +- .../components/inputs/SearchInput/index.tsx | 16 +- .../SliderInput/components/SliderTicks.tsx | 2 +- .../ui/src/components/inputs/Switch/index.tsx | 5 +- .../components/inputs/TextAreaInput/index.tsx | 3 +- .../shared/components/InputActionButton.tsx | 2 +- .../components/layout/Card/Card.stories.tsx | 2 +- .../ui/src/components/layout/Card/index.tsx | 2 +- .../components/layout/ModuleHeader/index.tsx | 7 +- .../ModuleWrapper/ModuleWrapper.stories.tsx | 4 +- .../src/components/navigation/Tabs/index.tsx | 2 +- .../components/SidebarActionButton.tsx | 2 +- .../components/SidebarCancelButton.tsx | 2 +- .../components/SidebarItemIcon.tsx | 2 +- .../components/SidebarItemSubsection.tsx | 2 +- .../SidebarItemSubsectionExpandIcon.tsx | 2 +- .../components/SidebarItemWrapper.tsx | 2 +- .../components/SidebarSubsectionItemLink.tsx | 2 +- .../SidebarSubsectionItemWithOnClick.tsx | 2 +- .../navigation/sidebar/SidebarItem/index.tsx | 2 +- .../sidebar/SidebarWrapper/index.tsx | 2 +- .../ContextMenu/ContextMenu.stories.tsx | 4 +- .../components/ContextMenuGroup.tsx | 2 +- .../components/overlays/ContextMenu/index.tsx | 2 +- .../core/components/ModalHeader.stories.tsx | 2 +- .../modals/core/components/ModalHeader.tsx | 11 +- .../modals/core/components/ModalWrapper.tsx | 2 +- .../features/ConfirmationModal/index.tsx | 15 +- .../primitives/Bordered/Bordered.css.ts | 10 +- .../primitives/Bordered/Bordered.stories.tsx | 39 ++-- .../components/primitives/Bordered/index.tsx | 19 +- .../src/components/primitives/Box/Box.css.ts | 10 +- .../components/primitives/Box/Box.stories.tsx | 59 +++-- .../src/components/primitives/Box/index.tsx | 20 +- .../components/primitives/Flex/Flex.css.ts | 7 +- .../primitives/Flex/Flex.stories.tsx | 38 ++-- .../src/components/primitives/Flex/index.tsx | 13 +- .../components/primitives/Grid/Grid.css.ts | 7 +- .../primitives/Grid/Grid.stories.tsx | 30 +-- .../src/components/primitives/Grid/index.tsx | 17 +- .../src/components/primitives/Icon/index.tsx | 25 ++- .../components/primitives/Ring/Ring.css.ts | 63 ++++++ .../primitives/Ring/Ring.stories.tsx | 206 ++++++++++++++++++ .../src/components/primitives/Ring/index.tsx | 176 +++++++++++++++ .../primitives/Slot/Slot.stories.tsx | 6 +- .../primitives/Stack/Stack.stories.tsx | 65 ++++++ .../src/components/primitives/Stack/index.tsx | 9 + .../primitives/Text/Text.stories.tsx | 11 +- .../src/components/primitives/Text/index.tsx | 1 + .../Transition/Transition.stories.tsx | 20 +- .../primitives/WithDivide/WithDivide.css.ts | 22 +- .../WithDivide/WithDivide.stories.tsx | 25 ++- .../primitives/WithDivide/index.tsx | 50 +---- .../ui/src/components/primitives/index.ts | 4 + .../components/utilities/Scrollbar/index.tsx | 2 +- .../components/utilities/Tooltip/index.tsx | 4 +- packages/ui/src/index.ts | 5 +- .../ui}/src/providers/BackgroundProvider.tsx | 37 ++-- packages/ui/src/providers/index.ts | 2 + packages/ui/src/system/props-resolver.ts | 21 -- packages/ui/src/system/responsive/constant.ts | 8 + .../ui/src/system/responsive/index.css.ts | 4 +- packages/ui/src/system/tokens/index.ts | 6 +- packages/ui/src/system/tokens/props/index.ts | 7 + .../tokens/{ => props}/layout-props.css.ts | 6 +- .../system/tokens/props/rounded-props.css.ts | 28 +++ .../tokens/{ => props}/spacing-props.css.ts | 2 +- .../tokens/{ => props}/theme-props.css.ts | 2 +- .../tokens/resolvers/common-props-resolver.ts | 22 +- .../ui/src/system/tokens/resolvers/index.ts | 2 + .../resolvers/layout-props-resolvers.ts | 2 +- .../resolvers/rounded-props-resolvers.ts | 21 ++ .../resolvers/spacing-props-resolvers.ts | 2 +- packages/ui/src/system/vars.css.ts | 2 + .../routes/functions/controllerLogic.ts | 1 + .../functions/routes/utils/parsePayload.ts | 3 +- .../routes/constants/corsAllowedOrigins.ts | 3 +- server/src/core/routes/core-routes.types.ts | 3 + server/src/core/routes/core.routes.ts | 4 +- server/src/lib/apiKeys/routes/entries.ts | 7 +- server/src/lib/modules/routes/categories.ts | 2 +- server/src/lib/modules/routes/modules.ts | 2 +- server/src/lib/user/routes/twoFA.ts | 66 +++--- shared/src/api/core/forgeEndpoint.ts | 2 + shared/src/index.ts | 2 +- shared/src/providers/ModalStoreProvider.tsx | 77 ------- .../with-crud/client/utils/forgeAPI.ts | 2 +- 220 files changed, 2715 insertions(+), 1835 deletions(-) create mode 160000 apps/lifeforge--achievements create mode 100644 apps/package.json create mode 100644 client/src/bootstrap.tsx create mode 100644 client/src/core/auth/components/OrAuthWithDivider.tsx create mode 100644 client/src/core/auth/modals/QRLoginModal/components/QRByStatus.tsx create mode 100644 packages/ui/src/components/primitives/Ring/Ring.css.ts create mode 100644 packages/ui/src/components/primitives/Ring/Ring.stories.tsx create mode 100644 packages/ui/src/components/primitives/Ring/index.tsx create mode 100644 packages/ui/src/components/primitives/Stack/Stack.stories.tsx create mode 100644 packages/ui/src/components/primitives/Stack/index.tsx rename {shared => packages/ui}/src/providers/BackgroundProvider.tsx (55%) create mode 100644 packages/ui/src/system/tokens/props/index.ts rename packages/ui/src/system/tokens/{ => props}/layout-props.css.ts (89%) create mode 100644 packages/ui/src/system/tokens/props/rounded-props.css.ts rename packages/ui/src/system/tokens/{ => props}/spacing-props.css.ts (98%) rename packages/ui/src/system/tokens/{ => props}/theme-props.css.ts (94%) create mode 100644 packages/ui/src/system/tokens/resolvers/rounded-props-resolvers.ts create mode 100644 server/src/core/routes/core-routes.types.ts delete mode 100644 shared/src/providers/ModalStoreProvider.tsx diff --git a/.gitignore b/.gitignore index 79ce260dc..7a3c37870 100644 --- a/.gitignore +++ b/.gitignore @@ -55,7 +55,7 @@ env/* keys # user-generated files -apps +# apps locales/* !apps/**/locales/* !locales/lifeforge--lang-en \ No newline at end of file diff --git a/apps/lifeforge--achievements b/apps/lifeforge--achievements new file mode 160000 index 000000000..20fca918f --- /dev/null +++ b/apps/lifeforge--achievements @@ -0,0 +1 @@ +Subproject commit 20fca918f44c41f77edafa277fbae5acdaef9ba1 diff --git a/apps/package.json b/apps/package.json new file mode 100644 index 000000000..50213a2a0 --- /dev/null +++ b/apps/package.json @@ -0,0 +1,9 @@ +{ + "name": "@lifeforge/apps", + "private": true, + "description": "LifeForge modules", + "dependencies": { + "@lifeforge/TedMeadow--lang-ru": "workspace:*", + "@lifeforge/lifeforge--achievements": "workspace:*" + } +} diff --git a/bun.lock b/bun.lock index 9c23aefae..7641f5198 100644 --- a/bun.lock +++ b/bun.lock @@ -74,9 +74,6 @@ "@iconify/react": "^6.0.2", "@lifeforge/shared": "workspace:*", "@lifeforge/ui": "workspace:*", - "@tailwindcss/postcss": "^4.1.5", - "@tailwindcss/typography": "^0.5.19", - "@tailwindcss/vite": "^4.1.5", "@tanstack/react-query": "^5.90.11", "@types/node": "^24.7.2", "@types/react-virtualized": "^9.22.3", @@ -990,10 +987,6 @@ "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA=="], - "@tailwindcss/postcss": ["@tailwindcss/postcss@4.3.0", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.3.0", "@tailwindcss/oxide": "4.3.0", "postcss": "^8.5.10", "tailwindcss": "4.3.0" } }, "sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w=="], - - "@tailwindcss/typography": ["@tailwindcss/typography@0.5.19", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg=="], - "@tailwindcss/vite": ["@tailwindcss/vite@4.3.0", "", { "dependencies": { "@tailwindcss/node": "4.3.0", "@tailwindcss/oxide": "4.3.0", "tailwindcss": "4.3.0" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw=="], "@tanstack/query-core": ["@tanstack/query-core@5.100.14", "", {}, "sha512-5X41dGpxgeaHISCRW2oYwcSycZeULZzAunaudXT9ov1KOTj9xwt0CH6hbwqP1/z74ZWF7rYFnDpyYH07XFcZew=="], @@ -1686,8 +1679,6 @@ "css.escape": ["css.escape@1.5.1", "", {}, "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg=="], - "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], - "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], @@ -2952,8 +2943,6 @@ "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], - "postcss-selector-parser": ["postcss-selector-parser@6.0.10", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w=="], - "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], "prefix-style": ["prefix-style@2.0.1", "", {}, "sha512-gdr1MBNVT0drzTq95CbSNdsrBDoHGlb2aDJP/FoY+1e+jSDPOb1Cv554gH2MGiSr2WTcXi/zu+NaFzfcHQkfBQ=="], diff --git a/client/index.html b/client/index.html index 7050f5947..dc0c42c8e 100644 --- a/client/index.html +++ b/client/index.html @@ -16,6 +16,10 @@ sizes="512x512" />