@aristobyte-ui/button 1.0.113 → 2.1.0

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.
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __assign = (this && this.__assign) || function () {
4
+ __assign = Object.assign || function(t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
+ t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.Button = void 0;
49
+ var React = __importStar(require("react"));
50
+ var spinner_1 = require("@aristobyte-ui/spinner");
51
+ var utils_1 = require("@aristobyte-ui/utils");
52
+ require("./Button.scss");
53
+ var Button = function (_a) {
54
+ var onClick = _a.onClick, _b = _a.text, text = _b === void 0 ? '' : _b, _c = _a.href, href = _c === void 0 ? '' : _c, _d = _a.target, target = _d === void 0 ? '_self' : _d, _e = _a.children, children = _e === void 0 ? '' : _e, _f = _a.type, type = _f === void 0 ? 'button' : _f, _g = _a.variant, variant = _g === void 0 ? 'default' : _g, _h = _a.appearance, appearance = _h === void 0 ? 'solid' : _h, _j = _a.size, size = _j === void 0 ? 'md' : _j, _k = _a.radius, radius = _k === void 0 ? 'md' : _k, icon = _a.icon, _l = _a.spinnerType, spinnerType = _l === void 0 ? 'default' : _l, _m = _a.transparent, transparent = _m === void 0 ? false : _m, _o = _a.isLoading, isLoading = _o === void 0 ? false : _o, _p = _a.disabled, disabled = _p === void 0 ? false : _p, _q = _a.className, className = _q === void 0 ? '' : _q, _r = _a.style, style = _r === void 0 ? {} : _r;
55
+ var uniqueId = React.useId();
56
+ var ref = React.useRef(null);
57
+ var handleClick = function (e) {
58
+ var clientX = e.clientX, clientY = e.clientY;
59
+ (0, utils_1.renderRipple)({
60
+ ref: ref,
61
+ clientX: clientX,
62
+ clientY: clientY,
63
+ });
64
+ if (onClick) {
65
+ onClick(e);
66
+ }
67
+ };
68
+ var getCommonProps = function () { return ({
69
+ onClick: handleClick,
70
+ disabled: disabled || isLoading,
71
+ style: style,
72
+ className: "button ".concat(transparent ? 'button--transparent' : '', " ").concat("button-variant--".concat(variant), " ").concat("button-appearance--".concat(appearance), " ").concat("button-size--".concat(size), " ").concat("button-radius--".concat(radius), " ").concat(isLoading ? 'button--loading' : '', " ").concat(className),
73
+ }); };
74
+ var renderChildren = function () {
75
+ var _a;
76
+ return (React.createElement(React.Fragment, null,
77
+ isLoading && React.createElement(spinner_1.Spinner, { size: size, variant: variant, type: spinnerType, className: "spinner" }),
78
+ icon && (React.createElement("span", { className: "icon ".concat("icon--".concat((_a = icon.align) !== null && _a !== void 0 ? _a : 'left')) }, icon.component({ color: icon.color, size: icon.size }))),
79
+ text || children));
80
+ };
81
+ if (type === 'link') {
82
+ return (React.createElement("a", __assign({ key: uniqueId, ref: ref, target: target, href: href }, getCommonProps()), renderChildren()));
83
+ }
84
+ return (React.createElement("button", __assign({ key: uniqueId, ref: ref }, getCommonProps()), renderChildren()));
85
+ };
86
+ exports.Button = Button;
@@ -0,0 +1,66 @@
1
+ @use "@aristobyte-ui/utils/styles/settings" as *;
2
+
3
+ .button-group {
4
+ align-items: center;
5
+ display: flex;
6
+ overflow: hidden;
7
+ max-width: max-content;
8
+
9
+ &-align {
10
+ &--horizontal {
11
+ flex-direction: row;
12
+ }
13
+
14
+ &--vertical {
15
+ flex-direction: column;
16
+ }
17
+ }
18
+
19
+ &-variant {
20
+ &--default {
21
+ background-color: $color-default;
22
+ }
23
+
24
+ &--primary {
25
+ background-color: $color-primary;
26
+ }
27
+
28
+ &--secondary {
29
+ background-color: $color-secondary;
30
+ }
31
+
32
+ &--success {
33
+ background-color: $color-success;
34
+ }
35
+
36
+ &--error {
37
+ background-color: $color-error;
38
+ }
39
+
40
+ &--warning {
41
+ background-color: $color-warning;
42
+ }
43
+ }
44
+
45
+ &-radius {
46
+ &--none {
47
+ border-radius: 0rem; // 0px
48
+ }
49
+
50
+ &--sm {
51
+ border-radius: 0.125rem; // 2px
52
+ }
53
+
54
+ &--md {
55
+ border-radius: 0.375rem; // 6px
56
+ }
57
+
58
+ &--lg {
59
+ border-radius: 0.5rem; // 8px
60
+ }
61
+
62
+ &--full {
63
+ border-radius: 1.5rem; // 24px
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.ButtonGroup = void 0;
38
+ var React = __importStar(require("react"));
39
+ var Button_1 = require("../Button");
40
+ require("./ButtonGroup.scss");
41
+ var ButtonGroup = function (_a) {
42
+ var children = _a.children, _b = _a.align, align = _b === void 0 ? 'horizontal' : _b, _c = _a.variant, variant = _c === void 0 ? 'default' : _c, _d = _a.size, size = _d === void 0 ? 'md' : _d, _e = _a.radius, radius = _e === void 0 ? 'md' : _e, disabled = _a.disabled, _f = _a.className, className = _f === void 0 ? '' : _f, _g = _a.style, style = _g === void 0 ? {} : _g;
43
+ return (React.createElement("div", { className: "button-group ".concat("button-group-variant--".concat(variant), " ").concat("button-group-size--".concat(size), " ").concat("button-group-radius--".concat(radius), " ").concat("button-group-align--".concat(align), " ").concat(className), style: style }, React.Children.toArray(children)
44
+ .filter(function (child) {
45
+ return React.isValidElement(child) && child.type === Button_1.Button;
46
+ })
47
+ .map(function (child, index) {
48
+ return React.cloneElement(child, {
49
+ key: index || child.key,
50
+ size: size || child.props.size,
51
+ disabled: disabled || child.props.disabled,
52
+ variant: variant || child.props.variant,
53
+ radius: 'none',
54
+ });
55
+ })));
56
+ };
57
+ exports.ButtonGroup = ButtonGroup;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Button"), exports);
18
+ __exportStar(require("./ButtonGroup"), exports);
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./components"), exports);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aristobyte-ui/button",
3
+ "version": "2.1.0",
3
4
  "description": "react button and buttongroup components with multiple variants, appearances, sizes, radius options, icons, ripple feedback, and fully typed typescript support",
4
- "version": "1.0.113",
5
5
  "license": "MIT",
6
6
  "private": false,
7
7
  "author": "AristoByte <info@aristobyte.com>",
@@ -9,7 +9,7 @@
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git+https://github.com/aristobyte-team/aristobyte-ui.git",
12
- "directory": "packages/jest-config"
12
+ "directory": "packages/button"
13
13
  },
14
14
  "bugs": {
15
15
  "url": "https://github.com/aristobyte-team/aristobyte-ui.git/issues"
@@ -44,43 +44,14 @@
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
- "main": "dist/index.js",
48
- "module": "dist/index.mjs",
49
- "types": "dist/index.d.ts",
50
- "exports": {
51
- "development": {
52
- "import": "./index.ts",
53
- "types": "./index.ts"
54
- },
55
- "default": {
56
- "import": "./dist/index.mjs",
57
- "require": "./dist/index.js",
58
- "types": "./dist/index.d.ts"
59
- }
60
- },
61
- "scripts": {
62
- "build": "tsup",
63
- "lint": "eslint . --max-warnings 0",
64
- "generate:component": "turbo gen react-component",
65
- "check-types": "tsc --noEmit"
66
- },
47
+ "main": "dist/lib/main/index.js",
48
+ "module": "dist/es/main/index.js",
67
49
  "peerDependencies": {
68
50
  "react": "^19.1.0",
69
51
  "react-dom": "^19.1.0"
70
52
  },
71
53
  "dependencies": {
72
- "@aristobyte-ui/spinner": "^1.0.113",
73
- "@aristobyte-ui/utils": "^1.0.113"
74
- },
75
- "devDependencies": {
76
- "@aristobyte-ui/eslint-config": "^1.0.113",
77
- "@aristobyte-ui/typescript-config": "^1.0.113",
78
- "@turbo/gen": "^2.5.0",
79
- "@types/node": "^24.3.0",
80
- "@types/react": "19.1.0",
81
- "@types/react-dom": "19.1.1",
82
- "eslint": "^9.27.0",
83
- "tsup": "^8.5.0",
84
- "typescript": "^5.8.3"
54
+ "@aristobyte-ui/spinner": "^2.1.0",
55
+ "@aristobyte-ui/utils": "^2.1.0"
85
56
  }
86
57
  }
package/dist/index.d.mts DELETED
@@ -1,42 +0,0 @@
1
- import * as React from 'react';
2
- import { IconPropsType } from '@aristobyte-ui/utils';
3
-
4
- interface IButton {
5
- type?: "button" | "link";
6
- text?: string;
7
- children?: React.ReactNode;
8
- href?: string;
9
- target?: "_self" | "_blank" | "_parent" | "_top";
10
- onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void | Promise<void>;
11
- disabled?: boolean;
12
- transparent?: boolean;
13
- variant?: "default" | "primary" | "secondary" | "success" | "error" | "warning";
14
- appearance?: "solid" | "outline" | "outline-dashed" | "no-outline" | "glowing";
15
- size?: "xsm" | "sm" | "md" | "lg" | "xlg";
16
- radius?: "none" | "sm" | "md" | "lg" | "full";
17
- icon?: {
18
- component: (props: IconPropsType) => React.ReactElement;
19
- color?: string;
20
- size?: number;
21
- align?: "left" | "right";
22
- };
23
- isLoading?: boolean;
24
- spinnerType?: "default" | "duo" | "gradient" | "pulse" | "pulse-duo";
25
- className?: string;
26
- style?: React.CSSProperties;
27
- }
28
- declare const Button: React.FC<IButton>;
29
-
30
- interface IButtonGroup {
31
- children: React.ReactElement<IButton, typeof Button> | React.ReactElement<IButton, typeof Button>[];
32
- align?: "vertical" | "horizontal";
33
- variant?: "default" | "primary" | "secondary" | "success" | "error" | "warning";
34
- size?: "xsm" | "sm" | "md" | "lg" | "xlg";
35
- radius?: "none" | "sm" | "md" | "lg" | "full";
36
- disabled?: boolean;
37
- className?: string;
38
- style?: React.CSSProperties;
39
- }
40
- declare const ButtonGroup: React.FC<IButtonGroup>;
41
-
42
- export { Button, ButtonGroup, type IButton, type IButtonGroup };
package/dist/index.d.ts DELETED
@@ -1,42 +0,0 @@
1
- import * as React from 'react';
2
- import { IconPropsType } from '@aristobyte-ui/utils';
3
-
4
- interface IButton {
5
- type?: "button" | "link";
6
- text?: string;
7
- children?: React.ReactNode;
8
- href?: string;
9
- target?: "_self" | "_blank" | "_parent" | "_top";
10
- onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void | Promise<void>;
11
- disabled?: boolean;
12
- transparent?: boolean;
13
- variant?: "default" | "primary" | "secondary" | "success" | "error" | "warning";
14
- appearance?: "solid" | "outline" | "outline-dashed" | "no-outline" | "glowing";
15
- size?: "xsm" | "sm" | "md" | "lg" | "xlg";
16
- radius?: "none" | "sm" | "md" | "lg" | "full";
17
- icon?: {
18
- component: (props: IconPropsType) => React.ReactElement;
19
- color?: string;
20
- size?: number;
21
- align?: "left" | "right";
22
- };
23
- isLoading?: boolean;
24
- spinnerType?: "default" | "duo" | "gradient" | "pulse" | "pulse-duo";
25
- className?: string;
26
- style?: React.CSSProperties;
27
- }
28
- declare const Button: React.FC<IButton>;
29
-
30
- interface IButtonGroup {
31
- children: React.ReactElement<IButton, typeof Button> | React.ReactElement<IButton, typeof Button>[];
32
- align?: "vertical" | "horizontal";
33
- variant?: "default" | "primary" | "secondary" | "success" | "error" | "warning";
34
- size?: "xsm" | "sm" | "md" | "lg" | "xlg";
35
- radius?: "none" | "sm" | "md" | "lg" | "full";
36
- disabled?: boolean;
37
- className?: string;
38
- style?: React.CSSProperties;
39
- }
40
- declare const ButtonGroup: React.FC<IButtonGroup>;
41
-
42
- export { Button, ButtonGroup, type IButton, type IButtonGroup };
package/dist/index.js DELETED
@@ -1,191 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
12
- };
13
- var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from))
16
- if (!__hasOwnProp.call(to, key) && key !== except)
17
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
- }
19
- return to;
20
- };
21
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
- // If the importer is in node compatibility mode or this is not an ESM
23
- // file that has been converted to a CommonJS file using a Babel-
24
- // compatible transform (i.e. "__esModule" has not been set), then set
25
- // "default" to the CommonJS "module.exports" for node compatibility.
26
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
- mod
28
- ));
29
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
-
31
- // index.ts
32
- var index_exports = {};
33
- __export(index_exports, {
34
- Button: () => Button,
35
- ButtonGroup: () => ButtonGroup
36
- });
37
- module.exports = __toCommonJS(index_exports);
38
-
39
- // components/Button.tsx
40
- var React = __toESM(require("react"));
41
-
42
- // ../../node_modules/clsx/dist/clsx.mjs
43
- function r(e) {
44
- var t, f, n = "";
45
- if ("string" == typeof e || "number" == typeof e) n += e;
46
- else if ("object" == typeof e) if (Array.isArray(e)) {
47
- var o = e.length;
48
- for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
49
- } else for (f in e) e[f] && (n && (n += " "), n += f);
50
- return n;
51
- }
52
- function clsx() {
53
- for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
54
- return n;
55
- }
56
- var clsx_default = clsx;
57
-
58
- // components/Button.tsx
59
- var import_spinner = require("@aristobyte-ui/spinner");
60
- var import_utils = require("@aristobyte-ui/utils");
61
- var import_jsx_runtime = require("react/jsx-runtime");
62
- var Button = ({
63
- onClick,
64
- text = "",
65
- href = "",
66
- target = "_self",
67
- children = "",
68
- type = "button",
69
- variant = "default",
70
- appearance = "solid",
71
- size = "md",
72
- radius = "md",
73
- icon,
74
- spinnerType = "default",
75
- transparent = false,
76
- isLoading = false,
77
- disabled = false,
78
- className = "",
79
- style = {}
80
- }) => {
81
- const uniqueId = React.useId();
82
- const ref = React.useRef(null);
83
- const handleClick = (e) => {
84
- const { clientX, clientY } = e;
85
- (0, import_utils.renderRipple)({ ref, clientX, clientY });
86
- onClick == null ? void 0 : onClick(e);
87
- };
88
- const buttonClasses = clsx_default(
89
- "button",
90
- transparent && "button-transparent",
91
- `button-${variant}-${appearance}`,
92
- `button-${size}`,
93
- `button-radius-${radius}`,
94
- isLoading && "button-loading",
95
- className
96
- );
97
- const renderContent = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
98
- isLoading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
99
- import_spinner.Spinner,
100
- {
101
- size,
102
- variant,
103
- type: spinnerType,
104
- className: "inline-block"
105
- }
106
- ),
107
- icon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
108
- "span",
109
- {
110
- className: clsx_default(
111
- "button-icon",
112
- icon.align === "right" && "button-icon-right"
113
- ),
114
- children: icon.component({ color: icon.color, size: icon.size })
115
- }
116
- ),
117
- text || children
118
- ] });
119
- if (type === "link") {
120
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
121
- "a",
122
- {
123
- ref,
124
- href,
125
- target,
126
- style,
127
- className: buttonClasses,
128
- onClick: handleClick,
129
- children: renderContent()
130
- },
131
- uniqueId
132
- );
133
- }
134
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
135
- "button",
136
- {
137
- ref,
138
- type: "button",
139
- disabled: disabled || isLoading,
140
- style,
141
- className: buttonClasses,
142
- onClick: handleClick,
143
- children: renderContent()
144
- },
145
- uniqueId
146
- );
147
- };
148
-
149
- // components/ButtonGroup.tsx
150
- var React2 = __toESM(require("react"));
151
- var import_jsx_runtime2 = require("react/jsx-runtime");
152
- var import_react = require("react");
153
- var ButtonGroup = ({
154
- children,
155
- align = "horizontal",
156
- variant = "default",
157
- size = "md",
158
- radius = "md",
159
- disabled = false,
160
- className = "",
161
- style = {}
162
- }) => {
163
- const groupClasses = clsx_default(
164
- "button-group",
165
- `button-group-${align}`,
166
- `button-group-variant-${variant}`,
167
- `button-group-radius-${radius}`,
168
- `button-group-size-${size}`,
169
- className
170
- );
171
- const buttons = React2.Children.toArray(
172
- children
173
- );
174
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: groupClasses, style, children: buttons.map(({ props }, index) => /* @__PURE__ */ (0, import_react.createElement)(
175
- Button,
176
- {
177
- ...props,
178
- key: index,
179
- size: props.size || size,
180
- disabled: props.disabled || disabled,
181
- variant: props.variant || variant,
182
- radius: "none"
183
- }
184
- )) });
185
- };
186
- // Annotate the CommonJS export names for ESM import in node:
187
- 0 && (module.exports = {
188
- Button,
189
- ButtonGroup
190
- });
191
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../index.ts","../components/Button.tsx","../../../node_modules/clsx/dist/clsx.mjs","../components/ButtonGroup.tsx"],"sourcesContent":["export * from \"./components\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { Spinner } from \"@aristobyte-ui/spinner\";\nimport { type IconPropsType, renderRipple } from \"@aristobyte-ui/utils\";\n\nexport interface IButton {\n type?: \"button\" | \"link\";\n text?: string;\n children?: React.ReactNode;\n href?: string;\n target?: \"_self\" | \"_blank\" | \"_parent\" | \"_top\";\n onClick?: (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => void | Promise<void>;\n disabled?: boolean;\n transparent?: boolean;\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n appearance?:\n | \"solid\"\n | \"outline\"\n | \"outline-dashed\"\n | \"no-outline\"\n | \"glowing\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n icon?: {\n component: (props: IconPropsType) => React.ReactElement;\n color?: string;\n size?: number;\n align?: \"left\" | \"right\";\n };\n isLoading?: boolean;\n spinnerType?: \"default\" | \"duo\" | \"gradient\" | \"pulse\" | \"pulse-duo\";\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Button: React.FC<IButton> = ({\n onClick,\n text = \"\",\n href = \"\",\n target = \"_self\",\n children = \"\",\n type = \"button\",\n variant = \"default\",\n appearance = \"solid\",\n size = \"md\",\n radius = \"md\",\n icon,\n spinnerType = \"default\",\n transparent = false,\n isLoading = false,\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const uniqueId = React.useId();\n const ref = React.useRef<HTMLButtonElement | HTMLAnchorElement>(null);\n\n const handleClick = (\n e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>\n ) => {\n const { clientX, clientY } = e;\n renderRipple({ ref, clientX, clientY });\n onClick?.(e);\n };\n\n const buttonClasses = clsx(\n \"button\",\n transparent && \"button-transparent\",\n `button-${variant}-${appearance}`,\n `button-${size}`,\n `button-radius-${radius}`,\n isLoading && \"button-loading\",\n className\n );\n\n const renderContent = () => (\n <>\n {isLoading && (\n <Spinner\n size={size}\n variant={variant}\n type={spinnerType}\n className=\"inline-block\"\n />\n )}\n {icon && (\n <span\n className={clsx(\n \"button-icon\",\n icon.align === \"right\" && \"button-icon-right\"\n )}\n >\n {icon.component({ color: icon.color, size: icon.size })}\n </span>\n )}\n {text || children}\n </>\n );\n\n if (type === \"link\") {\n return (\n <a\n key={uniqueId}\n ref={ref as React.RefObject<HTMLAnchorElement>}\n href={href}\n target={target}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </a>\n );\n }\n\n return (\n <button\n key={uniqueId}\n ref={ref as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled || isLoading}\n style={style}\n className={buttonClasses}\n onClick={handleClick}\n >\n {renderContent()}\n </button>\n );\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\";\n\nimport * as React from \"react\";\nimport { type IButton, Button } from \"./Button\";\nimport clsx from \"clsx\";\n\nexport interface IButtonGroup {\n children:\n | React.ReactElement<IButton, typeof Button>\n | React.ReactElement<IButton, typeof Button>[];\n align?: \"vertical\" | \"horizontal\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n size?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n radius?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n disabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const ButtonGroup: React.FC<IButtonGroup> = ({\n children,\n align = \"horizontal\",\n variant = \"default\",\n size = \"md\",\n radius = \"md\",\n disabled = false,\n className = \"\",\n style = {},\n}) => {\n const groupClasses = clsx(\n \"button-group\",\n `button-group-${align}`,\n `button-group-variant-${variant}`,\n `button-group-radius-${radius}`,\n `button-group-size-${size}`,\n className\n );\n\n const buttons = React.Children.toArray(\n children\n ) as React.ReactElement<IButton>[];\n\n return (\n <div className={groupClasses} style={style}>\n {buttons.map(({ props }, index) => (\n <Button\n {...props}\n key={index}\n size={props.size || size}\n disabled={props.disabled || disabled}\n variant={props.variant || variant}\n radius=\"none\"\n />\n ))}\n </div>\n );\n};\n"],"mappings":"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","names":["React","import_jsx_runtime"]}