Skip to content

Commit b963b2c

Browse files
fix(ui): Toggle Switch - styles (themesberg#1428)
* fix(ui): toggle switch - RTL - broken switch when label too long - bring back animations * fix(ui): toggle switch - text align start * add changeset
1 parent 92f41fe commit b963b2c

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

.changeset/seven-carrots-report.md

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"flowbite-react": patch
3+
---
4+
5+
fix(ui): Toggle Switch - styles
6+
7+
- RTL
8+
- broken switch when label too long
9+
- bring back animations

apps/web/examples/forms/forms.toggleSwitch.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export function Component() {
1616
const [switch3, setSwitch3] = useState(true);
1717
1818
return (
19-
<div className="flex max-w-md flex-col gap-4">
19+
<div className="flex max-w-md flex-col items-start gap-4">
2020
<ToggleSwitch checked={switch1} label="Toggle me" onChange={setSwitch1} />
2121
<ToggleSwitch checked={switch2} label="Toggle me (checked)" onChange={setSwitch2} />
2222
<ToggleSwitch checked={false} disabled label="Toggle me (disabled)" onChange={() => undefined} />
@@ -33,7 +33,7 @@ export function Component() {
3333
const [switch3, setSwitch3] = useState(true);
3434

3535
return (
36-
<div className="flex max-w-md flex-col gap-4">
36+
<div className="flex max-w-md flex-col items-start gap-4">
3737
<ToggleSwitch checked={switch1} label="Toggle me" onChange={setSwitch1} />
3838
<ToggleSwitch checked={switch2} label="Toggle me (checked)" onChange={setSwitch2} />
3939
<ToggleSwitch checked={false} disabled label="Toggle me (disabled)" onChange={() => undefined} />

packages/ui/src/components/ToggleSwitch/theme.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ import type { FlowbiteToggleSwitchTheme } from "./ToggleSwitch";
33

44
export const toggleSwitchTheme: FlowbiteToggleSwitchTheme = createTheme({
55
root: {
6-
base: "group relative flex items-center rounded-lg focus:outline-none",
6+
base: "group flex rounded-lg focus:outline-none",
77
active: {
88
on: "cursor-pointer",
99
off: "cursor-not-allowed opacity-50",
1010
},
11-
label: "ml-3 text-sm font-medium text-gray-900 dark:text-gray-300",
11+
label: "ms-3 mt-0.5 text-start text-sm font-medium text-gray-900 dark:text-gray-300",
1212
},
1313
toggle: {
14-
base: "rounded-full border after:rounded-full after:bg-white group-focus:ring-4 group-focus:ring-cyan-500/25",
14+
base: "relative rounded-full border after:absolute after:rounded-full after:bg-white after:transition-all group-focus:ring-4 group-focus:ring-cyan-500/25",
1515
checked: {
16-
on: "after:translate-x-full after:border-white",
16+
on: "after:translate-x-full after:border-white rtl:after:-translate-x-full",
1717
off: "border-gray-200 bg-gray-200 dark:border-gray-600 dark:bg-gray-700",
1818
color: {
1919
blue: "border-cyan-700 bg-cyan-700",
@@ -36,9 +36,9 @@ export const toggleSwitchTheme: FlowbiteToggleSwitchTheme = createTheme({
3636
},
3737
},
3838
sizes: {
39-
sm: "h-5 w-9 after:absolute after:left-[2px] after:top-[2px] after:h-4 after:w-4",
40-
md: "h-6 w-11 after:absolute after:left-[2px] after:top-[2px] after:h-5 after:w-5",
41-
lg: "h-7 w-14 after:absolute after:left-[4px] after:top-0.5 after:h-6 after:w-6",
39+
sm: "h-5 w-9 min-w-9 after:left-px after:top-px after:h-4 after:w-4 rtl:after:right-px",
40+
md: "h-6 w-11 min-w-11 after:left-px after:top-px after:h-5 after:w-5 rtl:after:right-px",
41+
lg: "h-7 w-14 min-w-14 after:left-1 after:top-0.5 after:h-6 after:w-6 rtl:after:right-1",
4242
},
4343
},
4444
});

0 commit comments

Comments
 (0)