Appearance
Types Documentation
File Information
- Path:
app/types/ - Purpose: Centralized TypeScript type definitions
Overview
This section documents TypeScript type definitions in the Collage Brand Portal. All TypeScript interfaces are centralized in app/types/ and should be imported from ~/types.
Type Structure
types/
├── index.ts # Main export file (import all types from here)
├── api.ts # API-related interfaces
├── api.d.ts # API global declarations
├── auth.d.ts # Auth module declarations
├── analytics.ts # Analytics payload interfaces
├── cards.ts # Card component interfaces
├── common.ts # Common/shared interfaces
├── components.ts # Component props/emits interfaces
├── composables.ts # Composable return type interfaces
├── fetch.ts # Fetch client interfaces
├── layouts.ts # Layout composable interfaces
├── pages.ts # Page composable interfaces
├── search.ts # Search-related interfaces
├── selection.ts # Toggle selection interfaces
├── snackbar.ts # Snackbar component types
└── stores.ts # Store-related interfacesType Documentation
Core Types
- Common Types - Shared interfaces used across the application
- Store Types - Pinia store state interfaces
- API Types - API request/response interfaces
Component Types
- Component Types - Component props and emits interfaces
- Card Types - Card component interfaces (FolderCard, CollageCard, AssetContainer)
Composable Types
- Composable Types - Composable return type interfaces
- Page Types - Page composable interfaces
- Layout Types - Layout composable interfaces
Feature Types
- Search Types - Search-related interfaces
- Selection Types - Toggle selection interfaces
- Analytics Types - Analytics tracking interfaces
- Snackbar Types - Snackbar notification types
- Fetch Types - Fetch client interfaces
Declaration Files
- Type Declarations - Global type augmentations (api.d.ts, auth.d.ts)
Type Organization
Main Export (index.ts)
Always import types from here:
typescript
import type { User, Asset, Folder } from '~/types'Re-exports all types from individual files for convenience.
File Path: app/types/index.ts
Documentation: See individual type files above
Common Types (common.ts)
Shared interfaces used across the application:
Asset- Asset data structureFolder- Folder data structureFileItem- File item structureFilterItem- Filter item structureSortField,SortDirection- Sorting typesViewMode- View mode type- And more...
File Path: app/types/common.ts
Documentation: Common Types
Store Types (stores.ts)
Store-related interfaces:
User- User data structureBanner- Banner data structureTile- Tile data structureFile- File data structureDashboardData- Dashboard metricsCacheOptions- Cache configurationAppDataState- App data store stateDownloadItem- Download item structureDownloaderState- Download store state
File Path: app/types/stores.ts
Documentation: Store Types
API Types (api.ts)
API request/response interfaces:
ApiResponse<T>- Generic API responseLoginResponse- Login responseAccountStatusResponse- Account status responseAnnouncement- Announcement structure- And more...
File Path: app/types/api.ts
Documentation: API Types
Component Types (components.ts)
Component props and emits interfaces:
AssetCardProps- AssetCard component propsShareAssetDialogProps- Share dialog propsBreadCrumbsProps- Breadcrumbs propsViewToggleProps- View toggle props- And more...
File Path: app/types/components.ts
Documentation: Component Types
Composable Types (composables.ts)
Composable return type interfaces:
UseFolderDetailsReturn- useFolderDetails return typeLoginCredentials- Login credentialsWorkspace- Workspace dataUserAgentAndLocation- User agent and locationUseCachedViewModeReturn- View mode cache return type- And more...
File Path: app/types/composables.ts
Documentation: Composable Types
Page Types (pages.ts)
Page composable interfaces:
ShareItem- Share link itemFoldersPageFolder- Folder data for folders pageUseFoldersReturn- useFolders return typeCollage- Collage data structureSearchDigitalAsset- Search result assetExternalSharedAsset- External shared asset- Form data types (ResetPassword, ForgotPassword, GeneratePassword)
- And more...
File Path: app/types/pages.ts
Documentation: Page Types
Search Types (search.ts)
Search-related interfaces:
SearchFilterObject- Search filter structureSearchTag- Search tag structureSearchAssetsDigitalAsset- Search result assetSearchFilterProps- Search filter component propsSearchTableHeaderColumn- Table header column- And more...
File Path: app/types/search.ts
Documentation: Search Types
Card Types (cards.ts)
Card component interfaces:
FolderCardFolder- Folder card dataFolderCardProps- Folder card propsCollageCardCollage- Collage card dataCollageCardProps- Collage card propsAssetContainerProps- Asset container props- And more...
File Path: app/types/cards.ts
Documentation: Card Types
Layout Types (layouts.ts)
Layout composable interfaces:
MenuRoute- Menu route structureCachedViewMode- View mode typeUseCachedViewModeOptions- View mode cache options
File Path: app/types/layouts.ts
Documentation: Layout Types
Selection Types (selection.ts)
Toggle selection interfaces:
SelectableItem- Base selectable itemSelectableFileItem- Selectable fileSelectableFolderItem- Selectable folderFileSelectionContext- File selection contextFolderSelectionContext- Folder selection contextRegularPageType- Page type identifier- And more...
File Path: app/types/selection.ts
Documentation: Selection Types
Analytics Types (analytics.ts)
Analytics interfaces:
AnalyticsPayload- Analytics event payloadAnalyticsState- Analytics store stateBrowserOsResponse- Browser/OS responseTransactionResponse- Transaction response
File Path: app/types/analytics.ts
Documentation: Analytics Types
Fetch Types (fetch.ts)
Fetch client interfaces:
FetchConfig- Fetch configurationFetchResponse<T>- Fetch response wrapperFetchRequestInterceptor- Request interceptorFetchResponseInterceptor- Response interceptorFetchNuxtContext- Nuxt context structure
File Path: app/types/fetch.ts
Documentation: Fetch Types
Snackbar Types (snackbar.ts)
Snackbar component types and constants:
SnackbarColor- Color type ('success' | 'error' | 'warning' | 'info')SnackbarOptions- Snackbar optionsSnackbarMethods- Snackbar methods interfaceSNACKBAR_COLORS- Color constants
File Path: app/types/snackbar.ts
Documentation: Snackbar Types
Type Declarations (api.d.ts, auth.d.ts)
Global type augmentations:
- Global
$apideclaration - Nuxt config auth module types
- Nuxt app instance types
- Vue component properties types
File Path: app/types/api.d.ts, app/types/auth.d.ts
Documentation: Type Declarations
Type Usage Patterns
Importing Types
typescript
// ✅ Correct - Import from centralized types
import type { User, Asset, Folder } from '~/types'
// ❌ Wrong - Don't define interfaces locally
export interface User { ... }Component Props
typescript
<script setup lang="ts">
import type { AssetCardProps } from '~/types'
const props = defineProps<AssetCardProps>()
</script>Composable Return Types
typescript
import type { UseFolderDetailsReturn } from '~/types'
export function useFolderDetails(): UseFolderDetailsReturn {
// Implementation
}Best Practices
- Centralized Types: Always define types in
app/types/ - Import from Index: Import from
~/types(index.ts) - No Local Types: Don't define interfaces in component/composable files
- Type Safety: Use TypeScript types everywhere
- Descriptive Names: Use clear, descriptive type names
- Documentation: Add JSDoc comments for complex types
- Consistency: Follow existing type patterns
- Reusability: Create reusable generic types
- Organization: Keep related types together
- Exports: Export all types through index.ts
Type Configuration
The types/** directory is excluded from Nuxt's auto-imports configuration to prevent duplicate import warnings. Types should always be explicitly imported from ~/types rather than being auto-imported.