@oneplatformdev/ui 0.1.99-beta.1 → 0.1.99-beta.3
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/.storybook/Wrappers.js +30 -0
- package/.storybook/Wrappers.js.map +1 -0
- package/Button/Button.d.ts +64 -0
- package/Button/Button.d.ts.map +1 -1
- package/Button/Button.js +53 -56
- package/Button/Button.js.map +1 -1
- package/Button/Button.s.d.ts +83 -0
- package/Button/Button.s.d.ts.map +1 -0
- package/Button/Button.s.js +163 -0
- package/Button/Button.s.js.map +1 -0
- package/Button/Button.stories.js +218 -73
- package/Button/Button.stories.js.map +1 -1
- package/Button/Button.types.d.ts +29 -6
- package/Button/Button.types.d.ts.map +1 -1
- package/Button/buttonVariants.d.ts +4 -12
- package/Button/buttonVariants.d.ts.map +1 -1
- package/Button/buttonVariants.js +6 -7
- package/Button/buttonVariants.js.map +1 -1
- package/ButtonIcon/ButtonIcon.d.ts +45 -0
- package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
- package/ButtonIcon/ButtonIcon.js +20 -19
- package/ButtonIcon/ButtonIcon.js.map +1 -1
- package/ButtonIcon/ButtonIcon.stories.js +40 -35
- package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
- package/ButtonIcon/ButtonIcon.types.d.ts +5 -8
- package/ButtonIcon/ButtonIcon.types.d.ts.map +1 -1
- package/ButtonIcon/buttonIconVariants.d.ts +3 -1
- package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
- package/ButtonIcon/buttonIconVariants.js +1 -1
- package/ButtonIcon/buttonIconVariants.js.map +1 -1
- package/CHANGELOG.md +28 -0
- package/Input/Input.d.ts.map +1 -1
- package/Input/Input.js +51 -38
- package/Input/Input.js.map +1 -1
- package/Input/Input.types.d.ts +1 -0
- package/Input/Input.types.d.ts.map +1 -1
- package/LoadedIcon/LoadedIcon.d.ts +1 -1
- package/LoadedIcon/LoadedIcon.d.ts.map +1 -1
- package/LoadedIcon/LoadedIcon.js +15 -13
- package/LoadedIcon/LoadedIcon.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as p } from "react/jsx-runtime";
|
|
2
|
+
const r = (e) => /* @__PURE__ */ p(
|
|
3
|
+
"div",
|
|
4
|
+
{
|
|
5
|
+
style: {
|
|
6
|
+
padding: "0px 20px",
|
|
7
|
+
display: "flex",
|
|
8
|
+
gap: "32px",
|
|
9
|
+
alignItems: "flex-start"
|
|
10
|
+
},
|
|
11
|
+
children: /* @__PURE__ */ p(
|
|
12
|
+
"div",
|
|
13
|
+
{
|
|
14
|
+
style: {
|
|
15
|
+
position: "relative",
|
|
16
|
+
border: "2px dashed rgba(139, 92, 246, 0.7)",
|
|
17
|
+
borderRadius: "24px",
|
|
18
|
+
padding: "24px 32px",
|
|
19
|
+
display: "flex",
|
|
20
|
+
gap: "32px"
|
|
21
|
+
},
|
|
22
|
+
children: e.children
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
export {
|
|
28
|
+
r as DashedWrapper
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=Wrappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Wrappers.js","sources":["../../.storybook/Wrappers.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\n\nexport const MoreWrapper = (props: PropsWithChildren) => (\n <div\n style={{\n position: 'relative',\n padding: '24px 32px',\n display: 'flex',\n gap: '32px',\n }}\n >\n {props.children}\n </div>\n)\n\nexport const DashedWrapper = (props: PropsWithChildren) => {\n return (\n <div\n style={{\n padding: '0px 20px',\n display: 'flex',\n gap: '32px',\n alignItems: 'flex-start',\n }}\n >\n <div\n style={{\n position: 'relative',\n border: '2px dashed rgba(139, 92, 246, 0.7)',\n borderRadius: '24px',\n padding: '24px 32px',\n display: 'flex',\n gap: '32px',\n }}\n >\n {props.children}\n </div>\n </div>\n )\n}\n"],"names":["DashedWrapper","props","jsx"],"mappings":";AAeO,MAAMA,IAAgB,CAACC,MAE1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,KAAK;AAAA,MACL,YAAY;AAAA,IAAA;AAAA,IAGd,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,SAAS;AAAA,UACT,SAAS;AAAA,UACT,KAAK;AAAA,QAAA;AAAA,QAGN,UAAAD,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACT;AAAA;"}
|
package/Button/Button.d.ts
CHANGED
|
@@ -1,5 +1,69 @@
|
|
|
1
1
|
import { ButtonProps } from './Button.types';
|
|
2
2
|
import * as React from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Universal Button component used for triggering actions and UI interactions.
|
|
5
|
+
* Supports variants, sizes, colors, start/end icon adornments, custom slot content,
|
|
6
|
+
* tooltip integration, loading state, and polymorphic rendering via `asChild`.
|
|
7
|
+
*
|
|
8
|
+
* @public
|
|
9
|
+
* @see [Documentation](#) // TODO: add link to docs
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* > Import:
|
|
13
|
+
* ```tsx
|
|
14
|
+
* import { Button } from '@oneplatformdev/ui/Button';
|
|
15
|
+
* ```
|
|
16
|
+
* > Basic usage:
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <Button>Click me</Button>
|
|
19
|
+
* ```
|
|
20
|
+
* > Variant and size:
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <Button variant="outline" size="lg">Large Button</Button>
|
|
23
|
+
* ```
|
|
24
|
+
* > With icons:
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <Button startAdornment={<PlusIcon />}>Create</Button>
|
|
27
|
+
* <Button endAdornment={<ArrowRightIcon />}>Next</Button>
|
|
28
|
+
* ```
|
|
29
|
+
* > Icon style button:
|
|
30
|
+
* ```tsx
|
|
31
|
+
* <Button size="icon">
|
|
32
|
+
* <PlusIcon />
|
|
33
|
+
* </Button>
|
|
34
|
+
* ```
|
|
35
|
+
* > Polymorphic rendering (`asChild`):
|
|
36
|
+
* ```tsx
|
|
37
|
+
* <Button asChild>
|
|
38
|
+
* <a href="/dashboard">Go to Dashboard</a>
|
|
39
|
+
* </Button>
|
|
40
|
+
* ```
|
|
41
|
+
* > Tooltip via `message` or native `title`:
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <Button title="Tooltip text">Hover me</Button>
|
|
44
|
+
* <Button message="Tooltip content">Hover me</Button>
|
|
45
|
+
* ```
|
|
46
|
+
* > Loading state:
|
|
47
|
+
* ```tsx
|
|
48
|
+
* <Button loading>Processing...</Button>
|
|
49
|
+
* ```
|
|
50
|
+
* > Disabled:
|
|
51
|
+
* ```tsx
|
|
52
|
+
* <Button disabled>Disabled</Button>
|
|
53
|
+
* ```
|
|
54
|
+
* > With custom variant props (CVA powered):
|
|
55
|
+
* ```tsx
|
|
56
|
+
* <Button variant="primary" color="blue" size="md">
|
|
57
|
+
* Save
|
|
58
|
+
* </Button>
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @remarks
|
|
62
|
+
* - Designed for texted usage. If you need icon-only, use `ButtonIcon`.
|
|
63
|
+
* - Works with any SVG React component or element, e.g. lucide-react, heroicons, custom icons.
|
|
64
|
+
*
|
|
65
|
+
* @see {@link ButtonIcon} for icon-only buttons
|
|
66
|
+
*/
|
|
3
67
|
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
4
68
|
export default Button;
|
|
5
69
|
//# sourceMappingURL=Button.d.ts.map
|
package/Button/Button.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAsDxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,eAAO,MAAM,MAAM,uFAuElB,CAAA;AAED,eAAe,MAAM,CAAC"}
|
package/Button/Button.js
CHANGED
|
@@ -1,77 +1,74 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { jsxs as x, Fragment as E, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import * as N from "react";
|
|
3
|
+
import { isValidElement as V, createElement as j } from "react";
|
|
4
|
+
import { Slot as C } from "@radix-ui/react-slot";
|
|
5
|
+
import { cn as I } from "@oneplatformdev/utils";
|
|
6
|
+
import { buttonVariants as R } from "./buttonVariants.js";
|
|
6
7
|
import "@radix-ui/react-tooltip";
|
|
7
|
-
import { Tooltip as
|
|
8
|
+
import { Tooltip as F } from "../Tooltip/Tooltip.js";
|
|
8
9
|
import { LoadedIcon as f } from "../LoadedIcon/LoadedIcon.js";
|
|
9
|
-
const
|
|
10
|
-
const { variant:
|
|
11
|
-
if (
|
|
12
|
-
return console.warn('Button variant "default" is deprecated. Please use "variant=contained color=primary" instead.'),
|
|
13
|
-
if (
|
|
14
|
-
return console.warn('Button
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
throw console.warn('Button variant "link" is not implemented yet. Please contact the development team for more information.'), new Error('Button variant "link" is not implemented yet. Please contact the development team for more information.');
|
|
21
|
-
return t;
|
|
22
|
-
}, R = x.forwardRef(
|
|
23
|
-
(a, o) => {
|
|
10
|
+
const L = (t) => {
|
|
11
|
+
const { variant: n, size: r, color: i } = t, e = { color: i, variant: n, size: r };
|
|
12
|
+
if (n === "default")
|
|
13
|
+
return console.warn('Button variant "default" is deprecated. Please use "variant=contained color=primary" instead.'), e.variant = "contained", e.color = "primary", e;
|
|
14
|
+
if (r === "icon")
|
|
15
|
+
return console.warn('Button size "icon" is deprecated. Please use "<ButtonIcon/>" component instead.'), e.variant = "contained", e.color = "secondary", e;
|
|
16
|
+
if (n === "transparent")
|
|
17
|
+
throw console.warn('Button variant "transparent" is removed. Please use "variant=none" instead.'), new Error('Button variant "transparent" is removed. Please use "variant=none" instead.');
|
|
18
|
+
return n === "outline" ? (console.warn('Button variant "outline" is deprecated. Please use "variant=outlined color=primary" instead.'), e.variant = "outlined", e.color = "primary", e) : n === "secondary" ? (console.warn('Button variant "secondary" is deprecated. Please use "variant=contained color=secondary" instead.'), e.variant = "contained", e.color = "secondary", e) : (n === "destructive" && (console.warn('Button variant "destructive" is deprecated. Please use "variant=contained color=error" instead.'), e.variant = "contained", e.color = "error"), e);
|
|
19
|
+
}, y = (t) => t ? V(t) ? t : j(t) : null, S = N.forwardRef(
|
|
20
|
+
(t, n) => {
|
|
24
21
|
const {
|
|
25
|
-
disabled:
|
|
22
|
+
disabled: r,
|
|
26
23
|
className: i,
|
|
27
|
-
variant:
|
|
28
|
-
color:
|
|
29
|
-
size:
|
|
30
|
-
asChild:
|
|
31
|
-
title:
|
|
32
|
-
tooltip:
|
|
33
|
-
tooltipProps:
|
|
34
|
-
message:
|
|
35
|
-
loading:
|
|
36
|
-
children:
|
|
24
|
+
variant: e,
|
|
25
|
+
color: B,
|
|
26
|
+
size: s,
|
|
27
|
+
asChild: l = !1,
|
|
28
|
+
title: w = "",
|
|
29
|
+
tooltip: P,
|
|
30
|
+
tooltipProps: d = {},
|
|
31
|
+
message: h,
|
|
32
|
+
loading: o = !1,
|
|
33
|
+
children: u,
|
|
37
34
|
startAdornment: m,
|
|
38
35
|
endAdornment: p,
|
|
39
|
-
...
|
|
40
|
-
} =
|
|
41
|
-
!!m && /* @__PURE__ */
|
|
42
|
-
|
|
43
|
-
!!p && /* @__PURE__ */
|
|
44
|
-
] }),
|
|
36
|
+
...g
|
|
37
|
+
} = t, b = l ? C : "button", c = h || P || w, z = l ? u : /* @__PURE__ */ x(E, { children: [
|
|
38
|
+
!!m && /* @__PURE__ */ a(f, { loading: o, size: s, children: y(m) }),
|
|
39
|
+
u,
|
|
40
|
+
!!p && /* @__PURE__ */ a(f, { loading: o, size: s, children: y(p) })
|
|
41
|
+
] }), v = /* @__PURE__ */ a(
|
|
45
42
|
b,
|
|
46
43
|
{
|
|
47
44
|
type: "button",
|
|
48
|
-
ref:
|
|
49
|
-
disabled:
|
|
50
|
-
className:
|
|
51
|
-
|
|
52
|
-
...
|
|
45
|
+
ref: n,
|
|
46
|
+
disabled: r,
|
|
47
|
+
className: I(
|
|
48
|
+
R({
|
|
49
|
+
...L({ variant: e, size: s, color: B }),
|
|
53
50
|
className: i
|
|
54
51
|
}),
|
|
55
|
-
|
|
52
|
+
o && "pointer-events-none opacity-80 user-select-none"
|
|
56
53
|
),
|
|
57
|
-
...
|
|
58
|
-
children:
|
|
54
|
+
...g,
|
|
55
|
+
children: z
|
|
59
56
|
}
|
|
60
57
|
);
|
|
61
|
-
return
|
|
62
|
-
|
|
58
|
+
return c ? /* @__PURE__ */ a(
|
|
59
|
+
F,
|
|
63
60
|
{
|
|
64
|
-
...
|
|
65
|
-
open:
|
|
66
|
-
message:
|
|
67
|
-
children:
|
|
61
|
+
...d || {},
|
|
62
|
+
open: d.open ?? (r || o || !c) ? !1 : void 0,
|
|
63
|
+
message: c,
|
|
64
|
+
children: v
|
|
68
65
|
}
|
|
69
|
-
) :
|
|
66
|
+
) : v;
|
|
70
67
|
}
|
|
71
68
|
);
|
|
72
|
-
|
|
69
|
+
S.displayName = "Button";
|
|
73
70
|
export {
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
S as Button,
|
|
72
|
+
S as default
|
|
76
73
|
};
|
|
77
74
|
//# sourceMappingURL=Button.js.map
|
package/Button/Button.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../src/Button/Button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"@oneplatformdev/utils\"\nimport { ButtonCVAProps, buttonVariants } from './buttonVariants';\nimport { type ButtonProps } from './Button.types';\n\nimport { Tooltip } from '../Tooltip';\nimport { LoadedIcon } from \"../LoadedIcon\";\n\nconst normalizedVariantProperties = (props: ButtonCVAProps): ButtonCVAProps => {\n const { variant, size, color } = props;\n const vls = { color, variant, size }\n if (size === 'icon') {\n console.warn('Button size \"icon\" is
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../src/Button/Button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"@oneplatformdev/utils\"\nimport { ButtonCVAProps, buttonVariants } from './buttonVariants';\nimport { ButtonAdornmentProps, type ButtonProps } from './Button.types';\n\nimport { Tooltip } from '../Tooltip';\nimport { LoadedIcon } from \"../LoadedIcon\";\nimport { createElement, isValidElement } from \"react\";\n\nconst normalizedVariantProperties = (props: ButtonCVAProps): ButtonCVAProps => {\n const { variant, size, color } = props;\n const vls = { color, variant, size }\n if (variant === 'default') {\n console.warn('Button variant \"default\" is deprecated. Please use \"variant=contained color=primary\" instead.')\n vls.variant = 'contained'\n vls.color = 'primary'\n return vls\n }\n if ((size as string) === 'icon') {\n console.warn('Button size \"icon\" is deprecated. Please use \"<ButtonIcon/>\" component instead.')\n vls.variant = 'contained'\n vls.color = 'secondary'\n return vls\n // throw new Error('Button variant \"transparent\" is removed. Please use \"variant=none\" instead.')\n }\n if ((variant as string) === 'transparent') {\n console.warn('Button variant \"transparent\" is removed. Please use \"variant=none\" instead.')\n throw new Error('Button variant \"transparent\" is removed. Please use \"variant=none\" instead.')\n }\n if (variant === 'outline') {\n console.warn('Button variant \"outline\" is deprecated. Please use \"variant=outlined color=primary\" instead.')\n vls.variant = 'outlined'\n vls.color = 'primary'\n return vls\n }\n if (variant === 'secondary') {\n console.warn('Button variant \"secondary\" is deprecated. Please use \"variant=contained color=secondary\" instead.')\n vls.variant = 'contained'\n vls.color = 'secondary'\n return vls\n }\n if (variant === 'destructive') {\n console.warn('Button variant \"destructive\" is deprecated. Please use \"variant=contained color=error\" instead.')\n vls.variant = 'contained'\n vls.color = 'error'\n return vls\n }\n return vls;\n}\n\n\nconst renderAdornment = (Adornment?: ButtonAdornmentProps) => {\n if (!Adornment) return null;\n if (isValidElement(Adornment)) return Adornment;\n return createElement(Adornment);\n};\n\n/**\n * Universal Button component used for triggering actions and UI interactions.\n * Supports variants, sizes, colors, start/end icon adornments, custom slot content,\n * tooltip integration, loading state, and polymorphic rendering via `asChild`.\n *\n * @public\n * @see [Documentation](#) // TODO: add link to docs\n *\n * @example\n * > Import:\n * ```tsx\n * import { Button } from '@oneplatformdev/ui/Button';\n * ```\n * > Basic usage:\n * ```tsx\n * <Button>Click me</Button>\n * ```\n * > Variant and size:\n * ```tsx\n * <Button variant=\"outline\" size=\"lg\">Large Button</Button>\n * ```\n * > With icons:\n * ```tsx\n * <Button startAdornment={<PlusIcon />}>Create</Button>\n * <Button endAdornment={<ArrowRightIcon />}>Next</Button>\n * ```\n * > Icon style button:\n * ```tsx\n * <Button size=\"icon\">\n * <PlusIcon />\n * </Button>\n * ```\n * > Polymorphic rendering (`asChild`):\n * ```tsx\n * <Button asChild>\n * <a href=\"/dashboard\">Go to Dashboard</a>\n * </Button>\n * ```\n * > Tooltip via `message` or native `title`:\n * ```tsx\n * <Button title=\"Tooltip text\">Hover me</Button>\n * <Button message=\"Tooltip content\">Hover me</Button>\n * ```\n * > Loading state:\n * ```tsx\n * <Button loading>Processing...</Button>\n * ```\n * > Disabled:\n * ```tsx\n * <Button disabled>Disabled</Button>\n * ```\n * > With custom variant props (CVA powered):\n * ```tsx\n * <Button variant=\"primary\" color=\"blue\" size=\"md\">\n * Save\n * </Button>\n * ```\n *\n * @remarks\n * - Designed for texted usage. If you need icon-only, use `ButtonIcon`.\n * - Works with any SVG React component or element, e.g. lucide-react, heroicons, custom icons.\n *\n * @see {@link ButtonIcon} for icon-only buttons\n */\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n const {\n disabled,\n className,\n variant,\n color,\n size,\n asChild = false,\n title = '',\n tooltip,\n tooltipProps = {},\n message,\n loading = false,\n children,\n startAdornment,\n endAdornment,\n ...rest\n } = props;\n const Comp = asChild ? Slot : \"button\"\n const msg = message || tooltip || title;\n\n const content = asChild\n ? children\n : (\n <>\n {!!startAdornment && (\n <LoadedIcon loading={loading} size={size}>\n {renderAdornment(startAdornment)}\n </LoadedIcon>\n )}\n\n {children}\n\n {!!endAdornment && (\n <LoadedIcon loading={loading} size={size}>\n {renderAdornment(endAdornment)}\n </LoadedIcon>\n )}\n </>\n )\n\n const cmp = (\n <Comp\n type='button'\n ref={ref}\n disabled={disabled}\n className={cn(\n buttonVariants({\n ...normalizedVariantProperties({ variant, size, color }),\n className\n }),\n loading && 'pointer-events-none opacity-80 user-select-none',\n )}\n {...rest}\n >\n {content}\n </Comp>\n )\n\n if (!msg) return cmp\n return (\n <Tooltip\n {...(tooltipProps || {})}\n open={tooltipProps.open ?? (disabled || loading || !msg) ? false : undefined}\n message={msg}\n >\n {cmp}\n </Tooltip>\n )\n }\n)\nButton.displayName = \"Button\"\nexport default Button;\n"],"names":["normalizedVariantProperties","props","variant","size","color","vls","renderAdornment","Adornment","isValidElement","createElement","Button","React","ref","disabled","className","asChild","title","tooltip","tooltipProps","message","loading","children","startAdornment","endAdornment","rest","Comp","Slot","msg","content","jsxs","Fragment","jsx","LoadedIcon","cmp","cn","buttonVariants","Tooltip"],"mappings":";;;;;;;;;AAWA,MAAMA,IAA8B,CAACC,MAA0C;AAC7E,QAAM,EAAE,SAAAC,GAAS,MAAAC,GAAM,OAAAC,EAAA,IAAUH,GAC3BI,IAAM,EAAE,OAAAD,GAAO,SAAAF,GAAS,MAAAC,EAAA;AAC9B,MAAID,MAAY;AACd,mBAAQ,KAAK,+FAA+F,GAC5GG,EAAI,UAAU,aACdA,EAAI,QAAQ,WACLA;AAET,MAAKF,MAAoB;AACvB,mBAAQ,KAAK,iFAAiF,GAC9FE,EAAI,UAAU,aACdA,EAAI,QAAQ,aACLA;AAGT,MAAKH,MAAuB;AAC1B,kBAAQ,KAAK,6EAA6E,GACpF,IAAI,MAAM,6EAA6E;AAE/F,SAAIA,MAAY,aACd,QAAQ,KAAK,8FAA8F,GAC3GG,EAAI,UAAU,YACdA,EAAI,QAAQ,WACLA,KAELH,MAAY,eACd,QAAQ,KAAK,mGAAmG,GAChHG,EAAI,UAAU,aACdA,EAAI,QAAQ,aACLA,MAELH,MAAY,kBACd,QAAQ,KAAK,iGAAiG,GAC9GG,EAAI,UAAU,aACdA,EAAI,QAAQ,UACLA;AAGX,GAGMC,IAAkB,CAACC,MAClBA,IACDC,EAAeD,CAAS,IAAUA,IAC/BE,EAAcF,CAAS,IAFP,MAsEZG,IAASC,EAAM;AAAA,EAC1B,CAACV,GAAOW,MAAQ;AACd,UAAM;AAAA,MACJ,UAAAC;AAAA,MACA,WAAAC;AAAA,MACA,SAAAZ;AAAA,MACA,OAAAE;AAAA,MACA,MAAAD;AAAA,MACA,SAAAY,IAAU;AAAA,MACV,OAAAC,IAAQ;AAAA,MACR,SAAAC;AAAA,MACA,cAAAC,IAAe,CAAA;AAAA,MACf,SAAAC;AAAA,MACA,SAAAC,IAAU;AAAA,MACV,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,GAAGC;AAAA,IAAA,IACDvB,GACEwB,IAAOV,IAAUW,IAAO,UACxBC,IAAMR,KAAWF,KAAWD,GAE5BY,IAAUb,IACZM,IAEA,gBAAAQ,EAAAC,GAAA,EACG,UAAA;AAAA,MAAA,CAAC,CAACR,KACD,gBAAAS,EAACC,GAAA,EAAW,SAAAZ,GAAkB,MAAAjB,GAC3B,UAAAG,EAAgBgB,CAAc,GACjC;AAAA,MAGDD;AAAA,MAEA,CAAC,CAACE,KACD,gBAAAQ,EAACC,KAAW,SAAAZ,GAAkB,MAAAjB,GAC3B,UAAAG,EAAgBiB,CAAY,EAAA,CAC/B;AAAA,IAAA,GAEJ,GAGEU,IACJ,gBAAAF;AAAA,MAACN;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,KAAAb;AAAA,QACA,UAAAC;AAAA,QACA,WAAWqB;AAAA,UACTC,EAAe;AAAA,YACb,GAAGnC,EAA4B,EAAE,SAAAE,GAAS,MAAAC,GAAM,OAAAC,GAAO;AAAA,YACvD,WAAAU;AAAA,UAAA,CACD;AAAA,UACDM,KAAW;AAAA,QAAA;AAAA,QAEZ,GAAGI;AAAA,QAEH,UAAAI;AAAA,MAAA;AAAA,IAAA;AAIL,WAAKD,IAEH,gBAAAI;AAAA,MAACK;AAAA,MAAA;AAAA,QACE,GAAIlB,KAAgB,CAAA;AAAA,QACrB,MAAMA,EAAa,SAASL,KAAYO,KAAW,CAACO,KAAO,KAAQ;AAAA,QACnE,SAASA;AAAA,QAER,UAAAM;AAAA,MAAA;AAAA,IAAA,IAPYA;AAAA,EAUnB;AACF;AACAvB,EAAO,cAAc;"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { ButtonProps } from './Button.types';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import('react').ForwardRefExoticComponent<ButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
render: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
args: {
|
|
8
|
+
tooltip: undefined;
|
|
9
|
+
asChild: false;
|
|
10
|
+
variant: "none" | "default" | "destructive" | "outline" | "secondary" | "contained" | "outlined" | "ghost" | null | undefined;
|
|
11
|
+
color: "secondary" | "primary" | "error" | null | undefined;
|
|
12
|
+
size: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
13
|
+
disabled: false;
|
|
14
|
+
};
|
|
15
|
+
argTypes: {
|
|
16
|
+
tooltip: {
|
|
17
|
+
control: false;
|
|
18
|
+
};
|
|
19
|
+
asChild: {
|
|
20
|
+
control: false;
|
|
21
|
+
};
|
|
22
|
+
variant: {
|
|
23
|
+
options: ("none" | "default" | "destructive" | "outline" | "secondary" | "contained" | "outlined" | "ghost" | null | undefined)[];
|
|
24
|
+
control: {
|
|
25
|
+
type: "inline-radio";
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
color: {
|
|
29
|
+
options: ("secondary" | "primary" | "error" | null | undefined)[];
|
|
30
|
+
control: {
|
|
31
|
+
type: "inline-radio";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
size: {
|
|
35
|
+
options: ("xs" | "sm" | "md" | "lg" | null | undefined)[];
|
|
36
|
+
control: {
|
|
37
|
+
type: "inline-radio";
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
title: {
|
|
41
|
+
name: string;
|
|
42
|
+
description: string;
|
|
43
|
+
control: {
|
|
44
|
+
type: "text";
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
message: {
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
control: {
|
|
51
|
+
type: "object";
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
slotProps: {
|
|
55
|
+
name: string;
|
|
56
|
+
description: string;
|
|
57
|
+
control: {
|
|
58
|
+
type: "object";
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
tags: string[];
|
|
63
|
+
parameters: {
|
|
64
|
+
docs: {
|
|
65
|
+
description: {
|
|
66
|
+
component: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
pseudo: {
|
|
70
|
+
hover: string;
|
|
71
|
+
focus: string;
|
|
72
|
+
active: string;
|
|
73
|
+
disabled: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export default meta;
|
|
78
|
+
type Story = StoryObj<typeof meta>;
|
|
79
|
+
export declare const Default: Story;
|
|
80
|
+
export declare const Primary: Story;
|
|
81
|
+
export declare const Secondary: Story;
|
|
82
|
+
export declare const Error: Story;
|
|
83
|
+
//# sourceMappingURL=Button.s.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.s.d.ts","sourceRoot":"","sources":["../../src/Button/Button.s.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA2DlD,QAAA,MAAM,IAAI;;;oBAvDe,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGL,CAAC;AAChC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAQnC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAoBrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAoBvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAoBnB,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { jsx as e, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
import { Button as i } from "./Button.js";
|
|
3
|
+
import { PlusIcon as s } from "lucide-react";
|
|
4
|
+
const g = (o) => /* @__PURE__ */ e(i, { ...o }), a = (o) => /* @__PURE__ */ e(
|
|
5
|
+
"div",
|
|
6
|
+
{
|
|
7
|
+
style: {
|
|
8
|
+
padding: "0px 20px",
|
|
9
|
+
display: "flex",
|
|
10
|
+
gap: "32px",
|
|
11
|
+
alignItems: "flex-start"
|
|
12
|
+
},
|
|
13
|
+
children: /* @__PURE__ */ e(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
style: {
|
|
17
|
+
position: "relative",
|
|
18
|
+
border: "2px dashed rgba(139, 92, 246, 0.7)",
|
|
19
|
+
borderRadius: "24px",
|
|
20
|
+
padding: "24px 32px",
|
|
21
|
+
display: "flex",
|
|
22
|
+
gap: "32px"
|
|
23
|
+
},
|
|
24
|
+
children: o.children
|
|
25
|
+
}
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
), t = (o) => /* @__PURE__ */ e(
|
|
29
|
+
"div",
|
|
30
|
+
{
|
|
31
|
+
style: {
|
|
32
|
+
position: "relative",
|
|
33
|
+
display: "flex",
|
|
34
|
+
flexDirection: "column",
|
|
35
|
+
gap: "16px"
|
|
36
|
+
},
|
|
37
|
+
children: ["default", "hover", "focus", "active", "disabled"].map((r) => /* @__PURE__ */ e(
|
|
38
|
+
i,
|
|
39
|
+
{
|
|
40
|
+
id: r,
|
|
41
|
+
...o,
|
|
42
|
+
disabled: r === "disabled" || o.disabled,
|
|
43
|
+
children: o.children ?? r
|
|
44
|
+
},
|
|
45
|
+
r
|
|
46
|
+
))
|
|
47
|
+
}
|
|
48
|
+
), d = ["none", "contained", "outlined", "ghost"], c = ["primary", "secondary", "error"], p = ["xs", "sm", "md", "lg"], m = {
|
|
49
|
+
title: "Button",
|
|
50
|
+
component: i,
|
|
51
|
+
render: g,
|
|
52
|
+
args: {
|
|
53
|
+
tooltip: void 0,
|
|
54
|
+
asChild: !1,
|
|
55
|
+
//
|
|
56
|
+
variant: d[0],
|
|
57
|
+
color: c[0],
|
|
58
|
+
size: p[0],
|
|
59
|
+
disabled: !1
|
|
60
|
+
},
|
|
61
|
+
argTypes: {
|
|
62
|
+
tooltip: { control: !1 },
|
|
63
|
+
asChild: { control: !1 },
|
|
64
|
+
variant: { options: d, control: { type: "inline-radio" } },
|
|
65
|
+
color: { options: c, control: { type: "inline-radio" } },
|
|
66
|
+
size: { options: p, control: { type: "inline-radio" } },
|
|
67
|
+
title: {
|
|
68
|
+
name: "title",
|
|
69
|
+
description: "Button tooltip title from HTMLAttributes<HTMLButtonElement> [string only]",
|
|
70
|
+
control: { type: "text" }
|
|
71
|
+
},
|
|
72
|
+
message: {
|
|
73
|
+
name: "message",
|
|
74
|
+
description: "Button tooltip message from ButtonProps [ReactNode]",
|
|
75
|
+
control: { type: "object" }
|
|
76
|
+
},
|
|
77
|
+
slotProps: {
|
|
78
|
+
name: "slotProps",
|
|
79
|
+
description: "Button slotProps from ButtonProps [object]",
|
|
80
|
+
control: { type: "object" }
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
tags: ["autodocs"],
|
|
84
|
+
parameters: {
|
|
85
|
+
docs: {
|
|
86
|
+
description: {
|
|
87
|
+
component: "Universal button component with variants, icons and tooltip support."
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
pseudo: {
|
|
91
|
+
hover: "#hover",
|
|
92
|
+
focus: "#focus",
|
|
93
|
+
active: "#active",
|
|
94
|
+
disabled: "#disabled"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}, l = {
|
|
98
|
+
...m.args,
|
|
99
|
+
startAdornment: /* @__PURE__ */ e(s, {}),
|
|
100
|
+
endAdornment: /* @__PURE__ */ e(s, {}),
|
|
101
|
+
children: "children"
|
|
102
|
+
}, u = {
|
|
103
|
+
args: {
|
|
104
|
+
...m.args,
|
|
105
|
+
children: "__children__"
|
|
106
|
+
}
|
|
107
|
+
}, y = {
|
|
108
|
+
args: {
|
|
109
|
+
...l,
|
|
110
|
+
color: "primary",
|
|
111
|
+
size: "lg",
|
|
112
|
+
children: "Створити"
|
|
113
|
+
},
|
|
114
|
+
argTypes: {
|
|
115
|
+
variant: { control: !1 },
|
|
116
|
+
color: { control: !1 }
|
|
117
|
+
},
|
|
118
|
+
render: (o) => /* @__PURE__ */ e("div", { className: "flex", children: /* @__PURE__ */ n(a, { children: [
|
|
119
|
+
/* @__PURE__ */ e(t, { ...o, variant: "contained" }),
|
|
120
|
+
/* @__PURE__ */ e(t, { ...o, variant: "outlined" }),
|
|
121
|
+
/* @__PURE__ */ e(t, { ...o, variant: "ghost" })
|
|
122
|
+
] }) })
|
|
123
|
+
}, x = {
|
|
124
|
+
args: {
|
|
125
|
+
...l,
|
|
126
|
+
color: "secondary",
|
|
127
|
+
size: "lg",
|
|
128
|
+
children: "Створити"
|
|
129
|
+
},
|
|
130
|
+
argTypes: {
|
|
131
|
+
variant: { control: !1 },
|
|
132
|
+
color: { control: !1 }
|
|
133
|
+
},
|
|
134
|
+
render: (o) => /* @__PURE__ */ e("div", { className: "flex", children: /* @__PURE__ */ n(a, { children: [
|
|
135
|
+
/* @__PURE__ */ e(t, { ...o, variant: "contained" }),
|
|
136
|
+
/* @__PURE__ */ e(t, { ...o, variant: "outlined" }),
|
|
137
|
+
/* @__PURE__ */ e(t, { ...o, variant: "ghost" })
|
|
138
|
+
] }) })
|
|
139
|
+
}, b = {
|
|
140
|
+
args: {
|
|
141
|
+
...l,
|
|
142
|
+
color: "error",
|
|
143
|
+
size: "lg",
|
|
144
|
+
children: "Створити"
|
|
145
|
+
},
|
|
146
|
+
argTypes: {
|
|
147
|
+
variant: { control: !1 },
|
|
148
|
+
color: { control: !1 }
|
|
149
|
+
},
|
|
150
|
+
render: (o) => /* @__PURE__ */ e("div", { className: "flex", children: /* @__PURE__ */ n(a, { children: [
|
|
151
|
+
/* @__PURE__ */ e(t, { ...o, variant: "contained" }),
|
|
152
|
+
/* @__PURE__ */ e(t, { ...o, variant: "outlined" }),
|
|
153
|
+
/* @__PURE__ */ e(t, { ...o, variant: "ghost" })
|
|
154
|
+
] }) })
|
|
155
|
+
};
|
|
156
|
+
export {
|
|
157
|
+
u as Default,
|
|
158
|
+
b as Error,
|
|
159
|
+
y as Primary,
|
|
160
|
+
x as Secondary,
|
|
161
|
+
m as default
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=Button.s.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.s.js","sources":["../../src/Button/Button.s.tsx"],"sourcesContent":["import type { Meta, StoryObj } from '@storybook/react';\n\nimport { Button } from './Button';\nimport type { ButtonProps } from './Button.types';\nimport { PropsWithChildren } from 'react';\nimport { PlusIcon } from 'lucide-react'\n\nconst Template = (props: ButtonProps) => <Button {...props}/>;\n\nconst DashedWrapper = (props: PropsWithChildren) => {\n return (\n <div\n style={{\n padding: '0px 20px',\n display: 'flex',\n gap: '32px',\n alignItems: 'flex-start',\n }}\n >\n <div\n style={{\n position: 'relative',\n border: '2px dashed rgba(139, 92, 246, 0.7)',\n borderRadius: '24px',\n padding: '24px 32px',\n display: 'flex',\n gap: '32px',\n }}\n >\n {props.children}\n </div>\n </div>\n )\n}\n\nconst States = (props: ButtonProps) => (\n <div\n style={{\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n }}\n >\n {[ 'default', 'hover', 'focus', 'active', 'disabled' ]\n .map((state) => (\n <Button\n key={state}\n id={state}\n {...props}\n disabled={state === 'disabled' || props.disabled}\n >\n {props.children ?? state}\n </Button>\n ))}\n </div>\n);\n\nconst variants: ButtonProps['variant'][] = [ 'none', 'contained', 'outlined', 'ghost' ]\nconst colors: ButtonProps['color'][] = [ 'primary', 'secondary', 'error' ]\nconst sizes: ButtonProps['size'][] = [ 'xs', 'sm', 'md', 'lg' ]\n\nconst meta = {\n title: 'Button',\n component: Button,\n render: Template,\n args: {\n tooltip: undefined,\n asChild: false,\n //\n variant: variants[0],\n color: colors[0],\n size: sizes[0],\n disabled: false,\n },\n argTypes: {\n tooltip: { control: false },\n asChild: { control: false },\n variant: { options: variants, control: { type: 'inline-radio' } },\n color: { options: colors, control: { type: 'inline-radio' } },\n size: { options: sizes, control: { type: 'inline-radio' } },\n title: {\n name: 'title',\n description: \"Button tooltip title from HTMLAttributes<HTMLButtonElement> [string only]\",\n control: { type: 'text' },\n },\n message: {\n name: 'message',\n description: 'Button tooltip message from ButtonProps [ReactNode]',\n control: { type: \"object\" },\n },\n slotProps: {\n name: 'slotProps',\n description: 'Button slotProps from ButtonProps [object]',\n control: { type: \"object\" },\n },\n },\n tags: ['autodocs'],\n parameters: {\n docs: {\n description: {\n component: 'Universal button component with variants, icons and tooltip support.',\n },\n },\n pseudo: {\n hover: '#hover',\n focus: '#focus',\n active: '#active',\n disabled: '#disabled',\n },\n }\n} satisfies Meta<typeof Button>;\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\nconst args: Story['args'] = {\n ...meta.args,\n startAdornment: <PlusIcon/>,\n endAdornment: <PlusIcon/>,\n children: 'children',\n}\n\nexport const Default: Story = {\n args: {\n ...meta.args,\n children: '__children__',\n }\n};\n\nexport const Primary: Story = {\n args: {\n ...args,\n color: 'primary',\n size: 'lg',\n children: 'Створити',\n },\n argTypes: {\n variant: { control: false },\n color: { control: false },\n },\n render: (props) => (\n <div className='flex'>\n <DashedWrapper>\n <States {...props} variant='contained'/>\n <States {...props} variant='outlined'/>\n <States {...props} variant='ghost'/>\n </DashedWrapper>\n </div>\n ),\n};\n\nexport const Secondary: Story = {\n args: {\n ...args,\n color: 'secondary',\n size: 'lg',\n children: 'Створити',\n },\n argTypes: {\n variant: { control: false },\n color: { control: false },\n },\n render: (props) => (\n <div className='flex'>\n <DashedWrapper>\n <States {...props} variant='contained'/>\n <States {...props} variant='outlined'/>\n <States {...props} variant='ghost'/>\n </DashedWrapper>\n </div>\n ),\n};\n\nexport const Error: Story = {\n args: {\n ...args,\n color: 'error',\n size: 'lg',\n children: 'Створити',\n },\n argTypes: {\n variant: { control: false },\n color: { control: false },\n },\n render: (props) => (\n <div className='flex'>\n <DashedWrapper>\n <States {...props} variant='contained'/>\n <States {...props} variant='outlined'/>\n <States {...props} variant='ghost'/>\n </DashedWrapper>\n </div>\n ),\n};\n\n"],"names":["Template","props","jsx","Button","DashedWrapper","States","state","variants","colors","sizes","meta","args","PlusIcon","Default","Primary","Secondary","Error"],"mappings":"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"}
|