@iit/precision-ui 0.8.15 → 0.8.17
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/components/GridIterator.d.ts.map +1 -1
- package/dist/components/SafeHtml.d.ts +2 -1
- package/dist/components/SafeHtml.d.ts.map +1 -1
- package/dist/components/cards/Connect.d.ts +1 -1
- package/dist/components/cards/Connect.d.ts.map +1 -1
- package/dist/components/cards/Doc.d.ts +2 -2
- package/dist/components/cards/Doc.d.ts.map +1 -1
- package/dist/components/cards/Product.d.ts +1 -0
- package/dist/components/cards/Product.d.ts.map +1 -1
- package/dist/index.es13.js +11 -11
- package/dist/index.es13.js.map +1 -1
- package/dist/index.es19.js +28 -27
- package/dist/index.es19.js.map +1 -1
- package/dist/index.es26.js.map +1 -1
- package/dist/index.es27.js +6 -6
- package/dist/index.es27.js.map +1 -1
- package/dist/index.es33.js +15 -13
- package/dist/index.es33.js.map +1 -1
- package/dist/index.es38.js +16 -12
- package/dist/index.es38.js.map +1 -1
- package/dist/index.es39.js +7 -7
- package/dist/index.es39.js.map +1 -1
- package/dist/index.es40.js +1 -0
- package/dist/index.es40.js.map +1 -1
- package/dist/sections/Hero.d.ts +1 -1
- package/dist/sections/Hero.d.ts.map +1 -1
- package/dist/styles.css +14 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridIterator.d.ts","sourceRoot":"","sources":["../../src/components/GridIterator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,UAAU,iBAAiB,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;CAC9B;AAED,QAAA,MAAM,YAAY,kGAQf,kBAAkB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"GridIterator.d.ts","sourceRoot":"","sources":["../../src/components/GridIterator.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,UAAU,iBAAiB,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;CAC9B;AAED,QAAA,MAAM,YAAY,kGAQf,kBAAkB,CAAC,CAAC,gDAmDtB,CAAA;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
declare const SafeHtmlRenderer: ({ html, className, }: {
|
|
1
|
+
declare const SafeHtmlRenderer: ({ html, className, withoutContentClass, }: {
|
|
2
2
|
html: string;
|
|
3
3
|
className?: string;
|
|
4
|
+
withoutContentClass?: boolean;
|
|
4
5
|
}) => import("react/jsx-dev-runtime").JSX.Element;
|
|
5
6
|
export default SafeHtmlRenderer;
|
|
6
7
|
//# sourceMappingURL=SafeHtml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SafeHtml.d.ts","sourceRoot":"","sources":["../../src/components/SafeHtml.tsx"],"names":[],"mappings":"AAkKA,QAAA,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"SafeHtml.d.ts","sourceRoot":"","sources":["../../src/components/SafeHtml.tsx"],"names":[],"mappings":"AAkKA,QAAA,MAAM,gBAAgB,8CAInB;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,gDAgBA,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connect.d.ts","sourceRoot":"","sources":["../../../src/components/cards/Connect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"Connect.d.ts","sourceRoot":"","sources":["../../../src/components/cards/Connect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAA;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACZ,oBAAoB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA8F3C,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Doc.d.ts","sourceRoot":"","sources":["../../../src/components/cards/Doc.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"Doc.d.ts","sourceRoot":"","sources":["../../../src/components/cards/Doc.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqBnC,CAAA;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Product.d.ts","sourceRoot":"","sources":["../../../src/components/cards/Product.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oCAAoC,EACrC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAO,MAAM,0BAA0B,CAAA;AAI5D,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,mBAAmB;;;8EAoBxB,CAAA;AAcD,MAAM,WAAW,sBACf,SAAQ,oCAAoC;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACZ,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAA;CACnC;AAED,MAAM,WAAW,qCACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"Product.d.ts","sourceRoot":"","sources":["../../../src/components/cards/Product.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oCAAoC,EACrC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAO,MAAM,0BAA0B,CAAA;AAI5D,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,mBAAmB;;;8EAoBxB,CAAA;AAcD,MAAM,WAAW,sBACf,SAAQ,oCAAoC;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACZ,OAAO,CAAC,EAAE,sBAAsB,EAAE,CAAA;CACnC;AAED,MAAM,WAAW,qCACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAA;CACd;AAED,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAwF3C,CAAA;AAED,eAAe,WAAW,CAAA"}
|
package/dist/index.es13.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import e, { useState as v, useRef as b, useEffect as
|
|
1
|
+
import e, { useState as v, useRef as b, useEffect as x } from "react";
|
|
2
2
|
import { Button as o } from "./index.es2.js";
|
|
3
3
|
import { Close16X16 as h } from "@iit/precision-ui-icons";
|
|
4
|
-
import { Input as
|
|
5
|
-
import { SearchIcon as
|
|
6
|
-
const
|
|
4
|
+
import { Input as g } from "./index.es11.js";
|
|
5
|
+
import { SearchIcon as d } from "lucide-react";
|
|
6
|
+
const w = ({
|
|
7
7
|
id: s,
|
|
8
8
|
placeholder: u,
|
|
9
9
|
className: c,
|
|
@@ -13,7 +13,7 @@ const x = ({
|
|
|
13
13
|
...p
|
|
14
14
|
}) => {
|
|
15
15
|
const [a, n] = v(l), r = b(null);
|
|
16
|
-
|
|
16
|
+
x(() => {
|
|
17
17
|
n(l);
|
|
18
18
|
}, [l]);
|
|
19
19
|
const i = (f) => {
|
|
@@ -23,7 +23,7 @@ const x = ({
|
|
|
23
23
|
target: { value: "" }
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
|
-
return y === "white" ? /* @__PURE__ */ e.createElement("div", { className: "relative w-full max-w-
|
|
26
|
+
return y === "white" ? /* @__PURE__ */ e.createElement("div", { className: "relative w-full 2xl:max-w-[456px]" }, /* @__PURE__ */ e.createElement(
|
|
27
27
|
o,
|
|
28
28
|
{
|
|
29
29
|
type: "button",
|
|
@@ -31,9 +31,9 @@ const x = ({
|
|
|
31
31
|
size: "icon",
|
|
32
32
|
className: "absolute right-2 top-1/2 -translate-y-1/2 h-10 w-10 text-muted-foreground bg-navy-opacity-8 p-3 rounded-full"
|
|
33
33
|
},
|
|
34
|
-
/* @__PURE__ */ e.createElement(
|
|
34
|
+
/* @__PURE__ */ e.createElement(d, { className: "" })
|
|
35
35
|
), /* @__PURE__ */ e.createElement(
|
|
36
|
-
|
|
36
|
+
g,
|
|
37
37
|
{
|
|
38
38
|
ref: r,
|
|
39
39
|
id: s,
|
|
@@ -55,8 +55,8 @@ const x = ({
|
|
|
55
55
|
},
|
|
56
56
|
/* @__PURE__ */ e.createElement(h, { className: "h-[10px] w-[10px] left-[5px] top-0 relative group-hover:text-whitish" }),
|
|
57
57
|
/* @__PURE__ */ e.createElement("span", { className: "sr-only" }, "Очистить")
|
|
58
|
-
)) : /* @__PURE__ */ e.createElement("div", { className: "relative w-full max-w-md" }, /* @__PURE__ */ e.createElement(
|
|
59
|
-
|
|
58
|
+
)) : /* @__PURE__ */ e.createElement("div", { className: "relative w-full max-w-md" }, /* @__PURE__ */ e.createElement(d, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground" }), /* @__PURE__ */ e.createElement(
|
|
59
|
+
g,
|
|
60
60
|
{
|
|
61
61
|
ref: r,
|
|
62
62
|
id: s,
|
|
@@ -79,7 +79,7 @@ const x = ({
|
|
|
79
79
|
/* @__PURE__ */ e.createElement(h, { className: "h-[10px] w-[10px] left-[5px] top-0 relative group-hover:text-whitish" }),
|
|
80
80
|
/* @__PURE__ */ e.createElement("span", { className: "sr-only" }, "Очистить")
|
|
81
81
|
));
|
|
82
|
-
}, S =
|
|
82
|
+
}, S = w;
|
|
83
83
|
export {
|
|
84
84
|
S as default
|
|
85
85
|
};
|
package/dist/index.es13.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es13.js","sources":["../src/components/ui/input/SearchInput.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { Close16X16 } from '@iit/precision-ui-icons'\r\nimport { Input } from '@/components/ui/input'\r\nimport { SearchIcon } from 'lucide-react'\r\n\r\ninterface SearchInputProps {\r\n id?: string\r\n placeholder?: string\r\n className?: string\r\n value?: string\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\r\n variant?: 'default' | 'white'\r\n}\r\n\r\nconst SearchInput: React.FC<SearchInputProps> = ({\r\n id,\r\n placeholder,\r\n className,\r\n value = '',\r\n onChange,\r\n variant = 'default',\r\n ...props\r\n}) => {\r\n const [inputValue, setInputValue] = useState(value)\r\n const inputRef = useRef<HTMLInputElement>(null)\r\n\r\n useEffect(() => {\r\n setInputValue(value)\r\n }, [value])\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setInputValue(event.target.value)\r\n if (onChange) {\r\n onChange(event)\r\n }\r\n }\r\n\r\n const handleClearClick = () => {\r\n setInputValue('')\r\n if (inputRef.current) {\r\n inputRef.current.focus()\r\n }\r\n if (onChange) {\r\n onChange({\r\n target: { value: '' },\r\n } as React.ChangeEvent<HTMLInputElement>)\r\n }\r\n }\r\n\r\n if (variant === 'white') {\r\n return (\r\n <div className=\"relative w-full max-w-
|
|
1
|
+
{"version":3,"file":"index.es13.js","sources":["../src/components/ui/input/SearchInput.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { Close16X16 } from '@iit/precision-ui-icons'\r\nimport { Input } from '@/components/ui/input'\r\nimport { SearchIcon } from 'lucide-react'\r\n\r\ninterface SearchInputProps {\r\n id?: string\r\n placeholder?: string\r\n className?: string\r\n value?: string\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\r\n variant?: 'default' | 'white'\r\n}\r\n\r\nconst SearchInput: React.FC<SearchInputProps> = ({\r\n id,\r\n placeholder,\r\n className,\r\n value = '',\r\n onChange,\r\n variant = 'default',\r\n ...props\r\n}) => {\r\n const [inputValue, setInputValue] = useState(value)\r\n const inputRef = useRef<HTMLInputElement>(null)\r\n\r\n useEffect(() => {\r\n setInputValue(value)\r\n }, [value])\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setInputValue(event.target.value)\r\n if (onChange) {\r\n onChange(event)\r\n }\r\n }\r\n\r\n const handleClearClick = () => {\r\n setInputValue('')\r\n if (inputRef.current) {\r\n inputRef.current.focus()\r\n }\r\n if (onChange) {\r\n onChange({\r\n target: { value: '' },\r\n } as React.ChangeEvent<HTMLInputElement>)\r\n }\r\n }\r\n\r\n if (variant === 'white') {\r\n return (\r\n <div className=\"relative w-full 2xl:max-w-[456px]\">\r\n {/* TODO: replace with icon from icon lib */}\r\n {/* <div className=\"bg-navy-opacity-16 p-1 rounded-full\">\r\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground\" />\r\n </div> */}\r\n\r\n {/* <SearchIcon className=\"absolute right-3 top-1/2 -translate-y-1/2 h-10 w-10 text-muted-foreground bg-navy-opacity-8 p-3 rounded-full\" /> */}\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute right-2 top-1/2 -translate-y-1/2 h-10 w-10 text-muted-foreground bg-navy-opacity-8 p-3 rounded-full\"\r\n >\r\n <SearchIcon className=\"\" />\r\n </Button>\r\n <Input\r\n ref={inputRef}\r\n id={id}\r\n placeholder={placeholder}\r\n className={`w-full pl-4 pr-16 ${className} bg-whitish rounded-full border-b-transparent h-14`}\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n {...props}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute right-14 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground bg-navy-opacity-8 p-0 hover:bg-navy group\"\r\n onClick={handleClearClick}\r\n style={{ display: inputValue ? 'block' : 'none' }}\r\n >\r\n {/* <XIcon className=\"h-4 w-4 left-[2px] top-0 relative group-hover:text-whitish\" /> */}\r\n <Close16X16 className=\"h-[10px] w-[10px] left-[5px] top-0 relative group-hover:text-whitish\" />\r\n <span className=\"sr-only\">Очистить</span>\r\n </Button>\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div className=\"relative w-full max-w-md\">\r\n {/* TODO: replace with icon from icon lib */}\r\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground\" />\r\n <Input\r\n ref={inputRef}\r\n id={id}\r\n placeholder={placeholder}\r\n className={`w-full pl-10 pr-10 ${className}`}\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n {...props}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground bg-navy-opacity-8 p-0 hover:bg-navy group\"\r\n onClick={handleClearClick}\r\n style={{ display: inputValue ? 'block' : 'none' }}\r\n >\r\n {/* <XIcon className=\"h-4 w-4 left-[2px] top-0 relative group-hover:text-whitish\" /> */}\r\n <Close16X16 className=\"h-[10px] w-[10px] left-[5px] top-0 relative group-hover:text-whitish\" />\r\n <span className=\"sr-only\">Очистить</span>\r\n </Button>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SearchInput\r\n"],"names":["SearchInput","id","placeholder","className","value","onChange","variant","props","inputValue","setInputValue","useState","inputRef","useRef","useEffect","handleInputChange","event","handleClearClick","React","Button","SearchIcon","Input","Close16X16","SearchInput$1"],"mappings":";;;;;AAgBA,MAAMA,IAA0C,CAAC;AAAA,EAC/C,IAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,GAAGC;AACL,MAAM;AACJ,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAASN,CAAK,GAC5CO,IAAWC,EAAyB,IAAI;AAE9C,EAAAC,EAAU,MAAM;AACd,IAAAJ,EAAcL,CAAK;AAAA,EAAA,GAClB,CAACA,CAAK,CAAC;AAEJ,QAAAU,IAAoB,CAACC,MAA+C;AAC1D,IAAAN,EAAAM,EAAM,OAAO,KAAK,GAC5BV,KACFA,EAASU,CAAK;AAAA,EAChB,GAGIC,IAAmB,MAAM;AAC7B,IAAAP,EAAc,EAAE,GACZE,EAAS,WACXA,EAAS,QAAQ,SAEfN,KACOA,EAAA;AAAA,MACP,QAAQ,EAAE,OAAO,GAAG;AAAA,IAAA,CACkB;AAAA,EAC1C;AAGF,SAAIC,MAAY,UAEZW,gBAAAA,EAAA,cAAC,OAAI,EAAA,WAAU,oCAOb,GAAAA,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAU;AAAA,IAAA;AAAA,IAEVD,gBAAAA,EAAA,cAACE,GAAW,EAAA,WAAU,GAAG,CAAA;AAAA,EAE3B,GAAAF,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,KAAKT;AAAA,MACL,IAAAV;AAAA,MACA,aAAAC;AAAA,MACA,WAAW,qBAAqBC,CAAS;AAAA,MACzC,OAAOK;AAAA,MACP,UAAUM;AAAA,MACT,GAAGP;AAAA,IAAA;AAAA,EAEN,GAAAU,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAASF;AAAA,MACT,OAAO,EAAE,SAASR,IAAa,UAAU,OAAO;AAAA,IAAA;AAAA,IAGhDS,gBAAAA,EAAA,cAACI,GAAW,EAAA,WAAU,uEAAuE,CAAA;AAAA,IAC5FJ,gBAAAA,EAAA,cAAA,QAAA,EAAK,WAAU,UAAA,GAAU,UAAQ;AAAA,EAAA,CAEtC,IAKFA,gBAAAA,EAAA,cAAC,SAAI,WAAU,2BAAA,mCAEZE,GAAW,EAAA,WAAU,0EAAyE,GAC/FF,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,KAAKT;AAAA,MACL,IAAAV;AAAA,MACA,aAAAC;AAAA,MACA,WAAW,sBAAsBC,CAAS;AAAA,MAC1C,OAAOK;AAAA,MACP,UAAUM;AAAA,MACT,GAAGP;AAAA,IAAA;AAAA,EAEN,GAAAU,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAASF;AAAA,MACT,OAAO,EAAE,SAASR,IAAa,UAAU,OAAO;AAAA,IAAA;AAAA,IAGhDS,gBAAAA,EAAA,cAACI,GAAW,EAAA,WAAU,uEAAuE,CAAA;AAAA,IAC5FJ,gBAAAA,EAAA,cAAA,QAAA,EAAK,WAAU,UAAA,GAAU,UAAQ;AAAA,EAAA,CAEtC;AAEJ,GAEAK,IAAetB;"}
|
package/dist/index.es19.js
CHANGED
|
@@ -1,72 +1,73 @@
|
|
|
1
1
|
import u from "react";
|
|
2
2
|
const h = (t) => {
|
|
3
|
-
const a = /* @__PURE__ */ new Set(["br", "img", "input", "hr", "meta", "link"]),
|
|
3
|
+
const a = /* @__PURE__ */ new Set(["br", "img", "input", "hr", "meta", "link"]), c = /<\/?([a-z]+)(\s[^>]*)?>/gi, o = [];
|
|
4
4
|
let l;
|
|
5
|
-
for (; (l =
|
|
5
|
+
for (; (l = c.exec(t)) !== null; ) {
|
|
6
6
|
const s = l[0], e = l[1].toLowerCase();
|
|
7
7
|
if (s === "</br>")
|
|
8
8
|
return !1;
|
|
9
9
|
if (s.startsWith("</")) {
|
|
10
|
-
if (a.has(e) ||
|
|
10
|
+
if (a.has(e) || o.length === 0 || o.pop() !== e)
|
|
11
11
|
return !1;
|
|
12
12
|
} else
|
|
13
|
-
!a.has(e) && !s.endsWith("/>") &&
|
|
13
|
+
!a.has(e) && !s.endsWith("/>") && o.push(e);
|
|
14
14
|
}
|
|
15
|
-
return
|
|
15
|
+
return o.length === 0;
|
|
16
16
|
}, m = (t) => {
|
|
17
|
-
const a = /<[a-z]+\s+([^>]+)>/gi,
|
|
18
|
-
for (const [s, e] of
|
|
19
|
-
const
|
|
20
|
-
for (const n of
|
|
17
|
+
const a = /<[a-z]+\s+([^>]+)>/gi, c = t.matchAll(a);
|
|
18
|
+
for (const [s, e] of c) {
|
|
19
|
+
const r = e.match(/\w+\s*=\s*(['"])(.*?)\1|\w+(?!=)/g) || [];
|
|
20
|
+
for (const n of r)
|
|
21
21
|
if (n.includes("=")) {
|
|
22
|
-
const [g, ...f] = n.split("="),
|
|
23
|
-
if (!(
|
|
22
|
+
const [g, ...f] = n.split("="), i = f.join("=");
|
|
23
|
+
if (!(i.startsWith('"') && i.endsWith('"') || i.startsWith("'") && i.endsWith("'")))
|
|
24
24
|
return !1;
|
|
25
|
-
const d =
|
|
26
|
-
if (
|
|
25
|
+
const d = i[0];
|
|
26
|
+
if (i.slice(1, -1).includes(d))
|
|
27
27
|
return !1;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
const
|
|
30
|
+
const o = /<[^>]*?['"][^'"]*>/g, l = t.match(o) || [];
|
|
31
31
|
for (const s of l) {
|
|
32
|
-
let e = !1,
|
|
32
|
+
let e = !1, r = "";
|
|
33
33
|
for (let n = 0; n < s.length; n++)
|
|
34
|
-
(s[n] === "'" || s[n] === '"') && (e ? s[n] ===
|
|
34
|
+
(s[n] === "'" || s[n] === '"') && (e ? s[n] === r && (e = !1) : (e = !0, r = s[n]));
|
|
35
35
|
if (e)
|
|
36
36
|
return !1;
|
|
37
37
|
}
|
|
38
38
|
return !0;
|
|
39
39
|
}, v = (t) => {
|
|
40
40
|
const a = [...t.matchAll(/<([a-z]+)(\s[^>]*)\/>/gi)];
|
|
41
|
-
for (const [
|
|
41
|
+
for (const [c, o, l] of a) {
|
|
42
42
|
const s = /(\w+)=["']([^"']*)["']/g, e = [...l.matchAll(s)];
|
|
43
|
-
for (const [g, f,
|
|
44
|
-
if (!f || !
|
|
43
|
+
for (const [g, f, i] of e)
|
|
44
|
+
if (!f || !i)
|
|
45
45
|
return !1;
|
|
46
|
-
const
|
|
47
|
-
if ([...l.matchAll(
|
|
46
|
+
const r = /(\w+)=["'][^"']*$/g;
|
|
47
|
+
if ([...l.matchAll(r)].length > 0)
|
|
48
48
|
return !1;
|
|
49
49
|
}
|
|
50
50
|
return !0;
|
|
51
51
|
}, p = (t) => {
|
|
52
|
-
const a = /style=["']([^"']*)["']/gi,
|
|
53
|
-
for (const [
|
|
52
|
+
const a = /style=["']([^"']*)["']/gi, c = [...t.matchAll(a)];
|
|
53
|
+
for (const [o, l] of c) {
|
|
54
54
|
const s = l.split(";");
|
|
55
55
|
for (const e of s)
|
|
56
56
|
if (e.trim()) {
|
|
57
|
-
const [
|
|
58
|
-
if (!
|
|
57
|
+
const [r, n] = e.split(":");
|
|
58
|
+
if (!r || !n)
|
|
59
59
|
return !1;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
return !0;
|
|
63
63
|
}, T = (t) => h(t) && m(t) && v(t) && p(t), y = ({
|
|
64
64
|
html: t,
|
|
65
|
-
className: a
|
|
65
|
+
className: a,
|
|
66
|
+
withoutContentClass: c
|
|
66
67
|
}) => T(t) ? /* @__PURE__ */ u.createElement(
|
|
67
68
|
"div",
|
|
68
69
|
{
|
|
69
|
-
className: ["content", a].filter(Boolean).join(" "),
|
|
70
|
+
className: [!c && "content", a].filter(Boolean).join(" "),
|
|
70
71
|
dangerouslySetInnerHTML: { __html: t }
|
|
71
72
|
}
|
|
72
73
|
) : (console.error("Invalid HTML content:", t), /* @__PURE__ */ u.createElement("div", { style: { color: "red" } }, "Invalid HTML content")), R = y;
|
package/dist/index.es19.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es19.js","sources":["../src/components/SafeHtml.tsx"],"sourcesContent":["import React from 'react'\r\n\r\n// Check if tags are correctly opened and closed\r\nconst validateTags = (htmlString: string) => {\r\n // List of known self-closing tags\r\n const selfClosingTags = new Set(['br', 'img', 'input', 'hr', 'meta', 'link'])\r\n\r\n const tagPattern = /<\\/?([a-z]+)(\\s[^>]*)?>/gi\r\n const tagStack: string[] = []\r\n let match\r\n\r\n while ((match = tagPattern.exec(htmlString)) !== null) {\r\n const fullTag = match[0]\r\n const tagName = match[1].toLowerCase()\r\n\r\n // Check for incorrect </br> usage\r\n if (fullTag === '</br>') {\r\n return false // </br> is invalid HTML\r\n }\r\n\r\n if (fullTag.startsWith('</')) {\r\n // Closing tag\r\n if (selfClosingTags.has(tagName)) {\r\n return false // Self-closing tags shouldn't have closing tags\r\n }\r\n if (tagStack.length === 0) return false\r\n const lastTag = tagStack.pop()\r\n if (lastTag !== tagName) return false\r\n } else {\r\n // Opening tag\r\n if (!selfClosingTags.has(tagName) && !fullTag.endsWith('/>')) {\r\n tagStack.push(tagName)\r\n }\r\n }\r\n }\r\n\r\n return tagStack.length === 0\r\n}\r\n\r\nconst validateAttributes = (htmlString: string) => {\r\n const attributeRegex = /<[a-z]+\\s+([^>]+)>/gi\r\n const matches = htmlString.matchAll(attributeRegex)\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [fullMatch, attributes] of matches) {\r\n // Split attributes by space, but keep quoted values together\r\n const attrs = attributes.match(/\\w+\\s*=\\s*(['\"])(.*?)\\1|\\w+(?!=)/g) || []\r\n\r\n for (const attr of attrs) {\r\n // Check if attribute has quotes\r\n if (attr.includes('=')) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [name, ...rest] = attr.split('=')\r\n const value = rest.join('=') // Rejoin in case value contains =\r\n\r\n // Check for proper quote matching\r\n if (\r\n !(\r\n (value.startsWith('\"') && value.endsWith('\"')) ||\r\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\r\n )\r\n ) {\r\n return false\r\n }\r\n\r\n // Extract the quote character used\r\n const quoteChar = value[0]\r\n // Check if there are any unescaped quotes of the same type inside the value\r\n const valueContent = value.slice(1, -1)\r\n if (valueContent.includes(quoteChar)) {\r\n return false\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Additional check for unclosed quotes before >\r\n const unclosedQuoteCheck = /<[^>]*?['\"][^'\"]*>/g\r\n const potentiallyUnclosedTags = htmlString.match(unclosedQuoteCheck) || []\r\n for (const tag of potentiallyUnclosedTags) {\r\n let inQuote = false\r\n let quoteChar = ''\r\n for (let i = 0; i < tag.length; i++) {\r\n if (tag[i] === \"'\" || tag[i] === '\"') {\r\n if (!inQuote) {\r\n inQuote = true\r\n quoteChar = tag[i]\r\n } else if (tag[i] === quoteChar) {\r\n inQuote = false\r\n }\r\n }\r\n }\r\n if (inQuote) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\n// Check if self-closing tags are valid\r\nconst validateSelfClosingTags = (htmlString: string) => {\r\n const selfClosingTags = [...htmlString.matchAll(/<([a-z]+)(\\s[^>]*)\\/>/gi)]\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [_, tag, attributes] of selfClosingTags) {\r\n const attrRegex = /(\\w+)=[\"']([^\"']*)[\"']/g\r\n const attrs = [...attributes.matchAll(attrRegex)]\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [_, attrName, attrValue] of attrs) {\r\n if (!attrName || !attrValue) {\r\n return false // Invalid attribute format\r\n }\r\n }\r\n\r\n // Check for unclosed attributes\r\n const unclosedAttrRegex = /(\\w+)=[\"'][^\"']*$/g\r\n const unclosedAttrs = [...attributes.matchAll(unclosedAttrRegex)]\r\n\r\n if (unclosedAttrs.length > 0) {\r\n return false // Unclosed attribute in self-closing tag\r\n }\r\n }\r\n\r\n return true // Self-closing tags are valid\r\n}\r\n\r\n// Check for inline styles and ensure they follow a valid format\r\nconst validateInlineStyles = (htmlString: string) => {\r\n const styleRegex = /style=[\"']([^\"']*)[\"']/gi\r\n const styles = [...htmlString.matchAll(styleRegex)]\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [_, styleContent] of styles) {\r\n // A basic check for properly formatted style declarations (e.g., \"property: value;\")\r\n const styleRules = styleContent.split(';')\r\n for (const rule of styleRules) {\r\n if (rule.trim()) {\r\n const [property, value] = rule.split(':')\r\n if (!property || !value) {\r\n return false // Invalid style declaration\r\n }\r\n }\r\n }\r\n }\r\n\r\n return true // Inline styles are valid\r\n}\r\n\r\n// Main function that calls the smaller subfunctions\r\nconst validateHtmlBasic = (htmlString: string) => {\r\n return (\r\n validateTags(htmlString) &&\r\n validateAttributes(htmlString) &&\r\n validateSelfClosingTags(htmlString) &&\r\n validateInlineStyles(htmlString)\r\n )\r\n}\r\n\r\n////\r\n\r\nconst SafeHtmlRenderer = ({\r\n html,\r\n className,\r\n}: {\r\n html: string\r\n className?: string\r\n}) => {\r\n const isValid = validateHtmlBasic(html)\r\n // console.log(\"isValidHTML\", isValid);\r\n // TODO: add send error to TG\r\n\r\n if (!isValid) {\r\n console.error('Invalid HTML content:', html)\r\n return <div style={{ color: 'red' }}>Invalid HTML content</div>\r\n }\r\n\r\n return (\r\n <div\r\n className={['content', className].filter(Boolean).join(' ')}\r\n dangerouslySetInnerHTML={{ __html: html }}\r\n />\r\n )\r\n}\r\n\r\nexport default SafeHtmlRenderer\r\n"],"names":["validateTags","htmlString","selfClosingTags","tagPattern","tagStack","match","fullTag","tagName","validateAttributes","attributeRegex","matches","fullMatch","attributes","attrs","attr","name","rest","value","quoteChar","unclosedQuoteCheck","potentiallyUnclosedTags","tag","inQuote","i","validateSelfClosingTags","_","attrRegex","attrName","attrValue","unclosedAttrRegex","validateInlineStyles","styleRegex","styles","styleContent","styleRules","rule","property","validateHtmlBasic","SafeHtmlRenderer","html","className","React","SafeHtmlRenderer$1"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.es19.js","sources":["../src/components/SafeHtml.tsx"],"sourcesContent":["import React from 'react'\r\n\r\n// Check if tags are correctly opened and closed\r\nconst validateTags = (htmlString: string) => {\r\n // List of known self-closing tags\r\n const selfClosingTags = new Set(['br', 'img', 'input', 'hr', 'meta', 'link'])\r\n\r\n const tagPattern = /<\\/?([a-z]+)(\\s[^>]*)?>/gi\r\n const tagStack: string[] = []\r\n let match\r\n\r\n while ((match = tagPattern.exec(htmlString)) !== null) {\r\n const fullTag = match[0]\r\n const tagName = match[1].toLowerCase()\r\n\r\n // Check for incorrect </br> usage\r\n if (fullTag === '</br>') {\r\n return false // </br> is invalid HTML\r\n }\r\n\r\n if (fullTag.startsWith('</')) {\r\n // Closing tag\r\n if (selfClosingTags.has(tagName)) {\r\n return false // Self-closing tags shouldn't have closing tags\r\n }\r\n if (tagStack.length === 0) return false\r\n const lastTag = tagStack.pop()\r\n if (lastTag !== tagName) return false\r\n } else {\r\n // Opening tag\r\n if (!selfClosingTags.has(tagName) && !fullTag.endsWith('/>')) {\r\n tagStack.push(tagName)\r\n }\r\n }\r\n }\r\n\r\n return tagStack.length === 0\r\n}\r\n\r\nconst validateAttributes = (htmlString: string) => {\r\n const attributeRegex = /<[a-z]+\\s+([^>]+)>/gi\r\n const matches = htmlString.matchAll(attributeRegex)\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [fullMatch, attributes] of matches) {\r\n // Split attributes by space, but keep quoted values together\r\n const attrs = attributes.match(/\\w+\\s*=\\s*(['\"])(.*?)\\1|\\w+(?!=)/g) || []\r\n\r\n for (const attr of attrs) {\r\n // Check if attribute has quotes\r\n if (attr.includes('=')) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [name, ...rest] = attr.split('=')\r\n const value = rest.join('=') // Rejoin in case value contains =\r\n\r\n // Check for proper quote matching\r\n if (\r\n !(\r\n (value.startsWith('\"') && value.endsWith('\"')) ||\r\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\r\n )\r\n ) {\r\n return false\r\n }\r\n\r\n // Extract the quote character used\r\n const quoteChar = value[0]\r\n // Check if there are any unescaped quotes of the same type inside the value\r\n const valueContent = value.slice(1, -1)\r\n if (valueContent.includes(quoteChar)) {\r\n return false\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Additional check for unclosed quotes before >\r\n const unclosedQuoteCheck = /<[^>]*?['\"][^'\"]*>/g\r\n const potentiallyUnclosedTags = htmlString.match(unclosedQuoteCheck) || []\r\n for (const tag of potentiallyUnclosedTags) {\r\n let inQuote = false\r\n let quoteChar = ''\r\n for (let i = 0; i < tag.length; i++) {\r\n if (tag[i] === \"'\" || tag[i] === '\"') {\r\n if (!inQuote) {\r\n inQuote = true\r\n quoteChar = tag[i]\r\n } else if (tag[i] === quoteChar) {\r\n inQuote = false\r\n }\r\n }\r\n }\r\n if (inQuote) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\n// Check if self-closing tags are valid\r\nconst validateSelfClosingTags = (htmlString: string) => {\r\n const selfClosingTags = [...htmlString.matchAll(/<([a-z]+)(\\s[^>]*)\\/>/gi)]\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [_, tag, attributes] of selfClosingTags) {\r\n const attrRegex = /(\\w+)=[\"']([^\"']*)[\"']/g\r\n const attrs = [...attributes.matchAll(attrRegex)]\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [_, attrName, attrValue] of attrs) {\r\n if (!attrName || !attrValue) {\r\n return false // Invalid attribute format\r\n }\r\n }\r\n\r\n // Check for unclosed attributes\r\n const unclosedAttrRegex = /(\\w+)=[\"'][^\"']*$/g\r\n const unclosedAttrs = [...attributes.matchAll(unclosedAttrRegex)]\r\n\r\n if (unclosedAttrs.length > 0) {\r\n return false // Unclosed attribute in self-closing tag\r\n }\r\n }\r\n\r\n return true // Self-closing tags are valid\r\n}\r\n\r\n// Check for inline styles and ensure they follow a valid format\r\nconst validateInlineStyles = (htmlString: string) => {\r\n const styleRegex = /style=[\"']([^\"']*)[\"']/gi\r\n const styles = [...htmlString.matchAll(styleRegex)]\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n for (const [_, styleContent] of styles) {\r\n // A basic check for properly formatted style declarations (e.g., \"property: value;\")\r\n const styleRules = styleContent.split(';')\r\n for (const rule of styleRules) {\r\n if (rule.trim()) {\r\n const [property, value] = rule.split(':')\r\n if (!property || !value) {\r\n return false // Invalid style declaration\r\n }\r\n }\r\n }\r\n }\r\n\r\n return true // Inline styles are valid\r\n}\r\n\r\n// Main function that calls the smaller subfunctions\r\nconst validateHtmlBasic = (htmlString: string) => {\r\n return (\r\n validateTags(htmlString) &&\r\n validateAttributes(htmlString) &&\r\n validateSelfClosingTags(htmlString) &&\r\n validateInlineStyles(htmlString)\r\n )\r\n}\r\n\r\n////\r\n\r\nconst SafeHtmlRenderer = ({\r\n html,\r\n className,\r\n withoutContentClass,\r\n}: {\r\n html: string\r\n className?: string\r\n withoutContentClass?: boolean\r\n}) => {\r\n const isValid = validateHtmlBasic(html)\r\n // console.log(\"isValidHTML\", isValid);\r\n // TODO: add send error to TG\r\n\r\n if (!isValid) {\r\n console.error('Invalid HTML content:', html)\r\n return <div style={{ color: 'red' }}>Invalid HTML content</div>\r\n }\r\n\r\n return (\r\n <div\r\n className={[!withoutContentClass && 'content', className].filter(Boolean).join(' ')}\r\n dangerouslySetInnerHTML={{ __html: html }}\r\n />\r\n )\r\n}\r\n\r\nexport default SafeHtmlRenderer\r\n"],"names":["validateTags","htmlString","selfClosingTags","tagPattern","tagStack","match","fullTag","tagName","validateAttributes","attributeRegex","matches","fullMatch","attributes","attrs","attr","name","rest","value","quoteChar","unclosedQuoteCheck","potentiallyUnclosedTags","tag","inQuote","i","validateSelfClosingTags","_","attrRegex","attrName","attrValue","unclosedAttrRegex","validateInlineStyles","styleRegex","styles","styleContent","styleRules","rule","property","validateHtmlBasic","SafeHtmlRenderer","html","className","withoutContentClass","React","SafeHtmlRenderer$1"],"mappings":"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"}
|
package/dist/index.es26.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es26.js","sources":["../src/components/cards/Connect.tsx"],"sourcesContent":["import { ButtonSecondary } from '../ui/button'\r\nimport { ConsultButtonProps } from '@/sections/common'\r\nimport Heading from '../core/typography/Heading'\r\nimport React from 'react'\r\nimport Text from '../core/typography/Text'\r\nimport { cn } from '@/lib/utils/cn'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\ninterface Content {\r\n title: string\r\n content: string[]\r\n}\r\n\r\nexport interface ConnectCardProps {\r\n topContent: Content\r\n bottomContent?: Content\r\n withLogo?: boolean\r\n className?: string\r\n size?: 1 | 2\r\n onClickConsultButton?: (uniqId?: string) => void\r\n buttons?: ConsultButtonProps[]\r\n uniqId?: string\r\n}\r\n\r\nconst ConnectCard: React.FC<ConnectCardProps> = ({\r\n topContent,\r\n bottomContent,\r\n withLogo,\r\n className,\r\n size,\r\n onClickConsultButton,\r\n buttons,\r\n uniqId,\r\n}) => {\r\n let sizeClass = ''\r\n switch (size) {\r\n case 1:\r\n sizeClass = 'col-span-1'\r\n break\r\n\r\n case 2:\r\n sizeClass = 'col-span-2' // FIXME: check - works in prod?\r\n }\r\n\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'bg-whitish p-6 rounded-lg flex flex-col justify-between relative',\r\n className,\r\n sizeClass\r\n )}\r\n >\r\n <div className=\"space-y-4\">\r\n <Text variant=\"overline\" className=\"text-navy-opacity-40\">\r\n {topContent.title}\r\n </Text>\r\n <div className=\"space-y-2\">\r\n {topContent.content.map((content, index) => (\r\n <Heading level={5} key={index} as=\"div\">\r\n {content}\r\n </Heading>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {bottomContent && (\r\n <div className=\"space-y-1\">\r\n <Heading level={6} as=\"div\" className=\"text-navy-opacity-40\">\r\n {bottomContent.title}\r\n </Heading>\r\n {bottomContent.content.map((content, index) => (\r\n <Text key={index} variant=\"small-body\">\r\n {content}\r\n </Text>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {buttons && (\r\n <div className=\"flex space-x-3\">\r\n {buttons?.map((button, index) => (\r\n <div key={index}>\r\n {button.href ? (\r\n <ButtonSecondary asChild variant={'outline'}>\r\n <a href={button.href} target={button.target}>\r\n {button.text}\r\n </a>\r\n </ButtonSecondary>\r\n ) : (\r\n <ButtonSecondary\r\n onClick={() =>\r\n button.isConsultButton\r\n ? onClickConsultButton?.(uniqId)\r\n : undefined\r\n }\r\n >\r\n {button.text}\r\n </ButtonSecondary>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {withLogo && (\r\n <div className=\"absolute right-6 top-6\">\r\n <ImageWrapper\r\n src=\"/icons/comet.svg\"\r\n alt=\"logo\"\r\n width={25}\r\n height={20}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConnectCard\r\n"],"names":["ConnectCard","topContent","bottomContent","withLogo","className","size","onClickConsultButton","buttons","uniqId","sizeClass","ImageWrapper","getAdapter","React","cn","Text","content","index","Heading","button","ButtonSecondary","ConnectCard$1"],"mappings":";;;;;;AAwBA,MAAMA,IAA0C,CAAC;AAAA,EAC/C,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACJ,MAAIC,IAAY;AAChB,UAAQJ,GAAM;AAAA,IACZ,KAAK;AACS,MAAAI,IAAA;AACZ;AAAA,IAEF,KAAK;AACS,MAAAA,IAAA;AAAA,EAChB;AAEM,QAAAC,IAAeC,EAAW,cAAc;AAG5C,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAT;AAAA,QACAK;AAAA,MACF;AAAA,IAAA;AAAA,IAECG,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,+CACZE,GAAK,EAAA,SAAQ,YAAW,WAAU,0BAChCb,EAAW,KACd,GACAW,gBAAAA,EAAA,cAAC,SAAI,WAAU,YAAA,GACZX,EAAW,QAAQ,IAAI,CAACc,GAASC,sCAC/BC,GAAQ,EAAA,OAAO,GAAG,KAAKD,GAAO,IAAG,MAAA,GAC/BD,CACH,CACD,CACH,CACF;AAAA,IAECb,KACCU,gBAAAA,EAAA,cAAC,OAAI,EAAA,WAAU,YACb,GAAAA,gBAAAA,EAAA,cAACK,GAAQ,EAAA,OAAO,GAAG,IAAG,OAAM,WAAU,0BACnCf,EAAc,KACjB,GACCA,EAAc,QAAQ,IAAI,CAACa,GAASC,MACnCJ,gBAAAA,EAAA,cAACE,GAAK,EAAA,KAAKE,GAAO,SAAQ,aACvB,GAAAD,CACH,CACD,CACH;AAAA,IAGDR,KACCK,gBAAAA,EAAA,cAAC,OAAI,EAAA,WAAU,oBACZL,GAAS,IAAI,CAACW,GAAQF,MACrBJ,gBAAAA,EAAA,cAAC,OAAI,EAAA,KAAKI,KACPE,EAAO,OACLN,gBAAAA,EAAA,cAAAO,GAAA,EAAgB,SAAO,IAAC,SAAS,UAAA,mCAC/B,KAAE,EAAA,MAAMD,EAAO,MAAM,QAAQA,EAAO,OAAA,GAClCA,EAAO,IACV,CACF,IAEAN,gBAAAA,EAAA;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,SAAS,MACPD,EAAO,kBACHZ,IAAuBE,CAAM,IAC7B;AAAA,MAAA;AAAA,MAGLU,EAAO;AAAA,IAGd,CAAA,CACD,CACH;AAAA,IAGDf,KACCS,gBAAAA,EAAA,cAAC,OAAI,EAAA,WAAU,yBACb,GAAAA,gBAAAA,EAAA;AAAA,MAACF;AAAA,MAAA;AAAA,QACC,KAAI;AAAA,QACJ,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,IAAA,CAEZ;AAAA,EAAA;AAIR,GAEAU,IAAepB;"}
|
|
1
|
+
{"version":3,"file":"index.es26.js","sources":["../src/components/cards/Connect.tsx"],"sourcesContent":["import { ButtonSecondary } from '../ui/button'\r\nimport { ConsultButtonProps } from '@/sections/common'\r\nimport Heading from '../core/typography/Heading'\r\nimport React from 'react'\r\nimport Text from '../core/typography/Text'\r\nimport { cn } from '@/lib/utils/cn'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\ninterface Content {\r\n title: string\r\n content: (string | React.ReactNode)[]\r\n}\r\n\r\nexport interface ConnectCardProps {\r\n topContent: Content\r\n bottomContent?: Content\r\n withLogo?: boolean\r\n className?: string\r\n size?: 1 | 2\r\n onClickConsultButton?: (uniqId?: string) => void\r\n buttons?: ConsultButtonProps[]\r\n uniqId?: string\r\n}\r\n\r\nconst ConnectCard: React.FC<ConnectCardProps> = ({\r\n topContent,\r\n bottomContent,\r\n withLogo,\r\n className,\r\n size,\r\n onClickConsultButton,\r\n buttons,\r\n uniqId,\r\n}) => {\r\n let sizeClass = ''\r\n switch (size) {\r\n case 1:\r\n sizeClass = 'col-span-1'\r\n break\r\n\r\n case 2:\r\n sizeClass = 'col-span-2' // FIXME: check - works in prod?\r\n }\r\n\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'bg-whitish p-6 rounded-lg flex flex-col justify-between relative',\r\n className,\r\n sizeClass\r\n )}\r\n >\r\n <div className=\"space-y-4\">\r\n <Text variant=\"overline\" className=\"text-navy-opacity-40\">\r\n {topContent.title}\r\n </Text>\r\n <div className=\"space-y-2\">\r\n {topContent.content.map((content, index) => (\r\n <Heading level={5} key={index} as=\"div\">\r\n {content}\r\n </Heading>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {bottomContent && (\r\n <div className=\"space-y-1\">\r\n <Heading level={6} as=\"div\" className=\"text-navy-opacity-40\">\r\n {bottomContent.title}\r\n </Heading>\r\n {bottomContent.content.map((content, index) => (\r\n <Text key={index} variant=\"small-body\">\r\n {content}\r\n </Text>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {buttons && (\r\n <div className=\"flex space-x-3\">\r\n {buttons?.map((button, index) => (\r\n <div key={index}>\r\n {button.href ? (\r\n <ButtonSecondary asChild variant={'outline'}>\r\n <a href={button.href} target={button.target}>\r\n {button.text}\r\n </a>\r\n </ButtonSecondary>\r\n ) : (\r\n <ButtonSecondary\r\n onClick={() =>\r\n button.isConsultButton\r\n ? onClickConsultButton?.(uniqId)\r\n : undefined\r\n }\r\n >\r\n {button.text}\r\n </ButtonSecondary>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {withLogo && (\r\n <div className=\"absolute right-6 top-6\">\r\n <ImageWrapper\r\n src=\"/icons/comet.svg\"\r\n alt=\"logo\"\r\n width={25}\r\n height={20}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConnectCard\r\n"],"names":["ConnectCard","topContent","bottomContent","withLogo","className","size","onClickConsultButton","buttons","uniqId","sizeClass","ImageWrapper","getAdapter","React","cn","Text","content","index","Heading","button","ButtonSecondary","ConnectCard$1"],"mappings":";;;;;;AAwBA,MAAMA,IAA0C,CAAC;AAAA,EAC/C,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AACF,MAAM;AACJ,MAAIC,IAAY;AAChB,UAAQJ,GAAM;AAAA,IACZ,KAAK;AACS,MAAAI,IAAA;AACZ;AAAA,IAEF,KAAK;AACS,MAAAA,IAAA;AAAA,EAChB;AAEM,QAAAC,IAAeC,EAAW,cAAc;AAG5C,SAAAC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAT;AAAA,QACAK;AAAA,MACF;AAAA,IAAA;AAAA,IAECG,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,+CACZE,GAAK,EAAA,SAAQ,YAAW,WAAU,0BAChCb,EAAW,KACd,GACAW,gBAAAA,EAAA,cAAC,SAAI,WAAU,YAAA,GACZX,EAAW,QAAQ,IAAI,CAACc,GAASC,sCAC/BC,GAAQ,EAAA,OAAO,GAAG,KAAKD,GAAO,IAAG,MAAA,GAC/BD,CACH,CACD,CACH,CACF;AAAA,IAECb,KACCU,gBAAAA,EAAA,cAAC,OAAI,EAAA,WAAU,YACb,GAAAA,gBAAAA,EAAA,cAACK,GAAQ,EAAA,OAAO,GAAG,IAAG,OAAM,WAAU,0BACnCf,EAAc,KACjB,GACCA,EAAc,QAAQ,IAAI,CAACa,GAASC,MACnCJ,gBAAAA,EAAA,cAACE,GAAK,EAAA,KAAKE,GAAO,SAAQ,aACvB,GAAAD,CACH,CACD,CACH;AAAA,IAGDR,KACCK,gBAAAA,EAAA,cAAC,OAAI,EAAA,WAAU,oBACZL,GAAS,IAAI,CAACW,GAAQF,MACrBJ,gBAAAA,EAAA,cAAC,OAAI,EAAA,KAAKI,KACPE,EAAO,OACLN,gBAAAA,EAAA,cAAAO,GAAA,EAAgB,SAAO,IAAC,SAAS,UAAA,mCAC/B,KAAE,EAAA,MAAMD,EAAO,MAAM,QAAQA,EAAO,OAAA,GAClCA,EAAO,IACV,CACF,IAEAN,gBAAAA,EAAA;AAAA,MAACO;AAAA,MAAA;AAAA,QACC,SAAS,MACPD,EAAO,kBACHZ,IAAuBE,CAAM,IAC7B;AAAA,MAAA;AAAA,MAGLU,EAAO;AAAA,IAGd,CAAA,CACD,CACH;AAAA,IAGDf,KACCS,gBAAAA,EAAA,cAAC,OAAI,EAAA,WAAU,yBACb,GAAAA,gBAAAA,EAAA;AAAA,MAACF;AAAA,MAAA;AAAA,QACC,KAAI;AAAA,QACJ,KAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,IAAA,CAEZ;AAAA,EAAA;AAIR,GAEAU,IAAepB;"}
|
package/dist/index.es27.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { FileDownIcon as c } from "lucide-react";
|
|
2
2
|
import e from "react";
|
|
3
|
-
import
|
|
4
|
-
const s = ({ title:
|
|
3
|
+
import t from "./index.es47.js";
|
|
4
|
+
const s = ({ title: o, format: a, link: n, date: r }) => /* @__PURE__ */ e.createElement(
|
|
5
5
|
"a",
|
|
6
6
|
{
|
|
7
|
-
href:
|
|
7
|
+
href: n,
|
|
8
8
|
download: !0,
|
|
9
9
|
className: "flex bg-whitish p-4 pr-8 rounded-lg space-x-2 transition-colors border border-transparent hover:bg-navy-opacity-41 hover:border-navy-opacity-16"
|
|
10
10
|
},
|
|
11
11
|
/* @__PURE__ */ e.createElement(c, { className: "w-8 h-8 shrink-0" }),
|
|
12
|
-
/* @__PURE__ */ e.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ e.createElement(
|
|
13
|
-
),
|
|
12
|
+
/* @__PURE__ */ e.createElement("div", { className: "space-y-1" }, /* @__PURE__ */ e.createElement(t, { variant: "body", as: "div" }, o), (a || r) && /* @__PURE__ */ e.createElement(t, { variant: "caption", className: "text-navy-opacity-40" }, a && r ? `${a} · ${r}` : a || r))
|
|
13
|
+
), m = s;
|
|
14
14
|
export {
|
|
15
|
-
|
|
15
|
+
m as default
|
|
16
16
|
};
|
|
17
17
|
//# sourceMappingURL=index.es27.js.map
|
package/dist/index.es27.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es27.js","sources":["../src/components/cards/Doc.tsx"],"sourcesContent":["import { FileDownIcon } from 'lucide-react'\r\nimport React from 'react'\r\nimport Text from '../core/typography/Text'\r\n\r\nexport interface DocCardProps {\r\n title: string\r\n format
|
|
1
|
+
{"version":3,"file":"index.es27.js","sources":["../src/components/cards/Doc.tsx"],"sourcesContent":["import { FileDownIcon } from 'lucide-react'\r\nimport React from 'react'\r\nimport Text from '../core/typography/Text'\r\n\r\nexport interface DocCardProps {\r\n title: string\r\n format?: string\r\n link: string\r\n date?: string\r\n}\r\n\r\nconst DocCard: React.FC<DocCardProps> = ({ title, format, link, date }) => {\r\n return (\r\n <a\r\n href={link}\r\n download\r\n className=\"flex bg-whitish p-4 pr-8 rounded-lg space-x-2 transition-colors border border-transparent hover:bg-navy-opacity-41 hover:border-navy-opacity-16\"\r\n >\r\n {/* TODO: Add correct icon from ui kit */}\r\n <FileDownIcon className=\"w-8 h-8 shrink-0\" />\r\n <div className=\"space-y-1\">\r\n <Text variant=\"body\" as=\"div\">\r\n {title}\r\n </Text>\r\n {(format || date) && (\r\n <Text variant=\"caption\" className=\"text-navy-opacity-40\">\r\n {format && date ? `${format} · ${date}` : format || date}\r\n </Text>\r\n )}\r\n </div>\r\n </a>\r\n )\r\n}\r\n\r\nexport default DocCard\r\n"],"names":["DocCard","title","format","link","date","React","FileDownIcon","Text","DocCard$1"],"mappings":";;;AAWA,MAAMA,IAAkC,CAAC,EAAE,OAAAC,GAAO,QAAAC,GAAQ,MAAAC,GAAM,MAAAC,QAE5DC,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAMF;AAAA,IACN,UAAQ;AAAA,IACR,WAAU;AAAA,EAAA;AAAA,EAGVE,gBAAAA,EAAA,cAACC,GAAa,EAAA,WAAU,mBAAmB,CAAA;AAAA,EAC1CD,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,YAAA,GACZA,gBAAAA,EAAA,cAAAE,GAAA,EAAK,SAAQ,QAAO,IAAG,MAAA,GACrBN,CACH,IACEC,KAAUE,MACTC,gBAAAA,EAAA,cAAAE,GAAA,EAAK,SAAQ,WAAU,WAAU,0BAC/BL,KAAUE,IAAO,GAAGF,CAAM,MAAME,CAAI,KAAKF,KAAUE,CACtD,CAEJ;AAAA,GAKNI,IAAeR;"}
|
package/dist/index.es33.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { cva as d } from "class-variance-authority";
|
|
2
2
|
import s from "./index.es6.js";
|
|
3
|
-
import
|
|
3
|
+
import g from "./index.es46.js";
|
|
4
4
|
import e from "react";
|
|
5
|
-
import
|
|
5
|
+
import x from "./index.es47.js";
|
|
6
6
|
import { cn as o } from "./index.es55.js";
|
|
7
7
|
import { getAdapter as m } from "./index.es9.js";
|
|
8
|
-
const
|
|
8
|
+
const E = d(
|
|
9
9
|
"group p-6 rounded-lg min-h-[300px] flex flex-col justify-between gap-12 items-start relative hover:scale1-[1.005] h-full",
|
|
10
10
|
{
|
|
11
11
|
variants: {
|
|
@@ -24,7 +24,7 @@ const x = d(
|
|
|
24
24
|
size: 1
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
),
|
|
27
|
+
), w = d("", {
|
|
28
28
|
variants: {
|
|
29
29
|
variant: {
|
|
30
30
|
default: "text-navy-opacity-60",
|
|
@@ -34,18 +34,19 @@ const x = d(
|
|
|
34
34
|
defaultVariants: {
|
|
35
35
|
variant: "default"
|
|
36
36
|
}
|
|
37
|
-
}),
|
|
37
|
+
}), N = ({
|
|
38
38
|
title: n,
|
|
39
39
|
desc: p,
|
|
40
40
|
icon: f,
|
|
41
41
|
link: i,
|
|
42
|
+
target: v,
|
|
42
43
|
variant: t,
|
|
43
44
|
size: c,
|
|
44
45
|
buttons: r
|
|
45
46
|
}) => {
|
|
46
|
-
const
|
|
47
|
-
let l = /* @__PURE__ */ e.createElement("div", { className: o(
|
|
48
|
-
|
|
47
|
+
const h = m("LinkWrapper"), u = m("ImageWrapper");
|
|
48
|
+
let l = /* @__PURE__ */ e.createElement("div", { className: o(E({ variant: t, size: c }), "h-full") }, /* @__PURE__ */ e.createElement("div", { className: "rounded-lg p-4 bg-turquoise-opacity-20" }, /* @__PURE__ */ e.createElement(
|
|
49
|
+
u,
|
|
49
50
|
{
|
|
50
51
|
src: f,
|
|
51
52
|
alt: `Изображение для ${n}`,
|
|
@@ -53,14 +54,14 @@ const x = d(
|
|
|
53
54
|
height: 32,
|
|
54
55
|
className: "object-contain"
|
|
55
56
|
}
|
|
56
|
-
)), /* @__PURE__ */ e.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ e.createElement(
|
|
57
|
+
)), /* @__PURE__ */ e.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ e.createElement(g, { level: 5, className: "mt-4 mb-2" }, n), /* @__PURE__ */ e.createElement(x, { variant: "small-body", className: o(w({ variant: t })) }, p)), !(r && r.length) && /* @__PURE__ */ e.createElement(
|
|
57
58
|
s,
|
|
58
59
|
{
|
|
59
60
|
icon: "arrowRight",
|
|
60
61
|
variant: t === "navy" ? "white" : "default"
|
|
61
62
|
},
|
|
62
63
|
"Подробнее"
|
|
63
|
-
), r && /* @__PURE__ */ e.createElement("div", { className: "flex space-x-3" }, r?.map((a,
|
|
64
|
+
), r && /* @__PURE__ */ e.createElement("div", { className: "flex space-x-3" }, r?.map((a, y) => /* @__PURE__ */ e.createElement("div", { key: y }, /* @__PURE__ */ e.createElement(
|
|
64
65
|
s,
|
|
65
66
|
{
|
|
66
67
|
variant: t === "navy" ? "white" : "default",
|
|
@@ -78,9 +79,10 @@ const x = d(
|
|
|
78
79
|
)
|
|
79
80
|
)))));
|
|
80
81
|
return i && (l = /* @__PURE__ */ e.createElement(
|
|
81
|
-
|
|
82
|
+
h,
|
|
82
83
|
{
|
|
83
84
|
href: i,
|
|
85
|
+
target: v,
|
|
84
86
|
className: o(
|
|
85
87
|
"block h-full relative transition-all bottom-0 hover:bottom-2 transform duration-300 border border-transparent rounded-lg hover1:border-navy-opacity-16",
|
|
86
88
|
c === 2 ? "sm:col-span-2" : "sm:col-span-1"
|
|
@@ -88,8 +90,8 @@ const x = d(
|
|
|
88
90
|
},
|
|
89
91
|
l
|
|
90
92
|
)), l;
|
|
91
|
-
},
|
|
93
|
+
}, I = N;
|
|
92
94
|
export {
|
|
93
|
-
|
|
95
|
+
I as default
|
|
94
96
|
};
|
|
95
97
|
//# sourceMappingURL=index.es33.js.map
|
package/dist/index.es33.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es33.js","sources":["../src/components/cards/Product.tsx"],"sourcesContent":["import {\r\n ButtonTextIconName,\r\n ButtonTextPropsWithoutHTMLAttributes,\r\n} from '../ui/button/ButtonText'\r\nimport { VariantProps, cva } from 'class-variance-authority'\r\n\r\nimport { ButtonText } from '../ui/button'\r\nimport Heading from '../core/typography/Heading'\r\nimport React from 'react'\r\nimport Text from '../core/typography/Text'\r\nimport { cn } from '@/lib/utils/cn'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\nconst productCardVariants = cva(\r\n 'group p-6 rounded-lg min-h-[300px] flex flex-col justify-between gap-12 items-start relative hover:scale1-[1.005] h-full',\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'text-navy bg-whitish hover1:bg-navy-opacity-4 hover1:text-navy',\r\n // navy: \"text-whitish bg-gradient-to-b from-navy to-sapphire hover:from-sapphire hover:to-navy\",\r\n navy: 'text-whitish primary-gradient',\r\n },\r\n size: {\r\n 1: 'sm:col-span-1',\r\n 2: 'sm:col-span-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 1,\r\n },\r\n }\r\n)\r\n\r\nconst descVariants = cva('', {\r\n variants: {\r\n variant: {\r\n default: 'text-navy-opacity-60',\r\n navy: 'text-whitish-opacity-60',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n },\r\n})\r\n\r\nexport interface ProductCardButtonProps\r\n extends ButtonTextPropsWithoutHTMLAttributes {\r\n href?: string\r\n target?: '_blank' | '_self'\r\n icon?: ButtonTextIconName\r\n download?: boolean\r\n}\r\n\r\nexport interface ProductCardProps\r\n extends React.HTMLAttributes<HTMLAnchorElement>,\r\n VariantProps<typeof productCardVariants> {\r\n title: string\r\n desc: string\r\n icon: string\r\n link?: string\r\n size?: 1 | 2\r\n buttons?: ProductCardButtonProps[]\r\n}\r\n\r\nexport interface ProductCardPropsWithoutHtmlAttributes\r\n extends Omit<ProductCardProps, keyof React.HTMLAttributes<HTMLDivElement>> {\r\n title: string\r\n}\r\n\r\nconst ProductCard: React.FC<ProductCardProps> = ({\r\n title,\r\n desc,\r\n icon,\r\n link,\r\n variant,\r\n size,\r\n buttons,\r\n}) => {\r\n const LinkWrapper = getAdapter('LinkWrapper')\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n let component = (\r\n <div className={cn(productCardVariants({ variant, size }), 'h-full')}>\r\n <div className=\"rounded-lg p-4 bg-turquoise-opacity-20\">\r\n <ImageWrapper\r\n src={icon}\r\n alt={`Изображение для ${title}`}\r\n width={32}\r\n height={32}\r\n className=\"object-contain\"\r\n />\r\n </div>\r\n <div className=\"space-y-2\">\r\n <Heading level={5} className=\"mt-4 mb-2\">\r\n {title}\r\n </Heading>\r\n <Text variant=\"small-body\" className={cn(descVariants({ variant }))}>\r\n {desc}\r\n </Text>\r\n </div>\r\n {/* TODO: here is the button, should be a link */}\r\n\r\n {!(buttons && buttons.length) && (\r\n <ButtonText\r\n icon=\"arrowRight\"\r\n variant={variant === 'navy' ? 'white' : 'default'}\r\n >\r\n Подробнее\r\n </ButtonText>\r\n )}\r\n\r\n {buttons && (\r\n <div className=\"flex space-x-3\">\r\n {buttons?.map((button, index) => (\r\n <div key={index}>\r\n <ButtonText\r\n variant={variant === 'navy' ? 'white' : 'default'}\r\n icon={button.icon}\r\n asChild\r\n >\r\n <a\r\n href={button.href}\r\n target={button.target || '_self'}\r\n download={button.download}\r\n >\r\n {button.text}\r\n </a>\r\n </ButtonText>\r\n {/* <ButtonSecondary asChild variant={\"outline\"}>\r\n <a href={button.href} target={button.target}>\r\n {button.text}\r\n </a>\r\n </ButtonSecondary> */}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n\r\n if (link) {\r\n component = (\r\n <LinkWrapper\r\n href={link}\r\n className={cn(\r\n 'block h-full relative transition-all bottom-0 hover:bottom-2 transform duration-300 border border-transparent rounded-lg hover1:border-navy-opacity-16',\r\n size === 2 ? 'sm:col-span-2' : 'sm:col-span-1'\r\n )}\r\n >\r\n {component}\r\n </LinkWrapper>\r\n )\r\n }\r\n\r\n return component\r\n}\r\n\r\nexport default ProductCard\r\n"],"names":["productCardVariants","cva","descVariants","ProductCard","title","desc","icon","link","variant","size","buttons","LinkWrapper","getAdapter","ImageWrapper","component","React","cn","Heading","Text","ButtonText","button","index","Product"],"mappings":";;;;;;;AAaA,MAAMA,IAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA;AAAA,QAEF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF,GAEMC,IAAeD,EAAI,IAAI;AAAA,EAC3B,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC,
|
|
1
|
+
{"version":3,"file":"index.es33.js","sources":["../src/components/cards/Product.tsx"],"sourcesContent":["import {\r\n ButtonTextIconName,\r\n ButtonTextPropsWithoutHTMLAttributes,\r\n} from '../ui/button/ButtonText'\r\nimport { VariantProps, cva } from 'class-variance-authority'\r\n\r\nimport { ButtonText } from '../ui/button'\r\nimport Heading from '../core/typography/Heading'\r\nimport React from 'react'\r\nimport Text from '../core/typography/Text'\r\nimport { cn } from '@/lib/utils/cn'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\nconst productCardVariants = cva(\r\n 'group p-6 rounded-lg min-h-[300px] flex flex-col justify-between gap-12 items-start relative hover:scale1-[1.005] h-full',\r\n {\r\n variants: {\r\n variant: {\r\n default:\r\n 'text-navy bg-whitish hover1:bg-navy-opacity-4 hover1:text-navy',\r\n // navy: \"text-whitish bg-gradient-to-b from-navy to-sapphire hover:from-sapphire hover:to-navy\",\r\n navy: 'text-whitish primary-gradient',\r\n },\r\n size: {\r\n 1: 'sm:col-span-1',\r\n 2: 'sm:col-span-2',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n size: 1,\r\n },\r\n }\r\n)\r\n\r\nconst descVariants = cva('', {\r\n variants: {\r\n variant: {\r\n default: 'text-navy-opacity-60',\r\n navy: 'text-whitish-opacity-60',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'default',\r\n },\r\n})\r\n\r\nexport interface ProductCardButtonProps\r\n extends ButtonTextPropsWithoutHTMLAttributes {\r\n href?: string\r\n target?: '_blank' | '_self'\r\n icon?: ButtonTextIconName\r\n download?: boolean\r\n}\r\n\r\nexport interface ProductCardProps\r\n extends React.HTMLAttributes<HTMLAnchorElement>,\r\n VariantProps<typeof productCardVariants> {\r\n title: string\r\n desc: string\r\n icon: string\r\n link?: string\r\n target?: '_blank' | '_self'\r\n size?: 1 | 2\r\n buttons?: ProductCardButtonProps[]\r\n}\r\n\r\nexport interface ProductCardPropsWithoutHtmlAttributes\r\n extends Omit<ProductCardProps, keyof React.HTMLAttributes<HTMLDivElement>> {\r\n title: string\r\n}\r\n\r\nconst ProductCard: React.FC<ProductCardProps> = ({\r\n title,\r\n desc,\r\n icon,\r\n link,\r\n target,\r\n variant,\r\n size,\r\n buttons,\r\n}) => {\r\n const LinkWrapper = getAdapter('LinkWrapper')\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n let component = (\r\n <div className={cn(productCardVariants({ variant, size }), 'h-full')}>\r\n <div className=\"rounded-lg p-4 bg-turquoise-opacity-20\">\r\n <ImageWrapper\r\n src={icon}\r\n alt={`Изображение для ${title}`}\r\n width={32}\r\n height={32}\r\n className=\"object-contain\"\r\n />\r\n </div>\r\n <div className=\"space-y-2\">\r\n <Heading level={5} className=\"mt-4 mb-2\">\r\n {title}\r\n </Heading>\r\n <Text variant=\"small-body\" className={cn(descVariants({ variant }))}>\r\n {desc}\r\n </Text>\r\n </div>\r\n {/* TODO: here is the button, should be a link */}\r\n\r\n {!(buttons && buttons.length) && (\r\n <ButtonText\r\n icon=\"arrowRight\"\r\n variant={variant === 'navy' ? 'white' : 'default'}\r\n >\r\n Подробнее\r\n </ButtonText>\r\n )}\r\n\r\n {buttons && (\r\n <div className=\"flex space-x-3\">\r\n {buttons?.map((button, index) => (\r\n <div key={index}>\r\n <ButtonText\r\n variant={variant === 'navy' ? 'white' : 'default'}\r\n icon={button.icon}\r\n asChild\r\n >\r\n <a\r\n href={button.href}\r\n target={button.target || '_self'}\r\n download={button.download}\r\n >\r\n {button.text}\r\n </a>\r\n </ButtonText>\r\n {/* <ButtonSecondary asChild variant={\"outline\"}>\r\n <a href={button.href} target={button.target}>\r\n {button.text}\r\n </a>\r\n </ButtonSecondary> */}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n\r\n if (link) {\r\n component = (\r\n <LinkWrapper\r\n href={link}\r\n target={target}\r\n className={cn(\r\n 'block h-full relative transition-all bottom-0 hover:bottom-2 transform duration-300 border border-transparent rounded-lg hover1:border-navy-opacity-16',\r\n size === 2 ? 'sm:col-span-2' : 'sm:col-span-1'\r\n )}\r\n >\r\n {component}\r\n </LinkWrapper>\r\n )\r\n }\r\n\r\n return component\r\n}\r\n\r\nexport default ProductCard\r\n"],"names":["productCardVariants","cva","descVariants","ProductCard","title","desc","icon","link","target","variant","size","buttons","LinkWrapper","getAdapter","ImageWrapper","component","React","cn","Heading","Text","ButtonText","button","index","Product"],"mappings":";;;;;;;AAaA,MAAMA,IAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA;AAAA,QAEF,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG;AAAA,MACL;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF,GAEMC,IAAeD,EAAI,IAAI;AAAA,EAC3B,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC,GA2BKE,IAA0C,CAAC;AAAA,EAC/C,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AACF,MAAM;AACE,QAAAC,IAAcC,EAAW,aAAa,GACtCC,IAAeD,EAAW,cAAc;AAE9C,MAAIE,IACDC,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAWC,EAAGjB,EAAoB,EAAE,SAAAS,GAAS,MAAAC,EAAM,CAAA,GAAG,QAAQ,KAChEM,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,4CACbA,gBAAAA,EAAA;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,KAAKR;AAAA,MACL,KAAK,mBAAmBF,CAAK;AAAA,MAC7B,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAU;AAAA,IAAA;AAAA,EAAA,CAEd,GACCY,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,YACb,GAAAA,gBAAAA,EAAA,cAACE,GAAQ,EAAA,OAAO,GAAG,WAAU,YAC1B,GAAAd,CACH,GACCY,gBAAAA,EAAA,cAAAG,GAAA,EAAK,SAAQ,cAAa,WAAWF,EAAGf,EAAa,EAAE,SAAAO,EAAS,CAAA,CAAC,EAC/D,GAAAJ,CACH,CACF,GAGC,EAAEM,KAAWA,EAAQ,WACpBK,gBAAAA,EAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAASX,MAAY,SAAS,UAAU;AAAA,IAAA;AAAA,IACzC;AAAA,EAAA,GAKFE,KACEK,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,oBACZL,GAAS,IAAI,CAACU,GAAQC,MACpBN,gBAAAA,EAAA,cAAA,OAAA,EAAI,KAAKM,KACRN,gBAAAA,EAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,SAASX,MAAY,SAAS,UAAU;AAAA,MACxC,MAAMY,EAAO;AAAA,MACb,SAAO;AAAA,IAAA;AAAA,IAEPL,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAMK,EAAO;AAAA,QACb,QAAQA,EAAO,UAAU;AAAA,QACzB,UAAUA,EAAO;AAAA,MAAA;AAAA,MAEhBA,EAAO;AAAA,IACV;AAAA,EAAA,CAOJ,CACD,CACH,CAEJ;AAGF,SAAId,MAEAQ,IAAAC,gBAAAA,EAAA;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,MAAML;AAAA,MACN,QAAAC;AAAA,MACA,WAAWS;AAAA,QACT;AAAA,QACAP,MAAS,IAAI,kBAAkB;AAAA,MACjC;AAAA,IAAA;AAAA,IAECK;AAAA,EAAA,IAKAA;AACT,GAEAQ,IAAepB;"}
|
package/dist/index.es38.js
CHANGED
|
@@ -2,14 +2,14 @@ import { CarouselWrapper as m } from "./index.es44.js";
|
|
|
2
2
|
import r from "react";
|
|
3
3
|
import n from "./index.es47.js";
|
|
4
4
|
const p = ({
|
|
5
|
-
items:
|
|
6
|
-
renderItem:
|
|
7
|
-
columns:
|
|
8
|
-
hideControlsOnDesktop:
|
|
9
|
-
withoutCarousel:
|
|
5
|
+
items: s,
|
|
6
|
+
renderItem: l,
|
|
7
|
+
columns: t = 4,
|
|
8
|
+
hideControlsOnDesktop: g = !1,
|
|
9
|
+
withoutCarousel: d = !1,
|
|
10
10
|
// TODO: add to props chain
|
|
11
11
|
footnote: c,
|
|
12
|
-
variant:
|
|
12
|
+
variant: i
|
|
13
13
|
}) => {
|
|
14
14
|
const o = (e) => {
|
|
15
15
|
switch (e) {
|
|
@@ -21,18 +21,22 @@ const p = ({
|
|
|
21
21
|
return "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3";
|
|
22
22
|
case 4:
|
|
23
23
|
return "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3";
|
|
24
|
+
case 5:
|
|
25
|
+
return "grid grid-cols-1 xl:grid-cols-5 gap-3";
|
|
26
|
+
case 6:
|
|
27
|
+
return "grid grid-cols-1 xl:grid-cols-6 gap-3";
|
|
24
28
|
default:
|
|
25
29
|
return "grid grid-cols-1 gap-3";
|
|
26
30
|
}
|
|
27
31
|
};
|
|
28
|
-
return /* @__PURE__ */ r.createElement("div", null,
|
|
32
|
+
return /* @__PURE__ */ r.createElement("div", null, d ? /* @__PURE__ */ r.createElement("div", { className: o(t) }, s.map((e, a) => /* @__PURE__ */ r.createElement(r.Fragment, { key: a }, l(e, a)))) : /* @__PURE__ */ r.createElement(
|
|
29
33
|
m,
|
|
30
34
|
{
|
|
31
|
-
items:
|
|
32
|
-
renderItem: (e, a) =>
|
|
33
|
-
columns:
|
|
34
|
-
hideControlsOnDesktop:
|
|
35
|
-
variant:
|
|
35
|
+
items: s,
|
|
36
|
+
renderItem: (e, a) => l(e, a),
|
|
37
|
+
columns: t,
|
|
38
|
+
hideControlsOnDesktop: g,
|
|
39
|
+
variant: i
|
|
36
40
|
}
|
|
37
41
|
), c && /* @__PURE__ */ r.createElement("div", { className: "mt-6" }, /* @__PURE__ */ r.createElement(n, { variant: "small-body", as: "div" }, c)));
|
|
38
42
|
}, v = p;
|
package/dist/index.es38.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es38.js","sources":["../src/components/GridIterator.tsx"],"sourcesContent":["import { CarouselWrapper } from '@/decorators/CarouselWrapper'\r\nimport React from 'react'\r\nimport Text from './core/typography/Text'\r\n\r\n// import { getAdapter } from '@/Adapters'\r\n\r\ninterface GridIteratorProps<T> {\r\n items: T[]\r\n renderItem: (item: T, index: number) => React.ReactNode\r\n columns?: number\r\n hideControlsOnDesktop?: boolean\r\n withoutCarousel?: boolean\r\n footnote?: string\r\n variant?: 'default' | 'white'\r\n}\r\n\r\nconst GridIterator = <T,>({\r\n items,\r\n renderItem,\r\n columns = 4,\r\n hideControlsOnDesktop = false,\r\n withoutCarousel = false, // TODO: add to props chain\r\n footnote,\r\n variant,\r\n}: GridIteratorProps<T>) => {\r\n const getGridClasses = (columns: number) => {\r\n switch (columns) {\r\n case 1:\r\n return 'grid grid-cols-1 gap-3'\r\n case 2:\r\n return 'grid grid-cols-1 sm:grid-cols-2 gap-3'\r\n case 3:\r\n return 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3'\r\n case 4:\r\n return 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3'\r\n default:\r\n return 'grid grid-cols-1 gap-3'\r\n }\r\n }\r\n // const CarouselWrapper = getAdapter('CarouselWrapper')\r\n\r\n return (\r\n <div>\r\n {withoutCarousel ? (\r\n <div className={getGridClasses(columns)}>\r\n {items.map((item, index) => (\r\n <React.Fragment key={index}>\r\n {renderItem(item, index)}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n ) : (\r\n <CarouselWrapper\r\n items={items}\r\n // renderItem={renderItem}\r\n renderItem={(item, index) => renderItem(item as T, index)}\r\n columns={columns}\r\n hideControlsOnDesktop={hideControlsOnDesktop}\r\n variant={variant}\r\n />\r\n )}\r\n\r\n {footnote && (\r\n <div className=\"mt-6\">\r\n <Text variant=\"small-body\" as=\"div\">\r\n {footnote}\r\n </Text>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default GridIterator\r\n"],"names":["GridIterator","items","renderItem","columns","hideControlsOnDesktop","withoutCarousel","footnote","variant","getGridClasses","React","item","index","CarouselWrapper","Text","GridIterator$1"],"mappings":";;;AAgBA,MAAMA,IAAe,CAAK;AAAA,EACxB,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,uBAAAC,IAAwB;AAAA,EACxB,iBAAAC,IAAkB;AAAA;AAAA,EAClB,UAAAC;AAAA,EACA,SAAAC;AACF,MAA4B;AACpB,QAAAC,IAAiB,CAACL,MAAoB;AAC1C,YAAQA,GAAS;AAAA,MACf,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT;AACS,eAAA;AAAA,IACX;AAAA,EAAA;AAKA,SAAAM,gBAAAA,EAAA,cAAC,OACE,MAAAJ,IACEI,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAWD,EAAeL,CAAO,EAAA,GACnCF,EAAM,IAAI,CAACS,GAAMC,MACfF,gBAAAA,EAAA,cAAAA,EAAM,UAAN,EAAe,KAAKE,EAAA,GAClBT,EAAWQ,GAAMC,CAAK,CACzB,CACD,CACH,IAEAF,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,OAAAX;AAAA,MAEA,YAAY,CAACS,GAAMC,MAAUT,EAAWQ,GAAWC,CAAK;AAAA,MACxD,SAAAR;AAAA,MACA,uBAAAC;AAAA,MACA,SAAAG;AAAA,IAAA;AAAA,EAAA,GAIHD,KACEG,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,OACb,GAAAA,gBAAAA,EAAA,cAACI,GAAK,EAAA,SAAQ,cAAa,IAAG,SAC3BP,CACH,CACF,CAEJ;AAEJ,GAEAQ,IAAed;"}
|
|
1
|
+
{"version":3,"file":"index.es38.js","sources":["../src/components/GridIterator.tsx"],"sourcesContent":["import { CarouselWrapper } from '@/decorators/CarouselWrapper'\r\nimport React from 'react'\r\nimport Text from './core/typography/Text'\r\n\r\n// import { getAdapter } from '@/Adapters'\r\n\r\ninterface GridIteratorProps<T> {\r\n items: T[]\r\n renderItem: (item: T, index: number) => React.ReactNode\r\n columns?: number\r\n hideControlsOnDesktop?: boolean\r\n withoutCarousel?: boolean\r\n footnote?: string\r\n variant?: 'default' | 'white'\r\n}\r\n\r\nconst GridIterator = <T,>({\r\n items,\r\n renderItem,\r\n columns = 4,\r\n hideControlsOnDesktop = false,\r\n withoutCarousel = false, // TODO: add to props chain\r\n footnote,\r\n variant,\r\n}: GridIteratorProps<T>) => {\r\n const getGridClasses = (columns: number) => {\r\n switch (columns) {\r\n case 1:\r\n return 'grid grid-cols-1 gap-3'\r\n case 2:\r\n return 'grid grid-cols-1 sm:grid-cols-2 gap-3'\r\n case 3:\r\n return 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3'\r\n case 4:\r\n return 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3'\r\n case 5:\r\n return 'grid grid-cols-1 xl:grid-cols-5 gap-3'\r\n case 6:\r\n return 'grid grid-cols-1 xl:grid-cols-6 gap-3'\r\n default:\r\n return 'grid grid-cols-1 gap-3'\r\n }\r\n }\r\n // const CarouselWrapper = getAdapter('CarouselWrapper')\r\n\r\n return (\r\n <div>\r\n {withoutCarousel ? (\r\n <div className={getGridClasses(columns)}>\r\n {items.map((item, index) => (\r\n <React.Fragment key={index}>\r\n {renderItem(item, index)}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n ) : (\r\n <CarouselWrapper\r\n items={items}\r\n // renderItem={renderItem}\r\n renderItem={(item, index) => renderItem(item as T, index)}\r\n columns={columns}\r\n hideControlsOnDesktop={hideControlsOnDesktop}\r\n variant={variant}\r\n />\r\n )}\r\n\r\n {footnote && (\r\n <div className=\"mt-6\">\r\n <Text variant=\"small-body\" as=\"div\">\r\n {footnote}\r\n </Text>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default GridIterator\r\n"],"names":["GridIterator","items","renderItem","columns","hideControlsOnDesktop","withoutCarousel","footnote","variant","getGridClasses","React","item","index","CarouselWrapper","Text","GridIterator$1"],"mappings":";;;AAgBA,MAAMA,IAAe,CAAK;AAAA,EACxB,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,uBAAAC,IAAwB;AAAA,EACxB,iBAAAC,IAAkB;AAAA;AAAA,EAClB,UAAAC;AAAA,EACA,SAAAC;AACF,MAA4B;AACpB,QAAAC,IAAiB,CAACL,MAAoB;AAC1C,YAAQA,GAAS;AAAA,MACf,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT,KAAK;AACI,eAAA;AAAA,MACT;AACS,eAAA;AAAA,IACX;AAAA,EAAA;AAKA,SAAAM,gBAAAA,EAAA,cAAC,OACE,MAAAJ,IACEI,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAWD,EAAeL,CAAO,EAAA,GACnCF,EAAM,IAAI,CAACS,GAAMC,MACfF,gBAAAA,EAAA,cAAAA,EAAM,UAAN,EAAe,KAAKE,EAAA,GAClBT,EAAWQ,GAAMC,CAAK,CACzB,CACD,CACH,IAEAF,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,OAAAX;AAAA,MAEA,YAAY,CAACS,GAAMC,MAAUT,EAAWQ,GAAWC,CAAK;AAAA,MACxD,SAAAR;AAAA,MACA,uBAAAC;AAAA,MACA,SAAAG;AAAA,IAAA;AAAA,EAAA,GAIHD,KACEG,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,OACb,GAAAA,gBAAAA,EAAA,cAACI,GAAK,EAAA,SAAQ,cAAa,IAAG,SAC3BP,CACH,CACF,CAEJ;AAEJ,GAEAQ,IAAed;"}
|
package/dist/index.es39.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from "./index.es46.js";
|
|
2
2
|
import { HeroButton as n } from "./index.es40.js";
|
|
3
3
|
import e from "react";
|
|
4
4
|
import p from "./index.es19.js";
|
|
5
5
|
import d from "./index.es47.js";
|
|
6
|
-
import { getAdapter as
|
|
7
|
-
const
|
|
8
|
-
const i =
|
|
9
|
-
return /* @__PURE__ */ e.createElement("section", { className: "container" }, /* @__PURE__ */ e.createElement("div", { className: "mx-auto w-full h-[606px]1 bg-gradient-to-b from-navy to-sapphire text-white rounded-2xl px-6 relative xl:min-h-[500px]" }, /* @__PURE__ */ e.createElement("div", { className: "space-y-12 relative z-10" }, /* @__PURE__ */ e.createElement("div", { className: "w-full grid grid-cols-1 lg:grid-cols-2" }, /* @__PURE__ */ e.createElement("div", null), /* @__PURE__ */ e.createElement("div", { className: "space-y-12 mb-24 mt-[128px] pr-8 lg:pr-8 xl:pr-28" }, /* @__PURE__ */ e.createElement("div", { className: " space-y-6" }, /* @__PURE__ */ e.createElement(
|
|
6
|
+
import { getAdapter as v } from "./index.es9.js";
|
|
7
|
+
const f = ({ title: t, desc: l, img: a, buttons: m, onButtonClick: c }) => {
|
|
8
|
+
const i = v("ImageWrapper");
|
|
9
|
+
return /* @__PURE__ */ e.createElement("section", { className: "container" }, /* @__PURE__ */ e.createElement("div", { className: "mx-auto w-full h-[606px]1 bg-gradient-to-b from-navy to-sapphire text-white rounded-2xl px-6 relative xl:min-h-[500px]" }, /* @__PURE__ */ e.createElement("div", { className: "space-y-12 relative z-10" }, /* @__PURE__ */ e.createElement("div", { className: "w-full grid grid-cols-1 lg:grid-cols-2" }, /* @__PURE__ */ e.createElement("div", null), /* @__PURE__ */ e.createElement("div", { className: "space-y-12 mb-24 mt-[128px] pr-8 lg:pr-8 xl:pr-28" }, /* @__PURE__ */ e.createElement("div", { className: " space-y-6" }, /* @__PURE__ */ e.createElement(o, { level: 2, as: "div" }, t), /* @__PURE__ */ e.createElement(
|
|
10
10
|
d,
|
|
11
11
|
{
|
|
12
12
|
variant: "body",
|
|
@@ -14,7 +14,7 @@ const v = ({ title: t, desc: l, img: a, buttons: m, onButtonClick: c }) => {
|
|
|
14
14
|
as: "div"
|
|
15
15
|
},
|
|
16
16
|
/* @__PURE__ */ e.createElement(p, { html: l })
|
|
17
|
-
)), /* @__PURE__ */ e.createElement("div", { className: "flex space-x-4" }, m.map((r,
|
|
17
|
+
)), /* @__PURE__ */ e.createElement("div", { className: "flex space-x-4" }, m.map((r, s) => /* @__PURE__ */ e.createElement(n, { key: s, ...r, onClick: () => c?.(r.uniqId) })))))), a && /* @__PURE__ */ e.createElement("div", { className: "absolute bottom-0 left-0 z-0" }, /* @__PURE__ */ e.createElement(
|
|
18
18
|
i,
|
|
19
19
|
{
|
|
20
20
|
src: a,
|
|
@@ -24,7 +24,7 @@ const v = ({ title: t, desc: l, img: a, buttons: m, onButtonClick: c }) => {
|
|
|
24
24
|
objectFit: "contain"
|
|
25
25
|
}
|
|
26
26
|
))));
|
|
27
|
-
}, y =
|
|
27
|
+
}, y = f;
|
|
28
28
|
export {
|
|
29
29
|
y as default
|
|
30
30
|
};
|
package/dist/index.es39.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es39.js","sources":["../src/sections/CTA.tsx"],"sourcesContent":["import { CommonButtonProps } from './common'\r\nimport Heading from '@/components/core/typography/Heading'\r\nimport { HeroButton } from './Hero'\r\nimport React from 'react'\r\nimport SafeHtmlRenderer from '@/components/SafeHtml'\r\nimport Text from '@/components/core/typography/Text'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\nexport interface CTAProps {\r\n title: string\r\n desc: string\r\n img: string\r\n buttons: CommonButtonProps[]\r\n onButtonClick?: (uniqId?: string) => void\r\n}\r\n\r\nconst CTA: React.FC<CTAProps> = ({ title, desc, img, buttons, onButtonClick }) => {\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n return (\r\n <section className=\"container\">\r\n <div className=\"mx-auto w-full h-[606px]1 bg-gradient-to-b from-navy to-sapphire text-white rounded-2xl px-6 relative xl:min-h-[500px]\">\r\n <div className=\"space-y-12 relative z-10\">\r\n <div className=\"w-full grid grid-cols-1 lg:grid-cols-2\">\r\n <div></div>\r\n <div className=\"space-y-12 mb-24 mt-[128px] pr-8 lg:pr-8 xl:pr-28\">\r\n <div className=\" space-y-6\">\r\n <Heading level={2}>{title}</Heading>\r\n <Text\r\n variant=\"body\"\r\n className=\"text-whitish-opacity-60\"\r\n as=\"div\"\r\n >\r\n <SafeHtmlRenderer html={desc} />\r\n </Text>\r\n </div>\r\n\r\n <div className=\"flex space-x-4\">\r\n {buttons.map((button, index) => (\r\n <HeroButton key={index} {...button} onClick={() => onButtonClick?.(button.uniqId)} />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {img && (\r\n <div className=\"absolute bottom-0 left-0 z-0\">\r\n <ImageWrapper\r\n src={img}\r\n alt={title}\r\n width={654}\r\n height={570}\r\n objectFit=\"contain\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default CTA\r\n"],"names":["CTA","title","desc","img","buttons","onButtonClick","ImageWrapper","getAdapter","React","Heading","Text","SafeHtmlRenderer","button","index","HeroButton","CTA$1"],"mappings":";;;;;;AAgBA,MAAMA,IAA0B,CAAC,EAAE,OAAAC,GAAO,MAAAC,GAAM,KAAAC,GAAK,SAAAC,GAAS,eAAAC,QAAoB;AAC1E,QAAAC,IAAeC,EAAW,cAAc;AAE9C,SACGC,gBAAAA,EAAA,cAAA,WAAA,EAAQ,WAAU,
|
|
1
|
+
{"version":3,"file":"index.es39.js","sources":["../src/sections/CTA.tsx"],"sourcesContent":["import { CommonButtonProps } from './common'\r\nimport Heading from '@/components/core/typography/Heading'\r\nimport { HeroButton } from './Hero'\r\nimport React from 'react'\r\nimport SafeHtmlRenderer from '@/components/SafeHtml'\r\nimport Text from '@/components/core/typography/Text'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\nexport interface CTAProps {\r\n title: string\r\n desc: string\r\n img: string\r\n buttons: CommonButtonProps[]\r\n onButtonClick?: (uniqId?: string) => void\r\n}\r\n\r\nconst CTA: React.FC<CTAProps> = ({ title, desc, img, buttons, onButtonClick }) => {\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n return (\r\n <section className=\"container\">\r\n <div className=\"mx-auto w-full h-[606px]1 bg-gradient-to-b from-navy to-sapphire text-white rounded-2xl px-6 relative xl:min-h-[500px]\">\r\n <div className=\"space-y-12 relative z-10\">\r\n <div className=\"w-full grid grid-cols-1 lg:grid-cols-2\">\r\n <div></div>\r\n <div className=\"space-y-12 mb-24 mt-[128px] pr-8 lg:pr-8 xl:pr-28\">\r\n <div className=\" space-y-6\">\r\n <Heading level={2} as='div'>{title}</Heading>\r\n <Text\r\n variant=\"body\"\r\n className=\"text-whitish-opacity-60\"\r\n as=\"div\"\r\n >\r\n <SafeHtmlRenderer html={desc} />\r\n </Text>\r\n </div>\r\n\r\n <div className=\"flex space-x-4\">\r\n {buttons.map((button, index) => (\r\n <HeroButton key={index} {...button} onClick={() => onButtonClick?.(button.uniqId)} />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {img && (\r\n <div className=\"absolute bottom-0 left-0 z-0\">\r\n <ImageWrapper\r\n src={img}\r\n alt={title}\r\n width={654}\r\n height={570}\r\n objectFit=\"contain\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default CTA\r\n"],"names":["CTA","title","desc","img","buttons","onButtonClick","ImageWrapper","getAdapter","React","Heading","Text","SafeHtmlRenderer","button","index","HeroButton","CTA$1"],"mappings":";;;;;;AAgBA,MAAMA,IAA0B,CAAC,EAAE,OAAAC,GAAO,MAAAC,GAAM,KAAAC,GAAK,SAAAC,GAAS,eAAAC,QAAoB;AAC1E,QAAAC,IAAeC,EAAW,cAAc;AAE9C,SACGC,gBAAAA,EAAA,cAAA,WAAA,EAAQ,WAAU,+CAChB,OAAI,EAAA,WAAU,yHACb,GAAAA,gBAAAA,EAAA,cAAC,SAAI,WAAU,2BAAA,GACZA,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,yCACb,GAAAA,gBAAAA,EAAA,cAAC,OAAI,IAAA,GACJA,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,oDAAA,mCACZ,OAAI,EAAA,WAAU,aACb,GAAAA,gBAAAA,EAAA,cAACC,KAAQ,OAAO,GAAG,IAAG,MAAA,GAAOR,CAAM,GACnCO,gBAAAA,EAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,IAAG;AAAA,IAAA;AAAA,IAEHF,gBAAAA,EAAA,cAACG,GAAiB,EAAA,MAAMT,EAAM,CAAA;AAAA,EAAA,CAElC,GAECM,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,iBACZ,GAAAJ,EAAQ,IAAI,CAACQ,GAAQC,MACnBL,gBAAAA,EAAA,cAAAM,GAAA,EAAW,KAAKD,GAAQ,GAAGD,GAAQ,SAAS,MAAMP,IAAgBO,EAAO,MAAM,EAAG,CAAA,CACpF,CACH,CACF,CACF,CACF,GAECT,KACEK,gBAAAA,EAAA,cAAA,OAAA,EAAI,WAAU,+BACb,GAAAA,gBAAAA,EAAA;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,KAAKH;AAAA,MACL,KAAKF;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAU;AAAA,IAAA;AAAA,EAEd,CAAA,CAEJ,CACF;AAEJ,GAEAc,IAAef;"}
|
package/dist/index.es40.js
CHANGED
package/dist/index.es40.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es40.js","sources":["../src/sections/Hero.tsx"],"sourcesContent":["import { BreadcrumbProps, Breadcrumbs } from '@/components/breadcrumbs'\r\n\r\nimport { ButtonPrimary } from '@/components/ui/button'\r\nimport { CommonButtonProps } from './common'\r\nimport Heading from '@/components/core/typography/Heading'\r\nimport React from 'react'\r\nimport SafeHtmlRenderer from '@/components/SafeHtml'\r\nimport SearchInputWithButton from '@/components/ui/input/SearchInputWithButton'\r\nimport Text from '@/components/core/typography/Text'\r\nimport { cn } from '@/lib/utils/cn'\r\nimport { cva } from 'class-variance-authority'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\n// import { SearchInput } from '@/components/ui/input'\r\n\r\nconst contentContainerVariants = cva('', {\r\n variants: {\r\n size: {\r\n default: 'sm:pb-32',\r\n medium: 'sm:pb-[116px]',\r\n large: 'sm:pb-32', // not used, copy from default\r\n small: 'sm:pb-10',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst sliderContentVariants = cva('', {\r\n variants: {\r\n size: {\r\n default: 'sm:pb-[80px]',\r\n medium: 'sm:pb-6',\r\n small: 'sm:pb-6',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst titleVariants = cva('', {\r\n variants: {\r\n contentContainerSize: {\r\n default: 'mb-5 lg:max-w-[700px]',\r\n medium: 'lg:max-w-[590px]',\r\n large: 'lg:max-w-5xl',\r\n small: 'lg:max-w-[700px]', // not used, copy from default\r\n },\r\n },\r\n defaultVariants: {\r\n contentContainerSize: 'default',\r\n },\r\n})\r\n\r\nconst descVariants = cva('', {\r\n variants: {\r\n contentContainerSize: {\r\n default: 'lg:max-w-[460px]',\r\n medium: 'lg:max-w-[370px]',\r\n large: 'lg:max-w-2xl',\r\n small: 'lg:max-w-[460px]', // not used, copy from default\r\n },\r\n },\r\n defaultVariants: {\r\n contentContainerSize: 'default',\r\n },\r\n})\r\n\r\nexport interface HeroProps {\r\n title: string\r\n desc?: string\r\n price?: string\r\n oldPrice?: string\r\n image?: string\r\n buttons?: CommonButtonProps[]\r\n childrenComponentType?: 'search-news'\r\n breadcrumbs?: BreadcrumbProps[]\r\n bottomButtons?: CommonButtonProps[]\r\n size?: 'default' | 'small' | 'medium'\r\n contentContainerSize?: 'default' | 'medium' | 'small'\r\n contentContainerBottomSize?: 'default' | 'small'\r\n imageSize?: 'default' | 'small' | 'medium'\r\n linesImage?: string\r\n onButtonClick?: (uniqId?: string) => void\r\n}\r\n\r\nexport const HeroButton: React.FC<CommonButtonProps> = ({\r\n text,\r\n href,\r\n target,\r\n anchor,\r\n theme,\r\n className,\r\n linkClassName,\r\n iconDirection,\r\n onClick,\r\n}) => {\r\n if (href) {\r\n return (\r\n <ButtonPrimary\r\n href={href}\r\n theme={theme}\r\n className={cn(className)}\r\n linkClassName={linkClassName}\r\n iconDirection={iconDirection}\r\n target={target}\r\n >\r\n {text}\r\n </ButtonPrimary>\r\n )\r\n }\r\n\r\n if (anchor) {\r\n // TODO: the whole button is not clickable, but it should be\r\n return (\r\n <ButtonPrimary asChild theme={theme} iconDirection={iconDirection}>\r\n <a href={href}>{text}</a>\r\n </ButtonPrimary>\r\n )\r\n }\r\n\r\n if (target) {\r\n return (\r\n <ButtonPrimary asChild theme={theme} iconDirection={iconDirection}>\r\n <a href={href} target={target} rel=\"noopener noreferrer\">\r\n {text}\r\n </a>\r\n </ButtonPrimary>\r\n )\r\n }\r\n\r\n return (\r\n <ButtonPrimary\r\n theme={theme}\r\n iconDirection={iconDirection}\r\n onClick={onClick}\r\n className={cn(className)}\r\n >\r\n {text}\r\n </ButtonPrimary>\r\n )\r\n}\r\n\r\nconst childrenComponent = (componentType: 'search-news') => {\r\n switch (componentType) {\r\n case 'search-news':\r\n return (\r\n <div\r\n data-test-id=\"search-news\"\r\n className=\"w-full h-full flex justify-center items-center\"\r\n >\r\n <SearchInputWithButton\r\n placeholder=\"Фильтр по тарифам\"\r\n onChange={(event) => {\r\n console.log(event.target.value)\r\n }}\r\n className=\"w-[456px]\"\r\n // className=\"h-16 w-72 mt-2 bg-whitish\"\r\n />\r\n </div>\r\n )\r\n\r\n default:\r\n return null\r\n }\r\n}\r\n\r\nconst Hero: React.FC<HeroProps> = ({\r\n title,\r\n contentContainerSize,\r\n contentContainerBottomSize,\r\n desc,\r\n price,\r\n oldPrice,\r\n image,\r\n buttons,\r\n childrenComponentType,\r\n breadcrumbs,\r\n bottomButtons,\r\n size = 'default',\r\n imageSize,\r\n linesImage,\r\n onButtonClick,\r\n}) => {\r\n const imageWidth = (size: 'small' | 'medium' | 'default') => {\r\n switch (size) {\r\n case 'small':\r\n return 448\r\n case 'medium':\r\n return 552\r\n default:\r\n return 664\r\n }\r\n }\r\n const imageHeight = (size: 'small' | 'medium' | 'default') => {\r\n switch (size) {\r\n case 'small':\r\n return 336\r\n case 'medium':\r\n return 456\r\n default:\r\n return 544\r\n }\r\n }\r\n\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n return (\r\n <section className=\"container relative\">\r\n <div className=\"mx-auto w-full h-[606px]1 bg-gradient-to-b from-navy to-sapphire text-white rounded-2xl px-6 relative overflow-hidden\">\r\n <div\r\n data-test-id=\"content-container\"\r\n className={cn(\r\n 'w-full relative z-20 grid grid-cols-1 sm:grid-cols-9 pb-12',\r\n contentContainerVariants({\r\n size: contentContainerBottomSize || size,\r\n })\r\n )}\r\n >\r\n {/* Navigation */}\r\n <div className=\"right-divider_with-tongue1 col-span-2 mt-6 pr-4 relative hidden lg:block\">\r\n {breadcrumbs && <Breadcrumbs list={breadcrumbs} />}\r\n </div>\r\n\r\n {/* Slider Content */}\r\n <div\r\n className={cn(\r\n 'w-auto sm:p-10 pt-10 sm:pt-32 flex flex-col justify-center items-start col-span-7 border-[1px] border-t-0 border-r-0 border-b-0 border-l-0 lg:border-l-[1px] border-whitish-opacity-16 border-solid pb-4',\r\n sliderContentVariants({ size })\r\n )}\r\n >\r\n <Heading\r\n level={1}\r\n as={'h1'}\r\n className={cn('', titleVariants({ contentContainerSize }))}\r\n >\r\n <SafeHtmlRenderer html={title} />\r\n </Heading>\r\n\r\n <div className=\"space-y-8\">\r\n <Text\r\n variant=\"body\"\r\n className={cn(\r\n descVariants({ contentContainerSize }),\r\n 'text-whitish-opacity-60'\r\n )}\r\n >\r\n {desc}\r\n </Text>\r\n\r\n {(price || oldPrice) && (\r\n <div className=\"flex space-x-5 items-baseline\">\r\n {oldPrice && (\r\n <Text\r\n variant=\"lead-text\"\r\n className=\"text-whitish-opacity-32 line-through\"\r\n >\r\n {oldPrice}\r\n </Text>\r\n )}\r\n <Heading level={3} as={'div'}>\r\n {price}\r\n </Heading>\r\n </div>\r\n )}\r\n\r\n {buttons && (\r\n <div className=\"flex gap-4 mt-12 w-full\">\r\n {buttons.map((button) => (\r\n <HeroButton\r\n key={button.text}\r\n className=\"w-fit\"\r\n target={button.target}\r\n {...button}\r\n onClick={() => onButtonClick?.(button.uniqId)}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {childrenComponentType && (\r\n <div className=\"mt-5\">\r\n {childrenComponent(childrenComponentType)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {bottomButtons && (\r\n <div className=\"flex gap-4 absolute bottom-8 z-30 w-[96%] mx-auto\">\r\n {bottomButtons.map((button) => (\r\n <HeroButton\r\n key={button.text}\r\n theme=\"opacity\"\r\n {...button}\r\n className=\"w-full backdrop-blur-[8px]\"\r\n linkClassName=\"w-full\"\r\n onClick={() => onButtonClick?.(button.uniqId)}\r\n // target={button.target}\r\n target=\"_blank\"\r\n />\r\n ))}\r\n </div>\r\n )}\r\n\r\n {image && (\r\n <div className=\"hidden sm:block absolute bottom-0 right-6 floating\">\r\n <ImageWrapper\r\n src={image}\r\n alt={title}\r\n // width={size === \"default\" ? 664 : 448}\r\n // height={size === \"default\" ? 544 : 336}\r\n width={imageWidth(imageSize || size)}\r\n height={imageHeight(imageSize || size)}\r\n objectFit=\"contain\"\r\n />\r\n </div>\r\n )}\r\n\r\n {linesImage && (\r\n <div className=\"absolute bottom-0 right-6 fadeLines\">\r\n <ImageWrapper\r\n src={linesImage}\r\n alt={title}\r\n // width={size === \"default\" ? 664 : 448}\r\n // height={size === \"default\" ? 544 : 336}\r\n width={imageWidth(imageSize || size)}\r\n height={imageHeight(imageSize || size)}\r\n objectFit=\"contain\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default Hero\r\n"],"names":["contentContainerVariants","cva","sliderContentVariants","titleVariants","descVariants","HeroButton","text","href","target","anchor","theme","className","linkClassName","iconDirection","onClick","React","ButtonPrimary","cn","childrenComponent","componentType","SearchInputWithButton","event","Hero","title","contentContainerSize","contentContainerBottomSize","desc","price","oldPrice","image","buttons","childrenComponentType","breadcrumbs","bottomButtons","size","imageSize","linesImage","onButtonClick","imageWidth","imageHeight","ImageWrapper","getAdapter","Breadcrumbs","Heading","SafeHtmlRenderer","Text","button","Hero$1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es40.js","sources":["../src/sections/Hero.tsx"],"sourcesContent":["import { BreadcrumbProps, Breadcrumbs } from '@/components/breadcrumbs'\r\n\r\nimport { ButtonPrimary } from '@/components/ui/button'\r\nimport { CommonButtonProps } from './common'\r\nimport Heading from '@/components/core/typography/Heading'\r\nimport React from 'react'\r\nimport SafeHtmlRenderer from '@/components/SafeHtml'\r\nimport SearchInputWithButton from '@/components/ui/input/SearchInputWithButton'\r\nimport Text from '@/components/core/typography/Text'\r\nimport { cn } from '@/lib/utils/cn'\r\nimport { cva } from 'class-variance-authority'\r\nimport { getAdapter } from '@/Adapters'\r\n\r\n// import { SearchInput } from '@/components/ui/input'\r\n\r\nconst contentContainerVariants = cva('', {\r\n variants: {\r\n size: {\r\n default: 'sm:pb-32',\r\n medium: 'sm:pb-[116px]',\r\n large: 'sm:pb-32', // not used, copy from default\r\n smaller: 'sm:pb-16',\r\n small: 'sm:pb-10',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst sliderContentVariants = cva('', {\r\n variants: {\r\n size: {\r\n default: 'sm:pb-[80px]',\r\n medium: 'sm:pb-6',\r\n small: 'sm:pb-6',\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'default',\r\n },\r\n})\r\n\r\nconst titleVariants = cva('', {\r\n variants: {\r\n contentContainerSize: {\r\n default: 'mb-5 lg:max-w-[700px]',\r\n medium: 'lg:max-w-[590px]',\r\n large: 'lg:max-w-5xl',\r\n small: 'lg:max-w-[700px]', // not used, copy from default\r\n },\r\n },\r\n defaultVariants: {\r\n contentContainerSize: 'default',\r\n },\r\n})\r\n\r\nconst descVariants = cva('', {\r\n variants: {\r\n contentContainerSize: {\r\n default: 'lg:max-w-[460px]',\r\n medium: 'lg:max-w-[370px]',\r\n large: 'lg:max-w-2xl',\r\n small: 'lg:max-w-[460px]', // not used, copy from default\r\n },\r\n },\r\n defaultVariants: {\r\n contentContainerSize: 'default',\r\n },\r\n})\r\n\r\nexport interface HeroProps {\r\n title: string\r\n desc?: string\r\n price?: string\r\n oldPrice?: string\r\n image?: string\r\n buttons?: CommonButtonProps[]\r\n childrenComponentType?: 'search-news'\r\n breadcrumbs?: BreadcrumbProps[]\r\n bottomButtons?: CommonButtonProps[]\r\n size?: 'default' | 'small' | 'medium'\r\n contentContainerSize?: 'default' | 'medium' | 'small'\r\n contentContainerBottomSize?: 'default' | 'small' | 'smaller'\r\n imageSize?: 'default' | 'small' | 'medium'\r\n linesImage?: string\r\n onButtonClick?: (uniqId?: string) => void\r\n}\r\n\r\nexport const HeroButton: React.FC<CommonButtonProps> = ({\r\n text,\r\n href,\r\n target,\r\n anchor,\r\n theme,\r\n className,\r\n linkClassName,\r\n iconDirection,\r\n onClick,\r\n}) => {\r\n if (href) {\r\n return (\r\n <ButtonPrimary\r\n href={href}\r\n theme={theme}\r\n className={cn(className)}\r\n linkClassName={linkClassName}\r\n iconDirection={iconDirection}\r\n target={target}\r\n >\r\n {text}\r\n </ButtonPrimary>\r\n )\r\n }\r\n\r\n if (anchor) {\r\n // TODO: the whole button is not clickable, but it should be\r\n return (\r\n <ButtonPrimary asChild theme={theme} iconDirection={iconDirection}>\r\n <a href={href}>{text}</a>\r\n </ButtonPrimary>\r\n )\r\n }\r\n\r\n if (target) {\r\n return (\r\n <ButtonPrimary asChild theme={theme} iconDirection={iconDirection}>\r\n <a href={href} target={target} rel=\"noopener noreferrer\">\r\n {text}\r\n </a>\r\n </ButtonPrimary>\r\n )\r\n }\r\n\r\n return (\r\n <ButtonPrimary\r\n theme={theme}\r\n iconDirection={iconDirection}\r\n onClick={onClick}\r\n className={cn(className)}\r\n >\r\n {text}\r\n </ButtonPrimary>\r\n )\r\n}\r\n\r\nconst childrenComponent = (componentType: 'search-news') => {\r\n switch (componentType) {\r\n case 'search-news':\r\n return (\r\n <div\r\n data-test-id=\"search-news\"\r\n className=\"w-full h-full flex justify-center items-center\"\r\n >\r\n <SearchInputWithButton\r\n placeholder=\"Фильтр по тарифам\"\r\n onChange={(event) => {\r\n console.log(event.target.value)\r\n }}\r\n className=\"w-[456px]\"\r\n // className=\"h-16 w-72 mt-2 bg-whitish\"\r\n />\r\n </div>\r\n )\r\n\r\n default:\r\n return null\r\n }\r\n}\r\n\r\nconst Hero: React.FC<HeroProps> = ({\r\n title,\r\n contentContainerSize,\r\n contentContainerBottomSize,\r\n desc,\r\n price,\r\n oldPrice,\r\n image,\r\n buttons,\r\n childrenComponentType,\r\n breadcrumbs,\r\n bottomButtons,\r\n size = 'default',\r\n imageSize,\r\n linesImage,\r\n onButtonClick,\r\n}) => {\r\n const imageWidth = (size: 'small' | 'medium' | 'default') => {\r\n switch (size) {\r\n case 'small':\r\n return 448\r\n case 'medium':\r\n return 552\r\n default:\r\n return 664\r\n }\r\n }\r\n const imageHeight = (size: 'small' | 'medium' | 'default') => {\r\n switch (size) {\r\n case 'small':\r\n return 336\r\n case 'medium':\r\n return 456\r\n default:\r\n return 544\r\n }\r\n }\r\n\r\n const ImageWrapper = getAdapter('ImageWrapper')\r\n\r\n return (\r\n <section className=\"container relative\">\r\n <div className=\"mx-auto w-full h-[606px]1 bg-gradient-to-b from-navy to-sapphire text-white rounded-2xl px-6 relative overflow-hidden\">\r\n <div\r\n data-test-id=\"content-container\"\r\n className={cn(\r\n 'w-full relative z-20 grid grid-cols-1 sm:grid-cols-9 pb-12',\r\n contentContainerVariants({\r\n size: contentContainerBottomSize || size,\r\n })\r\n )}\r\n >\r\n {/* Navigation */}\r\n <div className=\"right-divider_with-tongue1 col-span-2 mt-6 pr-4 relative hidden lg:block\">\r\n {breadcrumbs && <Breadcrumbs list={breadcrumbs} />}\r\n </div>\r\n\r\n {/* Slider Content */}\r\n <div\r\n className={cn(\r\n 'w-auto sm:p-10 pt-10 sm:pt-32 flex flex-col justify-center items-start col-span-7 border-[1px] border-t-0 border-r-0 border-b-0 border-l-0 lg:border-l-[1px] border-whitish-opacity-16 border-solid pb-4',\r\n sliderContentVariants({ size })\r\n )}\r\n >\r\n <Heading\r\n level={1}\r\n as={'h1'}\r\n className={cn('', titleVariants({ contentContainerSize }))}\r\n >\r\n <SafeHtmlRenderer html={title} />\r\n </Heading>\r\n\r\n <div className=\"space-y-8\">\r\n <Text\r\n variant=\"body\"\r\n className={cn(\r\n descVariants({ contentContainerSize }),\r\n 'text-whitish-opacity-60'\r\n )}\r\n >\r\n {desc}\r\n </Text>\r\n\r\n {(price || oldPrice) && (\r\n <div className=\"flex space-x-5 items-baseline\">\r\n {oldPrice && (\r\n <Text\r\n variant=\"lead-text\"\r\n className=\"text-whitish-opacity-32 line-through\"\r\n >\r\n {oldPrice}\r\n </Text>\r\n )}\r\n <Heading level={3} as={'div'}>\r\n {price}\r\n </Heading>\r\n </div>\r\n )}\r\n\r\n {buttons && (\r\n <div className=\"flex gap-4 mt-12 w-full\">\r\n {buttons.map((button) => (\r\n <HeroButton\r\n key={button.text}\r\n className=\"w-fit\"\r\n target={button.target}\r\n {...button}\r\n onClick={() => onButtonClick?.(button.uniqId)}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {childrenComponentType && (\r\n <div className=\"mt-5\">\r\n {childrenComponent(childrenComponentType)}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {bottomButtons && (\r\n <div className=\"flex gap-4 absolute bottom-8 z-30 w-[96%] mx-auto\">\r\n {bottomButtons.map((button) => (\r\n <HeroButton\r\n key={button.text}\r\n theme=\"opacity\"\r\n {...button}\r\n className=\"w-full backdrop-blur-[8px]\"\r\n linkClassName=\"w-full\"\r\n onClick={() => onButtonClick?.(button.uniqId)}\r\n // target={button.target}\r\n target=\"_blank\"\r\n />\r\n ))}\r\n </div>\r\n )}\r\n\r\n {image && (\r\n <div className=\"hidden sm:block absolute bottom-0 right-6 floating\">\r\n <ImageWrapper\r\n src={image}\r\n alt={title}\r\n // width={size === \"default\" ? 664 : 448}\r\n // height={size === \"default\" ? 544 : 336}\r\n width={imageWidth(imageSize || size)}\r\n height={imageHeight(imageSize || size)}\r\n objectFit=\"contain\"\r\n />\r\n </div>\r\n )}\r\n\r\n {linesImage && (\r\n <div className=\"absolute bottom-0 right-6 fadeLines\">\r\n <ImageWrapper\r\n src={linesImage}\r\n alt={title}\r\n // width={size === \"default\" ? 664 : 448}\r\n // height={size === \"default\" ? 544 : 336}\r\n width={imageWidth(imageSize || size)}\r\n height={imageHeight(imageSize || size)}\r\n objectFit=\"contain\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </section>\r\n )\r\n}\r\n\r\nexport default Hero\r\n"],"names":["contentContainerVariants","cva","sliderContentVariants","titleVariants","descVariants","HeroButton","text","href","target","anchor","theme","className","linkClassName","iconDirection","onClick","React","ButtonPrimary","cn","childrenComponent","componentType","SearchInputWithButton","event","Hero","title","contentContainerSize","contentContainerBottomSize","desc","price","oldPrice","image","buttons","childrenComponentType","breadcrumbs","bottomButtons","size","imageSize","linesImage","onButtonClick","imageWidth","imageHeight","ImageWrapper","getAdapter","Breadcrumbs","Heading","SafeHtmlRenderer","Text","button","Hero$1"],"mappings":"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"}
|
package/dist/sections/Hero.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface HeroProps {
|
|
|
14
14
|
bottomButtons?: CommonButtonProps[];
|
|
15
15
|
size?: 'default' | 'small' | 'medium';
|
|
16
16
|
contentContainerSize?: 'default' | 'medium' | 'small';
|
|
17
|
-
contentContainerBottomSize?: 'default' | 'small';
|
|
17
|
+
contentContainerBottomSize?: 'default' | 'small' | 'smaller';
|
|
18
18
|
imageSize?: 'default' | 'small' | 'medium';
|
|
19
19
|
linesImage?: string;
|
|
20
20
|
onButtonClick?: (uniqId?: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../src/sections/Hero.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,0BAA0B,CAAA;AAGvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE5C,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../src/sections/Hero.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAe,MAAM,0BAA0B,CAAA;AAGvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE5C,OAAO,KAAK,MAAM,OAAO,CAAA;AAkEzB,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC7B,qBAAqB,CAAC,EAAE,aAAa,CAAA;IACrC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAA;IAC/B,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACnC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IACrC,oBAAoB,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAA;IACrD,0BAA0B,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IAC5D,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuDlD,CAAA;AA0BD,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAyK7B,CAAA;AAED,eAAe,IAAI,CAAA"}
|
package/dist/styles.css
CHANGED
|
@@ -2747,6 +2747,9 @@ html {
|
|
|
2747
2747
|
.sm\:pb-10{
|
|
2748
2748
|
padding-bottom: 2.5rem;
|
|
2749
2749
|
}
|
|
2750
|
+
.sm\:pb-16{
|
|
2751
|
+
padding-bottom: 4rem;
|
|
2752
|
+
}
|
|
2750
2753
|
.sm\:pb-32{
|
|
2751
2754
|
padding-bottom: 8rem;
|
|
2752
2755
|
}
|
|
@@ -2849,10 +2852,21 @@ html {
|
|
|
2849
2852
|
.xl\:grid-cols-4{
|
|
2850
2853
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
2851
2854
|
}
|
|
2855
|
+
.xl\:grid-cols-5{
|
|
2856
|
+
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
2857
|
+
}
|
|
2858
|
+
.xl\:grid-cols-6{
|
|
2859
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
2860
|
+
}
|
|
2852
2861
|
.xl\:pr-28{
|
|
2853
2862
|
padding-right: 7rem;
|
|
2854
2863
|
}
|
|
2855
2864
|
}
|
|
2865
|
+
@media (min-width: 1440px){
|
|
2866
|
+
.\32xl\:max-w-\[456px\]{
|
|
2867
|
+
max-width: 456px;
|
|
2868
|
+
}
|
|
2869
|
+
}
|
|
2856
2870
|
.\[\&\>\.icon-wrapper\>svg\]\:rounded-3xl>.icon-wrapper>svg{
|
|
2857
2871
|
border-radius: 1.5rem;
|
|
2858
2872
|
}
|