pages._explore.sections.basic-usage.title

html
<div> <BaseButton text="Open Modal" :color="BaseButtonColors.PRIMARY" @triggered="fnToggleUIActivityState('basic-modal')" /> <Modal item-key="basic-modal" > <div class="p-6"> <Text text="Basic Modal" :size="TextSizes.LG" :weight="TextWeights.BOLD" class="mb-4" /> <Text text="This is a basic modal with some content." class="mb-4" /> </div> </Modal> </div>
typescript
<script setup lang="ts"> import { BaseButtonColors } from '#core-types/components/base/base-button' import { TextSizes, TextWeights } from '#core-types/components/presentational/text' const { fnToggleUIActivityState } = useUIState() </script>

pages._explore.sections.complex-usage.title

html
<div class="space-y-4"> <div class="flex gap-2 flex-wrap"> <BaseButton text="Confirmation Modal" :color="BaseButtonColors.PRIMARY" @triggered="fnToggleUIActivityState('confirm-modal')" /> <BaseButton text="Form Modal" :color="BaseButtonColors.PRIMARY" @triggered="fnToggleUIActivityState('form-modal')" /> <BaseButton text="Large Content Modal" :color="BaseButtonColors.PRIMARY" @triggered="fnToggleUIActivityState('content-modal')" /> </div> <!-- Confirmation Modal --> <Modal item-key="confirm-modal" content-size-classes="w-96" :content-position="BaseOverlayContentPositionOptions.CENTER" > <div class="p-6"> <div class="flex items-center mb-4"> <Icon name="solar:danger-circle-bold" :color="IconColors.WARNING" :size="IconSizes.LG" class="mr-3" /> <Text text="Confirm Action" :size="TextSizes.LG" :weight="TextWeights.BOLD" /> </div> <Text text="Are you sure you want to delete this item? This action cannot be undone." class="mb-6" /> <div class="flex gap-2 justify-end"> <BaseButton text="Cancel" :color="BaseButtonColors.SURFACE_RAISED" @triggered="fnToggleUIActivityState('confirm-modal')" /> <BaseButton text="Delete" :color="BaseButtonColors.ERROR" /> </div> </div> </Modal> <!-- Form Modal --> <Modal item-key="form-modal" content-size-classes="w-full max-w-md" > <div class="p-6"> <Text text="User Information" :size="TextSizes.LG" :weight="TextWeights.BOLD" class="mb-6" /> <div class="space-y-4"> <Input v-model="userForm.name" label="Name" placeholder="Enter your name" /> <Input v-model="userForm.email" label="Email" placeholder="Enter your email" type="email" /> <Textarea v-model="userForm.bio" label="Bio" placeholder="Tell us about yourself..." /> <div class="space-y-2"> <Text text="Preferences:" :weight="TextWeights.MEDIUM" /> <div class="flex items-center gap-4"> <Toggle v-model="userForm.newsletter" /> <Text text="Subscribe to newsletter" /> </div> </div> </div> <div class="flex gap-2 justify-end mt-6"> <BaseButton text="Cancel" :color="BaseButtonColors.SURFACE_RAISED" @triggered="fnToggleUIActivityState('form-modal')" /> <BaseButton text="Save" :color="BaseButtonColors.SUCCESS" /> </div> </div> </Modal> <!-- Large Content Modal --> <Modal item-key="content-modal" content-size-classes="w-full max-w-4xl h-3/4" > <div class="h-full flex flex-col"> <div class="p-6 border-b"> <div class="flex items-center justify-between"> <Text text="Documentation" :size="TextSizes.LG" :weight="TextWeights.BOLD" /> <BaseButton text="Close" :color="BaseButtonColors.SURFACE_RAISED" @triggered="fnToggleUIActivityState('content-modal')" /> </div> </div> <Content :scrollbar="true" class="flex-1"> <div class="p-6 space-y-6"> <div v-for="section in documentationSections" :key="section.id"> <Text :text="section.title" :size="TextSizes.LG" :weight="TextWeights.BOLD" class="mb-3" /> <Text :text="section.content" class="mb-4" /> </div> </div> </Content> </div> </Modal> </div>
typescript
<script setup lang="ts"> import { BaseButtonColors } from '#core-types/components/base/base-button' import { BaseOverlayContentPositionOptions } from '#core-types/components/base/base-overlay' import { IconColors, IconSizes } from '#core-types/components/media/icon' import { TextSizes, TextWeights } from '#core-types/components/presentational/text' const { stConfirmModalOpen, stFormModalOpen, stContentModalOpen } = useModalState() const userForm = ref({ name: '', email: '', bio: '', newsletter: false }) const documentationSections = ref([ { id: 1, title: 'Getting Started', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' }, { id: 2, title: 'Advanced Usage', content: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.' }, { id: 3, title: 'Best Practices', content: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.' } ]) </script>

pages._explore.sections.props.title

Prop
Default
Type
itemKey""string
backdropClassesdefaultBaseOverlayProps.backdropClassesstring
contentPositionBaseOverlayContentPositionOptions.CENTERBaseOverlayContentPositionOptions
contentClasses"transition-all duration-400..."string
contentSizeClasses"size-50%"string
toggleEffectBaseOverlayToggleEffects.FADEBaseOverlayToggleEffects

pages._explore.sections.types.title

Name
Type
Options
ModalPropsinterfaceMain props interface for Modal component
BaseOverlayContentPositionOptionsenumPosition options for modal content
BaseOverlayToggleEffectsenumAnimation effects for modal transitions

pages._explore.sections.slots.title

Slot
Type
defaultModal content to be displayed