@purr-react-tailwindcss/components.switch 0.0.1
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/_components/_left-label.d.ts +4 -0
- package/dist/_components/_right-label.d.ts +4 -0
- package/dist/_components/index.d.ts +4 -0
- package/dist/_left-label-K_1UpPNK.js +27 -0
- package/dist/_left-label-ciTiWzfK.cjs +1 -0
- package/dist/_right-label-32-rH0iQ.cjs +1 -0
- package/dist/_right-label-7YaXOwpz.js +27 -0
- package/dist/_types.d.ts +29 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +88 -0
- package/package.json +40 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import i from "clsx";
|
|
3
|
+
import { memo as o } from "react";
|
|
4
|
+
const r = o(
|
|
5
|
+
({
|
|
6
|
+
leftLabel: t = "",
|
|
7
|
+
disabled: e = !1,
|
|
8
|
+
htmlAttributes: l
|
|
9
|
+
}) => t ? /* @__PURE__ */ a(
|
|
10
|
+
"span",
|
|
11
|
+
{
|
|
12
|
+
className: i(
|
|
13
|
+
"mr-2 font-sans text-base",
|
|
14
|
+
e ? "cursor-not-allowed text-white/50 opacity-50" : "text-white opacity-100",
|
|
15
|
+
"switch-label",
|
|
16
|
+
"switch-label__left",
|
|
17
|
+
e && "switch-label__left--disabled"
|
|
18
|
+
),
|
|
19
|
+
...l,
|
|
20
|
+
children: t
|
|
21
|
+
}
|
|
22
|
+
) : null
|
|
23
|
+
);
|
|
24
|
+
r.displayName = "SwitchLabelLeft";
|
|
25
|
+
export {
|
|
26
|
+
r as SwitchLabelLeft
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),a=require("clsx"),c=require("react"),l=c.memo(({leftLabel:e="",disabled:t=!1,htmlAttributes:s})=>e?i.jsx("span",{className:a("mr-2 font-sans text-base",t?"cursor-not-allowed text-white/50 opacity-50":"text-white opacity-100","switch-label","switch-label__left",t&&"switch-label__left--disabled"),...s,children:e}):null);l.displayName="SwitchLabelLeft";exports.SwitchLabelLeft=l;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),a=require("clsx"),c=require("react"),i=c.memo(({rightLabel:t="",disabled:e=!1,htmlAttributes:l})=>t?s.jsx("span",{className:a("ml-2 font-sans text-base",e?"cursor-not-allowed text-white/50 opacity-50":"text-white opacity-100","switch-label","switch-label__right",e&&"switch-label__right--disabled"),...l,children:t}):null);i.displayName="SwitchLabelRight";exports.SwitchLabelRight=i;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import a from "clsx";
|
|
3
|
+
import { memo as o } from "react";
|
|
4
|
+
const r = o(
|
|
5
|
+
({
|
|
6
|
+
rightLabel: t = "",
|
|
7
|
+
disabled: e = !1,
|
|
8
|
+
htmlAttributes: i
|
|
9
|
+
}) => t ? /* @__PURE__ */ l(
|
|
10
|
+
"span",
|
|
11
|
+
{
|
|
12
|
+
className: a(
|
|
13
|
+
"ml-2 font-sans text-base",
|
|
14
|
+
e ? "cursor-not-allowed text-white/50 opacity-50" : "text-white opacity-100",
|
|
15
|
+
"switch-label",
|
|
16
|
+
"switch-label__right",
|
|
17
|
+
e && "switch-label__right--disabled"
|
|
18
|
+
),
|
|
19
|
+
...i,
|
|
20
|
+
children: t
|
|
21
|
+
}
|
|
22
|
+
) : null
|
|
23
|
+
);
|
|
24
|
+
r.displayName = "SwitchLabelRight";
|
|
25
|
+
export {
|
|
26
|
+
r as SwitchLabelRight
|
|
27
|
+
};
|
package/dist/_types.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChangeEvent, HTMLAttributes, InputHTMLAttributes } from 'react';
|
|
2
|
+
import { FieldError } from 'react-hook-form';
|
|
3
|
+
import { IExtendable } from '@purr-core/utils.definitions';
|
|
4
|
+
|
|
5
|
+
export interface ISwitchLeftLabelProps {
|
|
6
|
+
leftLabel?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
htmlAttributes?: HTMLAttributes<HTMLSpanElement> & IExtendable;
|
|
9
|
+
}
|
|
10
|
+
export interface ISwitchRightLabelProps {
|
|
11
|
+
rightLabel?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
htmlAttributes?: HTMLAttributes<HTMLSpanElement> & IExtendable;
|
|
14
|
+
}
|
|
15
|
+
export interface ISwitchProps {
|
|
16
|
+
value?: boolean;
|
|
17
|
+
leftLabel?: string;
|
|
18
|
+
rightLabel?: string;
|
|
19
|
+
htmlAttributes?: HTMLAttributes<HTMLDivElement> & IExtendable;
|
|
20
|
+
inputHtmlAttributes?: InputHTMLAttributes<HTMLInputElement> & IExtendable;
|
|
21
|
+
leftLabelHtmlAttributes?: HTMLAttributes<HTMLSpanElement> & IExtendable;
|
|
22
|
+
rightLabelHtmlAttributes?: HTMLAttributes<HTMLSpanElement> & IExtendable;
|
|
23
|
+
fullWidth?: boolean;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
required?: boolean;
|
|
26
|
+
error?: FieldError;
|
|
27
|
+
isStandalone?: boolean;
|
|
28
|
+
onChange?: (value: boolean, e: ChangeEvent<HTMLInputElement>) => void;
|
|
29
|
+
}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),o=require("clsx"),s=require("react"),b=require("@purr-core/hooks.sync-state-with-props"),m=s.lazy(()=>Promise.resolve().then(()=>require("./_left-label-ciTiWzfK.cjs")).then(a=>({default:a.SwitchLabelLeft}))),j=s.lazy(()=>Promise.resolve().then(()=>require("./_right-label-32-rH0iQ.cjs")).then(a=>({default:a.SwitchLabelRight}))),u=s.forwardRef(({value:a=!1,leftLabel:n="",rightLabel:l="",htmlAttributes:h,inputHtmlAttributes:f,leftLabelHtmlAttributes:w,rightLabelHtmlAttributes:p,onChange:c,disabled:e=!1,required:g=!1,isStandalone:x=!1},S)=>{const{currentValue:t,setCurrentValue:d}=b(a,x),y=i=>{d(i.target.checked),c==null||c(i.target.checked,i)};return r.jsxs("div",{className:"switch inline-flex items-center",...h,children:[r.jsx(s.Suspense,{children:!!n&&r.jsx(m,{htmlAttributes:w,leftLabel:n,disabled:e})}),r.jsx("div",{className:o("relative h-3 w-8 rounded-lg transition-all duration-200 ease-in-out after:pointer-events-none after:absolute after:-left-1 after:-top-1 after:h-5 after:w-5 after:rounded-full after:transition-all after:duration-200 after:ease-in-out",e&&t&&"bg-sky-400/20 after:bg-slate-700",e&&!t&&"bg-white/20 after:bg-gray-500",!e&&t&&"bg-sky-400/50 after:bg-blue-300",!e&&!t&&"bg-white/50 after:bg-gray-200",t?"after:translate-x-5":"after:translate-x-0","switch-pad",t&&"switch-pad--on",e&&"switch-pad--disabled"),children:r.jsx("input",{ref:S,checked:t,onChange:y,disabled:e,type:"checkbox",required:g,className:o("absolute left-0 top-0 h-3 w-8 opacity-0",e?"cursor-not-allowed":"cursor-pointer"),...f})}),r.jsx(s.Suspense,{children:!!l&&r.jsx(j,{htmlAttributes:p,rightLabel:l,disabled:e})})]})});u.displayName="Switch";exports.Switch=u;
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsxs as S, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import l from "clsx";
|
|
3
|
+
import { lazy as f, forwardRef as x, Suspense as n } from "react";
|
|
4
|
+
import k from "@purr-core/hooks.sync-state-with-props";
|
|
5
|
+
const v = f(
|
|
6
|
+
() => import("./_left-label-K_1UpPNK.js").then((a) => ({
|
|
7
|
+
default: a.SwitchLabelLeft
|
|
8
|
+
}))
|
|
9
|
+
), L = f(
|
|
10
|
+
() => import("./_right-label-7YaXOwpz.js").then((a) => ({
|
|
11
|
+
default: a.SwitchLabelRight
|
|
12
|
+
}))
|
|
13
|
+
), N = x(
|
|
14
|
+
({
|
|
15
|
+
value: a = !1,
|
|
16
|
+
leftLabel: c = "",
|
|
17
|
+
rightLabel: o = "",
|
|
18
|
+
htmlAttributes: h,
|
|
19
|
+
inputHtmlAttributes: u,
|
|
20
|
+
leftLabelHtmlAttributes: p,
|
|
21
|
+
rightLabelHtmlAttributes: m,
|
|
22
|
+
onChange: s,
|
|
23
|
+
disabled: t = !1,
|
|
24
|
+
required: w = !1,
|
|
25
|
+
isStandalone: g = !1
|
|
26
|
+
}, d) => {
|
|
27
|
+
const { currentValue: e, setCurrentValue: b } = k(
|
|
28
|
+
a,
|
|
29
|
+
g
|
|
30
|
+
), y = (i) => {
|
|
31
|
+
b(i.target.checked), s == null || s(i.target.checked, i);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ S("div", { className: "switch inline-flex items-center", ...h, children: [
|
|
34
|
+
/* @__PURE__ */ r(n, { children: !!c && /* @__PURE__ */ r(
|
|
35
|
+
v,
|
|
36
|
+
{
|
|
37
|
+
htmlAttributes: p,
|
|
38
|
+
leftLabel: c,
|
|
39
|
+
disabled: t
|
|
40
|
+
}
|
|
41
|
+
) }),
|
|
42
|
+
/* @__PURE__ */ r(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
className: l(
|
|
46
|
+
"relative h-3 w-8 rounded-lg transition-all duration-200 ease-in-out after:pointer-events-none after:absolute after:-left-1 after:-top-1 after:h-5 after:w-5 after:rounded-full after:transition-all after:duration-200 after:ease-in-out",
|
|
47
|
+
t && e && "bg-sky-400/20 after:bg-slate-700",
|
|
48
|
+
t && !e && "bg-white/20 after:bg-gray-500",
|
|
49
|
+
!t && e && "bg-sky-400/50 after:bg-blue-300",
|
|
50
|
+
!t && !e && "bg-white/50 after:bg-gray-200",
|
|
51
|
+
e ? "after:translate-x-5" : "after:translate-x-0",
|
|
52
|
+
"switch-pad",
|
|
53
|
+
e && "switch-pad--on",
|
|
54
|
+
t && "switch-pad--disabled"
|
|
55
|
+
),
|
|
56
|
+
children: /* @__PURE__ */ r(
|
|
57
|
+
"input",
|
|
58
|
+
{
|
|
59
|
+
ref: d,
|
|
60
|
+
checked: e,
|
|
61
|
+
onChange: y,
|
|
62
|
+
disabled: t,
|
|
63
|
+
type: "checkbox",
|
|
64
|
+
required: w,
|
|
65
|
+
className: l(
|
|
66
|
+
"absolute left-0 top-0 h-3 w-8 opacity-0",
|
|
67
|
+
t ? "cursor-not-allowed" : "cursor-pointer"
|
|
68
|
+
),
|
|
69
|
+
...u
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
/* @__PURE__ */ r(n, { children: !!o && /* @__PURE__ */ r(
|
|
75
|
+
L,
|
|
76
|
+
{
|
|
77
|
+
htmlAttributes: m,
|
|
78
|
+
rightLabel: o,
|
|
79
|
+
disabled: t
|
|
80
|
+
}
|
|
81
|
+
) })
|
|
82
|
+
] });
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
N.displayName = "Switch";
|
|
86
|
+
export {
|
|
87
|
+
N as Switch
|
|
88
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@purr-react-tailwindcss/components.switch",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.cjs",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"typescript": "*",
|
|
25
|
+
"react": "*",
|
|
26
|
+
"clsx": "*",
|
|
27
|
+
"react-hook-form": "*",
|
|
28
|
+
"@purr-core/utils.definitions": "0.0.6",
|
|
29
|
+
"@purr-core/hooks.sync-state-with-props": "0.0.4"
|
|
30
|
+
},
|
|
31
|
+
"author": "@DinhThienPhuc",
|
|
32
|
+
"license": "ISC",
|
|
33
|
+
"description": "",
|
|
34
|
+
"sideEffects": false,
|
|
35
|
+
"scripts": {
|
|
36
|
+
"dev": "vite build --watch",
|
|
37
|
+
"build": "tsc && vite build",
|
|
38
|
+
"lint": "eslint . --ext ts,tsx --max-warnings 0"
|
|
39
|
+
}
|
|
40
|
+
}
|