diff --git a/src/docs/data/checkbox.ts b/src/docs/data/checkbox.ts
new file mode 100644
index 0000000..2a6ec12
--- /dev/null
+++ b/src/docs/data/checkbox.ts
@@ -0,0 +1,32 @@
+export const checkboxDefault = `
+import { Checkbox } from 'kampsy-ui';
+let value = $state(false);
+
+option 1`;
+
+export const checkboxDisabled = `
+import { Checkbox } from 'kampsy-ui';
+
+
+ Disabled
+ Disabled Checked
+ Disabled Indeterminate
+
`;
+
+
+export const checkboxIndeterminate = `
+import { Checkbox } from 'kampsy-ui';
+
+option 1`;
+
+export const checkboxItems = `
+import { Checkbox } from 'kampsy-ui';
+
+let items = $state(['avatar', 'choicebox']);
+
+
+ avatar
+ button
+ calendar
+ choicebox
+
`;
\ No newline at end of file
diff --git a/src/docs/utils/data.ts b/src/docs/utils/data.ts
index 8ec7318..d27b9b6 100644
--- a/src/docs/utils/data.ts
+++ b/src/docs/utils/data.ts
@@ -45,10 +45,14 @@ export const asideData: Array = [
},
{
name: 'calendar',
- url: '/calendar',
+ url: '/calendar'
+ },
+ {
+ name: 'checkbox',
+ url: '/checkbox',
badge: {
- name: 'updated',
- variant: 'purple'
+ name: 'new',
+ variant: 'green'
}
},
{
@@ -69,11 +73,7 @@ export const asideData: Array = [
},
{
name: 'input',
- url: '/input',
- badge: {
- name: 'updated',
- variant: 'purple'
- }
+ url: '/input'
},
{
name: 'menu',
@@ -81,11 +81,7 @@ export const asideData: Array = [
},
{
name: 'modal',
- url: '/modal',
- badge: {
- name: 'new',
- variant: 'green'
- }
+ url: '/modal'
},
{
name: 'note',
@@ -133,19 +129,11 @@ export const asideData: Array = [
},
{
name: 'text',
- url: '/text',
- badge: {
- name: 'new',
- variant: 'green'
- }
+ url: '/text'
},
{
name: 'textarea',
- url: '/textarea',
- badge: {
- name: 'updated',
- variant: 'purple'
- }
+ url: '/textarea'
},
{
name: 'theme switcher',
diff --git a/src/lib/checkbox/checkbox.svelte b/src/lib/checkbox/checkbox.svelte
new file mode 100644
index 0000000..8d944ec
--- /dev/null
+++ b/src/lib/checkbox/checkbox.svelte
@@ -0,0 +1,123 @@
+
+
+
+
+
diff --git a/src/lib/icons/check-square-fill.svelte b/src/lib/icons/check-square-fill.svelte
new file mode 100644
index 0000000..2ebaa09
--- /dev/null
+++ b/src/lib/icons/check-square-fill.svelte
@@ -0,0 +1,14 @@
+
diff --git a/src/lib/icons/index.ts b/src/lib/icons/index.ts
index 47afc13..55f9990 100644
--- a/src/lib/icons/index.ts
+++ b/src/lib/icons/index.ts
@@ -24,6 +24,7 @@ export { default as GridSquare } from './grid-square.svelte'
export { default as ListUnordered } from './list-unordered.svelte'
export { default as Check } from './check.svelte'
export { default as CheckSquare } from './check-square.svelte'
+export { default as CheckSquareFill } from './check-square-fill.svelte'
export { default as Hook } from './hook.svelte'
export { default as Webhook } from './webhook.svelte'
export { default as InformationFillSmall } from './information-fill-small.svelte'
@@ -51,4 +52,5 @@ export { default as Accessibility } from './accessibility.svelte'
export { default as MenuAlt } from './menu-alt.svelte'
export { default as Cross } from './cross.svelte'
export { default as Star } from './star.svelte'
-export { default as StarFill } from './star-fill.svelte'
\ No newline at end of file
+export { default as StarFill } from './star-fill.svelte'
+export { default as Minus } from './minus.svelte'
\ No newline at end of file
diff --git a/src/lib/icons/minus.svelte b/src/lib/icons/minus.svelte
new file mode 100644
index 0000000..55fe37d
--- /dev/null
+++ b/src/lib/icons/minus.svelte
@@ -0,0 +1,14 @@
+
diff --git a/src/lib/index.ts b/src/lib/index.ts
index 7856c05..279a465 100644
--- a/src/lib/index.ts
+++ b/src/lib/index.ts
@@ -15,6 +15,9 @@ export { default as Button } from './button/button.svelte';
// Calendar
export { default as Calendar } from './calendar/calendar.svelte'
+// Checkbox
+export {default as Checkbox} from './checkbox/checkbox.svelte'
+
// Choicebox
export * as Choicebox from './choicebox/index.js'
diff --git a/src/routes/checkbox/+page.svelte b/src/routes/checkbox/+page.svelte
new file mode 100644
index 0000000..93b97b1
--- /dev/null
+++ b/src/routes/checkbox/+page.svelte
@@ -0,0 +1,157 @@
+
+
+
+ Checkbox
+
+
+{#snippet checkbox()}
+
+
+ Checkbox
+
+
+ A control that toggles between two options, checked or unchecked.
+
+
+{/snippet}
+
+{#snippet demoAndCode(demo: Snippet, code: string)}
+
+{/snippet}
+
+{#snippet defaultCheckbox()}
+
+
+
+ {#snippet demo()}
+
+ option 1
+
+ {/snippet}
+ {@render demoAndCode(demo, checkboxDefault)}
+
+
+{/snippet}
+
+{#snippet disabledCheckbox()}
+
+
+
+ {#snippet demo()}
+
+ Disabled
+ Disabled Checked
+ Disabled Indeterminate
+
+ {/snippet}
+ {@render demoAndCode(demo, checkboxDisabled)}
+
+
+{/snippet}
+
+{#snippet indeterminate()}
+
+
+
+ {#snippet demo()}
+
+ option 1
+
+ {/snippet}
+ {@render demoAndCode(demo, checkboxIndeterminate)}
+
+
+{/snippet}
+
+{#snippet itemsSnip()}
+
+
+
+ {#snippet demo()}
+
+ avatar
+ button
+ calendar
+ choicebox
+
+ {/snippet}
+ {@render demoAndCode(demo, checkboxItems)}
+
+
+{/snippet}
+
+{#snippet prevAndNext()}
+
+
+
+{/snippet}
+
+{#snippet cont()}
+ {@render checkbox()}
+ {@render defaultCheckbox()}
+ {@render disabledCheckbox()}
+ {@render indeterminate()}
+ {@render itemsSnip()}
+ {@render prevAndNext()}
+{/snippet}
+
+{#snippet aside()}
+
+{/snippet}
+
+