diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
index 657f261..b1c0800 100644
--- a/docs/.vitepress/config.ts
+++ b/docs/.vitepress/config.ts
@@ -68,6 +68,7 @@ function getFormComponents() {
{ text: 'Checkbox', link: 'components/checkbox' },
{ text: 'Select', link: 'components/select' },
{ text: 'Toggle', link: 'components/toggle' },
+ { text: 'Range', link: 'components/range' },
]
}
diff --git a/docs/components/range.md b/docs/components/range.md
new file mode 100644
index 0000000..d1d4fdf
--- /dev/null
+++ b/docs/components/range.md
@@ -0,0 +1,79 @@
+
+
+# Vue Toggle Range - Flowbite
+#### Get started with the range component to receive a number from the user anywhere from 1 to 100 by sliding form control horizontally based on multiple options
+
+---
+
+:::tip
+Original reference: [https://flowbite.com/docs/forms/range/](https://flowbite.com/docs/forms/range/)
+:::
+
+## Default
+
+```vue
+
+
+
+
+
+
+```
+
+
+
+## Disabled state
+
+```vue
+
+
+
+
+```
+
+
+
+## Min and Max
+
+```vue
+
+
+
+```
+
+
+
+## Steps
+
+```vue
+
+
+
+```
+
+
+
+## Sizes
+
+```vue
+
+
+
+
+
+
+
+```
+
+
diff --git a/docs/components/range/examples/DefaultRange.vue b/docs/components/range/examples/DefaultRange.vue
new file mode 100644
index 0000000..f7baf2b
--- /dev/null
+++ b/docs/components/range/examples/DefaultRange.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/docs/components/range/examples/DisabledRange.vue b/docs/components/range/examples/DisabledRange.vue
new file mode 100644
index 0000000..5f6fff4
--- /dev/null
+++ b/docs/components/range/examples/DisabledRange.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/docs/components/range/examples/MinMaxRange.vue b/docs/components/range/examples/MinMaxRange.vue
new file mode 100644
index 0000000..c01eda4
--- /dev/null
+++ b/docs/components/range/examples/MinMaxRange.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/docs/components/range/examples/SizeRange.vue b/docs/components/range/examples/SizeRange.vue
new file mode 100644
index 0000000..5174030
--- /dev/null
+++ b/docs/components/range/examples/SizeRange.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/docs/components/range/examples/StepsRange.vue b/docs/components/range/examples/StepsRange.vue
new file mode 100644
index 0000000..9d85db6
--- /dev/null
+++ b/docs/components/range/examples/StepsRange.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/src/components/Range/Range.vue b/src/components/Range/Range.vue
new file mode 100644
index 0000000..4c0caf4
--- /dev/null
+++ b/src/components/Range/Range.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Range/composables/useRangeClasses.ts b/src/components/Range/composables/useRangeClasses.ts
new file mode 100644
index 0000000..c797e94
--- /dev/null
+++ b/src/components/Range/composables/useRangeClasses.ts
@@ -0,0 +1,34 @@
+import { simplifyTailwindClasses } from '@/utils/simplifyTailwindClasses'
+import { computed } from 'vue'
+import type { Ref } from 'vue'
+import type { InputSize } from '@/components/Input/types'
+
+// Range
+const rangeDefaultClasses = 'w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700'
+const rangeLabelClasses = 'block mb-2 text-sm font-medium text-gray-900 dark:text-white'
+
+const rangeSizeClasses: Record = {
+ lg: 'h-3 range-lg',
+ md: 'h-2 range-md',
+ sm: 'h-1 range-sm',
+}
+
+export type UseRangeClassesProps = {
+ size: Ref
+ disabled: Ref
+}
+
+export function useRangeClasses(props: UseRangeClassesProps) {
+ const rangeClasses = computed(() => {
+ return simplifyTailwindClasses(rangeDefaultClasses, rangeSizeClasses[props.size.value])
+ })
+
+ const labelClasses = computed(() => {
+ return rangeLabelClasses
+ })
+
+ return {
+ rangeClasses,
+ labelClasses,
+ }
+}
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 0ccb236..2d38517 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -58,4 +58,6 @@ export { default as Select } from './components/Select/Select.vue'
export { default as Toggle } from './components/Toggle/Toggle.vue'
+export { default as Range } from './components/Range/Range.vue'
+
export * from './composables'