@retinalabsllc/zairusjs 0.6.7 → 0.6.9
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.
- package/dist/index.d.mts +24 -2
- package/dist/index.d.ts +24 -2
- package/dist/index.js +159 -9
- package/dist/index.mjs +158 -9
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -357,7 +357,7 @@ interface TextInputProps {
|
|
|
357
357
|
maxLength?: number;
|
|
358
358
|
disabled?: boolean;
|
|
359
359
|
readOnly?: boolean;
|
|
360
|
-
type?: 'text' | 'password' | 'email';
|
|
360
|
+
type?: 'text' | 'password' | 'email' | 'url';
|
|
361
361
|
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
362
362
|
}
|
|
363
363
|
interface NumberInputProps {
|
|
@@ -880,4 +880,26 @@ interface BannerProps {
|
|
|
880
880
|
}
|
|
881
881
|
declare const Banner: React.FC<BannerProps>;
|
|
882
882
|
|
|
883
|
-
|
|
883
|
+
interface UniversalDeveloperSettingsProps {
|
|
884
|
+
initialPublicKey: string;
|
|
885
|
+
initialWebhookUrl: string;
|
|
886
|
+
isReadOnly?: boolean;
|
|
887
|
+
onGenerateKeys: () => Promise<{
|
|
888
|
+
success: boolean;
|
|
889
|
+
data?: {
|
|
890
|
+
publicKey: string;
|
|
891
|
+
secretKey: string;
|
|
892
|
+
};
|
|
893
|
+
error?: string;
|
|
894
|
+
}>;
|
|
895
|
+
onSaveWebhook: (webhookUrl: string) => Promise<{
|
|
896
|
+
success: boolean;
|
|
897
|
+
data?: {
|
|
898
|
+
webhookUrl: string;
|
|
899
|
+
};
|
|
900
|
+
error?: string;
|
|
901
|
+
}>;
|
|
902
|
+
}
|
|
903
|
+
declare const UniversalDeveloperSettings: React.FC<UniversalDeveloperSettingsProps>;
|
|
904
|
+
|
|
905
|
+
export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, Banner, type BannerProps, type BentoFeature, type BoardMember, type CompanyDetails, type CompanyMember, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type PricingFeature, type PricingPlan, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalIdentityPage, type UniversalIdentityPageProps, type UniversalInvoice, UniversalLookupPage, type UniversalLookupPageProps, type UniversalMember, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalOverviewPage, type UniversalOverviewPageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, UniversalRegistrationFlow, type UniversalRegistrationFlowProps, UniversalSidebar, type UniversalSidebarProps, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
|
package/dist/index.d.ts
CHANGED
|
@@ -357,7 +357,7 @@ interface TextInputProps {
|
|
|
357
357
|
maxLength?: number;
|
|
358
358
|
disabled?: boolean;
|
|
359
359
|
readOnly?: boolean;
|
|
360
|
-
type?: 'text' | 'password' | 'email';
|
|
360
|
+
type?: 'text' | 'password' | 'email' | 'url';
|
|
361
361
|
onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
|
|
362
362
|
}
|
|
363
363
|
interface NumberInputProps {
|
|
@@ -880,4 +880,26 @@ interface BannerProps {
|
|
|
880
880
|
}
|
|
881
881
|
declare const Banner: React.FC<BannerProps>;
|
|
882
882
|
|
|
883
|
-
|
|
883
|
+
interface UniversalDeveloperSettingsProps {
|
|
884
|
+
initialPublicKey: string;
|
|
885
|
+
initialWebhookUrl: string;
|
|
886
|
+
isReadOnly?: boolean;
|
|
887
|
+
onGenerateKeys: () => Promise<{
|
|
888
|
+
success: boolean;
|
|
889
|
+
data?: {
|
|
890
|
+
publicKey: string;
|
|
891
|
+
secretKey: string;
|
|
892
|
+
};
|
|
893
|
+
error?: string;
|
|
894
|
+
}>;
|
|
895
|
+
onSaveWebhook: (webhookUrl: string) => Promise<{
|
|
896
|
+
success: boolean;
|
|
897
|
+
data?: {
|
|
898
|
+
webhookUrl: string;
|
|
899
|
+
};
|
|
900
|
+
error?: string;
|
|
901
|
+
}>;
|
|
902
|
+
}
|
|
903
|
+
declare const UniversalDeveloperSettings: React.FC<UniversalDeveloperSettingsProps>;
|
|
904
|
+
|
|
905
|
+
export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, Banner, type BannerProps, type BentoFeature, type BoardMember, type CompanyDetails, type CompanyMember, type DashboardList, type DashboardListItem, type DashboardStat, type DocumentSectionData, type EmailContact, Faq, type FaqItem, type FaqProps, FeatureScroll, type FeatureScrollProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GifFeatureCard, type GifFeatureCardProps, Header, type HeaderLink, type HeaderProps, HeroSection, type HeroSectionProps, ManagedBoardBlock, type ManagedBoardBlockProps, ManagedContactBlock, type ManagedContactBlockProps, ManagedDocument, type ManagedDocumentProps, ManagedNewsletterSplitBlock, type ManagedNewsletterSplitBlockProps, ManagedNotFoundBlock, type ManagedNotFoundBlockProps, ManagedPricingBlock, type ManagedPricingBlockProps, ManagedProjectsBlock, type ManagedProjectsBlockProps, ManagedToaster, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type PricingFeature, type PricingPlan, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, TextInput, type TextInputProps, ThreeDActionButton, type ThreeDActionButtonProps, ThreeDButton, type ThreeDButtonProps, UniversalAgentConsole, type UniversalAgentConsoleProps, UniversalBillingPage, type UniversalBillingPageProps, UniversalDashboardPage, type UniversalDashboardPageProps, UniversalDeveloperSettings, type UniversalDeveloperSettingsProps, UniversalDirectoryPage, type UniversalDirectoryPageProps, UniversalErrorView, type UniversalErrorViewProps, UniversalIdentityPage, type UniversalIdentityPageProps, type UniversalInvoice, UniversalLookupPage, type UniversalLookupPageProps, type UniversalMember, UniversalMembersPage, type UniversalMembersPageProps, UniversalOrganizationPage, type UniversalOrganizationPageProps, UniversalOverviewPage, type UniversalOverviewPageProps, UniversalProfileSettings, type UniversalProfileSettingsProps, UniversalRegistrationFlow, type UniversalRegistrationFlowProps, UniversalSidebar, type UniversalSidebarProps, type WorkspaceItem, ZairusAuth, type ZairusAuthProps };
|
package/dist/index.js
CHANGED
|
@@ -62,6 +62,7 @@ __export(index_exports, {
|
|
|
62
62
|
UniversalAgentConsole: () => UniversalAgentConsole,
|
|
63
63
|
UniversalBillingPage: () => UniversalBillingPage,
|
|
64
64
|
UniversalDashboardPage: () => UniversalDashboardPage,
|
|
65
|
+
UniversalDeveloperSettings: () => UniversalDeveloperSettings,
|
|
65
66
|
UniversalDirectoryPage: () => UniversalDirectoryPage,
|
|
66
67
|
UniversalErrorView: () => UniversalErrorView,
|
|
67
68
|
UniversalIdentityPage: () => UniversalIdentityPage,
|
|
@@ -535,8 +536,9 @@ var NavLink = ({
|
|
|
535
536
|
}) => {
|
|
536
537
|
const pathname = (0, import_navigation2.usePathname)();
|
|
537
538
|
const isActive = pathname === href;
|
|
538
|
-
const
|
|
539
|
-
const
|
|
539
|
+
const isRoot = pathname === "/";
|
|
540
|
+
const activeClass = isRoot ? "text-white font-medium" : light ? "text-neutral-950 font-medium" : "text-white font-medium";
|
|
541
|
+
const inactiveClass = isRoot ? "text-white/80 hover:text-white" : light ? "text-neutral-600 hover:text-neutral-950" : "text-neutral-400 hover:text-white";
|
|
540
542
|
return /* @__PURE__ */ import_react7.default.createElement(
|
|
541
543
|
import_link2.default,
|
|
542
544
|
{
|
|
@@ -559,12 +561,14 @@ var Header = ({
|
|
|
559
561
|
compact = false
|
|
560
562
|
// Defaults to false (full width)
|
|
561
563
|
}) => {
|
|
562
|
-
const
|
|
563
|
-
const
|
|
564
|
-
const
|
|
565
|
-
const
|
|
564
|
+
const pathname = (0, import_navigation2.usePathname)();
|
|
565
|
+
const isRoot = pathname === "/";
|
|
566
|
+
const headerBgStyle = light ? "bg-transparent border-white/40 shadow-[0_8px_60px_rgba(0,0,0,0.06)]" : "bg-transparent border-white/10 shadow-[0_8px_60px_rgba(0,0,0,0.2)]";
|
|
567
|
+
const headerLayoutWidth = compact ? "w-fit rounded-full px-4 mt-4 mx-auto gap-8 md:gap-16" : "w-full justify-between";
|
|
568
|
+
const titleColor = isRoot ? "text-white" : light ? "text-black" : "text-white";
|
|
569
|
+
const subtitleColor = isRoot ? "text-white/80" : light ? "text-neutral-500" : "text-neutral-400";
|
|
566
570
|
const hasBrandSection = showLogo || !hideHeaderText;
|
|
567
|
-
return /* @__PURE__ */ import_react7.default.createElement("div", { className: "absolute inset-x-0 top-0 w-full z-50 pointer-events-none
|
|
571
|
+
return /* @__PURE__ */ import_react7.default.createElement("div", { className: "absolute inset-x-0 top-0 w-full z-50 pointer-events-none " }, /* @__PURE__ */ import_react7.default.createElement("div", { className: " mx-auto w-full pointer-events-auto flex justify-center" }, /* @__PURE__ */ import_react7.default.createElement("header", { className: `${headerLayoutWidth} ${headerBgStyle} backdrop-blur-md py-2 px-6 flex items-center transition-all duration-300` }, hasBrandSection && /* @__PURE__ */ import_react7.default.createElement("div", { className: "flex items-center shrink-0" }, /* @__PURE__ */ import_react7.default.createElement(import_link2.default, { href: "/", className: "flex items-center gap-3 transition-opacity hover:opacity-70" }, showLogo && /* @__PURE__ */ import_react7.default.createElement(
|
|
568
572
|
import_image.default,
|
|
569
573
|
{
|
|
570
574
|
src: logoSrc,
|
|
@@ -675,7 +679,7 @@ var HeroSection = ({
|
|
|
675
679
|
className: "w-full sm:w-60 inline-flex items-center justify-center text-[12px] tracking-widest rounded-full px-8 py-2.5 bg-white text-black transition-colors hover:bg-neutral-200 outline-none"
|
|
676
680
|
},
|
|
677
681
|
secondaryCtaText
|
|
678
|
-
)), showImage && /* @__PURE__ */ import_react10.default.createElement("div", { className: "w-full max-w-4xl mx-auto px-2 sm:px-6" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "relative w-full flex flex-col items-center" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "relative w-full
|
|
682
|
+
)), showImage && /* @__PURE__ */ import_react10.default.createElement("div", { className: "w-full max-w-4xl mx-auto px-2 sm:px-6" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "relative w-full flex flex-col items-center" }, /* @__PURE__ */ import_react10.default.createElement("div", { className: "relative w-full aspect-video rounded-xl overflow-hidden" }, /* @__PURE__ */ import_react10.default.createElement(
|
|
679
683
|
import_image2.default,
|
|
680
684
|
{
|
|
681
685
|
src: imageSrc,
|
|
@@ -685,7 +689,7 @@ var HeroSection = ({
|
|
|
685
689
|
className: "object-cover object-top",
|
|
686
690
|
priority: true
|
|
687
691
|
}
|
|
688
|
-
)
|
|
692
|
+
), /* @__PURE__ */ import_react10.default.createElement("div", { className: "absolute inset-x-0 bottom-0 h-1/2 bg-linear-to-t from-[#f5f5f5] via-[#f5f5f5]/80 to-transparent pointer-events-none" }))))));
|
|
689
693
|
};
|
|
690
694
|
|
|
691
695
|
// src/components/AppBento2.tsx
|
|
@@ -3642,6 +3646,151 @@ var UniversalRegistrationFlow = ({
|
|
|
3642
3646
|
}, className: `text-left px-4 py-3 rounded-full text-[13px] transition-colors outline-none ${isSelected ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}` }, opt);
|
|
3643
3647
|
})), /* @__PURE__ */ import_react65.default.createElement("div", { className: "w-full flex mt-auto shrink-0 " }, /* @__PURE__ */ import_react65.default.createElement("button", { onClick: () => setActiveModal({ isOpen: false, type: null, memberIndex: null }), className: "w-full py-4 text-[13px] text-neutral-500 hover:bg-neutral-50 transition-colors outline-none" }, "Close")))));
|
|
3644
3648
|
};
|
|
3649
|
+
|
|
3650
|
+
// src/components/UniversalDeveloperSettings.tsx
|
|
3651
|
+
var import_react67 = __toESM(require("react"));
|
|
3652
|
+
var import_react_hot_toast8 = require("react-hot-toast");
|
|
3653
|
+
var import_react68 = require("@hugeicons/react");
|
|
3654
|
+
var import_core_free_icons22 = require("@hugeicons/core-free-icons");
|
|
3655
|
+
var ButtonSpinner5 = () => /* @__PURE__ */ import_react67.default.createElement(import_react68.HugeiconsIcon, { icon: import_core_free_icons22.Loading03Icon, size: 16, className: "animate-spin text-current" });
|
|
3656
|
+
var UniversalDeveloperSettings = ({
|
|
3657
|
+
initialPublicKey,
|
|
3658
|
+
initialWebhookUrl,
|
|
3659
|
+
isReadOnly = false,
|
|
3660
|
+
onGenerateKeys,
|
|
3661
|
+
onSaveWebhook
|
|
3662
|
+
}) => {
|
|
3663
|
+
const [publicKey, setPublicKey] = (0, import_react67.useState)(initialPublicKey);
|
|
3664
|
+
const [webhookUrl, setWebhookUrl] = (0, import_react67.useState)(initialWebhookUrl);
|
|
3665
|
+
const [isGenerating, setIsGenerating] = (0, import_react67.useState)(false);
|
|
3666
|
+
const [isSavingWebhook, setIsSavingWebhook] = (0, import_react67.useState)(false);
|
|
3667
|
+
const [isRollModalOpen, setIsRollModalOpen] = (0, import_react67.useState)(false);
|
|
3668
|
+
(0, import_react67.useEffect)(() => {
|
|
3669
|
+
setPublicKey(initialPublicKey || "");
|
|
3670
|
+
setWebhookUrl(initialWebhookUrl || "");
|
|
3671
|
+
}, [initialPublicKey, initialWebhookUrl]);
|
|
3672
|
+
const handleWebhookChange = (val) => {
|
|
3673
|
+
setWebhookUrl(val.trim());
|
|
3674
|
+
};
|
|
3675
|
+
const downloadEnvironmentFile = (pubKey, secKey) => {
|
|
3676
|
+
const envContent = `AUDDITUR_PUBLIC_KEY="${pubKey}"
|
|
3677
|
+
AUDDITUR_SECRET_KEY="${secKey}"
|
|
3678
|
+
`;
|
|
3679
|
+
const blob = new Blob([envContent], { type: "text/plain" });
|
|
3680
|
+
const url = URL.createObjectURL(blob);
|
|
3681
|
+
const link = document.createElement("a");
|
|
3682
|
+
link.href = url;
|
|
3683
|
+
link.download = "auditor-keys.env";
|
|
3684
|
+
document.body.appendChild(link);
|
|
3685
|
+
link.click();
|
|
3686
|
+
document.body.removeChild(link);
|
|
3687
|
+
URL.revokeObjectURL(url);
|
|
3688
|
+
};
|
|
3689
|
+
const handleGenerateKeys = async () => {
|
|
3690
|
+
if (isGenerating || isReadOnly) return;
|
|
3691
|
+
setIsGenerating(true);
|
|
3692
|
+
try {
|
|
3693
|
+
const res = await onGenerateKeys();
|
|
3694
|
+
if (res.success && res.data) {
|
|
3695
|
+
setPublicKey(res.data.publicKey);
|
|
3696
|
+
downloadEnvironmentFile(res.data.publicKey, res.data.secretKey);
|
|
3697
|
+
import_react_hot_toast8.toast.success("Keys generated. Check your downloads folder.");
|
|
3698
|
+
setIsRollModalOpen(false);
|
|
3699
|
+
} else {
|
|
3700
|
+
import_react_hot_toast8.toast.error(res.error || "Uh oh! Something went wrong.");
|
|
3701
|
+
}
|
|
3702
|
+
} catch (error) {
|
|
3703
|
+
import_react_hot_toast8.toast.error("Uh oh! Something went wrong.");
|
|
3704
|
+
} finally {
|
|
3705
|
+
setIsGenerating(false);
|
|
3706
|
+
}
|
|
3707
|
+
};
|
|
3708
|
+
const handleSaveWebhook = async (e) => {
|
|
3709
|
+
e.preventDefault();
|
|
3710
|
+
if (isSavingWebhook || isReadOnly) return;
|
|
3711
|
+
setIsSavingWebhook(true);
|
|
3712
|
+
try {
|
|
3713
|
+
const res = await onSaveWebhook(webhookUrl);
|
|
3714
|
+
if (res.success && res.data) {
|
|
3715
|
+
setWebhookUrl(res.data.webhookUrl || "");
|
|
3716
|
+
import_react_hot_toast8.toast.success("Webhook URL updated.");
|
|
3717
|
+
} else {
|
|
3718
|
+
import_react_hot_toast8.toast.error(res.error || "Uh oh! Something went wrong.");
|
|
3719
|
+
}
|
|
3720
|
+
} catch (error) {
|
|
3721
|
+
import_react_hot_toast8.toast.error("Uh oh! Something went wrong.");
|
|
3722
|
+
} finally {
|
|
3723
|
+
setIsSavingWebhook(false);
|
|
3724
|
+
}
|
|
3725
|
+
};
|
|
3726
|
+
const hasWebhookChanges = webhookUrl !== initialWebhookUrl;
|
|
3727
|
+
const isWebhookSaveDisabled = isSavingWebhook || isReadOnly || !hasWebhookChanges;
|
|
3728
|
+
return /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 min-h-full" }, /* @__PURE__ */ import_react67.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react67.default.createElement("h1", { className: "font-serif text-xl text-black mb-1 truncate tracking-tight" }, "Developer Settings"), /* @__PURE__ */ import_react67.default.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your API credentials and webhook integrations.")), isReadOnly && /* @__PURE__ */ import_react67.default.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), /* @__PURE__ */ import_react67.default.createElement("div", { className: "w-full max-w-2xl flex flex-col gap-12" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react67.default.createElement(
|
|
3729
|
+
TextInput,
|
|
3730
|
+
{
|
|
3731
|
+
label: "Public Key",
|
|
3732
|
+
value: publicKey || "No key generated yet",
|
|
3733
|
+
onChange: () => {
|
|
3734
|
+
},
|
|
3735
|
+
disabled: true
|
|
3736
|
+
}
|
|
3737
|
+
), /* @__PURE__ */ import_react67.default.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 leading-snug" }, "Your public key is used to identify your application. Your secret key will only be shown once upon generation.")), /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ import_react67.default.createElement(
|
|
3738
|
+
ThreeDActionButton,
|
|
3739
|
+
{
|
|
3740
|
+
onClick: () => {
|
|
3741
|
+
if (publicKey) setIsRollModalOpen(true);
|
|
3742
|
+
else handleGenerateKeys();
|
|
3743
|
+
},
|
|
3744
|
+
disabled: isGenerating || isReadOnly,
|
|
3745
|
+
isLoading: isGenerating,
|
|
3746
|
+
className: "w-fit"
|
|
3747
|
+
},
|
|
3748
|
+
publicKey ? "Roll API Keys" : "Generate Keys"
|
|
3749
|
+
))), /* @__PURE__ */ import_react67.default.createElement("form", { className: "flex flex-col gap-6 border-t border-neutral-100 pt-8", onSubmit: handleSaveWebhook, autoComplete: "off" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ import_react67.default.createElement(
|
|
3750
|
+
TextInput,
|
|
3751
|
+
{
|
|
3752
|
+
label: "Webhook URL",
|
|
3753
|
+
value: webhookUrl,
|
|
3754
|
+
onChange: handleWebhookChange,
|
|
3755
|
+
disabled: isReadOnly || isSavingWebhook,
|
|
3756
|
+
placeholder: "https://your-domain.com/webhook",
|
|
3757
|
+
type: "url"
|
|
3758
|
+
}
|
|
3759
|
+
), /* @__PURE__ */ import_react67.default.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 leading-snug" }, "We will send secure POST requests to this endpoint when significant events occur. Must use HTTPS.")), /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between mt-2 gap-6 sm:gap-4" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ import_react67.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Webhook Status"), /* @__PURE__ */ import_react67.default.createElement("span", { className: `text-xs block truncate ${webhookUrl ? "text-emerald-600" : "text-neutral-400"}` }, webhookUrl ? "Active" : "Inactive"))), /* @__PURE__ */ import_react67.default.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasWebhookChanges && !isSavingWebhook && !isReadOnly && /* @__PURE__ */ import_react67.default.createElement(
|
|
3760
|
+
"button",
|
|
3761
|
+
{
|
|
3762
|
+
type: "button",
|
|
3763
|
+
onClick: () => setWebhookUrl(initialWebhookUrl),
|
|
3764
|
+
className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors w-full sm:w-auto py-2 sm:py-0 outline-none"
|
|
3765
|
+
},
|
|
3766
|
+
"Cancel"
|
|
3767
|
+
), /* @__PURE__ */ import_react67.default.createElement(
|
|
3768
|
+
ThreeDActionButton,
|
|
3769
|
+
{
|
|
3770
|
+
type: "submit",
|
|
3771
|
+
disabled: isWebhookSaveDisabled,
|
|
3772
|
+
isLoading: isSavingWebhook,
|
|
3773
|
+
className: "min-w-32 w-full sm:w-auto"
|
|
3774
|
+
},
|
|
3775
|
+
"Save Webhook"
|
|
3776
|
+
))))), isRollModalOpen && !isReadOnly && /* @__PURE__ */ import_react67.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isGenerating && setIsRollModalOpen(false) }), /* @__PURE__ */ import_react67.default.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ import_react67.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react67.default.createElement("h3", { className: "font-serif text-[17px] text-black tracking-tight mb-1" }, "Roll API Keys"), /* @__PURE__ */ import_react67.default.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to roll your keys? This will permanently invalidate your current secret key and active MCP tokens.")), /* @__PURE__ */ import_react67.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react67.default.createElement(
|
|
3777
|
+
"button",
|
|
3778
|
+
{
|
|
3779
|
+
onClick: () => setIsRollModalOpen(false),
|
|
3780
|
+
disabled: isGenerating,
|
|
3781
|
+
className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
|
|
3782
|
+
},
|
|
3783
|
+
"Cancel"
|
|
3784
|
+
), /* @__PURE__ */ import_react67.default.createElement(
|
|
3785
|
+
"button",
|
|
3786
|
+
{
|
|
3787
|
+
onClick: handleGenerateKeys,
|
|
3788
|
+
disabled: isGenerating,
|
|
3789
|
+
className: "flex-1 py-2 text-[13px] text-red-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center outline-none"
|
|
3790
|
+
},
|
|
3791
|
+
isGenerating ? /* @__PURE__ */ import_react67.default.createElement(ButtonSpinner5, null) : "Roll Keys"
|
|
3792
|
+
)))));
|
|
3793
|
+
};
|
|
3645
3794
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3646
3795
|
0 && (module.exports = {
|
|
3647
3796
|
AITranscriptionFeature,
|
|
@@ -3675,6 +3824,7 @@ var UniversalRegistrationFlow = ({
|
|
|
3675
3824
|
UniversalAgentConsole,
|
|
3676
3825
|
UniversalBillingPage,
|
|
3677
3826
|
UniversalDashboardPage,
|
|
3827
|
+
UniversalDeveloperSettings,
|
|
3678
3828
|
UniversalDirectoryPage,
|
|
3679
3829
|
UniversalErrorView,
|
|
3680
3830
|
UniversalIdentityPage,
|
package/dist/index.mjs
CHANGED
|
@@ -459,8 +459,9 @@ var NavLink = ({
|
|
|
459
459
|
}) => {
|
|
460
460
|
const pathname = usePathname();
|
|
461
461
|
const isActive = pathname === href;
|
|
462
|
-
const
|
|
463
|
-
const
|
|
462
|
+
const isRoot = pathname === "/";
|
|
463
|
+
const activeClass = isRoot ? "text-white font-medium" : light ? "text-neutral-950 font-medium" : "text-white font-medium";
|
|
464
|
+
const inactiveClass = isRoot ? "text-white/80 hover:text-white" : light ? "text-neutral-600 hover:text-neutral-950" : "text-neutral-400 hover:text-white";
|
|
464
465
|
return /* @__PURE__ */ React5.createElement(
|
|
465
466
|
Link2,
|
|
466
467
|
{
|
|
@@ -483,12 +484,14 @@ var Header = ({
|
|
|
483
484
|
compact = false
|
|
484
485
|
// Defaults to false (full width)
|
|
485
486
|
}) => {
|
|
486
|
-
const
|
|
487
|
-
const
|
|
488
|
-
const
|
|
489
|
-
const
|
|
487
|
+
const pathname = usePathname();
|
|
488
|
+
const isRoot = pathname === "/";
|
|
489
|
+
const headerBgStyle = light ? "bg-transparent border-white/40 shadow-[0_8px_60px_rgba(0,0,0,0.06)]" : "bg-transparent border-white/10 shadow-[0_8px_60px_rgba(0,0,0,0.2)]";
|
|
490
|
+
const headerLayoutWidth = compact ? "w-fit rounded-full px-4 mt-4 mx-auto gap-8 md:gap-16" : "w-full justify-between";
|
|
491
|
+
const titleColor = isRoot ? "text-white" : light ? "text-black" : "text-white";
|
|
492
|
+
const subtitleColor = isRoot ? "text-white/80" : light ? "text-neutral-500" : "text-neutral-400";
|
|
490
493
|
const hasBrandSection = showLogo || !hideHeaderText;
|
|
491
|
-
return /* @__PURE__ */ React5.createElement("div", { className: "absolute inset-x-0 top-0 w-full z-50 pointer-events-none
|
|
494
|
+
return /* @__PURE__ */ React5.createElement("div", { className: "absolute inset-x-0 top-0 w-full z-50 pointer-events-none " }, /* @__PURE__ */ React5.createElement("div", { className: " mx-auto w-full pointer-events-auto flex justify-center" }, /* @__PURE__ */ React5.createElement("header", { className: `${headerLayoutWidth} ${headerBgStyle} backdrop-blur-md py-2 px-6 flex items-center transition-all duration-300` }, hasBrandSection && /* @__PURE__ */ React5.createElement("div", { className: "flex items-center shrink-0" }, /* @__PURE__ */ React5.createElement(Link2, { href: "/", className: "flex items-center gap-3 transition-opacity hover:opacity-70" }, showLogo && /* @__PURE__ */ React5.createElement(
|
|
492
495
|
Image,
|
|
493
496
|
{
|
|
494
497
|
src: logoSrc,
|
|
@@ -599,7 +602,7 @@ var HeroSection = ({
|
|
|
599
602
|
className: "w-full sm:w-60 inline-flex items-center justify-center text-[12px] tracking-widest rounded-full px-8 py-2.5 bg-white text-black transition-colors hover:bg-neutral-200 outline-none"
|
|
600
603
|
},
|
|
601
604
|
secondaryCtaText
|
|
602
|
-
)), showImage && /* @__PURE__ */ React7.createElement("div", { className: "w-full max-w-4xl mx-auto px-2 sm:px-6" }, /* @__PURE__ */ React7.createElement("div", { className: "relative w-full flex flex-col items-center" }, /* @__PURE__ */ React7.createElement("div", { className: "relative w-full
|
|
605
|
+
)), showImage && /* @__PURE__ */ React7.createElement("div", { className: "w-full max-w-4xl mx-auto px-2 sm:px-6" }, /* @__PURE__ */ React7.createElement("div", { className: "relative w-full flex flex-col items-center" }, /* @__PURE__ */ React7.createElement("div", { className: "relative w-full aspect-video rounded-xl overflow-hidden" }, /* @__PURE__ */ React7.createElement(
|
|
603
606
|
Image2,
|
|
604
607
|
{
|
|
605
608
|
src: imageSrc,
|
|
@@ -609,7 +612,7 @@ var HeroSection = ({
|
|
|
609
612
|
className: "object-cover object-top",
|
|
610
613
|
priority: true
|
|
611
614
|
}
|
|
612
|
-
)
|
|
615
|
+
), /* @__PURE__ */ React7.createElement("div", { className: "absolute inset-x-0 bottom-0 h-1/2 bg-linear-to-t from-[#f5f5f5] via-[#f5f5f5]/80 to-transparent pointer-events-none" }))))));
|
|
613
616
|
};
|
|
614
617
|
|
|
615
618
|
// src/components/AppBento2.tsx
|
|
@@ -3601,6 +3604,151 @@ var UniversalRegistrationFlow = ({
|
|
|
3601
3604
|
}, className: `text-left px-4 py-3 rounded-full text-[13px] transition-colors outline-none ${isSelected ? "bg-neutral-100 text-black" : "text-neutral-500 hover:bg-neutral-50 hover:text-black"}` }, opt);
|
|
3602
3605
|
})), /* @__PURE__ */ React41.createElement("div", { className: "w-full flex mt-auto shrink-0 " }, /* @__PURE__ */ React41.createElement("button", { onClick: () => setActiveModal({ isOpen: false, type: null, memberIndex: null }), className: "w-full py-4 text-[13px] text-neutral-500 hover:bg-neutral-50 transition-colors outline-none" }, "Close")))));
|
|
3603
3606
|
};
|
|
3607
|
+
|
|
3608
|
+
// src/components/UniversalDeveloperSettings.tsx
|
|
3609
|
+
import React42, { useState as useState21, useEffect as useEffect12 } from "react";
|
|
3610
|
+
import { toast as toast7 } from "react-hot-toast";
|
|
3611
|
+
import { HugeiconsIcon as HugeiconsIcon26 } from "@hugeicons/react";
|
|
3612
|
+
import { Loading03Icon as Loading03Icon13 } from "@hugeicons/core-free-icons";
|
|
3613
|
+
var ButtonSpinner5 = () => /* @__PURE__ */ React42.createElement(HugeiconsIcon26, { icon: Loading03Icon13, size: 16, className: "animate-spin text-current" });
|
|
3614
|
+
var UniversalDeveloperSettings = ({
|
|
3615
|
+
initialPublicKey,
|
|
3616
|
+
initialWebhookUrl,
|
|
3617
|
+
isReadOnly = false,
|
|
3618
|
+
onGenerateKeys,
|
|
3619
|
+
onSaveWebhook
|
|
3620
|
+
}) => {
|
|
3621
|
+
const [publicKey, setPublicKey] = useState21(initialPublicKey);
|
|
3622
|
+
const [webhookUrl, setWebhookUrl] = useState21(initialWebhookUrl);
|
|
3623
|
+
const [isGenerating, setIsGenerating] = useState21(false);
|
|
3624
|
+
const [isSavingWebhook, setIsSavingWebhook] = useState21(false);
|
|
3625
|
+
const [isRollModalOpen, setIsRollModalOpen] = useState21(false);
|
|
3626
|
+
useEffect12(() => {
|
|
3627
|
+
setPublicKey(initialPublicKey || "");
|
|
3628
|
+
setWebhookUrl(initialWebhookUrl || "");
|
|
3629
|
+
}, [initialPublicKey, initialWebhookUrl]);
|
|
3630
|
+
const handleWebhookChange = (val) => {
|
|
3631
|
+
setWebhookUrl(val.trim());
|
|
3632
|
+
};
|
|
3633
|
+
const downloadEnvironmentFile = (pubKey, secKey) => {
|
|
3634
|
+
const envContent = `AUDDITUR_PUBLIC_KEY="${pubKey}"
|
|
3635
|
+
AUDDITUR_SECRET_KEY="${secKey}"
|
|
3636
|
+
`;
|
|
3637
|
+
const blob = new Blob([envContent], { type: "text/plain" });
|
|
3638
|
+
const url = URL.createObjectURL(blob);
|
|
3639
|
+
const link = document.createElement("a");
|
|
3640
|
+
link.href = url;
|
|
3641
|
+
link.download = "auditor-keys.env";
|
|
3642
|
+
document.body.appendChild(link);
|
|
3643
|
+
link.click();
|
|
3644
|
+
document.body.removeChild(link);
|
|
3645
|
+
URL.revokeObjectURL(url);
|
|
3646
|
+
};
|
|
3647
|
+
const handleGenerateKeys = async () => {
|
|
3648
|
+
if (isGenerating || isReadOnly) return;
|
|
3649
|
+
setIsGenerating(true);
|
|
3650
|
+
try {
|
|
3651
|
+
const res = await onGenerateKeys();
|
|
3652
|
+
if (res.success && res.data) {
|
|
3653
|
+
setPublicKey(res.data.publicKey);
|
|
3654
|
+
downloadEnvironmentFile(res.data.publicKey, res.data.secretKey);
|
|
3655
|
+
toast7.success("Keys generated. Check your downloads folder.");
|
|
3656
|
+
setIsRollModalOpen(false);
|
|
3657
|
+
} else {
|
|
3658
|
+
toast7.error(res.error || "Uh oh! Something went wrong.");
|
|
3659
|
+
}
|
|
3660
|
+
} catch (error) {
|
|
3661
|
+
toast7.error("Uh oh! Something went wrong.");
|
|
3662
|
+
} finally {
|
|
3663
|
+
setIsGenerating(false);
|
|
3664
|
+
}
|
|
3665
|
+
};
|
|
3666
|
+
const handleSaveWebhook = async (e) => {
|
|
3667
|
+
e.preventDefault();
|
|
3668
|
+
if (isSavingWebhook || isReadOnly) return;
|
|
3669
|
+
setIsSavingWebhook(true);
|
|
3670
|
+
try {
|
|
3671
|
+
const res = await onSaveWebhook(webhookUrl);
|
|
3672
|
+
if (res.success && res.data) {
|
|
3673
|
+
setWebhookUrl(res.data.webhookUrl || "");
|
|
3674
|
+
toast7.success("Webhook URL updated.");
|
|
3675
|
+
} else {
|
|
3676
|
+
toast7.error(res.error || "Uh oh! Something went wrong.");
|
|
3677
|
+
}
|
|
3678
|
+
} catch (error) {
|
|
3679
|
+
toast7.error("Uh oh! Something went wrong.");
|
|
3680
|
+
} finally {
|
|
3681
|
+
setIsSavingWebhook(false);
|
|
3682
|
+
}
|
|
3683
|
+
};
|
|
3684
|
+
const hasWebhookChanges = webhookUrl !== initialWebhookUrl;
|
|
3685
|
+
const isWebhookSaveDisabled = isSavingWebhook || isReadOnly || !hasWebhookChanges;
|
|
3686
|
+
return /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col max-w-3xl rounded-2xl p-6 bg-white gap-8 animate-in fade-in duration-300 min-h-full" }, /* @__PURE__ */ React42.createElement(ManagedToaster, null), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-3 sm:gap-4" }, /* @__PURE__ */ React42.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React42.createElement("h1", { className: "font-serif text-xl text-black mb-1 truncate tracking-tight" }, "Developer Settings"), /* @__PURE__ */ React42.createElement("p", { className: "text-xs text-neutral-500 truncate" }, "Manage your API credentials and webhook integrations.")), isReadOnly && /* @__PURE__ */ React42.createElement("span", { className: "px-3 py-1 bg-neutral-50 text-neutral-500 rounded-full text-[10px] tracking-[0.2em] shrink-0 w-fit" }, "Read Only Access")), /* @__PURE__ */ React42.createElement("div", { className: "w-full max-w-2xl flex flex-col gap-12" }, /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col gap-6" }, /* @__PURE__ */ React42.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ React42.createElement(
|
|
3687
|
+
TextInput,
|
|
3688
|
+
{
|
|
3689
|
+
label: "Public Key",
|
|
3690
|
+
value: publicKey || "No key generated yet",
|
|
3691
|
+
onChange: () => {
|
|
3692
|
+
},
|
|
3693
|
+
disabled: true
|
|
3694
|
+
}
|
|
3695
|
+
), /* @__PURE__ */ React42.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 leading-snug" }, "Your public key is used to identify your application. Your secret key will only be shown once upon generation.")), /* @__PURE__ */ React42.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React42.createElement(
|
|
3696
|
+
ThreeDActionButton,
|
|
3697
|
+
{
|
|
3698
|
+
onClick: () => {
|
|
3699
|
+
if (publicKey) setIsRollModalOpen(true);
|
|
3700
|
+
else handleGenerateKeys();
|
|
3701
|
+
},
|
|
3702
|
+
disabled: isGenerating || isReadOnly,
|
|
3703
|
+
isLoading: isGenerating,
|
|
3704
|
+
className: "w-fit"
|
|
3705
|
+
},
|
|
3706
|
+
publicKey ? "Roll API Keys" : "Generate Keys"
|
|
3707
|
+
))), /* @__PURE__ */ React42.createElement("form", { className: "flex flex-col gap-6 border-t border-neutral-100 pt-8", onSubmit: handleSaveWebhook, autoComplete: "off" }, /* @__PURE__ */ React42.createElement("div", { className: "space-y-2 min-w-0" }, /* @__PURE__ */ React42.createElement(
|
|
3708
|
+
TextInput,
|
|
3709
|
+
{
|
|
3710
|
+
label: "Webhook URL",
|
|
3711
|
+
value: webhookUrl,
|
|
3712
|
+
onChange: handleWebhookChange,
|
|
3713
|
+
disabled: isReadOnly || isSavingWebhook,
|
|
3714
|
+
placeholder: "https://your-domain.com/webhook",
|
|
3715
|
+
type: "url"
|
|
3716
|
+
}
|
|
3717
|
+
), /* @__PURE__ */ React42.createElement("p", { className: "text-[10px] text-neutral-400 mt-1 leading-snug" }, "We will send secure POST requests to this endpoint when significant events occur. Must use HTTPS.")), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between mt-2 gap-6 sm:gap-4" }, /* @__PURE__ */ React42.createElement("div", { className: "flex items-center gap-6 min-w-0" }, /* @__PURE__ */ React42.createElement("div", { className: "min-w-0" }, /* @__PURE__ */ React42.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] block truncate uppercase" }, "Webhook Status"), /* @__PURE__ */ React42.createElement("span", { className: `text-xs block truncate ${webhookUrl ? "text-emerald-600" : "text-neutral-400"}` }, webhookUrl ? "Active" : "Inactive"))), /* @__PURE__ */ React42.createElement("div", { className: "flex flex-col-reverse sm:flex-row items-center gap-3 sm:gap-4 w-full sm:w-auto shrink-0" }, hasWebhookChanges && !isSavingWebhook && !isReadOnly && /* @__PURE__ */ React42.createElement(
|
|
3718
|
+
"button",
|
|
3719
|
+
{
|
|
3720
|
+
type: "button",
|
|
3721
|
+
onClick: () => setWebhookUrl(initialWebhookUrl),
|
|
3722
|
+
className: "text-[11px] tracking-widest text-neutral-500 hover:text-black transition-colors w-full sm:w-auto py-2 sm:py-0 outline-none"
|
|
3723
|
+
},
|
|
3724
|
+
"Cancel"
|
|
3725
|
+
), /* @__PURE__ */ React42.createElement(
|
|
3726
|
+
ThreeDActionButton,
|
|
3727
|
+
{
|
|
3728
|
+
type: "submit",
|
|
3729
|
+
disabled: isWebhookSaveDisabled,
|
|
3730
|
+
isLoading: isSavingWebhook,
|
|
3731
|
+
className: "min-w-32 w-full sm:w-auto"
|
|
3732
|
+
},
|
|
3733
|
+
"Save Webhook"
|
|
3734
|
+
))))), isRollModalOpen && !isReadOnly && /* @__PURE__ */ React42.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ React42.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isGenerating && setIsRollModalOpen(false) }), /* @__PURE__ */ React42.createElement("div", { className: "relative w-72 bg-white shadow-2xl rounded-2xl flex flex-col items-center overflow-hidden animate-in zoom-in-95 duration-200" }, /* @__PURE__ */ React42.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ React42.createElement("h3", { className: "font-serif text-[17px] text-black tracking-tight mb-1" }, "Roll API Keys"), /* @__PURE__ */ React42.createElement("p", { className: "text-[12px] text-neutral-500 leading-snug mt-2" }, "Are you sure you want to roll your keys? This will permanently invalidate your current secret key and active MCP tokens.")), /* @__PURE__ */ React42.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ React42.createElement(
|
|
3735
|
+
"button",
|
|
3736
|
+
{
|
|
3737
|
+
onClick: () => setIsRollModalOpen(false),
|
|
3738
|
+
disabled: isGenerating,
|
|
3739
|
+
className: "flex-1 py-2 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
|
|
3740
|
+
},
|
|
3741
|
+
"Cancel"
|
|
3742
|
+
), /* @__PURE__ */ React42.createElement(
|
|
3743
|
+
"button",
|
|
3744
|
+
{
|
|
3745
|
+
onClick: handleGenerateKeys,
|
|
3746
|
+
disabled: isGenerating,
|
|
3747
|
+
className: "flex-1 py-2 text-[13px] text-red-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 flex justify-center outline-none"
|
|
3748
|
+
},
|
|
3749
|
+
isGenerating ? /* @__PURE__ */ React42.createElement(ButtonSpinner5, null) : "Roll Keys"
|
|
3750
|
+
)))));
|
|
3751
|
+
};
|
|
3604
3752
|
export {
|
|
3605
3753
|
AITranscriptionFeature,
|
|
3606
3754
|
AiApproveDecline,
|
|
@@ -3633,6 +3781,7 @@ export {
|
|
|
3633
3781
|
UniversalAgentConsole,
|
|
3634
3782
|
UniversalBillingPage,
|
|
3635
3783
|
UniversalDashboardPage,
|
|
3784
|
+
UniversalDeveloperSettings,
|
|
3636
3785
|
UniversalDirectoryPage,
|
|
3637
3786
|
UniversalErrorView,
|
|
3638
3787
|
UniversalIdentityPage,
|