@redneckz/wildless-cms-uni-blocks 0.2.20 → 0.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/ContentPage.d.ts +2 -0
  2. package/dist/ContentPage.js +2 -2
  3. package/dist/ContentPage.js.map +1 -1
  4. package/dist/ContentPageContext.d.ts +11 -0
  5. package/dist/ContentPageContext.js +2 -0
  6. package/dist/ContentPageContext.js.map +1 -0
  7. package/dist/Header.d.ts +4 -2
  8. package/dist/Header.js +22 -5
  9. package/dist/Header.js.map +1 -1
  10. package/dist/ProductBlock.d.ts +6 -3
  11. package/dist/ProductBlock.js +4 -2
  12. package/dist/ProductBlock.js.map +1 -1
  13. package/dist/ProductColumnBlock.d.ts +4 -2
  14. package/dist/ProductColumnBlock.js +4 -3
  15. package/dist/ProductColumnBlock.js.map +1 -1
  16. package/dist/ui-kit/Button.d.ts +3 -7
  17. package/dist/ui-kit/Link.d.ts +5 -0
  18. package/dist/ui-kit/Link.js +2 -0
  19. package/dist/ui-kit/Link.js.map +1 -0
  20. package/dist/ui-kit/PrimaryButton.d.ts +3 -2
  21. package/dist/ui-kit/PrimaryButton.js.map +1 -1
  22. package/dist/ui-kit/TopItem.d.ts +3 -3
  23. package/dist/useLink.d.ts +8 -0
  24. package/dist/useLink.js +20 -0
  25. package/dist/useLink.js.map +1 -0
  26. package/lib/ContentPage.d.ts +2 -0
  27. package/lib/ContentPage.js +2 -2
  28. package/lib/ContentPage.js.map +1 -1
  29. package/lib/ContentPageContext.d.ts +11 -0
  30. package/lib/ContentPageContext.js +2 -0
  31. package/lib/ContentPageContext.js.map +1 -0
  32. package/lib/Header.d.ts +4 -2
  33. package/lib/Header.js +22 -5
  34. package/lib/Header.js.map +1 -1
  35. package/lib/ProductBlock.d.ts +6 -3
  36. package/lib/ProductBlock.js +4 -2
  37. package/lib/ProductBlock.js.map +1 -1
  38. package/lib/ProductColumnBlock.d.ts +4 -2
  39. package/lib/ProductColumnBlock.js +4 -3
  40. package/lib/ProductColumnBlock.js.map +1 -1
  41. package/lib/common.css +1 -1
  42. package/lib/ui-kit/Button.d.ts +3 -7
  43. package/lib/ui-kit/Link.d.ts +5 -0
  44. package/lib/ui-kit/Link.js +2 -0
  45. package/lib/ui-kit/Link.js.map +1 -0
  46. package/lib/ui-kit/PrimaryButton.d.ts +3 -2
  47. package/lib/ui-kit/PrimaryButton.js.map +1 -1
  48. package/lib/ui-kit/TopItem.d.ts +3 -3
  49. package/lib/useLink.d.ts +8 -0
  50. package/lib/useLink.js +17 -0
  51. package/lib/useLink.js.map +1 -0
  52. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ import type { ContentPageContext } from './ContentPageContext';
1
2
  import type { BlockDef, ContentPageDef } from './types';
2
3
  interface BlockDecoratorProps<VNode> {
3
4
  blockClassName: string;
@@ -11,6 +12,7 @@ export declare type BlockDecorator<VNode = any> = (props: BlockDecoratorProps<VN
11
12
  export interface ContentPageProps {
12
13
  className?: string;
13
14
  data: ContentPageDef;
15
+ context: ContentPageContext;
14
16
  blockDecorator?: BlockDecorator;
15
17
  }
16
18
  export declare const ContentPage: (props: import("@redneckz/uni-jsx").PropsWithChildren<ContentPageProps, any>, context?: any) => any;
@@ -4,7 +4,7 @@ const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
4
  const uni_jsx_1 = require("@redneckz/uni-jsx");
5
5
  const Blocks_1 = require("./Blocks");
6
6
  const defaultBlockDecorator = ({ blockClassName, block, render }) => render({ blockClassName, block });
7
- exports.ContentPage = (0, uni_jsx_1.JSX)(({ className, data: { style: pageStyle, blocks }, blockDecorator = defaultBlockDecorator }) => {
7
+ exports.ContentPage = (0, uni_jsx_1.JSX)(({ className, data: { style: pageStyle, blocks }, context, blockDecorator = defaultBlockDecorator, }) => {
8
8
  return ((0, jsx_runtime_1.jsx)("section", { className: `grid grid-cols-12 ${style2className(pageStyle)} ${className}`, children: blocks && blocks.map(renderBlock) }));
9
9
  function renderBlock(block, i) {
10
10
  const { type } = block;
@@ -18,7 +18,7 @@ exports.ContentPage = (0, uni_jsx_1.JSX)(({ className, data: { style: pageStyle,
18
18
  block,
19
19
  render: (props) => {
20
20
  const { content, blocks } = props.block;
21
- return ((0, jsx_runtime_1.jsx)(BlockComponent, { className: props.blockClassName, ...content, children: blocks && blocks.map(renderBlock) }, `${type}-${i}`));
21
+ return ((0, jsx_runtime_1.jsx)(BlockComponent, { className: props.blockClassName, context: context, ...content, children: blocks && blocks.map(renderBlock) }, `${type}-${i}`));
22
22
  },
23
23
  });
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../src/ContentPage.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,qCAAkC;AAiBlC,MAAM,qBAAqB,GAAmB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAClF,MAAM,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;AAEvB,QAAA,WAAW,GAAG,IAAA,aAAG,EAC5B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,qBAAqB,EAAE,EAAE,EAAE;IAC5F,OAAO,CACL,oCAAS,SAAS,EAAE,qBAAqB,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,YAC/E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAC1B,CACX,CAAC;IAEF,SAAS,WAAW,CAAC,KAAe,EAAE,CAAS;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,IAAI,eAAM,CAAC,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,iBAAiB,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;SACb;QAED,MAAM,cAAc,GAAG,eAAM,CAAC,IAA2B,CAAC,CAAC;QAC3D,OAAO,cAAc,CAAC;YACpB,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxC,OAAO,CACL,uBAAC,cAAc,IAAsB,SAAS,EAAE,KAAK,CAAC,cAAc,KAAM,OAAO,YAC9E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IADf,GAAG,IAAI,IAAI,CAAC,EAAE,CAElB,CAClB,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CACF,CAAC;AAEF,SAAS,eAAe,CAAC,KAAkC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../src/ContentPage.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,qCAAkC;AAmBlC,MAAM,qBAAqB,GAAmB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAClF,MAAM,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;AAEvB,QAAA,WAAW,GAAG,IAAA,aAAG,EAC5B,CAAC,EACC,SAAS,EACT,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAClC,OAAO,EACP,cAAc,GAAG,qBAAqB,GACvC,EAAE,EAAE;IACH,OAAO,CACL,oCAAS,SAAS,EAAE,qBAAqB,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,YAC/E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAC1B,CACX,CAAC;IAEF,SAAS,WAAW,CAAC,KAAe,EAAE,CAAS;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,IAAI,eAAM,CAAC,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,iBAAiB,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;SACb;QAED,MAAM,cAAc,GAAG,eAAM,CAAC,IAA2B,CAAC,CAAC;QAC3D,OAAO,cAAc,CAAC;YACpB,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxC,OAAO,CACL,uBAAC,cAAc,IAEb,SAAS,EAAE,KAAK,CAAC,cAAc,EAC/B,OAAO,EAAE,OAAO,KACZ,OAAO,YAEV,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAL7B,GAAG,IAAI,IAAI,CAAC,EAAE,CAMJ,CAClB,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CACF,CAAC;AAEF,SAAS,eAAe,CAAC,KAAkC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface Router {
2
+ pathname: string;
3
+ query: Record<string, string>;
4
+ href?: string;
5
+ basePath?: string;
6
+ push: (url: string) => void;
7
+ }
8
+ export interface ContentPageContext {
9
+ useRouter: () => Router;
10
+ handlerDecorator?: <F extends Function>(handler: F) => F;
11
+ }
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ //# sourceMappingURL=ContentPageContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentPageContext.js","sourceRoot":"","sources":["../src/ContentPageContext.tsx"],"names":[],"mappings":""}
package/dist/Header.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { ButtonContent } from './ui-kit/Button';
2
- declare type HeaderMenuItem = ButtonContent;
1
+ import type { LinkContent } from './ui-kit/Link';
2
+ import type { ContentPageContext } from './ContentPageContext';
3
+ declare type HeaderMenuItem = LinkContent;
3
4
  interface TopMenuItem extends HeaderMenuItem {
4
5
  items?: HeaderMenuItem[];
5
6
  }
@@ -8,6 +9,7 @@ export interface HeaderContent {
8
9
  }
9
10
  export interface HeaderProps extends HeaderContent {
10
11
  className?: string;
12
+ context: ContentPageContext;
11
13
  }
12
14
  export declare const Header: (props: import("@redneckz/uni-jsx").PropsWithChildren<HeaderProps, any>, context?: any) => any;
13
15
  export {};
package/dist/Header.js CHANGED
@@ -5,10 +5,27 @@ const uni_jsx_1 = require("@redneckz/uni-jsx");
5
5
  const HeaderItem_1 = require("./ui-kit/HeaderItem");
6
6
  const Logo_1 = require("./ui-kit/Logo");
7
7
  const TopItem_1 = require("./ui-kit/TopItem");
8
- exports.Header = (0, uni_jsx_1.JSX)(({ className, topItems }) => {
9
- const { href, pathname } = globalThis.location || {};
10
- const activeTopItem = topItems?.find((_) => href && _.href && href.startsWith(_.href));
11
- const activeSubItem = pathname && activeTopItem?.items?.find(({ href }) => href && pathname.startsWith(href));
12
- return ((0, jsx_runtime_1.jsxs)("div", { className: `py-8 px-20 bg-white rounded-bl-3xl rounded-br-3xl ${className || ''}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [(0, jsx_runtime_1.jsx)(Logo_1.Logo, { className: "mr-8" }), topItems?.map((_) => ((0, jsx_runtime_1.jsx)(TopItem_1.TopItem, { active: _ === activeTopItem, target: _ === activeTopItem ? '_self' : '_blank', ..._ }, _.href)))] }), activeTopItem?.items && ((0, jsx_runtime_1.jsx)("div", { className: "mt-10", children: activeTopItem.items.map((_) => ((0, jsx_runtime_1.jsx)(HeaderItem_1.HeaderItem, { className: "mr-8", active: _ === activeSubItem, ..._ }, _.href))) }))] }));
8
+ const useLink_1 = require("./useLink");
9
+ exports.Header = (0, uni_jsx_1.JSX)(({ className, context, topItems }) => {
10
+ const router = context.useRouter();
11
+ const activeTopItem = topItems?.find(isTopItemActive(router));
12
+ const activeSubItem = activeTopItem?.items?.find(isSubItemActive(router));
13
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `py-8 px-20 bg-white rounded-bl-3xl rounded-br-3xl ${className || ''}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [(0, jsx_runtime_1.jsx)(Logo_1.Logo, { className: "mr-8" }), topItems?.map((_) => ((0, jsx_runtime_1.jsx)(TopItem_1.TopItem, { active: _ === activeTopItem, ...(0, useLink_1.useLink)(context, _) }, _.href)))] }), activeTopItem?.items && ((0, jsx_runtime_1.jsx)("div", { className: "mt-10", children: activeTopItem.items.map((_) => ((0, jsx_runtime_1.jsx)(HeaderItem_1.HeaderItem, { className: "mr-8", active: _ === activeSubItem, ...(0, useLink_1.useLink)(context, _) }, _.href))) }))] }));
13
14
  });
15
+ const isURL = (href) => href?.includes('//');
16
+ const withoutQuery = (href) => (href || '').replace(/\/?\?.+/, '');
17
+ function isTopItemActive({ href, pathname }) {
18
+ return (item) => {
19
+ const itemHref = withoutQuery(item.href);
20
+ if (isURL(itemHref)) {
21
+ return Boolean(href && href.startsWith(itemHref));
22
+ }
23
+ return Boolean(item.href && pathname.startsWith(itemHref));
24
+ };
25
+ }
26
+ function isSubItemActive({ href, pathname }) {
27
+ return (item) => {
28
+ return withoutQuery(item.href) === (isURL(item.href) ? withoutQuery(href) : pathname);
29
+ };
30
+ }
14
31
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/Header.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAExC,oDAAiD;AACjD,wCAAqC;AACrC,8CAA2C;AAgB9B,QAAA,MAAM,GAAG,IAAA,aAAG,EAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrD,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GACjB,QAAQ,IAAI,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,OAAO,CACL,iCAAK,SAAS,EAAE,qDAAqD,SAAS,IAAI,EAAE,EAAE,aACpF,iCAAK,SAAS,EAAC,mBAAmB,aAChC,uBAAC,WAAI,IAAC,SAAS,EAAC,MAAM,GAAG,EACxB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,uBAAC,iBAAO,IAEN,MAAM,EAAE,CAAC,KAAK,aAAa,EAC3B,MAAM,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAC5C,CAAC,IAHA,CAAC,CAAC,IAAI,CAIX,CACH,CAAC,IACE,EACL,aAAa,EAAE,KAAK,IAAI,CACvB,gCAAK,SAAS,EAAC,OAAO,YACnB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,uBAAC,uBAAU,IAAc,SAAS,EAAC,MAAM,EAAC,MAAM,EAAE,CAAC,KAAK,aAAa,KAAM,CAAC,IAA3D,CAAC,CAAC,IAAI,CAAyD,CACjF,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/Header.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAExC,oDAAiD;AACjD,wCAAqC;AACrC,8CAA2C;AAE3C,uCAAoC;AAiBvB,QAAA,MAAM,GAAG,IAAA,aAAG,EAAc,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAEnC,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,OAAO,CACL,iCAAK,SAAS,EAAE,qDAAqD,SAAS,IAAI,EAAE,EAAE,aACpF,iCAAK,SAAS,EAAC,mBAAmB,aAChC,uBAAC,WAAI,IAAC,SAAS,EAAC,MAAM,GAAG,EACxB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,uBAAC,iBAAO,IAAc,MAAM,EAAE,CAAC,KAAK,aAAa,KAAM,IAAA,iBAAO,EAAC,OAAO,EAAE,CAAC,CAAC,IAA5D,CAAC,CAAC,IAAI,CAA0D,CAC/E,CAAC,IACE,EACL,aAAa,EAAE,KAAK,IAAI,CACvB,gCAAK,SAAS,EAAC,OAAO,YACnB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,uBAAC,uBAAU,IAET,SAAS,EAAC,MAAM,EAChB,MAAM,EAAE,CAAC,KAAK,aAAa,KACvB,IAAA,iBAAO,EAAC,OAAO,EAAE,CAAC,CAAC,IAHlB,CAAC,CAAC,IAAI,CAIX,CACH,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEtD,MAAM,YAAY,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAE5E,SAAS,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAU;IACjD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;YACnB,OAAO,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;SACnD;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAU;IACjD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
+ import type { ContentPageContext } from './ContentPageContext';
1
2
  import { Icons } from './Icons';
2
3
  import { Picture } from './types';
3
- import { ButtonContent } from './ui-kit/Button';
4
+ import type { LinkContent } from './ui-kit/Link';
4
5
  export interface Benefit {
5
6
  label: string;
6
7
  description?: string;
@@ -8,12 +9,14 @@ export interface Benefit {
8
9
  }
9
10
  export interface ProductBlockContent {
10
11
  title?: string;
11
- description?: string | Node;
12
+ description?: string;
12
13
  image?: Picture;
13
14
  benefits?: Benefit[];
14
- button?: ButtonContent;
15
+ items?: string[];
16
+ button?: LinkContent;
15
17
  }
16
18
  export interface ProductBlockProps extends ProductBlockContent {
17
19
  className?: string;
20
+ context: ContentPageContext;
18
21
  }
19
22
  export declare const ProductBlock: (props: import("@redneckz/uni-jsx").PropsWithChildren<ProductBlockProps, any>, context?: any) => any;
@@ -4,10 +4,12 @@ const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
4
  const uni_jsx_1 = require("@redneckz/uni-jsx");
5
5
  const Icons_1 = require("./Icons");
6
6
  const Img_1 = require("./Img");
7
+ const BlockItem_1 = require("./ui-kit/BlockItem");
7
8
  const PrimaryButton_1 = require("./ui-kit/PrimaryButton");
9
+ const useLink_1 = require("./useLink");
8
10
  exports.ProductBlock = (0, uni_jsx_1.JSX)((props) => {
9
- const { className, title, description, benefits, button, image } = props;
10
- return ((0, jsx_runtime_1.jsxs)("section", { className: `font-sans bg-white rounded-[40px] h-[470px] flex relative overflow-hidden ${className}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: ['flex', 'flex-col', 'p-11', image && 'pr-0'].filter(Boolean).join(' '), children: [title && (0, jsx_runtime_1.jsx)("h1", { className: "font-medium text-title2 m-0 mb-4 whitespace-pre-wrap", children: title }), description && ((0, jsx_runtime_1.jsx)("div", { className: "font-normal text-base text-second-primary mb-7", children: description })), benefits && (0, jsx_runtime_1.jsx)("div", { className: "flex gap-6", children: benefits.map(renderBenefit) }), button && button.text && ((0, jsx_runtime_1.jsx)("div", { className: "mt-auto", children: (0, jsx_runtime_1.jsx)(PrimaryButton_1.PrimaryButton, { ...button }) }))] }), image && (0, jsx_runtime_1.jsx)("div", { className: "h-full flex", children: (0, jsx_runtime_1.jsx)(Img_1.Img, { image: image, className: "flex" }) })] }));
11
+ const { className, context, title, description, benefits, button, image, items } = props;
12
+ return ((0, jsx_runtime_1.jsxs)("section", { className: `font-sans bg-white rounded-[40px] h-[470px] flex justify-between relative overflow-hidden ${className}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: ['flex', 'flex-col', 'p-11', image && 'pr-0'].filter(Boolean).join(' '), children: [title && (0, jsx_runtime_1.jsx)("h1", { className: "font-medium text-title2 m-0 mb-4 whitespace-pre-wrap", children: title }), description && ((0, jsx_runtime_1.jsx)("div", { className: "font-normal text-base text-second-primary mb-7", children: description })), benefits && benefits.length && ((0, jsx_runtime_1.jsx)("div", { className: "flex gap-6", children: benefits.map(renderBenefit) })), items && items.length && ((0, jsx_runtime_1.jsx)("section", { className: "flex flex-col", role: "list", children: items?.map((_) => ((0, jsx_runtime_1.jsx)(BlockItem_1.BlockItem, { className: "mt-6", text: _ }, _))) })), button && button.text && ((0, jsx_runtime_1.jsx)("div", { className: "mt-auto", children: (0, jsx_runtime_1.jsx)(PrimaryButton_1.PrimaryButton, { ...(0, useLink_1.useLink)(context, button) }) }))] }), image && (0, jsx_runtime_1.jsx)("div", { className: "h-full flex", children: (0, jsx_runtime_1.jsx)(Img_1.Img, { image: image, className: "flex" }) })] }));
11
13
  });
12
14
  function renderBenefit(benefit, index) {
13
15
  return ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-4 items-center", children: [benefit.icon && ((0, jsx_runtime_1.jsx)("div", { className: "h-11 w-11 min-w-11 min-h-11 bg-second-light rounded-full p-[10px] box-border", children: Icons_1.Icons[benefit.icon] })), (0, jsx_runtime_1.jsxs)("div", { className: "flex gap-1 flex-col", children: [(0, jsx_runtime_1.jsx)("h4", { className: "font-medium text-xl m-0", children: benefit.label }), benefit.description && ((0, jsx_runtime_1.jsx)("div", { className: "font-normal text-sm text-second-primary", children: benefit.description }))] })] }, index));
@@ -1 +1 @@
1
- {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../src/ProductBlock.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,mCAAgC;AAChC,+BAA4B;AAG5B,0DAAuD;AAoB1C,QAAA,YAAY,GAAG,IAAA,aAAG,EAAoB,CAAC,KAAK,EAAE,EAAE;IAC3D,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACzE,OAAO,CACL,qCACE,SAAS,EAAE,6EAA6E,SAAS,EAAE,aAEnG,iCAAK,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aACpF,KAAK,IAAI,+BAAI,SAAS,EAAC,sDAAsD,YAAE,KAAK,GAAM,EAC1F,WAAW,IAAI,CACd,gCAAK,SAAS,EAAC,gDAAgD,YAAE,WAAW,GAAO,CACpF,EACA,QAAQ,IAAI,gCAAK,SAAS,EAAC,YAAY,YAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,GAAO,EAC3E,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,CACxB,gCAAK,SAAS,EAAC,SAAS,YACtB,uBAAC,6BAAa,OAAK,MAAM,GAAI,GACzB,CACP,IACG,EACL,KAAK,IAAI,gCAAK,SAAS,EAAC,aAAa,YAAE,uBAAC,SAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,GAAG,GAAO,IAC7E,CACX,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK;IACnC,OAAO,CACL,iCAAiB,SAAS,EAAC,yBAAyB,aACjD,OAAO,CAAC,IAAI,IAAI,CACf,gCAAK,SAAS,EAAC,8EAA8E,YAC1F,aAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAChB,CACP,EACD,iCAAK,SAAS,EAAC,qBAAqB,aAClC,+BAAI,SAAS,EAAC,yBAAyB,YAAE,OAAO,CAAC,KAAK,GAAM,EAC3D,OAAO,CAAC,WAAW,IAAI,CACtB,gCAAK,SAAS,EAAC,yCAAyC,YAAE,OAAO,CAAC,WAAW,GAAO,CACrF,IACG,KAXE,KAAK,CAYT,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../src/ProductBlock.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAExC,mCAAgC;AAChC,+BAA4B;AAE5B,kDAA+C;AAE/C,0DAAuD;AACvD,uCAAoC;AAoBvB,QAAA,YAAY,GAAG,IAAA,aAAG,EAAoB,CAAC,KAAK,EAAE,EAAE;IAC3D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEzF,OAAO,CACL,qCACE,SAAS,EAAE,6FAA6F,SAAS,EAAE,aAEnH,iCAAK,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aACpF,KAAK,IAAI,+BAAI,SAAS,EAAC,sDAAsD,YAAE,KAAK,GAAM,EAC1F,WAAW,IAAI,CACd,gCAAK,SAAS,EAAC,gDAAgD,YAAE,WAAW,GAAO,CACpF,EACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAC9B,gCAAK,SAAS,EAAC,YAAY,YAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,GAAO,CAChE,EACA,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CACxB,oCAAS,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,YAC3C,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,uBAAC,qBAAS,IAAS,SAAS,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,IAA3B,CAAC,CAA8B,CAChD,CAAC,GACM,CACX,EACA,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,CACxB,gCAAK,SAAS,EAAC,SAAS,YACtB,uBAAC,6BAAa,OAAK,IAAA,iBAAO,EAAC,OAAO,EAAE,MAAM,CAAC,GAAI,GAC3C,CACP,IACG,EACL,KAAK,IAAI,gCAAK,SAAS,EAAC,aAAa,YAAE,uBAAC,SAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,GAAG,GAAO,IAC7E,CACX,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK;IACnC,OAAO,CACL,iCAAiB,SAAS,EAAC,yBAAyB,aACjD,OAAO,CAAC,IAAI,IAAI,CACf,gCAAK,SAAS,EAAC,8EAA8E,YAC1F,aAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAChB,CACP,EACD,iCAAK,SAAS,EAAC,qBAAqB,aAClC,+BAAI,SAAS,EAAC,yBAAyB,YAAE,OAAO,CAAC,KAAK,GAAM,EAC3D,OAAO,CAAC,WAAW,IAAI,CACtB,gCAAK,SAAS,EAAC,yCAAyC,YAAE,OAAO,CAAC,WAAW,GAAO,CACrF,IACG,KAXE,KAAK,CAYT,CACP,CAAC;AACJ,CAAC"}
@@ -1,11 +1,13 @@
1
- import type { ButtonContent } from './ui-kit/Button';
1
+ import type { ContentPageContext } from './ContentPageContext';
2
+ import type { LinkContent } from './ui-kit/Link';
2
3
  export interface ProductColumnBlockContent {
3
4
  title?: string;
4
5
  items?: string[];
5
- button?: ButtonContent;
6
+ button?: LinkContent;
6
7
  promo?: boolean;
7
8
  }
8
9
  export interface ProductColumnBlockProps extends ProductColumnBlockContent {
9
10
  className?: string;
11
+ context: ContentPageContext;
10
12
  }
11
13
  export declare const ProductColumnBlock: (props: import("@redneckz/uni-jsx").PropsWithChildren<ProductColumnBlockProps, any>, context?: any) => any;
@@ -2,9 +2,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
2
2
  exports.ProductColumnBlock = void 0;
3
3
  const jsx_runtime_1 = require("@redneckz/uni-jsx/jsx-runtime");
4
4
  const uni_jsx_1 = require("@redneckz/uni-jsx");
5
- const PrimaryButton_1 = require("./ui-kit/PrimaryButton");
6
5
  const BlockItem_1 = require("./ui-kit/BlockItem");
7
- exports.ProductColumnBlock = (0, uni_jsx_1.JSX)(({ className, title, items, button, promo }) => {
8
- return ((0, jsx_runtime_1.jsxs)("div", { className: `relative p-8 bg-white text-black font-sans rounded-[40px] ${className || ''}`, children: [(0, jsx_runtime_1.jsx)("p", { className: "text-title font-medium m-0", children: title }), (0, jsx_runtime_1.jsx)("section", { className: "flex flex-col", role: "list", children: items?.map((_) => ((0, jsx_runtime_1.jsx)(BlockItem_1.BlockItem, { className: "mt-6", text: _ }, _))) }), button && button.text && (0, jsx_runtime_1.jsx)(PrimaryButton_1.PrimaryButton, { className: "mt-12", ...button }), promo && ((0, jsx_runtime_1.jsx)("div", { className: "absolute right-0 bottom-0 bg-promo font-normal px-12 py-3 text-xl rounded-tl-[74px] rounded-br-[40px]", children: "\u0410\u043A\u0446\u0438\u044F" }))] }));
6
+ const PrimaryButton_1 = require("./ui-kit/PrimaryButton");
7
+ const useLink_1 = require("./useLink");
8
+ exports.ProductColumnBlock = (0, uni_jsx_1.JSX)(({ className, context, title, items, button, promo }) => {
9
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `relative p-8 bg-white text-black font-sans rounded-[40px] ${className || ''}`, children: [(0, jsx_runtime_1.jsx)("p", { className: "text-title font-medium m-0", children: title }), items && items.length && ((0, jsx_runtime_1.jsx)("section", { className: "flex flex-col", role: "list", children: items?.map((_) => ((0, jsx_runtime_1.jsx)(BlockItem_1.BlockItem, { className: "mt-6", text: _ }, _))) })), button && button.text && (0, jsx_runtime_1.jsx)(PrimaryButton_1.PrimaryButton, { className: "mt-12", ...(0, useLink_1.useLink)(context, button) }), promo && ((0, jsx_runtime_1.jsx)("div", { className: "absolute right-0 bottom-0 bg-promo font-normal px-12 py-3 text-xl rounded-tl-[74px] rounded-br-[40px]", children: "\u0410\u043A\u0446\u0438\u044F" }))] }));
9
10
  });
10
11
  //# sourceMappingURL=ProductColumnBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductColumnBlock.js","sourceRoot":"","sources":["../src/ProductColumnBlock.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,0DAAuD;AACvD,kDAA+C;AAclC,QAAA,kBAAkB,GAAG,IAAA,aAAG,EACnC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7C,OAAO,CACL,iCAAK,SAAS,EAAE,6DAA6D,SAAS,IAAI,EAAE,EAAE,aAC5F,8BAAG,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAK,EACrD,oCAAS,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,YAC3C,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,uBAAC,qBAAS,IAAS,SAAS,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,IAA3B,CAAC,CAA8B,CAChD,CAAC,GACM,EACT,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,uBAAC,6BAAa,IAAC,SAAS,EAAC,OAAO,KAAK,MAAM,GAAI,EACxE,KAAK,IAAI,CACR,gCAAK,SAAS,EAAC,uGAAuG,+CAEhH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"ProductColumnBlock.js","sourceRoot":"","sources":["../src/ProductColumnBlock.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAExC,kDAA+C;AAE/C,0DAAuD;AACvD,uCAAoC;AAcvB,QAAA,kBAAkB,GAAG,IAAA,aAAG,EACnC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACtD,OAAO,CACL,iCACE,SAAS,EAAE,6DAA6D,SAAS,IAAI,EAAE,EAAE,aAEzF,8BAAG,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAK,EACpD,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CACxB,oCAAS,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,YAC3C,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,uBAAC,qBAAS,IAAS,SAAS,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,IAA3B,CAAC,CAA8B,CAChD,CAAC,GACM,CACX,EACA,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,uBAAC,6BAAa,IAAC,SAAS,EAAC,OAAO,KAAK,IAAA,iBAAO,EAAC,OAAO,EAAE,MAAM,CAAC,GAAI,EAC1F,KAAK,IAAI,CACR,gCAAK,SAAS,EAAC,uGAAuG,+CAEhH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -1,9 +1,5 @@
1
- export interface ButtonContent {
2
- text?: string;
3
- href?: string;
4
- target?: '_blank' | '_self' | '_parent' | '_top' | string;
5
- }
6
- export interface ButtonProps extends ButtonContent {
1
+ import type { LinkContent } from './Link';
2
+ export interface ButtonProps extends LinkContent {
7
3
  className?: string;
8
- onClick?: () => any;
4
+ onClick?: (ev: MouseEvent) => any;
9
5
  }
@@ -0,0 +1,5 @@
1
+ export interface LinkContent {
2
+ text?: string;
3
+ href?: string;
4
+ target?: '_blank' | '_self' | '_parent' | '_top' | string;
5
+ }
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ //# sourceMappingURL=Link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/ui-kit/Link.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
- import type { ButtonContent, ButtonProps } from './Button';
2
- export declare type PrimaryButtonContent = ButtonContent;
1
+ import type { LinkContent } from './Link';
2
+ import type { ButtonProps } from './Button';
3
+ export declare type PrimaryButtonContent = LinkContent;
3
4
  export declare type PrimaryButtonProps = ButtonProps;
4
5
  export declare const PrimaryButton: (props: import("@redneckz/uni-jsx").PropsWithChildren<ButtonProps, any>, context?: any) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryButton.js","sourceRoot":"","sources":["../../src/ui-kit/PrimaryButton.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAM3B,QAAA,aAAa,GAAG,IAAA,aAAG,EAC9B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvD,OAAO,CACL,8BACE,SAAS,EAAE,oFACT,SAAS,IAAI,EACf,EAAE,EACF,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,YAEhB,iCAAM,SAAS,EAAC,gCAAgC,YAAE,IAAI,IAAI,QAAQ,GAAQ,GACxE,CACL,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"PrimaryButton.js","sourceRoot":"","sources":["../../src/ui-kit/PrimaryButton.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AAO3B,QAAA,aAAa,GAAG,IAAA,aAAG,EAC9B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvD,OAAO,CACL,8BACE,SAAS,EAAE,oFACT,SAAS,IAAI,EACf,EAAE,EACF,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,YAEhB,iCAAM,SAAS,EAAC,gCAAgC,YAAE,IAAI,IAAI,QAAQ,GAAQ,GACxE,CACL,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -1,9 +1,9 @@
1
- import type { ButtonContent } from './Button';
2
- export interface TopItemContent extends ButtonContent {
1
+ import type { LinkContent } from './Link';
2
+ export interface TopItemContent extends LinkContent {
3
3
  active?: boolean;
4
4
  }
5
5
  export interface TopItemProps extends TopItemContent {
6
6
  className?: string;
7
- onClick?: () => any;
7
+ onClick?: (ev: MouseEvent) => any;
8
8
  }
9
9
  export declare const TopItem: (props: import("@redneckz/uni-jsx").PropsWithChildren<TopItemProps, any>, context?: any) => any;
@@ -0,0 +1,8 @@
1
+ import { ContentPageContext } from './ContentPageContext';
2
+ import type { LinkContent } from './ui-kit/Link';
3
+ export declare function useLink({ useRouter, handlerDecorator }: ContentPageContext, link: Partial<LinkContent>): {
4
+ onClick: (ev: MouseEvent) => void;
5
+ text?: string | undefined;
6
+ href?: string | undefined;
7
+ target?: string | undefined;
8
+ };
@@ -0,0 +1,20 @@
1
+ Object.defineProperty(exports, "__esModule", { value: true });
2
+ exports.useLink = void 0;
3
+ const defaultHandlerDecorator = (_) => _;
4
+ function useLink({ useRouter, handlerDecorator = defaultHandlerDecorator }, link) {
5
+ const router = useRouter();
6
+ const { href, target } = link;
7
+ return {
8
+ ...link,
9
+ onClick: handlerDecorator((ev) => {
10
+ const isLocalHref = href && !href.includes('//');
11
+ const isLocalTarget = !target || target === '_self';
12
+ if (isLocalHref && isLocalTarget) {
13
+ ev.preventDefault();
14
+ router.push(href);
15
+ }
16
+ }),
17
+ };
18
+ }
19
+ exports.useLink = useLink;
20
+ //# sourceMappingURL=useLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLink.js","sourceRoot":"","sources":["../src/useLink.ts"],"names":[],"mappings":";;AAGA,MAAM,uBAAuB,GAAoC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1E,SAAgB,OAAO,CACrB,EAAE,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,EAAsB,EAC7E,IAA0B;IAE1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAc,EAAE,EAAE;YAC3C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC;YACpD,IAAI,WAAW,IAAI,aAAa,EAAE;gBAChC,EAAE,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;QACH,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAjBD,0BAiBC"}
@@ -1,3 +1,4 @@
1
+ import type { ContentPageContext } from './ContentPageContext';
1
2
  import type { BlockDef, ContentPageDef } from './types';
2
3
  interface BlockDecoratorProps<VNode> {
3
4
  blockClassName: string;
@@ -11,6 +12,7 @@ export declare type BlockDecorator<VNode = any> = (props: BlockDecoratorProps<VN
11
12
  export interface ContentPageProps {
12
13
  className?: string;
13
14
  data: ContentPageDef;
15
+ context: ContentPageContext;
14
16
  blockDecorator?: BlockDecorator;
15
17
  }
16
18
  export declare const ContentPage: (props: import("@redneckz/uni-jsx").PropsWithChildren<ContentPageProps, any>, context?: any) => any;
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
3
  import { Blocks } from './Blocks.js';
4
4
  const defaultBlockDecorator = ({ blockClassName, block, render }) => render({ blockClassName, block });
5
- export const ContentPage = JSX(({ className, data: { style: pageStyle, blocks }, blockDecorator = defaultBlockDecorator }) => {
5
+ export const ContentPage = JSX(({ className, data: { style: pageStyle, blocks }, context, blockDecorator = defaultBlockDecorator, }) => {
6
6
  return (_jsx("section", { className: `grid grid-cols-12 ${style2className(pageStyle)} ${className}`, children: blocks && blocks.map(renderBlock) }));
7
7
  function renderBlock(block, i) {
8
8
  const { type } = block;
@@ -16,7 +16,7 @@ export const ContentPage = JSX(({ className, data: { style: pageStyle, blocks },
16
16
  block,
17
17
  render: (props) => {
18
18
  const { content, blocks } = props.block;
19
- return (_jsx(BlockComponent, { className: props.blockClassName, ...content, children: blocks && blocks.map(renderBlock) }, `${type}-${i}`));
19
+ return (_jsx(BlockComponent, { className: props.blockClassName, context: context, ...content, children: blocks && blocks.map(renderBlock) }, `${type}-${i}`));
20
20
  },
21
21
  });
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../src/ContentPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAiBlC,MAAM,qBAAqB,GAAmB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAClF,MAAM,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAC5B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,qBAAqB,EAAE,EAAE,EAAE;IAC5F,OAAO,CACL,kBAAS,SAAS,EAAE,qBAAqB,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,YAC/E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAC1B,CACX,CAAC;IAEF,SAAS,WAAW,CAAC,KAAe,EAAE,CAAS;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,iBAAiB,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;SACb;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAA2B,CAAC,CAAC;QAC3D,OAAO,cAAc,CAAC;YACpB,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxC,OAAO,CACL,KAAC,cAAc,IAAsB,SAAS,EAAE,KAAK,CAAC,cAAc,KAAM,OAAO,YAC9E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IADf,GAAG,IAAI,IAAI,CAAC,EAAE,CAElB,CAClB,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CACF,CAAC;AAEF,SAAS,eAAe,CAAC,KAAkC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../src/ContentPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAmBlC,MAAM,qBAAqB,GAAmB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAClF,MAAM,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAC5B,CAAC,EACC,SAAS,EACT,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAClC,OAAO,EACP,cAAc,GAAG,qBAAqB,GACvC,EAAE,EAAE;IACH,OAAO,CACL,kBAAS,SAAS,EAAE,qBAAqB,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,EAAE,YAC/E,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAC1B,CACX,CAAC;IAEF,SAAS,WAAW,CAAC,KAAe,EAAE,CAAS;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,iBAAiB,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;SACb;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAA2B,CAAC,CAAC;QAC3D,OAAO,cAAc,CAAC;YACpB,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,KAAK;YACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxC,OAAO,CACL,KAAC,cAAc,IAEb,SAAS,EAAE,KAAK,CAAC,cAAc,EAC/B,OAAO,EAAE,OAAO,KACZ,OAAO,YAEV,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAL7B,GAAG,IAAI,IAAI,CAAC,EAAE,CAMJ,CAClB,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CACF,CAAC;AAEF,SAAS,eAAe,CAAC,KAAkC;IACzD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface Router {
2
+ pathname: string;
3
+ query: Record<string, string>;
4
+ href?: string;
5
+ basePath?: string;
6
+ push: (url: string) => void;
7
+ }
8
+ export interface ContentPageContext {
9
+ useRouter: () => Router;
10
+ handlerDecorator?: <F extends Function>(handler: F) => F;
11
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ContentPageContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentPageContext.js","sourceRoot":"","sources":["../src/ContentPageContext.tsx"],"names":[],"mappings":""}
package/lib/Header.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { ButtonContent } from './ui-kit/Button';
2
- declare type HeaderMenuItem = ButtonContent;
1
+ import type { LinkContent } from './ui-kit/Link';
2
+ import type { ContentPageContext } from './ContentPageContext';
3
+ declare type HeaderMenuItem = LinkContent;
3
4
  interface TopMenuItem extends HeaderMenuItem {
4
5
  items?: HeaderMenuItem[];
5
6
  }
@@ -8,6 +9,7 @@ export interface HeaderContent {
8
9
  }
9
10
  export interface HeaderProps extends HeaderContent {
10
11
  className?: string;
12
+ context: ContentPageContext;
11
13
  }
12
14
  export declare const Header: (props: import("@redneckz/uni-jsx").PropsWithChildren<HeaderProps, any>, context?: any) => any;
13
15
  export {};
package/lib/Header.js CHANGED
@@ -3,10 +3,27 @@ import { JSX } from '@redneckz/uni-jsx';
3
3
  import { HeaderItem } from './ui-kit/HeaderItem.js';
4
4
  import { Logo } from './ui-kit/Logo.js';
5
5
  import { TopItem } from './ui-kit/TopItem.js';
6
- export const Header = JSX(({ className, topItems }) => {
7
- const { href, pathname } = globalThis.location || {};
8
- const activeTopItem = topItems?.find((_) => href && _.href && href.startsWith(_.href));
9
- const activeSubItem = pathname && activeTopItem?.items?.find(({ href }) => href && pathname.startsWith(href));
10
- return (_jsxs("div", { className: `py-8 px-20 bg-white rounded-bl-3xl rounded-br-3xl ${className || ''}`, children: [_jsxs("div", { className: "flex items-center", children: [_jsx(Logo, { className: "mr-8" }), topItems?.map((_) => (_jsx(TopItem, { active: _ === activeTopItem, target: _ === activeTopItem ? '_self' : '_blank', ..._ }, _.href)))] }), activeTopItem?.items && (_jsx("div", { className: "mt-10", children: activeTopItem.items.map((_) => (_jsx(HeaderItem, { className: "mr-8", active: _ === activeSubItem, ..._ }, _.href))) }))] }));
6
+ import { useLink } from './useLink.js';
7
+ export const Header = JSX(({ className, context, topItems }) => {
8
+ const router = context.useRouter();
9
+ const activeTopItem = topItems?.find(isTopItemActive(router));
10
+ const activeSubItem = activeTopItem?.items?.find(isSubItemActive(router));
11
+ return (_jsxs("div", { className: `py-8 px-20 bg-white rounded-bl-3xl rounded-br-3xl ${className || ''}`, children: [_jsxs("div", { className: "flex items-center", children: [_jsx(Logo, { className: "mr-8" }), topItems?.map((_) => (_jsx(TopItem, { active: _ === activeTopItem, ...useLink(context, _) }, _.href)))] }), activeTopItem?.items && (_jsx("div", { className: "mt-10", children: activeTopItem.items.map((_) => (_jsx(HeaderItem, { className: "mr-8", active: _ === activeSubItem, ...useLink(context, _) }, _.href))) }))] }));
11
12
  });
13
+ const isURL = (href) => href?.includes('//');
14
+ const withoutQuery = (href) => (href || '').replace(/\/?\?.+/, '');
15
+ function isTopItemActive({ href, pathname }) {
16
+ return (item) => {
17
+ const itemHref = withoutQuery(item.href);
18
+ if (isURL(itemHref)) {
19
+ return Boolean(href && href.startsWith(itemHref));
20
+ }
21
+ return Boolean(item.href && pathname.startsWith(itemHref));
22
+ };
23
+ }
24
+ function isSubItemActive({ href, pathname }) {
25
+ return (item) => {
26
+ return withoutQuery(item.href) === (isURL(item.href) ? withoutQuery(href) : pathname);
27
+ };
28
+ }
12
29
  //# sourceMappingURL=Header.js.map
package/lib/Header.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAgB3C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrD,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,MAAM,aAAa,GACjB,QAAQ,IAAI,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,OAAO,CACL,eAAK,SAAS,EAAE,qDAAqD,SAAS,IAAI,EAAE,EAAE,aACpF,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,GAAG,EACxB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,KAAC,OAAO,IAEN,MAAM,EAAE,CAAC,KAAK,aAAa,EAC3B,MAAM,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAC5C,CAAC,IAHA,CAAC,CAAC,IAAI,CAIX,CACH,CAAC,IACE,EACL,aAAa,EAAE,KAAK,IAAI,CACvB,cAAK,SAAS,EAAC,OAAO,YACnB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,UAAU,IAAc,SAAS,EAAC,MAAM,EAAC,MAAM,EAAE,CAAC,KAAK,aAAa,KAAM,CAAC,IAA3D,CAAC,CAAC,IAAI,CAAyD,CACjF,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAc,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAEnC,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,OAAO,CACL,eAAK,SAAS,EAAE,qDAAqD,SAAS,IAAI,EAAE,EAAE,aACpF,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,GAAG,EACxB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,KAAC,OAAO,IAAc,MAAM,EAAE,CAAC,KAAK,aAAa,KAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAA5D,CAAC,CAAC,IAAI,CAA0D,CAC/E,CAAC,IACE,EACL,aAAa,EAAE,KAAK,IAAI,CACvB,cAAK,SAAS,EAAC,OAAO,YACnB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC9B,KAAC,UAAU,IAET,SAAS,EAAC,MAAM,EAChB,MAAM,EAAE,CAAC,KAAK,aAAa,KACvB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAHlB,CAAC,CAAC,IAAI,CAIX,CACH,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEtD,MAAM,YAAY,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAE5E,SAAS,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAU;IACjD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;YACnB,OAAO,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;SACnD;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAU;IACjD,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
+ import type { ContentPageContext } from './ContentPageContext';
1
2
  import { Icons } from './Icons';
2
3
  import { Picture } from './types';
3
- import { ButtonContent } from './ui-kit/Button';
4
+ import type { LinkContent } from './ui-kit/Link';
4
5
  export interface Benefit {
5
6
  label: string;
6
7
  description?: string;
@@ -8,12 +9,14 @@ export interface Benefit {
8
9
  }
9
10
  export interface ProductBlockContent {
10
11
  title?: string;
11
- description?: string | Node;
12
+ description?: string;
12
13
  image?: Picture;
13
14
  benefits?: Benefit[];
14
- button?: ButtonContent;
15
+ items?: string[];
16
+ button?: LinkContent;
15
17
  }
16
18
  export interface ProductBlockProps extends ProductBlockContent {
17
19
  className?: string;
20
+ context: ContentPageContext;
18
21
  }
19
22
  export declare const ProductBlock: (props: import("@redneckz/uni-jsx").PropsWithChildren<ProductBlockProps, any>, context?: any) => any;
@@ -2,10 +2,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
3
  import { Icons } from './Icons.js';
4
4
  import { Img } from './Img.js';
5
+ import { BlockItem } from './ui-kit/BlockItem.js';
5
6
  import { PrimaryButton } from './ui-kit/PrimaryButton.js';
7
+ import { useLink } from './useLink.js';
6
8
  export const ProductBlock = JSX((props) => {
7
- const { className, title, description, benefits, button, image } = props;
8
- return (_jsxs("section", { className: `font-sans bg-white rounded-[40px] h-[470px] flex relative overflow-hidden ${className}`, children: [_jsxs("div", { className: ['flex', 'flex-col', 'p-11', image && 'pr-0'].filter(Boolean).join(' '), children: [title && _jsx("h1", { className: "font-medium text-title2 m-0 mb-4 whitespace-pre-wrap", children: title }), description && (_jsx("div", { className: "font-normal text-base text-second-primary mb-7", children: description })), benefits && _jsx("div", { className: "flex gap-6", children: benefits.map(renderBenefit) }), button && button.text && (_jsx("div", { className: "mt-auto", children: _jsx(PrimaryButton, { ...button }) }))] }), image && _jsx("div", { className: "h-full flex", children: _jsx(Img, { image: image, className: "flex" }) })] }));
9
+ const { className, context, title, description, benefits, button, image, items } = props;
10
+ return (_jsxs("section", { className: `font-sans bg-white rounded-[40px] h-[470px] flex justify-between relative overflow-hidden ${className}`, children: [_jsxs("div", { className: ['flex', 'flex-col', 'p-11', image && 'pr-0'].filter(Boolean).join(' '), children: [title && _jsx("h1", { className: "font-medium text-title2 m-0 mb-4 whitespace-pre-wrap", children: title }), description && (_jsx("div", { className: "font-normal text-base text-second-primary mb-7", children: description })), benefits && benefits.length && (_jsx("div", { className: "flex gap-6", children: benefits.map(renderBenefit) })), items && items.length && (_jsx("section", { className: "flex flex-col", role: "list", children: items?.map((_) => (_jsx(BlockItem, { className: "mt-6", text: _ }, _))) })), button && button.text && (_jsx("div", { className: "mt-auto", children: _jsx(PrimaryButton, { ...useLink(context, button) }) }))] }), image && _jsx("div", { className: "h-full flex", children: _jsx(Img, { image: image, className: "flex" }) })] }));
9
11
  });
10
12
  function renderBenefit(benefit, index) {
11
13
  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-second-light rounded-full p-[10px] box-border", children: Icons[benefit.icon] })), _jsxs("div", { className: "flex gap-1 flex-col", children: [_jsx("h4", { className: "font-medium text-xl m-0", children: benefit.label }), benefit.description && (_jsx("div", { className: "font-normal text-sm text-second-primary", children: benefit.description }))] })] }, index));
@@ -1 +1 @@
1
- {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../src/ProductBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAoBvD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAoB,CAAC,KAAK,EAAE,EAAE;IAC3D,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACzE,OAAO,CACL,mBACE,SAAS,EAAE,6EAA6E,SAAS,EAAE,aAEnG,eAAK,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aACpF,KAAK,IAAI,aAAI,SAAS,EAAC,sDAAsD,YAAE,KAAK,GAAM,EAC1F,WAAW,IAAI,CACd,cAAK,SAAS,EAAC,gDAAgD,YAAE,WAAW,GAAO,CACpF,EACA,QAAQ,IAAI,cAAK,SAAS,EAAC,YAAY,YAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,GAAO,EAC3E,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,CACxB,cAAK,SAAS,EAAC,SAAS,YACtB,KAAC,aAAa,OAAK,MAAM,GAAI,GACzB,CACP,IACG,EACL,KAAK,IAAI,cAAK,SAAS,EAAC,aAAa,YAAE,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,GAAG,GAAO,IAC7E,CACX,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK;IACnC,OAAO,CACL,eAAiB,SAAS,EAAC,yBAAyB,aACjD,OAAO,CAAC,IAAI,IAAI,CACf,cAAK,SAAS,EAAC,8EAA8E,YAC1F,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAChB,CACP,EACD,eAAK,SAAS,EAAC,qBAAqB,aAClC,aAAI,SAAS,EAAC,yBAAyB,YAAE,OAAO,CAAC,KAAK,GAAM,EAC3D,OAAO,CAAC,WAAW,IAAI,CACtB,cAAK,SAAS,EAAC,yCAAyC,YAAE,OAAO,CAAC,WAAW,GAAO,CACrF,IACG,KAXE,KAAK,CAYT,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ProductBlock.js","sourceRoot":"","sources":["../src/ProductBlock.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,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAoB,CAAC,KAAK,EAAE,EAAE;IAC3D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEzF,OAAO,CACL,mBACE,SAAS,EAAE,6FAA6F,SAAS,EAAE,aAEnH,eAAK,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aACpF,KAAK,IAAI,aAAI,SAAS,EAAC,sDAAsD,YAAE,KAAK,GAAM,EAC1F,WAAW,IAAI,CACd,cAAK,SAAS,EAAC,gDAAgD,YAAE,WAAW,GAAO,CACpF,EACA,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAC9B,cAAK,SAAS,EAAC,YAAY,YAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,GAAO,CAChE,EACA,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CACxB,kBAAS,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,YAC3C,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,KAAC,SAAS,IAAS,SAAS,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,IAA3B,CAAC,CAA8B,CAChD,CAAC,GACM,CACX,EACA,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,CACxB,cAAK,SAAS,EAAC,SAAS,YACtB,KAAC,aAAa,OAAK,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,GAAI,GAC3C,CACP,IACG,EACL,KAAK,IAAI,cAAK,SAAS,EAAC,aAAa,YAAE,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,GAAG,GAAO,IAC7E,CACX,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,OAAO,EAAE,KAAK;IACnC,OAAO,CACL,eAAiB,SAAS,EAAC,yBAAyB,aACjD,OAAO,CAAC,IAAI,IAAI,CACf,cAAK,SAAS,EAAC,8EAA8E,YAC1F,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAChB,CACP,EACD,eAAK,SAAS,EAAC,qBAAqB,aAClC,aAAI,SAAS,EAAC,yBAAyB,YAAE,OAAO,CAAC,KAAK,GAAM,EAC3D,OAAO,CAAC,WAAW,IAAI,CACtB,cAAK,SAAS,EAAC,yCAAyC,YAAE,OAAO,CAAC,WAAW,GAAO,CACrF,IACG,KAXE,KAAK,CAYT,CACP,CAAC;AACJ,CAAC"}
@@ -1,11 +1,13 @@
1
- import type { ButtonContent } from './ui-kit/Button';
1
+ import type { ContentPageContext } from './ContentPageContext';
2
+ import type { LinkContent } from './ui-kit/Link';
2
3
  export interface ProductColumnBlockContent {
3
4
  title?: string;
4
5
  items?: string[];
5
- button?: ButtonContent;
6
+ button?: LinkContent;
6
7
  promo?: boolean;
7
8
  }
8
9
  export interface ProductColumnBlockProps extends ProductColumnBlockContent {
9
10
  className?: string;
11
+ context: ContentPageContext;
10
12
  }
11
13
  export declare const ProductColumnBlock: (props: import("@redneckz/uni-jsx").PropsWithChildren<ProductColumnBlockProps, any>, context?: any) => any;
@@ -1,8 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@redneckz/uni-jsx/jsx-runtime";
2
2
  import { JSX } from '@redneckz/uni-jsx';
3
- import { PrimaryButton } from './ui-kit/PrimaryButton.js';
4
3
  import { BlockItem } from './ui-kit/BlockItem.js';
5
- export const ProductColumnBlock = JSX(({ className, title, items, button, promo }) => {
6
- return (_jsxs("div", { className: `relative p-8 bg-white text-black font-sans rounded-[40px] ${className || ''}`, children: [_jsx("p", { className: "text-title font-medium m-0", children: title }), _jsx("section", { className: "flex flex-col", role: "list", children: items?.map((_) => (_jsx(BlockItem, { className: "mt-6", text: _ }, _))) }), button && button.text && _jsx(PrimaryButton, { className: "mt-12", ...button }), promo && (_jsx("div", { className: "absolute right-0 bottom-0 bg-promo font-normal px-12 py-3 text-xl rounded-tl-[74px] rounded-br-[40px]", children: "\u0410\u043A\u0446\u0438\u044F" }))] }));
4
+ import { PrimaryButton } from './ui-kit/PrimaryButton.js';
5
+ import { useLink } from './useLink.js';
6
+ export const ProductColumnBlock = JSX(({ className, context, title, items, button, promo }) => {
7
+ return (_jsxs("div", { className: `relative p-8 bg-white text-black font-sans rounded-[40px] ${className || ''}`, children: [_jsx("p", { className: "text-title font-medium m-0", children: title }), items && items.length && (_jsx("section", { className: "flex flex-col", role: "list", children: items?.map((_) => (_jsx(BlockItem, { className: "mt-6", text: _ }, _))) })), button && button.text && _jsx(PrimaryButton, { className: "mt-12", ...useLink(context, button) }), promo && (_jsx("div", { className: "absolute right-0 bottom-0 bg-promo font-normal px-12 py-3 text-xl rounded-tl-[74px] rounded-br-[40px]", children: "\u0410\u043A\u0446\u0438\u044F" }))] }));
7
8
  });
8
9
  //# sourceMappingURL=ProductColumnBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProductColumnBlock.js","sourceRoot":"","sources":["../src/ProductColumnBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAc/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CACnC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7C,OAAO,CACL,eAAK,SAAS,EAAE,6DAA6D,SAAS,IAAI,EAAE,EAAE,aAC5F,YAAG,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAK,EACrD,kBAAS,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,YAC3C,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,KAAC,SAAS,IAAS,SAAS,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,IAA3B,CAAC,CAA8B,CAChD,CAAC,GACM,EACT,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAC,aAAa,IAAC,SAAS,EAAC,OAAO,KAAK,MAAM,GAAI,EACxE,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,uGAAuG,+CAEhH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"ProductColumnBlock.js","sourceRoot":"","sources":["../src/ProductColumnBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CACnC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACtD,OAAO,CACL,eACE,SAAS,EAAE,6DAA6D,SAAS,IAAI,EAAE,EAAE,aAEzF,YAAG,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAK,EACpD,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CACxB,kBAAS,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,MAAM,YAC3C,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,KAAC,SAAS,IAAS,SAAS,EAAC,MAAM,EAAC,IAAI,EAAE,CAAC,IAA3B,CAAC,CAA8B,CAChD,CAAC,GACM,CACX,EACA,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAC,aAAa,IAAC,SAAS,EAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,GAAI,EAC1F,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,uGAAuG,+CAEhH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
package/lib/common.css CHANGED
@@ -1 +1 @@
1
- .absolute{position:absolute}.relative{position:relative}.top-4{top:1rem}.right-4{right:1rem}.right-0{right:0}.bottom-0{bottom:0}.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-3{margin-left:.75rem;margin-right:.75rem}.mr-8{margin-right:2rem}.mt-10{margin-top:2.5rem}.mb-4{margin-bottom:1rem}.mb-7{margin-bottom:1.75rem}.mt-auto{margin-top:auto}.mt-6{margin-top:1.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.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-\[470px\]{height:470px}.h-full{height:100%}.h-11{height:2.75rem}.h-\[2px\]{height:2px}.min-h-11{min-height:2.75rem}.w-full{width:100%}.w-8{width:2rem}.w-\[1280px\]{width:1280px}.w-11{width:2.75rem}.w-10{width:2.5rem}.min-w-11{min-width:2.75rem}.min-w-\[7px\]{min-width:7px}.cursor-col-resize{cursor:col-resize}.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-center{align-items:center}.items-stretch{align-items:stretch}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.gap-1{gap:.25rem}.overflow-hidden{overflow:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-\[40px\]{border-radius:40px}.rounded-3xl{border-radius:1.5rem}.rounded-bl-3xl{border-bottom-left-radius:1.5rem}.rounded-br-3xl{border-bottom-right-radius:1.5rem}.rounded-tl-\[74px\]{border-top-left-radius:74px}.rounded-br-\[40px\]{border-bottom-right-radius:40px}.border{border-width:1px}.border-0{border-width:0}.border-b-2{border-bottom-width:2px}.border-solid{border-style:solid}.border-transparent{border-color:transparent}.border-brand{--tw-border-opacity:1;border-color:rgb(66 171 68/var(--tw-border-opacity))}.border-b-brand{--tw-border-opacity:1;border-bottom-color:rgb(66 171 68/var(--tw-border-opacity))}.bg-second-light{--tw-bg-opacity:1;background-color:rgb(245 247 249/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-promo,.bg-white{--tw-bg-opacity:1}.bg-promo{background-color:rgb(247 248 197/var(--tw-bg-opacity))}.bg-brand{--tw-bg-opacity:1;background-color:rgb(66 171 68/var(--tw-bg-opacity))}.p-20{padding:5rem}.p-11{padding:2.75rem}.p-\[10px\]{padding:10px}.p-8{padding:2rem}.py-8{padding-bottom:2rem;padding-top:2rem}.px-20{padding-left:5rem;padding-right:5rem}.px-12{padding-left:3rem;padding-right:3rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.pt-0{padding-top:0}.pr-0{padding-right:0}.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-title2{font-size:2.5rem;line-height:3rem}.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}.text-title{font-size:2rem;line-height:2.5rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-bold{font-weight:700}.leading-snug{line-height:1.375}.text-second-primary{--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))}.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-brand{color:rgb(66 171 68/var(--tw-text-opacity))}.text-brand,.text-white{--tw-text-opacity:1}.text-white{color:rgb(255 255 255/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)}.hover\:text-brand:hover{--tw-text-opacity:1;color:rgb(66 171 68/var(--tw-text-opacity))}
1
+ .absolute{position:absolute}.relative{position:relative}.top-4{top:1rem}.right-4{right:1rem}.right-0{right:0}.bottom-0{bottom:0}.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-3{margin-left:.75rem;margin-right:.75rem}.mr-8{margin-right:2rem}.mt-10{margin-top:2.5rem}.mb-4{margin-bottom:1rem}.mb-7{margin-bottom:1.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.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-\[470px\]{height:470px}.h-full{height:100%}.h-11{height:2.75rem}.h-\[2px\]{height:2px}.min-h-11{min-height:2.75rem}.w-full{width:100%}.w-8{width:2rem}.w-11{width:2.75rem}.w-10{width:2.5rem}.min-w-11{min-width:2.75rem}.min-w-\[7px\]{min-width:7px}.cursor-col-resize{cursor:col-resize}.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-center{align-items:center}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.gap-1{gap:.25rem}.overflow-hidden{overflow:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-full{border-radius:9999px}.rounded-\[40px\]{border-radius:40px}.rounded-3xl{border-radius:1.5rem}.rounded-bl-3xl{border-bottom-left-radius:1.5rem}.rounded-br-3xl{border-bottom-right-radius:1.5rem}.rounded-tl-\[74px\]{border-top-left-radius:74px}.rounded-br-\[40px\]{border-bottom-right-radius:40px}.border{border-width:1px}.border-0{border-width:0}.border-b-2{border-bottom-width:2px}.border-solid{border-style:solid}.border-transparent{border-color:transparent}.border-brand{--tw-border-opacity:1;border-color:rgb(66 171 68/var(--tw-border-opacity))}.border-b-brand{--tw-border-opacity:1;border-bottom-color:rgb(66 171 68/var(--tw-border-opacity))}.bg-second-light{--tw-bg-opacity:1;background-color:rgb(245 247 249/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-promo,.bg-white{--tw-bg-opacity:1}.bg-promo{background-color:rgb(247 248 197/var(--tw-bg-opacity))}.bg-brand{--tw-bg-opacity:1;background-color:rgb(66 171 68/var(--tw-bg-opacity))}.p-20{padding:5rem}.p-11{padding:2.75rem}.p-\[10px\]{padding:10px}.p-8{padding:2rem}.py-8{padding-bottom:2rem;padding-top:2rem}.px-20{padding-left:5rem;padding-right:5rem}.px-12{padding-left:3rem;padding-right:3rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.pt-0{padding-top:0}.pr-0{padding-right:0}.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-title2{font-size:2.5rem;line-height:3rem}.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}.text-title{font-size:2rem;line-height:2.5rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-bold{font-weight:700}.leading-snug{line-height:1.375}.text-second-primary{--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))}.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-brand{color:rgb(66 171 68/var(--tw-text-opacity))}.text-brand,.text-white{--tw-text-opacity:1}.text-white{color:rgb(255 255 255/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)}.hover\:text-brand:hover{--tw-text-opacity:1;color:rgb(66 171 68/var(--tw-text-opacity))}
@@ -1,9 +1,5 @@
1
- export interface ButtonContent {
2
- text?: string;
3
- href?: string;
4
- target?: '_blank' | '_self' | '_parent' | '_top' | string;
5
- }
6
- export interface ButtonProps extends ButtonContent {
1
+ import type { LinkContent } from './Link';
2
+ export interface ButtonProps extends LinkContent {
7
3
  className?: string;
8
- onClick?: () => any;
4
+ onClick?: (ev: MouseEvent) => any;
9
5
  }
@@ -0,0 +1,5 @@
1
+ export interface LinkContent {
2
+ text?: string;
3
+ href?: string;
4
+ target?: '_blank' | '_self' | '_parent' | '_top' | string;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/ui-kit/Link.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
- import type { ButtonContent, ButtonProps } from './Button';
2
- export declare type PrimaryButtonContent = ButtonContent;
1
+ import type { LinkContent } from './Link';
2
+ import type { ButtonProps } from './Button';
3
+ export declare type PrimaryButtonContent = LinkContent;
3
4
  export declare type PrimaryButtonProps = ButtonProps;
4
5
  export declare const PrimaryButton: (props: import("@redneckz/uni-jsx").PropsWithChildren<ButtonProps, any>, context?: any) => any;
@@ -1 +1 @@
1
- {"version":3,"file":"PrimaryButton.js","sourceRoot":"","sources":["../../src/ui-kit/PrimaryButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAMxC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAC9B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvD,OAAO,CACL,YACE,SAAS,EAAE,oFACT,SAAS,IAAI,EACf,EAAE,EACF,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,YAEhB,eAAM,SAAS,EAAC,gCAAgC,YAAE,IAAI,IAAI,QAAQ,GAAQ,GACxE,CACL,CAAC;AACJ,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"PrimaryButton.js","sourceRoot":"","sources":["../../src/ui-kit/PrimaryButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAOxC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAC9B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvD,OAAO,CACL,YACE,SAAS,EAAE,oFACT,SAAS,IAAI,EACf,EAAE,EACF,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,YAEhB,eAAM,SAAS,EAAC,gCAAgC,YAAE,IAAI,IAAI,QAAQ,GAAQ,GACxE,CACL,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -1,9 +1,9 @@
1
- import type { ButtonContent } from './Button';
2
- export interface TopItemContent extends ButtonContent {
1
+ import type { LinkContent } from './Link';
2
+ export interface TopItemContent extends LinkContent {
3
3
  active?: boolean;
4
4
  }
5
5
  export interface TopItemProps extends TopItemContent {
6
6
  className?: string;
7
- onClick?: () => any;
7
+ onClick?: (ev: MouseEvent) => any;
8
8
  }
9
9
  export declare const TopItem: (props: import("@redneckz/uni-jsx").PropsWithChildren<TopItemProps, any>, context?: any) => any;
@@ -0,0 +1,8 @@
1
+ import { ContentPageContext } from './ContentPageContext';
2
+ import type { LinkContent } from './ui-kit/Link';
3
+ export declare function useLink({ useRouter, handlerDecorator }: ContentPageContext, link: Partial<LinkContent>): {
4
+ onClick: (ev: MouseEvent) => void;
5
+ text?: string | undefined;
6
+ href?: string | undefined;
7
+ target?: string | undefined;
8
+ };
package/lib/useLink.js ADDED
@@ -0,0 +1,17 @@
1
+ const defaultHandlerDecorator = (_) => _;
2
+ export function useLink({ useRouter, handlerDecorator = defaultHandlerDecorator }, link) {
3
+ const router = useRouter();
4
+ const { href, target } = link;
5
+ return {
6
+ ...link,
7
+ onClick: handlerDecorator((ev) => {
8
+ const isLocalHref = href && !href.includes('//');
9
+ const isLocalTarget = !target || target === '_self';
10
+ if (isLocalHref && isLocalTarget) {
11
+ ev.preventDefault();
12
+ router.push(href);
13
+ }
14
+ }),
15
+ };
16
+ }
17
+ //# sourceMappingURL=useLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLink.js","sourceRoot":"","sources":["../src/useLink.ts"],"names":[],"mappings":"AAGA,MAAM,uBAAuB,GAAoC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1E,MAAM,UAAU,OAAO,CACrB,EAAE,SAAS,EAAE,gBAAgB,GAAG,uBAAuB,EAAsB,EAC7E,IAA0B;IAE1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC9B,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAc,EAAE,EAAE;YAC3C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,MAAM,KAAK,OAAO,CAAC;YACpD,IAAI,WAAW,IAAI,aAAa,EAAE;gBAChC,EAAE,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;QACH,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.2.20",
3
+ "version": "0.2.21",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",