diff --git a/apps/web/src/apps/modules/example/example.page.tsx b/apps/web/src/apps/modules/example/example.page.tsx
index c213e97..eff47fa 100644
--- a/apps/web/src/apps/modules/example/example.page.tsx
+++ b/apps/web/src/apps/modules/example/example.page.tsx
@@ -1,11 +1,9 @@
-import FormShowcase from './form-showcase/form-showcase';
-import InputShowCase from './input-showcase';
+import Showcase from './showcase/showcase';
export default function ExamplePage() {
return (
+ {/* 1. VARIANT COMPARISON */}
+
+
+
Checkbox Variants
+
Dua tipe visual utama: Outlined (default) dan Filled.
+
+
+
+
Outlined (Default)
+
+
+
+
+
+
+
+
+
+ {/* 2. STATUS MATRIX (OVERRIDABLE) */}
+
+
+
Status Matrix
+
+ Warna akan berubah otomatis berdasarkan status (Error, Warning, Success, Info).
+ {overrideStatus && (
+ [Overridden by Prop: {overrideStatus}]
+ )}
+
+
+
+ {/* Outlined Status */}
+
+
+
+
+
+
+
+
+ {/* Filled Status */}
+
+
+
+
+
+
+
+
+
+
+ {/* 3. CONTENT & LAYOUT FEATURES */}
+
+
+
Rich Content & States
+
+ Mendukung konten kompleks di dalam label dan berbagai state interaksi.
+
+
+
+ {/* Column A: Complex Labels */}
+
+
Label Variations
+
+
+ Terms of Service
+ I have read and agree to the privacy policy.
+
+
+
Bold Label Text} />
+
+
+ {/* Column B: Interactive States */}
+
+
Disabled States
+
+
+
+
+
+
+
+ {/* Column C: Edge Cases */}
+
+
Layout Config
+
+
+
+ No Label Prop
+
+
+
+
+
+ Live Children Label
+
+
+
+
+
+
+ );
+}
diff --git a/apps/web/src/apps/modules/example/form-showcase/form-showcase.tsx b/apps/web/src/apps/modules/example/showcase/components/form.showcase.tsx
similarity index 98%
rename from apps/web/src/apps/modules/example/form-showcase/form-showcase.tsx
rename to apps/web/src/apps/modules/example/showcase/components/form.showcase.tsx
index 2e42290..77e1192 100644
--- a/apps/web/src/apps/modules/example/form-showcase/form-showcase.tsx
+++ b/apps/web/src/apps/modules/example/showcase/components/form.showcase.tsx
@@ -1,5 +1,4 @@
import { Form, Input, InputPassword } from '@repo/ui';
-import React from 'react';
// --- 2. Main Showcase Component ---
export default function FormShowcase() {
const [form] = Form.useForm();
diff --git a/apps/web/src/apps/modules/example/input-showcase/group-component.tsx b/apps/web/src/apps/modules/example/showcase/components/input.showcase.tsx
similarity index 98%
rename from apps/web/src/apps/modules/example/input-showcase/group-component.tsx
rename to apps/web/src/apps/modules/example/showcase/components/input.showcase.tsx
index 92fd1cf..495c4c7 100644
--- a/apps/web/src/apps/modules/example/input-showcase/group-component.tsx
+++ b/apps/web/src/apps/modules/example/showcase/components/input.showcase.tsx
@@ -8,9 +8,9 @@ const Label = ({ children }: { children: React.ReactNode }) => (
// Helper untuk prefix/suffix visual
const Fix = ({ children }: { children: React.ReactNode }) =>
+
{/* --- SECTION 1: OUTLINED VARIANT (DEFAULT) --- */}
Outlined Variant (Standard)
diff --git a/apps/web/src/apps/modules/example/input-showcase/index.tsx b/apps/web/src/apps/modules/example/showcase/showcase.tsx
similarity index 87%
rename from apps/web/src/apps/modules/example/input-showcase/index.tsx
rename to apps/web/src/apps/modules/example/showcase/showcase.tsx
index 01ee9ed..511525e 100644
--- a/apps/web/src/apps/modules/example/input-showcase/index.tsx
+++ b/apps/web/src/apps/modules/example/showcase/showcase.tsx
@@ -1,13 +1,14 @@
import { useState } from 'react';
-import GroupComponent from './group-component';
import { InputStatusType } from '@repo/ui';
+import CheckboxShowcase from './components/checkbox.showcase';
+import InputShowCase from './components/input.showcase';
-export default function InputShowCase() {
+export default function Showcase() {
// State untuk menyimpan status yang dipilih
- const [selectedStatus, setSelectedStatus] = useState('normal');
+ const [selectedStatus, setSelectedStatus] = useState('default');
const statuses: { label: string; value: InputStatusType; color: string }[] = [
- { label: 'Normal', value: 'normal', color: 'bg-gray-500' },
+ { label: 'Default', value: 'default', color: 'bg-gray-500' },
{ label: 'Error', value: 'error', color: 'bg-red-500' },
{ label: 'Warning', value: 'warning', color: 'bg-amber-500' },
{ label: 'Success', value: 'success', color: 'bg-emerald-500' },
@@ -63,7 +64,10 @@ export default function InputShowCase() {
Active Status: {selectedStatus}
-
+
+
+
+
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 95440eb..6799f43 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -12,6 +12,7 @@
"test:watch": "vitest --watch"
},
"dependencies": {
+ "@rc-component/checkbox": "^1.0.1",
"@rc-component/form": "^1.6.2",
"@rc-component/input": "^1.1.2",
"@rc-component/input-number": "^1.6.2",
diff --git a/packages/ui/src/components/forms/checkbox/checkbox.component.tsx b/packages/ui/src/components/forms/checkbox/checkbox.component.tsx
new file mode 100644
index 0000000..1a7a2b0
--- /dev/null
+++ b/packages/ui/src/components/forms/checkbox/checkbox.component.tsx
@@ -0,0 +1,34 @@
+import RcCheckbox from '@rc-component/checkbox';
+import { CheckboxProps } from '../types';
+import { forwardRef } from 'react';
+import { InputRef } from '@rc-component/input/lib/interface';
+
+export const Checkbox = forwardRef