Stores, Constants, and Types
Store Exports
useAppStoreuseTabStoreuseThemeStore
Related types:
AppStateTabTabStateColorSchemeThemeColorsThemeState
Constants
RELOAD_PAGE_EVENTACCESS_DENIED_EVENTUNAUTHENTICATED_EVENTSTORAGE_KEY_PREFIX_STORESTORAGE_KEY_SUFFIX_STORESYMBOL_PAGINATIONSYMBOL_SORT
API and Domain Types
Entity identity:
Entity<TId = string>— base interface that only carriesid
Standalone audit field interfaces (use these for composite primary keys or non-id keyed records):
CreationTracked<TId, TDate>—createdAt/createdBy/createdByNameFullTracked<TId, TDate>— extendsCreationTrackedwithupdatedAt/updatedBy/updatedByName
Composed entity interfaces:
CreationAuditedEntity<TId, TDate>—Entity+CreationTrackedFullAuditedEntity<TId, TDate>—Entity+FullTracked
Batch parameter helper:
Many<T>— wraps alist: T[]for batch create / update payloads
User and Menu Types
GenderUserMenuTypeUserMenuUserInfo—detailsis typed via theRegisteraugmentation point (see below)Register— empty interface that projects augment viadeclare moduleto refineUserInfo['details']UserDetails— fallback shape (Record<string, unknown>) whenRegisteris not augmentedOrderSpec
Extending UserInfo.details
UserInfo.details resolves through the Register interface, mirroring the pattern used by @tanstack/react-query for mutationMeta. Augment it once in your project to get strongly typed user attributes everywhere UserInfo flows through the app:
// src/types/vef-augment.d.ts
declare module "@vef-framework-react/starter" {
interface Register {
userDetails: {
department: string;
organization: string;
};
}
}
After this declaration, userInfo.details.department is typed as string across the application without forking the framework.
Router Types
RouterContext
Query Helpers
extractQueryParamsnoopMutationFn