@risali/react 0.2.0 → 0.6.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.
Files changed (63) hide show
  1. package/README.md +22 -0
  2. package/dist/blog-jsonld.d.ts +74 -0
  3. package/dist/blog-jsonld.d.ts.map +1 -0
  4. package/dist/blog-jsonld.js +111 -0
  5. package/dist/blog-jsonld.js.map +1 -0
  6. package/dist/blog-list.d.ts +29 -0
  7. package/dist/blog-list.d.ts.map +1 -0
  8. package/dist/blog-list.js +113 -0
  9. package/dist/blog-list.js.map +1 -0
  10. package/dist/blog-post.d.ts +40 -0
  11. package/dist/blog-post.d.ts.map +1 -0
  12. package/dist/blog-post.js +109 -0
  13. package/dist/blog-post.js.map +1 -0
  14. package/dist/blog.d.ts +69 -0
  15. package/dist/blog.d.ts.map +1 -0
  16. package/dist/blog.js +79 -0
  17. package/dist/blog.js.map +1 -0
  18. package/dist/brand.d.ts +9 -0
  19. package/dist/brand.d.ts.map +1 -0
  20. package/dist/brand.js +68 -0
  21. package/dist/brand.js.map +1 -0
  22. package/dist/event-marker.d.ts +35 -0
  23. package/dist/event-marker.d.ts.map +1 -0
  24. package/dist/event-marker.js +17 -0
  25. package/dist/event-marker.js.map +1 -0
  26. package/dist/image.d.ts +34 -34
  27. package/dist/image.d.ts.map +1 -1
  28. package/dist/index.d.ts +22 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +15 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/page.d.ts +18 -0
  33. package/dist/page.d.ts.map +1 -0
  34. package/dist/page.js +41 -0
  35. package/dist/page.js.map +1 -0
  36. package/dist/rich-text.d.ts.map +1 -1
  37. package/dist/rich-text.js +3 -0
  38. package/dist/rich-text.js.map +1 -1
  39. package/dist/sanitize.d.ts.map +1 -1
  40. package/dist/sanitize.js +154 -10
  41. package/dist/sanitize.js.map +1 -1
  42. package/dist/sections/blocks.d.ts +10 -0
  43. package/dist/sections/blocks.d.ts.map +1 -0
  44. package/dist/sections/blocks.js +164 -0
  45. package/dist/sections/blocks.js.map +1 -0
  46. package/dist/sections/index.d.ts +12 -0
  47. package/dist/sections/index.d.ts.map +1 -0
  48. package/dist/sections/index.js +104 -0
  49. package/dist/sections/index.js.map +1 -0
  50. package/dist/style.d.ts.map +1 -1
  51. package/dist/style.js +2 -1
  52. package/dist/style.js.map +1 -1
  53. package/dist/tracking-component.d.ts +29 -0
  54. package/dist/tracking-component.d.ts.map +1 -0
  55. package/dist/tracking-component.js +100 -0
  56. package/dist/tracking-component.js.map +1 -0
  57. package/dist/tracking.d.ts +27 -0
  58. package/dist/tracking.d.ts.map +1 -0
  59. package/dist/tracking.js +49 -0
  60. package/dist/tracking.js.map +1 -0
  61. package/dist/types.d.ts +37 -1
  62. package/dist/types.d.ts.map +1 -1
  63. package/package.json +1 -1
@@ -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"}
@@ -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/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type RisaliBlockType = "text" | "image" | "rich_text" | "html";
1
+ export type RisaliBlockType = "text" | "image" | "rich_text" | "html" | "button" | "divider";
2
2
  export type RisaliStyleOverrides = {
3
3
  color?: string;
4
4
  font_size_multiplier?: number;
@@ -12,6 +12,35 @@ export type RisaliBlock = {
12
12
  style_overrides?: RisaliStyleOverrides | null;
13
13
  is_global?: boolean;
14
14
  label?: string | null;
15
+ section?: string | null;
16
+ position?: number | null;
17
+ variant?: string | null;
18
+ };
19
+ export type RisaliSectionSettings = {
20
+ background?: string;
21
+ spacing?: "compact" | "normal" | "spacious" | string;
22
+ columns?: number;
23
+ image_side?: "left" | "right" | string;
24
+ };
25
+ export type RisaliSection = {
26
+ key: string;
27
+ type: string;
28
+ variant?: string | null;
29
+ settings?: RisaliSectionSettings | null;
30
+ label?: string | null;
31
+ position: number;
32
+ };
33
+ export type RisaliBrandFont = {
34
+ family: string;
35
+ stack: string;
36
+ css_url?: string | null;
37
+ };
38
+ export type RisaliBrandInfo = {
39
+ colors?: Record<string, string>;
40
+ fonts?: {
41
+ heading?: RisaliBrandFont | null;
42
+ body?: RisaliBrandFont | null;
43
+ };
15
44
  };
16
45
  export type RisaliContent = {
17
46
  site: {
@@ -19,17 +48,24 @@ export type RisaliContent = {
19
48
  show_badge: boolean;
20
49
  favicon_url: string | null;
21
50
  jsonld: unknown;
51
+ brand?: RisaliBrandInfo | null;
22
52
  };
23
53
  page: {
24
54
  title: string | null;
25
55
  seo_title: string | null;
26
56
  seo_description: string | null;
27
57
  og_image_url: string | null;
58
+ render_mode?: string;
28
59
  } | null;
60
+ sections?: RisaliSection[];
29
61
  blocks: RisaliBlock[];
30
62
  };
31
63
  export type RisaliImageValue = {
32
64
  src?: string;
33
65
  alt?: string;
34
66
  };
67
+ export type RisaliButtonValue = {
68
+ text?: string;
69
+ href?: string;
70
+ };
35
71
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;AAEtE,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@risali/react",
3
- "version": "0.2.0",
3
+ "version": "0.6.0",
4
4
  "description": "React server components for Risali.app — SSR-fetch editable text/image/rich-text blocks from a client's Risali site.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,