studiocms 0.1.0-beta.7 → 0.1.0-beta.8
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.
- package/CHANGELOG.md +473 -0
- package/LICENSE +1 -1
- package/README.md +17 -10
- package/auth.d.ts +405 -0
- package/core.d.ts +225 -0
- package/custom-renderers/index.ts +4 -0
- package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactRenderer.tsx +8 -0
- package/custom-renderers/markdocRenderers/markdocReact-components/MarkDocReactWrapper.astro +13 -0
- package/custom-renderers/markdocRenderers/markdocReact.ts +56 -0
- package/dist/cli/cmds/get-turso.d.ts +1 -0
- package/dist/cli/cmds/get-turso.js +10 -0
- package/dist/cli/cmds/init/index.d.ts +4 -0
- package/dist/cli/cmds/init/index.js +52 -0
- package/dist/cli/cmds/init/steps/data/studiocmsEnv.d.ts +3 -0
- package/dist/cli/cmds/init/steps/data/studiocmsEnv.js +71 -0
- package/dist/cli/cmds/init/steps/envBuilder.d.ts +21 -0
- package/dist/cli/cmds/init/steps/envBuilder.js +368 -0
- package/dist/cli/cmds/init/steps/nextSteps.d.ts +2 -0
- package/dist/cli/cmds/init/steps/nextSteps.js +38 -0
- package/dist/cli/cmds/init.d.ts +1 -0
- package/dist/cli/cmds/init.js +4 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/lib/commander.d.ts +39 -0
- package/dist/cli/lib/commander.js +87 -0
- package/dist/cli/lib/context.d.ts +28 -0
- package/dist/cli/lib/context.js +55 -0
- package/dist/cli/lib/pathUtil.d.ts +5 -0
- package/dist/cli/lib/pathUtil.js +14 -0
- package/dist/cli/lib/runExternal.d.ts +20 -0
- package/dist/cli/lib/runExternal.js +40 -0
- package/dist/cli/lib/seasonal.d.ts +5 -0
- package/dist/cli/lib/seasonal.js +88 -0
- package/dist/cli/lib/utils.d.ts +55 -0
- package/dist/cli/lib/utils.js +310 -0
- package/dist/cli/shared/intro.d.ts +2 -0
- package/dist/cli/shared/intro.js +24 -0
- package/dist/components/DefaultEditor.astro +138 -0
- package/dist/components/FormattedDate.astro +12 -0
- package/dist/components/Generator.astro +7 -0
- package/dist/components/Renderer.astro +13 -0
- package/dist/components/auth/OAuthButton.astro +21 -0
- package/dist/components/auth/OAuthButtonStack.astro +19 -0
- package/dist/components/auth/StaticAuthCheck.astro +20 -0
- package/dist/components/auth/StudioCMSLogoSVG.astro +13 -0
- package/dist/components/auth/oAuthButtonProviders.d.ts +8 -0
- package/dist/components/auth/oAuthButtonProviders.js +35 -0
- package/dist/components/dashboard/AstroCodeDiffsScript.astro +25 -0
- package/dist/components/dashboard/BaseHead.astro +41 -0
- package/dist/components/dashboard/Code.astro +23 -0
- package/dist/components/dashboard/DashboardPageHeader.astro +60 -0
- package/dist/components/dashboard/DoubleSidebar.astro +26 -0
- package/dist/components/dashboard/Footer.astro +16 -0
- package/dist/components/dashboard/MainSidebarContent.astro +124 -0
- package/dist/components/dashboard/PageHeader.astro +52 -0
- package/dist/components/dashboard/SidebarLink.astro +61 -0
- package/dist/components/dashboard/SidebarModals.astro +6 -0
- package/dist/components/dashboard/SidebarPluginLink.astro +45 -0
- package/dist/components/dashboard/SingleSidebar.astro +23 -0
- package/dist/components/dashboard/StudioCMSLogo.astro +12 -0
- package/dist/components/dashboard/ThemeManager.astro +53 -0
- package/dist/components/dashboard/component-scripts/TinyMDE.astro +6 -0
- package/dist/components/dashboard/component-scripts/dateTimeListener.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/dateTimeListener.js +14 -0
- package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.js +12 -0
- package/dist/components/dashboard/component-scripts/makeClientRoutable.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/makeClientRoutable.js +9 -0
- package/dist/components/dashboard/component-scripts/timeAgo.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/timeAgo.js +21 -0
- package/dist/components/dashboard/islands/LoginChecker.astro +52 -0
- package/dist/components/dashboard/islands/configuration/ConfigForm.astro +272 -0
- package/dist/components/dashboard/islands/configuration/LightVsDark.astro +67 -0
- package/dist/components/dashboard/islands/content-mgmt/CreateFolder.astro +91 -0
- package/dist/components/dashboard/islands/content-mgmt/CreatePage.astro +332 -0
- package/dist/components/dashboard/islands/content-mgmt/EditFolder.astro +112 -0
- package/dist/components/dashboard/islands/content-mgmt/EditPage.astro +388 -0
- package/dist/components/dashboard/islands/content-mgmt/InnerSidebarElement.astro +230 -0
- package/dist/components/dashboard/islands/content-mgmt/PageHeader.astro +387 -0
- package/dist/components/dashboard/islands/content-mgmt/PageList.astro +49 -0
- package/dist/components/dashboard/islands/content-mgmt/PluginFields.astro +29 -0
- package/dist/components/dashboard/islands/content-mgmt/TreeRenderer.astro +75 -0
- package/dist/components/dashboard/islands/content-mgmt/TreeSidebarFolder.astro +53 -0
- package/dist/components/dashboard/islands/content-mgmt/TreeSidebarLink.astro +51 -0
- package/dist/components/dashboard/islands/content-mgmt/runtime.d.ts +10 -0
- package/dist/components/dashboard/islands/content-mgmt/runtime.js +33 -0
- package/dist/components/dashboard/islands/content-mgmt/shared.d.ts +27 -0
- package/dist/components/dashboard/islands/content-mgmt/shared.js +31 -0
- package/dist/components/dashboard/islands/dashboard/DashboardGrid.astro +39 -0
- package/dist/components/dashboard/islands/dashboard/DashboardGridItem.astro +34 -0
- package/dist/components/dashboard/islands/dashboard/Test.astro +5 -0
- package/dist/components/dashboard/islands/dashboard/UserName.astro +6 -0
- package/dist/components/dashboard/islands/dashboard/shared.d.ts +2 -0
- package/dist/components/dashboard/islands/dashboard/shared.js +0 -0
- package/dist/components/dashboard/islands/plugins/SettingsRenderer.astro +29 -0
- package/dist/components/dashboard/islands/profile/APITokens.astro +267 -0
- package/dist/components/dashboard/islands/profile/BasicInfo.astro +107 -0
- package/dist/components/dashboard/islands/profile/BasicInfoFallback.astro +43 -0
- package/dist/components/dashboard/islands/profile/SocialSignin.astro +151 -0
- package/dist/components/dashboard/islands/profile/SocialSigninFallback.astro +83 -0
- package/dist/components/dashboard/islands/profile/UpdatePassword.astro +137 -0
- package/dist/components/dashboard/islands/profile/UpdatePasswordFallback.astro +47 -0
- package/dist/components/dashboard/islands/profile/oAuthButtonProviders.d.ts +8 -0
- package/dist/components/dashboard/islands/profile/oAuthButtonProviders.js +35 -0
- package/dist/components/dashboard/islands/sidebar/Admin.astro +103 -0
- package/dist/components/dashboard/islands/sidebar/Editor.astro +18 -0
- package/dist/components/dashboard/islands/sidebar/UserAccount.astro +23 -0
- package/dist/components/dashboard/islands/sidebar/VersionCheck.astro +127 -0
- package/dist/components/dashboard/islands/sidebar/VersionCheckChangelog.astro +107 -0
- package/dist/components/dashboard/islands/user-mgmt/InnerSidebarElement.astro +298 -0
- package/dist/components/dashboard/islands/user-mgmt/RankCheck.astro +49 -0
- package/dist/components/dashboard/islands/user-mgmt/SocialSignin.astro +88 -0
- package/dist/components/dashboard/islands/user-mgmt/UserListItem.astro +60 -0
- package/dist/components/dashboard/sidebar-modals/UserManagementModals.astro +103 -0
- package/dist/components/dashboard/sidebar-modals/VersionModal.astro +267 -0
- package/dist/components/dashboard/sidebarConfig.d.ts +31 -0
- package/dist/components/dashboard/sidebarConfig.js +90 -0
- package/dist/components/default-grid-items/Recently-created-pages.astro +91 -0
- package/dist/components/default-grid-items/Recently-signed-up.astro +71 -0
- package/dist/components/default-grid-items/Recently-updated-pages.astro +96 -0
- package/dist/components/default-grid-items/Totals.astro +107 -0
- package/dist/components/default-grid-items/utils.d.ts +17 -0
- package/dist/components/default-grid-items/utils.js +26 -0
- package/dist/components/image/CustomImage.astro +90 -0
- package/dist/components/user-quick-tools.d.ts +42 -0
- package/dist/components/user-quick-tools.js +312 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.js +4 -0
- package/dist/consts.d.ts +61 -0
- package/dist/consts.js +39 -0
- package/dist/db/config.d.ts +4 -0
- package/dist/db/config.js +6 -0
- package/dist/db/tables.js +168 -0
- package/dist/errors.d.ts +19 -0
- package/dist/errors.js +11 -0
- package/dist/index.d.ts +152 -0
- package/dist/index.js +1177 -0
- package/dist/layouts/auth/AuthLayout.astro +74 -0
- package/dist/layouts/auth/FallbackCanvas.astro +123 -0
- package/dist/layouts/auth/ThemeManager.astro +53 -0
- package/dist/layouts/auth/ThreeCanvasLoader.astro +18 -0
- package/dist/layouts/dashboard/Layout.astro +64 -0
- package/dist/lib/auth/encryption.d.ts +30 -0
- package/dist/lib/auth/encryption.js +39 -0
- package/dist/lib/auth/password.d.ts +27 -0
- package/dist/lib/auth/password.js +42 -0
- package/dist/lib/auth/rate-limit.d.ts +136 -0
- package/dist/lib/auth/rate-limit.js +214 -0
- package/dist/lib/auth/session.d.ts +85 -0
- package/dist/lib/auth/session.js +93 -0
- package/dist/lib/auth/types.d.ts +83 -0
- package/dist/lib/auth/types.js +0 -0
- package/dist/lib/auth/user.d.ts +148 -0
- package/dist/lib/auth/user.js +133 -0
- package/dist/lib/dashboardGrid.d.ts +119 -0
- package/dist/lib/dashboardGrid.js +0 -0
- package/dist/lib/dynamic-sitemap/index.d.ts +42 -0
- package/dist/lib/dynamic-sitemap/index.js +45 -0
- package/dist/lib/dynamic-sitemap/sitemap-index.xml.d.ts +8 -0
- package/dist/lib/dynamic-sitemap/sitemap-index.xml.js +20 -0
- package/dist/lib/dynamic-sitemap/sitemap-index.xml.ts +45 -0
- package/dist/lib/head.d.ts +9 -0
- package/dist/lib/head.js +65 -0
- package/dist/lib/headDefaults.d.ts +18 -0
- package/dist/lib/headDefaults.js +75 -0
- package/dist/lib/i18n/LanguageSelector.astro +103 -0
- package/dist/lib/i18n/config.d.ts +16 -0
- package/dist/lib/i18n/config.js +8 -0
- package/dist/lib/i18n/index.d.ts +228 -0
- package/dist/lib/i18n/index.js +63 -0
- package/dist/lib/i18n/translations/de.json +43 -0
- package/dist/lib/i18n/translations/en-us.json +63 -0
- package/dist/lib/index.d.ts +7 -0
- package/dist/lib/index.js +7 -0
- package/dist/lib/jsonUtils.d.ts +2 -0
- package/dist/lib/jsonUtils.js +11 -0
- package/dist/lib/makeAPIRoute.d.ts +45 -0
- package/dist/lib/makeAPIRoute.js +16 -0
- package/dist/lib/makePublicRoute.d.ts +7 -0
- package/dist/lib/makePublicRoute.js +6 -0
- package/dist/lib/pathGenerators.d.ts +20 -0
- package/dist/lib/pathGenerators.js +66 -0
- package/dist/lib/plugins/dashboard-pages.d.ts +71 -0
- package/dist/lib/plugins/dashboard-pages.js +11 -0
- package/dist/lib/plugins/frontend-navigation.d.ts +18 -0
- package/dist/lib/plugins/frontend-navigation.js +39 -0
- package/dist/lib/plugins/index.d.ts +2 -0
- package/dist/lib/plugins/index.js +2 -0
- package/dist/lib/removeLeadingTrailingSlashes.d.ts +7 -0
- package/dist/lib/removeLeadingTrailingSlashes.js +13 -0
- package/dist/lib/renderer/astro-remark.d.ts +13 -0
- package/dist/lib/renderer/astro-remark.js +11 -0
- package/dist/lib/renderer/contentRenderer.d.ts +13 -0
- package/dist/lib/renderer/contentRenderer.js +31 -0
- package/dist/lib/renderer/errors.d.ts +5 -0
- package/dist/lib/renderer/errors.js +25 -0
- package/dist/lib/renderer/markdoc-renderers/markdocHTML.d.ts +3 -0
- package/dist/lib/renderer/markdoc-renderers/markdocHTML.js +14 -0
- package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.d.ts +3 -0
- package/dist/lib/renderer/markdoc-renderers/markdocReactStatic.js +14 -0
- package/dist/lib/renderer/markdoc.d.ts +11 -0
- package/dist/lib/renderer/markdoc.js +28 -0
- package/dist/lib/renderer/mdx.d.ts +10 -0
- package/dist/lib/renderer/mdx.js +37 -0
- package/dist/lib/renderer/runtime.d.ts +8 -0
- package/dist/lib/renderer/runtime.js +30 -0
- package/dist/lib/renderer/shared.d.ts +15 -0
- package/dist/lib/renderer/shared.js +13 -0
- package/dist/lib/renderer/studiocms.d.ts +11 -0
- package/dist/lib/renderer/studiocms.js +22 -0
- package/dist/lib/renderer/types.d.ts +12 -0
- package/dist/lib/renderer/types.js +0 -0
- package/dist/lib/robots/core.d.ts +24 -0
- package/dist/lib/robots/core.js +187 -0
- package/dist/lib/robots/index.d.ts +11 -0
- package/dist/lib/robots/index.js +47 -0
- package/dist/lib/robots/types.d.ts +185 -0
- package/dist/lib/robots/types.js +0 -0
- package/dist/lib/robots/utils.d.ts +22 -0
- package/dist/lib/robots/utils.js +22 -0
- package/dist/lib/routeMap.d.ts +257 -0
- package/dist/lib/routeMap.js +249 -0
- package/dist/lib/urlGen.d.ts +11 -0
- package/dist/lib/urlGen.js +26 -0
- package/dist/lib/webVitals/checkForWebVitalsPlugin.d.ts +18 -0
- package/dist/lib/webVitals/checkForWebVitalsPlugin.js +82 -0
- package/dist/lib/webVitals/consts.d.ts +240 -0
- package/dist/lib/webVitals/consts.js +40 -0
- package/dist/lib/webVitals/dashboard-grid-items/CoreVitals.astro +66 -0
- package/dist/lib/webVitals/dashboard-grid-items/MetricCard.astro +24 -0
- package/dist/lib/webVitals/dashboard-grid-items/SummaryCard.astro +56 -0
- package/dist/lib/webVitals/dashboard-grid-items/metric.css +103 -0
- package/dist/lib/webVitals/dashboard-grid-items/shared.d.ts +29 -0
- package/dist/lib/webVitals/dashboard-grid-items/shared.js +35 -0
- package/dist/lib/webVitals/pages/analytics/body.astro +186 -0
- package/dist/lib/webVitals/pages/analytics/header.astro +42 -0
- package/dist/lib/webVitals/schemas.d.ts +78 -0
- package/dist/lib/webVitals/schemas.js +37 -0
- package/dist/lib/webVitals/types.d.ts +156 -0
- package/dist/lib/webVitals/types.js +0 -0
- package/dist/lib/webVitals/utils/buildDataObject.d.ts +8 -0
- package/dist/lib/webVitals/utils/buildDataObject.js +28 -0
- package/dist/lib/webVitals/utils/buildPageRouteDataObject.d.ts +15 -0
- package/dist/lib/webVitals/utils/buildPageRouteDataObject.js +70 -0
- package/dist/lib/webVitals/utils/buildPerPageDataObject.d.ts +23 -0
- package/dist/lib/webVitals/utils/buildPerPageDataObject.js +209 -0
- package/dist/lib/webVitals/utils/checkDate.d.ts +5 -0
- package/dist/lib/webVitals/utils/checkDate.js +19 -0
- package/dist/lib/webVitals/utils/webVitalsUtils.d.ts +24 -0
- package/dist/lib/webVitals/utils/webVitalsUtils.js +234 -0
- package/dist/lib/webVitals/webVital.d.ts +20 -0
- package/dist/lib/webVitals/webVital.js +40 -0
- package/dist/lib/webVitals/webVitalsRouteSummary.d.ts +19 -0
- package/dist/lib/webVitals/webVitalsRouteSummary.js +59 -0
- package/dist/lib/webVitals/webVitalsSummary.d.ts +19 -0
- package/dist/lib/webVitals/webVitalsSummary.js +49 -0
- package/dist/plugins.d.ts +2 -0
- package/dist/plugins.js +6 -0
- package/dist/routes/api/render.astro +25 -0
- package/dist/routes/auth/api/auth0/callback.d.ts +4 -0
- package/dist/routes/auth/api/auth0/callback.js +117 -0
- package/dist/routes/auth/api/auth0/index.d.ts +4 -0
- package/dist/routes/auth/api/auth0/index.js +36 -0
- package/dist/routes/auth/api/auth0/shared.d.ts +13 -0
- package/dist/routes/auth/api/auth0/shared.js +24 -0
- package/dist/routes/auth/api/discord/callback.d.ts +4 -0
- package/dist/routes/auth/api/discord/callback.js +112 -0
- package/dist/routes/auth/api/discord/index.d.ts +4 -0
- package/dist/routes/auth/api/discord/index.js +36 -0
- package/dist/routes/auth/api/discord/shared.d.ts +12 -0
- package/dist/routes/auth/api/discord/shared.js +17 -0
- package/dist/routes/auth/api/github/callback.d.ts +4 -0
- package/dist/routes/auth/api/github/callback.js +112 -0
- package/dist/routes/auth/api/github/index.d.ts +4 -0
- package/dist/routes/auth/api/github/index.js +36 -0
- package/dist/routes/auth/api/github/shared.d.ts +13 -0
- package/dist/routes/auth/api/github/shared.js +14 -0
- package/dist/routes/auth/api/google/callback.d.ts +4 -0
- package/dist/routes/auth/api/google/callback.js +115 -0
- package/dist/routes/auth/api/google/index.d.ts +4 -0
- package/dist/routes/auth/api/google/index.js +38 -0
- package/dist/routes/auth/api/google/shared.d.ts +12 -0
- package/dist/routes/auth/api/google/shared.js +19 -0
- package/dist/routes/auth/api/login.d.ts +4 -0
- package/dist/routes/auth/api/login.js +46 -0
- package/dist/routes/auth/api/logout.d.ts +5 -0
- package/dist/routes/auth/api/logout.js +55 -0
- package/dist/routes/auth/api/register.d.ts +4 -0
- package/dist/routes/auth/api/register.js +64 -0
- package/dist/routes/auth/api/shared.d.ts +2 -0
- package/dist/routes/auth/api/shared.js +21 -0
- package/dist/routes/auth/login.astro +67 -0
- package/dist/routes/auth/logout.astro +28 -0
- package/dist/routes/auth/signup.astro +70 -0
- package/dist/routes/dashboard/[...pluginPage].astro +88 -0
- package/dist/routes/dashboard/configuration.astro +27 -0
- package/dist/routes/dashboard/content-management/createfolder.astro +56 -0
- package/dist/routes/dashboard/content-management/createpage.astro +59 -0
- package/dist/routes/dashboard/content-management/diff.astro +100 -0
- package/dist/routes/dashboard/content-management/editfolder.astro +40 -0
- package/dist/routes/dashboard/content-management/editpage.astro +44 -0
- package/dist/routes/dashboard/content-management/index.astro +57 -0
- package/dist/routes/dashboard/index.astro +24 -0
- package/dist/routes/dashboard/password-reset.astro +169 -0
- package/dist/routes/dashboard/plugins/[plugin].astro +60 -0
- package/dist/routes/dashboard/profile.astro +57 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.d.ts +5 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/api-tokens.js +90 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/config.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/config.js +63 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.d.ts +6 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/folder.js +121 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/page.d.ts +6 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/content/page.js +257 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-reset-link.js +59 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user-invite.js +105 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/create-user.js +100 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/partials/Editor.astro +61 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/partials/LiveRender.astro +30 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/partials/UserListItems.astro +39 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].d.ts +2 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/plugins/[plugin].js +32 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/profile.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/profile.js +130 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/reset-password.js +105 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/search-list.d.ts +4 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/search-list.js +55 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/users.d.ts +5 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/users.js +92 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.d.ts +2 -0
- package/dist/routes/dashboard/studiocms_api/dashboard/verify-session.js +72 -0
- package/dist/routes/dashboard/user-management/edit.astro +593 -0
- package/dist/routes/dashboard/user-management/index.astro +67 -0
- package/dist/routes/error-pages/404.astro +35 -0
- package/dist/routes/firstTimeSetupRoutes/1-start.astro +253 -0
- package/dist/routes/firstTimeSetupRoutes/2-next.astro +208 -0
- package/dist/routes/firstTimeSetupRoutes/3-done.astro +95 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-1.d.ts +2 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-1.js +126 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-2.d.ts +2 -0
- package/dist/routes/firstTimeSetupRoutes/api/step-2.js +110 -0
- package/dist/routes/firstTimeSetupRoutes/components/Layout.astro +41 -0
- package/dist/routes/firstTimeSetupRoutes/components/PageHeader.astro +60 -0
- package/dist/routes/firstTimeSetupRoutes/components/TabItem.astro +44 -0
- package/dist/routes/firstTimeSetupRoutes/components/Tabs.astro +170 -0
- package/dist/routes/firstTimeSetupRoutes/snippets/opt1-astro.config.diff +14 -0
- package/dist/routes/firstTimeSetupRoutes/snippets/opt2-astro.config.diff +9 -0
- package/dist/routes/firstTimeSetupRoutes/snippets/opt2-studiocms.config.diff +5 -0
- package/dist/routes/rest/utils/auth-token.d.ts +17 -0
- package/dist/routes/rest/utils/auth-token.js +31 -0
- package/dist/routes/rest/v1/folders/[id].d.ts +6 -0
- package/dist/routes/rest/v1/folders/[id].js +106 -0
- package/dist/routes/rest/v1/folders/index.d.ts +5 -0
- package/dist/routes/rest/v1/folders/index.js +88 -0
- package/dist/routes/rest/v1/pages/[id]/history/[diffid].d.ts +4 -0
- package/dist/routes/rest/v1/pages/[id]/history/[diffid].js +55 -0
- package/dist/routes/rest/v1/pages/[id]/history/index.d.ts +4 -0
- package/dist/routes/rest/v1/pages/[id]/history/index.js +61 -0
- package/dist/routes/rest/v1/pages/[id]/index.d.ts +6 -0
- package/dist/routes/rest/v1/pages/[id]/index.js +165 -0
- package/dist/routes/rest/v1/pages/index.d.ts +5 -0
- package/dist/routes/rest/v1/pages/index.js +113 -0
- package/dist/routes/rest/v1/public/folders/[id].d.ts +4 -0
- package/dist/routes/rest/v1/public/folders/[id].js +43 -0
- package/dist/routes/rest/v1/public/folders/index.d.ts +4 -0
- package/dist/routes/rest/v1/public/folders/index.js +49 -0
- package/dist/routes/rest/v1/public/pages/[id].d.ts +4 -0
- package/dist/routes/rest/v1/public/pages/[id].js +46 -0
- package/dist/routes/rest/v1/public/pages/index.d.ts +4 -0
- package/dist/routes/rest/v1/public/pages/index.js +61 -0
- package/dist/routes/rest/v1/settings/index.d.ts +5 -0
- package/dist/routes/rest/v1/settings/index.js +75 -0
- package/dist/routes/rest/v1/users/[id].d.ts +6 -0
- package/dist/routes/rest/v1/users/[id].js +212 -0
- package/dist/routes/rest/v1/users/index.d.ts +5 -0
- package/dist/routes/rest/v1/users/index.js +138 -0
- package/dist/routes/sdk/fallback-list-pages.json.d.ts +2 -0
- package/dist/routes/sdk/fallback-list-pages.json.js +19 -0
- package/dist/routes/sdk/fallback-list-pages.json.ts +22 -0
- package/dist/routes/sdk/full-changelog.json.d.ts +16 -0
- package/dist/routes/sdk/full-changelog.json.js +170 -0
- package/dist/routes/sdk/full-changelog.json.ts +224 -0
- package/dist/routes/sdk/list-pages.d.ts +4 -0
- package/dist/routes/sdk/list-pages.js +34 -0
- package/dist/routes/sdk/update-latest-version-cache.d.ts +4 -0
- package/dist/routes/sdk/update-latest-version-cache.js +41 -0
- package/dist/runtime/AstroComponentProxy.d.ts +29 -0
- package/dist/runtime/AstroComponentProxy.js +47 -0
- package/dist/runtime/decoder/decode-codepoint.d.ts +18 -0
- package/dist/runtime/decoder/decode-codepoint.js +58 -0
- package/dist/runtime/decoder/decode-data-html.d.ts +1 -0
- package/dist/runtime/decoder/decode-data-html.js +7 -0
- package/dist/runtime/decoder/decode-data-xml.d.ts +1 -0
- package/dist/runtime/decoder/decode-data-xml.js +7 -0
- package/dist/runtime/decoder/index.d.ts +34 -0
- package/dist/runtime/decoder/index.js +18 -0
- package/dist/runtime/decoder/util.d.ts +208 -0
- package/dist/runtime/decoder/util.js +415 -0
- package/dist/schemas/config/auth.d.ts +175 -0
- package/dist/schemas/config/auth.js +65 -0
- package/dist/schemas/config/componentoverrides.d.ts +17 -0
- package/dist/schemas/config/componentoverrides.js +14 -0
- package/dist/schemas/config/dashboard.d.ts +154 -0
- package/dist/schemas/config/dashboard.js +59 -0
- package/dist/schemas/config/defaultFrontend.d.ts +125 -0
- package/dist/schemas/config/defaultFrontend.js +57 -0
- package/dist/schemas/config/developer.d.ts +15 -0
- package/dist/schemas/config/developer.js +14 -0
- package/dist/schemas/config/imageService.d.ts +13 -0
- package/dist/schemas/config/imageService.js +12 -0
- package/dist/schemas/config/index.d.ts +1153 -0
- package/dist/schemas/config/index.js +95 -0
- package/dist/schemas/config/integrations.d.ts +14 -0
- package/dist/schemas/config/integrations.js +12 -0
- package/dist/schemas/config/markdoc.d.ts +172 -0
- package/dist/schemas/config/markdoc.js +68 -0
- package/dist/schemas/config/mdx.d.ts +455 -0
- package/dist/schemas/config/mdx.js +71 -0
- package/dist/schemas/config/rendererConfig.d.ts +659 -0
- package/dist/schemas/config/rendererConfig.js +51 -0
- package/dist/schemas/config/sdk.d.ts +167 -0
- package/dist/schemas/config/sdk.js +85 -0
- package/dist/schemas/config/studiocms-markdown-remark.d.ts +292 -0
- package/dist/schemas/config/studiocms-markdown-remark.js +63 -0
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/plugins/index.d.ts +7373 -0
- package/dist/schemas/plugins/index.js +192 -0
- package/dist/schemas/plugins/shared.d.ts +1752 -0
- package/dist/schemas/plugins/shared.js +221 -0
- package/dist/scripts/formListener.d.ts +16 -0
- package/dist/scripts/formListener.js +46 -0
- package/dist/scripts/three.d.ts +1 -0
- package/dist/scripts/three.js +277 -0
- package/dist/scripts/utils/fitModelToViewport.d.ts +8 -0
- package/dist/scripts/utils/fitModelToViewport.js +19 -0
- package/dist/sdk/StudioCMSVirtualCache.d.ts +283 -0
- package/dist/sdk/StudioCMSVirtualCache.js +685 -0
- package/dist/sdk/cache.d.ts +11 -0
- package/dist/sdk/cache.js +12 -0
- package/dist/sdk/core.d.ts +865 -0
- package/dist/sdk/core.js +1966 -0
- package/dist/sdk/errors.d.ts +21 -0
- package/dist/sdk/errors.js +11 -0
- package/dist/sdk/index.d.ts +371 -0
- package/dist/sdk/index.js +8 -0
- package/dist/sdk/lib/foldertree.d.ts +50 -0
- package/dist/sdk/lib/foldertree.js +123 -0
- package/dist/sdk/lib/generators.d.ts +30 -0
- package/dist/sdk/lib/generators.js +25 -0
- package/dist/sdk/lib/packages.d.ts +8 -0
- package/dist/sdk/lib/packages.js +14 -0
- package/dist/sdk/lib/parsers.d.ts +14 -0
- package/dist/sdk/lib/parsers.js +10 -0
- package/dist/sdk/lib/users.d.ts +19 -0
- package/dist/sdk/lib/users.js +26 -0
- package/dist/sdk/tables.d.ts +1198 -0
- package/dist/sdk/tables.js +55 -0
- package/dist/sdk/types/index.d.ts +175 -0
- package/dist/sdk/types/index.js +0 -0
- package/dist/sdk/types/tableDefs.d.ts +75 -0
- package/dist/sdk/types/tableDefs.js +0 -0
- package/dist/sdk/types/tsAlias.d.ts +155 -0
- package/dist/sdk/types/tsAlias.js +0 -0
- package/dist/sdk/utils/db.d.ts +5 -0
- package/dist/sdk/utils/db.js +15 -0
- package/dist/stubs/auth-lib.d.ts +2 -0
- package/dist/stubs/auth-lib.js +519 -0
- package/dist/stubs/auth-scripts.d.ts +2 -0
- package/dist/stubs/auth-scripts.js +29 -0
- package/dist/stubs/auth-utils.d.ts +2 -0
- package/dist/stubs/auth-utils.js +36 -0
- package/dist/stubs/changelog.d.ts +2 -0
- package/dist/stubs/changelog.js +16 -0
- package/dist/stubs/components.d.ts +2 -0
- package/dist/stubs/components.js +67 -0
- package/dist/stubs/core.d.ts +2 -0
- package/dist/stubs/core.js +49 -0
- package/dist/stubs/i18n-dts.d.ts +2 -0
- package/dist/stubs/i18n-dts.js +117 -0
- package/dist/stubs/images.d.ts +1 -0
- package/dist/stubs/images.js +30 -0
- package/dist/stubs/index.d.ts +1 -0
- package/dist/stubs/index.js +40 -0
- package/dist/stubs/lib.d.ts +2 -0
- package/dist/stubs/lib.js +123 -0
- package/dist/stubs/plugins.d.ts +2 -0
- package/dist/stubs/plugins.js +60 -0
- package/dist/stubs/proxy.d.ts +2 -0
- package/dist/stubs/proxy.js +40 -0
- package/dist/stubs/renderer-config.d.ts +2 -0
- package/dist/stubs/renderer-config.js +18 -0
- package/dist/stubs/renderer-markdownConfig.d.ts +2 -0
- package/dist/stubs/renderer-markdownConfig.js +17 -0
- package/dist/stubs/renderer.d.ts +2 -0
- package/dist/stubs/renderer.js +44 -0
- package/dist/stubs/sdk.d.ts +2 -0
- package/dist/stubs/sdk.js +202 -0
- package/dist/stubs/webVitals.d.ts +2 -0
- package/dist/stubs/webVitals.js +40 -0
- package/dist/styles/404.css +47 -0
- package/dist/styles/SyntaxFont.woff2 +0 -0
- package/dist/styles/authlayout.css +138 -0
- package/dist/styles/dashboard-base.css +493 -0
- package/dist/styles/dashboard-code.css +33 -0
- package/dist/styles/dashboard-diff.css +389 -0
- package/dist/styles/dashboard-tiny-mde.css +224 -0
- package/dist/styles/md-remark-callouts/github.css +56 -0
- package/dist/styles/md-remark-callouts/obsidian.css +66 -0
- package/dist/styles/md-remark-callouts/vitepress.css +58 -0
- package/dist/styles/md-remark-headings.css +48 -0
- package/dist/types.d.ts +48 -0
- package/dist/types.js +0 -0
- package/dist/utils/addAPIRoutes.d.ts +9 -0
- package/dist/utils/addAPIRoutes.js +33 -0
- package/dist/utils/addIntegrationArray.d.ts +24 -0
- package/dist/utils/addIntegrationArray.js +11 -0
- package/dist/utils/addIntegrationArrayWithCheck.d.ts +11 -0
- package/dist/utils/addIntegrationArrayWithCheck.js +24 -0
- package/dist/utils/astroConfigCheck.d.ts +8 -0
- package/dist/utils/astroConfigCheck.js +31 -0
- package/dist/utils/astroEnvConfig.d.ts +45 -0
- package/dist/utils/astroEnvConfig.js +9 -0
- package/dist/utils/authEnvCheck.d.ts +38 -0
- package/dist/utils/authEnvCheck.js +82 -0
- package/dist/utils/changelog.d.ts +1 -0
- package/dist/utils/changelog.js +53 -0
- package/dist/utils/changelogLoader.d.ts +15 -0
- package/dist/utils/changelogLoader.js +104 -0
- package/dist/utils/checkENV.d.ts +27 -0
- package/dist/utils/checkENV.js +115 -0
- package/dist/utils/configManager.d.ts +22 -0
- package/dist/utils/configManager.js +98 -0
- package/dist/utils/configResolver.d.ts +283 -0
- package/dist/utils/configResolver.js +105 -0
- package/dist/utils/defineStudioCMSConfig.d.ts +165 -0
- package/dist/utils/defineStudioCMSConfig.js +6 -0
- package/dist/utils/getLabelForPermissionLevel.d.ts +2 -0
- package/dist/utils/getLabelForPermissionLevel.js +17 -0
- package/dist/utils/injectRouteArray.d.ts +19 -0
- package/dist/utils/injectRouteArray.js +75 -0
- package/dist/utils/integrationLogger.d.ts +7 -0
- package/dist/utils/integrationLogger.js +18 -0
- package/dist/utils/integrations.d.ts +4 -0
- package/dist/utils/integrations.js +32 -0
- package/dist/utils/isDashboardRoute.d.ts +7 -0
- package/dist/utils/isDashboardRoute.js +10 -0
- package/dist/utils/loginBackgrounds/studiocms-blobs-dark.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-blobs-light.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-blocks-dark.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-blocks-light.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-curves-dark.png +0 -0
- package/dist/utils/loginBackgrounds/studiocms-curves-light.png +0 -0
- package/dist/utils/makePageTitle.d.ts +3 -0
- package/dist/utils/makePageTitle.js +7 -0
- package/dist/utils/pageListPackageLabel.d.ts +4 -0
- package/dist/utils/pageListPackageLabel.js +12 -0
- package/dist/utils/readJson.d.ts +1 -0
- package/dist/utils/readJson.js +7 -0
- package/dist/utils/routeBuilder.d.ts +18 -0
- package/dist/utils/routeBuilder.js +96 -0
- package/dist/utils/safeString.d.ts +1 -0
- package/dist/utils/safeString.js +6 -0
- package/dist/utils/simpleResponse.d.ts +1 -0
- package/dist/utils/simpleResponse.js +29 -0
- package/dist/utils/validImages.d.ts +13 -0
- package/dist/utils/validImages.js +39 -0
- package/dist/virtual.d.js +0 -0
- package/dist/virtual.d.ts +5 -0
- package/package.json +180 -59
- package/renderer.d.ts +25 -0
- package/static/studiocms-resources/auth/studiocms-logo.glb +0 -0
- package/static/studiocms-resources/core/favicon-dark.png +0 -0
- package/static/studiocms-resources/core/favicon-light.png +0 -0
- package/static/studiocms-resources/core/favicon.svg +15 -0
- package/studiocms-cli.mjs +13 -0
- package/ui.d.ts +291 -0
- package/src/blog/index.ts +0 -35
- package/src/index.ts +0 -25
- package/src/integration.ts +0 -130
- package/src/updateCheck.ts +0 -51
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { z } from "astro/zod";
|
|
2
|
+
import { uiTranslationsAvailable } from "../../lib/i18n/config.js";
|
|
3
|
+
const StudioCMSColorway = z.enum([
|
|
4
|
+
"primary",
|
|
5
|
+
"success",
|
|
6
|
+
"warning",
|
|
7
|
+
"danger",
|
|
8
|
+
"info",
|
|
9
|
+
"mono"
|
|
10
|
+
]);
|
|
11
|
+
const BaseFieldSchema = z.object({
|
|
12
|
+
/**
|
|
13
|
+
* The name of the field used in the form submission data
|
|
14
|
+
*/
|
|
15
|
+
name: z.string(),
|
|
16
|
+
/**
|
|
17
|
+
* The label of the field displayed in the form
|
|
18
|
+
*/
|
|
19
|
+
label: z.string(),
|
|
20
|
+
/**
|
|
21
|
+
* Is the field required
|
|
22
|
+
*/
|
|
23
|
+
required: z.boolean().optional(),
|
|
24
|
+
/**
|
|
25
|
+
* Is the field read only (disabled)
|
|
26
|
+
*/
|
|
27
|
+
readOnly: z.boolean().optional()
|
|
28
|
+
});
|
|
29
|
+
const SupportsColorSchema = BaseFieldSchema.extend({
|
|
30
|
+
color: StudioCMSColorway.optional()
|
|
31
|
+
});
|
|
32
|
+
const SupportsPlaceHolderSchema = BaseFieldSchema.extend({
|
|
33
|
+
placeholder: z.string().optional()
|
|
34
|
+
});
|
|
35
|
+
const CheckboxFieldSchema = SupportsColorSchema.extend({
|
|
36
|
+
input: z.literal("checkbox"),
|
|
37
|
+
defaultChecked: z.boolean().optional(),
|
|
38
|
+
size: z.enum(["sm", "md", "lg"]).optional()
|
|
39
|
+
});
|
|
40
|
+
const TextInputFieldSchema = SupportsPlaceHolderSchema.extend({
|
|
41
|
+
input: z.literal("input"),
|
|
42
|
+
type: z.enum(["text", "password", "email", "number", "tel", "url", "search"]).optional(),
|
|
43
|
+
defaultValue: z.string().optional()
|
|
44
|
+
});
|
|
45
|
+
const TextAreaFieldSchema = SupportsPlaceHolderSchema.extend({
|
|
46
|
+
input: z.literal("textarea"),
|
|
47
|
+
defaultValue: z.string().optional()
|
|
48
|
+
});
|
|
49
|
+
const SharedOptionsSchema = z.array(
|
|
50
|
+
z.object({
|
|
51
|
+
label: z.string(),
|
|
52
|
+
value: z.string(),
|
|
53
|
+
disabled: z.boolean().optional()
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
const RadioGroupFieldSchema = SupportsColorSchema.extend({
|
|
57
|
+
input: z.literal("radio"),
|
|
58
|
+
direction: z.enum(["horizontal", "vertical"]).optional(),
|
|
59
|
+
defaultValue: z.string().optional(),
|
|
60
|
+
options: SharedOptionsSchema
|
|
61
|
+
});
|
|
62
|
+
const SelectFieldSchema = SupportsPlaceHolderSchema.extend({
|
|
63
|
+
input: z.literal("select"),
|
|
64
|
+
type: z.enum(["basic", "search"]).optional(),
|
|
65
|
+
defaultValue: z.string().optional(),
|
|
66
|
+
options: SharedOptionsSchema
|
|
67
|
+
});
|
|
68
|
+
const FieldSchema = z.union([
|
|
69
|
+
CheckboxFieldSchema,
|
|
70
|
+
TextInputFieldSchema,
|
|
71
|
+
TextAreaFieldSchema,
|
|
72
|
+
RadioGroupFieldSchema,
|
|
73
|
+
SelectFieldSchema
|
|
74
|
+
]);
|
|
75
|
+
const RowFieldSchema = BaseFieldSchema.extend({
|
|
76
|
+
input: z.literal("row"),
|
|
77
|
+
alignCenter: z.boolean().optional(),
|
|
78
|
+
gapSize: z.enum(["sm", "md", "lg"]).optional(),
|
|
79
|
+
fields: z.lazy(() => FieldSchema.array())
|
|
80
|
+
// Recursive definition
|
|
81
|
+
});
|
|
82
|
+
const SettingsFieldSchema = z.union([FieldSchema, RowFieldSchema]);
|
|
83
|
+
const allowedKeys = Object.keys(uiTranslationsAvailable);
|
|
84
|
+
const i18nLabelSchema = z.custom(
|
|
85
|
+
(value) => {
|
|
86
|
+
const keys = Object.keys(value);
|
|
87
|
+
for (const key of keys) {
|
|
88
|
+
if (!allowedKeys.includes(key)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
message: `Invalid i18n label translations, currently support translations: ${allowedKeys.join(", ")}.`
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
const BaseDashboardPagePropsSchema = z.object({
|
|
99
|
+
/**
|
|
100
|
+
* The title of the dashboard page
|
|
101
|
+
*/
|
|
102
|
+
title: i18nLabelSchema,
|
|
103
|
+
/**
|
|
104
|
+
* The description of the dashboard page
|
|
105
|
+
*/
|
|
106
|
+
description: z.string(),
|
|
107
|
+
/**
|
|
108
|
+
* The desired route of the dashboard page
|
|
109
|
+
*/
|
|
110
|
+
route: z.string(),
|
|
111
|
+
/**
|
|
112
|
+
* The icon to display in the sidebar
|
|
113
|
+
*
|
|
114
|
+
* @default 'cube-transparent'
|
|
115
|
+
* @optional
|
|
116
|
+
*/
|
|
117
|
+
icon: z.custom().default("cube-transparent").optional(),
|
|
118
|
+
/**
|
|
119
|
+
* The required permissions to access the page
|
|
120
|
+
*/
|
|
121
|
+
requiredPermissions: z.union([
|
|
122
|
+
z.literal("owner"),
|
|
123
|
+
z.literal("admin"),
|
|
124
|
+
z.literal("editor"),
|
|
125
|
+
z.literal("visitor"),
|
|
126
|
+
z.literal("none")
|
|
127
|
+
]).default("none").optional(),
|
|
128
|
+
/**
|
|
129
|
+
* The component to render in the page header to display action buttons
|
|
130
|
+
*/
|
|
131
|
+
pageActionsComponent: z.string().optional(),
|
|
132
|
+
/**
|
|
133
|
+
* The component to render in the page body
|
|
134
|
+
*/
|
|
135
|
+
pageBodyComponent: z.string()
|
|
136
|
+
});
|
|
137
|
+
const AvailableBaseSchema = BaseDashboardPagePropsSchema.extend({
|
|
138
|
+
/**
|
|
139
|
+
* The slug of the dashboard page
|
|
140
|
+
*/
|
|
141
|
+
slug: z.string()
|
|
142
|
+
});
|
|
143
|
+
const AstroComponentSchema = z.custom();
|
|
144
|
+
const FinalBaseSchema = AvailableBaseSchema.extend({
|
|
145
|
+
components: z.object({
|
|
146
|
+
PageActionsComponent: AstroComponentSchema.optional(),
|
|
147
|
+
PageBodyComponent: AstroComponentSchema,
|
|
148
|
+
InnerSidebarComponent: AstroComponentSchema.optional()
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
const SingleSidebarSchema = BaseDashboardPagePropsSchema.extend({
|
|
152
|
+
/**
|
|
153
|
+
* The sidebar layout
|
|
154
|
+
*/
|
|
155
|
+
sidebar: z.literal("single")
|
|
156
|
+
});
|
|
157
|
+
const AvailableSingleSchema = AvailableBaseSchema.extend({
|
|
158
|
+
/**
|
|
159
|
+
* The sidebar layout
|
|
160
|
+
*/
|
|
161
|
+
sidebar: z.literal("single")
|
|
162
|
+
});
|
|
163
|
+
const FinalSingleSchema = FinalBaseSchema.extend({
|
|
164
|
+
/**
|
|
165
|
+
* The sidebar layout
|
|
166
|
+
*/
|
|
167
|
+
sidebar: z.literal("single")
|
|
168
|
+
});
|
|
169
|
+
const DoubleSidebarSchema = BaseDashboardPagePropsSchema.extend({
|
|
170
|
+
/**
|
|
171
|
+
* The sidebar layout
|
|
172
|
+
*/
|
|
173
|
+
sidebar: z.literal("double"),
|
|
174
|
+
/**
|
|
175
|
+
* The component to render in the inner sidebar
|
|
176
|
+
*/
|
|
177
|
+
innerSidebarComponent: z.string()
|
|
178
|
+
});
|
|
179
|
+
const AvailableDoubleSchema = AvailableBaseSchema.extend({
|
|
180
|
+
/**
|
|
181
|
+
* The sidebar layout
|
|
182
|
+
*/
|
|
183
|
+
sidebar: z.literal("double"),
|
|
184
|
+
/**
|
|
185
|
+
* The component to render in the inner sidebar
|
|
186
|
+
*/
|
|
187
|
+
innerSidebarComponent: z.string()
|
|
188
|
+
});
|
|
189
|
+
const FinalDoubleSchema = FinalBaseSchema.extend({
|
|
190
|
+
/**
|
|
191
|
+
* The sidebar layout
|
|
192
|
+
*/
|
|
193
|
+
sidebar: z.literal("double"),
|
|
194
|
+
/**
|
|
195
|
+
* The component to render in the inner sidebar
|
|
196
|
+
*/
|
|
197
|
+
innerSidebarComponent: z.string()
|
|
198
|
+
});
|
|
199
|
+
const DashboardPageSchema = z.union([SingleSidebarSchema, DoubleSidebarSchema]);
|
|
200
|
+
const AvailableDashboardBaseSchema = z.union([AvailableSingleSchema, AvailableDoubleSchema]);
|
|
201
|
+
const FinalDashboardBaseSchema = z.union([FinalSingleSchema, FinalDoubleSchema]);
|
|
202
|
+
const AvailableDashboardPagesSchema = z.object({
|
|
203
|
+
/**
|
|
204
|
+
* Available dashboard pages for users
|
|
205
|
+
*/
|
|
206
|
+
user: z.array(AvailableDashboardBaseSchema).optional(),
|
|
207
|
+
/**
|
|
208
|
+
* Available dashboard pages for admins
|
|
209
|
+
*/
|
|
210
|
+
admin: z.array(AvailableDashboardBaseSchema).optional()
|
|
211
|
+
});
|
|
212
|
+
export {
|
|
213
|
+
AvailableDashboardBaseSchema,
|
|
214
|
+
AvailableDashboardPagesSchema,
|
|
215
|
+
DashboardPageSchema,
|
|
216
|
+
FieldSchema,
|
|
217
|
+
FinalDashboardBaseSchema,
|
|
218
|
+
SettingsFieldSchema,
|
|
219
|
+
StudioCMSColorway,
|
|
220
|
+
i18nLabelSchema
|
|
221
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles form submission events for login and registration forms.
|
|
3
|
+
*
|
|
4
|
+
* @param event - The submit event triggered by the form submission.
|
|
5
|
+
* @param form - The HTML form element being submitted.
|
|
6
|
+
* @param type - The type of form being submitted, either 'login' or 'register'.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* - Prevents the default form submission behavior.
|
|
10
|
+
* - For registration forms, checks if the password and confirm password fields match.
|
|
11
|
+
* - Displays a toast notification if the passwords do not match.
|
|
12
|
+
* - Submits the form data using the fetch API.
|
|
13
|
+
* - Displays a success toast notification and reloads the page if the submission is successful.
|
|
14
|
+
* - Displays an error toast notification if the submission fails.
|
|
15
|
+
*/
|
|
16
|
+
export declare function formListener(event: SubmitEvent, form: HTMLFormElement, type: 'login' | 'register'): Promise<void>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { toast } from "studiocms:ui/components";
|
|
2
|
+
async function formListener(event, form, type) {
|
|
3
|
+
event.preventDefault();
|
|
4
|
+
if (type === "register") {
|
|
5
|
+
const password = form.querySelector('input[name="password"]');
|
|
6
|
+
const confirmPassword = form.querySelector(
|
|
7
|
+
'input[name="confirm-password"]'
|
|
8
|
+
);
|
|
9
|
+
if (password.value !== confirmPassword.value) {
|
|
10
|
+
toast({
|
|
11
|
+
title: "Passwords do not match!",
|
|
12
|
+
type: "danger",
|
|
13
|
+
description: "Please make sure your passwords match.",
|
|
14
|
+
closeButton: true,
|
|
15
|
+
persistent: true
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const response = await fetch(form.action, {
|
|
21
|
+
method: form.method,
|
|
22
|
+
body: new FormData(form)
|
|
23
|
+
});
|
|
24
|
+
if (response.ok) {
|
|
25
|
+
toast({
|
|
26
|
+
title: `${type === "login" ? "Login" : "Registration"} successful!`,
|
|
27
|
+
type: "success",
|
|
28
|
+
description: "Redirecting..."
|
|
29
|
+
});
|
|
30
|
+
window.location.reload();
|
|
31
|
+
} else {
|
|
32
|
+
const {
|
|
33
|
+
error: { title, description }
|
|
34
|
+
} = await response.json();
|
|
35
|
+
toast({
|
|
36
|
+
title,
|
|
37
|
+
type: "danger",
|
|
38
|
+
description,
|
|
39
|
+
closeButton: true,
|
|
40
|
+
persistent: true
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
formListener
|
|
46
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
|
3
|
+
import { EffectComposer } from "three/addons/postprocessing/EffectComposer.js";
|
|
4
|
+
import { OutlinePass } from "three/addons/postprocessing/OutlinePass.js";
|
|
5
|
+
import { RenderPass } from "three/addons/postprocessing/RenderPass.js";
|
|
6
|
+
import { validImages } from "../utils/validImages.js";
|
|
7
|
+
import { fitModelToViewport } from "./utils/fitModelToViewport.js";
|
|
8
|
+
const configElement = document.getElementById("auth-pages-config");
|
|
9
|
+
const loginPageBackground = configElement.dataset.config_background;
|
|
10
|
+
const loginPageCustomImage = configElement.dataset.config_custom_image;
|
|
11
|
+
const currentMode = document.documentElement.dataset.theme || "dark";
|
|
12
|
+
function parseBackgroundImageConfig(imageName) {
|
|
13
|
+
if (!imageName) {
|
|
14
|
+
return "studiocms-curves";
|
|
15
|
+
}
|
|
16
|
+
if (imageName) {
|
|
17
|
+
return imageName;
|
|
18
|
+
}
|
|
19
|
+
return "studiocms-curves";
|
|
20
|
+
}
|
|
21
|
+
function parseToString(value) {
|
|
22
|
+
return value || "";
|
|
23
|
+
}
|
|
24
|
+
const backgroundConfig = {
|
|
25
|
+
background: parseBackgroundImageConfig(loginPageBackground),
|
|
26
|
+
customImageHref: parseToString(loginPageCustomImage),
|
|
27
|
+
mode: currentMode
|
|
28
|
+
};
|
|
29
|
+
function getBackgroundConfig(config) {
|
|
30
|
+
return validImages.find((image) => image.name === config.background) || validImages[0];
|
|
31
|
+
}
|
|
32
|
+
function bgSelector(image, params) {
|
|
33
|
+
return image.format === "web" ? params.customImageHref : params.mode === "dark" ? image.dark?.src : image.light?.src;
|
|
34
|
+
}
|
|
35
|
+
class StudioCMS3DLogo {
|
|
36
|
+
canvasContainer;
|
|
37
|
+
scene;
|
|
38
|
+
camera;
|
|
39
|
+
renderer;
|
|
40
|
+
model;
|
|
41
|
+
mouseX = 0;
|
|
42
|
+
mouseY = 0;
|
|
43
|
+
time;
|
|
44
|
+
composer;
|
|
45
|
+
outlinePass;
|
|
46
|
+
outlinedObjects = [];
|
|
47
|
+
defaultComputedCameraZ;
|
|
48
|
+
BackgroundMesh;
|
|
49
|
+
frustumHeight;
|
|
50
|
+
frames = 0;
|
|
51
|
+
fps = 0;
|
|
52
|
+
lastTime = 0;
|
|
53
|
+
lastFrameTimes = [];
|
|
54
|
+
MAX_FRAME_TIMES_LENGTH = 2;
|
|
55
|
+
/**
|
|
56
|
+
* Creates the StudioCMS Logo along with its background in a specified container.
|
|
57
|
+
* @param containerEl The container that the canvas is placed in.
|
|
58
|
+
* @param outlineColor Color of the outline for the StudioCMS logo
|
|
59
|
+
* @param reducedMotion Whether the user prefers reduced motion or not
|
|
60
|
+
*/
|
|
61
|
+
constructor(containerEl, outlineColor, reducedMotion, image) {
|
|
62
|
+
this.scene = new THREE.Scene();
|
|
63
|
+
this.scene.background = new THREE.Color(1052688);
|
|
64
|
+
this.camera = new THREE.PerspectiveCamera(
|
|
65
|
+
75,
|
|
66
|
+
window.innerWidth / 2 / window.innerHeight,
|
|
67
|
+
0.01,
|
|
68
|
+
1e4
|
|
69
|
+
);
|
|
70
|
+
this.renderer = new THREE.WebGLRenderer({
|
|
71
|
+
antialias: false
|
|
72
|
+
// failIfMajorPerformanceCaveat: true,
|
|
73
|
+
});
|
|
74
|
+
this.renderer.setSize(window.innerWidth / 2, window.innerHeight);
|
|
75
|
+
this.renderer.setPixelRatio(window.devicePixelRatio * 2);
|
|
76
|
+
this.renderer.setClearColor(1052688, 1);
|
|
77
|
+
this.renderer.setAnimationLoop(this.animate);
|
|
78
|
+
this.canvasContainer = containerEl;
|
|
79
|
+
this.canvasContainer.appendChild(this.renderer.domElement);
|
|
80
|
+
this.time = new THREE.Clock(true);
|
|
81
|
+
this.composer = new EffectComposer(this.renderer);
|
|
82
|
+
const light2 = new THREE.AmbientLight(6316128);
|
|
83
|
+
this.scene.add(light2);
|
|
84
|
+
const renderScene = new RenderPass(this.scene, this.camera);
|
|
85
|
+
this.composer.addPass(renderScene);
|
|
86
|
+
this.loadLogoModel();
|
|
87
|
+
this.addPostProcessing(true, outlineColor);
|
|
88
|
+
this.addBackgroundImage(image || validImages[0]);
|
|
89
|
+
this.initListeners(reducedMotion);
|
|
90
|
+
this.registerLoadingCallback();
|
|
91
|
+
this.lastTime = performance.now();
|
|
92
|
+
this.updateFPS();
|
|
93
|
+
}
|
|
94
|
+
updateFPS = () => {
|
|
95
|
+
const now = performance.now();
|
|
96
|
+
this.frames++;
|
|
97
|
+
if (now - this.lastTime >= 1e3) {
|
|
98
|
+
this.fps = this.frames;
|
|
99
|
+
this.frames = 0;
|
|
100
|
+
this.lastTime = now;
|
|
101
|
+
if (this.lastFrameTimes.length >= this.MAX_FRAME_TIMES_LENGTH) {
|
|
102
|
+
this.lastFrameTimes.shift();
|
|
103
|
+
}
|
|
104
|
+
this.lastFrameTimes.push(this.fps);
|
|
105
|
+
}
|
|
106
|
+
if (this.lastFrameTimes.length === this.MAX_FRAME_TIMES_LENGTH) {
|
|
107
|
+
const averageFPS = this.lastFrameTimes.reduce((a, b) => a + b, 0) / this.MAX_FRAME_TIMES_LENGTH;
|
|
108
|
+
if (averageFPS < 24) {
|
|
109
|
+
this.renderer.clear();
|
|
110
|
+
this.renderer.domElement.remove();
|
|
111
|
+
throw new Error(`Average FPS is below 24: ${averageFPS}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
animate = () => {
|
|
116
|
+
if (this.model && this.canvasContainer) {
|
|
117
|
+
const targetRotationX = this.mouseY === 0 ? Math.PI / 2 : 0.1 * (this.mouseY / window.innerHeight * Math.PI - Math.PI / 2) + Math.PI / 2;
|
|
118
|
+
const targetRotationY = this.mouseX === 0 ? 0 : 0.1 * (this.mouseX / (window.innerWidth / 2) * Math.PI - Math.PI / 2);
|
|
119
|
+
const lerpFactor = 0.035;
|
|
120
|
+
this.model.rotation.x = THREE.MathUtils.lerp(
|
|
121
|
+
this.model.rotation.x,
|
|
122
|
+
targetRotationX,
|
|
123
|
+
lerpFactor
|
|
124
|
+
);
|
|
125
|
+
this.model.rotation.y = THREE.MathUtils.lerp(this.model.rotation.y, 0, lerpFactor);
|
|
126
|
+
this.model.rotation.z = THREE.MathUtils.lerp(
|
|
127
|
+
this.model.rotation.z,
|
|
128
|
+
-targetRotationY,
|
|
129
|
+
lerpFactor
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
this.composer.render();
|
|
133
|
+
this.updateFPS();
|
|
134
|
+
};
|
|
135
|
+
loadLogoModel = () => {
|
|
136
|
+
const loader = new GLTFLoader();
|
|
137
|
+
loader.loadAsync("/studiocms-resources/auth/studiocms-logo.glb").then((gltf) => {
|
|
138
|
+
this.model = gltf.scene;
|
|
139
|
+
this.model.traverse((child) => {
|
|
140
|
+
const isMesh = child instanceof THREE.Mesh;
|
|
141
|
+
if (!isMesh) return;
|
|
142
|
+
const material = new THREE.MeshPhysicalMaterial({
|
|
143
|
+
color: "#ffffff",
|
|
144
|
+
roughness: 0.6,
|
|
145
|
+
transmission: 1,
|
|
146
|
+
opacity: 1,
|
|
147
|
+
transparent: true,
|
|
148
|
+
thickness: 0.5,
|
|
149
|
+
envMapIntensity: 1,
|
|
150
|
+
clearcoat: 1,
|
|
151
|
+
clearcoatRoughness: 0.2,
|
|
152
|
+
metalness: 0
|
|
153
|
+
});
|
|
154
|
+
child.material = material;
|
|
155
|
+
});
|
|
156
|
+
this.scene.add(this.model);
|
|
157
|
+
this.model.rotation.set(Math.PI / 2, 0, 0);
|
|
158
|
+
this.defaultComputedCameraZ = fitModelToViewport(this.model, this.camera);
|
|
159
|
+
this.outlinedObjects.push(this.model);
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
addPostProcessing = (outlines, outlineColor) => {
|
|
163
|
+
if (outlines) this.addOutlines(outlineColor);
|
|
164
|
+
};
|
|
165
|
+
addOutlines = (outlineColor) => {
|
|
166
|
+
this.outlinePass = new OutlinePass(
|
|
167
|
+
new THREE.Vector2(window.innerWidth / 2, window.innerHeight),
|
|
168
|
+
this.scene,
|
|
169
|
+
this.camera
|
|
170
|
+
);
|
|
171
|
+
this.outlinePass.selectedObjects = this.outlinedObjects;
|
|
172
|
+
this.outlinePass.edgeStrength = 1.5;
|
|
173
|
+
this.outlinePass.edgeGlow = 0;
|
|
174
|
+
this.outlinePass.edgeThickness = 1e-10;
|
|
175
|
+
this.outlinePass.pulsePeriod = 0;
|
|
176
|
+
this.outlinePass.visibleEdgeColor.set(outlineColor);
|
|
177
|
+
this.outlinePass.hiddenEdgeColor.set(new THREE.Color(16777215));
|
|
178
|
+
this.composer.addPass(this.outlinePass);
|
|
179
|
+
};
|
|
180
|
+
addBackgroundImage = (image) => {
|
|
181
|
+
const bgPositionZ = -5;
|
|
182
|
+
if (!this.frustumHeight) {
|
|
183
|
+
this.frustumHeight = 9 * Math.tan(THREE.MathUtils.degToRad(this.camera.fov / 2)) * Math.abs(this.camera.position.z - bgPositionZ);
|
|
184
|
+
}
|
|
185
|
+
const loader = new THREE.TextureLoader();
|
|
186
|
+
const bgUrl = bgSelector(image, backgroundConfig);
|
|
187
|
+
if (!bgUrl) {
|
|
188
|
+
console.error("ERROR: Invalid background URL");
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
loader.loadAsync(bgUrl).then((texture) => {
|
|
192
|
+
const planeHeight = this.frustumHeight;
|
|
193
|
+
const planeWidth = planeHeight * (texture.source.data.width / texture.source.data.height);
|
|
194
|
+
const bgGeo = new THREE.PlaneGeometry(planeWidth, planeHeight);
|
|
195
|
+
const bgMat = new THREE.MeshBasicMaterial({ map: texture });
|
|
196
|
+
this.BackgroundMesh = new THREE.Mesh(bgGeo, bgMat);
|
|
197
|
+
this.BackgroundMesh.position.set(0, 0, bgPositionZ);
|
|
198
|
+
this.scene.add(this.BackgroundMesh);
|
|
199
|
+
});
|
|
200
|
+
};
|
|
201
|
+
initListeners = (reducedMotion) => {
|
|
202
|
+
this.initResizeListener();
|
|
203
|
+
if (!reducedMotion) {
|
|
204
|
+
this.initMouseMoveListener();
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
initResizeListener = () => {
|
|
208
|
+
window.addEventListener("resize", () => {
|
|
209
|
+
if (window.innerWidth > 850) {
|
|
210
|
+
this.camera.aspect = window.innerWidth / 2 / window.innerHeight;
|
|
211
|
+
this.camera.updateProjectionMatrix();
|
|
212
|
+
this.renderer.setSize(window.innerWidth / 2, window.innerHeight);
|
|
213
|
+
this.composer.setSize(window.innerWidth / 2, window.innerHeight);
|
|
214
|
+
if (window.innerWidth < 1100 && this.defaultComputedCameraZ) {
|
|
215
|
+
this.camera.position.set(
|
|
216
|
+
this.camera.position.x,
|
|
217
|
+
this.camera.position.y,
|
|
218
|
+
this.defaultComputedCameraZ + 5
|
|
219
|
+
);
|
|
220
|
+
} else if (window.innerWidth >= 1100 && this.defaultComputedCameraZ) {
|
|
221
|
+
this.camera.position.set(
|
|
222
|
+
this.camera.position.x,
|
|
223
|
+
this.camera.position.y,
|
|
224
|
+
this.defaultComputedCameraZ
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
initMouseMoveListener = () => {
|
|
231
|
+
document.addEventListener("mousemove", (ev) => {
|
|
232
|
+
this.mouseX = ev.clientX;
|
|
233
|
+
this.mouseY = ev.clientY;
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
registerLoadingCallback = () => {
|
|
237
|
+
THREE.DefaultLoadingManager.onLoad = () => {
|
|
238
|
+
this.canvasContainer.classList.add("loaded");
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
recomputeGlassMaterial = () => {
|
|
242
|
+
if (!this.model) return;
|
|
243
|
+
this.model.traverse((child) => {
|
|
244
|
+
const isMesh = child instanceof THREE.Mesh;
|
|
245
|
+
if (!isMesh) return;
|
|
246
|
+
const material = new THREE.MeshPhysicalMaterial({
|
|
247
|
+
color: "#ffffff",
|
|
248
|
+
roughness: 0.6,
|
|
249
|
+
transmission: 1,
|
|
250
|
+
opacity: 1,
|
|
251
|
+
transparent: true,
|
|
252
|
+
thickness: 0.5,
|
|
253
|
+
envMapIntensity: 1,
|
|
254
|
+
clearcoat: 1,
|
|
255
|
+
clearcoatRoughness: 0.2,
|
|
256
|
+
metalness: 0
|
|
257
|
+
});
|
|
258
|
+
child.material = material;
|
|
259
|
+
});
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
const logoContainer = document.querySelector("#canvas-container");
|
|
263
|
+
const usingReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches === true;
|
|
264
|
+
const smallScreen = window.matchMedia("(max-width: 850px)").matches === true;
|
|
265
|
+
if (!smallScreen) {
|
|
266
|
+
try {
|
|
267
|
+
new StudioCMS3DLogo(
|
|
268
|
+
logoContainer,
|
|
269
|
+
new THREE.Color(11175924),
|
|
270
|
+
usingReducedMotion,
|
|
271
|
+
getBackgroundConfig(backgroundConfig)
|
|
272
|
+
);
|
|
273
|
+
} catch (err) {
|
|
274
|
+
console.error("ERROR: Couldn't create StudioCMS3DLogo", err);
|
|
275
|
+
logoContainer.classList.add("loaded");
|
|
276
|
+
}
|
|
277
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
/**
|
|
3
|
+
* Takes in a GLTF model and fits it into a camera's viewport.
|
|
4
|
+
* @param model The model to fit
|
|
5
|
+
* @param camera The camera to fit the model into
|
|
6
|
+
*/
|
|
7
|
+
declare function fitModelToViewport(model: THREE.Group<THREE.Object3DEventMap>, camera: THREE.PerspectiveCamera): number;
|
|
8
|
+
export { fitModelToViewport };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
function fitModelToViewport(model, camera) {
|
|
3
|
+
const box = new THREE.Box3().setFromObject(model);
|
|
4
|
+
const center = box.getCenter(new THREE.Vector3());
|
|
5
|
+
const size = box.getSize(new THREE.Vector3());
|
|
6
|
+
model.position.x += model.position.x - center.x;
|
|
7
|
+
model.position.y += model.position.y - center.y;
|
|
8
|
+
model.position.z += model.position.z - center.z;
|
|
9
|
+
const maxDim = Math.max(size.x, size.y, size.z);
|
|
10
|
+
const fov = camera.fov * (Math.PI / 180);
|
|
11
|
+
let cameraZ = Math.abs(maxDim / 2 / Math.tan(fov / 2));
|
|
12
|
+
cameraZ *= 2.5;
|
|
13
|
+
camera.position.z = cameraZ;
|
|
14
|
+
camera.updateProjectionMatrix();
|
|
15
|
+
return cameraZ;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
fitModelToViewport
|
|
19
|
+
};
|