export { bootCore } from "./bootCore.js";
export { mountPublicHome, PublicHomeDefault } from "./public/mountPublicHome.js";
export { createCoreRouter, coreRoutes } from "./router/index.js";

export {
  customerRoutes,
  CustomersIndex,
  CustomersShowLayout,
  useCustomerList,
  useCustomer,
  useCustomerForm,
  useCustomerContacts,
  useCustomerAddresses,
} from "./modules/customers/index.js";

// layout/ (layouts live here — there is no resources/js/layouts/ folder)

export { default as AppBreadcrumb } from "./layout/AppBreadcrumb.vue";
export { default as MaestroAppearanceSettingsPanel } from "./views/superadmin/MaestroAppearanceSettingsPanel.vue";
export { default as AppFooter } from "./layout/AppFooter.vue";
export { default as AppLayout } from "./layout/AppLayout.vue";
export { default as AppMenu } from "./layout/AppMenu.vue";
export { default as AppMenuItem } from "./layout/AppMenuItem.vue";
export { default as AppSearch } from "./layout/AppSearch.vue";
export { default as AppSidebar } from "./layout/AppSidebar.vue";
export { default as AppTopbar } from "./layout/AppTopbar.vue";
export { default as AuthLayout } from "./layout/AuthLayout.vue";
export { default as LandingLayout } from "./layout/LandingLayout.vue";
export { default as VerticalSubmenu } from "./layout/VerticalSubmenu.vue";

export {
  activateContextFromGuard,
  deactivateContextFromGuard,
  useSubSidebarContext,
} from "./layout/composables/context.js";
export {
  layoutConfig,
  syncDarkThemeFromSystem,
  useLayout,
} from "./layout/composables/layout.js";
export {
  getActiveTopLevelParent,
  getSubmenuContextForRoute,
  getBreadcrumbForRoute,
} from "./layout/composables/menu.js";

export {
  projectContext,
  companyContext,
  settingsContext,
  registerExampleContexts,
} from "./layout/config/contexts.example.js";

// components/

export { default as AppleWidget } from "./components/auth/AppleWidget.vue";
export { default as GoogleWidget } from "./components/auth/GoogleWidget.vue";
export { default as BaseButton } from "./components/base/BaseButton.vue";
export { default as BaseDatePicker } from "./components/base/BaseDatePicker.vue";
export { default as BaseIndex } from "./components/base/BaseIndex.vue";
export { default as BasePageHeader } from "./components/base/BasePageHeader.vue";
export { default as BasePageShell } from "./components/base/BasePageShell.vue";
export { default as BaseSectionHeader } from "./components/base/BaseSectionHeader.vue";
export { default as BaseInputText } from "./components/base/BaseInputText.vue";
export { default as BaseMultiSelect } from "./components/base/BaseMultiSelect.vue";
export { default as BaseSearch } from "./components/base/BaseSearch.vue";
export { default as BaseToast } from "./components/base/BaseToast.vue";
export { default as B2CDataTable } from "./components/common/B2CDataTable.vue";
export { default as B2CDataTableFilterPanel } from "./components/common/B2CDataTableFilterPanel.vue";
export { default as ColumnPicker } from "./components/common/ColumnPicker.vue";
export { default as CreditScoreWidget } from "./components/dashboard/banking/CreditScoreWidget.vue";
export { default as CurrencyCardWidget } from "./components/dashboard/banking/CurrencyCardWidget.vue";
export { default as IncomeExpenditureWidget } from "./components/dashboard/banking/IncomeExpenditureWidget.vue";
export { default as SpendingLimitWidget } from "./components/dashboard/banking/SpendingLimitWidget.vue";
export { default as TransactionsHistoryWidget } from "./components/dashboard/banking/TransactionsHistoryWidget.vue";
export { default as BarChart } from "./components/dashboard/charts/BarChart.vue";
export { default as CustomMeter } from "./components/dashboard/charts/CustomMeter.vue";
export { default as GaugeChart } from "./components/dashboard/charts/GaugeChart.vue";
export { default as LineChart } from "./components/dashboard/charts/LineChart.vue";
export { default as MeterChart } from "./components/dashboard/charts/MeterChart.vue";
export { default as MiniLineChart } from "./components/dashboard/charts/MiniLineChart.vue";
export { default as MultiLineChart } from "./components/dashboard/charts/MultiLineChart.vue";
export { default as MiniStatCardWidget } from "./components/dashboard/ecommerce/MiniStatCardWidget.vue";
export { default as OrdersWidget } from "./components/dashboard/ecommerce/OrdersWidget.vue";
export { default as OverviewWidget } from "./components/dashboard/ecommerce/OverviewWidget.vue";
export { default as SocialMediaRevenueWidget } from "./components/dashboard/ecommerce/SocialMediaRevenueWidget.vue";
export { default as SocialMediaUsersWidget } from "./components/dashboard/ecommerce/SocialMediaUsersWidget.vue";
export { default as FollowerAnalyticsWidget } from "./components/dashboard/marketing/FollowerAnalyticsWidget.vue";
export { default as OrderHistoryWidget } from "./components/dashboard/marketing/OrderHistoryWidget.vue";
export { default as SalesOverviewWidget } from "./components/dashboard/marketing/SalesOverviewWidget.vue";
export { default as StatCardWidget } from "./components/dashboard/marketing/StatCardWidget.vue";
export { default as LazyImageWidget } from "./components/landing/LazyImageWidget.vue";
export { default as LogoWidget } from "./components/landing/LogoWidget.vue";
export { default as MaestroLogo } from "./components/branding/MaestroLogo.vue";

// composables/

export {
  hydrateUser,
  useAuth,
  setUser,
  userRef,
} from "./composables/useAuth.js";
export {
  TEXT_LIKE_TYPES,
  OPERATOR_LABELS,
  BASE_OPERATORS_BY_TYPE,
  getFilterScalar,
  getFilterOp,
  getFilterTypeForColumn,
  getAllowedOperatorsForColumn,
  getDefaultOperatorForColumn,
  isBooleanColumn,
  isSelectColumn,
  isMultiSelectColumn,
  isDateColumn,
  formatDateYmd,
  parseYmdToDate,
  getDateModelFromFilter,
  getOperatorOptionsForColumn,
  getBooleanValueOptionsForColumn,
  getSelectValueOptionsForColumn,
  useDataTableFilters,
} from "./composables/useDataTableFilters.js";
export {
  resetNavigation,
  useNavigation,
} from "./composables/useNavigation.js";
export {
  SETTINGS_CHILD_ROUTES,
  getFirstPermittedSettingsPath,
} from "./composables/useSettingsNavigation.js";
export { useExportNotifications } from "./composables/useExportNotifications.js";
export { useRealtimeNotifications } from "./composables/useRealtimeNotifications.js";
export { mergeDataTableColumns } from "./composables/mergeDataTableColumns.js";
export { useTableStatePersistence } from "./composables/useTableStatePersistence.js";

export * from "./config/design.js";
export * from "./config/verticalSubmenu.js";
export * from "./constants/badgeStyles.js";
export * from "./lib/icons.js";
export * from "./lib/utils.js";
export * from "./services/api.js";
export * from "./services/dataTableService.js";
export * from "./services/tableStateService.js";
export * from "./themeBootstrap.js";
export { default as PlaceholderPage } from "./views/PlaceholderPage.vue";
export { default as OrganizationProfileView } from "./views/organization/OrganizationProfileView.vue";
export { default as ActivityLogView } from "./views/settings/ActivityLogView.vue";
export { default as RolesManagementView } from "./views/settings/RolesManagementView.vue";
export { default as SettingsRedirectView } from "./views/settings/SettingsRedirectView.vue";
export { default as UsersView } from "./views/settings/UsersView.vue";
export { default as LoginView } from "./views/auth/LoginView.vue";
export { default as EcommerceView } from "./views/dashboard/EcommerceView.vue";
export { default as AccessDenied } from "./views/pages/AccessDenied.vue";
export { default as NotFound } from "./views/pages/NotFound.vue";
export { default as Oops } from "./views/pages/Oops.vue";
