+
+
@@ -14,4 +19,5 @@ import { ref } from 'vue'
import { FwbCheckbox } from '../../../../src/index'
const check = ref(false)
+const checked = ref(true)
diff --git a/docs/components/checkbox/examples/FwbCheckboxExampleGroup.vue b/docs/components/checkbox/examples/FwbCheckboxExampleGroup.vue
new file mode 100644
index 00000000..1a7cd78b
--- /dev/null
+++ b/docs/components/checkbox/examples/FwbCheckboxExampleGroup.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+ Selected fruits: {{ selectedFruits }}
+
+
+
+ Selected planets: {{ selectedPlanets }}
+
+
+
+
+
+
diff --git a/docs/components/checkbox/examples/FwbCheckboxExampleHelper.vue b/docs/components/checkbox/examples/FwbCheckboxExampleHelper.vue
new file mode 100644
index 00000000..cbfc04e4
--- /dev/null
+++ b/docs/components/checkbox/examples/FwbCheckboxExampleHelper.vue
@@ -0,0 +1,20 @@
+
+
+
+
+ For orders shipped from $25 in books or $29 in other categories.
+
+
+
+
+
+
diff --git a/docs/components/checkbox/examples/FwbCheckboxExampleLink.vue b/docs/components/checkbox/examples/FwbCheckboxExampleLink.vue
index 5766633f..1846d2d4 100644
--- a/docs/components/checkbox/examples/FwbCheckboxExampleLink.vue
+++ b/docs/components/checkbox/examples/FwbCheckboxExampleLink.vue
@@ -1,9 +1,15 @@
-
-
- I agree with the terms and conditions.
-
-
+
+
+ I agree with the
+
+ terms and conditions.
+
+
+
diff --git a/src/components/FwbCheckbox/composables/useCheckboxClasses.ts b/src/components/FwbCheckbox/composables/useCheckboxClasses.ts
index 71f8140f..27468527 100644
--- a/src/components/FwbCheckbox/composables/useCheckboxClasses.ts
+++ b/src/components/FwbCheckbox/composables/useCheckboxClasses.ts
@@ -1,19 +1,49 @@
-import { computed } from 'vue'
+import { computed, type Ref } from 'vue'
-import { simplifyTailwindClasses } from '@/utils/simplifyTailwindClasses'
+import { useMergeClasses } from '@/composables/useMergeClasses'
-// LABEL
-const defaultLabelClasses = 'block text-sm font-medium text-gray-900 dark:text-gray-300'
+const defaultLabelClasses = 'text-sm font-medium text-gray-900 dark:text-gray-300 mr-1'
+const defaultCheckboxClasses = 'mr-2 w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded-sm 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'
+const defaultHelperClasses = 'ml-6 text-xs font-normal text-gray-500 dark:text-gray-300'
-// CHECKBOX
-const defaultCheckboxClasses = 'w-4 h-4 rounded bg-gray-100 border-gray-300 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-600 dark:border-gray-500'
+const disabledLabelClasses = 'text-gray-400 dark:text-gray-500'
-export function useCheckboxClasses () {
- const checkboxClasses = computed(() => simplifyTailwindClasses(defaultCheckboxClasses))
- const labelClasses = computed(() => defaultLabelClasses)
+export type UseCheckboxClassesProps = {
+ class: Ref
>
+ disabled: Ref
+ labelClass: Ref>
+ wrapperClass: Ref>
+}
+
+export function useCheckboxClasses (props: UseCheckboxClassesProps): {
+ checkboxClass: Ref
+ labelClass: Ref
+ helperMessageClass: Ref
+ wrapperClass: Ref
+} {
+ const labelClass = computed(() => useMergeClasses([
+ defaultLabelClasses,
+ props.disabled.value ? disabledLabelClasses : '',
+ props.labelClass.value,
+ ]))
+
+ const checkboxClass = computed(() => useMergeClasses([
+ defaultCheckboxClasses,
+ props.class.value,
+ ]))
+
+ const helperMessageClass = computed(() => useMergeClasses([
+ defaultHelperClasses,
+ ]))
+
+ const wrapperClass = computed(() => useMergeClasses([
+ props.wrapperClass.value,
+ ]))
return {
- checkboxClasses,
- labelClasses,
+ checkboxClass,
+ helperMessageClass,
+ labelClass,
+ wrapperClass,
}
}