feat: add Switch component and showcase

- Introduced a new Switch component with variants and status colors.
- Created a SwitchShowcase component to demonstrate the Switch functionality.
- Updated package.json to include dayjs and rc-component/switch dependencies.
- Added styles for the Switch component in switch.style.css.
- Updated form.style.css to import switch styles.
- Enhanced types for Switch props in types/index.ts.
- Updated globals.css with CSS variables for the Switch component.
This commit is contained in:
Firman Ramdhani
2026-02-02 16:02:45 +07:00
parent a4107e81be
commit 793d1e2b15
11 changed files with 866 additions and 1 deletions
+109
View File
@@ -78,6 +78,9 @@ importers:
'@tailwindcss/vite':
specifier: ^4.1.18
version: 4.1.18(vite@5.4.17)
dayjs:
specifier: ^1.11.19
version: 1.11.19
react:
specifier: ^19.2.3
version: 19.2.3
@@ -170,6 +173,12 @@ importers:
'@rc-component/input-number':
specifier: ^1.6.2
version: 1.6.2(react-dom@19.2.3)(react@19.2.3)
'@rc-component/picker':
specifier: ^1.9.0
version: 1.9.0(dayjs@1.11.19)(react-dom@19.2.3)(react@19.2.3)
'@rc-component/switch':
specifier: ^1.0.3
version: 1.0.3(react-dom@19.2.3)(react@19.2.3)
'@rc-component/textarea':
specifier: ^1.1.2
version: 1.1.2(react-dom@19.2.3)(react@19.2.3)
@@ -179,6 +188,9 @@ importers:
'@tailwindcss/vite':
specifier: ^4.1.18
version: 4.1.18(vite@5.4.17)
dayjs:
specifier: ^1.11.19
version: 1.11.19
react:
specifier: ^19.2.3
version: 19.2.3
@@ -1206,6 +1218,75 @@ packages:
'@babel/runtime': 7.28.4
dev: false
/@rc-component/motion@1.2.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Vx+OL3I1l3HWflc1miXgjeFR9OnStKD8FOMLJCdby3I6HAOi8jo7of7iqF4hqvxQhoP31RTlNk+C+v5QjytAVg==}
peerDependencies:
react: '>=16.9.0'
react-dom: '>=16.9.0'
dependencies:
'@rc-component/util': 1.7.0(react-dom@19.2.3)(react@19.2.3)
clsx: 2.1.1
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/overflow@1.0.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-GSlBeoE0XTBi5cf3zl8Qh7Uqhn7v8RrlJ8ajeVpEkNe94HWy5l5BQ0Mwn2TVUq9gdgbfEMUmTX7tJFAg7mz0Rw==}
peerDependencies:
react: '>=16.9.0'
react-dom: '>=16.9.0'
dependencies:
'@babel/runtime': 7.28.4
'@rc-component/resize-observer': 1.1.1(react-dom@19.2.3)(react@19.2.3)
'@rc-component/util': 1.7.0(react-dom@19.2.3)(react@19.2.3)
clsx: 2.1.1
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/picker@1.9.0(dayjs@1.11.19)(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-OLisdk8AWVCG9goBU1dWzuH5QlBQk8jktmQ6p0/IyBFwdKGwyIZOSjnBYo8hooHiTdl0lU+wGf/OfMtVBw02KQ==}
engines: {node: '>=12.x'}
peerDependencies:
date-fns: '>= 2.x'
dayjs: '>= 1.x'
luxon: '>= 3.x'
moment: '>= 2.x'
react: '>=16.9.0'
react-dom: '>=16.9.0'
peerDependenciesMeta:
date-fns:
optional: true
dayjs:
optional: true
luxon:
optional: true
moment:
optional: true
dependencies:
'@rc-component/overflow': 1.0.0(react-dom@19.2.3)(react@19.2.3)
'@rc-component/resize-observer': 1.1.1(react-dom@19.2.3)(react@19.2.3)
'@rc-component/trigger': 3.9.0(react-dom@19.2.3)(react@19.2.3)
'@rc-component/util': 1.7.0(react-dom@19.2.3)(react@19.2.3)
clsx: 2.1.1
dayjs: 1.11.19
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/portal@2.2.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-oc6FlA+uXCMiwArHsJyHcIkX4q6uKyndrPol2eWX8YPkAnztHOPsFIRtmWG4BMlGE5h7YIRE3NiaJ5VS8Lb1QQ==}
engines: {node: '>=12.x'}
peerDependencies:
react: '>=18.0.0'
react-dom: '>=18.0.0'
dependencies:
'@rc-component/util': 1.7.0(react-dom@19.2.3)(react@19.2.3)
clsx: 2.1.1
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/resize-observer@1.1.1(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-NfXXMmiR+SmUuKE1NwJESzEUYUFWIDUn2uXpxCTOLwiRUUakd62DRNFjRJArgzyFW8S5rsL4aX5XlyIXyC/vRA==}
peerDependencies:
@@ -1217,6 +1298,18 @@ packages:
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/switch@1.0.3(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-Jgi+EbOBquje/XNdofr7xbJQZPYJP+BlPfR0h+WN4zFkdtB2EWqEfvkXJWeipflwjWip0/17rNbxEAqs8hVHfw==}
peerDependencies:
react: '>=16.9.0'
react-dom: '>=16.9.0'
dependencies:
'@rc-component/util': 1.7.0(react-dom@19.2.3)(react@19.2.3)
clsx: 2.1.1
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/textarea@1.1.2(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-9rMUEODWZDMovfScIEHXWlVZuPljZ2pd1LKNjslJVitn4SldEzq5vO1CL3yy3Dnib6zZal2r2DPtjy84VVpF6A==}
peerDependencies:
@@ -1231,6 +1324,22 @@ packages:
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/trigger@3.9.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-X8btpwfrT27AgrZVOz4swclhEHTZcqaHeQMXXBgveagOiakTa36uObXbdwerXffgV8G9dH1fAAE0DHtVQs8EHg==}
engines: {node: '>=8.x'}
peerDependencies:
react: '>=18.0.0'
react-dom: '>=18.0.0'
dependencies:
'@rc-component/motion': 1.2.0(react-dom@19.2.3)(react@19.2.3)
'@rc-component/portal': 2.2.0(react-dom@19.2.3)(react@19.2.3)
'@rc-component/resize-observer': 1.1.1(react-dom@19.2.3)(react@19.2.3)
'@rc-component/util': 1.7.0(react-dom@19.2.3)(react@19.2.3)
clsx: 2.1.1
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
dev: false
/@rc-component/util@1.7.0(react-dom@19.2.3)(react@19.2.3):
resolution: {integrity: sha512-tIvIGj4Vl6fsZFvWSkYw9sAfiCKUXMyhVz6kpKyZbwyZyRPqv2vxYZROdaO1VB4gqTNvUZFXh6i3APUiterw5g==}
peerDependencies: