// Import styles import type { App, Plugin } from 'vue' import './style.css' // Import all components (use relative paths so consumers don't need our TS alias) import FdsBlockAlert from './components/Blocks/FdsBlockAlert/FdsBlockAlert.vue' import FdsBlockContent from './components/Blocks/FdsBlockContent/FdsBlockContent.vue' import FdsBlockExpander from './components/Blocks/FdsBlockExpander/FdsBlockExpander.vue' import FdsBlockInfo from './components/Blocks/FdsBlockInfo/FdsBlockInfo.vue' import FdsBlockLink from './components/Blocks/FdsBlockLink/FdsBlockLink.vue' import FdsButtonCopy from './components/Buttons/FdsButtonCopy/FdsButtonCopy.vue' import FdsButtonDownload from './components/Buttons/FdsButtonDownload/FdsButtonDownload.vue' import FdsButtonIcon from './components/Buttons/FdsButtonIcon/FdsButtonIcon.vue' import FdsButtonMinor from './components/Buttons/FdsButtonMinor/FdsButtonMinor.vue' import FdsButtonPrimary from './components/Buttons/FdsButtonPrimary/FdsButtonPrimary.vue' import FdsButtonSecondary from './components/Buttons/FdsButtonSecondary/FdsButtonSecondary.vue' import FdsButtonTertiary from './components/Buttons/FdsButtonTertiary/FdsButtonTertiary.vue' import FdsDevMode from './components/FdsDevMode/FdsDevMode.vue' import FdsExitModal from './components/FdsExitModal/FdsExitModal.vue' import FdsIcon from './components/FdsIcon/FdsIcon.vue' import FdsDrawer from './components/FdsDrawer/FdsDrawer.vue' import FdsModal from './components/FdsModal/FdsModal.vue' import FdsPagination from './components/FdsPagination/FdsPagination.vue' import FdsPopover from './components/FdsPopover/FdsPopover.vue' import FdsSearchSelect from './components/FdsSearchSelect/FdsSearchSelect.vue' import FdsSearchSelectPro from './components/FdsSearchSelectPro/FdsSearchSelectPro.vue' import FdsSpinner from './components/FdsSpinner/FdsSpinner.vue' import FdsSticker from './components/FdsSticker/FdsSticker.vue' import FdsTreeView from './components/FdsTreeView/FdsTreeView.vue' import FdsTruncatedText from './components/FdsTruncatedText/FdsTruncatedText.vue' import FdsWeekCalendar from './components/FdsWeekCalendar/FdsWeekCalendar.vue' import FdsWizard from './components/FdsWizard/FdsWizard.vue' import FdsCheckbox from './components/Form/FdsCheckbox/FdsCheckbox.vue' import FdsInput from './components/Form/FdsInput/FdsInput.vue' import FdsPhonenumber from './components/Form/FdsPhonenumber/FdsPhonenumber.vue' import FdsSsn from './components/Form/FdsSsn/FdsSsn.vue' import FdsRadio from './components/Form/FdsRadio/FdsRadio.vue' import FdsSelect from './components/Form/FdsSelect/FdsSelect.vue' import FdsTextarea from './components/Form/FdsTextarea/FdsTextarea.vue' import FdsTable from './components/Table/FdsTable/FdsTable.vue' import FdsTableHead from './components/Table/FdsTableHead/FdsTableHead.vue' import FdsTabs from './components/Tabs/FdsTabs/FdsTabs.vue' import FdsTabsItem from './components/Tabs/FdsTabsItem/FdsTabsItem.vue' import FdsH1 from './components/Typography/FdsH1/FdsH1.vue' import FdsH2 from './components/Typography/FdsH2/FdsH2.vue' import FdsH3 from './components/Typography/FdsH3/FdsH3.vue' import FdsHr from './components/Typography/FdsHr/FdsHr.vue' import FdsLabel from './components/Typography/FdsLabel/FdsLabel.vue' import FdsLead from './components/Typography/FdsLead/FdsLead.vue' import FdsListHeading from './components/Typography/FdsListHeading/FdsListHeading.vue' import FdsMeta from './components/Typography/FdsMeta/FdsMeta.vue' // Import composables (relative paths) import useTreeState from './components/FdsTreeView/useTreeState' import { useBoldQuery } from './composables/useBoldQuery' import { useDevMode } from './composables/useDevMode' import { useDevModeEnvironment } from './composables/useDevModeEnvironment' import { useDevModeToggles } from './composables/useDevModeToggles' import { useDownload } from './composables/useDownload' import { clearUnsavedChanges, getExitGuardWizardId, setupExitConfirmationGuard, shouldBlockNavigation, shouldBlockWizardExit, useExitConfirmationGuard, useExitConfirmationGuardState, } from './composables/useExitConfirmationGuard' import { formatPidWithDash, isPidString, normalizePidSearchValue, PID_MASK, PID_MASK_OPTIONS, useIsPid, } from './composables/useIsPid' import { isRelativeHref, resolveRouterLinkTarget, setupRouterLinkInterceptor, teardownRouterLinkInterceptor, } from './composables/setupRouterLinkInterceptor' import { parseRouteFiltersFromQuery, serializeRouteFiltersToQuery, useRouteFilters, } from './composables/useRouteFilters' import { useRouteScrollPositions } from './composables/useRouteScrollPositions' import { useViewportBreakpoint } from './composables/useViewportBreakpoint' import { capitalizeFirstLetter } from './helpers/capitalizeFirstLetter' import { debounce } from './helpers/debounce' import { useFileSizeValidation, useFileValidation } from './helpers/fileValidation' import { FDS_VUE_CORE_I18N_KEY, type FdsI18nLike } from './plugin/i18n' // Export individual components export { FdsBlockAlert, FdsBlockContent, FdsBlockExpander, FdsBlockInfo, FdsBlockLink, FdsButtonCopy, FdsButtonDownload, FdsButtonIcon, FdsButtonMinor, FdsButtonPrimary, FdsButtonSecondary, FdsButtonTertiary, FdsCheckbox, FdsDevMode, FdsDrawer, FdsExitModal, FdsH1, FdsH2, FdsH3, FdsHr, FdsIcon, FdsInput, FdsLabel, FdsLead, FdsListHeading, FdsMeta, FdsModal, FdsPagination, FdsPhonenumber, FdsSsn, FdsPopover, FdsRadio, FdsSearchSelect, FdsSearchSelectPro, FdsSelect, FdsSpinner, FdsSticker, FdsTable, FdsTableHead, FdsTabs, FdsTabsItem, FdsTextarea, FdsTreeView, FdsTruncatedText, FdsWeekCalendar, FdsWizard, } // Export composables and helpers export { capitalizeFirstLetter, clearUnsavedChanges, debounce, formatPidWithDash, isRelativeHref, getExitGuardWizardId, isPidString, normalizePidSearchValue, PID_MASK, PID_MASK_OPTIONS, resolveRouterLinkTarget, setupExitConfirmationGuard, setupRouterLinkInterceptor, shouldBlockNavigation, shouldBlockWizardExit, teardownRouterLinkInterceptor, useBoldQuery, useDevMode, useDevModeEnvironment, useDevModeToggles, useDownload, useExitConfirmationGuard, useExitConfirmationGuardState, useFileSizeValidation, useFileValidation, useIsPid, parseRouteFiltersFromQuery, serializeRouteFiltersToQuery, useRouteFilters, useRouteScrollPositions, useTreeState, useViewportBreakpoint, } // Export logos export * from './assets/logos' export interface FdsVueCorePluginOptions { i18n?: FdsI18nLike } export { FDS_VUE_CORE_I18N_KEY } from './plugin/i18n' // Export component library plugin const FdsVueCorePlugin: Plugin = { install(app: App, options?: FdsVueCorePluginOptions) { if (options?.i18n) { app.provide(FDS_VUE_CORE_I18N_KEY, options.i18n) } // Register all components globally app.component('FdsTreeView', FdsTreeView) // Register button variants with direct names app.component('FdsButtonPrimary', FdsButtonPrimary) app.component('FdsButtonSecondary', FdsButtonSecondary) app.component('FdsButtonTertiary', FdsButtonTertiary) app.component('FdsButtonMinor', FdsButtonMinor) app.component('FdsButtonIcon', FdsButtonIcon) app.component('FdsButtonCopy', FdsButtonCopy) app.component('FdsButtonDownload', FdsButtonDownload) app.component('FdsDevMode', FdsDevMode) app.component('FdsIcon', FdsIcon) app.component('FdsSpinner', FdsSpinner) app.component('FdsRadio', FdsRadio) app.component('FdsCheckbox', FdsCheckbox) app.component('FdsTextarea', FdsTextarea) app.component('FdsPhonenumber', FdsPhonenumber) app.component('FdsSsn', FdsSsn) app.component('FdsSelect', FdsSelect) app.component('FdsTable', FdsTable) app.component('FdsTableHead', FdsTableHead) app.component('FdsInput', FdsInput) app.component('FdsBlockContent', FdsBlockContent) app.component('FdsBlockInfo', FdsBlockInfo) app.component('FdsBlockAlert', FdsBlockAlert) app.component('FdsBlockExpander', FdsBlockExpander) app.component('FdsBlockLink', FdsBlockLink) app.component('FdsSticker', FdsSticker) app.component('FdsTabs', FdsTabs) app.component('FdsTabsItem', FdsTabsItem) app.component('FdsDrawer', FdsDrawer) app.component('FdsModal', FdsModal) app.component('FdsPagination', FdsPagination) app.component('FdsPopover', FdsPopover) app.component('FdsSearchSelect', FdsSearchSelect) app.component('FdsSearchSelectPro', FdsSearchSelectPro) app.component('FdsTruncatedText', FdsTruncatedText) app.component('FdsWizard', FdsWizard) app.component('FdsWeekCalendar', FdsWeekCalendar) app.component('FdsH1', FdsH1) app.component('FdsH2', FdsH2) app.component('FdsH3', FdsH3) app.component('FdsHr', FdsHr) app.component('FdsLabel', FdsLabel) app.component('FdsLead', FdsLead) app.component('FdsMeta', FdsMeta) app.component('FdsListHeading', FdsListHeading) }, } export default FdsVueCorePlugin // Export all component types // TreeView types (only consumer-facing types) export type { FdsNodeShape, FdsTreeNode, FdsTreeViewProps, FdsTreeViewStyles } from './components/FdsTreeView/types' // Export helper types export type { DebouncedFunction } from './helpers/debounce' export type { FileSizeValidationResult, FileValidationOptions, FileValidationResult } from './helpers/fileValidation' // Button component types export type { FdsButtonBaseProps } from './components/Buttons/ButtonBaseProps' export type { FdsCopyButtonProps } from './components/Buttons/FdsButtonCopy/types' export type { DownloadOptions, FdsButtonDownloadProps } from './components/Buttons/FdsButtonDownload/types' export type { FdsIconButtonProps } from './components/Buttons/FdsButtonIcon/types' export type { FdsButtonTertiaryProps } from './components/Buttons/FdsButtonTertiary/types' // Button components that use FdsButtonBaseProps import type { FdsButtonBaseProps } from './components/Buttons/ButtonBaseProps' export type FdsButtonPrimaryProps = FdsButtonBaseProps export type FdsButtonSecondaryProps = FdsButtonBaseProps export type FdsButtonMinorProps = FdsButtonBaseProps // Form component types export type { FdsCheckboxProps } from './components/Form/FdsCheckbox/types' export type { FdsInputProps } from './components/Form/FdsInput/types' export type { FdsRadioProps } from './components/Form/FdsRadio/types' export type { FdsSelectProps } from './components/Form/FdsSelect/types' export type { FdsTextareaEmits, FdsTextareaProps } from './components/Form/FdsTextarea/types' export type { CountryPhoneOption } from './components/Form/FdsPhonenumber/countries' export { buildCountryOptions, countryCodeToFlag, filterCountryOptions, getCountryOption, sortCountryOptionsByName, } from './components/Form/FdsPhonenumber/countries' export { getPhoneValidationState, validatePhoneNumber, type PhoneValidationResult, } from './components/Form/FdsPhonenumber/validatePhone' export type { FdsPhonenumberEmits, FdsPhonenumberProps } from './components/Form/FdsPhonenumber/types' export { getSsnValidationState, stripSsnSeparators, validateSsn, validateSsnNumber, type SsnValidationOptions, type SsnValidationResult, } from './helpers/validateSsn' export { getSsnMask, getSsnMaskOptions, SSN_INTERIM_MASK, SSN_MASK } from './components/Form/FdsSsn/ssnMask' export type { FdsSsnEmits, FdsSsnProps } from './components/Form/FdsSsn/types' // Table component types export type { FdsTableProps } from './components/Table/FdsTable/types' export type { FdsTableHeadProps } from './components/Table/FdsTableHead/types' // Block component types // Use relative paths so the generated declarations are resolvable from the published package export type { FdsAlertBlockProps } from './components/Blocks/FdsBlockAlert/types' export type { FdsContentBlockProps } from './components/Blocks/FdsBlockContent/types' export type { FdsExpanderBlockProps } from './components/Blocks/FdsBlockExpander/types' export type { FdsBlockInfoProps } from './components/Blocks/FdsBlockInfo/types' export type { FdsInteractionBlockProps } from './components/Blocks/FdsBlockLink/types' // Tab component types export type { FdsTabsProps } from './components/Tabs/FdsTabs/types' export type { FdsTabsItemProps } from './components/Tabs/FdsTabsItem/types' // Typography component types export type { FdsExitModalProps } from './components/FdsExitModal/types' export type { FdsH1Props } from './components/Typography/FdsH1/types' export type { FdsH2Props } from './components/Typography/FdsH2/types' export type { FdsH3Props } from './components/Typography/FdsH3/types' export type { FdsHrProps } from './components/Typography/FdsHr/types' export type { FdsLabelProps } from './components/Typography/FdsLabel/types' export type { FdsLeadProps } from './components/Typography/FdsLead/types' export type { FdsListHeadingProps } from './components/Typography/FdsListHeading/types' export type { FdsMetaProps } from './components/Typography/FdsMeta/types' // Other component types export type { FdsIconName, FdsIconProps } from './components/FdsIcon/types' export type { FdsDrawerProps } from './components/FdsDrawer/types' export type { FdsModalProps } from './components/FdsModal/types' export type { FdsPaginationProps } from './components/FdsPagination/types' export type { FdsPopoverProps } from './components/FdsPopover/types' export type { FdsSearchSelectProps } from './components/FdsSearchSelect/types' export type { FdsSearchSelectProProps } from './components/FdsSearchSelectPro/types' export type { FdsSpinnerProps } from './components/FdsSpinner/types' export type { FdsStickerProps } from './components/FdsSticker/types' export type { FdsTruncatedTextProps } from './components/FdsTruncatedText/types' export type { FdsWeekCalendarLoading, FdsWeekCalendarProps, WeekDateRange } from './components/FdsWeekCalendar/types' export type { FdsWizardGoPayload, FdsWizardProps, FdsWizardRoute } from './components/FdsWizard/types' // Composable types export type { BreakpointKey } from './composables/useViewportBreakpoint' export type { RouteFilterRecord, RouteFilterRefs, RouteFilterSchema, RouteFilterState, RouteFilterValue, RouteDraftControl, RouteSort, RouteSortDefault, UseRouteFiltersSchema, UseRouteFiltersReturn, } from './composables/useRouteFilters' export type { DevModeEnvironmentKey } from './composables/useDevModeEnvironment' // DevMode types export type { DevModeAction, DevModeActionEvent, DevModeActionInput, DevModeButtonToggle, DevModeCheckToggle, DevModeQuickSettingType, DevModeRadioToggle, DevModeSelectEvent, DevModeToggle, DevModeToggleEvent, } from './components/FdsDevMode/types'