@redneckz/wildless-cms-uni-blocks 0.2.29 → 0.2.33
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/Blocks.d.ts +8 -0
- package/dist/Blocks.js +17 -0
- package/dist/Blocks.js.map +1 -0
- package/dist/ContentPage.d.ts +19 -0
- package/dist/ContentPage.js +30 -0
- package/dist/ContentPage.js.map +1 -0
- package/dist/ContentPageContext.d.ts +20 -0
- package/dist/ContentPageContext.js +2 -0
- package/dist/ContentPageContext.js.map +1 -0
- package/dist/ContentPageHead.d.ts +6 -0
- package/dist/ContentPageHead.js +11 -0
- package/dist/ContentPageHead.js.map +1 -0
- package/dist/Header/Header.d.ts +7 -0
- package/dist/Header/Header.js +25 -0
- package/dist/Header/Header.js.map +1 -0
- package/dist/Header/HeaderContent.d.ts +9 -0
- package/dist/Header/HeaderContent.js +2 -0
- package/dist/Header/HeaderContent.js.map +1 -0
- package/dist/Header/HeaderSecondaryMenu.d.ts +6 -0
- package/dist/Header/HeaderSecondaryMenu.js +11 -0
- package/dist/Header/HeaderSecondaryMenu.js.map +1 -0
- package/dist/Header/HeaderSecondaryMenuButton.d.ts +5 -0
- package/dist/Header/HeaderSecondaryMenuButton.js +6 -0
- package/dist/Header/HeaderSecondaryMenuButton.js.map +1 -0
- package/dist/Header/index.d.ts +3 -0
- package/dist/Header/index.js +5 -0
- package/dist/Header/index.js.map +1 -0
- package/dist/Header/isSubItemActive.d.ts +3 -0
- package/dist/Header/isSubItemActive.js +10 -0
- package/dist/Header/isSubItemActive.js.map +1 -0
- package/dist/Header/isTopItemActive.d.ts +3 -0
- package/dist/Header/isTopItemActive.js +14 -0
- package/dist/Header/isTopItemActive.js.map +1 -0
- package/dist/Header/mergeTopItems.d.ts +2 -0
- package/dist/Header/mergeTopItems.js +10 -0
- package/dist/Header/mergeTopItems.js.map +1 -0
- package/dist/Icons.d.ts +14 -0
- package/dist/Icons.js +24 -0
- package/dist/Icons.js.map +1 -0
- package/dist/Img.d.ts +7 -0
- package/dist/Img.js +12 -0
- package/dist/Img.js.map +1 -0
- package/dist/LikeControl.d.ts +6 -0
- package/dist/LikeControl.js +10 -0
- package/dist/LikeControl.js.map +1 -0
- package/dist/Placeholder.d.ts +6 -0
- package/dist/Placeholder.js +8 -0
- package/dist/Placeholder.js.map +1 -0
- package/dist/ProductTile.d.ts +25 -0
- package/dist/ProductTile.js +29 -0
- package/dist/ProductTile.js.map +1 -0
- package/dist/RichText.d.ts +8 -0
- package/dist/RichText.js +10 -0
- package/dist/RichText.js.map +1 -0
- package/dist/Text.d.ts +8 -0
- package/dist/Text.js +8 -0
- package/dist/Text.js.map +1 -0
- package/dist/TextWithImage.d.ts +9 -0
- package/dist/TextWithImage.js +9 -0
- package/dist/TextWithImage.js.map +1 -0
- package/dist/api/LikeAPI.d.ts +9 -0
- package/dist/api/LikeAPI.js +119 -0
- package/dist/api/LikeAPI.js.map +1 -0
- package/dist/content-page-repository/ContentPageRepository.d.ts +6 -0
- package/dist/content-page-repository/ContentPageRepository.js +35 -0
- package/dist/content-page-repository/ContentPageRepository.js.map +1 -0
- package/dist/content-page-repository/TransformationOptions.d.ts +4 -0
- package/dist/content-page-repository/TransformationOptions.js +2 -0
- package/dist/content-page-repository/TransformationOptions.js.map +1 -0
- package/dist/content-page-repository/index.d.ts +1 -0
- package/dist/content-page-repository/index.js +5 -0
- package/dist/content-page-repository/index.js.map +1 -0
- package/dist/content-page-repository/mapJSON.d.ts +1 -0
- package/dist/content-page-repository/mapJSON.js +24 -0
- package/dist/content-page-repository/mapJSON.js.map +1 -0
- package/dist/content-page-repository/transformContentPage.d.ts +3 -0
- package/dist/content-page-repository/transformContentPage.js +27 -0
- package/dist/content-page-repository/transformContentPage.js.map +1 -0
- package/dist/content-page-repository/transformMarkdown.d.ts +1 -0
- package/dist/content-page-repository/transformMarkdown.js +16 -0
- package/dist/content-page-repository/transformMarkdown.js.map +1 -0
- package/dist/content-page-repository/transformPicture.d.ts +3 -0
- package/dist/content-page-repository/transformPicture.js +45 -0
- package/dist/content-page-repository/transformPicture.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +45 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui-kit/BlockItem.d.ts +10 -0
- package/dist/ui-kit/BlockItem.js +16 -0
- package/dist/ui-kit/BlockItem.js.map +1 -0
- package/dist/ui-kit/Breadcrumb.d.ts +6 -0
- package/dist/ui-kit/Breadcrumb.js +13 -0
- package/dist/ui-kit/Breadcrumb.js.map +1 -0
- package/dist/ui-kit/Button.d.ts +10 -0
- package/dist/ui-kit/Button.js +20 -0
- package/dist/ui-kit/Button.js.map +1 -0
- package/dist/ui-kit/HeaderItem.d.ts +3 -0
- package/dist/ui-kit/HeaderItem.js +9 -0
- package/dist/ui-kit/HeaderItem.js.map +1 -0
- package/dist/ui-kit/LikeButton.d.ts +5 -0
- package/dist/ui-kit/LikeButton.js +15 -0
- package/dist/ui-kit/LikeButton.js.map +1 -0
- package/dist/ui-kit/Link.d.ts +5 -0
- package/dist/ui-kit/Link.js +2 -0
- package/dist/ui-kit/Link.js.map +1 -0
- package/dist/ui-kit/Logo.d.ts +5 -0
- package/dist/ui-kit/Logo.js +16 -0
- package/dist/ui-kit/Logo.js.map +1 -0
- package/dist/ui-kit/SVG.d.ts +18 -0
- package/dist/ui-kit/SVG.js +8 -0
- package/dist/ui-kit/SVG.js.map +1 -0
- package/dist/ui-kit/TopItem.d.ts +10 -0
- package/dist/ui-kit/TopItem.js +10 -0
- package/dist/ui-kit/TopItem.js.map +1 -0
- package/dist/useLink.d.ts +11 -0
- package/dist/useLink.js +21 -0
- package/dist/useLink.js.map +1 -0
- package/dist/utils/url.d.ts +4 -0
- package/dist/utils/url.js +26 -0
- package/dist/utils/url.js.map +1 -0
- package/lib/Blocks.d.ts +8 -0
- package/lib/Blocks.js +15 -0
- package/lib/Blocks.js.map +1 -0
- package/lib/ContentPage.d.ts +19 -0
- package/lib/ContentPage.js +28 -0
- package/lib/ContentPage.js.map +1 -0
- package/lib/ContentPageContext.d.ts +20 -0
- package/lib/ContentPageContext.js +2 -0
- package/lib/ContentPageContext.js.map +1 -0
- package/lib/ContentPageHead.d.ts +6 -0
- package/lib/ContentPageHead.js +9 -0
- package/lib/ContentPageHead.js.map +1 -0
- package/lib/Header/Header.d.ts +7 -0
- package/lib/Header/Header.js +23 -0
- package/lib/Header/Header.js.map +1 -0
- package/lib/Header/HeaderContent.d.ts +9 -0
- package/lib/Header/HeaderContent.js +2 -0
- package/lib/Header/HeaderContent.js.map +1 -0
- package/lib/Header/HeaderSecondaryMenu.d.ts +6 -0
- package/lib/Header/HeaderSecondaryMenu.js +9 -0
- package/lib/Header/HeaderSecondaryMenu.js.map +1 -0
- package/lib/Header/HeaderSecondaryMenuButton.d.ts +5 -0
- package/lib/Header/HeaderSecondaryMenuButton.js +4 -0
- package/lib/Header/HeaderSecondaryMenuButton.js.map +1 -0
- package/lib/Header/index.d.ts +3 -0
- package/lib/Header/index.js +2 -0
- package/lib/Header/index.js.map +1 -0
- package/lib/Header/isSubItemActive.d.ts +3 -0
- package/lib/Header/isSubItemActive.js +7 -0
- package/lib/Header/isSubItemActive.js.map +1 -0
- package/lib/Header/isTopItemActive.d.ts +3 -0
- package/lib/Header/isTopItemActive.js +11 -0
- package/lib/Header/isTopItemActive.js.map +1 -0
- package/lib/Header/mergeTopItems.d.ts +2 -0
- package/lib/Header/mergeTopItems.js +7 -0
- package/lib/Header/mergeTopItems.js.map +1 -0
- package/lib/Icons.d.ts +14 -0
- package/lib/Icons.js +16 -0
- package/lib/Icons.js.map +1 -0
- package/lib/Img.d.ts +7 -0
- package/lib/Img.js +9 -0
- package/lib/Img.js.map +1 -0
- package/lib/LikeControl.d.ts +6 -0
- package/lib/LikeControl.js +8 -0
- package/lib/LikeControl.js.map +1 -0
- package/lib/Placeholder.d.ts +6 -0
- package/lib/Placeholder.js +6 -0
- package/lib/Placeholder.js.map +1 -0
- package/lib/ProductTile.d.ts +25 -0
- package/lib/ProductTile.js +27 -0
- package/lib/ProductTile.js.map +1 -0
- package/lib/RichText.d.ts +8 -0
- package/lib/RichText.js +8 -0
- package/lib/RichText.js.map +1 -0
- package/lib/Text.d.ts +8 -0
- package/lib/Text.js +6 -0
- package/lib/Text.js.map +1 -0
- package/lib/TextWithImage.d.ts +9 -0
- package/lib/TextWithImage.js +7 -0
- package/lib/TextWithImage.js.map +1 -0
- package/lib/api/LikeAPI.d.ts +9 -0
- package/lib/api/LikeAPI.js +116 -0
- package/lib/api/LikeAPI.js.map +1 -0
- package/lib/common.css +1 -0
- package/lib/content-page-repository/ContentPageRepository.d.ts +6 -0
- package/lib/content-page-repository/ContentPageRepository.js +29 -0
- package/lib/content-page-repository/ContentPageRepository.js.map +1 -0
- package/lib/content-page-repository/TransformationOptions.d.ts +4 -0
- package/lib/content-page-repository/TransformationOptions.js +2 -0
- package/lib/content-page-repository/TransformationOptions.js.map +1 -0
- package/lib/content-page-repository/index.d.ts +1 -0
- package/lib/content-page-repository/index.js +2 -0
- package/lib/content-page-repository/index.js.map +1 -0
- package/lib/content-page-repository/mapJSON.d.ts +1 -0
- package/lib/content-page-repository/mapJSON.js +21 -0
- package/lib/content-page-repository/mapJSON.js.map +1 -0
- package/lib/content-page-repository/transformContentPage.d.ts +3 -0
- package/lib/content-page-repository/transformContentPage.js +21 -0
- package/lib/content-page-repository/transformContentPage.js.map +1 -0
- package/lib/content-page-repository/transformMarkdown.d.ts +1 -0
- package/lib/content-page-repository/transformMarkdown.js +10 -0
- package/lib/content-page-repository/transformMarkdown.js.map +1 -0
- package/lib/content-page-repository/transformPicture.d.ts +3 -0
- package/lib/content-page-repository/transformPicture.js +39 -0
- package/lib/content-page-repository/transformPicture.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +5 -0
- package/lib/index.js.map +1 -0
- package/lib/types.d.ts +45 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/ui-kit/BlockItem.d.ts +10 -0
- package/lib/ui-kit/BlockItem.js +14 -0
- package/lib/ui-kit/BlockItem.js.map +1 -0
- package/lib/ui-kit/Breadcrumb.d.ts +6 -0
- package/lib/ui-kit/Breadcrumb.js +11 -0
- package/lib/ui-kit/Breadcrumb.js.map +1 -0
- package/lib/ui-kit/Button.d.ts +10 -0
- package/lib/ui-kit/Button.js +18 -0
- package/lib/ui-kit/Button.js.map +1 -0
- package/lib/ui-kit/HeaderItem.d.ts +3 -0
- package/lib/ui-kit/HeaderItem.js +7 -0
- package/lib/ui-kit/HeaderItem.js.map +1 -0
- package/lib/ui-kit/LikeButton.d.ts +5 -0
- package/lib/ui-kit/LikeButton.js +13 -0
- package/lib/ui-kit/LikeButton.js.map +1 -0
- package/lib/ui-kit/Link.d.ts +5 -0
- package/lib/ui-kit/Link.js +2 -0
- package/lib/ui-kit/Link.js.map +1 -0
- package/lib/ui-kit/Logo.d.ts +5 -0
- package/lib/ui-kit/Logo.js +14 -0
- package/lib/ui-kit/Logo.js.map +1 -0
- package/lib/ui-kit/SVG.d.ts +18 -0
- package/lib/ui-kit/SVG.js +6 -0
- package/lib/ui-kit/SVG.js.map +1 -0
- package/lib/ui-kit/TopItem.d.ts +10 -0
- package/lib/ui-kit/TopItem.js +8 -0
- package/lib/ui-kit/TopItem.js.map +1 -0
- package/lib/useLink.d.ts +11 -0
- package/lib/useLink.js +18 -0
- package/lib/useLink.js.map +1 -0
- package/lib/utils/url.d.ts +4 -0
- package/lib/utils/url.js +20 -0
- package/lib/utils/url.js.map +1 -0
- package/package.json +10 -3
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
export const Placeholder = JSX(({ className, children }) => {
|
|
4
|
+
return _jsx("div", { className: className || '', children: children });
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=Placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Placeholder.js","sourceRoot":"","sources":["../src/Placeholder.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAQxC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAmB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3E,OAAO,cAAK,SAAS,EAAE,SAAS,IAAI,EAAE,YAAG,QAAQ,GAAO,CAAC;AAC3D,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ContentPageContext } from './ContentPageContext';
|
|
2
|
+
import { Icons } from './Icons';
|
|
3
|
+
import { BlockVersion, Picture } from './types';
|
|
4
|
+
import type { ButtonProps } from './ui-kit/Button';
|
|
5
|
+
import { BreadcrumbProps } from './ui-kit/Breadcrumb';
|
|
6
|
+
export interface Benefit {
|
|
7
|
+
label: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
icon?: keyof typeof Icons;
|
|
10
|
+
}
|
|
11
|
+
export interface ProductTileContent {
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
breadcrumbs?: BreadcrumbProps[];
|
|
15
|
+
image?: Picture;
|
|
16
|
+
benefits?: Benefit[];
|
|
17
|
+
items?: string[];
|
|
18
|
+
buttons?: ButtonProps[];
|
|
19
|
+
}
|
|
20
|
+
export interface ProductTileProps extends ProductTileContent {
|
|
21
|
+
className?: string;
|
|
22
|
+
version?: BlockVersion;
|
|
23
|
+
context: ContentPageContext;
|
|
24
|
+
}
|
|
25
|
+
export declare const ProductTile: (props: import("@redneckz/uni-jsx").PropsWithChildren<ProductTileProps, any>, context?: any) => any;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
import { Icons } from './Icons.js';
|
|
4
|
+
import { Img } from './Img.js';
|
|
5
|
+
import { BlockItem } from './ui-kit/BlockItem.js';
|
|
6
|
+
import { Button } from './ui-kit/Button.js';
|
|
7
|
+
import { Breadcrumb } from './ui-kit/Breadcrumb.js';
|
|
8
|
+
import { useLink } from './useLink.js';
|
|
9
|
+
const productBlockStyleMap = {
|
|
10
|
+
primary: 'bg-white text-primary-text',
|
|
11
|
+
secondary: 'bg-brand text-white',
|
|
12
|
+
};
|
|
13
|
+
export const ProductTile = JSX(({ className, context, title, description, breadcrumbs, benefits, buttons, image, items, version = 'primary', }) => {
|
|
14
|
+
const router = context.useRouter();
|
|
15
|
+
const { handlerDecorator } = context;
|
|
16
|
+
return (_jsxs("section", { className: `font-sans p-9 rounded-[40px] flex justify-between items-stretch relative ${className || ''} ${productBlockStyleMap[version]}`, children: [_jsxs("div", { className: "flex flex-col", children: [breadcrumbs?.length ? (_jsx("div", { className: "text-xs mb-6", children: join(_jsx("span", { className: "text-secondary mx-2", children: "/" }))(breadcrumbs.map((breadcrumb, i) => (_jsx(Breadcrumb, { ...useLink({ router, handlerDecorator }, { className: 'text-secondary', ...breadcrumb }) }, String(i))))) })) : null, title && _jsx("h1", { className: "font-medium text-title m-0 whitespace-pre-wrap", children: title }), description && (_jsx("div", { className: "font-normal text-base max-w-[600px] mt-4", children: description })), benefits?.length ? (_jsx("div", { className: "flex gap-6 mt-7", children: benefits.map(renderBenefit) })) : null, items?.length ? (_jsx("section", { className: "space-y-2.5 mt-5", role: "list", children: items.map((_, i) => (_jsx(BlockItem, { text: _, version: version }, String(i)))) })) : null, buttons?.length ? (_jsx("div", { className: "flex mt-auto gap-4", children: buttons.map((button, index) => renderButton(useLink({ router, handlerDecorator }, button), index)) })) : null] }), image && _jsx(Img, { image: image, className: "absolute bottom-9 right-9" })] }));
|
|
17
|
+
});
|
|
18
|
+
function renderBenefit(benefit, i) {
|
|
19
|
+
return (_jsxs("div", { className: "flex gap-4 items-center", children: [benefit.icon && (_jsx("div", { className: "h-11 w-11 min-w-11 min-h-11 bg-main rounded-full p-[10px] box-border", children: Icons[benefit.icon]() })), _jsxs("div", { className: "flex gap-1 flex-col h-full", children: [_jsx("h4", { className: "font-medium text-xl m-0", children: benefit.label }), benefit.description && (_jsx("div", { className: "font-normal text-sm text-secondary", children: benefit.description }))] })] }, String(i)));
|
|
20
|
+
}
|
|
21
|
+
function renderButton(button, i) {
|
|
22
|
+
return button?.text ? (_jsx(Button, { ...button, className: "mt-8", version: button.version }, String(i))) : null;
|
|
23
|
+
}
|
|
24
|
+
function join(sep) {
|
|
25
|
+
return (list) => list.reduce((acc, el) => (acc.length ? acc.concat(sep, el) : [el]), []);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ProductTile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductTile.js","sourceRoot":"","sources":["../src/ProductTile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAmB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,MAAM,oBAAoB,GAAiC;IACzD,OAAO,EAAE,4BAA4B;IACrC,SAAS,EAAE,qBAAqB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAC5B,CAAC,EACC,SAAS,EACT,OAAO,EACP,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,GAAG,SAAS,GACpB,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAErC,OAAO,CACL,mBACE,SAAS,EAAE,4EACT,SAAS,IAAI,EACf,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,aAEnC,eAAK,SAAS,EAAC,eAAe,aAC3B,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CACrB,cAAK,SAAS,EAAC,cAAc,YAC1B,IAAI,CAAC,eAAM,SAAS,EAAC,qBAAqB,kBAAS,CAAC,CACnD,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CACjC,KAAC,UAAU,OAEL,OAAO,CACT,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAC5B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAC/C,IAJI,MAAM,CAAC,CAAC,CAAC,CAKd,CACH,CAAC,CACH,GACG,CACP,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,IAAI,aAAI,SAAS,EAAC,gDAAgD,YAAE,KAAK,GAAM,EACpF,WAAW,IAAI,CACd,cAAK,SAAS,EAAC,0CAA0C,YAAE,WAAW,GAAO,CAC9E,EACA,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAClB,cAAK,SAAS,EAAC,iBAAiB,YAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,GAAO,CACrE,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CACf,kBAAS,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,MAAM,YAC9C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,IAAiB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,IAApC,MAAM,CAAC,CAAC,CAAC,CAA+B,CACzD,CAAC,GACM,CACX,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CACjB,cAAK,SAAS,EAAC,oBAAoB,YAChC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAC7B,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CACnE,GACG,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,KAAK,IAAI,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,2BAA2B,GAAG,IAC7D,CACX,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,SAAS,aAAa,CAAC,OAAgB,EAAE,CAAS;IAChD,OAAO,CACL,eAAqB,SAAS,EAAC,yBAAyB,aACrD,OAAO,CAAC,IAAI,IAAI,CACf,cAAK,SAAS,EAAC,sEAAsE,YAClF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAClB,CACP,EACD,eAAK,SAAS,EAAC,4BAA4B,aACzC,aAAI,SAAS,EAAC,yBAAyB,YAAE,OAAO,CAAC,KAAK,GAAM,EAC3D,OAAO,CAAC,WAAW,IAAI,CACtB,cAAK,SAAS,EAAC,oCAAoC,YAAE,OAAO,CAAC,WAAW,GAAO,CAChF,IACG,KAXE,MAAM,CAAC,CAAC,CAAC,CAYb,CACP,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB,EAAE,CAAS;IAClD,OAAO,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CACpB,KAAC,MAAM,OAAqB,MAAM,EAAE,SAAS,EAAC,MAAM,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,IAA/D,MAAM,CAAC,CAAC,CAAC,CAA0D,CACjF,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,IAAI,CAAI,GAAM;IACrB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAS,CAAC,CAAC;AAClG,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface RichTextContent {
|
|
2
|
+
__html?: string;
|
|
3
|
+
__md?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface RichTextProps extends RichTextContent {
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const RichText: (props: import("@redneckz/uni-jsx").PropsWithChildren<RichTextProps, any>, context?: any) => any;
|
package/lib/RichText.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
export const RichText = JSX(({ className, __html, __md }) => {
|
|
4
|
+
const html = __html || __md;
|
|
5
|
+
const props = Object.assign({ className: className || '' }, html ? { dangerouslySetInnerHTML: { __html: html } } : {});
|
|
6
|
+
return _jsx("div", { ...props });
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=RichText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RichText.js","sourceRoot":"","sources":["../src/RichText.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAWxC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAgB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CACzB,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,EAAE,EAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAC1D,CAAC;IACF,OAAO,iBAAS,KAAK,GAAI,CAAC;AAC5B,CAAC,CAAC,CAAC"}
|
package/lib/Text.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface TextContent {
|
|
2
|
+
primary?: string;
|
|
3
|
+
secondary?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface TextProps extends TextContent {
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const Text: (props: import("@redneckz/uni-jsx").PropsWithChildren<TextProps, any>, context?: any) => any;
|
package/lib/Text.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
export const Text = JSX(({ className, primary, secondary, children }) => {
|
|
4
|
+
return (_jsxs("div", { className: className || '', children: [primary && _jsx("p", { className: "font-bold text-slate-700 leading-snug", children: primary }), secondary && _jsx("p", { className: "mt-2 text-sm text-slate-600", children: secondary }), children] }));
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=Text.js.map
|
package/lib/Text.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAWxC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjF,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,IAAI,EAAE,aAC5B,OAAO,IAAI,YAAG,SAAS,EAAC,uCAAuC,YAAE,OAAO,GAAK,EAC7E,SAAS,IAAI,YAAG,SAAS,EAAC,6BAA6B,YAAE,SAAS,GAAK,EACvE,QAAQ,IACL,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Picture } from './types';
|
|
2
|
+
export interface TextWithImageContent {
|
|
3
|
+
primary?: string;
|
|
4
|
+
image?: Picture;
|
|
5
|
+
}
|
|
6
|
+
export interface TextWithImageProps extends TextWithImageContent {
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const TextWithImage: (props: import("@redneckz/uni-jsx").PropsWithChildren<TextWithImageProps, any>, context?: any) => any;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
import { Img } from './Img.js';
|
|
4
|
+
export const TextWithImage = JSX(({ className, primary, image }) => {
|
|
5
|
+
return (_jsxs("div", { className: className || '', children: [primary && _jsx("p", { className: "font-bold text-slate-700 leading-snug", children: primary }), image && _jsx(Img, { image: image })] }));
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=TextWithImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextWithImage.js","sourceRoot":"","sources":["../src/TextWithImage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAY5B,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAqB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IACrF,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,IAAI,EAAE,aAC5B,OAAO,IAAI,YAAG,SAAS,EAAC,uCAAuC,YAAE,OAAO,GAAK,EAC7E,KAAK,IAAI,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,GAAI,IAC3B,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface LikeData {
|
|
2
|
+
node_id: string;
|
|
3
|
+
value: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function LikeAPI(projectId: string, baseURL: string): {
|
|
6
|
+
getLikeCount: (...nodeIds: string[]) => Promise<LikeData[]>;
|
|
7
|
+
like: (nodeId: string) => Promise<number>;
|
|
8
|
+
dislike: (nodeId: string) => Promise<number>;
|
|
9
|
+
};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
const AUTH_PREFIX = 'guest';
|
|
2
|
+
const STORAGE_KEY = 'likesToken';
|
|
3
|
+
export function LikeAPI(projectId, baseURL) {
|
|
4
|
+
async function getLikeCount(...nodeIds) {
|
|
5
|
+
if (!nodeIds.length) {
|
|
6
|
+
return [];
|
|
7
|
+
}
|
|
8
|
+
const { token: Authorization } = await auth();
|
|
9
|
+
try {
|
|
10
|
+
const response = await fetch(`/assist/v1/public/projects/${projectId}/nodes/likes`, {
|
|
11
|
+
method: 'POST',
|
|
12
|
+
mode: 'cors',
|
|
13
|
+
headers: { 'Content-Type': 'application/json', Authorization },
|
|
14
|
+
body: JSON.stringify({
|
|
15
|
+
node_ids: nodeIds,
|
|
16
|
+
}),
|
|
17
|
+
});
|
|
18
|
+
const { likes } = await response.json();
|
|
19
|
+
return likes || [];
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.error(e);
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function like(nodeId) {
|
|
27
|
+
if (!nodeId) {
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
const { token: Authorization, name } = await auth();
|
|
31
|
+
try {
|
|
32
|
+
const response = await fetch(`${baseURL}/assist/v1/public/projects/${projectId}/nodes/like`, {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
mode: 'cors',
|
|
35
|
+
headers: {
|
|
36
|
+
'Content-Type': 'application/json',
|
|
37
|
+
Authorization,
|
|
38
|
+
UserID: name,
|
|
39
|
+
},
|
|
40
|
+
body: JSON.stringify({
|
|
41
|
+
node_id: nodeId,
|
|
42
|
+
user_name: name,
|
|
43
|
+
}),
|
|
44
|
+
});
|
|
45
|
+
const { likes } = await response.json();
|
|
46
|
+
return likes || 0;
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
console.error(e);
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function dislike(nodeId) {
|
|
54
|
+
if (!nodeId) {
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
const { token: Authorization, name } = await auth();
|
|
58
|
+
try {
|
|
59
|
+
const response = await fetch(`${baseURL}/assist/v1/public/projects/${projectId}/nodes/unlike`, {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
mode: 'cors',
|
|
62
|
+
headers: {
|
|
63
|
+
'Content-Type': 'application/json',
|
|
64
|
+
Authorization,
|
|
65
|
+
UserID: name,
|
|
66
|
+
},
|
|
67
|
+
body: JSON.stringify({
|
|
68
|
+
node_id: nodeId,
|
|
69
|
+
user_name: name,
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
const { likes } = await response.json();
|
|
73
|
+
return likes || 0;
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
console.error(e);
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function auth() {
|
|
81
|
+
try {
|
|
82
|
+
const userData = JSON.parse(globalThis.localStorage.getItem(STORAGE_KEY) || '');
|
|
83
|
+
if (userData?.token) {
|
|
84
|
+
return userData;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
// do nothing
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const response = await fetch(`${baseURL}/assist/v1/public/auth`, {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
mode: 'cors',
|
|
94
|
+
headers: {
|
|
95
|
+
'Content-Type': 'application/json',
|
|
96
|
+
},
|
|
97
|
+
body: JSON.stringify({
|
|
98
|
+
prefix: AUTH_PREFIX,
|
|
99
|
+
}),
|
|
100
|
+
});
|
|
101
|
+
const { token, name } = await response.json();
|
|
102
|
+
globalThis.localStorage.setItem(STORAGE_KEY, JSON.stringify({ token, name }));
|
|
103
|
+
return { token, name };
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
console.error(e);
|
|
107
|
+
return {};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
getLikeCount,
|
|
112
|
+
like,
|
|
113
|
+
dislike,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=LikeAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LikeAPI.js","sourceRoot":"","sources":["../../src/api/LikeAPI.ts"],"names":[],"mappings":"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"}
|
package/lib/common.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[data-theme=pc]{--color-primary-main:#42ab44;--color-primary-hover:#248341;--color-primary-active:#245f34;--color-secondary-hover:#c5e2c6;--color-secondary-active:#d8f2d9}[data-theme=bc]{--color-primary-main:#83b83e;--color-primary-hover:#5c921d;--color-primary-active:#3c5e10;--color-secondary-hover:#e8f4d9;--color-secondary-active:#d8e3ca}[data-theme=eo]{--color-primary-main:#ddb63d;--color-primary-hover:#bb9727;--color-primary-active:#7e630c;--color-secondary-hover:#f1ecdd;--color-secondary-active:#e5dec7}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.top-4{top:1rem}.right-4{right:1rem}.bottom-0{bottom:0}.right-0{right:0}.bottom-9{bottom:2.25rem}.right-9{right:2.25rem}.left-0{left:0}.-bottom-2{bottom:-.5rem}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-8{grid-column:span 8/span 8}.col-span-9{grid-column:span 9/span 9}.col-span-10{grid-column:span 10/span 10}.col-span-11{grid-column:span 11/span 11}.col-span-12{grid-column:span 12/span 12}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-4{grid-column-start:4}.col-start-5{grid-column-start:5}.col-start-6{grid-column-start:6}.col-start-7{grid-column-start:7}.col-start-8{grid-column-start:8}.col-start-9{grid-column-start:9}.col-start-10{grid-column-start:10}.col-start-11{grid-column-start:11}.col-start-12{grid-column-start:12}.col-start-13{grid-column-start:13}.col-start-auto{grid-column-start:auto}.col-end-1{grid-column-end:1}.col-end-2{grid-column-end:2}.col-end-3{grid-column-end:3}.col-end-4{grid-column-end:4}.col-end-5{grid-column-end:5}.col-end-6{grid-column-end:6}.col-end-7{grid-column-end:7}.col-end-8{grid-column-end:8}.col-end-9{grid-column-end:9}.col-end-10{grid-column-end:10}.col-end-11{grid-column-end:11}.col-end-12{grid-column-end:12}.col-end-13{grid-column-end:13}.col-end-auto{grid-column-end:auto}.m-0{margin:0}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mb-6{margin-bottom:1.5rem}.mt-4{margin-top:1rem}.mt-7{margin-top:1.75rem}.mt-5{margin-top:1.25rem}.mt-auto{margin-top:auto}.mt-8{margin-top:2rem}.mt-2{margin-top:.5rem}.mr-8{margin-right:2rem}.ml-auto{margin-left:auto}.mr-5{margin-right:1.25rem}.mr-7{margin-right:1.75rem}.ml-2\.5{margin-left:.625rem}.ml-2{margin-left:.5rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-8{height:2rem}.h-\[308px\]{height:308px}.h-full{height:100%}.h-11{height:2.75rem}.h-\[1px\]{height:1px}.h-\[8px\]{height:8px}.h-\[2px\]{height:2px}.min-h-11{min-height:2.75rem}.w-full{width:100%}.w-8{width:2rem}.w-\[125px\]{width:125px}.w-11{width:2.75rem}.w-\[32px\]{width:32px}.w-\[24px\]{width:24px}.w-\[8px\]{width:8px}.w-\[36px\]{width:36px}.w-10{width:2.5rem}.min-w-11{min-width:2.75rem}.max-w-\[600px\]{max-width:600px}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.resize{resize:both}.grid-flow-col-dense{grid-auto-flow:column dense}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-5{gap:1.25rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.gap-1{gap:.25rem}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-\[40px\]{border-radius:40px}.rounded-3xl{border-radius:1.5rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-bl-3xl{border-bottom-left-radius:1.5rem}.rounded-br-3xl{border-bottom-right-radius:1.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-0{border-width:0}.border-solid{border-style:solid}.border-main{--tw-border-opacity:1;border-color:rgb(240 244 240/var(--tw-border-opacity))}.border-primary-main{border-color:var(--color-primary-main)}.border-transparent{border-color:transparent}.bg-main{--tw-bg-opacity:1;background-color:rgb(240 244 240/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-main-divider{--tw-bg-opacity:1;background-color:rgb(235 237 240/var(--tw-bg-opacity))}.bg-inherit{background-color:inherit}.bg-primary-main{background-color:var(--color-primary-main)}.bg-secondary-light{--tw-bg-opacity:1;background-color:rgb(245 247 249/var(--tw-bg-opacity))}.bg-secondary-dark{--tw-bg-opacity:1;background-color:rgb(226 228 229/var(--tw-bg-opacity))}.p-20{padding:5rem}.p-2{padding:.5rem}.p-9{padding:2.25rem}.p-\[10px\]{padding:10px}.p-0{padding:0}.px-20{padding-left:5rem;padding-right:5rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.pt-0{padding-top:0}.pt-5{padding-top:1.25rem}.pb-8{padding-bottom:2rem}.text-center{text-align:center}.font-sans{font-family:Ubuntu,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-xs{font-size:.75rem;line-height:1rem}.text-title{font-size:1.75rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-bold{font-weight:700}.leading-snug{line-height:1.375}.text-primary-text{--tw-text-opacity:1;color:rgb(28 28 28/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-main{--tw-text-opacity:1;color:rgb(240 244 240/var(--tw-text-opacity))}.text-primary-main{color:var(--color-primary-main)}.text-secondary-text{--tw-text-opacity:1;color:rgb(125 126 127/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.rotate-180{transform:rotate(180deg)}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:bg-secondary-hover:hover{background-color:var(--color-secondary-hover)}.hover\:text-primary-main:hover{color:var(--color-primary-main)}.hover\:text-secondary-hover:hover{color:var(--color-secondary-hover)}.active\:bg-primary-active:active{background-color:var(--color-primary-active)}.active\:bg-secondary-active:active{background-color:var(--color-secondary-active)}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ContentPageDef } from '../types';
|
|
2
|
+
import type { TransformationOptions } from './TransformationOptions';
|
|
3
|
+
export declare function ContentPageRepository({ contentDir, publicDir, }?: Partial<TransformationOptions>): {
|
|
4
|
+
getAllContentPages: () => Promise<ContentPageDef[]>;
|
|
5
|
+
getContentPageBySlug: (slug: string) => Promise<ContentPageDef | undefined>;
|
|
6
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import glob from 'glob';
|
|
2
|
+
import util from 'util';
|
|
3
|
+
import { transformContentPage } from './transformContentPage.js';
|
|
4
|
+
const find = util.promisify(glob);
|
|
5
|
+
export function ContentPageRepository({ contentDir = 'content', publicDir = 'public', } = {}) {
|
|
6
|
+
async function getAllContentPages() {
|
|
7
|
+
const pagePaths = await find(`${contentDir}/**/*.page.json`);
|
|
8
|
+
return await Promise.all(pagePaths.map(readPage));
|
|
9
|
+
}
|
|
10
|
+
async function getContentPageBySlug(slug) {
|
|
11
|
+
const pages = await getAllContentPages();
|
|
12
|
+
return pages.find((content) => content.slug === slug);
|
|
13
|
+
}
|
|
14
|
+
const cache = {};
|
|
15
|
+
async function readPage(filePath) {
|
|
16
|
+
if (!(filePath in cache)) {
|
|
17
|
+
cache[filePath] = await transformContentPage(filePath, {
|
|
18
|
+
contentDir,
|
|
19
|
+
publicDir,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return cache[filePath];
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
getAllContentPages,
|
|
26
|
+
getContentPageBySlug,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ContentPageRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentPageRepository.js","sourceRoot":"","sources":["../../src/content-page-repository/ContentPageRepository.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,GAAG,SAAS,EACtB,SAAS,GAAG,QAAQ,MACc,EAAE;IACpC,KAAK,UAAU,kBAAkB;QAC/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,UAAU,iBAAiB,CAAC,CAAC;QAC7D,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,UAAU,oBAAoB,CAAC,IAAY;QAC9C,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAmC,EAAE,CAAC;IACjD,KAAK,UAAU,QAAQ,CAAC,QAAgB;QACtC,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE;YACxB,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE;gBACrD,UAAU;gBACV,SAAS;aACV,CAAC,CAAC;SACJ;QACD,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,OAAO;QACL,kBAAkB;QAClB,oBAAoB;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransformationOptions.js","sourceRoot":"","sources":["../../src/content-page-repository/TransformationOptions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ContentPageRepository } from './ContentPageRepository';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content-page-repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function mapJSON<T>(data: T, mapper: <In, Out = In>(value: In, key: string[]) => Promise<Out>, key?: string[]): Promise<T>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export async function mapJSON(data, mapper, key = []) {
|
|
2
|
+
if (data === null || data === undefined)
|
|
3
|
+
return data;
|
|
4
|
+
const mappedData = await mapper(data, key);
|
|
5
|
+
if (mappedData !== data)
|
|
6
|
+
return mappedData;
|
|
7
|
+
if (Array.isArray(data)) {
|
|
8
|
+
const values = data.map((_, i) => mapJSON(_, mapper, [String(i)].concat(key)));
|
|
9
|
+
return Promise.all(values);
|
|
10
|
+
}
|
|
11
|
+
else if (typeof data === 'object' && data.toString() === '[object Object]') {
|
|
12
|
+
const subKeys = Object.keys(data);
|
|
13
|
+
const values = subKeys.map((k) => mapJSON(data[k], mapper, [k].concat(key)));
|
|
14
|
+
const pairs = (await Promise.all(values)).map((_, i) => ({
|
|
15
|
+
[subKeys[i]]: _,
|
|
16
|
+
}));
|
|
17
|
+
return Object.assign({}, ...pairs);
|
|
18
|
+
}
|
|
19
|
+
return mapper(data, key);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=mapJSON.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapJSON.js","sourceRoot":"","sources":["../../src/content-page-repository/mapJSON.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAO,EACP,MAAgE,EAChE,MAAgB,EAAE;IAElB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAErD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,UAAe,CAAC;IAEhD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAQ,CAAC;KACnC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAK,IAAY,CAAC,QAAQ,EAAE,KAAK,iBAAiB,EAAE;QACrF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChB,CAAC,CAAC,CAAC;QACJ,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;KACpC;IACD,OAAO,MAAM,CAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import util from 'util';
|
|
3
|
+
import { mapJSON } from './mapJSON.js';
|
|
4
|
+
import { transformMarkdown } from './transformMarkdown.js';
|
|
5
|
+
import { transformPicture } from './transformPicture.js';
|
|
6
|
+
const readFile = util.promisify(fs.readFile);
|
|
7
|
+
export async function transformContentPage(pagePath, options) {
|
|
8
|
+
const content = await readFile(pagePath, 'utf8');
|
|
9
|
+
return mapJSON(JSON.parse(content), async (value, [key]) => {
|
|
10
|
+
const isMarkdown = typeof value === 'string' && key?.endsWith('__md');
|
|
11
|
+
const isPicture = value && value.src && typeof value.src === 'string';
|
|
12
|
+
if (isMarkdown) {
|
|
13
|
+
return await transformMarkdown(value);
|
|
14
|
+
}
|
|
15
|
+
else if (isPicture) {
|
|
16
|
+
return await transformPicture(pagePath, value, options);
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=transformContentPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformContentPage.js","sourceRoot":"","sources":["../../src/content-page-repository/transformContentPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB,EAChB,OAA8B;IAE9B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,OAAO,CAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAU,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;QAC9E,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC;QACtE,IAAI,UAAU,EAAE;YACd,OAAO,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACvC;aAAM,IAAI,SAAS,EAAE;YACpB,OAAO,MAAM,gBAAgB,CAAC,QAAQ,EAAE,KAAgB,EAAE,OAAO,CAAC,CAAC;SACpE;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function transformMarkdown(markdown: string | null | undefined): Promise<string>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { unified } from 'unified';
|
|
2
|
+
import remarkParse from 'remark-parse';
|
|
3
|
+
import remarkHtml from 'remark-html';
|
|
4
|
+
export async function transformMarkdown(markdown) {
|
|
5
|
+
if (!markdown)
|
|
6
|
+
return '';
|
|
7
|
+
const result = await unified().use(remarkParse).use(remarkHtml).process(markdown);
|
|
8
|
+
return result.toString('utf-8');
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=transformMarkdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformMarkdown.js","sourceRoot":"","sources":["../../src/content-page-repository/transformMarkdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAmC;IACzE,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import sharp from 'sharp';
|
|
4
|
+
import util from 'util';
|
|
5
|
+
const mkdir = util.promisify(fs.mkdir);
|
|
6
|
+
export async function transformPicture(pagePath, picture, options) {
|
|
7
|
+
const sources = picture.sources || [];
|
|
8
|
+
const [transformedPicture, ...transformedSources] = await Promise.all([picture].concat(sources).map((_) => transformImg(pagePath, picture.src, { ...options, ..._ })));
|
|
9
|
+
return {
|
|
10
|
+
...picture,
|
|
11
|
+
src: transformedPicture,
|
|
12
|
+
sources: transformedSources.map((_, i) => ({
|
|
13
|
+
...sources[i],
|
|
14
|
+
src: _,
|
|
15
|
+
})),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async function transformImg(pagePath, src, transformationOptions) {
|
|
19
|
+
const { contentDir, publicDir, format, options, size } = transformationOptions;
|
|
20
|
+
const imgPath = `${path.dirname(pagePath)}/${src}`;
|
|
21
|
+
let chain = sharp(imgPath);
|
|
22
|
+
if (size)
|
|
23
|
+
chain = chain.resize(size);
|
|
24
|
+
if (format)
|
|
25
|
+
chain = chain.toFormat(format, options);
|
|
26
|
+
const transformedSrc = transformSrc(src, transformationOptions);
|
|
27
|
+
const transformedImgPath = `${publicDir}/${path.relative(contentDir, `${path.dirname(pagePath)}/${transformedSrc}`)}`;
|
|
28
|
+
await mkdir(path.dirname(transformedImgPath), { recursive: true });
|
|
29
|
+
await chain.toFile(transformedImgPath);
|
|
30
|
+
return transformedSrc;
|
|
31
|
+
}
|
|
32
|
+
function transformSrc(src, { format, size }) {
|
|
33
|
+
const noTransform = !format && !size;
|
|
34
|
+
if (noTransform)
|
|
35
|
+
return src;
|
|
36
|
+
const suffix = [size?.width, size?.height].filter(Boolean).join('-');
|
|
37
|
+
return `${path.basename(src, path.extname(src))}${suffix ? `-${suffix}` : ''}.${String(format) || path.extname(src)}`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=transformPicture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformPicture.js","sourceRoot":"","sources":["../../src/content-page-repository/transformPicture.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { BlockDef, ContentPageMeta, ContentPageDef, Img, ImgSource, Picture } from './types';
|
|
2
|
+
export type { ContentPageContext, Router } from './ContentPageContext';
|
|
3
|
+
export { Blocks } from './Blocks';
|
|
4
|
+
export { LikeAPI } from './api/LikeAPI';
|
|
5
|
+
export { ContentPageHead } from './ContentPageHead';
|
|
6
|
+
export { ContentPage } from './ContentPage';
|
package/lib/index.js
ADDED
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { AvifOptions, FormatEnum, GifOptions, HeifOptions, JpegOptions, PngOptions, ResizeOptions, TiffOptions, WebpOptions } from 'sharp';
|
|
2
|
+
import type { HeaderContent } from './Header';
|
|
3
|
+
import type { PlaceholderContent } from './Placeholder';
|
|
4
|
+
import type { ProductTileContent } from './ProductTile';
|
|
5
|
+
import type { RichTextContent } from './RichText';
|
|
6
|
+
import type { TextContent } from './Text';
|
|
7
|
+
import type { TextWithImageContent } from './TextWithImage';
|
|
8
|
+
export declare type BlockVersion = 'primary' | 'secondary';
|
|
9
|
+
export declare type ColorPalette = 'pc' | 'bc' | 'eo';
|
|
10
|
+
export declare type BlockContent = HeaderContent | TextContent | TextWithImageContent | RichTextContent | PlaceholderContent | ProductTileContent;
|
|
11
|
+
export interface BlockDef {
|
|
12
|
+
type: string;
|
|
13
|
+
style?: string[];
|
|
14
|
+
version?: BlockVersion;
|
|
15
|
+
content?: BlockContent;
|
|
16
|
+
blocks?: BlockDef[];
|
|
17
|
+
}
|
|
18
|
+
export interface ContentPageMeta {
|
|
19
|
+
title: string;
|
|
20
|
+
slug: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
keywords?: string[];
|
|
23
|
+
robots?: string[];
|
|
24
|
+
og?: Record<string, string>;
|
|
25
|
+
}
|
|
26
|
+
export interface ContentPageDef extends ContentPageMeta {
|
|
27
|
+
style?: string[];
|
|
28
|
+
blocks?: BlockDef[];
|
|
29
|
+
likeControl?: boolean;
|
|
30
|
+
colorPalette?: ColorPalette;
|
|
31
|
+
}
|
|
32
|
+
export interface Img {
|
|
33
|
+
src: string;
|
|
34
|
+
alt?: string;
|
|
35
|
+
title?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ImgSource {
|
|
38
|
+
src: string;
|
|
39
|
+
format?: keyof FormatEnum;
|
|
40
|
+
options?: JpegOptions | PngOptions | WebpOptions | AvifOptions | HeifOptions | GifOptions | TiffOptions;
|
|
41
|
+
size?: ResizeOptions;
|
|
42
|
+
}
|
|
43
|
+
export interface Picture extends Img, ImgSource {
|
|
44
|
+
sources?: ImgSource[];
|
|
45
|
+
}
|
package/lib/types.js
ADDED
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare type BlockItemVersion = 'primary' | 'secondary';
|
|
2
|
+
export interface BlockItemContent {
|
|
3
|
+
text?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface BlockItemProps extends BlockItemContent {
|
|
6
|
+
className?: string;
|
|
7
|
+
version?: BlockItemVersion;
|
|
8
|
+
}
|
|
9
|
+
export declare const BlockItem: (props: import("@redneckz/uni-jsx").PropsWithChildren<BlockItemProps, any>, context?: any) => any;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
|
|
2
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
3
|
+
const listStyleMap = {
|
|
4
|
+
primary: 'bg-primary-main',
|
|
5
|
+
secondary: 'bg-white',
|
|
6
|
+
};
|
|
7
|
+
const textStyleMap = {
|
|
8
|
+
primary: 'text-primary-text',
|
|
9
|
+
secondary: 'text-white',
|
|
10
|
+
};
|
|
11
|
+
export const BlockItem = JSX(({ className, text, children, version = 'primary' }) => {
|
|
12
|
+
return (_jsxs("div", { className: `inline-block flex items-center ${className || ''}`, role: "listitem", children: [_jsx("div", { className: `inline-block w-[8px] h-[8px] rounded-full ${listStyleMap[version]}` }), _jsx("span", { className: `text-base font-normal font-sans mx-3 ${textStyleMap[version]}`, children: text || children })] }));
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=BlockItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockItem.js","sourceRoot":"","sources":["../../src/ui-kit/BlockItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAYxC,MAAM,YAAY,GAAqC;IACrD,OAAO,EAAE,iBAAiB;IAC1B,SAAS,EAAE,UAAU;CACtB,CAAC;AAEF,MAAM,YAAY,GAAqC;IACrD,OAAO,EAAE,mBAAmB;IAC5B,SAAS,EAAE,YAAY;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAC1B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE;IACrD,OAAO,CACL,eAAK,SAAS,EAAE,kCAAkC,SAAS,IAAI,EAAE,EAAE,EAAE,IAAI,EAAC,UAAU,aAClF,cAAK,SAAS,EAAE,6CAA6C,YAAY,CAAC,OAAO,CAAC,EAAE,GAAQ,EAC5F,eAAM,SAAS,EAAE,wCAAwC,YAAY,CAAC,OAAO,CAAC,EAAE,YAC7E,IAAI,IAAI,QAAQ,GACZ,IACH,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LinkContent } from './Link';
|
|
2
|
+
export interface BreadcrumbProps extends LinkContent {
|
|
3
|
+
className?: string;
|
|
4
|
+
onClick?: (ev: MouseEvent) => any;
|
|
5
|
+
}
|
|
6
|
+
export declare const Breadcrumb: (props: import("@redneckz/uni-jsx").PropsWithChildren<BreadcrumbProps, any>, context?: any) => any;
|