@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.
- package/README.md +22 -0
- 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/brand.d.ts +9 -0
- package/dist/brand.d.ts.map +1 -0
- package/dist/brand.js +68 -0
- package/dist/brand.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 +34 -34
- package/dist/image.d.ts.map +1 -1
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/page.d.ts +18 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +41 -0
- package/dist/page.js.map +1 -0
- package/dist/rich-text.d.ts.map +1 -1
- package/dist/rich-text.js +3 -0
- package/dist/rich-text.js.map +1 -1
- package/dist/sanitize.d.ts.map +1 -1
- package/dist/sanitize.js +154 -10
- package/dist/sanitize.js.map +1 -1
- package/dist/sections/blocks.d.ts +10 -0
- package/dist/sections/blocks.d.ts.map +1 -0
- package/dist/sections/blocks.js +164 -0
- package/dist/sections/blocks.js.map +1 -0
- package/dist/sections/index.d.ts +12 -0
- package/dist/sections/index.d.ts.map +1 -0
- package/dist/sections/index.js +104 -0
- package/dist/sections/index.js.map +1 -0
- package/dist/style.d.ts.map +1 -1
- package/dist/style.js +2 -1
- package/dist/style.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/dist/types.d.ts +37 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/blog.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Blog data helpers for @risali/react v0.3.0 (PR 36c).
|
|
2
|
+
// Pure server-side fetchers around the Risali public blog API. Server
|
|
3
|
+
// components <RisaliBlogList /> and <RisaliBlogPost /> use these.
|
|
4
|
+
// Client components (rare for blog UI) can also call them directly.
|
|
5
|
+
import { resolveApiBase, resolveRevalidateSeconds, resolveSlug, } from "./config.js";
|
|
6
|
+
/**
|
|
7
|
+
* Fetch the published blog post list for the resolved site. Returns
|
|
8
|
+
* an empty array on any failure (unknown site, plan downgrade,
|
|
9
|
+
* network) so the consumer can fall back to an empty grid without
|
|
10
|
+
* dropping the whole page.
|
|
11
|
+
*/
|
|
12
|
+
export async function getRisaliBlogPosts(opts = {}) {
|
|
13
|
+
const slug = resolveSlug(opts.siteSlug);
|
|
14
|
+
const base = resolveApiBase();
|
|
15
|
+
const revalidate = resolveRevalidateSeconds();
|
|
16
|
+
const url = new URL(`${base}/api/public/sites/${slug}/blog/posts`);
|
|
17
|
+
if (opts.limit != null)
|
|
18
|
+
url.searchParams.set("limit", String(opts.limit));
|
|
19
|
+
if (opts.offset != null)
|
|
20
|
+
url.searchParams.set("offset", String(opts.offset));
|
|
21
|
+
if (opts.category)
|
|
22
|
+
url.searchParams.set("category", opts.category);
|
|
23
|
+
try {
|
|
24
|
+
const res = await fetch(url.toString(), {
|
|
25
|
+
next: { revalidate },
|
|
26
|
+
});
|
|
27
|
+
if (!res.ok)
|
|
28
|
+
return [];
|
|
29
|
+
const body = (await res.json());
|
|
30
|
+
if (!body || !("ok" in body) || !body.ok)
|
|
31
|
+
return [];
|
|
32
|
+
return Array.isArray(body.posts) ? body.posts : [];
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Fetch a single blog post by slug. Returns null on any failure so
|
|
40
|
+
* the consumer can render a notFound() page instead of throwing.
|
|
41
|
+
* When `previewToken` is supplied, the call goes through the
|
|
42
|
+
* preview path (no cache, drafts allowed).
|
|
43
|
+
*/
|
|
44
|
+
export async function getRisaliBlogPost(postSlug, opts = {}) {
|
|
45
|
+
if (typeof postSlug !== "string" || !postSlug)
|
|
46
|
+
return null;
|
|
47
|
+
const slug = resolveSlug(opts.siteSlug);
|
|
48
|
+
const base = resolveApiBase();
|
|
49
|
+
const revalidate = resolveRevalidateSeconds();
|
|
50
|
+
const url = new URL(`${base}/api/public/sites/${slug}/blog/posts/${encodeURIComponent(postSlug)}`);
|
|
51
|
+
if (opts.previewToken) {
|
|
52
|
+
url.searchParams.set("preview", opts.previewToken);
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const res = await fetch(url.toString(), {
|
|
56
|
+
next: opts.previewToken
|
|
57
|
+
? // Preview must always be fresh; skip the static cache.
|
|
58
|
+
{ revalidate: 0 }
|
|
59
|
+
: { revalidate },
|
|
60
|
+
});
|
|
61
|
+
if (!res.ok)
|
|
62
|
+
return null;
|
|
63
|
+
const body = (await res.json());
|
|
64
|
+
if (!body || !("ok" in body) || !body.ok)
|
|
65
|
+
return null;
|
|
66
|
+
return body.post ?? null;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Build a public `/blog/<slug>` URL for the client web. Helper for
|
|
74
|
+
* hand-rolled card grids that don't use `<RisaliBlogList />`.
|
|
75
|
+
*/
|
|
76
|
+
export function buildBlogPostHref(postSlug) {
|
|
77
|
+
return `/blog/${encodeURIComponent(postSlug)}`;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=blog.js.map
|
package/dist/blog.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog.js","sourceRoot":"","sources":["../src/blog.ts"],"names":[],"mappings":"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"}
|
package/dist/brand.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RisaliContent } from "./types.js";
|
|
2
|
+
export type RisaliBrandProps = {
|
|
3
|
+
siteSlug?: string;
|
|
4
|
+
/** Pre-fetched content — skips the internal getRisaliContent call. */
|
|
5
|
+
content?: RisaliContent | null;
|
|
6
|
+
path?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function RisaliBrand(props?: RisaliBrandProps): Promise<import("react").FunctionComponentElement<import("react").FragmentProps> | null>;
|
|
9
|
+
//# sourceMappingURL=brand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../src/brand.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAgBF,wBAAsB,WAAW,CAAC,KAAK,GAAE,gBAAqB,2FA+C7D"}
|
package/dist/brand.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// <RisaliBrand> (PR 40b) — emits the site's brand palette + fonts as CSS
|
|
2
|
+
// variables, for builder sections AND code pages alike. Drop it into the
|
|
3
|
+
// root layout's <head> (or body — a <style> tag works anywhere):
|
|
4
|
+
//
|
|
5
|
+
// <RisaliBrand /> // uses RISALI_SITE_SLUG from env
|
|
6
|
+
//
|
|
7
|
+
// Variables:
|
|
8
|
+
// --risali-color-<key> for every brand palette entry
|
|
9
|
+
// --risali-font-heading / --risali-font-body (font stacks)
|
|
10
|
+
//
|
|
11
|
+
// A brand change in the dashboard triggers /api/revalidate on the client
|
|
12
|
+
// site, so colors and fonts update without a deploy. Self-hosted font CSS
|
|
13
|
+
// (css_url → <link rel="stylesheet">) arrives with PR 40e; until then the
|
|
14
|
+
// stack falls back through locally available fonts.
|
|
15
|
+
import { createElement, Fragment } from "react";
|
|
16
|
+
import { getRisaliContent } from "./content.js";
|
|
17
|
+
import { safeColor } from "./style.js";
|
|
18
|
+
// Defense-in-depth mirrors of the dashboard-side validation — a compromised
|
|
19
|
+
// or stale API payload must not be able to break out of the <style> block.
|
|
20
|
+
const PALETTE_KEY_RE = /^[a-z][a-z0-9_]{0,40}$/;
|
|
21
|
+
const SAFE_FAMILY_RE = /^[A-Za-z0-9][A-Za-z0-9 _-]{0,59}$/;
|
|
22
|
+
const SAFE_CSS_URL_RE = /^(https:\/\/|\/)[^\s"'<>\\]+$/;
|
|
23
|
+
function fontStack(font) {
|
|
24
|
+
if (!font || typeof font.family !== "string")
|
|
25
|
+
return null;
|
|
26
|
+
if (!SAFE_FAMILY_RE.test(font.family))
|
|
27
|
+
return null;
|
|
28
|
+
// Rebuild the stack from the validated family instead of trusting the
|
|
29
|
+
// API-provided string verbatim.
|
|
30
|
+
return `"${font.family}", system-ui, sans-serif`;
|
|
31
|
+
}
|
|
32
|
+
export async function RisaliBrand(props = {}) {
|
|
33
|
+
const { siteSlug, content: providedContent, path } = props;
|
|
34
|
+
const content = providedContent !== undefined
|
|
35
|
+
? providedContent
|
|
36
|
+
: await getRisaliContent(path ?? "/", { siteSlug });
|
|
37
|
+
const brand = content?.site?.brand;
|
|
38
|
+
if (!brand)
|
|
39
|
+
return null;
|
|
40
|
+
const vars = [];
|
|
41
|
+
for (const [key, value] of Object.entries(brand.colors ?? {})) {
|
|
42
|
+
if (PALETTE_KEY_RE.test(key) && safeColor(value)) {
|
|
43
|
+
vars.push(`--risali-color-${key}:${value}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const heading = fontStack(brand.fonts?.heading);
|
|
47
|
+
if (heading)
|
|
48
|
+
vars.push(`--risali-font-heading:${heading}`);
|
|
49
|
+
const body = fontStack(brand.fonts?.body);
|
|
50
|
+
if (body)
|
|
51
|
+
vars.push(`--risali-font-body:${body}`);
|
|
52
|
+
const links = [];
|
|
53
|
+
for (const font of [brand.fonts?.heading, brand.fonts?.body]) {
|
|
54
|
+
const url = font?.css_url;
|
|
55
|
+
if (typeof url === "string" && SAFE_CSS_URL_RE.test(url) && !links.includes(url)) {
|
|
56
|
+
links.push(url);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (!vars.length && !links.length)
|
|
60
|
+
return null;
|
|
61
|
+
return createElement(Fragment, null, links.map((href) => createElement("link", { key: href, rel: "stylesheet", href })), vars.length
|
|
62
|
+
? createElement("style", {
|
|
63
|
+
"data-risali-brand": "",
|
|
64
|
+
dangerouslySetInnerHTML: { __html: `:root{${vars.join(";")}}` },
|
|
65
|
+
})
|
|
66
|
+
: null);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=brand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../src/brand.tsx"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,iEAAiE;AACjE,EAAE;AACF,iEAAiE;AACjE,EAAE;AACF,aAAa;AACb,yDAAyD;AACzD,+DAA+D;AAC/D,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,oDAAoD;AAEpD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAUvC,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAChD,MAAM,cAAc,GAAG,mCAAmC,CAAC;AAC3D,MAAM,eAAe,GAAG,+BAA+B,CAAC;AAExD,SAAS,SAAS,CAAC,IAAwC;IACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,sEAAsE;IACtE,gCAAgC;IAChC,OAAO,IAAI,IAAI,CAAC,MAAM,0BAA0B,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAA0B,EAAE;IAC5D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAE3D,MAAM,OAAO,GACX,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAElD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,EAAE,OAAO,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE/C,OAAO,aAAa,CAClB,QAAQ,EACR,IAAI,EACJ,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC9D,EACD,IAAI,CAAC,MAAM;QACT,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE;YACrB,mBAAmB,EAAE,EAAE;YACvB,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;SAChE,CAAC;QACJ,CAAC,CAAC,IAAI,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type RisaliEventProps = {
|
|
3
|
+
/**
|
|
4
|
+
* Stable lowercase identifier — must match a tracking_events.key configured
|
|
5
|
+
* in Risali for this site. The snippet runtime fires when a click bubbles
|
|
6
|
+
* through this element AND a tracking_events row with the same key exists.
|
|
7
|
+
*
|
|
8
|
+
* Pure marker: this component does NOT subscribe to clicks itself; it only
|
|
9
|
+
* places a stable `data-risali-event="<key>"` attribute on the wrapper so
|
|
10
|
+
* the marketer can later select it from the Risali dashboard's iframe-based
|
|
11
|
+
* event picker without having to maintain CSS selectors by hand.
|
|
12
|
+
*/
|
|
13
|
+
eventKey: string;
|
|
14
|
+
/**
|
|
15
|
+
* Optional element to render around the children. Defaults to <span> for
|
|
16
|
+
* inline contexts; pass "div" for block CTAs / forms.
|
|
17
|
+
*/
|
|
18
|
+
as?: "span" | "div" | "button";
|
|
19
|
+
className?: string;
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Code-side marker for Next.js sites: place around a button, link, or form
|
|
24
|
+
* and it'll be discoverable by the Risali event picker via the
|
|
25
|
+
* `[data-risali-event="<eventKey>"]` selector.
|
|
26
|
+
*
|
|
27
|
+
* <RisaliEvent eventKey="lead-form" as="div">
|
|
28
|
+
* <ContactForm />
|
|
29
|
+
* </RisaliEvent>
|
|
30
|
+
*
|
|
31
|
+
* On Lovable sites (no Next.js render path) this component is unused — the
|
|
32
|
+
* marketer picks elements via the dashboard's iframe selector flow instead.
|
|
33
|
+
*/
|
|
34
|
+
export declare function RisaliEvent({ eventKey, as: Tag, className, children, }: RisaliEventProps): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
//# sourceMappingURL=event-marker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-marker.d.ts","sourceRoot":"","sources":["../src/event-marker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;;;;;;;OASG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,EAAE,EAAE,GAAY,EAChB,SAAS,EACT,QAAQ,GACT,EAAE,gBAAgB,2CAMlB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Code-side marker for Next.js sites: place around a button, link, or form
|
|
4
|
+
* and it'll be discoverable by the Risali event picker via the
|
|
5
|
+
* `[data-risali-event="<eventKey>"]` selector.
|
|
6
|
+
*
|
|
7
|
+
* <RisaliEvent eventKey="lead-form" as="div">
|
|
8
|
+
* <ContactForm />
|
|
9
|
+
* </RisaliEvent>
|
|
10
|
+
*
|
|
11
|
+
* On Lovable sites (no Next.js render path) this component is unused — the
|
|
12
|
+
* marketer picks elements via the dashboard's iframe selector flow instead.
|
|
13
|
+
*/
|
|
14
|
+
export function RisaliEvent({ eventKey, as: Tag = "span", className, children, }) {
|
|
15
|
+
return (_jsx(Tag, { "data-risali-event": eventKey, className: className, children: children }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=event-marker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-marker.js","sourceRoot":"","sources":["../src/event-marker.tsx"],"names":[],"mappings":";AAuBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,EAAE,EAAE,GAAG,GAAG,MAAM,EAChB,SAAS,EACT,QAAQ,GACS;IACjB,OAAO,CACL,KAAC,GAAG,yBAAoB,QAAQ,EAAE,SAAS,EAAE,SAAS,YACnD,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
|
package/dist/image.d.ts
CHANGED
|
@@ -13,17 +13,22 @@ export declare function RisaliImage(props: RisaliImageProps): Promise<import("re
|
|
|
13
13
|
src: string;
|
|
14
14
|
alt: string;
|
|
15
15
|
"data-risali-key": string;
|
|
16
|
+
children?: import("react").ReactNode;
|
|
17
|
+
className?: string | undefined | undefined;
|
|
16
18
|
style?: CSSProperties;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
fetchPriority?: "high" | "low" | "auto" | undefined | undefined;
|
|
19
|
+
hidden?: boolean | undefined | undefined;
|
|
20
|
+
color?: string | undefined | undefined;
|
|
20
21
|
height?: number | string | undefined | undefined;
|
|
21
|
-
loading?: "eager" | "lazy" | undefined | undefined;
|
|
22
|
-
referrerPolicy?: import("react").HTMLAttributeReferrerPolicy | undefined;
|
|
23
|
-
sizes?: string | undefined | undefined;
|
|
24
|
-
srcSet?: string | undefined | undefined;
|
|
25
|
-
useMap?: string | undefined | undefined;
|
|
26
22
|
width?: number | string | undefined | undefined;
|
|
23
|
+
loading?: "eager" | "lazy" | undefined | undefined;
|
|
24
|
+
rel?: string | undefined | undefined;
|
|
25
|
+
id?: string | undefined | undefined;
|
|
26
|
+
title?: string | undefined | undefined;
|
|
27
|
+
dangerouslySetInnerHTML?: {
|
|
28
|
+
__html: string | TrustedHTML;
|
|
29
|
+
} | undefined | undefined;
|
|
30
|
+
fetchPriority?: "high" | "low" | "auto" | undefined | undefined;
|
|
31
|
+
slot?: string | undefined | undefined;
|
|
27
32
|
defaultChecked?: boolean | undefined | undefined;
|
|
28
33
|
defaultValue?: string | number | readonly string[] | undefined;
|
|
29
34
|
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
@@ -31,20 +36,15 @@ export declare function RisaliImage(props: RisaliImageProps): Promise<import("re
|
|
|
31
36
|
accessKey?: string | undefined | undefined;
|
|
32
37
|
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
|
|
33
38
|
autoFocus?: boolean | undefined | undefined;
|
|
34
|
-
|
|
35
|
-
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
39
|
+
contentEditable?: "inherit" | (boolean | "false" | "true") | "plaintext-only" | undefined;
|
|
36
40
|
contextMenu?: string | undefined | undefined;
|
|
37
41
|
dir?: string | undefined | undefined;
|
|
38
|
-
draggable?: (boolean | "
|
|
42
|
+
draggable?: (boolean | "false" | "true") | undefined;
|
|
39
43
|
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
|
|
40
|
-
hidden?: boolean | undefined | undefined;
|
|
41
|
-
id?: string | undefined | undefined;
|
|
42
44
|
lang?: string | undefined | undefined;
|
|
43
45
|
nonce?: string | undefined | undefined;
|
|
44
|
-
|
|
45
|
-
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
46
|
+
spellCheck?: (boolean | "false" | "true") | undefined;
|
|
46
47
|
tabIndex?: number | undefined | undefined;
|
|
47
|
-
title?: string | undefined | undefined;
|
|
48
48
|
translate?: "yes" | "no" | undefined | undefined;
|
|
49
49
|
radioGroup?: string | undefined | undefined;
|
|
50
50
|
role?: import("react").AriaRole | undefined;
|
|
@@ -53,14 +53,12 @@ export declare function RisaliImage(props: RisaliImageProps): Promise<import("re
|
|
|
53
53
|
inlist?: any;
|
|
54
54
|
prefix?: string | undefined | undefined;
|
|
55
55
|
property?: string | undefined | undefined;
|
|
56
|
-
rel?: string | undefined | undefined;
|
|
57
56
|
resource?: string | undefined | undefined;
|
|
58
57
|
rev?: string | undefined | undefined;
|
|
59
58
|
typeof?: string | undefined | undefined;
|
|
60
59
|
vocab?: string | undefined | undefined;
|
|
61
60
|
autoCorrect?: string | undefined | undefined;
|
|
62
61
|
autoSave?: string | undefined | undefined;
|
|
63
|
-
color?: string | undefined | undefined;
|
|
64
62
|
itemProp?: string | undefined | undefined;
|
|
65
63
|
itemScope?: boolean | undefined | undefined;
|
|
66
64
|
itemType?: string | undefined | undefined;
|
|
@@ -78,11 +76,11 @@ export declare function RisaliImage(props: RisaliImageProps): Promise<import("re
|
|
|
78
76
|
exportparts?: string | undefined | undefined;
|
|
79
77
|
part?: string | undefined | undefined;
|
|
80
78
|
"aria-activedescendant"?: string | undefined | undefined;
|
|
81
|
-
"aria-atomic"?: (boolean | "
|
|
79
|
+
"aria-atomic"?: (boolean | "false" | "true") | undefined;
|
|
82
80
|
"aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
|
|
83
81
|
"aria-braillelabel"?: string | undefined | undefined;
|
|
84
82
|
"aria-brailleroledescription"?: string | undefined | undefined;
|
|
85
|
-
"aria-busy"?: (boolean | "
|
|
83
|
+
"aria-busy"?: (boolean | "false" | "true") | undefined;
|
|
86
84
|
"aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
87
85
|
"aria-colcount"?: number | undefined | undefined;
|
|
88
86
|
"aria-colindex"?: number | undefined | undefined;
|
|
@@ -93,47 +91,43 @@ export declare function RisaliImage(props: RisaliImageProps): Promise<import("re
|
|
|
93
91
|
"aria-describedby"?: string | undefined | undefined;
|
|
94
92
|
"aria-description"?: string | undefined | undefined;
|
|
95
93
|
"aria-details"?: string | undefined | undefined;
|
|
96
|
-
"aria-disabled"?: (boolean | "
|
|
94
|
+
"aria-disabled"?: (boolean | "false" | "true") | undefined;
|
|
97
95
|
"aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
|
|
98
96
|
"aria-errormessage"?: string | undefined | undefined;
|
|
99
|
-
"aria-expanded"?: (boolean | "
|
|
97
|
+
"aria-expanded"?: (boolean | "false" | "true") | undefined;
|
|
100
98
|
"aria-flowto"?: string | undefined | undefined;
|
|
101
|
-
"aria-grabbed"?: (boolean | "
|
|
99
|
+
"aria-grabbed"?: (boolean | "false" | "true") | undefined;
|
|
102
100
|
"aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
|
|
103
|
-
"aria-hidden"?: (boolean | "
|
|
101
|
+
"aria-hidden"?: (boolean | "false" | "true") | undefined;
|
|
104
102
|
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
|
|
105
103
|
"aria-keyshortcuts"?: string | undefined | undefined;
|
|
106
104
|
"aria-label"?: string | undefined | undefined;
|
|
107
105
|
"aria-labelledby"?: string | undefined | undefined;
|
|
108
106
|
"aria-level"?: number | undefined | undefined;
|
|
109
107
|
"aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
|
|
110
|
-
"aria-modal"?: (boolean | "
|
|
111
|
-
"aria-multiline"?: (boolean | "
|
|
112
|
-
"aria-multiselectable"?: (boolean | "
|
|
108
|
+
"aria-modal"?: (boolean | "false" | "true") | undefined;
|
|
109
|
+
"aria-multiline"?: (boolean | "false" | "true") | undefined;
|
|
110
|
+
"aria-multiselectable"?: (boolean | "false" | "true") | undefined;
|
|
113
111
|
"aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
|
|
114
112
|
"aria-owns"?: string | undefined | undefined;
|
|
115
113
|
"aria-placeholder"?: string | undefined | undefined;
|
|
116
114
|
"aria-posinset"?: number | undefined | undefined;
|
|
117
115
|
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
118
|
-
"aria-readonly"?: (boolean | "
|
|
116
|
+
"aria-readonly"?: (boolean | "false" | "true") | undefined;
|
|
119
117
|
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
|
|
120
|
-
"aria-required"?: (boolean | "
|
|
118
|
+
"aria-required"?: (boolean | "false" | "true") | undefined;
|
|
121
119
|
"aria-roledescription"?: string | undefined | undefined;
|
|
122
120
|
"aria-rowcount"?: number | undefined | undefined;
|
|
123
121
|
"aria-rowindex"?: number | undefined | undefined;
|
|
124
122
|
"aria-rowindextext"?: string | undefined | undefined;
|
|
125
123
|
"aria-rowspan"?: number | undefined | undefined;
|
|
126
|
-
"aria-selected"?: (boolean | "
|
|
124
|
+
"aria-selected"?: (boolean | "false" | "true") | undefined;
|
|
127
125
|
"aria-setsize"?: number | undefined | undefined;
|
|
128
126
|
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
|
|
129
127
|
"aria-valuemax"?: number | undefined | undefined;
|
|
130
128
|
"aria-valuemin"?: number | undefined | undefined;
|
|
131
129
|
"aria-valuenow"?: number | undefined | undefined;
|
|
132
130
|
"aria-valuetext"?: string | undefined | undefined;
|
|
133
|
-
children?: import("react").ReactNode;
|
|
134
|
-
dangerouslySetInnerHTML?: {
|
|
135
|
-
__html: string | TrustedHTML;
|
|
136
|
-
} | undefined | undefined;
|
|
137
131
|
onCopy?: import("react").ClipboardEventHandler<HTMLImageElement> | undefined;
|
|
138
132
|
onCopyCapture?: import("react").ClipboardEventHandler<HTMLImageElement> | undefined;
|
|
139
133
|
onCut?: import("react").ClipboardEventHandler<HTMLImageElement> | undefined;
|
|
@@ -302,5 +296,11 @@ export declare function RisaliImage(props: RisaliImageProps): Promise<import("re
|
|
|
302
296
|
onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLImageElement> | undefined;
|
|
303
297
|
onTransitionStart?: import("react").TransitionEventHandler<HTMLImageElement> | undefined;
|
|
304
298
|
onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLImageElement> | undefined;
|
|
299
|
+
crossOrigin?: "" | "anonymous" | "use-credentials" | undefined;
|
|
300
|
+
decoding?: "async" | "auto" | "sync" | undefined | undefined;
|
|
301
|
+
referrerPolicy?: import("react").HTMLAttributeReferrerPolicy | undefined;
|
|
302
|
+
sizes?: string | undefined | undefined;
|
|
303
|
+
srcSet?: string | undefined | undefined;
|
|
304
|
+
useMap?: string | undefined | undefined;
|
|
305
305
|
}, HTMLElement>>;
|
|
306
306
|
//# sourceMappingURL=image.d.ts.map
|
package/dist/image.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAIlE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,iBAAiB,CAAC,gBAAgB,CAAC,EACnC,KAAK,GAAG,KAAK,CACd,GAAG;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAOF,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAIlE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,iBAAiB,CAAC,gBAAgB,CAAC,EACnC,KAAK,GAAG,KAAK,CACd,GAAG;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAOF,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB;;;;;;YAR/C,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0CtB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,26 @@ export { RisaliRichText } from "./rich-text.js";
|
|
|
9
9
|
export type { RisaliRichTextProps } from "./rich-text.js";
|
|
10
10
|
export { sanitiseRichText } from "./sanitize.js";
|
|
11
11
|
export type { RisaliBlock, RisaliBlockType, RisaliContent, RisaliImageValue, RisaliStyleOverrides, } from "./types.js";
|
|
12
|
+
export { RisaliPage } from "./page.js";
|
|
13
|
+
export type { RisaliPageProps } from "./page.js";
|
|
14
|
+
export { RisaliBrand } from "./brand.js";
|
|
15
|
+
export type { RisaliBrandProps } from "./brand.js";
|
|
16
|
+
export { RISALI_SECTION_COMPONENTS, sectionWrapperStyle, } from "./sections/index.js";
|
|
17
|
+
export type { RisaliSectionComponent, RisaliSectionProps, } from "./sections/index.js";
|
|
18
|
+
export { renderBlock, renderBlocks, safeButtonHref, sortByPosition, } from "./sections/blocks.js";
|
|
19
|
+
export type { RisaliBrandFont, RisaliBrandInfo, RisaliButtonValue, RisaliSection, RisaliSectionSettings, } from "./types.js";
|
|
20
|
+
export { getRisaliBlogPosts, getRisaliBlogPost, buildBlogPostHref, } from "./blog.js";
|
|
21
|
+
export type { GetBlogPostOptions, GetBlogPostsOptions, RisaliBlogPost as RisaliBlogPostType, RisaliBlogPostCard, RisaliBlogPostSeo, } from "./blog.js";
|
|
22
|
+
export { RisaliBlogList } from "./blog-list.js";
|
|
23
|
+
export type { RisaliBlogListProps } from "./blog-list.js";
|
|
24
|
+
export { RisaliBlogPost } from "./blog-post.js";
|
|
25
|
+
export type { RisaliBlogPostProps } from "./blog-post.js";
|
|
26
|
+
export { buildBlogPostJsonLd, buildBlogPostMetadata, } from "./blog-jsonld.js";
|
|
27
|
+
export type { BuildBlogPostJsonLdOptions } from "./blog-jsonld.js";
|
|
28
|
+
export { getRisaliTrackingConfig } from "./tracking.js";
|
|
29
|
+
export type { RisaliTrackingConfig, GetTrackingConfigOptions, } from "./tracking.js";
|
|
30
|
+
export { RisaliTracking } from "./tracking-component.js";
|
|
31
|
+
export type { RisaliTrackingProps } from "./tracking-component.js";
|
|
32
|
+
export { RisaliEvent } from "./event-marker.js";
|
|
33
|
+
export type { RisaliEventProps } from "./event-marker.js";
|
|
12
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,IAAI,kBAAkB,EACpC,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EACV,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,4 +4,19 @@ export { RisaliText } from "./text.js";
|
|
|
4
4
|
export { RisaliImage } from "./image.js";
|
|
5
5
|
export { RisaliRichText } from "./rich-text.js";
|
|
6
6
|
export { sanitiseRichText } from "./sanitize.js";
|
|
7
|
+
// v0.6.0 — page builder (PR 40b).
|
|
8
|
+
export { RisaliPage } from "./page.js";
|
|
9
|
+
export { RisaliBrand } from "./brand.js";
|
|
10
|
+
export { RISALI_SECTION_COMPONENTS, sectionWrapperStyle, } from "./sections/index.js";
|
|
11
|
+
export { renderBlock, renderBlocks, safeButtonHref, sortByPosition, } from "./sections/blocks.js";
|
|
12
|
+
// v0.3.0 — blog module (PR 36c).
|
|
13
|
+
export { getRisaliBlogPosts, getRisaliBlogPost, buildBlogPostHref, } from "./blog.js";
|
|
14
|
+
export { RisaliBlogList } from "./blog-list.js";
|
|
15
|
+
export { RisaliBlogPost } from "./blog-post.js";
|
|
16
|
+
export { buildBlogPostJsonLd, buildBlogPostMetadata, } from "./blog-jsonld.js";
|
|
17
|
+
// v0.4.0 — marketing tracking (PR 38a).
|
|
18
|
+
export { getRisaliTrackingConfig } from "./tracking.js";
|
|
19
|
+
export { RisaliTracking } from "./tracking-component.js";
|
|
20
|
+
// v0.5.0 — event marker (PR 38b).
|
|
21
|
+
export { RisaliEvent } from "./event-marker.js";
|
|
7
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AASjD,kCAAkC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAS9B,iCAAiC;AACjC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAQnB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,wCAAwC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAKxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/page.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type RisaliSectionComponent } from "./sections/index.js";
|
|
3
|
+
import type { RisaliContent } from "./types.js";
|
|
4
|
+
export type RisaliPageProps = {
|
|
5
|
+
path: string;
|
|
6
|
+
siteSlug?: string;
|
|
7
|
+
/** Pre-fetched content — skips the internal getRisaliContent call. */
|
|
8
|
+
content?: RisaliContent | null;
|
|
9
|
+
/**
|
|
10
|
+
* Signature sections registered in the client repo's code, keyed by
|
|
11
|
+
* section_type. Takes precedence over the built-in catalog.
|
|
12
|
+
*/
|
|
13
|
+
customSections?: Record<string, RisaliSectionComponent>;
|
|
14
|
+
/** Rendered when the page is missing or not in builder mode. */
|
|
15
|
+
notFound?: ReactNode;
|
|
16
|
+
};
|
|
17
|
+
export declare function RisaliPage(props: RisaliPageProps): Promise<string | number | bigint | boolean | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | import("react").FunctionComponentElement<import("react").FragmentProps> | null | undefined>;
|
|
18
|
+
//# sourceMappingURL=page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACxD,gEAAgE;IAChE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,+PAwCtD"}
|
package/dist/page.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// <RisaliPage> (PR 40b) — renders a whole builder page from the DB.
|
|
2
|
+
//
|
|
3
|
+
// Usage in a client site (catch-all route):
|
|
4
|
+
//
|
|
5
|
+
// export default async function Page({ params }) {
|
|
6
|
+
// const path = "/" + (params.rest ?? []).join("/");
|
|
7
|
+
// return <RisaliPage path={path} notFound={notFound()} />;
|
|
8
|
+
// }
|
|
9
|
+
//
|
|
10
|
+
// Pages with render_mode='code' (the default — CI-registered blocks in
|
|
11
|
+
// static routes) return `notFound` (or null), so a builder catch-all and
|
|
12
|
+
// code routes coexist; Next.js routing already prefers the static route.
|
|
13
|
+
import { createElement, Fragment } from "react";
|
|
14
|
+
import { getRisaliContent } from "./content.js";
|
|
15
|
+
import { RISALI_SECTION_COMPONENTS, sectionWrapperStyle, } from "./sections/index.js";
|
|
16
|
+
import { sortByPosition } from "./sections/blocks.js";
|
|
17
|
+
export async function RisaliPage(props) {
|
|
18
|
+
const { path, siteSlug, content: providedContent, customSections, notFound } = props;
|
|
19
|
+
const content = providedContent !== undefined
|
|
20
|
+
? providedContent
|
|
21
|
+
: await getRisaliContent(path, { siteSlug });
|
|
22
|
+
if (!content || !content.page || content.page.render_mode !== "builder") {
|
|
23
|
+
return notFound ?? null;
|
|
24
|
+
}
|
|
25
|
+
const sections = sortByPosition(content.sections ?? []);
|
|
26
|
+
return createElement(Fragment, null, sections.map((section) => {
|
|
27
|
+
const Component = customSections?.[section.type] ?? RISALI_SECTION_COMPONENTS[section.type];
|
|
28
|
+
// Unknown type (e.g. a signature section whose component is missing
|
|
29
|
+
// from this deploy) — skip rather than crash the whole page.
|
|
30
|
+
if (!Component)
|
|
31
|
+
return null;
|
|
32
|
+
const blocks = sortByPosition(content.blocks.filter((b) => b.section === section.key));
|
|
33
|
+
return createElement("section", {
|
|
34
|
+
key: section.key,
|
|
35
|
+
"data-risali-section": section.key,
|
|
36
|
+
"data-risali-section-type": section.type,
|
|
37
|
+
style: sectionWrapperStyle(section),
|
|
38
|
+
}, createElement(Component, { section, blocks }));
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=page.js.map
|
package/dist/page.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.tsx"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,4CAA4C;AAC5C,EAAE;AACF,qDAAqD;AACrD,wDAAwD;AACxD,+DAA+D;AAC/D,MAAM;AACN,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AAGzE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAEpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAiBtD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAErF,MAAM,OAAO,GACX,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEjD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACxE,OAAO,QAAQ,IAAI,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAExD,OAAO,aAAa,CAClB,QAAQ,EACR,IAAI,EACJ,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACvB,MAAM,SAAS,GACb,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5E,oEAAoE;QACpE,6DAA6D;QAC7D,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,MAAM,GAAG,cAAc,CAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CACxD,CAAC;QAEF,OAAO,aAAa,CAClB,SAAS,EACT;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,qBAAqB,EAAE,OAAO,CAAC,GAAG;YAClC,0BAA0B,EAAE,OAAO,CAAC,IAAI;YACxC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC;SACpC,EACD,aAAa,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/rich-text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../src/rich-text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAKxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../src/rich-text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAKxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mGAsC9D"}
|
package/dist/rich-text.js
CHANGED
|
@@ -20,6 +20,9 @@ export async function RisaliRichText(props) {
|
|
|
20
20
|
className,
|
|
21
21
|
style: mergedStyle,
|
|
22
22
|
"data-risali-key": pageKey,
|
|
23
|
+
// Editor-mode hint (PR 26): the snippet reads this to open the rich-text
|
|
24
|
+
// toolbar instead of the plain-text editor for this block.
|
|
25
|
+
"data-risali-type": "rich_text",
|
|
23
26
|
dangerouslySetInnerHTML: { __html: safeHtml },
|
|
24
27
|
});
|
|
25
28
|
}
|
package/dist/rich-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../src/rich-text.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAcjD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA0B;IAC7D,MAAM,EACJ,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,OAAO,EAAE,eAAe,EACxB,EAAE,EACF,SAAS,EACT,KAAK,EACL,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,MAAM,GAAG,GAAgB,EAAE,IAAI,KAAK,CAAC;IACrC,MAAM,OAAO,GACX,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,QAAQ,GACZ,KAAK;QACL,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;QACrD,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC7B,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,YAAY,CAAC;IAEnB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAEvE,OAAO,aAAa,CAAC,GAAG,EAAE;QACxB,SAAS;QACT,KAAK,EAAE,WAAW;QAClB,iBAAiB,EAAE,OAAO;QAC1B,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC9C,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../src/rich-text.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAcjD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAA0B;IAC7D,MAAM,EACJ,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,OAAO,EAAE,eAAe,EACxB,EAAE,EACF,SAAS,EACT,KAAK,EACL,QAAQ,GACT,GAAG,KAAK,CAAC;IAEV,MAAM,GAAG,GAAgB,EAAE,IAAI,KAAK,CAAC;IACrC,MAAM,OAAO,GACX,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,QAAQ,GACZ,KAAK;QACL,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;QACrD,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;QAC7B,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,YAAY,CAAC;IAEnB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAEvE,OAAO,aAAa,CAAC,GAAG,EAAE;QACxB,SAAS;QACT,KAAK,EAAE,WAAW;QAClB,iBAAiB,EAAE,OAAO;QAC1B,yEAAyE;QACzE,2DAA2D;QAC3D,kBAAkB,EAAE,WAAW;QAC/B,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;KAC9C,CAAC,CAAC;AACL,CAAC"}
|
package/dist/sanitize.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAuMA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkEtD"}
|