@versini/ui-toggle 6.2.2 → 6.3.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/index.d.ts +7 -1
- package/dist/index.js +14 -7
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { JSX } from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
export declare const Toggle: ({ checked, onChange, label, labelHidden, name, mode, focusMode, labelMode, className, noBorder, narrow, noHaptic, labelPosition, subLabel, }: ToggleProps) => JSX.Element;
|
|
3
|
+
export declare const Toggle: ({ checked, onChange, label, labelHidden, name, mode, focusMode, labelMode, className, noBorder, narrow, noHaptic, labelPosition, subLabel, splitBackground, }: ToggleProps) => JSX.Element;
|
|
4
4
|
|
|
5
5
|
export declare const TOGGLE_CLASSNAME = "av-toggle";
|
|
6
6
|
|
|
@@ -70,6 +70,12 @@ declare type ToggleProps = {
|
|
|
70
70
|
* @default "right"
|
|
71
71
|
*/
|
|
72
72
|
labelPosition?: "left" | "right";
|
|
73
|
+
/**
|
|
74
|
+
* Whether or not to render the toggle track with a split background
|
|
75
|
+
* gradient overlay (aqua-style).
|
|
76
|
+
* @default false
|
|
77
|
+
*/
|
|
78
|
+
splitBackground?: boolean;
|
|
73
79
|
};
|
|
74
80
|
|
|
75
81
|
export { }
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
@versini/ui-toggle v6.
|
|
2
|
+
@versini/ui-toggle v6.3.0
|
|
3
3
|
© 2026 gizmette.com
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -29,12 +29,17 @@ const getToggleKnobFocusClasses = ({ focusMode })=>{
|
|
|
29
29
|
"peer-focus:outline-focus-dark dark:peer-focus:outline-focus-light": focusMode === "system"
|
|
30
30
|
});
|
|
31
31
|
};
|
|
32
|
-
|
|
32
|
+
// Aqua-style split background overlay for the toggle knob:
|
|
33
|
+
// - Top half: flat white overlay (light, uniform)
|
|
34
|
+
// - Bottom half: starts darker, gradually lightens toward the bottom edge
|
|
35
|
+
const KNOB_SPLIT_OVERLAY = "after:bg-[linear-gradient(to_bottom,oklch(1_0_0/0.2)_50%,oklch(0_0_0/0.1)_50%,oklch(1_0_0/0.05)_100%)]";
|
|
36
|
+
const getToggleKnobOnClasses = ({ narrow, splitBackground })=>{
|
|
33
37
|
return clsx({
|
|
34
38
|
"peer-checked:after:translate-x-full": !narrow,
|
|
35
39
|
"peer-checked:after:translate-x-4": narrow
|
|
36
40
|
}, // background color when checked
|
|
37
|
-
"peer-checked:bg-action-light", //
|
|
41
|
+
"peer-checked:bg-action-light", // split background overlay on the knob (both states)
|
|
42
|
+
splitBackground && KNOB_SPLIT_OVERLAY, // knob circle and border color when checked
|
|
38
43
|
"peer-checked:after:bg-white", "peer-checked:after:border-white");
|
|
39
44
|
};
|
|
40
45
|
const getToggleKnobOffClasses = ({ narrow })=>{
|
|
@@ -79,7 +84,7 @@ const getWrapperClasses = ({ className })=>{
|
|
|
79
84
|
const getToggleWrapperClasses = ()=>{
|
|
80
85
|
return "relative inline-block";
|
|
81
86
|
};
|
|
82
|
-
const getToggleClasses = ({ mode, focusMode, labelHidden, className, noBorder, narrow, labelMode, labelPosition = "right", subLabel })=>{
|
|
87
|
+
const getToggleClasses = ({ mode, focusMode, labelHidden, className, noBorder, narrow, labelMode, labelPosition = "right", subLabel, splitBackground })=>{
|
|
83
88
|
return {
|
|
84
89
|
toggle: clsx(getToggleBaseClasses({
|
|
85
90
|
narrow
|
|
@@ -91,7 +96,8 @@ const getToggleClasses = ({ mode, focusMode, labelHidden, className, noBorder, n
|
|
|
91
96
|
}), getToggleKnobOffClasses({
|
|
92
97
|
narrow
|
|
93
98
|
}), getToggleKnobOnClasses({
|
|
94
|
-
narrow
|
|
99
|
+
narrow,
|
|
100
|
+
splitBackground
|
|
95
101
|
})),
|
|
96
102
|
label: getLabelClasses({
|
|
97
103
|
labelHidden,
|
|
@@ -117,7 +123,7 @@ const getToggleClasses = ({ mode, focusMode, labelHidden, className, noBorder, n
|
|
|
117
123
|
|
|
118
124
|
|
|
119
125
|
|
|
120
|
-
const Toggle = ({ checked = false, onChange, label, labelHidden = false, name, mode = "system", focusMode = "system", labelMode, className, noBorder = false, narrow = false, noHaptic = false, labelPosition = "right", subLabel })=>{
|
|
126
|
+
const Toggle = ({ checked = false, onChange, label, labelHidden = false, name, mode = "system", focusMode = "system", labelMode, className, noBorder = false, narrow = false, noHaptic = false, labelPosition = "right", subLabel, splitBackground = false })=>{
|
|
121
127
|
const { haptic } = useHaptic();
|
|
122
128
|
const toggleClasses = getToggleClasses({
|
|
123
129
|
mode,
|
|
@@ -128,7 +134,8 @@ const Toggle = ({ checked = false, onChange, label, labelHidden = false, name, m
|
|
|
128
134
|
narrow,
|
|
129
135
|
labelMode,
|
|
130
136
|
labelPosition,
|
|
131
|
-
subLabel: !!subLabel
|
|
137
|
+
subLabel: !!subLabel,
|
|
138
|
+
splitBackground
|
|
132
139
|
});
|
|
133
140
|
const handleChange = (e)=>{
|
|
134
141
|
if (!noHaptic) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@versini/ui-toggle",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Arno Versini",
|
|
6
6
|
"publishConfig": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"test": "vitest run"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@versini/ui-types": "8.
|
|
40
|
+
"@versini/ui-types": "8.4.0"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@versini/ui-hooks": "6.1.1",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"sideEffects": [
|
|
48
48
|
"**/*.css"
|
|
49
49
|
],
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "af3ee18b6fc3d57977ec331df0ce151794e29342"
|
|
51
51
|
}
|