@oneplatformdev/ui 0.1.99-beta.4 → 0.1.99-beta.40
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/Accordion/Accordion.d.ts +1 -1
- package/Accordion/Accordion.d.ts.map +1 -1
- package/Accordion/Accordion.js +48 -26
- package/Accordion/Accordion.js.map +1 -1
- package/Badge/badgeVariants.d.ts +1 -1
- package/Button/Button.d.ts +6 -6
- package/Button/Button.d.ts.map +1 -1
- package/Button/Button.js +44 -42
- package/Button/Button.js.map +1 -1
- package/Button/Button.stories.js +45 -53
- package/Button/Button.stories.js.map +1 -1
- package/Button/Button.types.d.ts +24 -1
- package/Button/Button.types.d.ts.map +1 -1
- package/Button/ButtonCounterBadge.d.ts +7 -0
- package/Button/ButtonCounterBadge.d.ts.map +1 -0
- package/Button/ButtonCounterBadge.js +20 -0
- package/Button/ButtonCounterBadge.js.map +1 -0
- package/Button/buttonVariants.d.ts +11 -20
- package/Button/buttonVariants.d.ts.map +1 -1
- package/Button/buttonVariants.js +76 -12
- package/Button/buttonVariants.js.map +1 -1
- package/Button/index.js +6 -5
- package/ButtonIcon/ButtonIcon.d.ts +30 -19
- package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
- package/ButtonIcon/ButtonIcon.js +70 -46
- package/ButtonIcon/ButtonIcon.js.map +1 -1
- package/ButtonIcon/ButtonIcon.stories.js +121 -78
- package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
- package/ButtonIcon/ButtonIcon.types.d.ts +2 -1
- package/ButtonIcon/ButtonIcon.types.d.ts.map +1 -1
- package/ButtonIcon/buttonIconVariants.d.ts +1 -1
- package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
- package/ButtonIcon/buttonIconVariants.js +7 -6
- package/ButtonIcon/buttonIconVariants.js.map +1 -1
- package/CHANGELOG.md +466 -0
- package/Combobox/Combobox.d.ts.map +1 -1
- package/Combobox/Combobox.js +25 -26
- package/Combobox/Combobox.js.map +1 -1
- package/Combobox/Combobox.stories.js +192 -0
- package/Combobox/Combobox.stories.js.map +1 -0
- package/Combobox/ComboboxOptions.d.ts.map +1 -1
- package/Combobox/ComboboxOptions.js +42 -42
- package/Combobox/ComboboxOptions.js.map +1 -1
- package/Dialog/Dialog.js +13 -13
- package/Dialog/Dialog.js.map +1 -1
- package/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/DropdownMenu/DropdownMenu.js +33 -20
- package/DropdownMenu/DropdownMenu.js.map +1 -1
- package/Form/Form.d.ts.map +1 -1
- package/Form/Form.js.map +1 -1
- package/Form/FormRenderControl.d.ts.map +1 -1
- package/Form/FormRenderControl.js +26 -13
- package/Form/FormRenderControl.js.map +1 -1
- package/Form/FormRenderControl.types.d.ts +2 -1
- package/Form/FormRenderControl.types.d.ts.map +1 -1
- package/Form/FormTooltipButton.d.ts +6 -0
- package/Form/FormTooltipButton.d.ts.map +1 -0
- package/Form/FormTooltipButton.js +34 -0
- package/Form/FormTooltipButton.js.map +1 -0
- package/FormInput/FormInput.d.ts.map +1 -1
- package/FormInput/FormInput.js +22 -21
- package/FormInput/FormInput.js.map +1 -1
- package/Input/Input.js +1 -1
- package/Input/Input.js.map +1 -1
- package/Input/inputVariants.d.ts.map +1 -1
- package/Input/inputVariants.js +5 -4
- package/Input/inputVariants.js.map +1 -1
- package/LoadedIcon/LoadedIcon.d.ts.map +1 -1
- package/LoadedIcon/LoadedIcon.js +3 -1
- package/LoadedIcon/LoadedIcon.js.map +1 -1
- package/Resizable/Resizable.d.ts +5 -20
- package/Resizable/Resizable.d.ts.map +1 -1
- package/Resizable/Resizable.js +48 -31
- package/Resizable/Resizable.js.map +1 -1
- package/Resizable/Resizable.stories.js +140 -0
- package/Resizable/Resizable.stories.js.map +1 -0
- package/Search/Search.js +12 -12
- package/Search/Search.js.map +1 -1
- package/Search/Search.stories.js +17 -0
- package/Search/Search.stories.js.map +1 -0
- package/Textarea/Textarea.d.ts.map +1 -1
- package/Textarea/Textarea.js +50 -45
- package/Textarea/Textarea.js.map +1 -1
- package/Textarea/Textarea.stories.js +12 -0
- package/Textarea/Textarea.stories.js.map +1 -0
- package/Textarea/Textarea.types.d.ts +3 -1
- package/Textarea/Textarea.types.d.ts.map +1 -1
- package/Textarea/useAutosizeTextArea.d.ts +1 -1
- package/Textarea/useAutosizeTextArea.d.ts.map +1 -1
- package/Textarea/useAutosizeTextArea.js.map +1 -1
- package/Tooltip/Tooltip.d.ts.map +1 -1
- package/Tooltip/Tooltip.js.map +1 -1
- package/index.js +326 -325
- package/package.json +7 -4
- package/Button/Button.s.d.ts +0 -83
- package/Button/Button.s.d.ts.map +0 -1
- package/Button/Button.s.js +0 -163
- package/Button/Button.s.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadedIcon.js","sources":["../../src/LoadedIcon/LoadedIcon.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority';\nimport { LoaderCircleIcon } from 'lucide-react';\nimport { FC, HTMLAttributes, PropsWithChildren } from 'react';\n\nimport { cn } from '@oneplatformdev/utils';\n\nconst loadedIconVariants = cva([], {\n variants: {\n size: {\n inherit: '[&_svg]:size-inherit',\n xs: '[&_svg]:size-3',\n sm: '[&_svg]:size-4',\n md: '[&_svg]:size-5',\n lg: '[&_svg]:size-6',\n },\n },\n defaultVariants: { size: 'inherit' },\n});\n\ninterface ILoadedIconProps\n
|
|
1
|
+
{"version":3,"file":"LoadedIcon.js","sources":["../../src/LoadedIcon/LoadedIcon.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority';\nimport { LoaderCircleIcon } from 'lucide-react';\nimport { FC, HTMLAttributes, PropsWithChildren } from 'react';\n\nimport { cn } from '@oneplatformdev/utils';\n\nconst loadedIconVariants = cva([\n 'relative',\n], {\n variants: {\n size: {\n inherit: '[&_svg]:size-inherit',\n xs: '[&_svg]:size-3',\n sm: '[&_svg]:size-4',\n md: '[&_svg]:size-5',\n lg: '[&_svg]:size-6',\n },\n },\n defaultVariants: { size: 'inherit' },\n});\n\ninterface ILoadedIconProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof loadedIconVariants> {\n loading?: boolean;\n}\n\nexport const LoadedIcon: FC<PropsWithChildren<ILoadedIconProps>> = (props) => {\n const { loading, children, size = 'md', className, ...rest } = props;\n return (\n <div\n {...rest}\n className={cn(loadedIconVariants({ size, className }))}\n >\n {loading\n ? <LoaderCircleIcon className=\"animate-spin\"/>\n : children}\n </div>\n );\n};\n"],"names":["loadedIconVariants","cva","LoadedIcon","props","loading","children","size","className","rest","jsx","cn","LoaderCircleIcon"],"mappings":";;;;AAMA,MAAMA,IAAqBC,EAAI;AAAA,EAC7B;AACF,GAAG;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB,EAAE,MAAM,UAAA;AAC3B,CAAC,GAQYC,IAAsD,CAACC,MAAU;AAC5E,QAAM,EAAE,SAAAC,GAAS,UAAAC,GAAU,MAAAC,IAAO,MAAM,WAAAC,GAAW,GAAGC,MAASL;AAC/D,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGD;AAAA,MACJ,WAAWE,EAAGV,EAAmB,EAAE,MAAAM,GAAM,WAAAC,EAAA,CAAW,CAAC;AAAA,MAEpD,UAAAH,IACG,gBAAAK,EAACE,GAAA,EAAiB,WAAU,gBAAc,IAC1CN;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
package/Resizable/Resizable.d.ts
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
1
2
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
2
|
-
declare
|
|
3
|
-
declare
|
|
4
|
-
|
|
5
|
-
collapsedSize?: number | undefined;
|
|
6
|
-
collapsible?: boolean | undefined;
|
|
7
|
-
defaultSize?: number | undefined;
|
|
8
|
-
id?: string;
|
|
9
|
-
maxSize?: number | undefined;
|
|
10
|
-
minSize?: number | undefined;
|
|
11
|
-
onCollapse?: ResizablePrimitive.PanelOnCollapse;
|
|
12
|
-
onExpand?: ResizablePrimitive.PanelOnExpand;
|
|
13
|
-
onResize?: ResizablePrimitive.PanelOnResize;
|
|
14
|
-
order?: number;
|
|
15
|
-
style?: object;
|
|
16
|
-
tagName?: keyof HTMLElementTagNameMap | undefined;
|
|
17
|
-
} & {
|
|
18
|
-
children?: import('react').ReactNode | undefined;
|
|
19
|
-
} & import('react').RefAttributes<ResizablePrimitive.ImperativePanelHandle>>;
|
|
20
|
-
declare const ResizableHandle: ({ withHandle, className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
|
|
3
|
+
declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function ResizablePanel({ ...props }: React.ComponentProps<typeof ResizablePrimitive.Panel>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function ResizableHandle(props: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
|
|
21
6
|
withHandle?: boolean;
|
|
22
|
-
})
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
8
|
export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
|
|
24
9
|
//# sourceMappingURL=Resizable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resizable.d.ts","sourceRoot":"","sources":["../../src/Resizable/Resizable.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Resizable.d.ts","sourceRoot":"","sources":["../../src/Resizable/Resizable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAI5D,iBAAS,mBAAmB,CAAC,EACE,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,UAAU,CAAC,2CAWzF;AAED,iBAAS,cAAc,CAAC,EACE,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,KAAK,CAAC,2CAE/E;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,GAAG;IAClG,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,2CAwBA;AAED,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
|
package/Resizable/Resizable.js
CHANGED
|
@@ -1,37 +1,54 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
1
|
+
import { jsx as a, jsxs as s } from "react/jsx-runtime";
|
|
2
|
+
import { GripVerticalIcon as c } from "lucide-react";
|
|
3
3
|
import * as t from "react-resizable-panels";
|
|
4
4
|
import { cn as i } from "@oneplatformdev/utils";
|
|
5
|
-
|
|
6
|
-
className:
|
|
5
|
+
function u({
|
|
6
|
+
className: e,
|
|
7
7
|
...r
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
8
|
+
}) {
|
|
9
|
+
return /* @__PURE__ */ a(
|
|
10
|
+
t.PanelGroup,
|
|
11
|
+
{
|
|
12
|
+
"data-slot": "resizable-panel-group",
|
|
13
|
+
className: i(
|
|
14
|
+
"flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
|
|
15
|
+
e
|
|
16
|
+
),
|
|
17
|
+
...r
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
function b({
|
|
22
|
+
...e
|
|
23
|
+
}) {
|
|
24
|
+
return /* @__PURE__ */ a(t.Panel, { "data-slot": "resizable-panel", ...e });
|
|
25
|
+
}
|
|
26
|
+
function v(e) {
|
|
27
|
+
const {
|
|
28
|
+
withHandle: r,
|
|
29
|
+
className: l,
|
|
30
|
+
children: n,
|
|
31
|
+
...o
|
|
32
|
+
} = e;
|
|
33
|
+
return /* @__PURE__ */ s(
|
|
34
|
+
t.PanelResizeHandle,
|
|
35
|
+
{
|
|
36
|
+
"data-slot": "resizable-handle",
|
|
37
|
+
className: i(
|
|
38
|
+
"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
|
|
39
|
+
l
|
|
40
|
+
),
|
|
41
|
+
...o,
|
|
42
|
+
children: [
|
|
43
|
+
n,
|
|
44
|
+
r && /* @__PURE__ */ a("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ a(c, { className: "size-2.5" }) })
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
32
49
|
export {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
50
|
+
v as ResizableHandle,
|
|
51
|
+
b as ResizablePanel,
|
|
52
|
+
u as ResizablePanelGroup
|
|
36
53
|
};
|
|
37
54
|
//# sourceMappingURL=Resizable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Resizable.js","sources":["../../src/Resizable/Resizable.tsx"],"sourcesContent":["\"use client\"\n\nimport {
|
|
1
|
+
{"version":3,"file":"Resizable.js","sources":["../../src/Resizable/Resizable.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@oneplatformdev/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n }: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle(props: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n const {\n withHandle,\n className,\n children,\n ...rest\n } = props;\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...rest}\n >\n {children}\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n"],"names":["ResizablePanelGroup","className","props","jsx","ResizablePrimitive","cn","ResizablePanel","ResizableHandle","withHandle","children","rest","jsxs","GripVerticalIcon"],"mappings":";;;;AAQA,SAASA,EAAoB;AAAA,EACE,WAAAC;AAAA,EACA,GAAGC;AACL,GAA+D;AAC1F,SACE,gBAAAC;AAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAe;AAAA,EACE,GAAGJ;AACL,GAA0D;AAChF,2BAAQE,EAAmB,OAAnB,EAAyB,aAAU,mBAAmB,GAAGF,GAAO;AAC1E;AAEA,SAASK,EAAgBL,GAEtB;AACD,QAAM;AAAA,IACJ,YAAAM;AAAA,IACA,WAAAP;AAAA,IACA,UAAAQ;AAAA,IACA,GAAGC;AAAA,EAAA,IACDR;AACJ,SACE,gBAAAS;AAAA,IAACP,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAD;AAAA,QACAD,uBACE,OAAA,EAAI,WAAU,6EACb,UAAA,gBAAAL,EAACS,GAAA,EAAiB,WAAU,WAAA,CAAW,EAAA,CACzC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
import * as c from "react";
|
|
3
|
+
import { ResizablePanelGroup as r, ResizablePanel as l, ResizableHandle as n } from "./Resizable.js";
|
|
4
|
+
const b = {
|
|
5
|
+
title: "ui/Resizable",
|
|
6
|
+
component: r,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "fullscreen"
|
|
9
|
+
},
|
|
10
|
+
decorators: [
|
|
11
|
+
(a) => /* @__PURE__ */ e("div", { className: "p-6", children: /* @__PURE__ */ e("div", { className: "h-[420px] w-[920px] overflow-hidden rounded-xl border bg-background shadow-sm", children: /* @__PURE__ */ e(a, {}) }) })
|
|
12
|
+
]
|
|
13
|
+
};
|
|
14
|
+
function i({
|
|
15
|
+
label: a,
|
|
16
|
+
subtle: d
|
|
17
|
+
}) {
|
|
18
|
+
return /* @__PURE__ */ e(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
className: [
|
|
22
|
+
"h-full w-full",
|
|
23
|
+
"flex items-center justify-center",
|
|
24
|
+
"text-sm font-medium",
|
|
25
|
+
"select-none",
|
|
26
|
+
d ? "bg-muted/30" : "bg-muted/50"
|
|
27
|
+
].join(" "),
|
|
28
|
+
children: a
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
const z = {
|
|
33
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
34
|
+
/* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Left (50%)" }) }),
|
|
35
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
36
|
+
/* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Right (50%)", subtle: !0 }) })
|
|
37
|
+
] })
|
|
38
|
+
}, f = {
|
|
39
|
+
render: () => /* @__PURE__ */ t(r, { direction: "vertical", children: [
|
|
40
|
+
/* @__PURE__ */ e(l, { defaultSize: 60, children: /* @__PURE__ */ e(i, { label: "Top (60%)" }) }),
|
|
41
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
42
|
+
/* @__PURE__ */ e(l, { defaultSize: 40, children: /* @__PURE__ */ e(i, { label: "Bottom (40%)", subtle: !0 }) })
|
|
43
|
+
] })
|
|
44
|
+
}, S = {
|
|
45
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
46
|
+
/* @__PURE__ */ e(l, { defaultSize: 35, children: /* @__PURE__ */ e(i, { label: "Sidebar (35%)" }) }),
|
|
47
|
+
/* @__PURE__ */ e(n, {}),
|
|
48
|
+
/* @__PURE__ */ e(l, { defaultSize: 65, children: /* @__PURE__ */ e(i, { label: "Content (65%)", subtle: !0 }) })
|
|
49
|
+
] })
|
|
50
|
+
}, m = {
|
|
51
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
52
|
+
/* @__PURE__ */ e(l, { defaultSize: 33, children: /* @__PURE__ */ e(i, { label: "A (33%)" }) }),
|
|
53
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
54
|
+
/* @__PURE__ */ e(l, { defaultSize: 34, children: /* @__PURE__ */ e(i, { label: "B (34%)", subtle: !0 }) }),
|
|
55
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
56
|
+
/* @__PURE__ */ e(l, { defaultSize: 33, children: /* @__PURE__ */ e(i, { label: "C (33%)" }) })
|
|
57
|
+
] })
|
|
58
|
+
}, p = {
|
|
59
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
60
|
+
/* @__PURE__ */ e(l, { defaultSize: 20, minSize: 12, children: /* @__PURE__ */ e(i, { label: "Nav (20%)" }) }),
|
|
61
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
62
|
+
/* @__PURE__ */ e(l, { defaultSize: 55, minSize: 30, children: /* @__PURE__ */ e(i, { label: "Main (55%)", subtle: !0 }) }),
|
|
63
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
64
|
+
/* @__PURE__ */ e(l, { defaultSize: 25, minSize: 12, children: /* @__PURE__ */ e(i, { label: "Details (25%)" }) })
|
|
65
|
+
] })
|
|
66
|
+
}, x = {
|
|
67
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
68
|
+
/* @__PURE__ */ e(l, { defaultSize: 30, minSize: 20, maxSize: 40, children: /* @__PURE__ */ e(i, { label: "Left (min 20 / max 40)" }) }),
|
|
69
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
70
|
+
/* @__PURE__ */ e(l, { defaultSize: 70, minSize: 60, maxSize: 80, children: /* @__PURE__ */ e(i, { label: "Right (min 60 / max 80)", subtle: !0 }) })
|
|
71
|
+
] })
|
|
72
|
+
}, w = {
|
|
73
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
74
|
+
/* @__PURE__ */ e(
|
|
75
|
+
l,
|
|
76
|
+
{
|
|
77
|
+
defaultSize: 22,
|
|
78
|
+
minSize: 12,
|
|
79
|
+
collapsible: !0,
|
|
80
|
+
collapsedSize: 4,
|
|
81
|
+
children: /* @__PURE__ */ e(i, { label: "Sidebar (collapsible)" })
|
|
82
|
+
}
|
|
83
|
+
),
|
|
84
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
85
|
+
/* @__PURE__ */ e(l, { defaultSize: 78, minSize: 50, children: /* @__PURE__ */ e(i, { label: "Main content", subtle: !0 }) })
|
|
86
|
+
] })
|
|
87
|
+
}, H = {
|
|
88
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
89
|
+
/* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Left (fixed)" }) }),
|
|
90
|
+
/* @__PURE__ */ e(n, { withHandle: !0, disabled: !0 }),
|
|
91
|
+
/* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Right (fixed)", subtle: !0 }) })
|
|
92
|
+
] })
|
|
93
|
+
}, g = {
|
|
94
|
+
render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
|
|
95
|
+
/* @__PURE__ */ e(l, { defaultSize: 45, minSize: 25, children: /* @__PURE__ */ t(r, { direction: "vertical", children: [
|
|
96
|
+
/* @__PURE__ */ e(l, { defaultSize: 55, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Left / Top" }) }),
|
|
97
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
98
|
+
/* @__PURE__ */ e(l, { defaultSize: 45, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Left / Bottom", subtle: !0 }) })
|
|
99
|
+
] }) }),
|
|
100
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
101
|
+
/* @__PURE__ */ e(l, { defaultSize: 55, minSize: 30, children: /* @__PURE__ */ e(i, { label: "Right (single)", subtle: !0 }) })
|
|
102
|
+
] })
|
|
103
|
+
}, y = {
|
|
104
|
+
render: () => /* @__PURE__ */ e(() => {
|
|
105
|
+
const [d, u] = c.useState([]);
|
|
106
|
+
return /* @__PURE__ */ t("div", { className: "h-full w-full", children: [
|
|
107
|
+
/* @__PURE__ */ t("div", { className: "border-b px-3 py-2 text-xs text-muted-foreground", children: [
|
|
108
|
+
"Layout:",
|
|
109
|
+
" ",
|
|
110
|
+
d.length ? d.map((o) => Math.round(o)).join(" / ") : "— (move handle)"
|
|
111
|
+
] }),
|
|
112
|
+
/* @__PURE__ */ e("div", { className: "h-[calc(100%-33px)]", children: /* @__PURE__ */ t(
|
|
113
|
+
r,
|
|
114
|
+
{
|
|
115
|
+
direction: "horizontal",
|
|
116
|
+
onLayout: (o) => u(o),
|
|
117
|
+
children: [
|
|
118
|
+
/* @__PURE__ */ e(l, { defaultSize: 40, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Left" }) }),
|
|
119
|
+
/* @__PURE__ */ e(n, { withHandle: !0 }),
|
|
120
|
+
/* @__PURE__ */ e(l, { defaultSize: 60, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Right", subtle: !0 }) })
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
) })
|
|
124
|
+
] });
|
|
125
|
+
}, {})
|
|
126
|
+
};
|
|
127
|
+
export {
|
|
128
|
+
w as CollapsibleSidebar,
|
|
129
|
+
H as DisabledHandle,
|
|
130
|
+
S as HandleWithoutGrip,
|
|
131
|
+
z as HorizontalTwoPanels,
|
|
132
|
+
y as LayoutDebug,
|
|
133
|
+
x as MinMaxConstraints,
|
|
134
|
+
g as NestedResizable,
|
|
135
|
+
m as ThreePanelsEqual,
|
|
136
|
+
p as ThreePanelsSidebarLayout,
|
|
137
|
+
f as VerticalTwoPanels,
|
|
138
|
+
b as default
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=Resizable.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resizable.stories.js","sources":["../../src/Resizable/Resizable.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\"\nimport * as React from \"react\"\n\nimport {\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n} from \"./Resizable\"\n\nconst meta: Meta<typeof ResizablePanelGroup> = {\n title: \"ui/Resizable\",\n component: ResizablePanelGroup,\n parameters: {\n layout: \"fullscreen\",\n },\n decorators: [\n (Story) => (\n <div className=\"p-6\">\n <div className=\"h-[420px] w-[920px] overflow-hidden rounded-xl border bg-background shadow-sm\">\n <Story />\n </div>\n </div>\n ),\n ],\n}\nexport default meta\ntype Story = StoryObj<typeof ResizablePanelGroup>\n\nfunction PanelBox({\n label,\n subtle,\n }: {\n label: string\n subtle?: boolean\n}) {\n return (\n <div\n className={[\n \"h-full w-full\",\n \"flex items-center justify-center\",\n \"text-sm font-medium\",\n \"select-none\",\n subtle ? \"bg-muted/30\" : \"bg-muted/50\",\n ].join(\" \")}\n >\n {label}\n </div>\n )\n}\n\n/** 1) Базовий горизонтальний спліт 50/50 */\nexport const HorizontalTwoPanels: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Left (50%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Right (50%)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 2) Вертикальний спліт 60/40 */\nexport const VerticalTwoPanels: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"vertical\">\n <ResizablePanel defaultSize={60}>\n <PanelBox label=\"Top (60%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={40}>\n <PanelBox label=\"Bottom (40%)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 3) Без “grip” (withHandle=false) — тонкий роздільник */\nexport const HandleWithoutGrip: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={35}>\n <PanelBox label=\"Sidebar (35%)\" />\n </ResizablePanel>\n <ResizableHandle />\n <ResizablePanel defaultSize={65}>\n <PanelBox label=\"Content (65%)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 4) Три панелі рівномірно (33/34/33) */\nexport const ThreePanelsEqual: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={33}>\n <PanelBox label=\"A (33%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={34}>\n <PanelBox label=\"B (34%)\" subtle />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={33}>\n <PanelBox label=\"C (33%)\" />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 5) Три панелі з “sidebar layout” (20/55/25) */\nexport const ThreePanelsSidebarLayout: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={20} minSize={12}>\n <PanelBox label=\"Nav (20%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={55} minSize={30}>\n <PanelBox label=\"Main (55%)\" subtle />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={25} minSize={12}>\n <PanelBox label=\"Details (25%)\" />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 6) Обмеження min/max size (наочно “впирається” при ресайзі) */\nexport const MinMaxConstraints: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={30} minSize={20} maxSize={40}>\n <PanelBox label=\"Left (min 20 / max 40)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={70} minSize={60} maxSize={80}>\n <PanelBox label=\"Right (min 60 / max 80)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 7) Collapsible sidebar (якщо ваш Panel підтримує collapsible/collapsedSize) */\nexport const CollapsibleSidebar: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel\n defaultSize={22}\n minSize={12}\n collapsible\n collapsedSize={4}\n >\n <PanelBox label=\"Sidebar (collapsible)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={78} minSize={50}>\n <PanelBox label=\"Main content\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 8) Disabled handle (якщо Separator/Handle підтримує disabled) */\nexport const DisabledHandle: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Left (fixed)\" />\n </ResizablePanel>\n <ResizableHandle withHandle disabled />\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Right (fixed)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 9) Nested split: зліва — вертикальний, справа — суцільний */\nexport const NestedResizable: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={45} minSize={25}>\n <ResizablePanelGroup direction=\"vertical\">\n <ResizablePanel defaultSize={55} minSize={20}>\n <PanelBox label=\"Left / Top\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={45} minSize={20}>\n <PanelBox label=\"Left / Bottom\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={55} minSize={30}>\n <PanelBox label=\"Right (single)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 10) Debug layout: показує поточні розміри (onLayout) */\nexport const LayoutDebug: Story = {\n render: () => {\n const LayoutStory = () => {\n const [layout, setLayout] = React.useState<number[]>([])\n\n return (\n <div className=\"h-full w-full\">\n <div className=\"border-b px-3 py-2 text-xs text-muted-foreground\">\n Layout:{\" \"}\n {layout.length\n ? layout.map((v) => Math.round(v)).join(\" / \")\n : \"— (move handle)\"}\n </div>\n\n <div className=\"h-[calc(100%-33px)]\">\n <ResizablePanelGroup\n direction=\"horizontal\"\n onLayout={(sizes) => setLayout(sizes)}\n >\n <ResizablePanel defaultSize={40} minSize={20}>\n <PanelBox label=\"Left\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={60} minSize={20}>\n <PanelBox label=\"Right\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n </div>\n </div>\n )\n }\n\n return <LayoutStory />\n },\n}\n"],"names":["meta","ResizablePanelGroup","Story","jsx","PanelBox","label","subtle","HorizontalTwoPanels","jsxs","ResizablePanel","ResizableHandle","VerticalTwoPanels","HandleWithoutGrip","ThreePanelsEqual","ThreePanelsSidebarLayout","MinMaxConstraints","CollapsibleSidebar","DisabledHandle","NestedResizable","LayoutDebug","layout","setLayout","React","v","sizes"],"mappings":"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"}
|
package/Search/Search.js
CHANGED
|
@@ -5,37 +5,37 @@ import { useDebounceCallback as b } from "@oneplatformdev/hooks";
|
|
|
5
5
|
import { cn as x } from "@oneplatformdev/utils";
|
|
6
6
|
import { SearchIcon as I } from "lucide-react";
|
|
7
7
|
import { LoadedIcon as N } from "../LoadedIcon/LoadedIcon.js";
|
|
8
|
-
const
|
|
8
|
+
const L = (n) => {
|
|
9
9
|
const {
|
|
10
10
|
search: e,
|
|
11
|
-
onChange:
|
|
12
|
-
onSearch:
|
|
11
|
+
onChange: c,
|
|
12
|
+
onSearch: s,
|
|
13
13
|
placeholder: m = "Search",
|
|
14
|
-
className:
|
|
15
|
-
loading:
|
|
14
|
+
className: l,
|
|
15
|
+
loading: h = !1,
|
|
16
16
|
slotProps: o,
|
|
17
|
-
name:
|
|
17
|
+
name: i = "search",
|
|
18
18
|
...p
|
|
19
|
-
} = n, [u, a] = g(e), f = b(
|
|
19
|
+
} = n, [u, a] = g(e), f = b(s, 1e3), d = (r) => {
|
|
20
20
|
const S = r.target.value;
|
|
21
|
-
a(S),
|
|
21
|
+
a(S), c?.(r), f(r.target.value);
|
|
22
22
|
};
|
|
23
23
|
return v(() => {
|
|
24
24
|
a(e ?? "");
|
|
25
25
|
}, [e]), /* @__PURE__ */ t(
|
|
26
26
|
C,
|
|
27
27
|
{
|
|
28
|
-
name:
|
|
28
|
+
name: i,
|
|
29
29
|
placeholder: m,
|
|
30
30
|
value: u,
|
|
31
|
-
className: x("min-w-[340px]",
|
|
31
|
+
className: x("min-w-[340px]", l),
|
|
32
32
|
onChange: d,
|
|
33
33
|
...p,
|
|
34
34
|
...o || {},
|
|
35
35
|
slotProps: {
|
|
36
36
|
...o || {},
|
|
37
37
|
input: {
|
|
38
|
-
startAdornment: /* @__PURE__ */ t(N, { loading:
|
|
38
|
+
startAdornment: /* @__PURE__ */ t(N, { loading: h, children: /* @__PURE__ */ t(I, {}) }),
|
|
39
39
|
...o?.input || {}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -43,6 +43,6 @@ const E = (n) => {
|
|
|
43
43
|
);
|
|
44
44
|
};
|
|
45
45
|
export {
|
|
46
|
-
|
|
46
|
+
L as Search
|
|
47
47
|
};
|
|
48
48
|
//# sourceMappingURL=Search.js.map
|
package/Search/Search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.js","sources":["../../src/Search/Search.tsx"],"sourcesContent":["'use client';\n\nimport { ChangeEvent, useEffect, useState } from 'react';\n\nimport { Input } from '../Input';\nimport { SearchProps } from './Search.types';\n\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport { cn } from '@oneplatformdev/utils';\nimport { SearchIcon } from 'lucide-react';\nimport { LoadedIcon } from '../LoadedIcon';\n\nexport const Search = (props: SearchProps) => {\n const {\n search: initialSearch,\n onChange: handleChange,\n onSearch,\n placeholder = 'Search',\n className,\n loading = false,\n slotProps,\n name = 'search',\n ...rest\n } = props;\n const [search, setSearch] = useState(initialSearch);\n const debounced = useDebounceCallback(onSearch, 1000);\n\n const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n const v = e.target.value;\n setSearch(v);\n handleChange?.(e);\n debounced(e.target.value);\n };\n\n useEffect(() => {\n setSearch(initialSearch ?? '');\n }, [initialSearch]);\n\n return (\n <Input\n name={name}\n placeholder={placeholder}\n value={search}\n className={cn('min-w-[340px]', className)}\n onChange={onChange}\n {...rest}\n {...(slotProps || {})}\n slotProps={{\n ...(slotProps || {}),\n input: {\n startAdornment: (\n <LoadedIcon loading={loading}
|
|
1
|
+
{"version":3,"file":"Search.js","sources":["../../src/Search/Search.tsx"],"sourcesContent":["'use client';\n\nimport { ChangeEvent, useEffect, useState } from 'react';\n\nimport { Input } from '../Input';\nimport { SearchProps } from './Search.types';\n\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport { cn } from '@oneplatformdev/utils';\nimport { SearchIcon } from 'lucide-react';\nimport { LoadedIcon } from '../LoadedIcon';\n\nexport const Search = (props: SearchProps) => {\n const {\n search: initialSearch,\n onChange: handleChange,\n onSearch,\n placeholder = 'Search',\n className,\n loading = false,\n slotProps,\n name = 'search',\n ...rest\n } = props;\n const [search, setSearch] = useState(initialSearch);\n const debounced = useDebounceCallback(onSearch, 1000);\n\n const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n const v = e.target.value;\n setSearch(v);\n handleChange?.(e);\n debounced(e.target.value);\n };\n\n useEffect(() => {\n setSearch(initialSearch ?? '');\n }, [initialSearch]);\n\n return (\n <Input\n name={name}\n placeholder={placeholder}\n value={search}\n className={cn('min-w-[340px]', className)}\n onChange={onChange}\n {...rest}\n {...(slotProps || {})}\n slotProps={{\n ...(slotProps || {}),\n input: {\n startAdornment: (\n <LoadedIcon loading={loading}>\n <SearchIcon />\n </LoadedIcon>\n ),\n ...(slotProps?.input || {}),\n },\n }}\n />\n );\n};\n"],"names":["Search","props","initialSearch","handleChange","onSearch","placeholder","className","loading","slotProps","name","rest","search","setSearch","useState","debounced","useDebounceCallback","onChange","e","v","useEffect","jsx","Input","cn","LoadedIcon","SearchIcon"],"mappings":";;;;;;;AAYO,MAAMA,IAAS,CAACC,MAAuB;AAC5C,QAAM;AAAA,IACJ,QAAQC;AAAA,IACR,UAAUC;AAAA,IACV,UAAAC;AAAA,IACA,aAAAC,IAAc;AAAA,IACd,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,WAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,GAAGC;AAAA,EAAA,IACDT,GACE,CAACU,GAAQC,CAAS,IAAIC,EAASX,CAAa,GAC5CY,IAAYC,EAAoBX,GAAU,GAAI,GAE9CY,IAAW,CAACC,MAAqC;AACrD,UAAMC,IAAID,EAAE,OAAO;AACnB,IAAAL,EAAUM,CAAC,GACXf,IAAec,CAAC,GAChBH,EAAUG,EAAE,OAAO,KAAK;AAAA,EAC1B;AAEA,SAAAE,EAAU,MAAM;AACd,IAAAP,EAAUV,KAAiB,EAAE;AAAA,EAC/B,GAAG,CAACA,CAAa,CAAC,GAGhB,gBAAAkB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAZ;AAAA,MACA,aAAAJ;AAAA,MACA,OAAOM;AAAA,MACP,WAAWW,EAAG,iBAAiBhB,CAAS;AAAA,MACxC,UAAAU;AAAA,MACC,GAAGN;AAAA,MACH,GAAIF,KAAa,CAAA;AAAA,MAClB,WAAW;AAAA,QACT,GAAIA,KAAa,CAAA;AAAA,QACjB,OAAO;AAAA,UACL,gBACE,gBAAAY,EAACG,GAAA,EAAW,SAAAhB,GACV,UAAA,gBAAAa,EAACI,KAAW,GACd;AAAA,UAEF,GAAIhB,GAAW,SAAS,CAAA;AAAA,QAAC;AAAA,MAC3B;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Search as t } from "./Search.js";
|
|
2
|
+
const a = {
|
|
3
|
+
title: "Input/Search",
|
|
4
|
+
component: t
|
|
5
|
+
}, o = {
|
|
6
|
+
args: {
|
|
7
|
+
slotProps: {},
|
|
8
|
+
search: "search",
|
|
9
|
+
onSearch: () => {
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
o as Default,
|
|
15
|
+
a as default
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=Search.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Search.stories.js","sources":["../../src/Search/Search.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react-vite';\n\nimport { Search } from './Search';\n\nconst meta = {\n title: 'Input/Search',\n component: Search,\n} satisfies Meta<typeof Search>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n args: {\n slotProps: {},\n search: \"search\",\n onSearch: () => {}\n }\n};\n"],"names":["meta","Search","Default"],"mappings":";AAIA,MAAMA,IAAO;AAAA,EACX,OAAO;AAAA,EACP,WAAWC;AACb,GAMaC,IAAiB;AAAA,EAC5B,MAAM;AAAA,IACJ,WAAW,CAAA;AAAA,IACX,QAAQ;AAAA,IACR,UAAU,MAAM;AAAA,IAAC;AAAA,EAAA;AAErB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../src/Textarea/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,QAAA,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../src/Textarea/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,QAAA,MAAM,QAAQ,wGA2Eb,CAAC;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/Textarea/Textarea.js
CHANGED
|
@@ -1,73 +1,78 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import * as
|
|
3
|
-
import { useId as
|
|
4
|
-
import { cn as
|
|
5
|
-
import { useAutosizeTextArea as
|
|
6
|
-
const
|
|
7
|
-
(
|
|
1
|
+
import { jsxs as d, Fragment as v, jsx as A } from "react/jsx-runtime";
|
|
2
|
+
import * as w from "react";
|
|
3
|
+
import { useId as y, useRef as z, useState as F, useImperativeHandle as N, useEffect as T } from "react";
|
|
4
|
+
import { cn as f } from "@oneplatformdev/utils";
|
|
5
|
+
import { useAutosizeTextArea as C } from "./useAutosizeTextArea.js";
|
|
6
|
+
const R = w.forwardRef(
|
|
7
|
+
(m, c) => {
|
|
8
8
|
const {
|
|
9
|
-
className:
|
|
10
|
-
value:
|
|
11
|
-
maxHeight:
|
|
12
|
-
minHeight: i =
|
|
13
|
-
resizeble:
|
|
9
|
+
className: g,
|
|
10
|
+
value: r = "",
|
|
11
|
+
maxHeight: a = Number.MAX_SAFE_INTEGER,
|
|
12
|
+
minHeight: i = 40,
|
|
13
|
+
resizeble: x = !1,
|
|
14
14
|
counter: s = !1,
|
|
15
15
|
id: n = "",
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
onChange: p,
|
|
17
|
+
onTransform: l,
|
|
18
|
+
...o
|
|
19
|
+
} = m, u = y(), t = z(null), [b, h] = F("");
|
|
20
|
+
return C({
|
|
21
|
+
textAreaRef: t,
|
|
22
|
+
triggerAutoSize: b,
|
|
23
|
+
maxHeight: a,
|
|
22
24
|
minHeight: i
|
|
23
|
-
}),
|
|
24
|
-
...
|
|
25
|
-
textArea:
|
|
26
|
-
focus: () =>
|
|
27
|
-
maxHeight:
|
|
25
|
+
}), N(c, () => ({
|
|
26
|
+
...t.current ?? {},
|
|
27
|
+
textArea: t.current,
|
|
28
|
+
focus: () => t?.current?.focus(),
|
|
29
|
+
maxHeight: a,
|
|
28
30
|
minHeight: i
|
|
29
|
-
})),
|
|
30
|
-
|
|
31
|
-
}, [
|
|
32
|
-
/* @__PURE__ */
|
|
31
|
+
})), T(() => {
|
|
32
|
+
h(r);
|
|
33
|
+
}, [o?.defaultValue, r]), /* @__PURE__ */ d(v, { children: [
|
|
34
|
+
/* @__PURE__ */ A(
|
|
33
35
|
"textarea",
|
|
34
36
|
{
|
|
35
|
-
id: n ||
|
|
36
|
-
...
|
|
37
|
-
ref:
|
|
38
|
-
value:
|
|
39
|
-
|
|
37
|
+
id: n || u,
|
|
38
|
+
...o,
|
|
39
|
+
ref: t,
|
|
40
|
+
value: r,
|
|
41
|
+
onChange: (e) => {
|
|
42
|
+
typeof l?.(e.target.value, e) == "string" && (e.target.value = l(e.target.value, e)), p?.(e);
|
|
43
|
+
},
|
|
44
|
+
className: f(
|
|
40
45
|
"flex min-h-10 w-full px-3 py-2 text-base relative md:text-sm",
|
|
41
|
-
"rounded-
|
|
46
|
+
"rounded-lg border border-input bg-[#FCFCFC] shadow-none",
|
|
42
47
|
"placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
43
48
|
"focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring",
|
|
44
|
-
|
|
45
|
-
s && "pb-
|
|
46
|
-
|
|
49
|
+
x ? "resize" : "resize-none overflow-hidden!",
|
|
50
|
+
s && "pb-1",
|
|
51
|
+
g
|
|
47
52
|
)
|
|
48
53
|
}
|
|
49
54
|
),
|
|
50
|
-
s && /* @__PURE__ */
|
|
55
|
+
s && /* @__PURE__ */ d(
|
|
51
56
|
"label",
|
|
52
57
|
{
|
|
53
|
-
htmlFor: n ||
|
|
54
|
-
className:
|
|
58
|
+
htmlFor: n || u,
|
|
59
|
+
className: f(
|
|
55
60
|
"w-full text-right inline-flex items-center justify-end",
|
|
56
|
-
"text-
|
|
57
|
-
"
|
|
61
|
+
"text-xs font-medium leading-[1.2] text-muted-foreground",
|
|
62
|
+
"peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
58
63
|
),
|
|
59
64
|
children: [
|
|
60
|
-
String(
|
|
65
|
+
String(r || "").length,
|
|
61
66
|
" / ",
|
|
62
|
-
|
|
67
|
+
o?.maxLength
|
|
63
68
|
]
|
|
64
69
|
}
|
|
65
70
|
)
|
|
66
71
|
] });
|
|
67
72
|
}
|
|
68
73
|
);
|
|
69
|
-
|
|
74
|
+
R.displayName = "Textarea";
|
|
70
75
|
export {
|
|
71
|
-
|
|
76
|
+
R as Textarea
|
|
72
77
|
};
|
|
73
78
|
//# sourceMappingURL=Textarea.js.map
|
package/Textarea/Textarea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","sources":["../../src/Textarea/Textarea.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport { cn } from '@oneplatformdev/utils';\n\nimport { TextareaProps } from './Textarea.types';\nimport { useAutosizeTextArea } from './useAutosizeTextArea';\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (textareaProps, ref) => {\n const {\n className,\n value = '',\n maxHeight = Number.MAX_SAFE_INTEGER,\n minHeight =
|
|
1
|
+
{"version":3,"file":"Textarea.js","sources":["../../src/Textarea/Textarea.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport { cn } from '@oneplatformdev/utils';\n\nimport { TextareaProps } from './Textarea.types';\nimport { useAutosizeTextArea } from './useAutosizeTextArea';\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (textareaProps, ref) => {\n const {\n className,\n value = '',\n maxHeight = Number.MAX_SAFE_INTEGER,\n minHeight = 40,\n resizeble = false,\n counter = false,\n id: customId = '',\n onChange,\n onTransform,\n ...props\n } = textareaProps;\n const id = useId();\n const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n const [triggerAutoSize, setTriggerAutoSize] = useState('');\n\n useAutosizeTextArea({\n textAreaRef,\n triggerAutoSize: triggerAutoSize,\n maxHeight,\n minHeight,\n });\n\n useImperativeHandle(ref, () => ({\n ...((textAreaRef.current ?? {}) as HTMLTextAreaElement),\n textArea: textAreaRef.current as HTMLTextAreaElement,\n focus: () => textAreaRef?.current?.focus(),\n maxHeight,\n minHeight,\n }));\n\n useEffect(() => {\n setTriggerAutoSize(value as string);\n }, [props?.defaultValue, value]);\n\n return (\n <>\n <textarea\n id={customId || id}\n {...props}\n ref={textAreaRef}\n value={value}\n onChange={(e) => {\n if (typeof onTransform?.(e.target.value, e) === 'string') {\n e.target.value = onTransform(e.target.value, e);\n }\n onChange?.(e);\n }}\n className={cn(\n 'flex min-h-10 w-full px-3 py-2 text-base relative md:text-sm',\n 'rounded-lg border border-input bg-[#FCFCFC] shadow-none',\n 'placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring',\n resizeble ? 'resize' : 'resize-none overflow-hidden!',\n counter && 'pb-1',\n className\n )}\n />\n {counter && (\n <label\n htmlFor={customId || id}\n className={cn(\n 'w-full text-right inline-flex items-center justify-end',\n 'text-xs font-medium leading-[1.2] text-muted-foreground',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-70'\n )}\n >\n {String(value || '').length} / {props?.maxLength}\n </label>\n )}\n </>\n );\n }\n);\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n"],"names":["Textarea","React","textareaProps","ref","className","value","maxHeight","minHeight","resizeble","counter","customId","onChange","onTransform","props","id","useId","textAreaRef","useRef","triggerAutoSize","setTriggerAutoSize","useState","useAutosizeTextArea","useImperativeHandle","useEffect","jsxs","Fragment","jsx","cn"],"mappings":";;;;;AAOA,MAAMA,IAAWC,EAAM;AAAA,EACrB,CAACC,GAAeC,MAAQ;AACtB,UAAM;AAAA,MACJ,WAAAC;AAAA,MACA,OAAAC,IAAQ;AAAA,MACR,WAAAC,IAAY,OAAO;AAAA,MACnB,WAAAC,IAAY;AAAA,MACZ,WAAAC,IAAY;AAAA,MACZ,SAAAC,IAAU;AAAA,MACV,IAAIC,IAAW;AAAA,MACf,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,GAAGC;AAAA,IAAA,IACDX,GACEY,IAAKC,EAAA,GACLC,IAAcC,EAAmC,IAAI,GACrD,CAACC,GAAiBC,CAAkB,IAAIC,EAAS,EAAE;AAEzD,WAAAC,EAAoB;AAAA,MAClB,aAAAL;AAAA,MACA,iBAAAE;AAAA,MACA,WAAAZ;AAAA,MACA,WAAAC;AAAA,IAAA,CACD,GAEDe,EAAoBnB,GAAK,OAAO;AAAA,MAC9B,GAAKa,EAAY,WAAW,CAAA;AAAA,MAC5B,UAAUA,EAAY;AAAA,MACtB,OAAO,MAAMA,GAAa,SAAS,MAAA;AAAA,MACnC,WAAAV;AAAA,MACA,WAAAC;AAAA,IAAA,EACA,GAEFgB,EAAU,MAAM;AACd,MAAAJ,EAAmBd,CAAe;AAAA,IACpC,GAAG,CAACQ,GAAO,cAAcR,CAAK,CAAC,GAG7B,gBAAAmB,EAAAC,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAIhB,KAAYI;AAAA,UACf,GAAGD;AAAA,UACJ,KAAKG;AAAA,UACL,OAAAX;AAAA,UACA,UAAU,CAAC,MAAM;AACf,YAAI,OAAOO,IAAc,EAAE,OAAO,OAAO,CAAC,KAAM,aAC9C,EAAE,OAAO,QAAQA,EAAY,EAAE,OAAO,OAAO,CAAC,IAEhDD,IAAW,CAAC;AAAA,UACd;AAAA,UACA,WAAWgB;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAnB,IAAY,WAAW;AAAA,YACvBC,KAAW;AAAA,YACXL;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,MAEDK,KACC,gBAAAe;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASd,KAAYI;AAAA,UACrB,WAAWa;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAGD,UAAA;AAAA,YAAA,OAAOtB,KAAS,EAAE,EAAE;AAAA,YAAO;AAAA,YAAIQ,GAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACzC,GAEJ;AAAA,EAEJ;AACF;AACAb,EAAS,cAAc;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.stories.js","sources":["../../src/Textarea/Textarea.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react-vite';\n\nimport { Textarea } from './Textarea';\n\nconst meta = {\n title: 'Input/Textarea',\n component: Textarea,\n} satisfies Meta<typeof Textarea>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n args: {}\n};\n"],"names":["meta","Textarea","Default"],"mappings":";AAIA,MAAMA,IAAO;AAAA,EACX,OAAO;AAAA,EACP,WAAWC;AACb,GAMaC,IAAiB;AAAA,EAC5B,MAAM,CAAA;AACR;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentProps, RefObject } from 'react';
|
|
1
|
+
import { ChangeEvent, ComponentProps, RefObject } from 'react';
|
|
2
2
|
export interface IUseAutosizeTextAreaProps {
|
|
3
3
|
textAreaRef: RefObject<HTMLTextAreaElement | null>;
|
|
4
4
|
triggerAutoSize: string;
|
|
@@ -14,5 +14,7 @@ export interface IUseAutosizeTextAreaProps {
|
|
|
14
14
|
export interface TextareaProps extends ComponentProps<'textarea'>, Pick<IUseAutosizeTextAreaProps, 'minHeight' | 'maxHeight'> {
|
|
15
15
|
resizeble?: boolean;
|
|
16
16
|
counter?: boolean;
|
|
17
|
+
/** func transform event.target.value before onChange event call*/
|
|
18
|
+
onTransform?: (value: string, event: ChangeEvent<HTMLInputElement>) => string;
|
|
17
19
|
}
|
|
18
20
|
//# sourceMappingURL=Textarea.types.d.ts.map
|