@brandlab-digital/site-next 0.1.0-alpha.0
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/dist/instrumentation-client.d.ts +27 -0
- package/dist/instrumentation-client.d.ts.map +1 -0
- package/dist/instrumentation-client.js +86 -0
- package/dist/instrumentation-client.js.map +1 -0
- package/dist/robots.d.ts +16 -0
- package/dist/robots.d.ts.map +1 -0
- package/dist/robots.js +24 -0
- package/dist/robots.js.map +1 -0
- package/dist/schema.d.ts +15 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +17 -0
- package/dist/schema.js.map +1 -0
- package/dist/sitemaps.d.ts +6 -0
- package/dist/sitemaps.d.ts.map +1 -0
- package/dist/sitemaps.js +12 -0
- package/dist/sitemaps.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type PhoneCallLocation = 'header' | 'footer' | 'hero' | 'cta' | 'fab' | 'contact' | 'location' | 'page';
|
|
2
|
+
export interface LastPhoneCallEvent {
|
|
3
|
+
key: string;
|
|
4
|
+
at: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const INITIAL_LANDING_STORAGE_PREFIX = "brandlab.initialLanding.";
|
|
7
|
+
export declare const DEFAULT_PHONE_CALL_DEDUPE_WINDOW_MS = 1200;
|
|
8
|
+
export declare function createPhoneCallDedupeKey(pagePath: string, href: string): string;
|
|
9
|
+
export declare function shouldTrackPhoneCallClick(options: {
|
|
10
|
+
key: string;
|
|
11
|
+
now: number;
|
|
12
|
+
lastEvent?: LastPhoneCallEvent;
|
|
13
|
+
dedupeWindowMs?: number;
|
|
14
|
+
}): boolean;
|
|
15
|
+
export declare function persistInitialLanding(win?: Window): void;
|
|
16
|
+
export declare function getInitialLandingPath(win?: Window): string | undefined;
|
|
17
|
+
export declare function getPhoneCallLocation(link: HTMLAnchorElement): PhoneCallLocation;
|
|
18
|
+
export declare function installPhoneClickListener(options: {
|
|
19
|
+
trackPhoneCall: (context: {
|
|
20
|
+
pagePath: string;
|
|
21
|
+
location: PhoneCallLocation;
|
|
22
|
+
initialLandingPath?: string;
|
|
23
|
+
}) => void;
|
|
24
|
+
win?: Window;
|
|
25
|
+
dedupeWindowMs?: number;
|
|
26
|
+
}): () => void;
|
|
27
|
+
//# sourceMappingURL=instrumentation-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation-client.d.ts","sourceRoot":"","sources":["../src/instrumentation-client.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,KAAK,GACL,KAAK,GACL,SAAS,GACT,UAAU,GACV,MAAM,CAAA;AAEV,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,MAAM,CAAA;CACX;AAED,eAAO,MAAM,8BAA8B,6BAA6B,CAAA;AACxE,eAAO,MAAM,mCAAmC,OAAO,CAAA;AAEvD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAEtE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,kBAAkB,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,WAOA;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAe,QAkBzD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAe,sBAMzD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,CAU/E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,cAAc,EAAE,CAAC,OAAO,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,iBAAiB,CAAA;QAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAC5B,KAAK,IAAI,CAAA;IACV,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,cAwCA"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export const INITIAL_LANDING_STORAGE_PREFIX = 'brandlab.initialLanding.';
|
|
2
|
+
export const DEFAULT_PHONE_CALL_DEDUPE_WINDOW_MS = 1200;
|
|
3
|
+
export function createPhoneCallDedupeKey(pagePath, href) {
|
|
4
|
+
return `${pagePath}|${href}`;
|
|
5
|
+
}
|
|
6
|
+
export function shouldTrackPhoneCallClick(options) {
|
|
7
|
+
const windowMs = options.dedupeWindowMs ?? DEFAULT_PHONE_CALL_DEDUPE_WINDOW_MS;
|
|
8
|
+
return !(options.lastEvent &&
|
|
9
|
+
options.lastEvent.key === options.key &&
|
|
10
|
+
options.now - options.lastEvent.at < windowMs);
|
|
11
|
+
}
|
|
12
|
+
export function persistInitialLanding(win = window) {
|
|
13
|
+
const entries = {
|
|
14
|
+
path: win.location.pathname || '/',
|
|
15
|
+
url: win.location.href,
|
|
16
|
+
referrer: win.document.referrer || '',
|
|
17
|
+
};
|
|
18
|
+
try {
|
|
19
|
+
Object.entries(entries).forEach(([key, value]) => {
|
|
20
|
+
const storageKey = `${INITIAL_LANDING_STORAGE_PREFIX}${key}`;
|
|
21
|
+
if (!win.sessionStorage.getItem(storageKey)) {
|
|
22
|
+
win.sessionStorage.setItem(storageKey, value);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Storage failures must not affect navigation or lead tracking.
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function getInitialLandingPath(win = window) {
|
|
31
|
+
try {
|
|
32
|
+
return win.sessionStorage.getItem(`${INITIAL_LANDING_STORAGE_PREFIX}path`) ?? undefined;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function getPhoneCallLocation(link) {
|
|
39
|
+
const explicitLocation = link.dataset.phoneLocation;
|
|
40
|
+
if (explicitLocation)
|
|
41
|
+
return explicitLocation;
|
|
42
|
+
if (link.closest('header'))
|
|
43
|
+
return 'header';
|
|
44
|
+
if (link.closest('footer'))
|
|
45
|
+
return 'footer';
|
|
46
|
+
if (link.closest('[data-phone-location="hero"]'))
|
|
47
|
+
return 'hero';
|
|
48
|
+
if (link.closest('[data-phone-location="cta"]'))
|
|
49
|
+
return 'cta';
|
|
50
|
+
return 'page';
|
|
51
|
+
}
|
|
52
|
+
export function installPhoneClickListener(options) {
|
|
53
|
+
const win = options.win ?? window;
|
|
54
|
+
let lastEvent;
|
|
55
|
+
const handlePhoneClick = (event) => {
|
|
56
|
+
const target = event.target;
|
|
57
|
+
if (!(target instanceof Element))
|
|
58
|
+
return;
|
|
59
|
+
const link = target.closest('a[href^="tel:"]');
|
|
60
|
+
if (!link)
|
|
61
|
+
return;
|
|
62
|
+
const pagePath = win.location.pathname || '/';
|
|
63
|
+
const href = link.getAttribute('href') || link.href;
|
|
64
|
+
const key = createPhoneCallDedupeKey(pagePath, href);
|
|
65
|
+
const now = Date.now();
|
|
66
|
+
if (!shouldTrackPhoneCallClick({
|
|
67
|
+
key,
|
|
68
|
+
now,
|
|
69
|
+
lastEvent,
|
|
70
|
+
dedupeWindowMs: options.dedupeWindowMs,
|
|
71
|
+
})) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
lastEvent = { key, at: now };
|
|
75
|
+
options.trackPhoneCall({
|
|
76
|
+
pagePath,
|
|
77
|
+
location: getPhoneCallLocation(link),
|
|
78
|
+
initialLandingPath: getInitialLandingPath(win),
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
win.document.addEventListener('click', handlePhoneClick, true);
|
|
82
|
+
return () => {
|
|
83
|
+
win.document.removeEventListener('click', handlePhoneClick, true);
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=instrumentation-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation-client.js","sourceRoot":"","sources":["../src/instrumentation-client.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,8BAA8B,GAAG,0BAA0B,CAAA;AACxE,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAA;AAEvD,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,IAAY;IACrE,OAAO,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAKzC;IACC,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,mCAAmC,CAAA;IAC9E,OAAO,CAAC,CACN,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;QACrC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAC9C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc,MAAM;IACxD,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG;QAClC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI;QACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE;KACtC,CAAA;IAED,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC/C,MAAM,UAAU,GAAG,GAAG,8BAA8B,GAAG,GAAG,EAAE,CAAA;YAE5D,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc,MAAM;IACxD,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,8BAA8B,MAAM,CAAC,IAAI,SAAS,CAAA;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,aAA8C,CAAA;IAEpF,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAA;IAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC;QAAE,OAAO,MAAM,CAAA;IAC/D,IAAI,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC;QAAE,OAAO,KAAK,CAAA;IAE7D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAQzC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,CAAA;IACjC,IAAI,SAAyC,CAAA;IAE7C,MAAM,gBAAgB,GAAG,CAAC,KAAiB,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC;YAAE,OAAM;QAExC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAoB,iBAAiB,CAAC,CAAA;QACjE,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAA;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAA;QACnD,MAAM,GAAG,GAAG,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,IACE,CAAC,yBAAyB,CAAC;YACzB,GAAG;YACH,GAAG;YACH,SAAS;YACT,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,EACF,CAAC;YACD,OAAM;QACR,CAAC;QAED,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA;QAC5B,OAAO,CAAC,cAAc,CAAC;YACrB,QAAQ;YACR,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;YACpC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,CAAC;SAC/C,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAA;IAE9D,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAA;IACnE,CAAC,CAAA;AACH,CAAC"}
|
package/dist/robots.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface BrandlabRobotsMetadata {
|
|
2
|
+
rules: Array<{
|
|
3
|
+
userAgent: string;
|
|
4
|
+
allow?: string;
|
|
5
|
+
disallow?: string;
|
|
6
|
+
}>;
|
|
7
|
+
sitemap?: string;
|
|
8
|
+
host?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function buildRobotsMetadata(options: {
|
|
11
|
+
siteUrl: string;
|
|
12
|
+
nodeEnv?: string;
|
|
13
|
+
vercelEnv?: string;
|
|
14
|
+
allowIndexing?: string;
|
|
15
|
+
}): BrandlabRobotsMetadata;
|
|
16
|
+
//# sourceMappingURL=robots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAQD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,sBAAsB,CAkBzB"}
|
package/dist/robots.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { shouldIndexSite } from '@brandlab-digital/site-core/sitemaps';
|
|
2
|
+
function absoluteUrl(siteUrl, path) {
|
|
3
|
+
const base = siteUrl.replace(/\/+$/, '');
|
|
4
|
+
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
|
5
|
+
return `${base}${normalizedPath}`;
|
|
6
|
+
}
|
|
7
|
+
export function buildRobotsMetadata(options) {
|
|
8
|
+
const shouldIndex = shouldIndexSite({
|
|
9
|
+
nodeEnv: options.nodeEnv,
|
|
10
|
+
vercelEnv: options.vercelEnv,
|
|
11
|
+
allowIndexing: options.allowIndexing,
|
|
12
|
+
});
|
|
13
|
+
if (!shouldIndex) {
|
|
14
|
+
return {
|
|
15
|
+
rules: [{ userAgent: '*', disallow: '/' }],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
rules: [{ userAgent: '*', allow: '/' }],
|
|
20
|
+
sitemap: absoluteUrl(options.siteUrl, '/sitemap.xml'),
|
|
21
|
+
host: absoluteUrl(options.siteUrl, '/'),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=robots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"robots.js","sourceRoot":"","sources":["../src/robots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AAQtE,SAAS,WAAW,CAAC,OAAe,EAAE,IAAY;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACxC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;IAC/D,OAAO,GAAG,IAAI,GAAG,cAAc,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAKnC;IACC,MAAM,WAAW,GAAG,eAAe,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAA;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;SAC3C,CAAA;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACvC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;QACrD,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;KACxC,CAAA;AACH,CAAC"}
|
package/dist/schema.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Schema } from '@brandlab-digital/site-core/schema';
|
|
2
|
+
export interface SchemaScriptProps {
|
|
3
|
+
schema: Schema<Record<string, unknown>> | Array<Schema<Record<string, unknown>>>;
|
|
4
|
+
id?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface SchemaScriptTagProps {
|
|
7
|
+
id: string;
|
|
8
|
+
type: 'application/ld+json';
|
|
9
|
+
dangerouslySetInnerHTML: {
|
|
10
|
+
__html: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function createSchemaScriptProps({ schema, id, }: SchemaScriptProps): SchemaScriptTagProps[];
|
|
14
|
+
export declare function SchemaScript(props: SchemaScriptProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,oCAAoC,CAAA;AAEhF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAChF,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,qBAAqB,CAAA;IAC3B,uBAAuB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C;AAED,wBAAgB,uBAAuB,CAAC,EACtC,MAAM,EACN,EAAE,GACH,EAAE,iBAAiB,GAAG,oBAAoB,EAAE,CAU5C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAQpD"}
|
package/dist/schema.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment } from 'react';
|
|
3
|
+
import { sanitizeJsonLd } from '@brandlab-digital/site-core/schema';
|
|
4
|
+
export function createSchemaScriptProps({ schema, id, }) {
|
|
5
|
+
const schemaData = Array.isArray(schema) ? schema : [schema];
|
|
6
|
+
return schemaData.map((item, index) => ({
|
|
7
|
+
id: `${id || 'schema'}-${index}`,
|
|
8
|
+
type: 'application/ld+json',
|
|
9
|
+
dangerouslySetInnerHTML: {
|
|
10
|
+
__html: sanitizeJsonLd(item),
|
|
11
|
+
},
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
export function SchemaScript(props) {
|
|
15
|
+
return (_jsx(Fragment, { children: createSchemaScriptProps(props).map((scriptProps) => (_jsx("script", { ...scriptProps }, scriptProps.id))) }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,cAAc,EAAe,MAAM,oCAAoC,CAAA;AAahF,MAAM,UAAU,uBAAuB,CAAC,EACtC,MAAM,EACN,EAAE,GACgB;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAE5D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,EAAE,EAAE,GAAG,EAAE,IAAI,QAAQ,IAAI,KAAK,EAAE;QAChC,IAAI,EAAE,qBAAqB;QAC3B,uBAAuB,EAAE;YACvB,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;SAC7B;KACF,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,OAAO,CACL,KAAC,QAAQ,cACN,uBAAuB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CACnD,oBAAiC,WAAW,IAA/B,WAAW,CAAC,EAAE,CAAqB,CACjD,CAAC,GACO,CACZ,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type SitemapEntry } from '@brandlab-digital/site-core/sitemaps';
|
|
2
|
+
export declare function sitemapXmlResponse(entries: readonly SitemapEntry[]): Response;
|
|
3
|
+
export declare function sitemapIndexXmlResponse(paths: readonly string[], options: {
|
|
4
|
+
absoluteUrl: (path: string) => string;
|
|
5
|
+
}): Response;
|
|
6
|
+
//# sourceMappingURL=sitemaps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemaps.d.ts","sourceRoot":"","sources":["../src/sitemaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAA;AAE7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,QAAQ,CAI7E;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE;IAAE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,GACjD,QAAQ,CAIV"}
|
package/dist/sitemaps.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getSitemapXmlHeaders, serializeSitemap, serializeSitemapIndex, } from '@brandlab-digital/site-core/sitemaps';
|
|
2
|
+
export function sitemapXmlResponse(entries) {
|
|
3
|
+
return new Response(serializeSitemap(entries), {
|
|
4
|
+
headers: getSitemapXmlHeaders(),
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
export function sitemapIndexXmlResponse(paths, options) {
|
|
8
|
+
return new Response(serializeSitemapIndex(paths, options), {
|
|
9
|
+
headers: getSitemapXmlHeaders(),
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=sitemaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemaps.js","sourceRoot":"","sources":["../src/sitemaps.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GAEtB,MAAM,sCAAsC,CAAA;AAE7C,MAAM,UAAU,kBAAkB,CAAC,OAAgC;IACjE,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;QAC7C,OAAO,EAAE,oBAAoB,EAAE;KAChC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAwB,EACxB,OAAkD;IAElD,OAAO,IAAI,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;QACzD,OAAO,EAAE,oBAAoB,EAAE;KAChC,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@brandlab-digital/site-next",
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"files": ["dist"],
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc -p tsconfig.json",
|
|
10
|
+
"test": "vitest run",
|
|
11
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@brandlab-digital/site-core": "0.1.0-alpha.0"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"next": ">=16",
|
|
18
|
+
"react": ">=19"
|
|
19
|
+
},
|
|
20
|
+
"peerDependenciesMeta": {
|
|
21
|
+
"next": {
|
|
22
|
+
"optional": true
|
|
23
|
+
},
|
|
24
|
+
"react": {
|
|
25
|
+
"optional": true
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"exports": {
|
|
29
|
+
"./robots": {
|
|
30
|
+
"types": "./dist/robots.d.ts",
|
|
31
|
+
"import": "./dist/robots.js"
|
|
32
|
+
},
|
|
33
|
+
"./sitemaps": {
|
|
34
|
+
"types": "./dist/sitemaps.d.ts",
|
|
35
|
+
"import": "./dist/sitemaps.js"
|
|
36
|
+
},
|
|
37
|
+
"./schema": {
|
|
38
|
+
"types": "./dist/schema.d.ts",
|
|
39
|
+
"import": "./dist/schema.js"
|
|
40
|
+
},
|
|
41
|
+
"./instrumentation-client": {
|
|
42
|
+
"types": "./dist/instrumentation-client.d.ts",
|
|
43
|
+
"import": "./dist/instrumentation-client.js"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|