@mdxui/cockpit 7.0.5 → 7.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,11 +5,12 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import { LucideIcon } from 'lucide-react';
6
6
  import { ChartConfig } from '@mdxui/primitives/chart';
7
7
  import * as React$1 from 'react';
8
- import { ReactNode } from 'react';
8
+ import React__default, { ReactNode } from 'react';
9
9
  import { ColumnDef } from '@tanstack/react-table';
10
- import { SettingsProps, APIKeysProps, TeamProps, BillingProps, DeveloperDashboardProps as DeveloperDashboardProps$1 } from 'mdxui';
11
- import * as platform_do from 'platform.do';
12
- import { $Context } from 'platform.do';
10
+ import { APIKeysProps, TeamProps, BillingProps, DeveloperDashboardProps as DeveloperDashboardProps$1 } from 'mdxui';
11
+ import { SeverityOption, MessageType, ReportIssueSeverity, ReportIssueData } from '@mdxui/widgets';
12
+ import { UsagePeriod, BalanceUnit } from '@mdxui/admin/usage-overview';
13
+ import { PackageManager } from '@mdxui/primitives/install-snippet';
13
14
 
14
15
  interface ActivityItem {
15
16
  /** Unique ID */
@@ -303,6 +304,7 @@ interface NavItem {
303
304
  icon?: LucideIcon;
304
305
  isActive?: boolean;
305
306
  items?: NavItem[];
307
+ subItemsClassName?: string;
306
308
  }
307
309
  interface NavMainProps {
308
310
  items: NavItem[];
@@ -436,30 +438,6 @@ declare function MockAuthenticationFactors(): react_jsx_runtime.JSX.Element;
436
438
  */
437
439
  declare function MockUserSessions(): react_jsx_runtime.JSX.Element;
438
440
 
439
- /**
440
- * TeamSwitcher component that uses WorkOS authentication.
441
- * Shows the WorkOS OrganizationSwitcher widget when authenticated with an organization,
442
- * or a "No Organization" placeholder when not.
443
- */
444
- declare function TeamSwitcher(): react_jsx_runtime.JSX.Element;
445
-
446
- /**
447
- * SettingsPage - Tabbed settings layout component
448
- *
449
- * Provides a tabbed interface for various settings sections including
450
- * profile, security, notifications, billing, team, api, and integrations.
451
- *
452
- * @example
453
- * ```tsx
454
- * <SettingsPage sections={['profile', 'security', 'team']}>
455
- * <ProfileSettings />
456
- * <SecuritySettings />
457
- * <TeamSettings />
458
- * </SettingsPage>
459
- * ```
460
- */
461
- declare function SettingsPage({ sections, children }: SettingsProps): react_jsx_runtime.JSX.Element;
462
-
463
441
  interface UserProfileProps {
464
442
  user?: {
465
443
  name?: string;
@@ -541,6 +519,46 @@ declare function TeamManager({ workspace, allowInvite, allowRoleChange, allowRem
541
519
  */
542
520
  declare function Billing({ customer, showInvoices, showPaymentMethods, showUsage, subscription: initialSubscription, }: BillingProps): react_jsx_runtime.JSX.Element;
543
521
 
522
+ interface OnboardingGateCallbacks {
523
+ onComplete: () => void;
524
+ onCheckout: (planName: string) => void;
525
+ organizationId: string;
526
+ user: {
527
+ firstName?: string | null;
528
+ lastName?: string | null;
529
+ email?: string | null;
530
+ profilePictureUrl?: string | null;
531
+ } | null;
532
+ }
533
+ interface OnboardingGateProps {
534
+ /** Rendered when org has completed onboarding */
535
+ children: ReactNode;
536
+ /** Component to render during onboarding — receives callbacks as props */
537
+ OnboardingComponent: React.ComponentType<OnboardingGateCallbacks>;
538
+ }
539
+ declare function OnboardingGate({ children, OnboardingComponent }: OnboardingGateProps): react_jsx_runtime.JSX.Element;
540
+
541
+ interface PlanDisplayConfig {
542
+ name: string;
543
+ slug: string;
544
+ description: string;
545
+ price: string;
546
+ priceDescription: string;
547
+ credits: string;
548
+ buttonText: string;
549
+ buttonVariant?: 'default' | 'outline';
550
+ }
551
+ interface PlanFeatureConfig {
552
+ feature: string;
553
+ free: string | boolean;
554
+ pro: string | boolean;
555
+ enterprise: string | boolean;
556
+ }
557
+ interface PlanConfig {
558
+ plans: PlanDisplayConfig[];
559
+ features: PlanFeatureConfig[];
560
+ }
561
+
544
562
  /**
545
563
  * Custom route definition for extending the dashboard with additional pages.
546
564
  * Allows consumers to add their own pages without modifying the cockpit package.
@@ -568,10 +586,8 @@ interface CustomRoute {
568
586
  }
569
587
  interface DashboardRoutes {
570
588
  overview?: boolean;
571
- requests?: boolean;
589
+ events?: boolean;
572
590
  keys?: boolean;
573
- team?: boolean;
574
- billing?: boolean;
575
591
  settings?: boolean;
576
592
  webhooks?: boolean;
577
593
  database?: boolean;
@@ -615,12 +631,31 @@ interface DashboardIdentity {
615
631
  /** Whether authentication is required to view the dashboard (default: true) */
616
632
  required?: boolean;
617
633
  /** What to do when user is not authenticated */
618
- onUnauthenticated?: 'redirect' | 'landing' | 'allow';
634
+ onUnauthenticated?: 'redirect' | 'landing' | 'allow' | 'signIn';
619
635
  /** URL to redirect to when not authenticated (used with onUnauthenticated: 'redirect') */
620
636
  unauthenticatedRedirectUrl?: string;
621
637
  /** Custom landing component to show when not authenticated (used with onUnauthenticated: 'landing') */
622
638
  landingComponent?: ReactNode;
623
639
  }
640
+ interface ReportIssueConfig {
641
+ topics?: string[];
642
+ severityOptions?: SeverityOption[];
643
+ defaultTab?: MessageType;
644
+ defaultValues?: {
645
+ message?: string;
646
+ topic?: string;
647
+ severity?: ReportIssueSeverity;
648
+ };
649
+ onSubmit?: (data: ReportIssueData) => Promise<void> | void;
650
+ apiEndpoint?: string;
651
+ apiHeaders?: Record<string, string>;
652
+ successMessage?: string;
653
+ context?: Record<string, unknown>;
654
+ }
655
+ interface DashboardEventsConfig {
656
+ /** Restrict which channels appear in the events log filter. Omit to show all. */
657
+ availableChannels?: ('worker' | 'action' | 'webhook' | 'trace' | 'log' | 'llm' | 'cdc')[];
658
+ }
624
659
  interface DashboardConfig {
625
660
  basePath?: string;
626
661
  branding?: DashboardBranding;
@@ -634,20 +669,30 @@ interface DashboardConfig {
634
669
  /** Identity provider configuration for authentication and user management */
635
670
  identity: DashboardIdentity;
636
671
  /**
637
- * Development token for testing SDK without auth flow.
638
- * Pass DO_TOKEN from server-side environment variable.
639
- * Only used in development - auth tokens take priority in production.
672
+ * Sidebar promotional banner configuration.
673
+ * Pass props to show a SidebarAd, or omit/pass false to hide it.
674
+ */
675
+ sidebarAd?: SidebarAdProps | false;
676
+ /** Events log page configuration (e.g. restrict available channels) */
677
+ events?: DashboardEventsConfig | undefined;
678
+ /**
679
+ * Report Issue sidebar button configuration.
680
+ * Pass config object to customize, omit to show with defaults, or `false` to hide.
640
681
  */
641
- devToken?: string;
642
- /** Enable SDK debug logging */
643
- debug?: boolean;
682
+ reportIssue?: ReportIssueConfig | false;
683
+ /** Component rendered during onboarding. If provided, OnboardingGate wraps the dashboard. */
684
+ onboardingComponent?: React__default.ComponentType<OnboardingGateCallbacks>;
685
+ /** Plan configuration for billing. Defines available plans and feature comparison. */
686
+ planConfig?: PlanConfig;
644
687
  }
645
688
 
646
689
  interface DashboardContextValue {
647
- config: Required<Omit<DashboardConfig, 'identity' | 'devToken' | 'debug'>> & {
690
+ config: Required<Omit<DashboardConfig, 'identity' | 'sidebarAd' | 'events' | 'reportIssue' | 'onboardingComponent' | 'planConfig'>> & {
648
691
  identity: DashboardIdentity;
649
- devToken?: string;
650
- debug?: boolean;
692
+ sidebarAd?: SidebarAdProps | false;
693
+ events?: DashboardEventsConfig;
694
+ reportIssue?: ReportIssueConfig | false;
695
+ planConfig?: PlanConfig;
651
696
  };
652
697
  routes: Required<DashboardRoutes>;
653
698
  customRoutes: CustomRoute[];
@@ -664,7 +709,7 @@ declare function useCustomRoutes(): CustomRoute[];
664
709
  * ```tsx
665
710
  * <DeveloperDashboard
666
711
  * identity={{ clientId: 'xxx' }}
667
- * routes={{ webhooks: true, billing: false }}
712
+ * routes={{ webhooks: true }}
668
713
  * customRoutes={[{ path: '/analytics', label: 'Analytics', element: <Analytics /> }]}
669
714
  * />
670
715
  * ```
@@ -674,7 +719,10 @@ declare function useCustomRoutes(): CustomRoute[];
674
719
  * <DeveloperDashboard config={{ identity: { clientId: 'xxx' }, routes: {...} }} />
675
720
  * ```
676
721
  */
677
- type DeveloperDashboardProps = DeveloperDashboardProps$1 | {
722
+ type DeveloperDashboardProps = (DeveloperDashboardProps$1 & {
723
+ onboardingComponent?: DashboardConfig['onboardingComponent'];
724
+ planConfig?: DashboardConfig['planConfig'];
725
+ }) | {
678
726
  config: DashboardConfig;
679
727
  };
680
728
  /**
@@ -682,9 +730,7 @@ type DeveloperDashboardProps = DeveloperDashboardProps$1 | {
682
730
  * and renders the dashboard routes.
683
731
  *
684
732
  * Provider hierarchy (handled by AppProviders):
685
- * - ThemeProvider (next-themes) - Theme mode (light/dark/system)
686
- * - DashboardProvider - Dashboard config context
687
- * - SDKInitializer - Platform SDK setup
733
+ * - DashboardProvider - Dashboard config context + theme
688
734
  * - IdentityProvider - WorkOS AuthKit + Widgets
689
735
  * - QueryProvider - TanStack Query + Auth sync
690
736
  *
@@ -699,7 +745,7 @@ type DeveloperDashboardProps = DeveloperDashboardProps$1 | {
699
745
  * ```tsx
700
746
  * <DeveloperDashboard
701
747
  * identity={{ clientId: 'xxx' }}
702
- * routes={{ webhooks: true, billing: false }}
748
+ * routes={{ webhooks: true }}
703
749
  * customRoutes={[
704
750
  * { path: '/analytics', label: 'Analytics', icon: 'BarChart3', element: <AnalyticsPage /> },
705
751
  * ]}
@@ -710,452 +756,203 @@ type DeveloperDashboardProps = DeveloperDashboardProps$1 | {
710
756
  * ```tsx
711
757
  * <DeveloperDashboard
712
758
  * identity={{ clientId: 'xxx' }}
713
- * routes={{ billing: false, team: false }}
759
+ * routes={{ database: false }}
714
760
  * />
715
761
  * ```
716
762
  */
717
763
  declare function DeveloperDashboard(props: DeveloperDashboardProps): react_jsx_runtime.JSX.Element;
718
764
 
719
- declare const mockBillingData: {
720
- plan: string;
721
- planPrice: number;
722
- planFeatures: string[];
723
- status: "active";
724
- renewalDate: string;
725
- totalSpend: number;
726
- usageBreakdown: {
727
- resource: string;
728
- usage: number;
729
- limit: number;
730
- unit: string;
731
- cost: number;
732
- }[];
733
- invoices: {
734
- id: string;
735
- invoiceNumber: string;
736
- date: string;
737
- amount: number;
738
- status: "paid";
739
- }[];
740
- paymentMethod: {
741
- type: "card";
742
- brand: string;
743
- last4: string;
744
- expiryMonth: number;
745
- expiryYear: number;
746
- };
747
- billingAlerts: {
748
- enabled: boolean;
749
- threshold: number;
750
- };
751
- };
752
- interface WebhookEndpoint {
753
- id: string;
754
- url: string;
755
- events: string[];
756
- lastDelivery: string | null;
757
- status: "active" | "disabled";
758
- secret: string;
759
- createdAt: string;
760
- failureCount: number;
761
- }
765
+ declare function SettingsAccountPage(): react_jsx_runtime.JSX.Element;
762
766
 
763
- type BillingData = typeof mockBillingData;
764
767
  interface BillingPageProps {
765
- /** Billing data - uses mock data if not provided */
766
- billingData?: BillingData;
767
- /** Callback when "Manage Plan" is clicked */
768
- onManagePlan?: () => Promise<void>;
769
- /** Callback when "Update" payment method is clicked */
770
- onUpdatePaymentMethod?: () => Promise<void>;
771
- /** Callback when an invoice is downloaded */
772
- onDownloadInvoice?: (invoiceId: string) => Promise<void>;
773
- /** Callback when billing alerts are toggled */
774
- onToggleAlerts?: (enabled: boolean) => Promise<void>;
775
- /** Hide the header with sidebar trigger and breadcrumb */
776
- hideHeader?: boolean;
768
+ /** Period for usage data fetching */
769
+ usagePeriod?: UsagePeriod;
770
+ /** Show the Credit Balance usage row */
771
+ showCreditBalance?: boolean;
772
+ /** Show the API Requests usage row */
773
+ showApiRequests?: boolean;
774
+ /** Display credit balance as dollar amounts or token counts (default: 'dollars') */
775
+ balanceUnit?: BalanceUnit;
777
776
  /** Additional CSS class for the container */
778
777
  className?: string;
779
778
  }
780
- declare function BillingPage({ billingData: initialBillingData, onManagePlan, onUpdatePaymentMethod, onDownloadInvoice, onToggleAlerts, hideHeader, className, }?: BillingPageProps): react_jsx_runtime.JSX.Element;
779
+ declare function BillingPage({ usagePeriod, showCreditBalance, showApiRequests, balanceUnit, className, }?: BillingPageProps): react_jsx_runtime.JSX.Element;
781
780
 
782
- declare function DatabasePage(): react_jsx_runtime.JSX.Element;
783
-
784
- declare function IntegrationsPage(): react_jsx_runtime.JSX.Element;
785
-
786
- type ApiKeyStatus = 'active' | 'expiring' | 'never_used';
787
- type ApiKey = {
788
- id: string;
789
- name: string;
790
- key: string;
791
- created: string;
792
- lastUsed: string | null;
793
- status: ApiKeyStatus;
794
- };
795
- interface KeysPageProps {
796
- /** Initial keys data - uses mock data if not provided */
797
- keys?: ApiKey[];
798
- /** Callback when a key is created - if not provided, uses internal mock */
799
- onCreateKey?: (name: string) => Promise<{
800
- id: string;
801
- key: string;
802
- }>;
803
- /** Callback when a key is revoked - if not provided, uses internal mock */
804
- onRevokeKey?: (keyId: string) => Promise<void>;
805
- /** Callback when a key is renamed - if not provided, uses internal mock */
806
- onRenameKey?: (keyId: string, newName: string) => Promise<void>;
807
- /** Hide the header with sidebar trigger and breadcrumb */
808
- hideHeader?: boolean;
781
+ interface TeamPageProps {
782
+ /** Whether to use mock widgets instead of real WorkOS widgets */
783
+ useMockWidgets?: boolean;
809
784
  /** Additional CSS class for the container */
810
785
  className?: string;
811
786
  }
812
- declare function KeysPage({ keys: initialKeys, onCreateKey, onRevokeKey, onRenameKey, hideHeader, className, }?: KeysPageProps): react_jsx_runtime.JSX.Element;
813
-
814
- declare function OverviewPage(): react_jsx_runtime.JSX.Element;
787
+ declare function SettingsUsersPage({ useMockWidgets: useMockWidgetsProp, className }?: TeamPageProps): react_jsx_runtime.JSX.Element;
815
788
 
816
- declare function RequestsPage(): react_jsx_runtime.JSX.Element;
789
+ declare function DataBrowserPage(): react_jsx_runtime.JSX.Element;
817
790
 
818
- declare function SettingsProfilePage(): react_jsx_runtime.JSX.Element;
791
+ declare function DatabasePage(): react_jsx_runtime.JSX.Element;
819
792
 
820
- declare function SettingsSecurityPage(): react_jsx_runtime.JSX.Element;
793
+ /**
794
+ * Outer page component — resolves auth token before mounting the hook.
795
+ *
796
+ * Why: useLogEvents fires an immediate fetch. If that fetch gets a 401
797
+ * (because AuthSync hasn't set the bearer token yet), isAuthError()
798
+ * permanently sets polling=false. By deferring mount until the token
799
+ * is available, the hook never sees a pre-auth 401.
800
+ */
801
+ declare function EventsLogPage(): react_jsx_runtime.JSX.Element;
821
802
 
822
- declare function SettingsSessionsPage(): react_jsx_runtime.JSX.Element;
803
+ declare function IntegrationsPage(): react_jsx_runtime.JSX.Element;
823
804
 
824
- interface TeamPageProps {
805
+ interface KeysPageProps {
825
806
  /** Whether to use mock widgets instead of real WorkOS widgets */
826
807
  useMockWidgets?: boolean;
827
- /** Hide the header with sidebar trigger and breadcrumb */
828
- hideHeader?: boolean;
829
808
  /** Additional CSS class for the container */
830
809
  className?: string;
831
810
  }
832
- declare function TeamPage({ useMockWidgets: useMockWidgetsProp, hideHeader, className, }?: TeamPageProps): react_jsx_runtime.JSX.Element;
833
-
834
- declare function VaultPage(): react_jsx_runtime.JSX.Element;
811
+ declare function KeysPage({ useMockWidgets: useMockWidgetsProp, className }?: KeysPageProps): react_jsx_runtime.JSX.Element;
835
812
 
836
- declare function WebhooksActivityPage(): react_jsx_runtime.JSX.Element;
837
-
838
- interface WebhooksEndpointsPageProps {
839
- /** Initial endpoints data - uses mock data if not provided */
840
- endpoints?: WebhookEndpoint[];
841
- /** Callback when an endpoint is created */
842
- onCreateEndpoint?: (data: {
843
- url: string;
844
- events: string[];
845
- enabled: boolean;
846
- }) => Promise<{
847
- id: string;
848
- secret: string;
849
- }>;
850
- /** Callback when an endpoint is updated */
851
- onUpdateEndpoint?: (id: string, data: {
852
- url: string;
853
- events: string[];
854
- enabled: boolean;
855
- }) => Promise<void>;
856
- /** Callback when an endpoint is deleted */
857
- onDeleteEndpoint?: (id: string) => Promise<void>;
858
- /** Hide the header with sidebar trigger and breadcrumb */
859
- hideHeader?: boolean;
860
- /** Additional CSS class for the container */
861
- className?: string;
862
- }
863
- declare function WebhooksEndpointsPage({ endpoints: initialEndpoints, onCreateEndpoint, onUpdateEndpoint, onDeleteEndpoint, hideHeader, className, }?: WebhooksEndpointsPageProps): react_jsx_runtime.JSX.Element;
813
+ declare function OverviewPage(): react_jsx_runtime.JSX.Element;
864
814
 
865
- declare function WebhooksEventCatalogPage(): react_jsx_runtime.JSX.Element;
815
+ declare function RequestsPage(): react_jsx_runtime.JSX.Element;
866
816
 
867
- declare function WebhooksLogsPage(): react_jsx_runtime.JSX.Element;
817
+ declare function VaultPage(): react_jsx_runtime.JSX.Element;
868
818
 
869
- /**
870
- * Configuration for standalone components.
871
- * Lighter weight than full DashboardConfig - no auth or routing required.
872
- */
873
- interface StandaloneConfig {
874
- /** Theme configuration */
875
- theme?: {
876
- /** Theme preset name */
877
- preset?: Theme;
878
- /** Color mode */
879
- mode?: 'light' | 'dark' | 'system';
880
- /** Custom CSS variable overrides */
881
- custom?: Record<string, string>;
882
- };
883
- /** Base path for internal links (optional) */
884
- basePath?: string;
819
+ type ConnectionMethod = 'cli' | 'sdk-rest' | 'mcp-docs';
820
+ type StepId = 'pick-tool' | 'pick-plan';
821
+ interface OnboardingState {
822
+ currentStep: StepId;
823
+ connectionMethod: ConnectionMethod | null;
885
824
  }
886
- interface StandaloneProviderProps {
887
- /** Configuration options */
888
- config?: StandaloneConfig;
889
- /** Children components */
890
- children: ReactNode;
825
+ interface OnboardingUser {
826
+ firstName?: string | null;
827
+ lastName?: string | null;
828
+ email?: string | null;
829
+ profilePictureUrl?: string | null;
891
830
  }
892
- /**
893
- * Lightweight provider for standalone page components.
894
- *
895
- * Use this when you want to embed individual cockpit pages
896
- * (APIKeys, Webhooks, Billing, etc.) in your own app shell
897
- * without the full DeveloperDashboard.
898
- *
899
- * Does NOT include:
900
- * - Authentication (you handle this)
901
- * - Routing (you handle this)
902
- * - Dashboard layout/sidebar (you provide your own)
903
- *
904
- * DOES include:
905
- * - Theme provider (light/dark mode)
906
- * - Theme preset application
907
- * - Custom CSS variable support
908
- *
909
- * @example
910
- * ```tsx
911
- * import { StandaloneProvider, StandaloneAPIKeys } from '@mdxui/cockpit'
912
- *
913
- * function MyApp() {
914
- * return (
915
- * <StandaloneProvider config={{ theme: { preset: 'stripe', mode: 'dark' } }}>
916
- * <MyAppShell>
917
- * <StandaloneAPIKeys
918
- * onCreateKey={createKey}
919
- * onRevokeKey={revokeKey}
920
- * />
921
- * </MyAppShell>
922
- * </StandaloneProvider>
923
- * )
924
- * }
925
- * ```
926
- */
927
- declare function StandaloneProvider({ config, children }: StandaloneProviderProps): react_jsx_runtime.JSX.Element;
928
-
929
- /**
930
- * Props for standalone API Keys component.
931
- */
932
- interface StandaloneAPIKeysProps {
933
- /** Initial API keys data (uses mock data if not provided) */
934
- keys?: ApiKey[];
935
- /** Callback when a new key is created */
936
- onCreateKey?: (name: string) => Promise<{
937
- id: string;
938
- key: string;
939
- }>;
940
- /** Callback when a key is revoked */
941
- onRevokeKey?: (keyId: string) => Promise<void>;
942
- /** Callback when a key is renamed */
943
- onRenameKey?: (keyId: string, newName: string) => Promise<void>;
944
- /** Hide the page header/breadcrumb (default: true for standalone) */
945
- hideHeader?: boolean;
946
- /** Additional CSS class */
831
+ interface ConnectionOptionConfig {
832
+ value: string;
833
+ label: string;
834
+ }
835
+ interface CliConfig {
836
+ /** Package to install via npx/bunx (e.g. "@headlessly/cli") */
837
+ package: string;
838
+ /** Package manager command (default: "npx") */
839
+ command?: PackageManager;
840
+ /** CLI commands to show after install (e.g. "headlessly login\nheadlessly use crm") */
841
+ commands: string;
842
+ /** Description shown below the commands */
843
+ description?: string;
844
+ }
845
+ interface SdkConfig {
846
+ /** Package to install (e.g. "@headlessly/crm") */
847
+ package: string;
848
+ /** Package manager command (default: "npm install") */
849
+ command?: PackageManager;
850
+ /** Description shown below the install snippet */
851
+ description?: string;
852
+ }
853
+ interface McpConfig {
854
+ /** Description text */
855
+ description?: string;
856
+ /** URL for the MCP setup docs */
857
+ docsUrl: string;
858
+ /** Label for the docs link (default: "View MCP Setup") */
859
+ docsLabel?: string;
860
+ }
861
+ interface OnboardingFlowProps {
862
+ /** User info for header */
863
+ user?: OnboardingUser;
864
+ /** Custom logo component for the header. Defaults to HeadlesslyLogo. */
865
+ logo?: ReactNode;
866
+ /** Connection method options (default: CLI, SDK/REST, MCP) */
867
+ connectionOptions?: ConnectionOptionConfig[];
868
+ /** CLI connection config */
869
+ cli?: CliConfig;
870
+ /** SDK/REST connection config */
871
+ sdk?: SdkConfig;
872
+ /** MCP/Editor connection config */
873
+ mcp?: McpConfig;
874
+ /** Custom content for the pricing step. Renders a placeholder if omitted. */
875
+ pricingContent?: ReactNode;
876
+ /** Step 1 heading */
877
+ connectHeading?: string;
878
+ /** Step 1 description */
879
+ connectDescription?: string;
880
+ /** Step 2 heading */
881
+ planHeading?: string;
882
+ /** Step 2 description */
883
+ planDescription?: string;
884
+ /** localStorage key for persisting state (default: "onboarding") */
885
+ storageKey?: string;
886
+ /** Initial state override (for stories) */
887
+ initialState?: Partial<OnboardingState>;
888
+ /** Custom class name */
947
889
  className?: string;
948
890
  }
949
- /**
950
- * Standalone API Keys management component.
951
- *
952
- * Use this component to embed API key management in your own app shell
953
- * without requiring the full DeveloperDashboard.
954
- *
955
- * @example Basic usage (uses mock data)
956
- * ```tsx
957
- * import { StandaloneProvider, StandaloneAPIKeys } from '@mdxui/cockpit'
958
- *
959
- * function MySettings() {
960
- * return (
961
- * <StandaloneProvider>
962
- * <StandaloneAPIKeys />
963
- * </StandaloneProvider>
964
- * )
965
- * }
966
- * ```
967
- *
968
- * @example With real backend integration
969
- * ```tsx
970
- * <StandaloneAPIKeys
971
- * keys={myKeys}
972
- * onCreateKey={async (name) => {
973
- * const result = await api.createKey(name)
974
- * return { id: result.id, key: result.secretKey }
975
- * }}
976
- * onRevokeKey={async (keyId) => {
977
- * await api.revokeKey(keyId)
978
- * }}
979
- * onRenameKey={async (keyId, newName) => {
980
- * await api.renameKey(keyId, newName)
981
- * }}
982
- * />
983
- * ```
984
- */
985
- declare function StandaloneAPIKeys({ keys, onCreateKey, onRevokeKey, onRenameKey, hideHeader, className, }: StandaloneAPIKeysProps): react_jsx_runtime.JSX.Element;
891
+ declare function OnboardingFlow({ user, logo, connectionOptions, cli, sdk, mcp, pricingContent, connectHeading, connectDescription, planHeading, planDescription, storageKey, initialState, className, }: OnboardingFlowProps): react_jsx_runtime.JSX.Element;
892
+ declare function OnboardingPage(): react_jsx_runtime.JSX.Element;
986
893
 
987
- /**
988
- * Props for standalone Webhooks component.
989
- */
990
- interface StandaloneWebhooksProps {
991
- /** Initial endpoints data (uses mock data if not provided) */
894
+ interface WebhookEndpoint {
895
+ id: string;
896
+ target_url: string;
897
+ events: string[];
898
+ active: boolean;
899
+ secret: string;
900
+ description?: string;
901
+ status: "Active" | "Failed";
902
+ deliveryCount: number;
903
+ failureCount: number;
904
+ lastDeliveredAt: string | null;
905
+ lastStatusCode: number | null;
906
+ createdAt: string;
907
+ updatedAt: string;
908
+ }
909
+ interface WebhookEvent {
910
+ id: string;
911
+ name: string;
912
+ description: string;
913
+ category: string;
914
+ payloadSchema: Record<string, unknown>;
915
+ }
916
+
917
+ interface WebhookActivity {
918
+ delivered: number;
919
+ failed: number;
920
+ pending: number;
921
+ successRate: number;
922
+ endpointsWithIssues: {
923
+ target_url: string;
924
+ failures: number;
925
+ }[];
926
+ }
927
+ interface WebhooksPageProps {
992
928
  endpoints?: WebhookEndpoint[];
993
- /** Callback when an endpoint is created */
929
+ availableEvents?: WebhookEvent[];
930
+ activity?: WebhookActivity;
994
931
  onCreateEndpoint?: (data: {
995
- url: string;
932
+ target_url: string;
996
933
  events: string[];
997
- enabled: boolean;
934
+ active: boolean;
998
935
  }) => Promise<{
999
936
  id: string;
1000
937
  secret: string;
1001
938
  }>;
1002
- /** Callback when an endpoint is updated */
1003
939
  onUpdateEndpoint?: (id: string, data: {
1004
- url: string;
940
+ target_url: string;
1005
941
  events: string[];
1006
- enabled: boolean;
942
+ active: boolean;
1007
943
  }) => Promise<void>;
1008
- /** Callback when an endpoint is deleted */
1009
944
  onDeleteEndpoint?: (id: string) => Promise<void>;
1010
- /** Hide the page header/breadcrumb (default: true for standalone) */
1011
- hideHeader?: boolean;
1012
- /** Additional CSS class */
1013
945
  className?: string;
1014
946
  }
1015
- /**
1016
- * Standalone Webhooks management component.
1017
- *
1018
- * Use this component to embed webhook management in your own app shell
1019
- * without requiring the full DeveloperDashboard.
1020
- *
1021
- * @example Basic usage (uses mock data)
1022
- * ```tsx
1023
- * import { StandaloneProvider, StandaloneWebhooks } from '@mdxui/cockpit'
1024
- *
1025
- * function MySettings() {
1026
- * return (
1027
- * <StandaloneProvider>
1028
- * <StandaloneWebhooks />
1029
- * </StandaloneProvider>
1030
- * )
1031
- * }
1032
- * ```
1033
- *
1034
- * @example With real backend integration
1035
- * ```tsx
1036
- * <StandaloneWebhooks
1037
- * endpoints={myEndpoints}
1038
- * onCreateEndpoint={async (data) => {
1039
- * const result = await api.createWebhook(data)
1040
- * return { id: result.id, secret: result.secret }
1041
- * }}
1042
- * onUpdateEndpoint={async (id, data) => {
1043
- * await api.updateWebhook(id, data)
1044
- * }}
1045
- * onDeleteEndpoint={async (id) => {
1046
- * await api.deleteWebhook(id)
1047
- * }}
1048
- * />
1049
- * ```
1050
- */
1051
- declare function StandaloneWebhooks({ endpoints, onCreateEndpoint, onUpdateEndpoint, onDeleteEndpoint, hideHeader, className, }: StandaloneWebhooksProps): react_jsx_runtime.JSX.Element;
947
+ declare function WebhooksEndpointsPage({ endpoints: initialEndpoints, availableEvents, activity: initialActivity, onCreateEndpoint, onUpdateEndpoint, onDeleteEndpoint, className, }?: WebhooksPageProps): react_jsx_runtime.JSX.Element;
1052
948
 
1053
- /**
1054
- * Props for standalone Billing component.
1055
- */
1056
- interface StandaloneBillingProps {
1057
- /** Billing data (uses mock data if not provided) */
1058
- billingData?: BillingData;
1059
- /** Callback when "Manage Plan" is clicked */
1060
- onManagePlan?: () => Promise<void>;
1061
- /** Callback when "Update" payment method is clicked */
1062
- onUpdatePaymentMethod?: () => Promise<void>;
1063
- /** Callback when an invoice is downloaded */
1064
- onDownloadInvoice?: (invoiceId: string) => Promise<void>;
1065
- /** Callback when billing alerts are toggled */
1066
- onToggleAlerts?: (enabled: boolean) => Promise<void>;
1067
- /** Hide the page header/breadcrumb (default: true for standalone) */
1068
- hideHeader?: boolean;
1069
- /** Additional CSS class */
949
+ interface WebhooksEventCatalogPageProps {
950
+ events?: WebhookEvent[];
1070
951
  className?: string;
1071
952
  }
1072
- /**
1073
- * Standalone Billing management component.
1074
- *
1075
- * Use this component to embed billing management in your own app shell
1076
- * without requiring the full DeveloperDashboard.
1077
- *
1078
- * @example Basic usage (uses mock data)
1079
- * ```tsx
1080
- * import { StandaloneProvider, StandaloneBilling } from '@mdxui/cockpit'
1081
- *
1082
- * function MySettings() {
1083
- * return (
1084
- * <StandaloneProvider>
1085
- * <StandaloneBilling />
1086
- * </StandaloneProvider>
1087
- * )
1088
- * }
1089
- * ```
1090
- *
1091
- * @example With real backend integration
1092
- * ```tsx
1093
- * <StandaloneBilling
1094
- * billingData={myBillingData}
1095
- * onManagePlan={async () => {
1096
- * const url = await createBillingPortalSession()
1097
- * window.location.href = url
1098
- * }}
1099
- * onDownloadInvoice={async (invoiceId) => {
1100
- * const url = await api.getInvoiceDownloadUrl(invoiceId)
1101
- * window.open(url, '_blank')
1102
- * }}
1103
- * />
1104
- * ```
1105
- */
1106
- declare function StandaloneBilling({ billingData, onManagePlan, onUpdatePaymentMethod, onDownloadInvoice, onToggleAlerts, hideHeader, className, }: StandaloneBillingProps): react_jsx_runtime.JSX.Element;
953
+ declare function WebhooksEventCatalogPage({ events }: WebhooksEventCatalogPageProps): react_jsx_runtime.JSX.Element;
1107
954
 
1108
- /**
1109
- * Props for standalone Team component.
1110
- */
1111
- interface StandaloneTeamProps {
1112
- /** Whether to use mock widgets instead of real WorkOS widgets */
1113
- useMockWidgets?: boolean;
1114
- /** Hide the page header/breadcrumb (default: true for standalone) */
1115
- hideHeader?: boolean;
1116
- /** Additional CSS class */
1117
- className?: string;
1118
- }
1119
- /**
1120
- * Standalone Team management component.
1121
- *
1122
- * Use this component to embed team management in your own app shell
1123
- * without requiring the full DeveloperDashboard.
1124
- *
1125
- * NOTE: This component uses WorkOS widgets for team management.
1126
- * You need to wrap your app with IdentityProvider from @mdxui/auth
1127
- * for the real widgets to work. Use useMockWidgets={true} for demo/testing.
1128
- *
1129
- * @example Basic usage (uses mock widgets)
1130
- * ```tsx
1131
- * import { StandaloneProvider, StandaloneTeam } from '@mdxui/cockpit'
1132
- *
1133
- * function MySettings() {
1134
- * return (
1135
- * <StandaloneProvider>
1136
- * <StandaloneTeam useMockWidgets />
1137
- * </StandaloneProvider>
1138
- * )
1139
- * }
1140
- * ```
1141
- *
1142
- * @example With WorkOS integration
1143
- * ```tsx
1144
- * import { IdentityProvider } from '@mdxui/auth'
1145
- * import { StandaloneProvider, StandaloneTeam } from '@mdxui/cockpit'
1146
- *
1147
- * function MySettings() {
1148
- * return (
1149
- * <IdentityProvider clientId="your-client-id">
1150
- * <StandaloneProvider>
1151
- * <StandaloneTeam />
1152
- * </StandaloneProvider>
1153
- * </IdentityProvider>
1154
- * )
1155
- * }
1156
- * ```
1157
- */
1158
- declare function StandaloneTeam({ useMockWidgets, hideHeader, className, }: StandaloneTeamProps): react_jsx_runtime.JSX.Element;
955
+ declare function WebhooksLogsPage(): react_jsx_runtime.JSX.Element;
1159
956
 
1160
957
  /**
1161
958
  * Maps a Lucide icon name string to the actual icon component.
@@ -1176,8 +973,6 @@ declare const dashboardIcons: {
1176
973
  readonly overview: "BarChart3";
1177
974
  readonly requests: "Activity";
1178
975
  readonly keys: "Key";
1179
- readonly team: "Users";
1180
- readonly billing: "CreditCard";
1181
976
  readonly settings: "Settings";
1182
977
  readonly webhooks: "Webhook";
1183
978
  readonly database: "Database";
@@ -1185,94 +980,4 @@ declare const dashboardIcons: {
1185
980
  readonly vault: "Lock";
1186
981
  };
1187
982
 
1188
- /**
1189
- * SDK instance type - the $ proxy with all platform methods
1190
- */
1191
- type PlatformSDK = $Context;
1192
- /**
1193
- * Enable or disable debug mode for SDK operations.
1194
- * When enabled, logs auth state changes and SDK calls.
1195
- */
1196
- declare function setDebugMode(enabled: boolean): void;
1197
- /**
1198
- * Check if debug mode is enabled.
1199
- */
1200
- declare function isDebugMode(): boolean;
1201
- /**
1202
- * Set a development token for testing SDK without auth flow.
1203
- * This is useful for local development when you have a DO_TOKEN.
1204
- * Call this early in app initialization.
1205
- *
1206
- * @param token - The DO_TOKEN from environment
1207
- */
1208
- declare function setDevToken(token: string | null): void;
1209
- /**
1210
- * Get the effective token (auth token takes priority over dev token)
1211
- */
1212
- declare function getEffectiveToken(): string | null;
1213
- /**
1214
- * Get the current auth token.
1215
- * Returns null if not authenticated.
1216
- */
1217
- declare function getAuthToken(): string | null;
1218
- /**
1219
- * Get the SDK instance.
1220
- * Returns null if not authenticated.
1221
- */
1222
- declare function getSDK(): PlatformSDK | null;
1223
- /**
1224
- * Check if the user is authenticated (has a token).
1225
- */
1226
- declare function isAuthenticated(): boolean;
1227
- /**
1228
- * Get debug status info for troubleshooting.
1229
- * Can be called from browser console: window.__platformDebug.status()
1230
- */
1231
- declare function getDebugStatus(): {
1232
- isAuthenticated: boolean;
1233
- hasDevToken: boolean;
1234
- hasEffectiveToken: boolean;
1235
- hasSDK: boolean;
1236
- tokenSource: string;
1237
- tokenLength: number;
1238
- tokenPreview: string | null;
1239
- debugMode: boolean;
1240
- apiBaseUrl: string;
1241
- };
1242
- /**
1243
- * Test SDK connection by making a simple API call.
1244
- * Can be called from browser console: window.__platformDebug.testConnection()
1245
- */
1246
- declare function testSDKConnection(): Promise<{
1247
- success: boolean;
1248
- result: platform_do.Thing[];
1249
- status: {
1250
- isAuthenticated: boolean;
1251
- hasDevToken: boolean;
1252
- hasEffectiveToken: boolean;
1253
- hasSDK: boolean;
1254
- tokenSource: string;
1255
- tokenLength: number;
1256
- tokenPreview: string | null;
1257
- debugMode: boolean;
1258
- apiBaseUrl: string;
1259
- };
1260
- error?: undefined;
1261
- } | {
1262
- success: boolean;
1263
- error: unknown;
1264
- status: {
1265
- isAuthenticated: boolean;
1266
- hasDevToken: boolean;
1267
- hasEffectiveToken: boolean;
1268
- hasSDK: boolean;
1269
- tokenSource: string;
1270
- tokenLength: number;
1271
- tokenPreview: string | null;
1272
- debugMode: boolean;
1273
- apiBaseUrl: string;
1274
- };
1275
- result?: undefined;
1276
- }>;
1277
-
1278
- export { APIKeyManager, ActivityFeed, type ActivityFeedProps, type ActivityItem, AreaChart, type AreaChartProps, BarChart, type BarChartProps, Billing, BillingPage, type CommandGroup, type CommandItem, CommandPalette, type CommandPaletteProps, type CustomRoute, type DashboardBranding, type DashboardConfig, DashboardGrid, DashboardGridItem, type DashboardGridItemProps, type DashboardGridProps, type DashboardIdentity, DashboardLayout, type DashboardRoutes, type DashboardTheme, DataTable, type DataTableProps, DatabasePage, DeveloperDashboard, type DeveloperDashboardProps, IntegrationsPage, JsonViewer, KPICard, type KPICardProps, KeysPage, LandingPage, LineChart, type LineChartProps, MockAuthenticationFactors, MockUserProfile, MockUserSessions, MockUsersManagement, type NavItem, NavMain, NavUser, OverviewPage, RequestsPage, SettingsPage, SettingsProfilePage, SettingsSecurityPage, SettingsSessionsPage, SidebarAd, SortableHeader, StandaloneAPIKeys, type StandaloneAPIKeysProps, StandaloneBilling, type StandaloneBillingProps, type StandaloneConfig, StandaloneProvider, StandaloneTeam, type StandaloneTeamProps, StandaloneWebhooks, type StandaloneWebhooksProps, StatusBadge, StatusDot, TeamManager, TeamPage, TeamSwitcher, UserProfile, VaultDeleteDialog, VaultEmptyState, VaultInputModal, VaultItemCard, VaultList, VaultPage, WebhooksActivityPage, WebhooksEndpointsPage, WebhooksEventCatalogPage, WebhooksLogsPage, dashboardIcons, getAuthToken, getDebugStatus, getEffectiveToken, getIconByName, getSDK, isAuthenticated, isDebugMode, setDebugMode, setDevToken, testSDKConnection, useCommandPalette, useCustomRoutes, useDashboard, useRoutes };
983
+ export { APIKeyManager, ActivityFeed, type ActivityFeedProps, type ActivityItem, AreaChart, type AreaChartProps, BarChart, type BarChartProps, Billing, BillingPage, type CommandGroup, type CommandItem, CommandPalette, type CommandPaletteProps, type CustomRoute, type DashboardBranding, type DashboardConfig, type DashboardEventsConfig, DashboardGrid, DashboardGridItem, type DashboardGridItemProps, type DashboardGridProps, type DashboardIdentity, DashboardLayout, type DashboardRoutes, type DashboardTheme, DataBrowserPage, DataTable, type DataTableProps, DatabasePage, DeveloperDashboard, type DeveloperDashboardProps, EventsLogPage, OnboardingPage as HeadlesslyOnboardingPage, IntegrationsPage, JsonViewer, KPICard, type KPICardProps, KeysPage, LandingPage, LineChart, type LineChartProps, MockAuthenticationFactors, MockUserProfile, MockUserSessions, MockUsersManagement, type NavItem, NavMain, NavUser, OnboardingFlow, OnboardingGate, type OnboardingGateCallbacks, type OnboardingGateProps, OverviewPage, type PlanConfig, type PlanDisplayConfig, type PlanFeatureConfig, RequestsPage, SettingsAccountPage, SettingsUsersPage, SidebarAd, type SidebarAdProps, SortableHeader, StatusBadge, StatusDot, TeamManager, UserProfile, VaultDeleteDialog, VaultEmptyState, VaultInputModal, VaultItemCard, VaultList, VaultPage, WebhooksEndpointsPage, WebhooksEventCatalogPage, WebhooksLogsPage, dashboardIcons, getIconByName, useCommandPalette, useCustomRoutes, useDashboard, useRoutes };