diff --git a/.changeset/export-validation-from-subpaths.md b/.changeset/export-validation-from-subpaths.md new file mode 100644 index 0000000..fd9f1f6 --- /dev/null +++ b/.changeset/export-validation-from-subpaths.md @@ -0,0 +1,15 @@ +--- +"brand-shell": minor +--- + +Export `validateBrandDetails` and `validateBrandTheme` from `brand-shell/vue` and `brand-shell/web`. + +Previously these were only available from the `brand-shell` root, which is the React bundle. Non-React consumers (Vue, Svelte, web components) that imported validation functions from the root would cause Vite to load the React adapter and fail with a `react/jsx-runtime` error. + +**Migration for Vue/Svelte/web-component apps:** + +```diff +- import { validateBrandDetails, validateBrandTheme } from 'brand-shell' ++ import { validateBrandDetails, validateBrandTheme } from 'brand-shell/vue' // Vue ++ import { validateBrandDetails, validateBrandTheme } from 'brand-shell/web' // Svelte / vanilla +``` diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 427cceb..d333fec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -71,7 +71,7 @@ jobs: run: bun install --frozen-lockfile && bun run build - name: Pack - run: bun pack + run: bun pm pack - name: Install react-npm starter run: bun install --cwd starters/react-npm diff --git a/apps/docs/src/App.tsx b/apps/docs/src/App.tsx index d744efc..767ce0f 100644 --- a/apps/docs/src/App.tsx +++ b/apps/docs/src/App.tsx @@ -30,7 +30,7 @@ const DEFAULT_DETAILS: BrandDetails = { linkedin: "https://linkedin.com/in/example", github: "https://github.com/example", twitter: "https://x.com/example", - gmail: "hello@example.com", + email: "hello@example.com", tagline: "One shared brand shell across frameworks.", }; @@ -91,11 +91,11 @@ import "brand-shell/default.css"; `, - svelte: `import { brandShell } from "brand-shell/svelte"; + svelte: `import { BrandHeader, BrandFooter } from "brand-shell/svelte"; import "brand-shell/default.css"; - -`, + +`, web: `import { applyBrandShellProps, registerBrandShellElements } from "brand-shell/web"; import "brand-shell/default.css"; diff --git a/src/vue/index.ts b/src/vue/index.ts index dd7fe87..9daaac2 100644 --- a/src/vue/index.ts +++ b/src/vue/index.ts @@ -5,6 +5,7 @@ import { assertValidBrandDetails, assertValidBrandTheme, shouldValidateInDev } f import { applyBrandShellProps, registerBrandShellElements, type BrandShellElementLike, type LinkFactoryOptions } from "../web"; export type { BrandDetails, BrandTheme } from "../core"; +export { validateBrandDetails, validateBrandTheme } from "../core"; export type { LinkFactoryOptions } from "../web"; export interface BrandShellVueProps { diff --git a/src/web/index.ts b/src/web/index.ts index 306441d..7d83672 100644 --- a/src/web/index.ts +++ b/src/web/index.ts @@ -19,6 +19,7 @@ import { } from "../core"; export type { BrandAction, BrandDetails, BrandNavLink, BrandTheme } from "../core"; +export { validateBrandDetails, validateBrandTheme } from "../core"; const SVG_NS = "http://www.w3.org/2000/svg";