diff --git a/docs/components/toast/examples/ToastExample.vue b/docs/components/toast/examples/ToastExample.vue index 31c80c7..91f1323 100644 --- a/docs/components/toast/examples/ToastExample.vue +++ b/docs/components/toast/examples/ToastExample.vue @@ -1,6 +1,14 @@ ``` diff --git a/src/components/Button/Button.vue b/src/components/Button/Button.vue index e14388b..c26045e 100644 --- a/src/components/Button/Button.vue +++ b/src/components/Button/Button.vue @@ -1,5 +1,5 @@ diff --git a/src/components/Toast/composables/useToastClasses.ts b/src/components/Toast/composables/useToastClasses.ts index ec7ea0d..42c47db 100644 --- a/src/components/Toast/composables/useToastClasses.ts +++ b/src/components/Toast/composables/useToastClasses.ts @@ -1,34 +1,29 @@ import type { Ref } from 'vue' import { computed } from 'vue' -import type { - ThemableChildrenApply, -} from '@/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/types' -import { useFlowbiteThemable } from '@/components/utils/FlowbiteThemable/composables/useFlowbiteThemable' +import type { ToastPreset } from '@/components/Toast/types' -type UseThemableChildrenReturns = { - classes: Ref +type UseToastClassesReturns = { + typeClasses: Ref } -type UseThemableChildrenProps = { - apply: Ref +type UseToastClassesProps = { + type: Ref } -export function useFlowbiteThemableChildrenClasses(props: UseThemableChildrenProps): UseThemableChildrenReturns { +const typeClassesMap: Record = { + danger: 'text-red-500 bg-red-100 dark:bg-red-800 dark:text-red-200', + empty: '', + success: 'text-green-500 bg-green-100 dark:bg-green-800 dark:text-green-200', + warning: 'text-orange-500 bg-orange-100 dark:bg-orange-700 dark:text-orange-200', +} - const { textClasses, borderClasses, backgroundClasses, hoverClasses, disabledClasses, isActive } = useFlowbiteThemable() +export function useToastClasses(props: UseToastClassesProps): UseToastClassesReturns { - const classes = computed(() => { - if(!isActive.value) return '' - const _classes = [] - if(props.apply.value.includes('text')) _classes.push(textClasses) - if(props.apply.value.includes('border')) _classes.push(borderClasses) - if(props.apply.value.includes('background')) _classes.push(backgroundClasses) - if(props.apply.value.includes('hover')) _classes.push(hoverClasses) - if(props.apply.value.includes('disabled')) _classes.push(disabledClasses) - return _classes.join(' ') + const typeClasses = computed(() => { + return typeClassesMap[props.type.value] }) return { - classes, + typeClasses, } } diff --git a/src/components/Toast/types.ts b/src/components/Toast/types.ts index e2cd9b2..68ef43c 100644 --- a/src/components/Toast/types.ts +++ b/src/components/Toast/types.ts @@ -1 +1 @@ -export type ToastPresetIcon = 'success' | 'warning' | 'danger' +export type ToastPreset = 'success' | 'warning' | 'danger' | 'empty' diff --git a/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/FlowbiteThemableChildren.vue b/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/FlowbiteThemableChild.vue similarity index 76% rename from src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/FlowbiteThemableChildren.vue rename to src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/FlowbiteThemableChild.vue index 5459782..5fc5b62 100644 --- a/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/FlowbiteThemableChildren.vue +++ b/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/FlowbiteThemableChild.vue @@ -6,11 +6,11 @@ diff --git a/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/composables/useFlowbiteThemableChildrenClasses.ts b/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/composables/useFlowbiteThemableChildClasses.ts similarity index 84% rename from src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/composables/useFlowbiteThemableChildrenClasses.ts rename to src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/composables/useFlowbiteThemableChildClasses.ts index abe5226..b0fe1de 100644 --- a/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/composables/useFlowbiteThemableChildrenClasses.ts +++ b/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/composables/useFlowbiteThemableChildClasses.ts @@ -5,15 +5,15 @@ import type { } from '../types' import { useFlowbiteThemable } from '../../../composables/useFlowbiteThemable' -type UseThemableChildrenReturns = { +type UseFlowbiteThemableChildReturns = { classes: Ref } -type UseThemableChildrenProps = { +type UseFlowbiteThemableChildProps = { apply: Ref } -export function useFlowbiteThemableChildrenClasses(props: UseThemableChildrenProps): UseThemableChildrenReturns { +export function useFlowbiteThemableChildClasses(props: UseFlowbiteThemableChildProps): UseFlowbiteThemableChildReturns { const { textClasses, borderClasses, backgroundClasses, hoverClasses, disabledClasses, focusClasses, isActive } = useFlowbiteThemable() diff --git a/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/types.ts b/src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/types.ts similarity index 100% rename from src/components/utils/FlowbiteThemable/components/FlowbiteThemableChildren/types.ts rename to src/components/utils/FlowbiteThemable/components/FlowbiteThemableChild/types.ts diff --git a/src/index.ts b/src/index.ts index d4f24ee..7df3dfb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,8 @@ export { default as Tabs } from './components/Tabs/Tabs.vue' export { default as Tab } from './components/Tabs/components/Tab/Tab.vue' export { default as Dropdown } from './components/Dropdown/Dropdown.vue' export { default as FlowbiteThemable } from './components/utils/FlowbiteThemable/FlowbiteThemable.vue' +export { default as FlowbiteThemableChild } from './components/utils/FlowbiteThemable/components/FlowbiteThemableChild/FlowbiteThemableChild.vue' + export { default as Accordion } from './components/Accordion/Accordion.vue' export { default as Avatar } from './components/Avatar/Avatar.vue' export { default as Badge } from './components/Badge/Badge.vue'