studiocms 0.1.0-beta.24 → 0.1.0-beta.26
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 +136 -0
- package/dist/cli/add/index.d.ts +3 -4
- package/dist/cli/add/index.js +6 -7
- package/dist/cli/crypto/genJWT/index.d.ts +5 -5
- package/dist/cli/crypto/genJWT/index.js +14 -15
- package/dist/cli/crypto/index.d.ts +2 -2
- package/dist/cli/crypto/index.js +4 -4
- package/dist/cli/getTurso/index.d.ts +2 -2
- package/dist/cli/getTurso/index.js +3 -4
- package/dist/cli/index.js +11 -10
- package/dist/cli/init/index.d.ts +4 -4
- package/dist/cli/init/index.js +11 -12
- package/dist/cli/users/index.d.ts +4 -4
- package/dist/cli/users/index.js +11 -12
- package/dist/cli/users/steps/libsqlCreateUsers.js +3 -3
- package/dist/cli/users/steps/libsqlModifyUsers.js +3 -3
- package/dist/{layouts → components}/auth/FallbackCanvas.astro +1 -1
- package/dist/components/auth/OAuthButton.astro +1 -1
- package/dist/components/auth/OAuthButtonStack.astro +2 -2
- package/dist/components/auth/StaticAuthCheck.astro +3 -3
- package/dist/{scripts → components/auth/component-scripts}/formListener.d.ts +3 -0
- package/dist/{scripts → components/auth/component-scripts}/formListener.js +1 -1
- package/dist/components/dashboard/BaseHead.astro +7 -18
- package/dist/components/dashboard/DashboardGrid.astro +4 -4
- package/dist/components/dashboard/DashboardGridItem.astro +3 -2
- package/dist/components/dashboard/DashboardPageHeader.astro +11 -6
- package/dist/components/dashboard/DoubleSidebar.astro +3 -3
- package/dist/components/dashboard/Footer.astro +3 -7
- package/dist/components/dashboard/LoginChecker.astro +17 -17
- package/dist/components/dashboard/MainSidebarContent.astro +27 -18
- package/dist/components/dashboard/PageHeader.astro +3 -2
- package/dist/components/dashboard/SidebarLink.astro +148 -31
- package/dist/components/dashboard/SidebarPluginLink.astro +4 -4
- package/dist/components/dashboard/SingleSidebar.astro +3 -3
- package/dist/components/dashboard/UserName.astro +2 -2
- package/dist/components/dashboard/component-scripts/dateTimeListener.js +4 -9
- package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.d.ts +1 -0
- package/dist/components/dashboard/component-scripts/dateWithTimeAndZone.js +10 -7
- package/dist/components/dashboard/configuration/ConfigForm.astro +53 -152
- package/dist/components/dashboard/configuration/LoginPreview.astro +275 -0
- package/dist/components/dashboard/content-mgmt/CreateFolder.astro +6 -5
- package/dist/components/dashboard/content-mgmt/CreatePage.astro +23 -47
- package/dist/components/dashboard/content-mgmt/EditFolder.astro +5 -4
- package/dist/components/dashboard/content-mgmt/EditPage.astro +36 -85
- package/dist/components/dashboard/content-mgmt/InnerSidebarElement.astro +30 -22
- package/dist/components/dashboard/content-mgmt/PageEditorSwapper.astro +107 -0
- package/dist/components/dashboard/content-mgmt/PageHeader.astro +26 -18
- package/dist/components/dashboard/content-mgmt/PageTypeHandler.astro +107 -0
- package/dist/components/dashboard/content-mgmt/PluginFields.astro +6 -1
- package/dist/components/dashboard/content-mgmt/TreeRenderer.astro +8 -8
- package/dist/components/dashboard/content-mgmt/TreeSidebarFolder.astro +116 -24
- package/dist/components/dashboard/content-mgmt/TreeSidebarLink.astro +116 -24
- package/dist/components/dashboard/content-mgmt/runtime.js +1 -1
- package/dist/components/dashboard/plugins/SettingsRenderer.astro +6 -1
- package/dist/components/dashboard/profile/APITokens.astro +18 -12
- package/dist/components/dashboard/profile/BasicInfo.astro +17 -13
- package/dist/components/dashboard/profile/Notifications.astro +20 -8
- package/dist/components/dashboard/profile/SocialSignin.astro +11 -8
- package/dist/components/dashboard/profile/UpdatePassword.astro +10 -7
- package/dist/components/dashboard/profile/oAuthButtonProviders.d.ts +1 -8
- package/dist/components/dashboard/profile/oAuthButtonProviders.js +1 -15
- package/dist/components/dashboard/shared.d.ts +1 -1
- package/dist/components/dashboard/sidebar/UserAccount.astro +5 -6
- package/dist/components/dashboard/sidebar/VersionCheck.astro +7 -7
- package/dist/components/dashboard/sidebar/VersionCheckChangelog.astro +32 -8
- package/dist/components/dashboard/sidebar-modals/UserManagementModals.astro +8 -3
- package/dist/components/dashboard/sidebar-modals/VersionModal.astro +43 -24
- package/dist/components/dashboard/sidebarConfig.d.ts +2 -2
- package/dist/components/dashboard/sidebarConfig.js +7 -7
- package/dist/components/dashboard/user-mgmt/InnerSidebarElement.astro +20 -13
- package/dist/components/dashboard/user-mgmt/RankCheck.astro +10 -10
- package/dist/components/dashboard/user-mgmt/SocialSignin.astro +9 -10
- package/dist/components/dashboard/user-mgmt/UserListItem.astro +86 -30
- package/dist/components/default-grid-items/Recently-created-pages.astro +12 -10
- package/dist/components/default-grid-items/Recently-signed-up.astro +9 -9
- package/dist/components/default-grid-items/Recently-updated-pages.astro +12 -10
- package/dist/components/default-grid-items/Totals.astro +11 -10
- package/dist/{routes/firstTimeSetupRoutes/components → components/first-time-setup}/PageHeader.astro +4 -3
- package/dist/components/shared/Code.astro +72 -0
- package/dist/components/shared/SSRUser.astro +200 -0
- package/dist/components/shared/head/Favicons.astro +6 -0
- package/dist/components/shared/head/Global.astro +4 -0
- package/dist/components/shared/head/TitleTags.astro +14 -0
- package/dist/config.d.ts +1 -4
- package/dist/consts.d.ts +48 -3
- package/dist/consts.js +65 -10
- package/dist/db/config.d.ts +1499 -0
- package/dist/db/config.js +262 -4
- package/dist/effect.d.ts +2 -3
- package/dist/effect.js +2 -17
- package/dist/{styles/dashboard-code.css → fonts/syntax-font.css} +2 -20
- package/dist/{utils → handlers}/astroConfigCheck.js +1 -1
- package/dist/handlers/changelog.d.ts +1 -0
- package/dist/handlers/changelog.js +54 -0
- package/dist/handlers/index.d.ts +4 -0
- package/dist/handlers/index.js +10 -0
- package/dist/{pluginHandler.d.ts → handlers/pluginHandler.d.ts} +4 -3
- package/dist/{pluginHandler.js → handlers/pluginHandler.js} +264 -127
- package/dist/{routeHandler.d.ts → handlers/routeHandler.d.ts} +1 -1
- package/dist/{routeHandler.js → handlers/routeHandler.js} +7 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +184 -229
- package/dist/{lib → integrations}/dynamic-sitemap/index.js +1 -1
- package/dist/integrations/node-namespace.d.ts +15 -0
- package/dist/integrations/node-namespace.js +31 -0
- package/dist/integrations/plugins.d.ts +4 -0
- package/dist/integrations/plugins.js +7 -0
- package/dist/{lib → integrations}/robots/utils.d.ts +0 -8
- package/dist/{lib → integrations}/robots/utils.js +1 -5
- package/dist/{lib → integrations}/webVitals/checkForWebVitalsPlugin.js +3 -3
- package/{src/lib → dist/integrations}/webVitals/dashboard-grid-items/CoreVitals.astro +1 -1
- package/{src/lib → dist/integrations}/webVitals/dashboard-grid-items/MetricCard.astro +3 -2
- package/dist/{lib → integrations}/webVitals/dashboard-grid-items/SummaryCard.astro +2 -2
- package/dist/{lib → integrations}/webVitals/dashboard-grid-items/metric.css +17 -17
- package/dist/{lib → integrations}/webVitals/dashboard-grid-items/shared.d.ts +4 -4
- package/dist/{lib → integrations}/webVitals/dashboard-grid-items/shared.js +3 -3
- package/{src/lib → dist/integrations}/webVitals/pages/analytics/body.astro +10 -9
- package/dist/{lib → integrations}/webVitals/utils/webVitalsUtils.d.ts +9 -9
- package/dist/layouts/AuthLayout.astro +63 -0
- package/dist/layouts/{dashboard/Layout.astro → DashboardLayout.astro} +22 -10
- package/{src/routes/firstTimeSetupRoutes/components/Layout.astro → dist/layouts/FirstTimeSetupLayout.astro} +15 -3
- package/dist/middleware/index.d.ts +9 -0
- package/dist/middleware/index.js +67 -89
- package/dist/middleware/utils.d.ts +59 -36
- package/dist/middleware/utils.js +59 -40
- package/dist/routes/api/auth/[provider]/callback.d.ts +1 -4
- package/dist/routes/api/auth/[provider]/callback.js +29 -11
- package/dist/routes/api/auth/[provider]/index.d.ts +1 -4
- package/dist/routes/api/auth/[provider]/index.js +29 -11
- package/dist/routes/api/auth/forgot-password.d.ts +1 -4
- package/dist/routes/api/auth/forgot-password.js +85 -66
- package/dist/routes/api/auth/login.d.ts +1 -4
- package/dist/routes/api/auth/login.js +63 -47
- package/dist/routes/api/auth/logout.d.ts +6 -5
- package/dist/routes/api/auth/logout.js +38 -24
- package/dist/routes/api/auth/register.d.ts +1 -4
- package/dist/routes/api/auth/register.js +74 -63
- package/dist/routes/api/auth/shared.d.ts +4 -4
- package/dist/routes/api/auth/shared.js +19 -26
- package/dist/routes/api/dashboard/api-tokens.d.ts +1 -5
- package/dist/routes/api/dashboard/api-tokens.js +70 -64
- package/dist/routes/api/dashboard/config.d.ts +1 -4
- package/dist/routes/api/dashboard/config.js +51 -33
- package/dist/routes/api/dashboard/content/diff.d.ts +1 -4
- package/dist/routes/api/dashboard/content/diff.js +50 -29
- package/dist/routes/api/dashboard/content/folder.d.ts +1 -6
- package/dist/routes/api/dashboard/content/folder.js +106 -86
- package/dist/routes/api/dashboard/content/page.d.ts +1 -5
- package/dist/routes/api/dashboard/content/page.js +207 -202
- package/dist/routes/api/dashboard/create-reset-link.d.ts +1 -4
- package/dist/routes/api/dashboard/create-reset-link.js +53 -40
- package/dist/routes/api/dashboard/create-user-invite.d.ts +1 -4
- package/dist/routes/api/dashboard/create-user-invite.js +128 -106
- package/dist/routes/api/dashboard/create-user.d.ts +1 -4
- package/dist/routes/api/dashboard/create-user.js +132 -68
- package/dist/routes/api/dashboard/email-notification-settings-site.d.ts +1 -4
- package/dist/routes/api/dashboard/email-notification-settings-site.js +47 -21
- package/dist/routes/api/dashboard/partials/LiveRender.astro +21 -16
- package/dist/routes/api/dashboard/plugins/[plugin].d.ts +1 -4
- package/dist/routes/api/dashboard/plugins/[plugin].js +57 -33
- package/dist/routes/api/dashboard/profile.d.ts +1 -4
- package/dist/routes/api/dashboard/profile.js +133 -95
- package/dist/routes/api/dashboard/resend-verify-email.d.ts +1 -4
- package/dist/routes/api/dashboard/resend-verify-email.js +55 -29
- package/dist/routes/api/dashboard/reset-password.d.ts +1 -4
- package/dist/routes/api/dashboard/reset-password.js +76 -50
- package/dist/routes/api/dashboard/search-list.d.ts +1 -4
- package/dist/routes/api/dashboard/search-list.js +45 -37
- package/dist/routes/api/dashboard/update-user-notifications.d.ts +1 -4
- package/dist/routes/api/dashboard/update-user-notifications.js +48 -36
- package/dist/routes/api/dashboard/users.d.ts +1 -5
- package/dist/routes/api/dashboard/users.js +150 -96
- package/dist/routes/api/dashboard/verify-email.d.ts +1 -4
- package/dist/routes/api/dashboard/verify-email.js +52 -33
- package/dist/routes/api/dashboard/verify-session.d.ts +2 -29
- package/dist/routes/api/dashboard/verify-session.js +85 -73
- package/dist/routes/api/mailer/config.d.ts +2 -6
- package/dist/routes/api/mailer/config.js +86 -72
- package/dist/routes/api/mailer/test-email.d.ts +1 -4
- package/dist/routes/api/mailer/test-email.js +56 -33
- package/dist/routes/api/render.astro +1 -1
- package/dist/routes/api/rest/utils/auth-token.d.ts +3 -3
- package/dist/routes/api/rest/utils/auth-token.js +1 -2
- package/dist/routes/api/rest/v1/folders/[id].d.ts +2 -7
- package/dist/routes/api/rest/v1/folders/[id].js +105 -94
- package/dist/routes/api/rest/v1/folders/index.d.ts +2 -6
- package/dist/routes/api/rest/v1/folders/index.js +82 -66
- package/dist/routes/api/rest/v1/pages/[id]/history/[diffid].d.ts +1 -4
- package/dist/routes/api/rest/v1/pages/[id]/history/[diffid].js +46 -34
- package/dist/routes/api/rest/v1/pages/[id]/history/index.d.ts +1 -4
- package/dist/routes/api/rest/v1/pages/[id]/history/index.js +44 -39
- package/dist/routes/api/rest/v1/pages/[id]/index.d.ts +1 -6
- package/dist/routes/api/rest/v1/pages/[id]/index.js +158 -151
- package/dist/routes/api/rest/v1/pages/index.d.ts +1 -5
- package/dist/routes/api/rest/v1/pages/index.js +112 -107
- package/dist/routes/api/rest/v1/public/folders/[id].d.ts +1 -4
- package/dist/routes/api/rest/v1/public/folders/[id].js +32 -23
- package/dist/routes/api/rest/v1/public/folders/index.d.ts +1 -4
- package/dist/routes/api/rest/v1/public/folders/index.js +43 -33
- package/dist/routes/api/rest/v1/public/pages/[id].d.ts +1 -4
- package/dist/routes/api/rest/v1/public/pages/[id].js +38 -26
- package/dist/routes/api/rest/v1/public/pages/index.d.ts +1 -4
- package/dist/routes/api/rest/v1/public/pages/index.js +47 -44
- package/dist/routes/api/rest/v1/settings/index.d.ts +1 -5
- package/dist/routes/api/rest/v1/settings/index.js +60 -54
- package/dist/routes/api/rest/v1/users/[id].d.ts +2 -7
- package/dist/routes/api/rest/v1/users/[id].js +257 -231
- package/dist/routes/api/rest/v1/users/index.d.ts +2 -6
- package/dist/routes/api/rest/v1/users/index.js +154 -136
- package/dist/routes/api/sdk/fallback-list-pages.json.d.ts +1 -4
- package/dist/routes/api/sdk/fallback-list-pages.json.js +26 -33
- package/dist/routes/api/sdk/full-changelog.json.d.ts +1 -4
- package/dist/routes/api/sdk/full-changelog.json.js +27 -26
- package/dist/routes/api/sdk/list-pages.d.ts +1 -4
- package/dist/routes/api/sdk/list-pages.js +36 -29
- package/dist/routes/api/sdk/update-latest-version-cache.d.ts +1 -4
- package/dist/routes/api/sdk/update-latest-version-cache.js +30 -28
- package/dist/routes/api/sdk/utils/changelog.d.ts +5 -21
- package/dist/routes/api/sdk/utils/changelog.js +25 -131
- package/dist/routes/auth/login.astro +68 -58
- package/dist/routes/auth/logout.astro +3 -3
- package/dist/routes/auth/signup.astro +9 -9
- package/dist/routes/dashboard/[...pluginPage].astro +4 -2
- package/dist/routes/dashboard/configuration.astro +7 -4
- package/dist/routes/dashboard/content-management/createfolder.astro +5 -3
- package/dist/routes/dashboard/content-management/createpage.astro +5 -3
- package/dist/routes/dashboard/content-management/diff.astro +19 -15
- package/dist/routes/dashboard/content-management/editfolder.astro +4 -2
- package/dist/routes/dashboard/content-management/editpage.astro +4 -2
- package/dist/routes/dashboard/content-management/index.astro +5 -3
- package/dist/routes/dashboard/index.astro +4 -2
- package/dist/routes/dashboard/password-reset.astro +13 -8
- package/dist/routes/dashboard/plugins/[plugin].astro +10 -7
- package/dist/routes/dashboard/profile.astro +9 -4
- package/dist/routes/dashboard/smtp-configuration.astro +30 -18
- package/dist/routes/dashboard/unverified-email.astro +9 -9
- package/dist/routes/dashboard/user-management/edit.astro +53 -39
- package/dist/routes/dashboard/user-management/index.astro +6 -4
- package/dist/routes/error-pages/404.astro +6 -4
- package/dist/routes/firstTimeSetupRoutes/1-start.astro +18 -110
- package/dist/routes/firstTimeSetupRoutes/2-next.astro +60 -44
- package/dist/routes/firstTimeSetupRoutes/3-done.astro +9 -11
- package/dist/routes/firstTimeSetupRoutes/api/step-1.d.ts +1 -4
- package/dist/routes/firstTimeSetupRoutes/api/step-1.js +98 -87
- package/dist/routes/firstTimeSetupRoutes/api/step-2.d.ts +1 -4
- package/dist/routes/firstTimeSetupRoutes/api/step-2.js +95 -87
- package/dist/routes/firstTimeSetupRoutes/index.astro +6 -0
- package/dist/runtime/index.d.ts +2 -2
- package/dist/runtime/index.js +2 -3
- package/dist/schemas/config/index.js +1 -1
- package/dist/schemas/plugins/index.d.ts +57 -57
- package/dist/schemas/plugins/shared.d.ts +196 -77
- package/dist/schemas/plugins/shared.js +10 -16
- package/dist/styles/404.css +1 -1
- package/dist/styles/{authlayout.css → auth-layout.css} +1 -1
- package/dist/styles/code-component.css +56 -0
- package/dist/styles/dashboard-base.css +31 -62
- package/dist/styles/dashboard-diff.css +32 -32
- package/dist/theme.d.ts +1 -0
- package/dist/types.d.ts +3 -23
- package/dist/{lib → utils}/effects/index.d.ts +0 -1
- package/dist/{lib → utils}/effects/index.js +0 -2
- package/dist/{lib → utils}/effects/logger.d.ts +2 -4
- package/dist/{lib → utils}/effects/logger.js +2 -4
- package/dist/utils/effects/smtp.d.ts +40 -0
- package/dist/utils/effects/smtp.js +75 -0
- package/dist/utils/safeString.d.ts +1 -1
- package/dist/utils/safeString.js +1 -3
- package/dist/utils/stripIconify.d.ts +13 -0
- package/dist/utils/stripIconify.js +11 -0
- package/dist/utils/tinyMDParser.d.ts +6 -0
- package/dist/utils/tinyMDParser.js +5 -5
- package/dist/virtual.d.ts +194 -236
- package/dist/virtuals/auth/core.d.ts +91 -0
- package/dist/virtuals/auth/core.js +45 -0
- package/dist/{lib → virtuals}/auth/index.d.ts +1 -4
- package/dist/virtuals/auth/index.js +9 -0
- package/dist/virtuals/auth/scripts/three.d.ts +108 -0
- package/dist/virtuals/auth/scripts/three.js +484 -0
- package/dist/virtuals/auth/scripts/utils/fitModelToViewport.d.ts +10 -0
- package/dist/virtuals/auth/scripts/utils/fitModelToViewport.js +26 -0
- package/dist/{utils/validImages.d.ts → virtuals/auth/validImages/index.d.ts} +1 -1
- package/dist/virtuals/auth/validImages/index.js +39 -0
- package/dist/virtuals/auth/validImages/studiocms-blobs-dark.webp +0 -0
- package/dist/virtuals/auth/validImages/studiocms-blobs-light.webp +0 -0
- package/dist/virtuals/auth/validImages/studiocms-blocks-dark.webp +0 -0
- package/dist/virtuals/auth/validImages/studiocms-blocks-light.webp +0 -0
- package/dist/virtuals/auth/validImages/studiocms-curves-dark.webp +0 -0
- package/dist/virtuals/auth/validImages/studiocms-curves-light.webp +0 -0
- package/dist/{lib → virtuals}/auth/verify-email.d.ts +10 -10
- package/dist/{lib → virtuals}/auth/verify-email.js +19 -20
- package/dist/virtuals/components/Generator.astro +5 -0
- package/{src → dist/virtuals}/components/Renderer.astro +1 -1
- package/{src/lib → dist/virtuals}/i18n/LanguageSelector.astro +1 -1
- package/dist/{lib → virtuals}/i18n/client.d.ts +100 -4
- package/dist/{lib → virtuals}/i18n/client.js +11 -10
- package/dist/virtuals/i18n/config.d.ts +430 -0
- package/dist/virtuals/i18n/config.js +29 -0
- package/dist/virtuals/i18n/server.d.ts +116 -0
- package/dist/{lib/i18n/index.js → virtuals/i18n/server.js} +6 -19
- package/dist/{lib → virtuals}/i18n/translations/de.json +1 -1
- package/dist/virtuals/i18n/v-files.d.ts +30 -0
- package/dist/virtuals/i18n/v-files.js +46 -0
- package/dist/virtuals/lib/head.d.ts +1 -0
- package/dist/virtuals/lib/head.js +1 -0
- package/dist/{lib → virtuals/lib}/headDefaults.d.ts +1 -1
- package/dist/{lib → virtuals/lib}/headDefaults.js +1 -1
- package/dist/{lib → virtuals/lib}/makeAPIRoute.d.ts +1 -1
- package/dist/virtuals/lib/pathGenerators.d.ts +1 -0
- package/dist/virtuals/lib/pathGenerators.js +1 -0
- package/dist/{lib → virtuals/lib}/routeMap.d.ts +4 -0
- package/dist/{lib → virtuals/lib}/routeMap.js +5 -1
- package/dist/{lib → virtuals/lib}/urlGen.d.ts +2 -1
- package/dist/virtuals/lib/urlGen.js +6 -0
- package/dist/virtuals/mailer/index.d.ts +64 -0
- package/dist/{lib → virtuals}/mailer/index.js +7 -24
- package/dist/{lib → virtuals}/notifier/index.d.ts +6 -7
- package/dist/{lib → virtuals}/notifier/index.js +2 -4
- package/dist/virtuals/plugins/dashboard-pages.d.ts +71 -0
- package/dist/virtuals/scripts/user-quick-tools.d.ts +91 -0
- package/dist/{components → virtuals/scripts}/user-quick-tools.js +135 -53
- package/dist/{sdk → virtuals/sdk}/effect/collectors.d.ts +2 -2
- package/dist/{sdk → virtuals/sdk}/effect/collectors.js +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/db.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/db.js +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/foldertree.d.ts +2 -2
- package/dist/{sdk → virtuals/sdk}/effect/foldertree.js +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/generators.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/generators.js +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/getVersionFromNPM.d.ts +4 -5
- package/dist/virtuals/sdk/effect/getVersionFromNPM.js +24 -0
- package/dist/{sdk → virtuals/sdk}/effect/parsers.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/parsers.js +2 -2
- package/dist/{sdk → virtuals/sdk}/effect/pluginUtils.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/pluginUtils.js +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/users.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/effect/users.js +2 -2
- package/dist/{sdk → virtuals/sdk}/errors.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/errors.js +1 -1
- package/dist/{sdk → virtuals/sdk}/index.d.ts +5 -4
- package/dist/{sdk → virtuals/sdk}/index.js +3 -4
- package/dist/{sdk → virtuals/sdk}/modules/auth.d.ts +7 -6
- package/dist/{sdk → virtuals/sdk}/modules/auth.js +2 -2
- package/dist/{sdk → virtuals/sdk}/modules/clear.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/clear.js +1 -1
- package/dist/virtuals/sdk/modules/config.d.ts +272 -0
- package/dist/virtuals/sdk/modules/config.js +205 -0
- package/dist/{sdk → virtuals/sdk}/modules/delete.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/delete.js +2 -2
- package/dist/{sdk → virtuals/sdk}/modules/diffTracking.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/diffTracking.js +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/get.d.ts +14 -27
- package/dist/{sdk → virtuals/sdk}/modules/get.js +29 -42
- package/dist/{sdk → virtuals/sdk}/modules/init.d.ts +5 -19
- package/dist/{sdk → virtuals/sdk}/modules/init.js +8 -9
- package/dist/{sdk → virtuals/sdk}/modules/middlewares.d.ts +2 -2
- package/dist/{sdk → virtuals/sdk}/modules/middlewares.js +18 -12
- package/dist/{sdk → virtuals/sdk}/modules/notificationSettings.d.ts +6 -23
- package/dist/{sdk → virtuals/sdk}/modules/notificationSettings.js +8 -30
- package/dist/{sdk → virtuals/sdk}/modules/plugins.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/plugins.js +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/post.d.ts +7 -7
- package/dist/{sdk → virtuals/sdk}/modules/post.js +15 -10
- package/dist/{sdk → virtuals/sdk}/modules/resetTokenBucket.d.ts +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/resetTokenBucket.js +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/rest_api.d.ts +2 -2
- package/dist/{sdk → virtuals/sdk}/modules/rest_api.js +1 -1
- package/dist/{sdk → virtuals/sdk}/modules/update.d.ts +26 -26
- package/dist/{sdk → virtuals/sdk}/modules/update.js +29 -26
- package/dist/{sdk → virtuals/sdk}/sdkCore.d.ts +6 -4
- package/dist/{sdk → virtuals/sdk}/sdkCore.js +10 -5
- package/dist/virtuals/sdk/tables.d.ts +2 -0
- package/dist/virtuals/sdk/tables.js +5 -0
- package/dist/{sdk → virtuals/sdk}/types/index.d.ts +6 -5
- package/dist/{sdk → virtuals/sdk}/types/tableDefs.d.ts +5 -4
- package/dist/{sdk → virtuals/sdk}/types/tsAlias.d.ts +4 -0
- package/dist/{sdk → virtuals/sdk}/utils.d.ts +4 -3
- package/dist/{sdk → virtuals/sdk}/utils.js +1 -1
- package/dist/virtuals/stubs/config.stub.js +9 -0
- package/dist/virtuals/stubs/logger.stub.js +30 -0
- package/dist/virtuals/utils.d.ts +71 -0
- package/dist/virtuals/utils.js +43 -0
- package/package.json +40 -67
- package/src/cli/add/index.ts +6 -7
- package/src/cli/crypto/genJWT/index.ts +14 -15
- package/src/cli/crypto/index.ts +4 -4
- package/src/cli/getTurso/index.ts +3 -4
- package/src/cli/index.ts +11 -10
- package/src/cli/init/index.ts +11 -12
- package/src/cli/users/index.ts +11 -12
- package/src/cli/users/steps/libsqlCreateUsers.ts +4 -3
- package/src/cli/users/steps/libsqlModifyUsers.ts +4 -3
- package/src/{layouts → components}/auth/FallbackCanvas.astro +1 -1
- package/src/components/auth/OAuthButton.astro +1 -1
- package/src/components/auth/OAuthButtonStack.astro +2 -2
- package/src/components/auth/StaticAuthCheck.astro +3 -3
- package/src/{scripts → components/auth/component-scripts}/formListener.ts +5 -1
- package/src/components/dashboard/BaseHead.astro +7 -18
- package/src/components/dashboard/DashboardGrid.astro +4 -4
- package/src/components/dashboard/DashboardGridItem.astro +3 -2
- package/src/components/dashboard/DashboardPageHeader.astro +11 -6
- package/src/components/dashboard/DoubleSidebar.astro +3 -3
- package/src/components/dashboard/Footer.astro +3 -7
- package/src/components/dashboard/LoginChecker.astro +17 -17
- package/src/components/dashboard/MainSidebarContent.astro +27 -18
- package/src/components/dashboard/PageHeader.astro +3 -2
- package/src/components/dashboard/SidebarLink.astro +148 -31
- package/src/components/dashboard/SidebarPluginLink.astro +4 -4
- package/src/components/dashboard/SingleSidebar.astro +3 -3
- package/src/components/dashboard/UserName.astro +2 -2
- package/src/components/dashboard/component-scripts/dateTimeListener.ts +5 -9
- package/src/components/dashboard/component-scripts/dateWithTimeAndZone.ts +11 -8
- package/src/components/dashboard/configuration/ConfigForm.astro +53 -152
- package/src/components/dashboard/configuration/LoginPreview.astro +275 -0
- package/src/components/dashboard/content-mgmt/CreateFolder.astro +6 -5
- package/src/components/dashboard/content-mgmt/CreatePage.astro +23 -47
- package/src/components/dashboard/content-mgmt/EditFolder.astro +5 -4
- package/src/components/dashboard/content-mgmt/EditPage.astro +36 -85
- package/src/components/dashboard/content-mgmt/InnerSidebarElement.astro +30 -22
- package/src/components/dashboard/content-mgmt/PageEditorSwapper.astro +107 -0
- package/src/components/dashboard/content-mgmt/PageHeader.astro +26 -18
- package/src/components/dashboard/content-mgmt/PageTypeHandler.astro +107 -0
- package/src/components/dashboard/content-mgmt/PluginFields.astro +6 -1
- package/src/components/dashboard/content-mgmt/TreeRenderer.astro +8 -8
- package/src/components/dashboard/content-mgmt/TreeSidebarFolder.astro +116 -24
- package/src/components/dashboard/content-mgmt/TreeSidebarLink.astro +116 -24
- package/src/components/dashboard/content-mgmt/runtime.ts +1 -1
- package/src/components/dashboard/plugins/SettingsRenderer.astro +6 -1
- package/src/components/dashboard/profile/APITokens.astro +18 -12
- package/src/components/dashboard/profile/BasicInfo.astro +17 -13
- package/src/components/dashboard/profile/Notifications.astro +20 -8
- package/src/components/dashboard/profile/SocialSignin.astro +11 -8
- package/src/components/dashboard/profile/UpdatePassword.astro +10 -7
- package/src/components/dashboard/profile/oAuthButtonProviders.ts +1 -20
- package/src/components/dashboard/shared.ts +1 -1
- package/src/components/dashboard/sidebar/UserAccount.astro +5 -6
- package/src/components/dashboard/sidebar/VersionCheck.astro +7 -7
- package/src/components/dashboard/sidebar/VersionCheckChangelog.astro +32 -8
- package/src/components/dashboard/sidebar-modals/UserManagementModals.astro +8 -3
- package/src/components/dashboard/sidebar-modals/VersionModal.astro +43 -24
- package/src/components/dashboard/sidebarConfig.ts +9 -9
- package/src/components/dashboard/user-mgmt/InnerSidebarElement.astro +20 -13
- package/src/components/dashboard/user-mgmt/RankCheck.astro +10 -10
- package/src/components/dashboard/user-mgmt/SocialSignin.astro +9 -10
- package/src/components/dashboard/user-mgmt/UserListItem.astro +86 -30
- package/src/components/default-grid-items/Recently-created-pages.astro +12 -10
- package/src/components/default-grid-items/Recently-signed-up.astro +9 -9
- package/src/components/default-grid-items/Recently-updated-pages.astro +12 -10
- package/src/components/default-grid-items/Totals.astro +11 -10
- package/src/{routes/firstTimeSetupRoutes/components → components/first-time-setup}/PageHeader.astro +4 -3
- package/src/components/shared/Code.astro +72 -0
- package/src/components/shared/SSRUser.astro +200 -0
- package/src/components/shared/head/Favicons.astro +6 -0
- package/src/components/shared/head/Global.astro +4 -0
- package/src/components/shared/head/TitleTags.astro +14 -0
- package/src/config.ts +1 -4
- package/src/consts.ts +94 -14
- package/src/db/config.ts +306 -3
- package/src/effect.ts +5 -10
- package/src/fonts/syntax-font.css +40 -0
- package/src/{utils → handlers}/astroConfigCheck.ts +1 -1
- package/src/handlers/changelog.ts +67 -0
- package/src/handlers/index.ts +4 -0
- package/src/{pluginHandler.ts → handlers/pluginHandler.ts} +359 -142
- package/src/{routeHandler.ts → handlers/routeHandler.ts} +8 -3
- package/src/index.ts +214 -259
- package/src/{lib → integrations}/dynamic-sitemap/index.ts +1 -1
- package/src/integrations/node-namespace.ts +44 -0
- package/src/integrations/plugins.ts +4 -0
- package/src/{lib → integrations}/robots/utils.ts +0 -11
- package/src/{lib → integrations}/webVitals/checkForWebVitalsPlugin.ts +3 -3
- package/{dist/lib → src/integrations}/webVitals/dashboard-grid-items/CoreVitals.astro +1 -1
- package/{dist/lib → src/integrations}/webVitals/dashboard-grid-items/MetricCard.astro +3 -2
- package/src/{lib → integrations}/webVitals/dashboard-grid-items/SummaryCard.astro +2 -2
- package/src/{lib → integrations}/webVitals/dashboard-grid-items/metric.css +17 -17
- package/src/{lib → integrations}/webVitals/dashboard-grid-items/shared.ts +7 -7
- package/{dist/lib → src/integrations}/webVitals/pages/analytics/body.astro +10 -9
- package/src/layouts/AuthLayout.astro +63 -0
- package/src/layouts/{dashboard/Layout.astro → DashboardLayout.astro} +22 -10
- package/{dist/routes/firstTimeSetupRoutes/components/Layout.astro → src/layouts/FirstTimeSetupLayout.astro} +15 -3
- package/src/middleware/index.ts +98 -111
- package/src/middleware/utils.ts +123 -113
- package/src/routes/api/auth/[provider]/callback.ts +31 -15
- package/src/routes/api/auth/[provider]/index.ts +31 -15
- package/src/routes/api/auth/forgot-password.ts +134 -128
- package/src/routes/api/auth/login.ts +80 -67
- package/src/routes/api/auth/logout.ts +59 -43
- package/src/routes/api/auth/register.ts +93 -85
- package/src/routes/api/auth/shared.ts +20 -30
- package/src/routes/api/dashboard/api-tokens.ts +112 -104
- package/src/routes/api/dashboard/config.ts +64 -48
- package/src/routes/api/dashboard/content/diff.ts +59 -38
- package/src/routes/api/dashboard/content/folder.ts +145 -135
- package/src/routes/api/dashboard/content/page.ts +274 -275
- package/src/routes/api/dashboard/create-reset-link.ts +73 -64
- package/src/routes/api/dashboard/create-user-invite.ts +158 -140
- package/src/routes/api/dashboard/create-user.ts +172 -106
- package/src/routes/api/dashboard/email-notification-settings-site.ts +69 -32
- package/src/routes/api/dashboard/partials/LiveRender.astro +21 -16
- package/src/routes/api/dashboard/plugins/[plugin].ts +65 -45
- package/src/routes/api/dashboard/profile.ts +159 -127
- package/src/routes/api/dashboard/resend-verify-email.ts +63 -35
- package/src/routes/api/dashboard/reset-password.ts +108 -77
- package/src/routes/api/dashboard/search-list.ts +50 -50
- package/src/routes/api/dashboard/update-user-notifications.ts +57 -45
- package/src/routes/api/dashboard/users.ts +202 -135
- package/src/routes/api/dashboard/verify-email.ts +57 -42
- package/src/routes/api/dashboard/verify-session.ts +102 -116
- package/src/routes/api/mailer/config.ts +120 -102
- package/src/routes/api/mailer/test-email.ts +73 -52
- package/src/routes/api/render.astro +1 -1
- package/src/routes/api/rest/utils/auth-token.ts +1 -2
- package/src/routes/api/rest/v1/folders/[id].ts +136 -133
- package/src/routes/api/rest/v1/folders/index.ts +102 -90
- package/src/routes/api/rest/v1/pages/[id]/history/[diffid].ts +59 -49
- package/src/routes/api/rest/v1/pages/[id]/history/index.ts +63 -65
- package/src/routes/api/rest/v1/pages/[id]/index.ts +184 -187
- package/src/routes/api/rest/v1/pages/index.ts +136 -137
- package/src/routes/api/rest/v1/public/folders/[id].ts +34 -28
- package/src/routes/api/rest/v1/public/folders/index.ts +54 -47
- package/src/routes/api/rest/v1/public/pages/[id].ts +47 -38
- package/src/routes/api/rest/v1/public/pages/index.ts +60 -62
- package/src/routes/api/rest/v1/settings/index.ts +91 -77
- package/src/routes/api/rest/v1/users/[id].ts +317 -294
- package/src/routes/api/rest/v1/users/index.ts +196 -179
- package/src/routes/api/sdk/fallback-list-pages.json.ts +28 -38
- package/src/routes/api/sdk/full-changelog.json.ts +29 -31
- package/src/routes/api/sdk/list-pages.ts +41 -37
- package/src/routes/api/sdk/update-latest-version-cache.ts +32 -34
- package/src/routes/api/sdk/utils/changelog.ts +29 -168
- package/src/routes/auth/login.astro +68 -58
- package/src/routes/auth/logout.astro +3 -3
- package/src/routes/auth/signup.astro +9 -9
- package/src/routes/dashboard/[...pluginPage].astro +4 -2
- package/src/routes/dashboard/configuration.astro +7 -4
- package/src/routes/dashboard/content-management/createfolder.astro +5 -3
- package/src/routes/dashboard/content-management/createpage.astro +5 -3
- package/src/routes/dashboard/content-management/diff.astro +19 -15
- package/src/routes/dashboard/content-management/editfolder.astro +4 -2
- package/src/routes/dashboard/content-management/editpage.astro +4 -2
- package/src/routes/dashboard/content-management/index.astro +5 -3
- package/src/routes/dashboard/index.astro +4 -2
- package/src/routes/dashboard/password-reset.astro +13 -8
- package/src/routes/dashboard/plugins/[plugin].astro +10 -7
- package/src/routes/dashboard/profile.astro +9 -4
- package/src/routes/dashboard/smtp-configuration.astro +30 -18
- package/src/routes/dashboard/unverified-email.astro +9 -9
- package/src/routes/dashboard/user-management/edit.astro +53 -39
- package/src/routes/dashboard/user-management/index.astro +6 -4
- package/src/routes/error-pages/404.astro +6 -4
- package/src/routes/firstTimeSetupRoutes/1-start.astro +18 -110
- package/src/routes/firstTimeSetupRoutes/2-next.astro +60 -44
- package/src/routes/firstTimeSetupRoutes/3-done.astro +9 -11
- package/src/routes/firstTimeSetupRoutes/api/step-1.ts +116 -98
- package/src/routes/firstTimeSetupRoutes/api/step-2.ts +114 -100
- package/src/routes/firstTimeSetupRoutes/index.astro +6 -0
- package/src/runtime/index.ts +2 -3
- package/src/schemas/config/index.ts +1 -1
- package/src/schemas/plugins/index.ts +1 -1
- package/src/schemas/plugins/shared.ts +149 -23
- package/src/styles/404.css +1 -1
- package/src/styles/{authlayout.css → auth-layout.css} +1 -1
- package/src/styles/code-component.css +64 -0
- package/src/styles/dashboard-base.css +31 -67
- package/src/styles/dashboard-diff.css +32 -32
- package/src/theme.d.ts +1 -0
- package/src/types.ts +4 -21
- package/src/{lib → utils}/effects/index.ts +0 -1
- package/src/{lib → utils}/effects/logger.ts +6 -10
- package/src/utils/effects/smtp.ts +155 -0
- package/src/utils/safeString.ts +1 -6
- package/src/utils/stripIconify.ts +20 -0
- package/src/utils/tinyMDParser.ts +13 -7
- package/src/virtual.d.ts +194 -236
- package/src/virtuals/auth/core.ts +82 -0
- package/src/{lib → virtuals}/auth/index.ts +1 -4
- package/src/virtuals/auth/scripts/three.ts +647 -0
- package/src/virtuals/auth/scripts/utils/fitModelToViewport.ts +50 -0
- package/src/{utils/validImages.ts → virtuals/auth/validImages/index.ts} +10 -10
- package/src/virtuals/auth/validImages/studiocms-blobs-dark.webp +0 -0
- package/src/virtuals/auth/validImages/studiocms-blobs-light.webp +0 -0
- package/src/virtuals/auth/validImages/studiocms-blocks-dark.webp +0 -0
- package/src/virtuals/auth/validImages/studiocms-blocks-light.webp +0 -0
- package/src/virtuals/auth/validImages/studiocms-curves-dark.webp +0 -0
- package/src/virtuals/auth/validImages/studiocms-curves-light.webp +0 -0
- package/src/{lib → virtuals}/auth/verify-email.ts +20 -21
- package/src/virtuals/components/Generator.astro +5 -0
- package/{dist → src/virtuals}/components/Renderer.astro +1 -1
- package/{dist/lib → src/virtuals}/i18n/LanguageSelector.astro +1 -1
- package/src/virtuals/i18n/client.ts +232 -0
- package/src/virtuals/i18n/config.ts +170 -0
- package/src/{lib/i18n/index.ts → virtuals/i18n/server.ts} +42 -46
- package/src/{lib → virtuals}/i18n/translations/de.json +1 -1
- package/src/virtuals/i18n/v-files.ts +122 -0
- package/src/virtuals/lib/head.ts +1 -0
- package/src/{lib → virtuals/lib}/headDefaults.ts +1 -1
- package/src/{lib → virtuals/lib}/makeAPIRoute.ts +1 -1
- package/src/virtuals/lib/pathGenerators.ts +1 -0
- package/src/{lib → virtuals/lib}/routeMap.ts +5 -0
- package/src/virtuals/lib/urlGen.ts +15 -0
- package/src/{lib → virtuals}/mailer/index.ts +10 -44
- package/src/{lib → virtuals}/notifier/index.ts +1 -3
- package/src/{components → virtuals/scripts}/user-quick-tools.ts +151 -59
- package/src/{sdk → virtuals/sdk}/effect/collectors.ts +2 -3
- package/src/{sdk → virtuals/sdk}/effect/db.ts +1 -1
- package/src/{sdk → virtuals/sdk}/effect/foldertree.ts +1 -1
- package/src/{sdk → virtuals/sdk}/effect/generators.ts +1 -1
- package/src/{sdk → virtuals/sdk}/effect/getVersionFromNPM.ts +5 -11
- package/src/{sdk → virtuals/sdk}/effect/parsers.ts +2 -2
- package/src/{sdk → virtuals/sdk}/effect/pluginUtils.ts +1 -1
- package/src/{sdk → virtuals/sdk}/effect/users.ts +2 -2
- package/src/{sdk → virtuals/sdk}/errors.ts +1 -1
- package/src/{sdk → virtuals/sdk}/index.ts +5 -6
- package/src/{sdk → virtuals/sdk}/modules/auth.ts +4 -3
- package/src/{sdk → virtuals/sdk}/modules/clear.ts +1 -1
- package/src/virtuals/sdk/modules/config.ts +602 -0
- package/src/{sdk → virtuals/sdk}/modules/delete.ts +2 -2
- package/src/{sdk → virtuals/sdk}/modules/diffTracking.ts +1 -1
- package/src/{sdk → virtuals/sdk}/modules/get.ts +34 -50
- package/src/{sdk → virtuals/sdk}/modules/init.ts +19 -27
- package/src/{sdk → virtuals/sdk}/modules/middlewares.ts +24 -13
- package/src/{sdk → virtuals/sdk}/modules/notificationSettings.ts +9 -45
- package/src/{sdk → virtuals/sdk}/modules/plugins.ts +1 -1
- package/src/{sdk → virtuals/sdk}/modules/post.ts +18 -19
- package/src/{sdk → virtuals/sdk}/modules/resetTokenBucket.ts +1 -1
- package/src/{sdk → virtuals/sdk}/modules/rest_api.ts +1 -1
- package/src/{sdk → virtuals/sdk}/modules/update.ts +32 -30
- package/src/{sdk → virtuals/sdk}/sdkCore.ts +6 -1
- package/src/virtuals/sdk/tables.ts +2 -0
- package/src/{sdk → virtuals/sdk}/types/index.ts +6 -10
- package/src/{sdk → virtuals/sdk}/types/tableDefs.ts +4 -4
- package/src/{sdk → virtuals/sdk}/types/tsAlias.ts +4 -0
- package/src/{sdk → virtuals/sdk}/utils.ts +3 -3
- package/src/virtuals/stubs/config.stub.js +9 -0
- package/src/virtuals/stubs/logger.stub.js +30 -0
- package/src/virtuals/utils.ts +134 -0
- package/ui.d.ts +1301 -274
- package/dist/componentRegistry/PropsParser.d.ts +0 -15
- package/dist/componentRegistry/PropsParser.js +0 -214
- package/dist/componentRegistry/Registry.d.ts +0 -46
- package/dist/componentRegistry/Registry.js +0 -79
- package/dist/componentRegistry/convert-hyphens.d.ts +0 -14
- package/dist/componentRegistry/convert-hyphens.js +0 -10
- package/dist/componentRegistry/errors.d.ts +0 -67
- package/dist/componentRegistry/errors.js +0 -12
- package/dist/componentRegistry/handler.d.ts +0 -34
- package/dist/componentRegistry/handler.js +0 -110
- package/dist/componentRegistry/index.d.ts +0 -6
- package/dist/componentRegistry/index.js +0 -6
- package/dist/componentRegistry/runtime.d.ts +0 -46
- package/dist/componentRegistry/runtime.js +0 -61
- package/dist/componentRegistry/types.d.ts +0 -59
- package/dist/components/Generator.astro +0 -5
- package/dist/components/dashboard/AstroCodeDiffsScript.astro +0 -25
- package/dist/components/dashboard/Code.astro +0 -23
- package/dist/components/dashboard/component-scripts/makeClientRoutable.d.ts +0 -1
- package/dist/components/dashboard/component-scripts/makeClientRoutable.js +0 -9
- package/dist/components/dashboard/configuration/LightVsDark.astro +0 -67
- package/dist/components/user-quick-tools.d.ts +0 -90
- package/dist/db/tables.js +0 -217
- package/dist/layouts/auth/AuthLayout.astro +0 -71
- package/dist/lib/auth/encryption.d.ts +0 -46
- package/dist/lib/auth/encryption.js +0 -83
- package/dist/lib/auth/index.js +0 -12
- package/dist/lib/auth/password.d.ts +0 -45
- package/dist/lib/auth/password.js +0 -113
- package/dist/lib/auth/session.d.ts +0 -77
- package/dist/lib/auth/session.js +0 -147
- package/dist/lib/auth/user.d.ts +0 -155
- package/dist/lib/auth/user.js +0 -251
- package/dist/lib/auth/utils/lists/passwords.d.ts +0 -2
- package/dist/lib/auth/utils/lists/passwords.js +0 -10006
- package/dist/lib/auth/utils/lists/usernames.d.ts +0 -2
- package/dist/lib/auth/utils/lists/usernames.js +0 -547
- package/dist/lib/auth/utils/scrypt.d.ts +0 -104
- package/dist/lib/auth/utils/scrypt.js +0 -55
- package/dist/lib/auth/utils/unsafeCheck.d.ts +0 -34
- package/dist/lib/auth/utils/unsafeCheck.js +0 -38
- package/dist/lib/dashboardGrid.d.ts +0 -119
- package/dist/lib/dashboardGrid.js +0 -0
- package/dist/lib/effects/convertToVanilla.d.ts +0 -10
- package/dist/lib/effects/convertToVanilla.js +0 -5
- package/dist/lib/effects/smtp.config.d.ts +0 -212
- package/dist/lib/effects/smtp.config.js +0 -123
- package/dist/lib/effects/smtp.d.ts +0 -269
- package/dist/lib/effects/smtp.js +0 -186
- package/dist/lib/endpointResponses.d.ts +0 -2
- package/dist/lib/endpointResponses.js +0 -21
- package/dist/lib/head.d.ts +0 -25
- package/dist/lib/head.js +0 -73
- package/dist/lib/i18n/config.d.ts +0 -16
- package/dist/lib/i18n/config.js +0 -8
- package/dist/lib/i18n/index.d.ts +0 -2471
- package/dist/lib/index.d.ts +0 -7
- package/dist/lib/index.js +0 -7
- package/dist/lib/jsonUtils.d.ts +0 -2
- package/dist/lib/jsonUtils.js +0 -14
- package/dist/lib/mailer/index.d.ts +0 -267
- package/dist/lib/pathGenerators.d.ts +0 -20
- package/dist/lib/pathGenerators.js +0 -66
- package/dist/lib/plugins/dashboard-pages.d.ts +0 -71
- package/dist/lib/removeLeadingTrailingSlashes.d.ts +0 -7
- package/dist/lib/removeLeadingTrailingSlashes.js +0 -13
- package/dist/lib/renderer/errors.d.ts +0 -5
- package/dist/lib/renderer/errors.js +0 -25
- package/dist/lib/urlGen.js +0 -26
- package/dist/lib/webVitals/types.js +0 -0
- package/dist/routes/firstTimeSetupRoutes/components/TabItem.astro +0 -44
- package/dist/routes/firstTimeSetupRoutes/components/Tabs.astro +0 -170
- package/dist/runtime/AstroComponentProxy.d.ts +0 -31
- package/dist/runtime/AstroComponentProxy.js +0 -47
- package/dist/runtime/decoder/decode-codepoint.d.ts +0 -18
- package/dist/runtime/decoder/decode-codepoint.js +0 -58
- package/dist/runtime/decoder/decode-data-html.d.ts +0 -1
- package/dist/runtime/decoder/decode-data-html.js +0 -7
- package/dist/runtime/decoder/decode-data-xml.d.ts +0 -1
- package/dist/runtime/decoder/decode-data-xml.js +0 -7
- package/dist/runtime/decoder/index.d.ts +0 -34
- package/dist/runtime/decoder/index.js +0 -18
- package/dist/runtime/decoder/util.d.ts +0 -208
- package/dist/runtime/decoder/util.js +0 -415
- package/dist/scriptHandler.d.ts +0 -30
- package/dist/scriptHandler.js +0 -25
- package/dist/scripts/three.d.ts +0 -1
- package/dist/scripts/three.js +0 -278
- package/dist/scripts/utils/fitModelToViewport.d.ts +0 -8
- package/dist/scripts/utils/fitModelToViewport.js +0 -19
- package/dist/sdk/effect/convertToVanilla.d.ts +0 -1
- package/dist/sdk/effect/convertToVanilla.js +0 -4
- package/dist/sdk/effect/getVersionFromNPM.js +0 -30
- package/dist/sdk/tables.d.ts +0 -1405
- package/dist/sdk/tables.js +0 -70
- package/dist/utils/addIntegrationArray.d.ts +0 -24
- package/dist/utils/addIntegrationArray.js +0 -11
- package/dist/utils/addIntegrationArrayWithCheck.d.ts +0 -11
- package/dist/utils/addIntegrationArrayWithCheck.js +0 -24
- package/dist/utils/astroEnvConfig.d.ts +0 -45
- package/dist/utils/astroEnvConfig.js +0 -9
- package/dist/utils/authEnvCheck.d.ts +0 -38
- package/dist/utils/authEnvCheck.js +0 -82
- package/dist/utils/changelog.d.ts +0 -1
- package/dist/utils/changelog.js +0 -53
- package/dist/utils/changelogLoader.d.ts +0 -15
- package/dist/utils/changelogLoader.js +0 -104
- package/dist/utils/dynamicResult.d.ts +0 -17
- package/dist/utils/dynamicResult.js +0 -0
- package/dist/utils/getLatestVersion.d.ts +0 -12
- package/dist/utils/getLatestVersion.js +0 -36
- package/dist/utils/integrationLogger.d.ts +0 -7
- package/dist/utils/integrationLogger.js +0 -18
- package/dist/utils/integrations.d.ts +0 -4
- package/dist/utils/integrations.js +0 -32
- package/dist/utils/isDashboardRoute.d.ts +0 -7
- package/dist/utils/isDashboardRoute.js +0 -10
- package/dist/utils/jsonParse.d.ts +0 -9
- package/dist/utils/jsonParse.js +0 -6
- 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 +0 -3
- package/dist/utils/makePageTitle.js +0 -7
- package/dist/utils/pageListPackageLabel.d.ts +0 -4
- package/dist/utils/pageListPackageLabel.js +0 -12
- package/dist/utils/pageTypeFilter.d.ts +0 -2
- package/dist/utils/pageTypeFilter.js +0 -16
- package/dist/utils/pluginLogger.d.ts +0 -2
- package/dist/utils/pluginLogger.js +0 -7
- package/dist/utils/readJson.d.ts +0 -1
- package/dist/utils/readJson.js +0 -7
- package/dist/utils/tryCatch.d.ts +0 -10
- package/dist/utils/tryCatch.js +0 -15
- package/dist/utils/validImages.js +0 -39
- package/src/componentRegistry/PropsParser.ts +0 -270
- package/src/componentRegistry/Registry.ts +0 -119
- package/src/componentRegistry/convert-hyphens.ts +0 -21
- package/src/componentRegistry/errors.ts +0 -58
- package/src/componentRegistry/handler.ts +0 -185
- package/src/componentRegistry/index.ts +0 -6
- package/src/componentRegistry/runtime.ts +0 -105
- package/src/componentRegistry/types.ts +0 -63
- package/src/components/Generator.astro +0 -5
- package/src/components/dashboard/AstroCodeDiffsScript.astro +0 -25
- package/src/components/dashboard/Code.astro +0 -23
- package/src/components/dashboard/ThemeManager.astro +0 -53
- package/src/components/dashboard/component-scripts/makeClientRoutable.ts +0 -7
- package/src/components/dashboard/configuration/LightVsDark.astro +0 -67
- package/src/db/tables.ts +0 -226
- package/src/layouts/auth/AuthLayout.astro +0 -71
- package/src/layouts/auth/ThemeManager.astro +0 -53
- package/src/lib/auth/encryption.ts +0 -149
- package/src/lib/auth/password.ts +0 -212
- package/src/lib/auth/session.ts +0 -291
- package/src/lib/auth/user.ts +0 -501
- package/src/lib/auth/utils/lists/passwords.ts +0 -10004
- package/src/lib/auth/utils/lists/usernames.ts +0 -546
- package/src/lib/auth/utils/scrypt.ts +0 -142
- package/src/lib/auth/utils/unsafeCheck.ts +0 -71
- package/src/lib/dashboardGrid.ts +0 -139
- package/src/lib/effects/convertToVanilla.ts +0 -12
- package/src/lib/effects/smtp.config.ts +0 -123
- package/src/lib/effects/smtp.ts +0 -338
- package/src/lib/endpointResponses.ts +0 -20
- package/src/lib/head.ts +0 -114
- package/src/lib/i18n/client.ts +0 -128
- package/src/lib/i18n/config.ts +0 -19
- package/src/lib/index.ts +0 -7
- package/src/lib/jsonUtils.ts +0 -11
- package/src/lib/pathGenerators.ts +0 -72
- package/src/lib/removeLeadingTrailingSlashes.ts +0 -21
- package/src/lib/renderer/errors.ts +0 -29
- package/src/lib/urlGen.ts +0 -40
- package/src/routes/firstTimeSetupRoutes/components/TabItem.astro +0 -44
- package/src/routes/firstTimeSetupRoutes/components/Tabs.astro +0 -170
- package/src/runtime/AstroComponentProxy.ts +0 -93
- package/src/runtime/decoder/decode-codepoint.ts +0 -76
- package/src/runtime/decoder/decode-data-html.ts +0 -6
- package/src/runtime/decoder/decode-data-xml.ts +0 -6
- package/src/runtime/decoder/index.ts +0 -49
- package/src/runtime/decoder/util.ts +0 -587
- package/src/scriptHandler.ts +0 -86
- package/src/scripts/three.ts +0 -415
- package/src/scripts/utils/fitModelToViewport.ts +0 -36
- package/src/sdk/effect/convertToVanilla.ts +0 -1
- package/src/sdk/tables.ts +0 -129
- package/src/styles/dashboard-code.css +0 -56
- package/src/utils/addIntegrationArray.ts +0 -35
- package/src/utils/addIntegrationArrayWithCheck.ts +0 -41
- package/src/utils/astroEnvConfig.ts +0 -12
- package/src/utils/authEnvCheck.ts +0 -144
- package/src/utils/changelog.ts +0 -67
- package/src/utils/changelogLoader.ts +0 -138
- package/src/utils/dynamicResult.ts +0 -19
- package/src/utils/getLatestVersion.ts +0 -67
- package/src/utils/integrationLogger.ts +0 -24
- package/src/utils/integrations.ts +0 -32
- package/src/utils/isDashboardRoute.ts +0 -19
- package/src/utils/jsonParse.ts +0 -11
- package/src/utils/loginBackgrounds/studiocms-blobs-dark.png +0 -0
- package/src/utils/loginBackgrounds/studiocms-blobs-light.png +0 -0
- package/src/utils/loginBackgrounds/studiocms-blocks-dark.png +0 -0
- package/src/utils/loginBackgrounds/studiocms-blocks-light.png +0 -0
- package/src/utils/loginBackgrounds/studiocms-curves-dark.png +0 -0
- package/src/utils/loginBackgrounds/studiocms-curves-light.png +0 -0
- package/src/utils/makePageTitle.ts +0 -11
- package/src/utils/pageListPackageLabel.ts +0 -19
- package/src/utils/pageTypeFilter.ts +0 -13
- package/src/utils/pluginLogger.ts +0 -6
- package/src/utils/readJson.ts +0 -5
- package/src/utils/tryCatch.ts +0 -29
- /package/dist/{layouts → components}/auth/ThreeCanvasLoader.astro +0 -0
- /package/dist/components/{dashboard → shared}/ThemeManager.astro +0 -0
- /package/dist/{styles → fonts}/OnestFont.woff2 +0 -0
- /package/dist/{styles → fonts}/SyntaxFont.woff2 +0 -0
- /package/dist/{styles → fonts}/onest-font.css +0 -0
- /package/dist/{utils → handlers}/astroConfigCheck.d.ts +0 -0
- /package/dist/{lib → integrations}/dynamic-sitemap/index.d.ts +0 -0
- /package/dist/{lib → integrations}/dynamic-sitemap/sitemap-index.xml.d.ts +0 -0
- /package/dist/{lib → integrations}/dynamic-sitemap/sitemap-index.xml.js +0 -0
- /package/dist/{lib → integrations}/robots/core.d.ts +0 -0
- /package/dist/{lib → integrations}/robots/core.js +0 -0
- /package/dist/{lib → integrations}/robots/index.d.ts +0 -0
- /package/dist/{lib → integrations}/robots/index.js +0 -0
- /package/dist/{lib → integrations}/robots/schema.d.ts +0 -0
- /package/dist/{lib → integrations}/robots/schema.js +0 -0
- /package/dist/{lib → integrations}/webVitals/checkForWebVitalsPlugin.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/consts.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/consts.js +0 -0
- /package/dist/{lib → integrations}/webVitals/pages/analytics/header.astro +0 -0
- /package/dist/{lib → integrations}/webVitals/schemas.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/schemas.js +0 -0
- /package/dist/{lib → integrations}/webVitals/types.d.ts +0 -0
- /package/dist/{componentRegistry → integrations/webVitals}/types.js +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/buildDataObject.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/buildDataObject.js +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/buildPageRouteDataObject.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/buildPageRouteDataObject.js +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/buildPerPageDataObject.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/buildPerPageDataObject.js +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/checkDate.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/checkDate.js +0 -0
- /package/dist/{lib → integrations}/webVitals/utils/webVitalsUtils.js +0 -0
- /package/dist/{lib → integrations}/webVitals/webVital.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/webVital.js +0 -0
- /package/dist/{lib → integrations}/webVitals/webVitalsRouteSummary.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/webVitalsRouteSummary.js +0 -0
- /package/dist/{lib → integrations}/webVitals/webVitalsSummary.d.ts +0 -0
- /package/dist/{lib → integrations}/webVitals/webVitalsSummary.js +0 -0
- /package/dist/{utils → virtuals/auth}/getLabelForPermissionLevel.d.ts +0 -0
- /package/dist/{utils → virtuals/auth}/getLabelForPermissionLevel.js +0 -0
- /package/dist/{lib → virtuals}/auth/types.d.ts +0 -0
- /package/dist/{lib → virtuals}/auth/types.js +0 -0
- /package/dist/{components/image → virtuals/components}/CustomImage.astro +0 -0
- /package/dist/{components → virtuals/components}/FormattedDate.astro +0 -0
- /package/dist/{lib → virtuals}/i18n/translations/en.json +0 -0
- /package/dist/{lib → virtuals}/i18n/translations/es.json +0 -0
- /package/dist/{lib → virtuals}/i18n/translations/fr.json +0 -0
- /package/dist/{lib → virtuals}/i18n/translations/hi.json +0 -0
- /package/dist/{lib → virtuals}/i18n/translations/zh.json +0 -0
- /package/dist/{lib → virtuals/lib}/makeAPIRoute.js +0 -0
- /package/dist/{lib → virtuals/lib}/makePublicRoute.d.ts +0 -0
- /package/dist/{lib → virtuals/lib}/makePublicRoute.js +0 -0
- /package/dist/{lib → virtuals}/mailer/template.d.ts +0 -0
- /package/dist/{lib → virtuals}/mailer/template.js +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/index.d.ts +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/index.js +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/notification.d.ts +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/notification.js +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/password-reset.d.ts +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/password-reset.js +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/user-invite.d.ts +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/user-invite.js +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/verify-email.d.ts +0 -0
- /package/dist/{lib → virtuals}/mailer/templates/verify-email.js +0 -0
- /package/dist/{lib → virtuals}/notifier/client.d.ts +0 -0
- /package/dist/{lib → virtuals}/notifier/client.js +0 -0
- /package/dist/{lib → virtuals}/plugins/dashboard-pages.js +0 -0
- /package/dist/{lib → virtuals}/plugins/frontend-navigation.d.ts +0 -0
- /package/dist/{lib → virtuals}/plugins/frontend-navigation.js +0 -0
- /package/dist/{lib → virtuals}/plugins/index.d.ts +0 -0
- /package/dist/{lib → virtuals}/plugins/index.js +0 -0
- /package/dist/{sdk → virtuals/sdk}/consts.d.ts +0 -0
- /package/dist/{sdk → virtuals/sdk}/consts.js +0 -0
- /package/dist/{sdk → virtuals/sdk}/effect/index.d.ts +0 -0
- /package/dist/{sdk → virtuals/sdk}/effect/index.js +0 -0
- /package/dist/{sdk → virtuals/sdk}/effect/lib/jwt-generator.d.ts +0 -0
- /package/dist/{sdk → virtuals/sdk}/effect/lib/jwt-generator.js +0 -0
- /package/dist/{sdk → virtuals/sdk}/types/index.js +0 -0
- /package/dist/{sdk → virtuals/sdk}/types/tableDefs.js +0 -0
- /package/dist/{sdk → virtuals/sdk}/types/tsAlias.js +0 -0
- /package/src/{layouts → components}/auth/ThreeCanvasLoader.astro +0 -0
- /package/src/{routes/firstTimeSetupRoutes → components/first-time-setup}/snippets/opt1-astro.config.diff +0 -0
- /package/src/{routes/firstTimeSetupRoutes → components/first-time-setup}/snippets/opt2-astro.config.diff +0 -0
- /package/src/{routes/firstTimeSetupRoutes → components/first-time-setup}/snippets/opt2-studiocms.config.diff +0 -0
- /package/{dist/layouts/auth → src/components/shared}/ThemeManager.astro +0 -0
- /package/src/{styles → fonts}/OnestFont.woff2 +0 -0
- /package/src/{styles → fonts}/SyntaxFont.woff2 +0 -0
- /package/src/{styles → fonts}/onest-font.css +0 -0
- /package/src/{lib → integrations}/dynamic-sitemap/sitemap-index.xml.ts +0 -0
- /package/src/{lib → integrations}/robots/core.ts +0 -0
- /package/src/{lib → integrations}/robots/index.ts +0 -0
- /package/src/{lib → integrations}/robots/schema.ts +0 -0
- /package/src/{lib → integrations}/webVitals/consts.ts +0 -0
- /package/src/{lib → integrations}/webVitals/pages/analytics/header.astro +0 -0
- /package/src/{lib → integrations}/webVitals/schemas.ts +0 -0
- /package/src/{lib → integrations}/webVitals/types.ts +0 -0
- /package/src/{lib → integrations}/webVitals/utils/buildDataObject.ts +0 -0
- /package/src/{lib → integrations}/webVitals/utils/buildPageRouteDataObject.ts +0 -0
- /package/src/{lib → integrations}/webVitals/utils/buildPerPageDataObject.ts +0 -0
- /package/src/{lib → integrations}/webVitals/utils/checkDate.ts +0 -0
- /package/src/{lib → integrations}/webVitals/utils/webVitalsUtils.ts +0 -0
- /package/src/{lib → integrations}/webVitals/webVital.ts +0 -0
- /package/src/{lib → integrations}/webVitals/webVitalsRouteSummary.ts +0 -0
- /package/src/{lib → integrations}/webVitals/webVitalsSummary.ts +0 -0
- /package/src/{utils → virtuals/auth}/getLabelForPermissionLevel.ts +0 -0
- /package/src/{lib → virtuals}/auth/types.ts +0 -0
- /package/src/{components/image → virtuals/components}/CustomImage.astro +0 -0
- /package/src/{components → virtuals/components}/FormattedDate.astro +0 -0
- /package/src/{lib → virtuals}/i18n/translations/en.json +0 -0
- /package/src/{lib → virtuals}/i18n/translations/es.json +0 -0
- /package/src/{lib → virtuals}/i18n/translations/fr.json +0 -0
- /package/src/{lib → virtuals}/i18n/translations/hi.json +0 -0
- /package/src/{lib → virtuals}/i18n/translations/zh.json +0 -0
- /package/src/{lib → virtuals/lib}/makePublicRoute.ts +0 -0
- /package/src/{lib → virtuals}/mailer/template.ts +0 -0
- /package/src/{lib → virtuals}/mailer/templates/index.ts +0 -0
- /package/src/{lib → virtuals}/mailer/templates/notification.ts +0 -0
- /package/src/{lib → virtuals}/mailer/templates/password-reset.ts +0 -0
- /package/src/{lib → virtuals}/mailer/templates/user-invite.ts +0 -0
- /package/src/{lib → virtuals}/mailer/templates/verify-email.ts +0 -0
- /package/src/{lib → virtuals}/notifier/client.ts +0 -0
- /package/src/{lib → virtuals}/plugins/dashboard-pages.ts +0 -0
- /package/src/{lib → virtuals}/plugins/frontend-navigation.ts +0 -0
- /package/src/{lib → virtuals}/plugins/index.ts +0 -0
- /package/src/{sdk → virtuals/sdk}/consts.ts +0 -0
- /package/src/{sdk → virtuals/sdk}/effect/index.ts +0 -0
- /package/src/{sdk → virtuals/sdk}/effect/lib/jwt-generator.ts +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/// <reference types="astro/client" />
|
|
2
2
|
import type { ImageMetadata } from 'astro';
|
|
3
|
-
import studiocmsBlobsDark from './
|
|
4
|
-
import studiocmsBlobsLight from './
|
|
5
|
-
import studiocmsBlocksDark from './
|
|
6
|
-
import studiocmsBlocksLight from './
|
|
7
|
-
import studiocmsCurvesDark from './
|
|
8
|
-
import studiocmsCurvesLight from './
|
|
3
|
+
import studiocmsBlobsDark from './studiocms-blobs-dark.webp';
|
|
4
|
+
import studiocmsBlobsLight from './studiocms-blobs-light.webp';
|
|
5
|
+
import studiocmsBlocksDark from './studiocms-blocks-dark.webp';
|
|
6
|
+
import studiocmsBlocksLight from './studiocms-blocks-light.webp';
|
|
7
|
+
import studiocmsCurvesDark from './studiocms-curves-dark.webp';
|
|
8
|
+
import studiocmsCurvesLight from './studiocms-curves-light.webp';
|
|
9
9
|
|
|
10
10
|
interface ValidImage {
|
|
11
11
|
readonly name: string;
|
|
12
12
|
readonly label: string;
|
|
13
|
-
readonly format: '
|
|
13
|
+
readonly format: 'local' | 'web';
|
|
14
14
|
readonly light: ImageMetadata | null;
|
|
15
15
|
readonly dark: ImageMetadata | null;
|
|
16
16
|
}
|
|
@@ -22,21 +22,21 @@ const validImages: ValidImage[] = [
|
|
|
22
22
|
{
|
|
23
23
|
name: 'studiocms-blobs',
|
|
24
24
|
label: 'Blobs',
|
|
25
|
-
format: '
|
|
25
|
+
format: 'local',
|
|
26
26
|
light: studiocmsBlobsLight,
|
|
27
27
|
dark: studiocmsBlobsDark,
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
name: 'studiocms-blocks',
|
|
31
31
|
label: 'Blocks',
|
|
32
|
-
format: '
|
|
32
|
+
format: 'local',
|
|
33
33
|
light: studiocmsBlocksLight,
|
|
34
34
|
dark: studiocmsBlocksDark,
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'studiocms-curves',
|
|
38
38
|
label: 'Curves',
|
|
39
|
-
format: '
|
|
39
|
+
format: 'local',
|
|
40
40
|
light: studiocmsCurvesLight,
|
|
41
41
|
dark: studiocmsCurvesDark,
|
|
42
42
|
},
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -4,9 +4,8 @@ import { Mailer } from 'studiocms:mailer';
|
|
|
4
4
|
import getTemplate from 'studiocms:mailer/templates';
|
|
5
5
|
import { SDKCoreJs as sdk } from 'studiocms:sdk';
|
|
6
6
|
import type { CombinedUserData } from 'studiocms:sdk/types';
|
|
7
|
-
import { Data, Effect } from 'effect';
|
|
8
7
|
import { CMSNotificationSettingsId } from '../../consts.js';
|
|
9
|
-
import { genLogger, pipeLogger } from '
|
|
8
|
+
import { Data, Effect, genLogger, pipeLogger } from '../../effect.js';
|
|
10
9
|
import type { UserSessionData } from './types.js';
|
|
11
10
|
|
|
12
11
|
export class VerifyEmailError extends Data.TaggedError('VerifyEmailError')<{ message: string }> {}
|
|
@@ -35,16 +34,16 @@ export class VerifyEmailError extends Data.TaggedError('VerifyEmailError')<{ mes
|
|
|
35
34
|
* - `generateUrl`: Generates a URL with the given base, path, and query parameters.
|
|
36
35
|
*/
|
|
37
36
|
export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
38
|
-
'studiocms/
|
|
37
|
+
'studiocms/virtuals/auth/verify-email/VerifyEmail',
|
|
39
38
|
{
|
|
40
|
-
effect: genLogger('studiocms/
|
|
39
|
+
effect: genLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.effect')(function* () {
|
|
41
40
|
const MailService = yield* Mailer;
|
|
42
41
|
|
|
43
42
|
/**
|
|
44
43
|
* @private
|
|
45
44
|
*/
|
|
46
45
|
const getMailerStatus = () =>
|
|
47
|
-
pipeLogger('studiocms/
|
|
46
|
+
pipeLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.getMailerStatus')(
|
|
48
47
|
MailService.isEnabled
|
|
49
48
|
);
|
|
50
49
|
|
|
@@ -55,7 +54,7 @@ export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
|
55
54
|
* @returns The notification settings.
|
|
56
55
|
*/
|
|
57
56
|
const getSettings = () =>
|
|
58
|
-
genLogger('studiocms/
|
|
57
|
+
genLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.getSettings')(function* () {
|
|
59
58
|
const settings = yield* sdk.GET.databaseTable.notificationSettings();
|
|
60
59
|
|
|
61
60
|
if (!settings) {
|
|
@@ -80,7 +79,7 @@ export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
|
80
79
|
*
|
|
81
80
|
*/
|
|
82
81
|
const isEmailVerificationEnabled = () =>
|
|
83
|
-
genLogger('studiocms/
|
|
82
|
+
genLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.isEmailVerificationEnabled')(
|
|
84
83
|
function* () {
|
|
85
84
|
const mailer = yield* getMailerStatus();
|
|
86
85
|
const settings = yield* getSettings();
|
|
@@ -96,7 +95,7 @@ export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
|
96
95
|
* @returns A promise that resolves to the email verification request.
|
|
97
96
|
*/
|
|
98
97
|
const getEmailVerificationRequest = (id: string) =>
|
|
99
|
-
pipeLogger('studiocms/
|
|
98
|
+
pipeLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.getEmailVerificationRequest')(
|
|
100
99
|
sdk.AUTH.verifyEmail.get(id)
|
|
101
100
|
);
|
|
102
101
|
|
|
@@ -107,9 +106,9 @@ export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
|
107
106
|
* @returns A promise that resolves when the email verification request is successfully deleted.
|
|
108
107
|
*/
|
|
109
108
|
const deleteEmailVerificationRequest = (id: string) =>
|
|
110
|
-
pipeLogger(
|
|
111
|
-
|
|
112
|
-
);
|
|
109
|
+
pipeLogger(
|
|
110
|
+
'studiocms/virtuals/auth/verify-email/VerifyEmail.deleteEmailVerificationRequest'
|
|
111
|
+
)(sdk.AUTH.verifyEmail.delete(id));
|
|
113
112
|
|
|
114
113
|
/**
|
|
115
114
|
* Creates an email verification request for a given user.
|
|
@@ -121,18 +120,18 @@ export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
|
121
120
|
* @returns A promise that resolves to the result of the email verification request creation.
|
|
122
121
|
*/
|
|
123
122
|
const createEmailVerificationRequest = (userId: string) =>
|
|
124
|
-
genLogger(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
);
|
|
123
|
+
genLogger(
|
|
124
|
+
'studiocms/virtuals/auth/verify-email/VerifyEmail.createEmailVerificationRequest'
|
|
125
|
+
)(function* () {
|
|
126
|
+
yield* deleteEmailVerificationRequest(userId);
|
|
127
|
+
return yield* sdk.AUTH.verifyEmail.create(userId);
|
|
128
|
+
});
|
|
130
129
|
|
|
131
130
|
/**
|
|
132
131
|
* @private
|
|
133
132
|
*/
|
|
134
133
|
const generateUrl = (base: string, path: string, params?: Record<string, string>) =>
|
|
135
|
-
pipeLogger('studiocms/
|
|
134
|
+
pipeLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.generateUrl')(
|
|
136
135
|
Effect.try({
|
|
137
136
|
try: () => {
|
|
138
137
|
const url = new URL(path, base);
|
|
@@ -156,7 +155,7 @@ export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
|
156
155
|
* @throws Will throw an error if the user is not found, if the verification token creation fails, or if the user does not have an email.
|
|
157
156
|
*/
|
|
158
157
|
const sendVerificationEmail = (userId: string, isOAuth = false) =>
|
|
159
|
-
genLogger('studiocms/
|
|
158
|
+
genLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.sendVerificationEmail')(
|
|
160
159
|
function* () {
|
|
161
160
|
const mailer = yield* getMailerStatus();
|
|
162
161
|
const settings = yield* getSettings();
|
|
@@ -223,8 +222,8 @@ export class VerifyEmail extends Effect.Service<VerifyEmail>()(
|
|
|
223
222
|
* - 'editor': Returns the user's email verification status if editor verification is required, otherwise returns true.
|
|
224
223
|
* - Default: Returns the user's email verification status.
|
|
225
224
|
*/
|
|
226
|
-
const isEmailVerified = (user: CombinedUserData | UserSessionData | undefined) =>
|
|
227
|
-
genLogger('studiocms/
|
|
225
|
+
const isEmailVerified = (user: CombinedUserData | UserSessionData | undefined | null) =>
|
|
226
|
+
genLogger('studiocms/virtuals/auth/verify-email/VerifyEmail.isEmailVerified')(function* () {
|
|
228
227
|
if (!user) return false;
|
|
229
228
|
|
|
230
229
|
const mailer = yield* getMailerStatus();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { pluginRenderers } from 'studiocms:plugins/renderers';
|
|
3
3
|
import * as renderers from 'virtual:studiocms/plugins/renderers';
|
|
4
|
-
import type { PluginPageTypeRendererProps } from '
|
|
4
|
+
import type { PluginPageTypeRendererProps } from '../../types.js';
|
|
5
5
|
|
|
6
6
|
interface Props extends PluginPageTypeRendererProps {}
|
|
7
7
|
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module handles internationalization (i18n) for the StudioCMS application on the client side.
|
|
3
|
+
*
|
|
4
|
+
* It provides utilities for loading and managing translation files, as well as functions for
|
|
5
|
+
* retrieving translated strings based on the current language context.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
browser,
|
|
10
|
+
createI18n,
|
|
11
|
+
formatter,
|
|
12
|
+
localeFrom,
|
|
13
|
+
type Messages,
|
|
14
|
+
type Translations,
|
|
15
|
+
} from '@nanostores/i18n';
|
|
16
|
+
import { persistentAtom } from '@nanostores/persistent';
|
|
17
|
+
import {
|
|
18
|
+
baseServerTranslations,
|
|
19
|
+
clientUiTranslations,
|
|
20
|
+
defaultLang,
|
|
21
|
+
type UiTranslationKey,
|
|
22
|
+
uiTranslationsAvailable,
|
|
23
|
+
} from './config.js';
|
|
24
|
+
|
|
25
|
+
export { defaultLang, type UiTranslationKey, uiTranslationsAvailable };
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The base translation object containing all translations for the default language.
|
|
29
|
+
*/
|
|
30
|
+
export const baseTranslation = baseServerTranslations.translations;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A mapping of UI translation keys to their localized strings.
|
|
34
|
+
*/
|
|
35
|
+
const localeMap = clientUiTranslations;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A persistent atom representing the user's locale settings.
|
|
39
|
+
*/
|
|
40
|
+
export const $localeSettings = persistentAtom<UiTranslationKey | undefined>(
|
|
41
|
+
'studiocms-i18n-locale',
|
|
42
|
+
defaultLang
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* A locale store derived from the user's locale settings and browser detection.
|
|
47
|
+
*/
|
|
48
|
+
export const $locale = localeFrom(
|
|
49
|
+
$localeSettings, // User’s locale from localStorage
|
|
50
|
+
browser({
|
|
51
|
+
// or browser’s locale auto-detect
|
|
52
|
+
available: uiTranslationsAvailable,
|
|
53
|
+
fallback: defaultLang,
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* A formatter function for the current locale.
|
|
59
|
+
*/
|
|
60
|
+
export const format = formatter($locale);
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* An i18n (internationalization) utility instance for client-side usage.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* This instance is created using the `createI18n` function, initialized with the current locale and a base locale.
|
|
67
|
+
* It provides a `get` method to asynchronously retrieve translations for a given UI translation key from the `localeMap`.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const translation = await $i18n.get('welcome_message');
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @see createI18n
|
|
75
|
+
*
|
|
76
|
+
* @param $locale - The current locale store or value.
|
|
77
|
+
* @param defaultLang - The default language to use as a base locale.
|
|
78
|
+
* @param localeMap - An object mapping translation keys to their localized strings.
|
|
79
|
+
*/
|
|
80
|
+
export const $i18n = createI18n($locale, {
|
|
81
|
+
baseLocale: defaultLang,
|
|
82
|
+
get: async (code: UiTranslationKey) => {
|
|
83
|
+
return localeMap[code] ?? localeMap[defaultLang];
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Updates the document's title, meta description, and language attribute based on the provided component and language.
|
|
89
|
+
*
|
|
90
|
+
* @param comp - An object containing the `title` and `description` properties to update the document's title and meta description.
|
|
91
|
+
* @param lang - The language code to set as the value of the document's `lang` attribute.
|
|
92
|
+
*/
|
|
93
|
+
// biome-ignore lint/suspicious/noExplicitAny: this is a valid use case for explicit any
|
|
94
|
+
export const documentUpdater = (comp: any, lang: string) => {
|
|
95
|
+
document.title = comp.title;
|
|
96
|
+
document.querySelector('meta[name="description"]')?.setAttribute('content', comp.description);
|
|
97
|
+
|
|
98
|
+
document.documentElement.lang = lang;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
type BaseTranslation = typeof baseTranslation;
|
|
102
|
+
type BaseTranslationKeys = keyof BaseTranslation;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Create a custom element that will update its text content
|
|
106
|
+
* when the translation changes.
|
|
107
|
+
*/
|
|
108
|
+
export const makeTranslation = <Body extends Translations>(
|
|
109
|
+
currentPage: BaseTranslationKeys,
|
|
110
|
+
i18n: Messages<Body>
|
|
111
|
+
) => {
|
|
112
|
+
const currentTranslations = currentPage;
|
|
113
|
+
type CurrentTranslations = typeof currentTranslations;
|
|
114
|
+
|
|
115
|
+
return class Translation extends HTMLElement {
|
|
116
|
+
connectedCallback() {
|
|
117
|
+
const key = this.getAttribute('key') as keyof BaseTranslation[CurrentTranslations];
|
|
118
|
+
if (key) {
|
|
119
|
+
i18n.subscribe((comp) => {
|
|
120
|
+
this.innerText = comp[key] as string;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Regular expression to match required field indicators in labels.
|
|
129
|
+
*/
|
|
130
|
+
const requiredLabelRegex = /.*?<span class="req-star.*?>\*<\/span>/;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Updates the label text for a given form element with a translated string.
|
|
134
|
+
*
|
|
135
|
+
* Searches for a `<label>` element associated with the specified element ID (`el`)
|
|
136
|
+
* and updates its child element with the class `.label` to display the provided translation.
|
|
137
|
+
* If the label's inner HTML matches the `requiredLabelRegex`, it appends a required star indicator.
|
|
138
|
+
*
|
|
139
|
+
* @param el - The ID of the form element whose label should be updated.
|
|
140
|
+
* @param translation - The translated string to set as the label's text.
|
|
141
|
+
*/
|
|
142
|
+
export const updateElmLabel = (el: string, translation: string) => {
|
|
143
|
+
const label = document
|
|
144
|
+
.querySelector<HTMLLabelElement>(`label[for="${el}"]`)
|
|
145
|
+
?.querySelector('.label') as HTMLSpanElement;
|
|
146
|
+
|
|
147
|
+
if (requiredLabelRegex.test(label.innerHTML)) {
|
|
148
|
+
label.innerHTML = `${translation} <span class="req-star">*</span>`;
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
label.textContent = translation;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Updates the placeholder text of an input element with the specified ID.
|
|
156
|
+
*
|
|
157
|
+
* @param el - The ID of the input element whose placeholder should be updated.
|
|
158
|
+
* @param translation - The new placeholder text to set for the input element.
|
|
159
|
+
*
|
|
160
|
+
* @remarks
|
|
161
|
+
* This function queries the DOM for an input element with the given ID and sets its
|
|
162
|
+
* `placeholder` property to the provided translation string.
|
|
163
|
+
*
|
|
164
|
+
* @throws {TypeError} If no element with the specified ID is found, or if the element is not an input.
|
|
165
|
+
*/
|
|
166
|
+
export const updateElmPlaceholder = (el: string, translation: string) => {
|
|
167
|
+
const input = document.querySelector<HTMLInputElement>(`#${el}`) as HTMLInputElement;
|
|
168
|
+
input.placeholder = translation;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Updates the label of a select element with a translated string.
|
|
173
|
+
*
|
|
174
|
+
* Finds the corresponding `<label>` element for the given select element by its `for` attribute,
|
|
175
|
+
* and updates its content with the provided translation. If the label contains a required field indicator
|
|
176
|
+
* (as determined by `requiredLabelRegex`), it preserves the required star (`*`) in the label.
|
|
177
|
+
*
|
|
178
|
+
* @param el - The base ID of the select element (without the `-select-btn` suffix).
|
|
179
|
+
* @param translation - The translated string to set as the label's text.
|
|
180
|
+
*/
|
|
181
|
+
export const updateSelectElmLabel = (el: string, translation: string) => {
|
|
182
|
+
const label = document.querySelector<HTMLLabelElement>(
|
|
183
|
+
`label[for="${el}-select-btn"]`
|
|
184
|
+
) as HTMLLabelElement;
|
|
185
|
+
|
|
186
|
+
if (requiredLabelRegex.test(label.innerHTML)) {
|
|
187
|
+
label.innerHTML = `${translation} <span class="req-star">*</span>`;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
label.textContent = translation;
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Updates the label text for a toggle element with a given translation.
|
|
195
|
+
*
|
|
196
|
+
* This function locates the `<label>` element associated with the provided element ID (`el`),
|
|
197
|
+
* then finds the corresponding `<span>` inside the label with the ID `label-${el}`.
|
|
198
|
+
* If the span's inner HTML matches the `requiredLabelRegex`, it updates the span's inner HTML
|
|
199
|
+
* to include the translated text and a required star indicator. Otherwise, it simply updates
|
|
200
|
+
* the span's text content with the translation.
|
|
201
|
+
*
|
|
202
|
+
* @param el - The ID of the element whose label should be updated.
|
|
203
|
+
* @param translation - The translated text to set as the label.
|
|
204
|
+
*/
|
|
205
|
+
export const updateToggleElmLabel = (el: string, translation: string) => {
|
|
206
|
+
const label = document.querySelector<HTMLLabelElement>(`label[for="${el}"]`) as HTMLLabelElement;
|
|
207
|
+
|
|
208
|
+
const span = label.querySelector(`#label-${el}`) as HTMLSpanElement;
|
|
209
|
+
|
|
210
|
+
if (requiredLabelRegex.test(span.innerHTML)) {
|
|
211
|
+
span.innerHTML = `${translation} <span class="req-star">*</span>`;
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
span.textContent = translation;
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Updates the text content of the page header's title element with the provided translation.
|
|
219
|
+
*
|
|
220
|
+
* @param translation - The translated string to set as the page title.
|
|
221
|
+
*
|
|
222
|
+
* @remarks
|
|
223
|
+
* This function selects the element with the class `.page-header` and then finds its child
|
|
224
|
+
* with the class `.page-title`, updating its text content to the given translation.
|
|
225
|
+
* It assumes that both elements exist in the DOM.
|
|
226
|
+
*/
|
|
227
|
+
export const pageHeaderUpdater = (translation: string) => {
|
|
228
|
+
const pageHeader = document.querySelector('.page-header') as HTMLElement;
|
|
229
|
+
const header = pageHeader.querySelector('.page-title') as HTMLElement;
|
|
230
|
+
|
|
231
|
+
header.textContent = translation;
|
|
232
|
+
};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module handles the internationalization (i18n) config for the StudioCMS application for both the Client and Server sides.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { availableTranslations } from 'studiocms:i18n/virtual';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Dynamically imports the base English translations for server-side internationalization.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* This constant loads the default English translation JSON file asynchronously at runtime.
|
|
12
|
+
* It is intended to be used as the base set of translations for the server.
|
|
13
|
+
*
|
|
14
|
+
* - These translations are also converted to a client-friendly format.
|
|
15
|
+
*/
|
|
16
|
+
export const baseServerTranslations = (
|
|
17
|
+
await import('./translations/en.json', {
|
|
18
|
+
assert: { type: 'json' },
|
|
19
|
+
})
|
|
20
|
+
).default;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Represents a translation record for StudioCMS.
|
|
24
|
+
*
|
|
25
|
+
* @property displayName - The human-readable name for the translation.
|
|
26
|
+
* @property translations - The translation data in the form of a ComponentsJSON object.
|
|
27
|
+
*/
|
|
28
|
+
export type StudioCMSTranslationRecord = typeof baseServerTranslations;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Represents a translation entry in JSON format.
|
|
32
|
+
* Can be either a string (a translated value) or a nested object of translations.
|
|
33
|
+
* This allows for both flat and hierarchical translation structures.
|
|
34
|
+
*/
|
|
35
|
+
export type TranslationJSON = string | TranslationsJSON;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The UI translations available in the StudioCMS app.
|
|
39
|
+
*/
|
|
40
|
+
export type UiTranslationKey = string;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Represents a collection of translation entries, where each key is a locale or identifier,
|
|
44
|
+
* and the value is a `TranslationJSON` object containing the translations for that key.
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* This interface is typically used to store or retrieve multiple sets of translations,
|
|
48
|
+
* organized by language or context.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const translations: TranslationsJSON = {
|
|
53
|
+
* en: { greeting: "Hello" },
|
|
54
|
+
* fr: { greeting: "Bonjour" }
|
|
55
|
+
* };
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export interface TranslationsJSON {
|
|
59
|
+
[key: string]: TranslationJSON;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Represents a mapping of component names to their respective translation objects.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* Each key in the object is a component name (as a string), and the value is a `TranslationsJSON`
|
|
67
|
+
* object containing the translations for that component.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const components: ComponentsJSON = {
|
|
72
|
+
* header: { en: "Header", fr: "En-tête" },
|
|
73
|
+
* footer: { en: "Footer", fr: "Pied de page" }
|
|
74
|
+
* };
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export type ComponentsJSON = StudioCMSTranslationRecord['translations'];
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Represents the server-side UI translations.
|
|
81
|
+
*
|
|
82
|
+
* This type maps each `UiTranslationKey` to its corresponding `StudioCMSTranslationRecord`,
|
|
83
|
+
* allowing for structured access to translation records for different UI elements.
|
|
84
|
+
*
|
|
85
|
+
* @see UiTranslationKey
|
|
86
|
+
* @see StudioCMSTranslationRecord
|
|
87
|
+
*/
|
|
88
|
+
export type ServerUiTranslations = Record<UiTranslationKey, StudioCMSTranslationRecord>;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Represents a mapping of UI translation keys to their corresponding component translation JSON objects.
|
|
92
|
+
*
|
|
93
|
+
* @typeParam UiTranslationKey - The set of valid keys for UI translations.
|
|
94
|
+
* @typeParam ComponentsJSON - The shape of the translation data for each component.
|
|
95
|
+
*/
|
|
96
|
+
export type ClientUiTranslations = Record<UiTranslationKey, ComponentsJSON>;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Represents an option for selecting a language in the UI.
|
|
100
|
+
*
|
|
101
|
+
* @property key - The translation key associated with the language option.
|
|
102
|
+
* @property value - The display value for the language option.
|
|
103
|
+
*/
|
|
104
|
+
export interface LanguageSelectorOption {
|
|
105
|
+
readonly key: UiTranslationKey;
|
|
106
|
+
readonly value: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* An object containing server-side UI translations for supported locales.
|
|
111
|
+
*
|
|
112
|
+
* - The `en` property provides the base server translations for English.
|
|
113
|
+
* - Additional locale translations are spread from `nonBaseTranslations`.
|
|
114
|
+
*
|
|
115
|
+
* @remarks
|
|
116
|
+
* This constant is typed as `ServerUiTranslations` and marked as `const` for immutability.
|
|
117
|
+
*/
|
|
118
|
+
export const serverUiTranslations: ServerUiTranslations = {
|
|
119
|
+
en: baseServerTranslations,
|
|
120
|
+
...availableTranslations,
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* The UI translations available in the StudioCMS app.
|
|
125
|
+
*/
|
|
126
|
+
export const uiTranslationsAvailable = Object.keys(serverUiTranslations) as UiTranslationKey[];
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Transforms the `serverUiTranslations` object into a `ClientUiTranslations` object
|
|
130
|
+
* by extracting only the `translations` property for each UI translation key.
|
|
131
|
+
*
|
|
132
|
+
* @remarks
|
|
133
|
+
* This reduces the server-side translation structure to a client-friendly format,
|
|
134
|
+
* mapping each `UiTranslationKey` to its corresponding translations object.
|
|
135
|
+
*
|
|
136
|
+
* @type {ClientUiTranslations}
|
|
137
|
+
*/
|
|
138
|
+
export const clientUiTranslations: ClientUiTranslations = Object.entries(
|
|
139
|
+
serverUiTranslations
|
|
140
|
+
).reduce((acc, [key, value]) => {
|
|
141
|
+
acc[key as UiTranslationKey] = value.translations;
|
|
142
|
+
return acc;
|
|
143
|
+
}, {} as ClientUiTranslations);
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* The default language for the StudioCMS app.
|
|
147
|
+
*/
|
|
148
|
+
export const defaultLang: UiTranslationKey = 'en';
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Whether to show the default language in the url path.
|
|
152
|
+
*/
|
|
153
|
+
export const showDefaultLang: boolean = false;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Generates an array of language selector options from the available server UI translations.
|
|
157
|
+
* Each option contains a `key` representing the language code and a `value` representing the display name of the language.
|
|
158
|
+
*
|
|
159
|
+
* @remarks
|
|
160
|
+
* This is typically used to populate language selection dropdowns in the UI.
|
|
161
|
+
*
|
|
162
|
+
* @returns An array of objects, each with `key` and `value` properties for language selection.
|
|
163
|
+
*/
|
|
164
|
+
export const languageSelectorOptions: LanguageSelectorOption[] = Object.keys(serverUiTranslations)
|
|
165
|
+
.map((key) => {
|
|
166
|
+
const displayName = serverUiTranslations[key]?.displayName;
|
|
167
|
+
const value = typeof displayName === 'string' && displayName.trim() ? displayName : String(key);
|
|
168
|
+
return { key: key as UiTranslationKey, value };
|
|
169
|
+
})
|
|
170
|
+
.sort((a, b) => a.value.localeCompare(b.value, undefined, { sensitivity: 'base' }));
|