@tekki-forge/runtime-admin 0.2.0 → 0.3.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/admin-dashboard.d.ts +16 -0
- package/dist/admin-dashboard.js +60 -0
- package/dist/admin-dashboard.js.map +1 -0
- package/dist/admin-orgs.d.ts +14 -0
- package/dist/admin-orgs.js +75 -0
- package/dist/admin-orgs.js.map +1 -0
- package/dist/admin-shell.d.ts +55 -0
- package/dist/admin-shell.js +141 -0
- package/dist/admin-shell.js.map +1 -0
- package/dist/admin.js +35 -4
- package/dist/admin.js.map +1 -1
- package/dist/app-pages.d.ts +19 -0
- package/dist/app-pages.js +109 -0
- package/dist/app-pages.js.map +1 -0
- package/dist/auth-pages.js +7 -2
- package/dist/auth-pages.js.map +1 -1
- package/dist/charts.d.ts +98 -2
- package/dist/charts.js +264 -24
- package/dist/charts.js.map +1 -1
- package/dist/context.js +32 -1
- package/dist/context.js.map +1 -1
- package/dist/dashboard.d.ts +63 -8
- package/dist/dashboard.js +180 -36
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/messages/de.js +751 -0
- package/dist/i18n/messages/de.js.map +1 -1
- package/dist/i18n/messages/en.js +751 -0
- package/dist/i18n/messages/en.js.map +1 -1
- package/dist/i18n/messages/es.js +751 -0
- package/dist/i18n/messages/es.js.map +1 -1
- package/dist/i18n/messages/fr.js +751 -0
- package/dist/i18n/messages/fr.js.map +1 -1
- package/dist/i18n/messages/pt.js +751 -0
- package/dist/i18n/messages/pt.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/shell.js +37 -34
- package/dist/shell.js.map +1 -1
- package/dist/site/editor/api.d.ts +74 -0
- package/dist/site/editor/api.js +93 -0
- package/dist/site/editor/api.js.map +1 -0
- package/dist/site/editor/content-page.d.ts +4 -0
- package/dist/site/editor/content-page.js +65 -0
- package/dist/site/editor/content-page.js.map +1 -0
- package/dist/site/editor/inbox-tab.d.ts +4 -0
- package/dist/site/editor/inbox-tab.js +88 -0
- package/dist/site/editor/inbox-tab.js.map +1 -0
- package/dist/site/editor/index.d.ts +1 -0
- package/dist/site/editor/index.js +3 -0
- package/dist/site/editor/index.js.map +1 -0
- package/dist/site/editor/model.d.ts +145 -0
- package/dist/site/editor/model.js +408 -0
- package/dist/site/editor/model.js.map +1 -0
- package/dist/site/editor/page-editor.d.ts +10 -0
- package/dist/site/editor/page-editor.js +257 -0
- package/dist/site/editor/page-editor.js.map +1 -0
- package/dist/site/editor/page-settings.d.ts +9 -0
- package/dist/site/editor/page-settings.js +105 -0
- package/dist/site/editor/page-settings.js.map +1 -0
- package/dist/site/editor/pages-tab.d.ts +5 -0
- package/dist/site/editor/pages-tab.js +108 -0
- package/dist/site/editor/pages-tab.js.map +1 -0
- package/dist/site/editor/posts-tab.d.ts +6 -0
- package/dist/site/editor/posts-tab.js +139 -0
- package/dist/site/editor/posts-tab.js.map +1 -0
- package/dist/site/editor/preview.d.ts +32 -0
- package/dist/site/editor/preview.js +104 -0
- package/dist/site/editor/preview.js.map +1 -0
- package/dist/site/editor/prop-fields.d.ts +53 -0
- package/dist/site/editor/prop-fields.js +233 -0
- package/dist/site/editor/prop-fields.js.map +1 -0
- package/dist/site/editor/section-list.d.ts +14 -0
- package/dist/site/editor/section-list.js +110 -0
- package/dist/site/editor/section-list.js.map +1 -0
- package/dist/site/editor/section-picker.d.ts +12 -0
- package/dist/site/editor/section-picker.js +44 -0
- package/dist/site/editor/section-picker.js.map +1 -0
- package/dist/site/editor/widgets.d.ts +84 -0
- package/dist/site/editor/widgets.js +130 -0
- package/dist/site/editor/widgets.js.map +1 -0
- package/dist/site/format.d.ts +31 -0
- package/dist/site/format.js +106 -0
- package/dist/site/format.js.map +1 -0
- package/dist/site/forms.d.ts +43 -0
- package/dist/site/forms.js +155 -0
- package/dist/site/forms.js.map +1 -0
- package/dist/site/header.d.ts +32 -0
- package/dist/site/header.js +76 -0
- package/dist/site/header.js.map +1 -0
- package/dist/site/icons.d.ts +10 -0
- package/dist/site/icons.js +28 -0
- package/dist/site/icons.js.map +1 -0
- package/dist/site/index.d.ts +11 -0
- package/dist/site/index.js +13 -0
- package/dist/site/index.js.map +1 -0
- package/dist/site/markdown.d.ts +14 -0
- package/dist/site/markdown.js +457 -0
- package/dist/site/markdown.js.map +1 -0
- package/dist/site/page.d.ts +16 -0
- package/dist/site/page.js +65 -0
- package/dist/site/page.js.map +1 -0
- package/dist/site/proxy.d.ts +13 -0
- package/dist/site/proxy.js +43 -0
- package/dist/site/proxy.js.map +1 -0
- package/dist/site/sections.d.ts +43 -0
- package/dist/site/sections.js +560 -0
- package/dist/site/sections.js.map +1 -0
- package/dist/site/server.d.ts +73 -0
- package/dist/site/server.js +235 -0
- package/dist/site/server.js.map +1 -0
- package/dist/site/types.d.ts +137 -0
- package/dist/site/types.js +2 -0
- package/dist/site/types.js.map +1 -0
- package/dist/support.d.ts +29 -0
- package/dist/support.js +165 -0
- package/dist/support.js.map +1 -0
- package/dist/system-config.d.ts +24 -0
- package/dist/system-config.js +37 -0
- package/dist/system-config.js.map +1 -0
- package/dist/system-settings.d.ts +9 -0
- package/dist/system-settings.js +60 -0
- package/dist/system-settings.js.map +1 -0
- package/dist/theme-catalog.d.ts +72 -2
- package/dist/theme-catalog.js +47 -0
- package/dist/theme-catalog.js.map +1 -1
- package/dist/theme-switcher.d.ts +8 -0
- package/dist/theme-switcher.js +39 -4
- package/dist/theme-switcher.js.map +1 -1
- package/dist/theme.js +8 -0
- package/dist/theme.js.map +1 -1
- package/dist/transactions.d.ts +4 -0
- package/dist/transactions.js +60 -0
- package/dist/transactions.js.map +1 -0
- package/package.json +9 -5
- package/styles.css +1089 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface SiteHeaderLink {
|
|
3
|
+
label: string;
|
|
4
|
+
href: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SiteHeaderEntry {
|
|
8
|
+
label: string;
|
|
9
|
+
href?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
items?: SiteHeaderLink[];
|
|
12
|
+
}
|
|
13
|
+
export interface SiteHeaderAction {
|
|
14
|
+
href: string;
|
|
15
|
+
label: string;
|
|
16
|
+
primary: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface SiteHeaderProps {
|
|
19
|
+
/** The logo link (server-rendered). */
|
|
20
|
+
brand: ReactNode;
|
|
21
|
+
nav: SiteHeaderEntry[];
|
|
22
|
+
actions: SiteHeaderAction[];
|
|
23
|
+
labels: {
|
|
24
|
+
navigation: string;
|
|
25
|
+
openMenu: string;
|
|
26
|
+
closeMenu: string;
|
|
27
|
+
menu: string;
|
|
28
|
+
};
|
|
29
|
+
/** Path of the page shown (marks its menu link as current). */
|
|
30
|
+
currentPath?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function SiteHeader({ brand, nav, actions, labels, currentPath }: SiteHeaderProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDown, Menu, X } from "lucide-react";
|
|
4
|
+
import { useCallback, useEffect, useId, useRef, useState } from "react";
|
|
5
|
+
const external = (href) => /^https?:\/\//i.test(href);
|
|
6
|
+
const linkProps = (href, currentPath) => ({ href, ...(external(href) ? { rel: "noopener" } : {}), ...(currentPath !== undefined && href === currentPath ? { "aria-current": "page" } : {}) });
|
|
7
|
+
const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
8
|
+
/** One dropdown: a disclosure button and its panel. Escape and clicks outside close it; focus returns to the button. */
|
|
9
|
+
function NavGroup({ entry, currentPath, open, onToggle, onClose }) {
|
|
10
|
+
const id = useId();
|
|
11
|
+
const root = useRef(null);
|
|
12
|
+
const button = useRef(null);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (!open)
|
|
15
|
+
return;
|
|
16
|
+
const onPointer = (e) => {
|
|
17
|
+
if (!root.current?.contains(e.target))
|
|
18
|
+
onClose(false);
|
|
19
|
+
};
|
|
20
|
+
const onKey = (e) => {
|
|
21
|
+
if (e.key === "Escape") {
|
|
22
|
+
onClose(false);
|
|
23
|
+
button.current?.focus();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
document.addEventListener("pointerdown", onPointer);
|
|
27
|
+
document.addEventListener("keydown", onKey);
|
|
28
|
+
return () => {
|
|
29
|
+
document.removeEventListener("pointerdown", onPointer);
|
|
30
|
+
document.removeEventListener("keydown", onKey);
|
|
31
|
+
};
|
|
32
|
+
}, [open, onClose]);
|
|
33
|
+
const active = entry.items.some((l) => l.href === currentPath);
|
|
34
|
+
return (_jsxs("li", { ref: root, className: "relative", onBlur: (e) => {
|
|
35
|
+
// Keyboard users tabbing out of the group close it.
|
|
36
|
+
if (open && e.relatedTarget && !root.current?.contains(e.relatedTarget))
|
|
37
|
+
onClose(false);
|
|
38
|
+
}, children: [_jsxs("button", { ref: button, type: "button", className: "forge-site-navlink forge-focusable inline-flex items-center gap-1", "aria-expanded": open, "aria-controls": id, onClick: onToggle, "data-active": active || undefined, children: [entry.label, _jsx(ChevronDown, { className: "forge-site-chevron size-3.5 opacity-70", "aria-hidden": true })] }), _jsx("div", { id: id, hidden: !open, className: "forge-popover forge-site-dropdown absolute top-full left-0 z-50 mt-2 w-80 p-2", children: _jsx("ul", { className: "grid gap-0.5", children: entry.items.map((l) => (_jsx("li", { children: _jsxs("a", { ...linkProps(l.href, currentPath), className: "forge-site-dropdown-link forge-focusable block px-3 py-2.5", onClick: () => onClose(false), children: [_jsx("span", { className: "block text-sm font-medium text-ink", children: l.label }), l.description && _jsx("span", { className: "mt-0.5 block text-[0.8125rem] leading-snug text-ink-muted", children: l.description })] }) }, l.href + l.label))) }) })] }));
|
|
39
|
+
}
|
|
40
|
+
export function SiteHeader({ brand, nav, actions, labels, currentPath }) {
|
|
41
|
+
const [openGroup, setOpenGroup] = useState(null);
|
|
42
|
+
const [mobile, setMobile] = useState(false);
|
|
43
|
+
const panelId = useId();
|
|
44
|
+
const toggle = useRef(null);
|
|
45
|
+
const panel = useRef(null);
|
|
46
|
+
const closeGroup = useCallback(() => setOpenGroup(null), []);
|
|
47
|
+
const closeMobile = useCallback((refocus) => {
|
|
48
|
+
setMobile(false);
|
|
49
|
+
if (refocus)
|
|
50
|
+
toggle.current?.focus();
|
|
51
|
+
}, []);
|
|
52
|
+
// Small-screen menu: focus moves into the panel, Tab cycles between the toggle and the panel, Escape closes.
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
if (!mobile)
|
|
55
|
+
return;
|
|
56
|
+
panel.current?.querySelector(FOCUSABLE)?.focus();
|
|
57
|
+
const onKey = (e) => {
|
|
58
|
+
if (e.key === "Escape") {
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
closeMobile(true);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (e.key !== "Tab" || !panel.current || !toggle.current)
|
|
64
|
+
return;
|
|
65
|
+
const items = [toggle.current, ...panel.current.querySelectorAll(FOCUSABLE)];
|
|
66
|
+
const at = items.indexOf(document.activeElement);
|
|
67
|
+
const next = at === -1 ? 0 : (at + (e.shiftKey ? -1 : 1) + items.length) % items.length;
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
items[next].focus();
|
|
70
|
+
};
|
|
71
|
+
document.addEventListener("keydown", onKey);
|
|
72
|
+
return () => document.removeEventListener("keydown", onKey);
|
|
73
|
+
}, [mobile, closeMobile]);
|
|
74
|
+
return (_jsxs("header", { className: "forge-site-header sticky top-0 z-40", children: [_jsxs("div", { className: "mx-auto flex h-16 max-w-6xl items-center gap-6 px-4 @3xl:px-8", children: [brand, nav.length > 0 && (_jsx("nav", { "aria-label": labels.navigation, className: "hidden flex-1 @5xl:block", children: _jsx("ul", { className: "flex items-center gap-1", children: nav.map((entry, i) => entry.items ? (_jsx(NavGroup, { entry: entry, currentPath: currentPath, open: openGroup === i, onToggle: () => setOpenGroup(openGroup === i ? null : i), onClose: closeGroup }, `g${i}`)) : (_jsx("li", { children: _jsx("a", { ...linkProps(entry.href, currentPath), className: "forge-site-navlink forge-focusable inline-flex items-center", children: entry.label }) }, `l${i}`))) }) })), _jsx("div", { className: "ml-auto hidden shrink-0 items-center gap-2 @5xl:flex", children: actions.map((a) => (_jsx("a", { ...linkProps(a.href), className: `forge-btn ${a.primary ? "forge-btn-primary" : "forge-btn-ghost"} inline-flex h-[var(--forge-control-h)] items-center px-3.5 text-sm font-medium`, children: a.label }, a.href + a.label))) }), (nav.length > 0 || actions.length > 0) && (_jsx("button", { ref: toggle, type: "button", className: "forge-btn forge-btn-ghost ml-auto inline-flex size-10 items-center justify-center @5xl:hidden", "aria-expanded": mobile, "aria-controls": panelId, "aria-label": mobile ? labels.closeMenu : labels.openMenu, onClick: () => (mobile ? closeMobile(false) : setMobile(true)), children: mobile ? _jsx(X, { className: "size-5", "aria-hidden": true }) : _jsx(Menu, { className: "size-5", "aria-hidden": true }) }))] }), _jsx("div", { ref: panel, id: panelId, role: "dialog", "aria-label": labels.menu, hidden: !mobile, className: "forge-site-mobile absolute inset-x-0 top-full max-h-[calc(100dvh-4rem)] overflow-y-auto @5xl:hidden", children: _jsxs("nav", { "aria-label": labels.navigation, className: "mx-auto max-w-6xl px-4 py-4 @3xl:px-8", children: [_jsx("ul", { className: "grid gap-1", children: nav.map((entry, i) => entry.items ? (_jsxs("li", { className: "pt-3 first:pt-0", children: [_jsx("p", { className: "px-3 pb-1 text-xs font-semibold tracking-wide text-ink-muted uppercase", children: entry.label }), _jsx("ul", { className: "grid gap-0.5", children: entry.items.map((l) => (_jsx("li", { children: _jsx("a", { ...linkProps(l.href, currentPath), className: "forge-site-dropdown-link forge-focusable block px-3 py-2.5 text-base text-ink", onClick: () => closeMobile(false), children: l.label }) }, l.href + l.label))) })] }, `g${i}`)) : (_jsx("li", { children: _jsx("a", { ...linkProps(entry.href, currentPath), className: "forge-site-dropdown-link forge-focusable block px-3 py-2.5 text-base font-medium text-ink", onClick: () => closeMobile(false), children: entry.label }) }, `l${i}`))) }), actions.length > 0 && (_jsx("div", { className: "mt-4 grid gap-2 border-t border-line pt-4 @md:grid-cols-2", children: actions.map((a) => (_jsx("a", { ...linkProps(a.href), className: `forge-btn ${a.primary ? "forge-btn-primary" : "forge-btn-secondary"} inline-flex h-11 items-center justify-center px-4 text-base font-medium`, children: a.label }, a.href + a.label))) }))] }) })] }));
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/site/header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function SiteIcon({ name, className }: {
|
|
2
|
+
name: unknown;
|
|
3
|
+
className?: string;
|
|
4
|
+
}): import("react").JSX.Element;
|
|
5
|
+
/** Display names of the social networks of `site.footer.social` (brand names: not translated). */
|
|
6
|
+
export declare const SOCIAL_NAMES: Record<string, string>;
|
|
7
|
+
export declare function SocialIcon({ network, className }: {
|
|
8
|
+
network: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Sparkles } from "lucide-react";
|
|
3
|
+
import { LANDING_ICON_COMPONENTS } from "../landing.js";
|
|
4
|
+
/* Icons of the website: feature icons (the landing page's set, same names as SITE_ICONS) and social networks. */
|
|
5
|
+
export function SiteIcon({ name, className = "size-5" }) {
|
|
6
|
+
const Icon = (typeof name === "string" && LANDING_ICON_COMPONENTS[name]) || Sparkles;
|
|
7
|
+
return _jsx(Icon, { className: className, "aria-hidden": true });
|
|
8
|
+
}
|
|
9
|
+
/** Display names of the social networks of `site.footer.social` (brand names: not translated). */
|
|
10
|
+
export const SOCIAL_NAMES = { x: "X", github: "GitHub", linkedin: "LinkedIn", youtube: "YouTube", instagram: "Instagram", facebook: "Facebook", mastodon: "Mastodon", discord: "Discord" };
|
|
11
|
+
// Simplified brand glyphs on a 24×24 grid (filled), lucide has no brand icons.
|
|
12
|
+
const SOCIAL_PATHS = {
|
|
13
|
+
x: "M17.75 3h3.07l-6.7 7.66L22 21h-6.17l-4.83-6.32L5.47 21H2.4l7.17-8.2L2 3h6.33l4.37 5.78L17.75 3Zm-1.08 16.2h1.7L7.4 4.73H5.58l11.09 14.47Z",
|
|
14
|
+
github: "M12 .3a12 12 0 0 0-3.8 23.38c.6.11.82-.26.82-.58v-2.03c-3.34.73-4.04-1.61-4.04-1.61-.55-1.39-1.33-1.76-1.33-1.76-1.09-.74.08-.73.08-.73 1.2.09 1.84 1.24 1.84 1.24 1.07 1.83 2.8 1.3 3.49 1 .11-.78.42-1.3.76-1.6-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18.77.84 1.23 1.91 1.23 3.22 0 4.61-2.8 5.63-5.48 5.92.43.37.81 1.1.81 2.22v3.29c0 .32.21.7.82.58A12 12 0 0 0 12 .3",
|
|
15
|
+
linkedin: "M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.35V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28ZM5.34 7.43a2.06 2.06 0 1 1 0-4.12 2.06 2.06 0 0 1 0 4.12ZM7.12 20.45H3.56V9h3.56v11.45ZM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.73V1.73C24 .77 23.2 0 22.22 0Z",
|
|
16
|
+
youtube: "M23.5 6.19a3.02 3.02 0 0 0-2.12-2.14C19.5 3.55 12 3.55 12 3.55s-7.5 0-9.38.5A3.02 3.02 0 0 0 .5 6.19C0 8.07 0 12 0 12s0 3.93.5 5.81a3.02 3.02 0 0 0 2.12 2.14c1.88.5 9.38.5 9.38.5s7.5 0 9.38-.5a3.02 3.02 0 0 0 2.12-2.14C24 15.93 24 12 24 12s0-3.93-.5-5.81ZM9.55 15.57V8.43L15.82 12l-6.27 3.57Z",
|
|
17
|
+
instagram: "M12 2.16c3.2 0 3.58.01 4.85.07 3.25.15 4.77 1.69 4.92 4.92.06 1.27.07 1.65.07 4.85s-.01 3.58-.07 4.85c-.15 3.23-1.66 4.77-4.92 4.92-1.27.06-1.65.07-4.85.07s-3.58-.01-4.85-.07c-3.26-.15-4.77-1.7-4.92-4.92C2.17 15.58 2.16 15.2 2.16 12s.01-3.58.07-4.85C2.38 3.92 3.9 2.38 7.15 2.23 8.42 2.17 8.8 2.16 12 2.16ZM12 0C8.74 0 8.33.01 7.05.07 2.7.27.27 2.69.07 7.05.01 8.33 0 8.74 0 12s.01 3.67.07 4.95c.2 4.36 2.62 6.78 6.98 6.98 1.28.06 1.69.07 4.95.07s3.67-.01 4.95-.07c4.35-.2 6.78-2.62 6.98-6.98.06-1.28.07-1.69.07-4.95s-.01-3.67-.07-4.95c-.2-4.35-2.62-6.78-6.98-6.98C15.67.01 15.26 0 12 0Zm0 5.84a6.16 6.16 0 1 0 0 12.32 6.16 6.16 0 0 0 0-12.32ZM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8Zm6.4-11.85a1.44 1.44 0 1 0 0 2.88 1.44 1.44 0 0 0 0-2.88Z",
|
|
18
|
+
facebook: "M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.09 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.02 1.79-4.69 4.53-4.69 1.31 0 2.69.23 2.69.23v2.97h-1.51c-1.49 0-1.96.93-1.96 1.89v2.26h3.33l-.53 3.49h-2.8V24C19.61 23.09 24 18.1 24 12.07Z",
|
|
19
|
+
mastodon: "M21.33 13.6c-.3 1.52-2.64 3.18-5.33 3.5-1.4.17-2.78.32-4.25.25-2.4-.1-4.3-.57-4.3-.57 0 .23.02.46.05.67.31 2.37 2.35 2.5 4.28 2.57 1.95.07 3.68-.48 3.68-.48l.08 1.76s-1.36.73-3.79.87c-1.34.07-3-.04-4.94-.55C2.6 20.5 1.88 16.03 1.77 11.5c-.03-1.35-.01-2.62-.01-3.68 0-4.64 3.04-6 3.04-6C6.33 1.11 8.97.81 11.7.79h.07c2.74.02 5.38.32 6.91 1.03 0 0 3.04 1.36 3.04 6 0 0 .04 3.42-.39 5.79Zm-3.17-5.44c0-1.15-.3-2.06-.88-2.73-.6-.67-1.39-1.02-2.37-1.02-1.13 0-1.99.44-2.55 1.31l-.55.92-.55-.92c-.57-.87-1.42-1.31-2.55-1.31-.98 0-1.77.35-2.37 1.02-.58.67-.88 1.58-.88 2.73v5.6h2.22V8.32c0-1.15.48-1.73 1.45-1.73 1.07 0 1.6.69 1.6 2.05v2.97h2.2V8.64c0-1.36.54-2.05 1.61-2.05.97 0 1.45.58 1.45 1.73v5.44h2.22V8.16Z",
|
|
20
|
+
discord: "M20.32 4.37A19.8 19.8 0 0 0 15.4 2.84l-.62 1.27a18.3 18.3 0 0 0-5.56 0L8.6 2.84a19.7 19.7 0 0 0-4.93 1.53C.53 9.05-.32 13.6.1 18.1a19.9 19.9 0 0 0 6.04 3.05l1.3-2.1a12.9 12.9 0 0 1-2.05-.98l.5-.38a14.2 14.2 0 0 0 12.2 0l.5.38c-.65.38-1.34.71-2.05.98l1.3 2.1a19.8 19.8 0 0 0 6.04-3.05c.5-5.2-.84-9.72-3.56-13.73ZM8.02 15.33c-1.18 0-2.16-1.08-2.16-2.42s.96-2.42 2.16-2.42c1.21 0 2.18 1.09 2.16 2.42 0 1.34-.96 2.42-2.16 2.42Zm7.97 0c-1.18 0-2.16-1.08-2.16-2.42s.96-2.42 2.16-2.42c1.21 0 2.18 1.09 2.16 2.42 0 1.34-.95 2.42-2.16 2.42Z",
|
|
21
|
+
};
|
|
22
|
+
export function SocialIcon({ network, className = "size-[1.125rem]" }) {
|
|
23
|
+
const d = SOCIAL_PATHS[network];
|
|
24
|
+
if (!d)
|
|
25
|
+
return null;
|
|
26
|
+
return (_jsx("svg", { viewBox: "0 0 24 24", className: className, fill: "currentColor", "aria-hidden": true, focusable: "false", children: _jsx("path", { d: d }) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/site/icons.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,iHAAiH;AAEjH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,EAAyC;IAC5F,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;IACrF,OAAO,KAAC,IAAI,IAAC,SAAS,EAAE,SAAS,wBAAgB,CAAC;AACpD,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,MAAM,YAAY,GAA2B,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAEnN,+EAA+E;AAC/E,MAAM,YAAY,GAA2B;IAC3C,CAAC,EAAE,2IAA2I;IAC9I,MAAM,EACJ,6eAA6e;IAC/e,QAAQ,EACN,kXAAkX;IACpX,OAAO,EACL,sSAAsS;IACxS,SAAS,EACP,iuBAAiuB;IACnuB,QAAQ,EACN,oPAAoP;IACtP,QAAQ,EACN,osBAAosB;IACtsB,OAAO,EACL,qhBAAqhB;CACxhB,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG,iBAAiB,EAA2C;IAC5G,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,CACL,cAAK,OAAO,EAAC,WAAW,EAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,cAAc,uBAAa,SAAS,EAAC,OAAO,YAC9F,eAAM,CAAC,EAAE,CAAC,GAAI,GACV,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
export * from "./markdown.js";
|
|
3
|
+
export * from "./format.js";
|
|
4
|
+
export * from "./icons.js";
|
|
5
|
+
export * from "./sections.js";
|
|
6
|
+
export * from "./page.js";
|
|
7
|
+
export * from "./header.js";
|
|
8
|
+
export * from "./forms.js";
|
|
9
|
+
export * from "./server.js";
|
|
10
|
+
export * from "./proxy.js";
|
|
11
|
+
export * from "./editor/index.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// The public website (`site` in forge.config.ts): sections, pages, posts, safe markdown and the server helpers.
|
|
2
|
+
export * from "./types.js";
|
|
3
|
+
export * from "./markdown.js";
|
|
4
|
+
export * from "./format.js";
|
|
5
|
+
export * from "./icons.js";
|
|
6
|
+
export * from "./sections.js";
|
|
7
|
+
export * from "./page.js";
|
|
8
|
+
export * from "./header.js";
|
|
9
|
+
export * from "./forms.js";
|
|
10
|
+
export * from "./server.js";
|
|
11
|
+
export * from "./proxy.js";
|
|
12
|
+
export * from "./editor/index.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/site/index.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAChH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Markdown as React elements inside a `.forge-site-prose` block (typography from the theme tokens). */
|
|
2
|
+
export declare function Markdown({ source, className, minHeading }: {
|
|
3
|
+
source: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
minHeading?: number;
|
|
6
|
+
}): import("react").JSX.Element | null;
|
|
7
|
+
export declare const escapeHtml: (s: string) => string;
|
|
8
|
+
/** Markdown as an escaped HTML string (RSS item bodies). `baseUrl` makes relative links and images absolute. */
|
|
9
|
+
export declare function markdownToHtml(source: string, options?: {
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
minHeading?: number;
|
|
12
|
+
}): string;
|
|
13
|
+
/** Plain text of markdown (excerpts, meta descriptions, reading time). */
|
|
14
|
+
export declare function markdownToText(source: string): string;
|