@aristobyte-ui/switch 1.0.113 → 2.0.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.
- package/dist/es/main/components/Switch.js +54 -0
- package/dist/es/main/components/index.js +1 -0
- package/dist/es/main/index.js +1 -0
- package/dist/lib/main/components/Switch.js +91 -0
- package/dist/lib/main/components/index.js +17 -0
- package/dist/lib/main/index.js +1 -0
- package/package.json +3 -32
- package/dist/index.d.mts +0 -34
- package/dist/index.d.ts +0 -34
- package/dist/index.js +0 -100
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -64
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
import * as React from "react";
|
|
19
|
+
export var Switch = function (_a) {
|
|
20
|
+
var onChange = _a.onChange, label = _a.label, _b = _a.alignLabel, alignLabel = _b === void 0 ? "vertical" : _b, checked = _a.checked, _c = _a.switchSize, switchSize = _c === void 0 ? "md" : _c, _d = _a.variant, variant = _d === void 0 ? "default" : _d, _e = _a.disabled, disabled = _e === void 0 ? false : _e, trackIcon = _a.trackIcon, thumbIcon = _a.thumbIcon, _f = _a.className, className = _f === void 0 ? "" : _f, _g = _a.style, style = _g === void 0 ? {} : _g;
|
|
21
|
+
var id = React.useId();
|
|
22
|
+
var _h = __read(React.useState(!!checked), 2), isChecked = _h[0], setIsChecked = _h[1];
|
|
23
|
+
var handleChange = function () {
|
|
24
|
+
setIsChecked(function (prev) { return !prev; });
|
|
25
|
+
if (onChange)
|
|
26
|
+
onChange();
|
|
27
|
+
};
|
|
28
|
+
var baseClasses = [
|
|
29
|
+
"switch",
|
|
30
|
+
"switch-size-".concat(switchSize),
|
|
31
|
+
"switch-variant-".concat(variant),
|
|
32
|
+
"switch-align-label-".concat(alignLabel),
|
|
33
|
+
disabled && "switch--disabled",
|
|
34
|
+
className,
|
|
35
|
+
]
|
|
36
|
+
.filter(Boolean)
|
|
37
|
+
.join(" ");
|
|
38
|
+
return (React.createElement("label", { htmlFor: id, className: baseClasses, style: style },
|
|
39
|
+
React.createElement("input", { id: id, type: "checkbox", disabled: disabled, checked: isChecked, onChange: handleChange }),
|
|
40
|
+
React.createElement("span", { className: "switch__track relative rounded-full overflow-hidden transition-colors duration-300 ease-in-out" },
|
|
41
|
+
(trackIcon === null || trackIcon === void 0 ? void 0 : trackIcon.checked) && (React.createElement("span", { className: "switch__track-icon switch__track-icon--checked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0" }, trackIcon.checked.component({
|
|
42
|
+
size: trackIcon.checked.size,
|
|
43
|
+
color: trackIcon.checked.color,
|
|
44
|
+
}))),
|
|
45
|
+
React.createElement("span", { className: "switch__thumb absolute top-1/2 left-0 bg-white rounded-full transform -translate-y-1/2 transition-all duration-200 ease-out flex items-center justify-center z-10" }, thumbIcon && (React.createElement("span", { className: "switch__thumb-icon flex items-center justify-center" }, thumbIcon.component({
|
|
46
|
+
size: thumbIcon.size,
|
|
47
|
+
color: thumbIcon.color,
|
|
48
|
+
})))),
|
|
49
|
+
(trackIcon === null || trackIcon === void 0 ? void 0 : trackIcon.unchecked) && (React.createElement("span", { className: "switch__track-icon switch__track-icon--unchecked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0" }, trackIcon.unchecked.component({
|
|
50
|
+
size: trackIcon.unchecked.size,
|
|
51
|
+
color: trackIcon.unchecked.color,
|
|
52
|
+
})))),
|
|
53
|
+
label && React.createElement("span", { className: "switch__label ml-2" }, label)));
|
|
54
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Switch";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
37
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
|
+
if (!m) return o;
|
|
39
|
+
var i = m.call(o), r, ar = [], e;
|
|
40
|
+
try {
|
|
41
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
42
|
+
}
|
|
43
|
+
catch (error) { e = { error: error }; }
|
|
44
|
+
finally {
|
|
45
|
+
try {
|
|
46
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
47
|
+
}
|
|
48
|
+
finally { if (e) throw e.error; }
|
|
49
|
+
}
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.Switch = void 0;
|
|
54
|
+
var React = __importStar(require("react"));
|
|
55
|
+
var Switch = function (_a) {
|
|
56
|
+
var onChange = _a.onChange, label = _a.label, _b = _a.alignLabel, alignLabel = _b === void 0 ? "vertical" : _b, checked = _a.checked, _c = _a.switchSize, switchSize = _c === void 0 ? "md" : _c, _d = _a.variant, variant = _d === void 0 ? "default" : _d, _e = _a.disabled, disabled = _e === void 0 ? false : _e, trackIcon = _a.trackIcon, thumbIcon = _a.thumbIcon, _f = _a.className, className = _f === void 0 ? "" : _f, _g = _a.style, style = _g === void 0 ? {} : _g;
|
|
57
|
+
var id = React.useId();
|
|
58
|
+
var _h = __read(React.useState(!!checked), 2), isChecked = _h[0], setIsChecked = _h[1];
|
|
59
|
+
var handleChange = function () {
|
|
60
|
+
setIsChecked(function (prev) { return !prev; });
|
|
61
|
+
if (onChange)
|
|
62
|
+
onChange();
|
|
63
|
+
};
|
|
64
|
+
var baseClasses = [
|
|
65
|
+
"switch",
|
|
66
|
+
"switch-size-".concat(switchSize),
|
|
67
|
+
"switch-variant-".concat(variant),
|
|
68
|
+
"switch-align-label-".concat(alignLabel),
|
|
69
|
+
disabled && "switch--disabled",
|
|
70
|
+
className,
|
|
71
|
+
]
|
|
72
|
+
.filter(Boolean)
|
|
73
|
+
.join(" ");
|
|
74
|
+
return (React.createElement("label", { htmlFor: id, className: baseClasses, style: style },
|
|
75
|
+
React.createElement("input", { id: id, type: "checkbox", disabled: disabled, checked: isChecked, onChange: handleChange }),
|
|
76
|
+
React.createElement("span", { className: "switch__track relative rounded-full overflow-hidden transition-colors duration-300 ease-in-out" },
|
|
77
|
+
(trackIcon === null || trackIcon === void 0 ? void 0 : trackIcon.checked) && (React.createElement("span", { className: "switch__track-icon switch__track-icon--checked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0" }, trackIcon.checked.component({
|
|
78
|
+
size: trackIcon.checked.size,
|
|
79
|
+
color: trackIcon.checked.color,
|
|
80
|
+
}))),
|
|
81
|
+
React.createElement("span", { className: "switch__thumb absolute top-1/2 left-0 bg-white rounded-full transform -translate-y-1/2 transition-all duration-200 ease-out flex items-center justify-center z-10" }, thumbIcon && (React.createElement("span", { className: "switch__thumb-icon flex items-center justify-center" }, thumbIcon.component({
|
|
82
|
+
size: thumbIcon.size,
|
|
83
|
+
color: thumbIcon.color,
|
|
84
|
+
})))),
|
|
85
|
+
(trackIcon === null || trackIcon === void 0 ? void 0 : trackIcon.unchecked) && (React.createElement("span", { className: "switch__track-icon switch__track-icon--unchecked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0" }, trackIcon.unchecked.component({
|
|
86
|
+
size: trackIcon.unchecked.size,
|
|
87
|
+
color: trackIcon.unchecked.color,
|
|
88
|
+
})))),
|
|
89
|
+
label && React.createElement("span", { className: "switch__label ml-2" }, label)));
|
|
90
|
+
};
|
|
91
|
+
exports.Switch = Switch;
|
|
@@ -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("./Switch"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aristobyte-ui/switch",
|
|
3
3
|
"description": "A fully typed, customizable Switch/toggle component for React with multiple sizes, variants, label alignments, and optional icons. Built to integrate seamlessly with AristoByteUI design tokens and SCSS modules.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
7
7
|
"author": "AristoByte <info@aristobyte.com>",
|
|
@@ -38,39 +38,10 @@
|
|
|
38
38
|
"publishConfig": {
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
|
-
"main": "dist/index.js",
|
|
42
|
-
"module": "dist/index.
|
|
43
|
-
"types": "dist/index.d.ts",
|
|
44
|
-
"exports": {
|
|
45
|
-
"development": {
|
|
46
|
-
"import": "./index.ts",
|
|
47
|
-
"types": "./index.ts"
|
|
48
|
-
},
|
|
49
|
-
"default": {
|
|
50
|
-
"import": "./dist/index.mjs",
|
|
51
|
-
"require": "./dist/index.js",
|
|
52
|
-
"types": "./dist/index.d.ts"
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
"scripts": {
|
|
56
|
-
"build": "tsup",
|
|
57
|
-
"lint": "eslint . --max-warnings 0",
|
|
58
|
-
"generate:component": "turbo gen react-component",
|
|
59
|
-
"check-types": "tsc --noEmit"
|
|
60
|
-
},
|
|
41
|
+
"main": "dist/lib/main/index.js",
|
|
42
|
+
"module": "dist/es/main/index.js",
|
|
61
43
|
"peerDependencies": {
|
|
62
44
|
"react": "^19.1.0",
|
|
63
45
|
"react-dom": "^19.1.0"
|
|
64
|
-
},
|
|
65
|
-
"devDependencies": {
|
|
66
|
-
"@aristobyte-ui/eslint-config": "^1.0.113",
|
|
67
|
-
"@aristobyte-ui/typescript-config": "^1.0.113",
|
|
68
|
-
"@turbo/gen": "^2.5.0",
|
|
69
|
-
"@types/node": "^24.3.0",
|
|
70
|
-
"@types/react": "19.1.0",
|
|
71
|
-
"@types/react-dom": "19.1.1",
|
|
72
|
-
"eslint": "^9.27.0",
|
|
73
|
-
"tsup": "^8.5.0",
|
|
74
|
-
"typescript": "^5.8.3"
|
|
75
46
|
}
|
|
76
47
|
}
|
package/dist/index.d.mts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { IconPropsType } from '@aristobyte-ui/utils';
|
|
3
|
-
|
|
4
|
-
interface ISwitch {
|
|
5
|
-
onChange?: () => void;
|
|
6
|
-
label?: string;
|
|
7
|
-
alignLabel?: "horizontal" | "vertical";
|
|
8
|
-
switchSize?: "xsm" | "sm" | "md" | "lg" | "xlg";
|
|
9
|
-
variant?: "default" | "primary" | "secondary" | "success" | "error" | "warning";
|
|
10
|
-
trackIcon?: {
|
|
11
|
-
checked?: {
|
|
12
|
-
component: (props: IconPropsType) => React.JSX.Element;
|
|
13
|
-
size?: number;
|
|
14
|
-
color?: string;
|
|
15
|
-
};
|
|
16
|
-
unchecked?: {
|
|
17
|
-
component: (props: IconPropsType) => React.JSX.Element;
|
|
18
|
-
size?: number;
|
|
19
|
-
color?: string;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
thumbIcon?: {
|
|
23
|
-
component: (props: IconPropsType) => React.JSX.Element;
|
|
24
|
-
size?: number;
|
|
25
|
-
color?: string;
|
|
26
|
-
};
|
|
27
|
-
checked?: boolean;
|
|
28
|
-
disabled?: boolean;
|
|
29
|
-
className?: string;
|
|
30
|
-
style?: React.CSSProperties;
|
|
31
|
-
}
|
|
32
|
-
declare const Switch: React.FC<ISwitch>;
|
|
33
|
-
|
|
34
|
-
export { type ISwitch, Switch };
|
package/dist/index.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { IconPropsType } from '@aristobyte-ui/utils';
|
|
3
|
-
|
|
4
|
-
interface ISwitch {
|
|
5
|
-
onChange?: () => void;
|
|
6
|
-
label?: string;
|
|
7
|
-
alignLabel?: "horizontal" | "vertical";
|
|
8
|
-
switchSize?: "xsm" | "sm" | "md" | "lg" | "xlg";
|
|
9
|
-
variant?: "default" | "primary" | "secondary" | "success" | "error" | "warning";
|
|
10
|
-
trackIcon?: {
|
|
11
|
-
checked?: {
|
|
12
|
-
component: (props: IconPropsType) => React.JSX.Element;
|
|
13
|
-
size?: number;
|
|
14
|
-
color?: string;
|
|
15
|
-
};
|
|
16
|
-
unchecked?: {
|
|
17
|
-
component: (props: IconPropsType) => React.JSX.Element;
|
|
18
|
-
size?: number;
|
|
19
|
-
color?: string;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
thumbIcon?: {
|
|
23
|
-
component: (props: IconPropsType) => React.JSX.Element;
|
|
24
|
-
size?: number;
|
|
25
|
-
color?: string;
|
|
26
|
-
};
|
|
27
|
-
checked?: boolean;
|
|
28
|
-
disabled?: boolean;
|
|
29
|
-
className?: string;
|
|
30
|
-
style?: React.CSSProperties;
|
|
31
|
-
}
|
|
32
|
-
declare const Switch: React.FC<ISwitch>;
|
|
33
|
-
|
|
34
|
-
export { type ISwitch, Switch };
|
package/dist/index.js
DELETED
|
@@ -1,100 +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
|
-
Switch: () => Switch
|
|
35
|
-
});
|
|
36
|
-
module.exports = __toCommonJS(index_exports);
|
|
37
|
-
|
|
38
|
-
// components/Switch.tsx
|
|
39
|
-
var React = __toESM(require("react"));
|
|
40
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
|
-
var Switch = ({
|
|
42
|
-
onChange,
|
|
43
|
-
label,
|
|
44
|
-
alignLabel = "vertical",
|
|
45
|
-
checked,
|
|
46
|
-
switchSize = "md",
|
|
47
|
-
variant = "default",
|
|
48
|
-
disabled = false,
|
|
49
|
-
trackIcon,
|
|
50
|
-
thumbIcon,
|
|
51
|
-
className = "",
|
|
52
|
-
style = {}
|
|
53
|
-
}) => {
|
|
54
|
-
const id = React.useId();
|
|
55
|
-
const [isChecked, setIsChecked] = React.useState(!!checked);
|
|
56
|
-
const handleChange = () => {
|
|
57
|
-
setIsChecked((prev) => !prev);
|
|
58
|
-
if (onChange) onChange();
|
|
59
|
-
};
|
|
60
|
-
const baseClasses = [
|
|
61
|
-
"switch",
|
|
62
|
-
`switch-size-${switchSize}`,
|
|
63
|
-
`switch-variant-${variant}`,
|
|
64
|
-
`switch-align-label-${alignLabel}`,
|
|
65
|
-
disabled && "switch--disabled",
|
|
66
|
-
className
|
|
67
|
-
].filter(Boolean).join(" ");
|
|
68
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { htmlFor: id, className: baseClasses, style, children: [
|
|
69
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
70
|
-
"input",
|
|
71
|
-
{
|
|
72
|
-
id,
|
|
73
|
-
type: "checkbox",
|
|
74
|
-
disabled,
|
|
75
|
-
checked: isChecked,
|
|
76
|
-
onChange: handleChange
|
|
77
|
-
}
|
|
78
|
-
),
|
|
79
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "switch__track relative rounded-full overflow-hidden transition-colors duration-300 ease-in-out", children: [
|
|
80
|
-
(trackIcon == null ? void 0 : trackIcon.checked) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "switch__track-icon switch__track-icon--checked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0", children: trackIcon.checked.component({
|
|
81
|
-
size: trackIcon.checked.size,
|
|
82
|
-
color: trackIcon.checked.color
|
|
83
|
-
}) }),
|
|
84
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "switch__thumb absolute top-1/2 left-0 bg-white rounded-full transform -translate-y-1/2 transition-all duration-200 ease-out flex items-center justify-center z-10", children: thumbIcon && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "switch__thumb-icon flex items-center justify-center", children: thumbIcon.component({
|
|
85
|
-
size: thumbIcon.size,
|
|
86
|
-
color: thumbIcon.color
|
|
87
|
-
}) }) }),
|
|
88
|
-
(trackIcon == null ? void 0 : trackIcon.unchecked) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "switch__track-icon switch__track-icon--unchecked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0", children: trackIcon.unchecked.component({
|
|
89
|
-
size: trackIcon.unchecked.size,
|
|
90
|
-
color: trackIcon.unchecked.color
|
|
91
|
-
}) })
|
|
92
|
-
] }),
|
|
93
|
-
label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "switch__label ml-2", children: label })
|
|
94
|
-
] });
|
|
95
|
-
};
|
|
96
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
97
|
-
0 && (module.exports = {
|
|
98
|
-
Switch
|
|
99
|
-
});
|
|
100
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../index.ts","../components/Switch.tsx"],"sourcesContent":["export * from \"./components\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { type IconPropsType } from \"@aristobyte-ui/utils\";\n\nexport interface ISwitch {\n onChange?: () => void;\n label?: string;\n alignLabel?: \"horizontal\" | \"vertical\";\n switchSize?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n trackIcon?: {\n checked?: {\n component: (props: IconPropsType) => React.JSX.Element;\n size?: number;\n color?: string;\n };\n unchecked?: {\n component: (props: IconPropsType) => React.JSX.Element;\n size?: number;\n color?: string;\n };\n };\n thumbIcon?: {\n component: (props: IconPropsType) => React.JSX.Element;\n size?: number;\n color?: string;\n };\n checked?: boolean;\n disabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Switch: React.FC<ISwitch> = ({\n onChange,\n label,\n alignLabel = \"vertical\",\n checked,\n switchSize = \"md\",\n variant = \"default\",\n disabled = false,\n trackIcon,\n thumbIcon,\n className = \"\",\n style = {},\n}) => {\n const id = React.useId();\n const [isChecked, setIsChecked] = React.useState<boolean>(!!checked);\n\n const handleChange = () => {\n setIsChecked((prev) => !prev);\n if (onChange) onChange();\n };\n\n const baseClasses = [\n \"switch\",\n `switch-size-${switchSize}`,\n `switch-variant-${variant}`,\n `switch-align-label-${alignLabel}`,\n disabled && \"switch--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label htmlFor={id} className={baseClasses} style={style}>\n <input\n id={id}\n type=\"checkbox\"\n disabled={disabled}\n checked={isChecked}\n onChange={handleChange}\n />\n\n <span className=\"switch__track relative rounded-full overflow-hidden transition-colors duration-300 ease-in-out\">\n {trackIcon?.checked && (\n <span className=\"switch__track-icon switch__track-icon--checked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0\">\n {trackIcon.checked.component({\n size: trackIcon.checked.size,\n color: trackIcon.checked.color,\n })}\n </span>\n )}\n\n <span className=\"switch__thumb absolute top-1/2 left-0 bg-white rounded-full transform -translate-y-1/2 transition-all duration-200 ease-out flex items-center justify-center z-10\">\n {thumbIcon && (\n <span className=\"switch__thumb-icon flex items-center justify-center\">\n {thumbIcon.component({\n size: thumbIcon.size,\n color: thumbIcon.color,\n })}\n </span>\n )}\n </span>\n\n {trackIcon?.unchecked && (\n <span className=\"switch__track-icon switch__track-icon--unchecked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0\">\n {trackIcon.unchecked.component({\n size: trackIcon.unchecked.size,\n color: trackIcon.unchecked.color,\n })}\n </span>\n )}\n </span>\n\n {label && <span className=\"switch__label ml-2\">{label}</span>}\n </label>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,YAAuB;AAwEjB;AAlCC,IAAM,SAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,QAAM,KAAW,YAAM;AACvB,QAAM,CAAC,WAAW,YAAY,IAAU,eAAkB,CAAC,CAAC,OAAO;AAEnE,QAAM,eAAe,MAAM;AACzB,iBAAa,CAAC,SAAS,CAAC,IAAI;AAC5B,QAAI,SAAU,UAAS;AAAA,EACzB;AAEA,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,eAAe,UAAU;AAAA,IACzB,kBAAkB,OAAO;AAAA,IACzB,sBAAsB,UAAU;AAAA,IAChC,YAAY;AAAA,IACZ;AAAA,EACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,6CAAC,WAAM,SAAS,IAAI,WAAW,aAAa,OAC1C;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,UAAU;AAAA;AAAA,IACZ;AAAA,IAEA,6CAAC,UAAK,WAAU,kGACb;AAAA,8CAAW,YACV,4CAAC,UAAK,WAAU,6IACb,oBAAU,QAAQ,UAAU;AAAA,QAC3B,MAAM,UAAU,QAAQ;AAAA,QACxB,OAAO,UAAU,QAAQ;AAAA,MAC3B,CAAC,GACH;AAAA,MAGF,4CAAC,UAAK,WAAU,qKACb,uBACC,4CAAC,UAAK,WAAU,uDACb,oBAAU,UAAU;AAAA,QACnB,MAAM,UAAU;AAAA,QAChB,OAAO,UAAU;AAAA,MACnB,CAAC,GACH,GAEJ;AAAA,OAEC,uCAAW,cACV,4CAAC,UAAK,WAAU,+IACb,oBAAU,UAAU,UAAU;AAAA,QAC7B,MAAM,UAAU,UAAU;AAAA,QAC1B,OAAO,UAAU,UAAU;AAAA,MAC7B,CAAC,GACH;AAAA,OAEJ;AAAA,IAEC,SAAS,4CAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,KACxD;AAEJ;","names":[]}
|
package/dist/index.mjs
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// components/Switch.tsx
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
var Switch = ({
|
|
7
|
-
onChange,
|
|
8
|
-
label,
|
|
9
|
-
alignLabel = "vertical",
|
|
10
|
-
checked,
|
|
11
|
-
switchSize = "md",
|
|
12
|
-
variant = "default",
|
|
13
|
-
disabled = false,
|
|
14
|
-
trackIcon,
|
|
15
|
-
thumbIcon,
|
|
16
|
-
className = "",
|
|
17
|
-
style = {}
|
|
18
|
-
}) => {
|
|
19
|
-
const id = React.useId();
|
|
20
|
-
const [isChecked, setIsChecked] = React.useState(!!checked);
|
|
21
|
-
const handleChange = () => {
|
|
22
|
-
setIsChecked((prev) => !prev);
|
|
23
|
-
if (onChange) onChange();
|
|
24
|
-
};
|
|
25
|
-
const baseClasses = [
|
|
26
|
-
"switch",
|
|
27
|
-
`switch-size-${switchSize}`,
|
|
28
|
-
`switch-variant-${variant}`,
|
|
29
|
-
`switch-align-label-${alignLabel}`,
|
|
30
|
-
disabled && "switch--disabled",
|
|
31
|
-
className
|
|
32
|
-
].filter(Boolean).join(" ");
|
|
33
|
-
return /* @__PURE__ */ jsxs("label", { htmlFor: id, className: baseClasses, style, children: [
|
|
34
|
-
/* @__PURE__ */ jsx(
|
|
35
|
-
"input",
|
|
36
|
-
{
|
|
37
|
-
id,
|
|
38
|
-
type: "checkbox",
|
|
39
|
-
disabled,
|
|
40
|
-
checked: isChecked,
|
|
41
|
-
onChange: handleChange
|
|
42
|
-
}
|
|
43
|
-
),
|
|
44
|
-
/* @__PURE__ */ jsxs("span", { className: "switch__track relative rounded-full overflow-hidden transition-colors duration-300 ease-in-out", children: [
|
|
45
|
-
(trackIcon == null ? void 0 : trackIcon.checked) && /* @__PURE__ */ jsx("span", { className: "switch__track-icon switch__track-icon--checked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0", children: trackIcon.checked.component({
|
|
46
|
-
size: trackIcon.checked.size,
|
|
47
|
-
color: trackIcon.checked.color
|
|
48
|
-
}) }),
|
|
49
|
-
/* @__PURE__ */ jsx("span", { className: "switch__thumb absolute top-1/2 left-0 bg-white rounded-full transform -translate-y-1/2 transition-all duration-200 ease-out flex items-center justify-center z-10", children: thumbIcon && /* @__PURE__ */ jsx("span", { className: "switch__thumb-icon flex items-center justify-center", children: thumbIcon.component({
|
|
50
|
-
size: thumbIcon.size,
|
|
51
|
-
color: thumbIcon.color
|
|
52
|
-
}) }) }),
|
|
53
|
-
(trackIcon == null ? void 0 : trackIcon.unchecked) && /* @__PURE__ */ jsx("span", { className: "switch__track-icon switch__track-icon--unchecked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0", children: trackIcon.unchecked.component({
|
|
54
|
-
size: trackIcon.unchecked.size,
|
|
55
|
-
color: trackIcon.unchecked.color
|
|
56
|
-
}) })
|
|
57
|
-
] }),
|
|
58
|
-
label && /* @__PURE__ */ jsx("span", { className: "switch__label ml-2", children: label })
|
|
59
|
-
] });
|
|
60
|
-
};
|
|
61
|
-
export {
|
|
62
|
-
Switch
|
|
63
|
-
};
|
|
64
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/Switch.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { type IconPropsType } from \"@aristobyte-ui/utils\";\n\nexport interface ISwitch {\n onChange?: () => void;\n label?: string;\n alignLabel?: \"horizontal\" | \"vertical\";\n switchSize?: \"xsm\" | \"sm\" | \"md\" | \"lg\" | \"xlg\";\n variant?:\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"error\"\n | \"warning\";\n trackIcon?: {\n checked?: {\n component: (props: IconPropsType) => React.JSX.Element;\n size?: number;\n color?: string;\n };\n unchecked?: {\n component: (props: IconPropsType) => React.JSX.Element;\n size?: number;\n color?: string;\n };\n };\n thumbIcon?: {\n component: (props: IconPropsType) => React.JSX.Element;\n size?: number;\n color?: string;\n };\n checked?: boolean;\n disabled?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const Switch: React.FC<ISwitch> = ({\n onChange,\n label,\n alignLabel = \"vertical\",\n checked,\n switchSize = \"md\",\n variant = \"default\",\n disabled = false,\n trackIcon,\n thumbIcon,\n className = \"\",\n style = {},\n}) => {\n const id = React.useId();\n const [isChecked, setIsChecked] = React.useState<boolean>(!!checked);\n\n const handleChange = () => {\n setIsChecked((prev) => !prev);\n if (onChange) onChange();\n };\n\n const baseClasses = [\n \"switch\",\n `switch-size-${switchSize}`,\n `switch-variant-${variant}`,\n `switch-align-label-${alignLabel}`,\n disabled && \"switch--disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <label htmlFor={id} className={baseClasses} style={style}>\n <input\n id={id}\n type=\"checkbox\"\n disabled={disabled}\n checked={isChecked}\n onChange={handleChange}\n />\n\n <span className=\"switch__track relative rounded-full overflow-hidden transition-colors duration-300 ease-in-out\">\n {trackIcon?.checked && (\n <span className=\"switch__track-icon switch__track-icon--checked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0\">\n {trackIcon.checked.component({\n size: trackIcon.checked.size,\n color: trackIcon.checked.color,\n })}\n </span>\n )}\n\n <span className=\"switch__thumb absolute top-1/2 left-0 bg-white rounded-full transform -translate-y-1/2 transition-all duration-200 ease-out flex items-center justify-center z-10\">\n {thumbIcon && (\n <span className=\"switch__thumb-icon flex items-center justify-center\">\n {thumbIcon.component({\n size: thumbIcon.size,\n color: thumbIcon.color,\n })}\n </span>\n )}\n </span>\n\n {trackIcon?.unchecked && (\n <span className=\"switch__track-icon switch__track-icon--unchecked absolute top-1/2 flex items-center justify-center transition-all duration-200 ease-out z-0\">\n {trackIcon.unchecked.component({\n size: trackIcon.unchecked.size,\n color: trackIcon.unchecked.color,\n })}\n </span>\n )}\n </span>\n\n {label && <span className=\"switch__label ml-2\">{label}</span>}\n </label>\n );\n};\n"],"mappings":";;;AAEA,YAAY,WAAW;AAwEjB,cAQA,YARA;AAlCC,IAAM,SAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,aAAa;AAAA,EACb,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,QAAQ,CAAC;AACX,MAAM;AACJ,QAAM,KAAW,YAAM;AACvB,QAAM,CAAC,WAAW,YAAY,IAAU,eAAkB,CAAC,CAAC,OAAO;AAEnE,QAAM,eAAe,MAAM;AACzB,iBAAa,CAAC,SAAS,CAAC,IAAI;AAC5B,QAAI,SAAU,UAAS;AAAA,EACzB;AAEA,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,eAAe,UAAU;AAAA,IACzB,kBAAkB,OAAO;AAAA,IACzB,sBAAsB,UAAU;AAAA,IAChC,YAAY;AAAA,IACZ;AAAA,EACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,qBAAC,WAAM,SAAS,IAAI,WAAW,aAAa,OAC1C;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,UAAU;AAAA;AAAA,IACZ;AAAA,IAEA,qBAAC,UAAK,WAAU,kGACb;AAAA,8CAAW,YACV,oBAAC,UAAK,WAAU,6IACb,oBAAU,QAAQ,UAAU;AAAA,QAC3B,MAAM,UAAU,QAAQ;AAAA,QACxB,OAAO,UAAU,QAAQ;AAAA,MAC3B,CAAC,GACH;AAAA,MAGF,oBAAC,UAAK,WAAU,qKACb,uBACC,oBAAC,UAAK,WAAU,uDACb,oBAAU,UAAU;AAAA,QACnB,MAAM,UAAU;AAAA,QAChB,OAAO,UAAU;AAAA,MACnB,CAAC,GACH,GAEJ;AAAA,OAEC,uCAAW,cACV,oBAAC,UAAK,WAAU,+IACb,oBAAU,UAAU,UAAU;AAAA,QAC7B,MAAM,UAAU,UAAU;AAAA,QAC1B,OAAO,UAAU,UAAU;AAAA,MAC7B,CAAC,GACH;AAAA,OAEJ;AAAA,IAEC,SAAS,oBAAC,UAAK,WAAU,sBAAsB,iBAAM;AAAA,KACxD;AAEJ;","names":[]}
|