UNPKG

studiocms

Version:

Astro Native CMS for AstroDB. Built from the ground up by the Astro community.

92 lines (91 loc) 2.98 kB
import { integrationLogger } from "@withstudiocms/internal_helpers/astro-integration"; import { addVirtualImports, createResolver, defineUtility, hasIntegration } from "astro-integration-kit"; import { buildTranslations, loadJsTranslations } from "../../utils/lang-helper.js"; const webVitalsNameList = ["@studiocms/web-vitals"]; const { resolve } = createResolver(import.meta.url); const translations = await loadJsTranslations("./i18n", import.meta.url); const t = await buildTranslations(translations); const checkForWebVitals = defineUtility("astro:config:setup")( (params, opts) => { integrationLogger( { logger: params.logger, logLevel: "info", verbose: opts.verbose }, "Checking for Web Vitals integration..." ); let exists = false; for (const item of webVitalsNameList) { const isEnabled = hasIntegration(params, { name: item }); if (isEnabled) { exists = true; integrationLogger( { logger: params.logger, logLevel: "info", verbose: opts.verbose }, "Web Vitals Integration Found!" ); } } addVirtualImports(params, { name: opts.name, imports: { "studiocms-dashboard:web-vitals": ` export * from "${resolve("./webVital.js")}" ` } }); const webVitalsPlugin = { name: "Web Vitals", identifier: "@studiocms/web-vitals", studiocmsMinimumVersion: opts.version, hooks: { "studiocms:config:setup": ({ setDashboard }) => { setDashboard({ translations, dashboardGridItems: [ { name: "core-web-vitals", span: 2, variant: "default", header: { // biome-ignore lint/style/noNonNullAssertion: this is okay title: t.getComponent("en", "core-web-vitals").title, icon: "heroicons:chart-pie" }, body: { html: "<corevitals></corevitals>", components: { corevitals: resolve("./dashboard-grid-items/CoreVitals.astro") } } } ], dashboardPages: { admin: [ { title: t.buildPageTitle("@page/analytics", "title"), icon: "heroicons:chart-pie", route: "analytics", // biome-ignore lint/style/noNonNullAssertion: this is okay description: t.getComponent("en", "@page/analytics").description, sidebar: "single", pageBodyComponent: resolve("./pages/analytics/body.astro"), requiredPermissions: "admin" } ] } }); } } }; if (exists) { return webVitalsPlugin; } return null; } ); export { checkForWebVitals, webVitalsNameList };