From 64ac31bacf313eafad414ff9dc7055b2d2d7b737 Mon Sep 17 00:00:00 2001 From: Vasu Singh Date: Thu, 6 Jul 2023 21:52:37 +0530 Subject: [PATCH] feat(component): New radio component (#161) * radio initial * initial radio * Update src/components/Radio/Radio.vue * Update src/components/Radio/Radio.vue * Update docs/components/radio/examples/ListRadio.vue * Update docs/components/radio/examples/LinkRadio.vue * Update docs/components/radio/examples/InlineRadio.vue * Update docs/components/radio/examples/HorizontalListRadio.vue * Update docs/components/radio/examples/DisabledRadio.vue * Update docs/components/radio/examples/DefaultRadio.vue * Update docs/components/radio/examples/BorderedRadio.vue * Update src/components/Radio/Radio.vue --------- Co-authored-by: Ilya Artamonov --- docs/.vitepress/config.ts | 1 + docs/components/radio.md | 132 ++++++++++++++++++ .../radio/examples/BorderedRadio.vue | 17 +++ .../radio/examples/DefaultRadio.vue | 13 ++ .../radio/examples/DisabledRadio.vue | 13 ++ .../radio/examples/HorizontalListRadio.vue | 28 ++++ .../components/radio/examples/InlineRadio.vue | 15 ++ docs/components/radio/examples/LinkRadio.vue | 12 ++ docs/components/radio/examples/ListRadio.vue | 28 ++++ src/components/Radio/Radio.vue | 40 ++++++ .../Radio/composables/useRadioClasses.ts | 20 +++ src/index.ts | 2 + 12 files changed, 321 insertions(+) create mode 100644 docs/components/radio.md create mode 100644 docs/components/radio/examples/BorderedRadio.vue create mode 100644 docs/components/radio/examples/DefaultRadio.vue create mode 100644 docs/components/radio/examples/DisabledRadio.vue create mode 100644 docs/components/radio/examples/HorizontalListRadio.vue create mode 100644 docs/components/radio/examples/InlineRadio.vue create mode 100644 docs/components/radio/examples/LinkRadio.vue create mode 100644 docs/components/radio/examples/ListRadio.vue create mode 100644 src/components/Radio/Radio.vue create mode 100644 src/components/Radio/composables/useRadioClasses.ts diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index b1c0800..3deff50 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -69,6 +69,7 @@ function getFormComponents() { { text: 'Select', link: 'components/select' }, { text: 'Toggle', link: 'components/toggle' }, { text: 'Range', link: 'components/range' }, + { text: 'Radio', link: 'components/radio' }, ] } diff --git a/docs/components/radio.md b/docs/components/radio.md new file mode 100644 index 0000000..6e1118d --- /dev/null +++ b/docs/components/radio.md @@ -0,0 +1,132 @@ + + +# Vue Toggle Radio - Flowbite + +#### Get started with the radio component to let the user choose a single option from multiple options in the form of a circle based on multiple styles and colors + +--- + +:::tip +Original reference: [https://flowbite.com/docs/forms/range/](https://flowbite.com/docs/forms/radio/) +::: + +## Radio examples + +```vue + + + +``` + + + +## Disabled Radio + +```vue + +``` + + + +## Radio list group + +```vue + +``` + + + +## Horizontal list group + +```vue + +``` + + + +## Inline Radio + +```vue + +``` + + + +## Radio with a link + +```vue + +``` + + + +## Bordered Radio + +```vue + +``` + + \ No newline at end of file diff --git a/docs/components/radio/examples/BorderedRadio.vue b/docs/components/radio/examples/BorderedRadio.vue new file mode 100644 index 0000000..b398d51 --- /dev/null +++ b/docs/components/radio/examples/BorderedRadio.vue @@ -0,0 +1,17 @@ + + + diff --git a/docs/components/radio/examples/DefaultRadio.vue b/docs/components/radio/examples/DefaultRadio.vue new file mode 100644 index 0000000..45ff99a --- /dev/null +++ b/docs/components/radio/examples/DefaultRadio.vue @@ -0,0 +1,13 @@ + + + diff --git a/docs/components/radio/examples/DisabledRadio.vue b/docs/components/radio/examples/DisabledRadio.vue new file mode 100644 index 0000000..2b6118c --- /dev/null +++ b/docs/components/radio/examples/DisabledRadio.vue @@ -0,0 +1,13 @@ + + + diff --git a/docs/components/radio/examples/HorizontalListRadio.vue b/docs/components/radio/examples/HorizontalListRadio.vue new file mode 100644 index 0000000..da6183a --- /dev/null +++ b/docs/components/radio/examples/HorizontalListRadio.vue @@ -0,0 +1,28 @@ + + + diff --git a/docs/components/radio/examples/InlineRadio.vue b/docs/components/radio/examples/InlineRadio.vue new file mode 100644 index 0000000..4fd808f --- /dev/null +++ b/docs/components/radio/examples/InlineRadio.vue @@ -0,0 +1,15 @@ + + + diff --git a/docs/components/radio/examples/LinkRadio.vue b/docs/components/radio/examples/LinkRadio.vue new file mode 100644 index 0000000..b7597a7 --- /dev/null +++ b/docs/components/radio/examples/LinkRadio.vue @@ -0,0 +1,12 @@ + + + diff --git a/docs/components/radio/examples/ListRadio.vue b/docs/components/radio/examples/ListRadio.vue new file mode 100644 index 0000000..1827344 --- /dev/null +++ b/docs/components/radio/examples/ListRadio.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/Radio/Radio.vue b/src/components/Radio/Radio.vue new file mode 100644 index 0000000..fc1920b --- /dev/null +++ b/src/components/Radio/Radio.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/components/Radio/composables/useRadioClasses.ts b/src/components/Radio/composables/useRadioClasses.ts new file mode 100644 index 0000000..9fa05fb --- /dev/null +++ b/src/components/Radio/composables/useRadioClasses.ts @@ -0,0 +1,20 @@ +import { computed } from 'vue' + +// Radio +export const radioDefaultClasses = 'w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600' +export const radioLabelClasses = 'm-2 mr-0 text-sm font-medium text-gray-900 dark:text-gray-300' + +export function useRadioClasses() { + const radioClasses = computed(() => { + return radioDefaultClasses + }) + + const labelClasses = computed(() => { + return radioLabelClasses + }) + + return { + radioClasses, + labelClasses, + } +} diff --git a/src/index.ts b/src/index.ts index 2d38517..7f63749 100644 --- a/src/index.ts +++ b/src/index.ts @@ -60,4 +60,6 @@ export { default as Toggle } from './components/Toggle/Toggle.vue' export { default as Range } from './components/Range/Range.vue' +export { default as Radio } from './components/Radio/Radio.vue' + export * from './composables'