@risali/react 0.2.0 → 0.5.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/blog-jsonld.d.ts +74 -0
- package/dist/blog-jsonld.d.ts.map +1 -0
- package/dist/blog-jsonld.js +111 -0
- package/dist/blog-jsonld.js.map +1 -0
- package/dist/blog-list.d.ts +29 -0
- package/dist/blog-list.d.ts.map +1 -0
- package/dist/blog-list.js +113 -0
- package/dist/blog-list.js.map +1 -0
- package/dist/blog-post.d.ts +40 -0
- package/dist/blog-post.d.ts.map +1 -0
- package/dist/blog-post.js +109 -0
- package/dist/blog-post.js.map +1 -0
- package/dist/blog.d.ts +69 -0
- package/dist/blog.d.ts.map +1 -0
- package/dist/blog.js +79 -0
- package/dist/blog.js.map +1 -0
- package/dist/event-marker.d.ts +35 -0
- package/dist/event-marker.d.ts.map +1 -0
- package/dist/event-marker.js +17 -0
- package/dist/event-marker.js.map +1 -0
- package/dist/image.d.ts +33 -33
- package/dist/image.d.ts.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/sanitize.d.ts.map +1 -1
- package/dist/sanitize.js +150 -10
- package/dist/sanitize.js.map +1 -1
- package/dist/tracking-component.d.ts +29 -0
- package/dist/tracking-component.d.ts.map +1 -0
- package/dist/tracking-component.js +100 -0
- package/dist/tracking-component.js.map +1 -0
- package/dist/tracking.d.ts +27 -0
- package/dist/tracking.d.ts.map +1 -0
- package/dist/tracking.js +49 -0
- package/dist/tracking.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type GetTrackingConfigOptions } from "./tracking.js";
|
|
2
|
+
export type RisaliTrackingProps = GetTrackingConfigOptions;
|
|
3
|
+
/**
|
|
4
|
+
* Server component that emits Risali-managed tracking tags into <head>.
|
|
5
|
+
* Render once inside the root layout's <head> (Next.js App Router):
|
|
6
|
+
*
|
|
7
|
+
* import { RisaliTracking } from "@risali/react";
|
|
8
|
+
* export default function RootLayout({ children }) {
|
|
9
|
+
* return (
|
|
10
|
+
* <html>
|
|
11
|
+
* <head>
|
|
12
|
+
* <RisaliTracking />
|
|
13
|
+
* </head>
|
|
14
|
+
* <body>{children}</body>
|
|
15
|
+
* </html>
|
|
16
|
+
* );
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* Behaviour mirrors the Lovable /risali.js snippet: every tag ships as a
|
|
20
|
+
* <script type="text/plain" data-risali-consent="analytics|marketing"> so it
|
|
21
|
+
* stays inert until the GDPR banner (rendered by the host or by the Risali
|
|
22
|
+
* snippet itself) flips it to executable JS via gdprApplyConsentToScripts.
|
|
23
|
+
*
|
|
24
|
+
* Pro custom HTML is rendered raw (server-sanitized whitelist already runs at
|
|
25
|
+
* save time). Because Next.js needs dangerouslySetInnerHTML for raw <script>
|
|
26
|
+
* tags inside the React tree, we wrap the entire payload in a single block.
|
|
27
|
+
*/
|
|
28
|
+
export declare function RisaliTracking(props?: RisaliTrackingProps): Promise<import("react/jsx-runtime").JSX.Element>;
|
|
29
|
+
//# sourceMappingURL=tracking-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking-component.d.ts","sourceRoot":"","sources":["../src/tracking-component.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,cAAc,CAAC,KAAK,GAAE,mBAAwB,oDA+JnE"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { getRisaliTrackingConfig, } from "./tracking.js";
|
|
3
|
+
/**
|
|
4
|
+
* Server component that emits Risali-managed tracking tags into <head>.
|
|
5
|
+
* Render once inside the root layout's <head> (Next.js App Router):
|
|
6
|
+
*
|
|
7
|
+
* import { RisaliTracking } from "@risali/react";
|
|
8
|
+
* export default function RootLayout({ children }) {
|
|
9
|
+
* return (
|
|
10
|
+
* <html>
|
|
11
|
+
* <head>
|
|
12
|
+
* <RisaliTracking />
|
|
13
|
+
* </head>
|
|
14
|
+
* <body>{children}</body>
|
|
15
|
+
* </html>
|
|
16
|
+
* );
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* Behaviour mirrors the Lovable /risali.js snippet: every tag ships as a
|
|
20
|
+
* <script type="text/plain" data-risali-consent="analytics|marketing"> so it
|
|
21
|
+
* stays inert until the GDPR banner (rendered by the host or by the Risali
|
|
22
|
+
* snippet itself) flips it to executable JS via gdprApplyConsentToScripts.
|
|
23
|
+
*
|
|
24
|
+
* Pro custom HTML is rendered raw (server-sanitized whitelist already runs at
|
|
25
|
+
* save time). Because Next.js needs dangerouslySetInnerHTML for raw <script>
|
|
26
|
+
* tags inside the React tree, we wrap the entire payload in a single block.
|
|
27
|
+
*/
|
|
28
|
+
export async function RisaliTracking(props = {}) {
|
|
29
|
+
const cfg = await getRisaliTrackingConfig(props);
|
|
30
|
+
const blocks = [];
|
|
31
|
+
if (cfg.gtm_container_id) {
|
|
32
|
+
const gtmUrl = "https://www.googletagmanager.com/gtm.js?id=" + cfg.gtm_container_id;
|
|
33
|
+
blocks.push(_jsx("script", { type: "text/plain", "data-risali-consent": "marketing", src: gtmUrl, async: true }, "gtm-loader"), _jsx("script", { type: "text/plain", "data-risali-consent": "marketing", dangerouslySetInnerHTML: {
|
|
34
|
+
__html: "window.dataLayer=window.dataLayer||[];" +
|
|
35
|
+
"window.dataLayer.push({'gtm.start':new Date().getTime(),event:'gtm.js'});",
|
|
36
|
+
} }, "gtm-bootstrap"));
|
|
37
|
+
}
|
|
38
|
+
if (cfg.ga4_measurement_id) {
|
|
39
|
+
blocks.push(_jsx("script", { type: "text/plain", "data-risali-consent": "analytics", src: "https://www.googletagmanager.com/gtag/js?id=" +
|
|
40
|
+
cfg.ga4_measurement_id, async: true }, "ga4-loader"), _jsx("script", { type: "text/plain", "data-risali-consent": "analytics", dangerouslySetInnerHTML: {
|
|
41
|
+
__html: "window.dataLayer=window.dataLayer||[];" +
|
|
42
|
+
"function gtag(){dataLayer.push(arguments);}" +
|
|
43
|
+
"gtag('js',new Date());" +
|
|
44
|
+
"gtag('config','" +
|
|
45
|
+
cfg.ga4_measurement_id +
|
|
46
|
+
"',{anonymize_ip:true});",
|
|
47
|
+
} }, "ga4-init"));
|
|
48
|
+
}
|
|
49
|
+
if (cfg.meta_pixel_id) {
|
|
50
|
+
blocks.push(_jsx("script", { type: "text/plain", "data-risali-consent": "marketing", dangerouslySetInnerHTML: {
|
|
51
|
+
__html: "!function(f,b,e,v,n,t,s)" +
|
|
52
|
+
"{if(f.fbq)return;n=f.fbq=function(){n.callMethod?" +
|
|
53
|
+
"n.callMethod.apply(n,arguments):n.queue.push(arguments)};" +
|
|
54
|
+
"if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';" +
|
|
55
|
+
"n.queue=[];t=b.createElement(e);t.async=!0;" +
|
|
56
|
+
"t.src=v;s=b.getElementsByTagName(e)[0];" +
|
|
57
|
+
"s.parentNode.insertBefore(t,s)}(window,document,'script'," +
|
|
58
|
+
"'https://connect.facebook.net/en_US/fbevents.js');" +
|
|
59
|
+
"fbq('init','" +
|
|
60
|
+
cfg.meta_pixel_id +
|
|
61
|
+
"');" +
|
|
62
|
+
"fbq('track','PageView');",
|
|
63
|
+
} }, "meta-pixel"));
|
|
64
|
+
}
|
|
65
|
+
if (cfg.google_ads_conversion_id && cfg.google_ads_conversion_label) {
|
|
66
|
+
if (!cfg.ga4_measurement_id) {
|
|
67
|
+
blocks.push(_jsx("script", { type: "text/plain", "data-risali-consent": "marketing", src: "https://www.googletagmanager.com/gtag/js?id=" +
|
|
68
|
+
cfg.google_ads_conversion_id, async: true }, "gads-loader"), _jsx("script", { type: "text/plain", "data-risali-consent": "marketing", dangerouslySetInnerHTML: {
|
|
69
|
+
__html: "window.dataLayer=window.dataLayer||[];" +
|
|
70
|
+
"function gtag(){dataLayer.push(arguments);}" +
|
|
71
|
+
"gtag('js',new Date());",
|
|
72
|
+
} }, "gads-bootstrap"));
|
|
73
|
+
}
|
|
74
|
+
blocks.push(_jsx("script", { type: "text/plain", "data-risali-consent": "marketing", dangerouslySetInnerHTML: {
|
|
75
|
+
__html: "gtag('config','" + cfg.google_ads_conversion_id + "');",
|
|
76
|
+
} }, "gads-config"));
|
|
77
|
+
}
|
|
78
|
+
if (cfg.clarity_project_id) {
|
|
79
|
+
blocks.push(_jsx("script", { type: "text/plain", "data-risali-consent": "analytics", dangerouslySetInnerHTML: {
|
|
80
|
+
__html: "(function(c,l,a,r,i,t,y){" +
|
|
81
|
+
"c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};" +
|
|
82
|
+
"t=l.createElement(r);t.async=1;" +
|
|
83
|
+
"t.src='https://www.clarity.ms/tag/'+i;" +
|
|
84
|
+
"y=l.getElementsByTagName(r)[0];" +
|
|
85
|
+
"y.parentNode.insertBefore(t,y);" +
|
|
86
|
+
"})(window,document,'clarity','script','" +
|
|
87
|
+
cfg.clarity_project_id +
|
|
88
|
+
"');",
|
|
89
|
+
} }, "clarity"));
|
|
90
|
+
}
|
|
91
|
+
if (cfg.custom_head_html) {
|
|
92
|
+
// Pro custom HTML — already validated server-side against a strict
|
|
93
|
+
// whitelist. Inject as a single dangerouslySetInnerHTML block; React
|
|
94
|
+
// doesn't render raw <script> tags, but a wrapping div with the raw
|
|
95
|
+
// markup works in the head (browser still parses it).
|
|
96
|
+
blocks.push(_jsx("span", { style: { display: "none" }, dangerouslySetInnerHTML: { __html: cfg.custom_head_html } }, "custom-head"));
|
|
97
|
+
}
|
|
98
|
+
return _jsx(_Fragment, { children: blocks });
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=tracking-component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking-component.js","sourceRoot":"","sources":["../src/tracking-component.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type RisaliTrackingConfig = {
|
|
2
|
+
gtm_container_id: string | null;
|
|
3
|
+
ga4_measurement_id: string | null;
|
|
4
|
+
meta_pixel_id: string | null;
|
|
5
|
+
google_ads_conversion_id: string | null;
|
|
6
|
+
google_ads_conversion_label: string | null;
|
|
7
|
+
clarity_project_id: string | null;
|
|
8
|
+
custom_head_html: string | null;
|
|
9
|
+
custom_body_html: string | null;
|
|
10
|
+
};
|
|
11
|
+
export type GetTrackingConfigOptions = {
|
|
12
|
+
siteSlug?: string;
|
|
13
|
+
apiBase?: string;
|
|
14
|
+
revalidate?: number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Server-side fetch of the per-site marketing tracking configuration. The
|
|
18
|
+
* response includes only fields the site's current plan is entitled to —
|
|
19
|
+
* downgrades automatically stop serving Pro-only fields without us having
|
|
20
|
+
* to touch the DB row.
|
|
21
|
+
*
|
|
22
|
+
* Used by <RisaliTracking>, but also exposed so a host page can compose
|
|
23
|
+
* the IDs into its own GTM dataLayer / consent integration if it wants
|
|
24
|
+
* to override our defaults.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getRisaliTrackingConfig(options?: GetTrackingConfigOptions): Promise<RisaliTrackingConfig>;
|
|
27
|
+
//# sourceMappingURL=tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../src/tracking.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG;IACjC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAaF;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,oBAAoB,CAAC,CA6B/B"}
|
package/dist/tracking.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { resolveApiBase, resolveRevalidateSeconds, resolveSlug } from "./config.js";
|
|
2
|
+
const EMPTY = {
|
|
3
|
+
gtm_container_id: null,
|
|
4
|
+
ga4_measurement_id: null,
|
|
5
|
+
meta_pixel_id: null,
|
|
6
|
+
google_ads_conversion_id: null,
|
|
7
|
+
google_ads_conversion_label: null,
|
|
8
|
+
clarity_project_id: null,
|
|
9
|
+
custom_head_html: null,
|
|
10
|
+
custom_body_html: null,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Server-side fetch of the per-site marketing tracking configuration. The
|
|
14
|
+
* response includes only fields the site's current plan is entitled to —
|
|
15
|
+
* downgrades automatically stop serving Pro-only fields without us having
|
|
16
|
+
* to touch the DB row.
|
|
17
|
+
*
|
|
18
|
+
* Used by <RisaliTracking>, but also exposed so a host page can compose
|
|
19
|
+
* the IDs into its own GTM dataLayer / consent integration if it wants
|
|
20
|
+
* to override our defaults.
|
|
21
|
+
*/
|
|
22
|
+
export async function getRisaliTrackingConfig(options = {}) {
|
|
23
|
+
const slug = resolveSlug(options.siteSlug);
|
|
24
|
+
const apiBase = options.apiBase
|
|
25
|
+
? options.apiBase.replace(/\/+$/, "")
|
|
26
|
+
: resolveApiBase();
|
|
27
|
+
const revalidate = typeof options.revalidate === "number"
|
|
28
|
+
? Math.max(0, Math.min(3600, options.revalidate))
|
|
29
|
+
: resolveRevalidateSeconds();
|
|
30
|
+
const url = new URL(`/api/public/sites/${encodeURIComponent(slug)}/tracking-config`, apiBase);
|
|
31
|
+
try {
|
|
32
|
+
const res = await fetch(url.toString(), {
|
|
33
|
+
next: {
|
|
34
|
+
revalidate,
|
|
35
|
+
tags: [`risali:${slug}`, `risali:${slug}:tracking`],
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok)
|
|
39
|
+
return { ...EMPTY };
|
|
40
|
+
const body = (await res.json());
|
|
41
|
+
if (!body || !body.config)
|
|
42
|
+
return { ...EMPTY };
|
|
43
|
+
return body.config;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return { ...EMPTY };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../src/tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmBpF,MAAM,KAAK,GAAyB;IAClC,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,aAAa,EAAE,IAAI;IACnB,wBAAwB,EAAE,IAAI;IAC9B,2BAA2B,EAAE,IAAI;IACjC,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAoC,EAAE;IAEtC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;QAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;QACpC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC,CAAC,wBAAwB,EAAE,CAAC;IAEjC,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,EAC/D,OAAO,CACR,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACtC,IAAI,EAAE;gBACJ,UAAU;gBACV,IAAI,EAAE,CAAC,UAAU,IAAI,EAAE,EAAE,UAAU,IAAI,WAAW,CAAC;aACpD;SACmE,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4C,CAAC;QAC3E,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED