ics-ui-kit 0.1.0-alpha.16 → 0.1.0-alpha.18
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/{Button-CY-0kNSg.js → Button-DgsuPzCI.js} +16 -15
- package/dist/{Button-CY-0kNSg.js.map → Button-DgsuPzCI.js.map} +1 -1
- package/dist/{ImagePreview-ClK3P8ol.js → ImagePreview-DSifjtyd.js} +2 -2
- package/dist/{ImagePreview-ClK3P8ol.js.map → ImagePreview-DSifjtyd.js.map} +1 -1
- package/dist/{ImageUploader-BRD6R24k.js → ImageUploader-NrGVMNWN.js} +2 -2
- package/dist/{ImageUploader-BRD6R24k.js.map → ImageUploader-NrGVMNWN.js.map} +1 -1
- package/dist/SearchSelectTag-9aMVvXqp.js +95 -0
- package/dist/SearchSelectTag-9aMVvXqp.js.map +1 -0
- package/dist/components/button.js +1 -1
- package/dist/components/card/Card.d.ts +5 -153
- package/dist/components/card/Card.stories.d.ts +9 -3
- package/dist/components/card/components/ActionCard.d.ts +7 -0
- package/dist/components/card/components/CardFeature.d.ts +11 -0
- package/dist/components/card/components/CardFolder.d.ts +9 -0
- package/dist/components/card/components/CardFooter.d.ts +11 -0
- package/dist/components/card/components/CardMenuTrigger.d.ts +8 -0
- package/dist/components/card/components/CardSubTitle.d.ts +11 -0
- package/dist/components/card/components/CardTitle.d.ts +7 -0
- package/dist/components/card/components/CardVisualBadge.d.ts +11 -0
- package/dist/components/card/index.d.ts +18 -0
- package/dist/components/card/styles.d.ts +3 -0
- package/dist/components/card.js +163 -78
- package/dist/components/card.js.map +1 -1
- package/dist/components/carousel.js +1 -1
- package/dist/components/drawer.js +1 -1
- package/dist/components/form.js +1 -1
- package/dist/components/gallery.js +2 -2
- package/dist/components/image-preview.js +1 -1
- package/dist/components/image-uploader.js +1 -1
- package/dist/components/menu-item.js +1 -1
- package/dist/components/progress/Progress.d.ts +18 -0
- package/dist/components/progress/Progress.stories.d.ts +8 -0
- package/dist/components/progress/ProgressBarStyles.d.ts +131 -0
- package/dist/components/progress/components/progress-icon/ProgressIcon.d.ts +50 -0
- package/dist/components/progress/components/progress-icon/ProgressIcon.stories.d.ts +6 -0
- package/dist/components/progress/components/progress-icon-button/ProgressIconButton.d.ts +101 -0
- package/dist/components/progress/components/progress-icon-button/ProgressIconButton.stories.d.ts +6 -0
- package/dist/components/progress/components/progress-text/ProgressText.d.ts +93 -0
- package/dist/components/progress/components/progress-text/ProgressText.stories.d.ts +6 -0
- package/dist/components/progress/index.d.ts +10 -0
- package/dist/components/progress/templates/ProgressBlockTemplate.d.ts +16 -0
- package/dist/components/progress/templates/ProgressBlockTemplate.stories.d.ts +7 -0
- package/dist/components/progress.d.ts +2 -0
- package/dist/components/progress.js +295 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/search-select/index.d.ts +2 -0
- package/dist/components/search-select/multi-select/MultiSelect.stories.d.ts +1 -0
- package/dist/components/search-select.js +352 -260
- package/dist/components/search-select.js.map +1 -1
- package/dist/components/tag-input.js +110 -186
- package/dist/components/tag-input.js.map +1 -1
- package/dist/components/toast/Toast.d.ts +2 -0
- package/dist/components/toast/Toast.stories.d.ts +1 -0
- package/dist/components/toast/ToastView.d.ts +1 -1
- package/dist/components/toast/hooks/useToastContext.d.ts +1 -1
- package/dist/components/toast.js +176 -174
- package/dist/components/toast.js.map +1 -1
- package/dist/lib/utils/storybook.d.ts +1 -0
- package/dist/styles-scoped.css +158 -15
- package/dist/styles.css +158 -15
- package/package.json +2 -1
- package/dist/useControllableState-B3ZaoXSG.js +0 -15
- package/dist/useControllableState-B3ZaoXSG.js.map +0 -1
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
var g = Object.defineProperty, j = Object.defineProperties;
|
|
2
|
-
var
|
|
2
|
+
var y = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var e = Object.getOwnPropertySymbols;
|
|
4
|
-
var l = Object.prototype.hasOwnProperty,
|
|
5
|
-
var m = (s, t, a) => t in s ? g(s, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : s[t] = a,
|
|
4
|
+
var l = Object.prototype.hasOwnProperty, d = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var m = (s, t, a) => t in s ? g(s, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : s[t] = a, f = (s, t) => {
|
|
6
6
|
for (var a in t || (t = {}))
|
|
7
7
|
l.call(t, a) && m(s, a, t[a]);
|
|
8
8
|
if (e)
|
|
9
9
|
for (var a of e(t))
|
|
10
|
-
|
|
10
|
+
d.call(t, a) && m(s, a, t[a]);
|
|
11
11
|
return s;
|
|
12
|
-
}, p = (s, t) => j(s,
|
|
12
|
+
}, p = (s, t) => j(s, y(t));
|
|
13
13
|
var u = (s, t) => {
|
|
14
14
|
var a = {};
|
|
15
15
|
for (var n in s)
|
|
16
16
|
l.call(s, n) && t.indexOf(n) < 0 && (a[n] = s[n]);
|
|
17
17
|
if (s != null && e)
|
|
18
18
|
for (var n of e(s))
|
|
19
|
-
t.indexOf(n) < 0 &&
|
|
19
|
+
t.indexOf(n) < 0 && d.call(s, n) && (a[n] = s[n]);
|
|
20
20
|
return a;
|
|
21
21
|
};
|
|
22
|
-
import { jsx as c, jsxs as
|
|
22
|
+
import { jsx as c, jsxs as v } from "react/jsx-runtime";
|
|
23
23
|
import I from "react";
|
|
24
24
|
import { c as R } from "./index-CR-odn5-.js";
|
|
25
25
|
import { B as V } from "./ButtonBase-_OSOwZGm.js";
|
|
@@ -40,18 +40,19 @@ const _ = R({
|
|
|
40
40
|
defaultVariants: {
|
|
41
41
|
size: "md"
|
|
42
42
|
}
|
|
43
|
-
}),
|
|
44
|
-
(
|
|
45
|
-
var i =
|
|
46
|
-
const o = _({ size: a }),
|
|
47
|
-
return /* @__PURE__ */ c(V, p(
|
|
48
|
-
|
|
43
|
+
}), b = I.forwardRef(
|
|
44
|
+
(z, N) => {
|
|
45
|
+
var i = z, { startIcon: s, endIcon: t, size: a, children: n, iconClassName: r, containerClassName: x } = i, B = u(i, ["startIcon", "endIcon", "size", "children", "iconClassName", "containerClassName"]);
|
|
46
|
+
const o = _({ size: a }), h = s && /* @__PURE__ */ c(s, { className: o.icon({ className: r }) }), w = t && /* @__PURE__ */ c(t, { className: o.icon({ className: r }) });
|
|
47
|
+
return /* @__PURE__ */ c(V, p(f({}, B), { size: a, ref: N, children: /* @__PURE__ */ v("div", { className: o.container({ className: x }), children: [
|
|
48
|
+
h,
|
|
49
49
|
n,
|
|
50
50
|
w
|
|
51
51
|
] }) }));
|
|
52
52
|
}
|
|
53
53
|
);
|
|
54
|
+
b.displayName = "Button";
|
|
54
55
|
export {
|
|
55
|
-
|
|
56
|
+
b as B
|
|
56
57
|
};
|
|
57
|
-
//# sourceMappingURL=Button-
|
|
58
|
+
//# sourceMappingURL=Button-DgsuPzCI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button-
|
|
1
|
+
{"version":3,"file":"Button-DgsuPzCI.js","sources":["../src/components/button/button/Button.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { ButtonBase, ButtonBaseProps } from \"../button-base/ButtonBase\";\r\n\r\nconst buttonVariants = tv({\r\n\tslots: {\r\n\t\tcontainer: \"flex items-center justify-center gap-2\",\r\n\t\ticon: \"h-4 w-4\"\r\n\t},\r\n\tvariants: {\r\n\t\tsize: {\r\n\t\t\txs: { icon: \"h-3 w-3\" },\r\n\t\t\tsm: { icon: \"h-3.5 w-3.5\" },\r\n\t\t\tmd: {},\r\n\t\t\tlg: {},\r\n\t\t\txl: { container: \"gap-3\" }\r\n\t\t}\r\n\t},\r\n\tdefaultVariants: {\r\n\t\tsize: \"md\"\r\n\t}\r\n});\r\n\r\nexport type ButtonProps = PropsWithChildren<\r\n\tButtonBaseProps & {\r\n\t\tstartIcon?: React.ElementType;\r\n\t\tendIcon?: React.ElementType;\r\n\t\tcontainerClassName?: string;\r\n\t\ticonClassName?: string;\r\n\t}\r\n>;\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n\t({ startIcon: StartIcon, endIcon: EndIcon, size, children, iconClassName, containerClassName, ...props }, ref) => {\r\n\t\tconst styles = buttonVariants({ size });\r\n\r\n\t\tconst startIconEl = StartIcon && <StartIcon className={styles.icon({ className: iconClassName })} />;\r\n\t\tconst endIconEl = EndIcon && <EndIcon className={styles.icon({ className: iconClassName })} />;\r\n\r\n\t\treturn (\r\n\t\t\t<ButtonBase {...props} size={size} ref={ref}>\r\n\t\t\t\t<div className={styles.container({ className: containerClassName })}>\r\n\t\t\t\t\t{startIconEl}\r\n\t\t\t\t\t{children}\r\n\t\t\t\t\t{endIconEl}\r\n\t\t\t\t</div>\r\n\t\t\t</ButtonBase>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n"],"names":["buttonVariants","tv","Button","React","_a","ref","_b","StartIcon","EndIcon","size","children","iconClassName","containerClassName","props","__objRest","styles","startIconEl","jsx","endIconEl","ButtonBase","__spreadProps","__spreadValues","jsxs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAMA,IAAiBC,EAAG;AAAA,EACzB,OAAO;AAAA,IACN,WAAW;AAAA,IACX,MAAM;AAAA,EACP;AAAA,EACA,UAAU;AAAA,IACT,MAAM;AAAA,MACL,IAAI,EAAE,MAAM,UAAU;AAAA,MACtB,IAAI,EAAE,MAAM,cAAc;AAAA,MAC1B,IAAI,CAAC;AAAA,MACL,IAAI,CAAC;AAAA,MACL,IAAI,EAAE,WAAW,QAAQ;AAAA,IAAA;AAAA,EAE3B;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,EAAA;AAER,CAAC,GAWYC,IAASC,EAAM;AAAA,EAC3B,CAACC,GAAyGC,MAAQ;AAAjH,QAAAC,IAAAF,GAAE,aAAWG,GAAW,SAASC,GAAS,MAAAC,GAAM,UAAAC,GAAU,eAAAC,GAAe,oBAAAC,MAAzEN,GAAgGO,IAAAC,EAAhGR,GAAgG,CAA9F,aAAsB,WAAkB,QAAM,YAAU,iBAAe;AACzE,UAAMS,IAASf,EAAe,EAAE,MAAAS,GAAM,GAEhCO,IAAcT,KAAa,gBAAAU,EAACV,GAAU,EAAA,WAAWQ,EAAO,KAAK,EAAE,WAAWJ,EAAc,CAAC,EAAG,CAAA,GAC5FO,IAAYV,KAAW,gBAAAS,EAACT,GAAQ,EAAA,WAAWO,EAAO,KAAK,EAAE,WAAWJ,EAAc,CAAC,EAAG,CAAA;AAE5F,WACE,gBAAAM,EAAAE,GAAAC,EAAAC,EAAA,IAAeR,IAAf,EAAsB,MAAAJ,GAAY,KAAAJ,GAClC,UAAA,gBAAAiB,EAAC,OAAI,EAAA,WAAWP,EAAO,UAAU,EAAE,WAAWH,EAAA,CAAoB,GAChE,UAAA;AAAA,MAAAI;AAAA,MACAN;AAAA,MACAQ;AAAA,IAAA,EAAA,CACF,EACD,EAAA;AAAA,EAAA;AAGH;AAEAhB,EAAO,cAAc;"}
|
|
@@ -22,7 +22,7 @@ var v = (t, e) => {
|
|
|
22
22
|
import { jsx as s, jsxs as N } from "react/jsx-runtime";
|
|
23
23
|
import P, { useCallback as d } from "react";
|
|
24
24
|
import { c as j } from "./index-CR-odn5-.js";
|
|
25
|
-
import { B as W } from "./Button-
|
|
25
|
+
import { B as W } from "./Button-DgsuPzCI.js";
|
|
26
26
|
import { I as B } from "./Icon-CSPBHL_x.js";
|
|
27
27
|
import { c as I } from "./createLucideIcon-DgrNxRV5.js";
|
|
28
28
|
import { D as _ } from "./download-CVOGyQ0e.js";
|
|
@@ -153,4 +153,4 @@ F.displayName = "ImagePreview";
|
|
|
153
153
|
export {
|
|
154
154
|
F as I
|
|
155
155
|
};
|
|
156
|
-
//# sourceMappingURL=ImagePreview-
|
|
156
|
+
//# sourceMappingURL=ImagePreview-DSifjtyd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePreview-ClK3P8ol.js","sources":["../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/image-off.js","../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/rotate-cw.js","../src/components/image-uploader/components/ImageUploaderButton.tsx","../src/components/image-preview/ImagePreview.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ImageOff = createLucideIcon(\"ImageOff\", [\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"2\", y2: \"22\", key: \"a6p6uj\" }],\n [\"path\", { d: \"M10.41 10.41a2 2 0 1 1-2.83-2.83\", key: \"1bzlo9\" }],\n [\"line\", { x1: \"13.5\", x2: \"6\", y1: \"13.5\", y2: \"21\", key: \"1q0aeu\" }],\n [\"line\", { x1: \"18\", x2: \"21\", y1: \"12\", y2: \"15\", key: \"5mozeu\" }],\n [\n \"path\",\n {\n d: \"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59\",\n key: \"mmje98\"\n }\n ],\n [\"path\", { d: \"M21 15V5a2 2 0 0 0-2-2H9\", key: \"43el77\" }]\n]);\n\nexport { ImageOff as default };\n//# sourceMappingURL=image-off.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst RotateCw = createLucideIcon(\"RotateCw\", [\n [\"path\", { d: \"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\", key: \"1p45f6\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }]\n]);\n\nexport { RotateCw as default };\n//# sourceMappingURL=rotate-cw.js.map\n","import { Button } from \"@/components/button\";\r\nimport { Icon } from \"@/components/icon\";\r\nimport { LucideIcon } from \"lucide-react\";\r\nimport React from \"react\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\n\r\nconst imageUploaderButtonStyles = tv({\r\n\tslots: {\r\n\t\tcontainer: \"h-4 w-4 rounded-full border border-muted bg-primary-bg p-1\",\r\n\t\ticon: \"h-2 w-2 stroke-[3px] text-muted\"\r\n\t}\r\n});\r\n\r\nexport type ImageUploaderButtonProps = React.HTMLAttributes<HTMLButtonElement> &\r\n\tVariantProps<typeof imageUploaderButtonStyles> & {\r\n\t\ticon: LucideIcon;\r\n\t};\r\n\r\nexport const ImageUploaderButton = React.forwardRef<HTMLButtonElement, ImageUploaderButtonProps>(\r\n\t({ className, onClick, icon, ...props }, ref) => {\r\n\t\tconst styles = imageUploaderButtonStyles();\r\n\r\n\t\treturn (\r\n\t\t\t<Button\r\n\t\t\t\tvariant=\"outline\"\r\n\t\t\t\tref={ref}\r\n\t\t\t\tclassName={styles.container({ className })}\r\n\t\t\t\tonClick={onClick}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<Icon className={styles.icon()} icon={icon} />\r\n\t\t\t</Button>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nImageUploaderButton.displayName = \"ImageUploaderButton\";\r\n","import React, { useCallback, KeyboardEvent } from \"react\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\nimport { ImageUploaderButton } from \"../image-uploader/components/ImageUploaderButton\";\r\nimport { Download, ImageOff, RotateCw, X } from \"lucide-react\";\r\nimport { Icon } from \"../icon\";\r\n\r\nconst imagePreviewStyles = tv({\r\n\tslots: {\r\n\t\tcontainer:\r\n\t\t\t\"group relative flex aspect-square cursor-pointer items-center justify-center rounded-xl outline-none focus-visible:shadow-focus\",\r\n\t\timage: \"aspect-square h-full rounded-xl\",\r\n\t\tbuttonWrapper: \"absolute right-1 top-1 flex gap-1\",\r\n\t\ticon: \"h-8 w-8 stroke-[1.5px] text-muted\",\r\n\t\toverlay: \"absolute inset-0 rounded-xl group-hover:bg-slate-900/20\"\r\n\t},\r\n\tvariants: {\r\n\t\terror: {\r\n\t\t\ttrue: {\r\n\t\t\t\tcontainer:\r\n\t\t\t\t\t\"outline outline-1 outline-status-error-secondary-border hover:bg-status-error-bg hover:outline-status-error-primary-border focus-visible:shadow-focus-error focus-visible:outline-status-error-secondary-border\"\r\n\t\t\t}\r\n\t\t},\r\n\t\tsize: {\r\n\t\t\txs: { container: \"h-[3.75rem] w-[3.75rem]\" },\r\n\t\t\tsm: { container: \"h-20 w-20\" },\r\n\t\t\tmd: { container: \"h-[7.5rem] w-[7.5rem]\" },\r\n\t\t\tlg: { container: \"h-[11.5rem] w-[11.5rem]\" },\r\n\t\t\txl: { container: \"h-96 w-96\" }\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport type ImagePreviewProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"onClick\"> &\r\n\tVariantProps<typeof imagePreviewStyles> & {\r\n\t\turl: string;\r\n\t\talt: string;\r\n\t\treadonly?: boolean;\r\n\t\tonImageClick?: (e: React.MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => void;\r\n\t\tonDownload?: (url: string) => void;\r\n\t\tonRetry?: () => void;\r\n\t\tonClear?: () => void;\r\n\t};\r\n\r\nexport const ImagePreview = React.forwardRef<HTMLDivElement, ImagePreviewProps>(\r\n\t({ className, error, readonly, onClear, onRetry, size, url, alt, onImageClick, onDownload, ...props }, ref) => {\r\n\t\tconst styles = imagePreviewStyles({ className, size, error });\r\n\r\n\t\tconst handleDownload = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tonDownload?.(url);\r\n\t\t\t},\r\n\t\t\t[onDownload, url]\r\n\t\t);\r\n\r\n\t\tconst handleClear = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tonClear?.();\r\n\t\t\t},\r\n\t\t\t[onClear]\r\n\t\t);\r\n\r\n\t\tconst handleRetry = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tonRetry?.();\r\n\t\t\t},\r\n\t\t\t[onRetry]\r\n\t\t);\r\n\r\n\t\tconst handleKeyDown = useCallback(\r\n\t\t\t(e: KeyboardEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tonImageClick?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[onImageClick]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tref={ref}\r\n\t\t\t\trole=\"button\"\r\n\t\t\t\ttabIndex={0}\r\n\t\t\t\tonClick={onImageClick}\r\n\t\t\t\tonKeyDown={handleKeyDown}\r\n\t\t\t\tclassName={styles.container()}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t{!error && <img src={url} alt={alt} className={styles.image()} />}\r\n\t\t\t\t{!error && <div className={styles.overlay()} />}\r\n\r\n\t\t\t\t{error && <Icon icon={ImageOff} className={styles.icon()} />}\r\n\r\n\t\t\t\t<div className={styles.buttonWrapper()}>\r\n\t\t\t\t\t{!error && onDownload && <ImageUploaderButton icon={Download} onClick={handleDownload} />}\r\n\t\t\t\t\t{error && onRetry && <ImageUploaderButton icon={RotateCw} onClick={handleRetry} />}\r\n\t\t\t\t\t{!readonly && onClear && <ImageUploaderButton icon={X} onClick={handleClear} />}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nImagePreview.displayName = \"ImagePreview\";\r\n"],"names":["ImageOff","createLucideIcon","RotateCw","imageUploaderButtonStyles","tv","ImageUploaderButton","React","_a","ref","_b","className","onClick","icon","props","__objRest","styles","jsx","Button","__spreadProps","__spreadValues","Icon","imagePreviewStyles","ImagePreview","error","readonly","onClear","onRetry","size","url","alt","onImageClick","onDownload","handleDownload","useCallback","e","handleClear","handleRetry","handleKeyDown","jsxs","Download","X"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"ImagePreview-DSifjtyd.js","sources":["../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/image-off.js","../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/rotate-cw.js","../src/components/image-uploader/components/ImageUploaderButton.tsx","../src/components/image-preview/ImagePreview.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ImageOff = createLucideIcon(\"ImageOff\", [\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"2\", y2: \"22\", key: \"a6p6uj\" }],\n [\"path\", { d: \"M10.41 10.41a2 2 0 1 1-2.83-2.83\", key: \"1bzlo9\" }],\n [\"line\", { x1: \"13.5\", x2: \"6\", y1: \"13.5\", y2: \"21\", key: \"1q0aeu\" }],\n [\"line\", { x1: \"18\", x2: \"21\", y1: \"12\", y2: \"15\", key: \"5mozeu\" }],\n [\n \"path\",\n {\n d: \"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59\",\n key: \"mmje98\"\n }\n ],\n [\"path\", { d: \"M21 15V5a2 2 0 0 0-2-2H9\", key: \"43el77\" }]\n]);\n\nexport { ImageOff as default };\n//# sourceMappingURL=image-off.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst RotateCw = createLucideIcon(\"RotateCw\", [\n [\"path\", { d: \"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\", key: \"1p45f6\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }]\n]);\n\nexport { RotateCw as default };\n//# sourceMappingURL=rotate-cw.js.map\n","import { Button } from \"@/components/button\";\r\nimport { Icon } from \"@/components/icon\";\r\nimport { LucideIcon } from \"lucide-react\";\r\nimport React from \"react\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\n\r\nconst imageUploaderButtonStyles = tv({\r\n\tslots: {\r\n\t\tcontainer: \"h-4 w-4 rounded-full border border-muted bg-primary-bg p-1\",\r\n\t\ticon: \"h-2 w-2 stroke-[3px] text-muted\"\r\n\t}\r\n});\r\n\r\nexport type ImageUploaderButtonProps = React.HTMLAttributes<HTMLButtonElement> &\r\n\tVariantProps<typeof imageUploaderButtonStyles> & {\r\n\t\ticon: LucideIcon;\r\n\t};\r\n\r\nexport const ImageUploaderButton = React.forwardRef<HTMLButtonElement, ImageUploaderButtonProps>(\r\n\t({ className, onClick, icon, ...props }, ref) => {\r\n\t\tconst styles = imageUploaderButtonStyles();\r\n\r\n\t\treturn (\r\n\t\t\t<Button\r\n\t\t\t\tvariant=\"outline\"\r\n\t\t\t\tref={ref}\r\n\t\t\t\tclassName={styles.container({ className })}\r\n\t\t\t\tonClick={onClick}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<Icon className={styles.icon()} icon={icon} />\r\n\t\t\t</Button>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nImageUploaderButton.displayName = \"ImageUploaderButton\";\r\n","import React, { useCallback, KeyboardEvent } from \"react\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\nimport { ImageUploaderButton } from \"../image-uploader/components/ImageUploaderButton\";\r\nimport { Download, ImageOff, RotateCw, X } from \"lucide-react\";\r\nimport { Icon } from \"../icon\";\r\n\r\nconst imagePreviewStyles = tv({\r\n\tslots: {\r\n\t\tcontainer:\r\n\t\t\t\"group relative flex aspect-square cursor-pointer items-center justify-center rounded-xl outline-none focus-visible:shadow-focus\",\r\n\t\timage: \"aspect-square h-full rounded-xl\",\r\n\t\tbuttonWrapper: \"absolute right-1 top-1 flex gap-1\",\r\n\t\ticon: \"h-8 w-8 stroke-[1.5px] text-muted\",\r\n\t\toverlay: \"absolute inset-0 rounded-xl group-hover:bg-slate-900/20\"\r\n\t},\r\n\tvariants: {\r\n\t\terror: {\r\n\t\t\ttrue: {\r\n\t\t\t\tcontainer:\r\n\t\t\t\t\t\"outline outline-1 outline-status-error-secondary-border hover:bg-status-error-bg hover:outline-status-error-primary-border focus-visible:shadow-focus-error focus-visible:outline-status-error-secondary-border\"\r\n\t\t\t}\r\n\t\t},\r\n\t\tsize: {\r\n\t\t\txs: { container: \"h-[3.75rem] w-[3.75rem]\" },\r\n\t\t\tsm: { container: \"h-20 w-20\" },\r\n\t\t\tmd: { container: \"h-[7.5rem] w-[7.5rem]\" },\r\n\t\t\tlg: { container: \"h-[11.5rem] w-[11.5rem]\" },\r\n\t\t\txl: { container: \"h-96 w-96\" }\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport type ImagePreviewProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"onClick\"> &\r\n\tVariantProps<typeof imagePreviewStyles> & {\r\n\t\turl: string;\r\n\t\talt: string;\r\n\t\treadonly?: boolean;\r\n\t\tonImageClick?: (e: React.MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => void;\r\n\t\tonDownload?: (url: string) => void;\r\n\t\tonRetry?: () => void;\r\n\t\tonClear?: () => void;\r\n\t};\r\n\r\nexport const ImagePreview = React.forwardRef<HTMLDivElement, ImagePreviewProps>(\r\n\t({ className, error, readonly, onClear, onRetry, size, url, alt, onImageClick, onDownload, ...props }, ref) => {\r\n\t\tconst styles = imagePreviewStyles({ className, size, error });\r\n\r\n\t\tconst handleDownload = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tonDownload?.(url);\r\n\t\t\t},\r\n\t\t\t[onDownload, url]\r\n\t\t);\r\n\r\n\t\tconst handleClear = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tonClear?.();\r\n\t\t\t},\r\n\t\t\t[onClear]\r\n\t\t);\r\n\r\n\t\tconst handleRetry = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tonRetry?.();\r\n\t\t\t},\r\n\t\t\t[onRetry]\r\n\t\t);\r\n\r\n\t\tconst handleKeyDown = useCallback(\r\n\t\t\t(e: KeyboardEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (e.key === \"Enter\" || e.key === \" \") {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tonImageClick?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[onImageClick]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tref={ref}\r\n\t\t\t\trole=\"button\"\r\n\t\t\t\ttabIndex={0}\r\n\t\t\t\tonClick={onImageClick}\r\n\t\t\t\tonKeyDown={handleKeyDown}\r\n\t\t\t\tclassName={styles.container()}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t{!error && <img src={url} alt={alt} className={styles.image()} />}\r\n\t\t\t\t{!error && <div className={styles.overlay()} />}\r\n\r\n\t\t\t\t{error && <Icon icon={ImageOff} className={styles.icon()} />}\r\n\r\n\t\t\t\t<div className={styles.buttonWrapper()}>\r\n\t\t\t\t\t{!error && onDownload && <ImageUploaderButton icon={Download} onClick={handleDownload} />}\r\n\t\t\t\t\t{error && onRetry && <ImageUploaderButton icon={RotateCw} onClick={handleRetry} />}\r\n\t\t\t\t\t{!readonly && onClear && <ImageUploaderButton icon={X} onClick={handleClear} />}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nImagePreview.displayName = \"ImagePreview\";\r\n"],"names":["ImageOff","createLucideIcon","RotateCw","imageUploaderButtonStyles","tv","ImageUploaderButton","React","_a","ref","_b","className","onClick","icon","props","__objRest","styles","jsx","Button","__spreadProps","__spreadValues","Icon","imagePreviewStyles","ImagePreview","error","readonly","onClear","onRetry","size","url","alt","onImageClick","onDownload","handleDownload","useCallback","e","handleClear","handleRetry","handleKeyDown","jsxs","Download","X"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -22,7 +22,7 @@ var p = (e, o) => {
|
|
|
22
22
|
import { jsx as a, jsxs as H } from "react/jsx-runtime";
|
|
23
23
|
import I, { useRef as L } from "react";
|
|
24
24
|
import { c as V } from "./index-CR-odn5-.js";
|
|
25
|
-
import { B as k } from "./Button-
|
|
25
|
+
import { B as k } from "./Button-DgsuPzCI.js";
|
|
26
26
|
import { I as N } from "./Icon-CSPBHL_x.js";
|
|
27
27
|
import { c as M } from "./utils-DGzAmwok.js";
|
|
28
28
|
import { c as R } from "./createLucideIcon-DgrNxRV5.js";
|
|
@@ -120,4 +120,4 @@ U.displayName = "ImageUploader";
|
|
|
120
120
|
export {
|
|
121
121
|
U as I
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=ImageUploader-
|
|
123
|
+
//# sourceMappingURL=ImageUploader-NrGVMNWN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageUploader-
|
|
1
|
+
{"version":3,"file":"ImageUploader-NrGVMNWN.js","sources":["../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/image.js","../src/components/image-uploader/components/ImageCameraAddSvg.tsx","../src/components/image-uploader/ImageUploader.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Image = createLucideIcon(\"Image\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n]);\n\nexport { Image as default };\n//# sourceMappingURL=image.js.map\n","interface ImageCameraAddProps {\r\n\tclassName?: string;\r\n}\r\n\r\nexport const ImageCameraAddSvg = ({ className }: ImageCameraAddProps) => {\r\n\treturn (\r\n\t\t<svg\r\n\t\t\twidth=\"33\"\r\n\t\t\theight=\"29\"\r\n\t\t\tviewBox=\"0 0 33 29\"\r\n\t\t\tclassName={className}\r\n\t\t\tfill=\"none\"\r\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t>\r\n\t\t\t<path\r\n\t\t\t\td=\"M27.4463 16.9258C27.9982 16.926 28.4461 17.3739 28.4463 17.9258V21.5322H31.9746C32.5266 21.5325 32.9746 21.9801 32.9746 22.5322C32.9743 23.0841 32.5265 23.5319 31.9746 23.5322H28.4463V27.1377C28.4461 27.6896 27.9982 28.1374 27.4463 28.1377C26.8941 28.1377 26.4465 27.6898 26.4463 27.1377V23.5322H22.918C22.3659 23.5322 21.9182 23.0843 21.918 22.5322C21.918 21.9799 22.3657 21.5322 22.918 21.5322H26.4463V17.9258C26.4465 17.3737 26.8941 16.9258 27.4463 16.9258ZM17.6523 0.0449219C17.9098 0.0739444 18.1484 0.202586 18.3145 0.405273L21.3164 4.06934H24.8047L24.9863 4.07324C25.8909 4.11901 26.7469 4.50459 27.3857 5.1543C28.0666 5.8469 28.4463 6.78361 28.4463 7.75586V12.2402C28.4462 12.7923 27.9983 13.24 27.4463 13.2402C26.894 13.2402 26.4463 12.7925 26.4463 12.2402V7.75586C26.4463 7.30322 26.2686 6.87167 25.959 6.55664C25.6885 6.28172 25.3364 6.11468 24.9648 6.07715L24.8047 6.06934H20.8428C20.5434 6.06934 20.2593 5.93454 20.0693 5.70312L17.0664 2.03906H11.4102L8.4082 5.70312C8.21833 5.93464 7.93419 6.06925 7.63477 6.06934H3.67285C3.24307 6.06934 2.82676 6.24223 2.51758 6.55664C2.20786 6.87168 2.03125 7.30316 2.03125 7.75586V19.8447C2.03127 20.2974 2.20792 20.7289 2.51758 21.0439C2.82675 21.3583 3.2431 21.5322 3.67285 21.5322H17.6348L17.7373 21.5371C18.2412 21.5886 18.6348 22.0147 18.6348 22.5322C18.6345 23.0495 18.2411 23.4749 17.7373 23.5264L17.6348 23.5322H3.67285C2.70169 23.5322 1.77333 23.1393 1.0918 22.4463C0.410823 21.7537 0.03127 20.817 0.03125 19.8447V7.75586C0.03125 6.78353 0.410805 5.84692 1.0918 5.1543C1.77333 4.46129 2.70169 4.06934 3.67285 4.06934H7.16113L10.1631 0.405273L10.2393 0.323242C10.4248 0.142425 10.6745 0.0391387 10.9365 0.0390625H17.54L17.6523 0.0449219ZM14.2383 8.09863C16.9946 8.09879 19.2012 10.3671 19.2012 13.1289C19.201 15.8906 16.9945 18.158 14.2383 18.1582C11.4821 18.158 9.2765 15.8906 9.27637 13.1289C9.27637 10.3671 11.482 8.09885 14.2383 8.09863ZM14.2383 10.0986C12.6184 10.0988 11.2764 11.4397 11.2764 13.1289C11.2765 14.818 12.6184 16.158 14.2383 16.1582C15.8582 16.158 17.201 14.8181 17.2012 13.1289C17.2012 11.4396 15.8582 10.0988 14.2383 10.0986Z\"\r\n\t\t\t\tfill=\"currentColor\"\r\n\t\t\t/>\r\n\t\t</svg>\r\n\t);\r\n};\r\n","import React, { useRef } from \"react\";\r\nimport { tv, VariantProps } from \"tailwind-variants\";\r\nimport { ImageCameraAddSvg } from \"./components/ImageCameraAddSvg\";\r\nimport { Button } from \"../button\";\r\nimport { Image } from \"lucide-react\";\r\nimport { Icon } from \"../icon\";\r\nimport { cn } from \"@/lib/utils\";\r\n\r\nconst imageUploaderStyles = tv({\r\n\tslots: {\r\n\t\tcontainer:\r\n\t\t\t\"group relative flex aspect-square items-center justify-center rounded-xl p-6 hover:shadow-base focus-visible:shadow-focus focus-visible:ring-0\",\r\n\t\ticon: \"h-8 w-8 stroke-[1.5px] text-muted group-hover:text-primary\",\r\n\t\tinput: \"hidden\",\r\n\t\t// Кастомная иконка для состояния загрузки с фиксированными размерами (35 и 33px) и небольшим смещением для визуального баланса\r\n\t\tcustomIcon: \"h-[2.1875rem] w-[2.0625rem] translate-x-0.5 translate-y-0.5\"\r\n\t},\r\n\tvariants: {\r\n\t\treadonly: {\r\n\t\t\ttrue: {\r\n\t\t\t\tcontainer:\r\n\t\t\t\t\t\"cursor-default bg-secondary-bg-hover hover:border-secondary-border hover:shadow-sm focus-visible:bg-secondary-bg-hover\",\r\n\t\t\t\ticon: \"group-hover:text-muted\"\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: {\r\n\t\t\ttrue: {\r\n\t\t\t\tcontainer:\r\n\t\t\t\t\t\"border-status-error-secondary-border hover:border-status-error-primary-border hover:bg-status-error-bg focus-visible:border-status-error-secondary-border focus-visible:shadow-focus-error\",\r\n\t\t\t\ticon: \"group-hover:text-muted\"\r\n\t\t\t}\r\n\t\t},\r\n\t\tsize: {\r\n\t\t\txs: { container: \"h-[3.75rem] w-[3.75rem]\" },\r\n\t\t\tsm: { container: \"h-20 w-20\" },\r\n\t\t\tmd: { container: \"h-[7.5rem] w-[7.5rem]\" },\r\n\t\t\tlg: { container: \"h-[11.5rem] w-[11.5rem]\" },\r\n\t\t\txl: { container: \"h-96 w-96\" }\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport type ImageUploaderProps = Omit<React.ComponentPropsWithoutRef<typeof Button>, \"onChange\"> &\r\n\tVariantProps<typeof imageUploaderStyles> & {\r\n\t\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n\t\twhiteList?: string;\r\n\t};\r\n\r\nexport const ImageUploader = React.forwardRef<HTMLButtonElement, ImageUploaderProps>(\r\n\t({ className, error, readonly, size, onChange, whiteList = \"image/*\", ...props }, ref) => {\r\n\t\tconst fileInputRef = useRef<HTMLInputElement>(null);\r\n\t\tconst styles = imageUploaderStyles({ className, readonly, error, size });\r\n\r\n\t\treturn (\r\n\t\t\t<Button\r\n\t\t\t\tref={ref}\r\n\t\t\t\ttype=\"button\"\r\n\t\t\t\tvariant=\"outline\"\r\n\t\t\t\tclassName={styles.container()}\r\n\t\t\t\tonClick={() => !readonly && fileInputRef.current?.click()}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<input\r\n\t\t\t\t\tref={fileInputRef}\r\n\t\t\t\t\ttype=\"file\"\r\n\t\t\t\t\tclassName={styles.input()}\r\n\t\t\t\t\tonChange={onChange}\r\n\t\t\t\t\taccept={whiteList}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t{readonly && <Icon icon={Image} className={styles.icon()} />}\r\n\t\t\t\t{!readonly && <ImageCameraAddSvg className={cn(styles.icon(), styles.customIcon())} />}\r\n\t\t\t</Button>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nImageUploader.displayName = \"ImageUploader\";\r\n"],"names":["Image","createLucideIcon","ImageCameraAddSvg","className","jsx","imageUploaderStyles","tv","ImageUploader","React","_a","ref","_b","error","readonly","size","onChange","whiteList","props","__objRest","fileInputRef","useRef","styles","jsxs","Button","__spreadProps","__spreadValues","Icon","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,MAAMA,IAAQC,EAAiB,SAAS;AAAA,EACtC,CAAC,QAAQ,EAAE,OAAO,MAAM,QAAQ,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,UAAU;AAAA,EACvF,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,KAAK,UAAU;AAAA,EACtD,CAAC,QAAQ,EAAE,GAAG,6CAA6C,KAAK,SAAU,CAAA;AAC5E,CAAC,GCTYC,IAAoB,CAAC,EAAE,WAAAC,QAElC,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACA,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,WAAAD;AAAA,IACA,MAAK;AAAA,IACL,OAAM;AAAA,IAEN,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AACD,GCVIC,IAAsBC,EAAG;AAAA,EAC9B,OAAO;AAAA,IACN,WACC;AAAA,IACD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,IAEP,YAAY;AAAA,EACb;AAAA,EACA,UAAU;AAAA,IACT,UAAU;AAAA,MACT,MAAM;AAAA,QACL,WACC;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,IAER;AAAA,IACA,OAAO;AAAA,MACN,MAAM;AAAA,QACL,WACC;AAAA,QACD,MAAM;AAAA,MAAA;AAAA,IAER;AAAA,IACA,MAAM;AAAA,MACL,IAAI,EAAE,WAAW,0BAA0B;AAAA,MAC3C,IAAI,EAAE,WAAW,YAAY;AAAA,MAC7B,IAAI,EAAE,WAAW,wBAAwB;AAAA,MACzC,IAAI,EAAE,WAAW,0BAA0B;AAAA,MAC3C,IAAI,EAAE,WAAW,YAAY;AAAA,IAAA;AAAA,EAC9B;AAEF,CAAC,GAQYC,IAAgBC,EAAM;AAAA,EAClC,CAACC,GAAiFC,MAAQ;AAAzF,QAAAC,IAAAF,GAAE,aAAAN,GAAW,OAAAS,GAAO,UAAAC,GAAU,MAAAC,GAAM,UAAAC,GAAU,WAAAC,IAAY,cAA1DL,GAAwEM,IAAAC,EAAxEP,GAAwE,CAAtE,aAAW,SAAO,YAAU,QAAM,YAAU;AACxC,UAAAQ,IAAeC,EAAyB,IAAI,GAC5CC,IAAShB,EAAoB,EAAE,WAAAF,GAAW,UAAAU,GAAU,OAAAD,GAAO,MAAAE,GAAM;AAGtE,WAAA,gBAAAQ;AAAA,MAACC;AAAA,MAAAC,EAAAC,EAAA;AAAA,QACA,KAAAf;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAWW,EAAO,UAAU;AAAA,QAC5B,SAAS,MAAA;;AAAM,kBAACR,OAAYJ,IAAAU,EAAa,YAAb,gBAAAV,EAAsB;AAAA;AAAA,SAC9CQ,IANJ;AAAA,QAQA,UAAA;AAAA,UAAA,gBAAAb;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,KAAKe;AAAA,cACL,MAAK;AAAA,cACL,WAAWE,EAAO,MAAM;AAAA,cACxB,UAAAN;AAAA,cACA,QAAQC;AAAA,YAAA;AAAA,UACT;AAAA,UAECH,uBAAaa,GAAK,EAAA,MAAM1B,GAAO,WAAWqB,EAAO,QAAQ;AAAA,UACzD,CAACR,KAAa,gBAAAT,EAAAF,GAAA,EAAkB,WAAWyB,EAAGN,EAAO,KAAQ,GAAAA,EAAO,WAAY,CAAA,EAAG,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACrF;AAAA,EAAA;AAGH;AAEAd,EAAc,cAAc;","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { useState as b, useCallback as h, useEffect as k, useMemo as S } from "react";
|
|
2
|
+
import { jsxs as g, jsx as i, Fragment as D } from "react/jsx-runtime";
|
|
3
|
+
import { d as I, a as T, c as w, b as y } from "./Tag-DRaLIx47.js";
|
|
4
|
+
import { u as C } from "./useBreakpoints-WE4xDTqs.js";
|
|
5
|
+
import { c as F } from "./index-CR-odn5-.js";
|
|
6
|
+
function K({ value: e, defaultValue: c, onChange: s }) {
|
|
7
|
+
const [o, l] = b(c), t = e !== void 0, u = t ? e : o, f = h(
|
|
8
|
+
(a) => {
|
|
9
|
+
const d = typeof a == "function" ? a(u) : a;
|
|
10
|
+
t || l(d), s == null || s(d);
|
|
11
|
+
},
|
|
12
|
+
[u, t, s]
|
|
13
|
+
);
|
|
14
|
+
return [u, f];
|
|
15
|
+
}
|
|
16
|
+
function L({
|
|
17
|
+
items: e,
|
|
18
|
+
onEnter: c,
|
|
19
|
+
onDelete: s,
|
|
20
|
+
cycleNavigation: o = !1
|
|
21
|
+
}) {
|
|
22
|
+
const [l, t] = b(null);
|
|
23
|
+
k(() => {
|
|
24
|
+
l !== null && e.length > 0 ? l >= e.length && t(e.length - 1) : e.length === 0 ? t(null) : l === null && e.length > 0 && t(0);
|
|
25
|
+
}, [e, l]);
|
|
26
|
+
const u = h(
|
|
27
|
+
(n) => {
|
|
28
|
+
if (e.length)
|
|
29
|
+
switch (n.key) {
|
|
30
|
+
case "ArrowLeft":
|
|
31
|
+
n.preventDefault(), t((r) => r === null ? 0 : r > 0 ? r - 1 : o ? e.length - 1 : r);
|
|
32
|
+
break;
|
|
33
|
+
case "ArrowRight":
|
|
34
|
+
n.preventDefault(), t((r) => r === null ? 0 : r < e.length - 1 ? r + 1 : o ? 0 : r);
|
|
35
|
+
break;
|
|
36
|
+
case "Home":
|
|
37
|
+
n.preventDefault(), t(0);
|
|
38
|
+
break;
|
|
39
|
+
case "End":
|
|
40
|
+
n.preventDefault(), t(e.length - 1);
|
|
41
|
+
break;
|
|
42
|
+
case "Enter":
|
|
43
|
+
l !== null && e[l] && c && (n.preventDefault(), c(e[l], l));
|
|
44
|
+
break;
|
|
45
|
+
case "Delete":
|
|
46
|
+
if (l !== null && e[l] && s) {
|
|
47
|
+
n.preventDefault();
|
|
48
|
+
const r = l;
|
|
49
|
+
s(e[l], l), r >= e.length - 1 && t(Math.max(0, e.length - 2));
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
[e, l, c, s, o]
|
|
55
|
+
), f = h(() => {
|
|
56
|
+
e.length && t(0);
|
|
57
|
+
}, [e]), a = h(() => {
|
|
58
|
+
t(null);
|
|
59
|
+
}, []), d = h((n) => l === n, [l]), p = h(
|
|
60
|
+
(n) => n >= 0 && n < e.length ? (t(n), !0) : !1,
|
|
61
|
+
[e.length]
|
|
62
|
+
);
|
|
63
|
+
return {
|
|
64
|
+
focusedIndex: l,
|
|
65
|
+
handleKeyDown: u,
|
|
66
|
+
handleFocus: f,
|
|
67
|
+
handleBlur: a,
|
|
68
|
+
isFocused: d,
|
|
69
|
+
focusItemAtIndex: p
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const x = F({
|
|
73
|
+
base: "rounded-sm",
|
|
74
|
+
variants: {
|
|
75
|
+
selected: {
|
|
76
|
+
true: "group-focus-within/search-select-trigger:shadow-focus"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}), M = (e) => {
|
|
80
|
+
const { children: c, onLabelClick: s, onClose: o, readonly: l = !1, isFocused: t = !1 } = e, u = !!o, f = C(), a = S(() => f ? "lg" : "md", [f]), d = x({ selected: t });
|
|
81
|
+
return /* @__PURE__ */ g(I, { size: a, className: d, children: [
|
|
82
|
+
/* @__PURE__ */ i(T, { position: u && !l ? "left" : void 0, size: a, onClick: s, asChild: !0, children: /* @__PURE__ */ i("span", { children: c }) }),
|
|
83
|
+
!l && /* @__PURE__ */ g(D, { children: [
|
|
84
|
+
/* @__PURE__ */ i(w, {}),
|
|
85
|
+
/* @__PURE__ */ i(y, { size: a, onClick: o, tag: "span" })
|
|
86
|
+
] })
|
|
87
|
+
] });
|
|
88
|
+
};
|
|
89
|
+
M.displayName = "SearchSelectTag";
|
|
90
|
+
export {
|
|
91
|
+
M as S,
|
|
92
|
+
L as a,
|
|
93
|
+
K as u
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=SearchSelectTag-9aMVvXqp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchSelectTag-9aMVvXqp.js","sources":["../src/hooks/useControllableState.ts","../src/hooks/useItemsKeyboardNavigation.ts","../src/components/search-select/components/SearchSelectTag.tsx"],"sourcesContent":["import { useCallback, useState } from \"react\";\r\n\r\ntype UseControllableStateParams<T> = {\r\n\t/** Controlled значение */\r\n\tvalue?: T;\r\n\t/** Значение по умолчанию для uncontrolled режима */\r\n\tdefaultValue?: T;\r\n\t/** Callback при изменении значения */\r\n\tonChange?: (value: T) => void;\r\n};\r\n\r\n/**\r\n * Универсальный хук для управления controlled/uncontrolled состоянием.\r\n */\r\nexport function useControllableState<T>({ value, defaultValue, onChange }: UseControllableStateParams<T>) {\r\n\tconst [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\r\n\r\n\tconst isControlled = value !== undefined;\r\n\tconst actualValue = isControlled ? value : uncontrolledValue;\r\n\r\n\tconst setValue = useCallback(\r\n\t\t(nextValue: T | ((prevValue: T) => T)) => {\r\n\t\t\tconst resolvedValue =\r\n\t\t\t\ttypeof nextValue === \"function\" ? (nextValue as (prevValue: T) => T)(actualValue as T) : nextValue;\r\n\r\n\t\t\tif (!isControlled) {\r\n\t\t\t\tsetUncontrolledValue(resolvedValue);\r\n\t\t\t}\r\n\r\n\t\t\tonChange?.(resolvedValue);\r\n\t\t},\r\n\t\t[actualValue, isControlled, onChange]\r\n\t);\r\n\r\n\treturn [actualValue, setValue] as const;\r\n}\r\n","import { useCallback, useState, KeyboardEvent, useEffect } from \"react\";\r\n\r\n/**\r\n * Хук для навигации по элементам с помощью клавиатуры\r\n *\r\n * @example\r\n * ```tsx\r\n * function TagList({ tags, onTagSelect, onTagDelete }) {\r\n * const containerRef = useRef(null);\r\n *\r\n * const {\r\n * focusedIndex,\r\n * handleKeyDown,\r\n * handleFocus,\r\n * handleBlur,\r\n * isFocused\r\n * } = useItemsKeyboardNavigation({\r\n * items: tags,\r\n * onEnter: onTagSelect,\r\n * onDelete: onTagDelete\r\n * });\r\n *\r\n * return (\r\n * <div\r\n * ref={containerRef}\r\n * tabIndex={0}\r\n * onKeyDown={handleKeyDown}\r\n * onFocus={handleFocus}\r\n * onBlur={handleBlur}\r\n * >\r\n * {tags.map((tag, index) => (\r\n * <div key={tag.id} className={isFocused(index) ? \"focused\" : \"\"}>\r\n * {tag.label}\r\n * </div>\r\n * ))}\r\n * </div>\r\n * );\r\n * }\r\n * ```\r\n */\r\nexport function useItemsKeyboardNavigation<T>({\r\n\titems,\r\n\tonEnter,\r\n\tonDelete,\r\n\tcycleNavigation = false\r\n}: {\r\n\t/** Массив элементов для навигации */\r\n\titems: T[];\r\n\t/** Функция, вызываемая при нажатии Enter на элементе */\r\n\tonEnter?: (item: T, index: number) => void;\r\n\t/** Функция, вызываемая при нажатии Delete/Backspace на элементе */\r\n\tonDelete?: (item: T, index: number) => void;\r\n\t/** Включает циклическую навигацию (с последнего элемента на первый и наоборот) */\r\n\tcycleNavigation?: boolean;\r\n}) {\r\n\t/** Индекс текущего элемента с фокусом */\r\n\tconst [focusedIndex, setFocusedIndex] = useState<number | null>(null);\r\n\r\n\t/**\r\n\t * Следим за изменениями в items и корректируем focusedIndex при необходимости\r\n\t */\r\n\tuseEffect(() => {\r\n\t\tif (focusedIndex !== null && items.length > 0) {\r\n\t\t\t// Если текущий индекс выходит за границы массива\r\n\t\t\tif (focusedIndex >= items.length) {\r\n\t\t\t\t// Устанавливаем индекс на последний элемент\r\n\t\t\t\tsetFocusedIndex(items.length - 1);\r\n\t\t\t}\r\n\t\t} else if (items.length === 0) {\r\n\t\t\t// Если элементов нет, сбрасываем фокус\r\n\t\t\tsetFocusedIndex(null);\r\n\t\t} else if (focusedIndex === null && items.length > 0) {\r\n\t\t\tsetFocusedIndex(0);\r\n\t\t}\r\n\t}, [items, focusedIndex]);\r\n\r\n\t/**\r\n\t * Обработчик нажатия клавиш для навигации по элементам\r\n\t */\r\n\tconst handleKeyDown = useCallback(\r\n\t\t(e: KeyboardEvent<HTMLElement>) => {\r\n\t\t\t// Проверяем, есть ли элементы для навигации\r\n\t\t\tif (!items.length) return;\r\n\r\n\t\t\tswitch (e.key) {\r\n\t\t\t\tcase \"ArrowLeft\":\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tsetFocusedIndex((prev) => {\r\n\t\t\t\t\t\tif (prev === null) return 0;\r\n\t\t\t\t\t\tif (prev > 0) return prev - 1;\r\n\t\t\t\t\t\treturn cycleNavigation ? items.length - 1 : prev;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"ArrowRight\":\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tsetFocusedIndex((prev) => {\r\n\t\t\t\t\t\tif (prev === null) return 0;\r\n\t\t\t\t\t\tif (prev < items.length - 1) return prev + 1;\r\n\t\t\t\t\t\treturn cycleNavigation ? 0 : prev;\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"Home\":\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tsetFocusedIndex(0);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"End\":\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tsetFocusedIndex(items.length - 1);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"Enter\":\r\n\t\t\t\t\tif (focusedIndex !== null && items[focusedIndex] && onEnter) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tonEnter(items[focusedIndex], focusedIndex);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"Delete\":\r\n\t\t\t\t\tif (focusedIndex !== null && items[focusedIndex] && onDelete) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t// Сохраняем текущий индекс перед удалением\r\n\t\t\t\t\t\tconst currentIndex = focusedIndex;\r\n\r\n\t\t\t\t\t\tonDelete(items[focusedIndex], focusedIndex);\r\n\r\n\t\t\t\t\t\t// Корректируем индекс после удаления\r\n\t\t\t\t\t\t// Это сработает корректно, если items обновится синхронно\r\n\t\t\t\t\t\t// В противном случае, корректировку нужно делать в эффекте\r\n\t\t\t\t\t\tif (currentIndex >= items.length - 1) {\r\n\t\t\t\t\t\t\tsetFocusedIndex(Math.max(0, items.length - 2));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t},\r\n\t\t[items, focusedIndex, onEnter, onDelete, cycleNavigation]\r\n\t);\r\n\r\n\t/**\r\n\t * Обработчик получения фокуса контейнером\r\n\t */\r\n\tconst handleFocus = useCallback(() => {\r\n\t\tif (items.length) {\r\n\t\t\tsetFocusedIndex(0);\r\n\t\t}\r\n\t}, [items]);\r\n\r\n\t/**\r\n\t * Обработчик потери фокуса контейнером\r\n\t */\r\n\tconst handleBlur = useCallback(() => {\r\n\t\tsetFocusedIndex(null);\r\n\t}, []);\r\n\r\n\t/**\r\n\t * Проверяет, находится ли элемент с указанным индексом в фокусе\r\n\t */\r\n\tconst isFocused = useCallback((index: number) => focusedIndex === index, [focusedIndex]);\r\n\r\n\t/**\r\n\t * Безопасно устанавливает фокус на элемент по индексу\r\n\t * @param index Индекс элемента для фокусировки\r\n\t * @returns Возвращает true, если индекс был установлен успешно\r\n\t */\r\n\tconst focusItemAtIndex = useCallback(\r\n\t\t(index: number) => {\r\n\t\t\tif (index >= 0 && index < items.length) {\r\n\t\t\t\tsetFocusedIndex(index);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\t[items.length]\r\n\t);\r\n\r\n\treturn {\r\n\t\tfocusedIndex,\r\n\t\thandleKeyDown,\r\n\t\thandleFocus,\r\n\t\thandleBlur,\r\n\t\tisFocused,\r\n\t\tfocusItemAtIndex\r\n\t};\r\n}\r\n","import { TagButton, TagClose, TagDivider, TagWrapper } from \"@/components/tag/Tag\";\r\nimport { useIsMobile } from \"@/hooks/useBreakpoints\";\r\nimport { PropsWithChildren, useMemo } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\nconst searchSelectTagStyles = tv({\r\n\tbase: \"rounded-sm\",\r\n\tvariants: {\r\n\t\tselected: {\r\n\t\t\ttrue: \"group-focus-within/search-select-trigger:shadow-focus\"\r\n\t\t}\r\n\t}\r\n});\r\ninterface SearchSelectTagProps {\r\n\tonLabelClick: (e: React.MouseEvent<HTMLElement>) => void;\r\n\tonClose: (e: React.MouseEvent<HTMLElement>) => void;\r\n\treadonly?: boolean;\r\n\tisFocused?: boolean;\r\n}\r\n\r\nexport const SearchSelectTag = (props: PropsWithChildren<SearchSelectTagProps>) => {\r\n\tconst { children, onLabelClick, onClose, readonly = false, isFocused: selected = false } = props;\r\n\tconst hasClose = Boolean(onClose);\r\n\tconst isMobile = useIsMobile();\r\n\tconst size = useMemo(() => (isMobile ? \"lg\" : \"md\"), [isMobile]);\r\n\tconst styles = searchSelectTagStyles({ selected });\r\n\r\n\treturn (\r\n\t\t<TagWrapper size={size} className={styles}>\r\n\t\t\t<TagButton position={hasClose && !readonly ? \"left\" : undefined} size={size} onClick={onLabelClick} asChild>\r\n\t\t\t\t<span>{children}</span>\r\n\t\t\t</TagButton>\r\n\r\n\t\t\t{!readonly && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<TagDivider />\r\n\t\t\t\t\t<TagClose size={size} onClick={onClose} tag=\"span\" />\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</TagWrapper>\r\n\t);\r\n};\r\n\r\nSearchSelectTag.displayName = \"SearchSelectTag\";\r\n"],"names":["useControllableState","value","defaultValue","onChange","uncontrolledValue","setUncontrolledValue","useState","isControlled","actualValue","setValue","useCallback","nextValue","resolvedValue","useItemsKeyboardNavigation","items","onEnter","onDelete","cycleNavigation","focusedIndex","setFocusedIndex","useEffect","handleKeyDown","e","prev","currentIndex","handleFocus","handleBlur","isFocused","index","focusItemAtIndex","searchSelectTagStyles","tv","SearchSelectTag","props","children","onLabelClick","onClose","readonly","selected","hasClose","isMobile","useIsMobile","size","useMemo","styles","jsxs","TagWrapper","jsx","TagButton","Fragment","TagDivider","TagClose"],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ var p = (o, t) => {
|
|
|
19
19
|
t.indexOf(a) < 0 && l.call(o, a) && (r[a] = o[a]);
|
|
20
20
|
return r;
|
|
21
21
|
};
|
|
22
|
-
import { B as x } from "../Button-
|
|
22
|
+
import { B as x } from "../Button-DgsuPzCI.js";
|
|
23
23
|
import { B as v } from "../ButtonBase-_OSOwZGm.js";
|
|
24
24
|
import { I as L } from "../IconButton-a8jMH_W6.js";
|
|
25
25
|
import { jsx as u } from "react/jsx-runtime";
|
|
@@ -1,155 +1,7 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
declare const cardStyles: TVReturnType<{
|
|
5
|
-
error: {
|
|
6
|
-
true: string[];
|
|
7
|
-
};
|
|
8
|
-
readonly: {
|
|
9
|
-
true: string[];
|
|
10
|
-
};
|
|
11
|
-
selected: {
|
|
12
|
-
true: string[];
|
|
13
|
-
};
|
|
14
|
-
}, undefined, string[], TVConfig<{
|
|
15
|
-
error: {
|
|
16
|
-
true: string[];
|
|
17
|
-
};
|
|
18
|
-
readonly: {
|
|
19
|
-
true: string[];
|
|
20
|
-
};
|
|
21
|
-
selected: {
|
|
22
|
-
true: string[];
|
|
23
|
-
};
|
|
24
|
-
}, {
|
|
25
|
-
error: {
|
|
26
|
-
true: string[];
|
|
27
|
-
};
|
|
28
|
-
readonly: {
|
|
29
|
-
true: string[];
|
|
30
|
-
};
|
|
31
|
-
selected: {
|
|
32
|
-
true: string[];
|
|
33
|
-
};
|
|
34
|
-
}>, {
|
|
35
|
-
error: {
|
|
36
|
-
true: string[];
|
|
37
|
-
};
|
|
38
|
-
readonly: {
|
|
39
|
-
true: string[];
|
|
40
|
-
};
|
|
41
|
-
selected: {
|
|
42
|
-
true: string[];
|
|
43
|
-
};
|
|
44
|
-
}, undefined, TVReturnType<{
|
|
45
|
-
error: {
|
|
46
|
-
true: string[];
|
|
47
|
-
};
|
|
48
|
-
readonly: {
|
|
49
|
-
true: string[];
|
|
50
|
-
};
|
|
51
|
-
selected: {
|
|
52
|
-
true: string[];
|
|
53
|
-
};
|
|
54
|
-
}, undefined, string[], TVConfig<{
|
|
55
|
-
error: {
|
|
56
|
-
true: string[];
|
|
57
|
-
};
|
|
58
|
-
readonly: {
|
|
59
|
-
true: string[];
|
|
60
|
-
};
|
|
61
|
-
selected: {
|
|
62
|
-
true: string[];
|
|
63
|
-
};
|
|
64
|
-
}, {
|
|
65
|
-
error: {
|
|
66
|
-
true: string[];
|
|
67
|
-
};
|
|
68
|
-
readonly: {
|
|
69
|
-
true: string[];
|
|
70
|
-
};
|
|
71
|
-
selected: {
|
|
72
|
-
true: string[];
|
|
73
|
-
};
|
|
74
|
-
}>, unknown, unknown, undefined>>;
|
|
75
|
-
export type CardProps = React.HTMLAttributes<HTMLElement> & VariantProps<typeof cardStyles> & {
|
|
76
|
-
selected?: boolean;
|
|
77
|
-
readonly?: boolean;
|
|
78
|
-
error?: boolean;
|
|
2
|
+
export type CardProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
3
|
+
asChild?: boolean;
|
|
79
4
|
};
|
|
80
|
-
export declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
};
|
|
84
|
-
readonly: {
|
|
85
|
-
true: string[];
|
|
86
|
-
};
|
|
87
|
-
selected: {
|
|
88
|
-
true: string[];
|
|
89
|
-
};
|
|
90
|
-
}, undefined, string[], TVConfig<{
|
|
91
|
-
error: {
|
|
92
|
-
true: string[];
|
|
93
|
-
};
|
|
94
|
-
readonly: {
|
|
95
|
-
true: string[];
|
|
96
|
-
};
|
|
97
|
-
selected: {
|
|
98
|
-
true: string[];
|
|
99
|
-
};
|
|
100
|
-
}, {
|
|
101
|
-
error: {
|
|
102
|
-
true: string[];
|
|
103
|
-
};
|
|
104
|
-
readonly: {
|
|
105
|
-
true: string[];
|
|
106
|
-
};
|
|
107
|
-
selected: {
|
|
108
|
-
true: string[];
|
|
109
|
-
};
|
|
110
|
-
}>, {
|
|
111
|
-
error: {
|
|
112
|
-
true: string[];
|
|
113
|
-
};
|
|
114
|
-
readonly: {
|
|
115
|
-
true: string[];
|
|
116
|
-
};
|
|
117
|
-
selected: {
|
|
118
|
-
true: string[];
|
|
119
|
-
};
|
|
120
|
-
}, undefined, TVReturnType<{
|
|
121
|
-
error: {
|
|
122
|
-
true: string[];
|
|
123
|
-
};
|
|
124
|
-
readonly: {
|
|
125
|
-
true: string[];
|
|
126
|
-
};
|
|
127
|
-
selected: {
|
|
128
|
-
true: string[];
|
|
129
|
-
};
|
|
130
|
-
}, undefined, string[], TVConfig<{
|
|
131
|
-
error: {
|
|
132
|
-
true: string[];
|
|
133
|
-
};
|
|
134
|
-
readonly: {
|
|
135
|
-
true: string[];
|
|
136
|
-
};
|
|
137
|
-
selected: {
|
|
138
|
-
true: string[];
|
|
139
|
-
};
|
|
140
|
-
}, {
|
|
141
|
-
error: {
|
|
142
|
-
true: string[];
|
|
143
|
-
};
|
|
144
|
-
readonly: {
|
|
145
|
-
true: string[];
|
|
146
|
-
};
|
|
147
|
-
selected: {
|
|
148
|
-
true: string[];
|
|
149
|
-
};
|
|
150
|
-
}>, unknown, unknown, undefined>>> & {
|
|
151
|
-
selected?: boolean;
|
|
152
|
-
readonly?: boolean;
|
|
153
|
-
error?: boolean;
|
|
154
|
-
} & React.RefAttributes<HTMLElement>>;
|
|
155
|
-
export {};
|
|
5
|
+
export declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -3,8 +3,14 @@ import { Card } from './Card';
|
|
|
3
3
|
declare const meta: Meta<typeof Card>;
|
|
4
4
|
export default meta;
|
|
5
5
|
type Story = StoryObj<typeof Card>;
|
|
6
|
-
export declare const Basic: Story;
|
|
7
6
|
export declare const Default: Story;
|
|
8
|
-
export declare const
|
|
7
|
+
export declare const ActionCardExample: Story;
|
|
8
|
+
export declare const StyledCards: Story;
|
|
9
|
+
export declare const CardWithFeature: Story;
|
|
10
|
+
export declare const CardWithFolder: Story;
|
|
11
|
+
export declare const CardWithVisualBadge: Story;
|
|
12
|
+
export declare const CardWithMenu: Story;
|
|
13
|
+
export declare const CardResizableExamples: Story;
|
|
14
|
+
export declare const Showcase: Story;
|
|
15
|
+
export declare const CardWithCustomContent: Story;
|
|
9
16
|
export declare const SingleSelectExample: Story;
|
|
10
|
-
export declare const MultiSelectExample: Story;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type ActionCardProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
3
|
+
asChild?: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare const ActionCard: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { VariantProps, TVReturnType } from 'tailwind-variants';
|
|
3
|
+
import { TVConfig } from 'tailwind-variants/dist/config.js';
|
|
4
|
+
declare const cardFeatureIconStyles: TVReturnType<{} | {} | {}, undefined, "absolute bottom-2.5 right-3 lg:bottom-3 lg:right-4", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "absolute bottom-2.5 right-3 lg:bottom-3 lg:right-4", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
5
|
+
export type CardFeatureProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardFeatureIconStyles> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const CardFeature: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps< TVReturnType<{} | {} | {}, undefined, "absolute bottom-2.5 right-3 lg:bottom-3 lg:right-4", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "absolute bottom-2.5 right-3 lg:bottom-3 lg:right-4", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type CardFolderProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
3
|
+
asChild?: boolean;
|
|
4
|
+
className?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const CardFolder: {
|
|
7
|
+
({ className, children, ...props }: CardFolderProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
displayName: string;
|
|
9
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { VariantProps, TVReturnType } from 'tailwind-variants';
|
|
3
|
+
import { TVConfig } from 'tailwind-variants/dist/config.js';
|
|
4
|
+
declare const cardFooterStyles: TVReturnType<{} | {} | {}, undefined, "mt-auto pt-3", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "mt-auto pt-3", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
5
|
+
export type CardFooterProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardFooterStyles> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps< TVReturnType<{} | {} | {}, undefined, "mt-auto pt-3", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "mt-auto pt-3", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IconButtonProps } from '../../button/icon-button/IconButton';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
export type CardMenuTriggerProps = Omit<IconButtonProps, "icon"> & {
|
|
4
|
+
iconProps?: Partial<IconButtonProps>;
|
|
5
|
+
};
|
|
6
|
+
export declare const CardMenuTrigger: React.ForwardRefExoticComponent<Omit<IconButtonProps, "icon"> & {
|
|
7
|
+
iconProps?: Partial<IconButtonProps>;
|
|
8
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { VariantProps, TVReturnType } from 'tailwind-variants';
|
|
3
|
+
import { TVConfig } from 'tailwind-variants/dist/config.js';
|
|
4
|
+
declare const cardSubTitleStyles: TVReturnType<{} | {} | {}, undefined, "mb-1 pr-14 text-xs text-muted", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "mb-1 pr-14 text-xs text-muted", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
5
|
+
export type CardSubTitleProps = React.HTMLAttributes<HTMLHeadingElement> & VariantProps<typeof cardSubTitleStyles> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const CardSubTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & VariantProps< TVReturnType<{} | {} | {}, undefined, "mb-1 pr-14 text-xs text-muted", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "mb-1 pr-14 text-xs text-muted", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
} & React.RefAttributes<HTMLHeadingElement>>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type CardTitleProps = React.HTMLAttributes<HTMLHeadingElement> & {
|
|
3
|
+
asChild?: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
} & React.RefAttributes<HTMLHeadingElement>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { VariantProps, TVReturnType } from 'tailwind-variants';
|
|
3
|
+
import { TVConfig } from 'tailwind-variants/dist/config.js';
|
|
4
|
+
declare const cardVisualBadgeStyles: TVReturnType<{} | {} | {}, undefined, "absolute bottom-0 right-0 flex h-[66px] w-[66px] items-center justify-center overflow-hidden rounded-tl-lg", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "absolute bottom-0 right-0 flex h-[66px] w-[66px] items-center justify-center overflow-hidden rounded-tl-lg", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
|
|
5
|
+
export type CardVisualBadgeProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardVisualBadgeStyles> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const CardVisualBadge: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps< TVReturnType<{} | {} | {}, undefined, "absolute bottom-0 right-0 flex h-[66px] w-[66px] items-center justify-center overflow-hidden rounded-tl-lg", TVConfig<unknown, {} | {}>, {} | {}, undefined, TVReturnType<unknown, undefined, "absolute bottom-0 right-0 flex h-[66px] w-[66px] items-center justify-center overflow-hidden rounded-tl-lg", TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
export {};
|