@retinalabsllc/zairusjs 0.9.8 → 0.9.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 +3 -7
- package/dist/index.d.ts +3 -7
- package/dist/index.js +85 -14
- package/dist/index.mjs +85 -14
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -447,6 +447,7 @@ interface GifFeatureCardProps {
|
|
|
447
447
|
}
|
|
448
448
|
declare const GifFeatureCard: React.FC<GifFeatureCardProps>;
|
|
449
449
|
|
|
450
|
+
type AppTypeKey = 'docx' | 'sheets' | 'mail' | 'calendar' | 'drive' | 'audditur' | 'desktop' | 'admin' | 'unknown';
|
|
450
451
|
interface NavItem {
|
|
451
452
|
name: string;
|
|
452
453
|
path: string;
|
|
@@ -458,18 +459,13 @@ interface WorkspaceItem {
|
|
|
458
459
|
role: string;
|
|
459
460
|
}
|
|
460
461
|
interface UniversalSidebarProps {
|
|
461
|
-
/** Navigation items to render */
|
|
462
462
|
navItems: NavItem[];
|
|
463
|
-
/** The current active path to determine highlight state */
|
|
464
463
|
currentPath: string;
|
|
465
|
-
/** Mobile drawer state */
|
|
466
464
|
isMobileOpen: boolean;
|
|
467
|
-
/** Function to close the mobile drawer */
|
|
468
465
|
closeMobile: () => void;
|
|
469
|
-
/** Function to open the mobile drawer (used by the floating mobile button) */
|
|
470
466
|
openMobile: () => void;
|
|
471
|
-
/** Optional click interceptor (useful for unsaved changes warnings) */
|
|
472
467
|
onNavClick?: (e: React.MouseEvent<HTMLAnchorElement>, path: string) => void;
|
|
468
|
+
currentAppType?: AppTypeKey;
|
|
473
469
|
title?: string;
|
|
474
470
|
subtitle?: string;
|
|
475
471
|
homeUrl?: string;
|
|
@@ -1004,4 +1000,4 @@ interface ContentGridBlockProps {
|
|
|
1004
1000
|
}
|
|
1005
1001
|
declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
|
|
1006
1002
|
|
|
1007
|
-
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 ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, 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, type AppLogo$1 as HeroAppLogo, 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, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, 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 };
|
|
1003
|
+
export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, type AppTypeKey, Banner, type BannerProps, type BentoFeature, type BoardMember, type CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, 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, type AppLogo$1 as HeroAppLogo, 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, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, 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
|
@@ -447,6 +447,7 @@ interface GifFeatureCardProps {
|
|
|
447
447
|
}
|
|
448
448
|
declare const GifFeatureCard: React.FC<GifFeatureCardProps>;
|
|
449
449
|
|
|
450
|
+
type AppTypeKey = 'docx' | 'sheets' | 'mail' | 'calendar' | 'drive' | 'audditur' | 'desktop' | 'admin' | 'unknown';
|
|
450
451
|
interface NavItem {
|
|
451
452
|
name: string;
|
|
452
453
|
path: string;
|
|
@@ -458,18 +459,13 @@ interface WorkspaceItem {
|
|
|
458
459
|
role: string;
|
|
459
460
|
}
|
|
460
461
|
interface UniversalSidebarProps {
|
|
461
|
-
/** Navigation items to render */
|
|
462
462
|
navItems: NavItem[];
|
|
463
|
-
/** The current active path to determine highlight state */
|
|
464
463
|
currentPath: string;
|
|
465
|
-
/** Mobile drawer state */
|
|
466
464
|
isMobileOpen: boolean;
|
|
467
|
-
/** Function to close the mobile drawer */
|
|
468
465
|
closeMobile: () => void;
|
|
469
|
-
/** Function to open the mobile drawer (used by the floating mobile button) */
|
|
470
466
|
openMobile: () => void;
|
|
471
|
-
/** Optional click interceptor (useful for unsaved changes warnings) */
|
|
472
467
|
onNavClick?: (e: React.MouseEvent<HTMLAnchorElement>, path: string) => void;
|
|
468
|
+
currentAppType?: AppTypeKey;
|
|
473
469
|
title?: string;
|
|
474
470
|
subtitle?: string;
|
|
475
471
|
homeUrl?: string;
|
|
@@ -1004,4 +1000,4 @@ interface ContentGridBlockProps {
|
|
|
1004
1000
|
}
|
|
1005
1001
|
declare const ContentGridBlock: React.FC<ContentGridBlockProps>;
|
|
1006
1002
|
|
|
1007
|
-
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 ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, 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, type AppLogo$1 as HeroAppLogo, 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, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, 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 };
|
|
1003
|
+
export { AITranscriptionFeature, type AITranscriptionFeatureProps, type AgentFilePayload, type AgentStat, AiApproveDecline, type AiApproveDeclineProps, AiStageCheck, type AiStageCheckProps, type AiTask, type AiTaskStatus, AppBento2, type AppBento2Props, type AppTypeKey, Banner, type BannerProps, type BentoFeature, type BoardMember, type CompanyDetails, type CompanyMember, type ConsultantProfile, ConsultantShowcase, type ConsultantShowcaseProps, ContentGridBlock, type ContentGridBlockProps, 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, type AppLogo$1 as HeroAppLogo, 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, MedicalFeatureStatsBlock, type NavItem, NumberInput, type NumberInputProps, type OverviewAlert, type OverviewStat, PageSpinner, type PageSpinnerProps, type PlatformFeatureItem, PlatformFeatures, type PlatformFeaturesProps, PortfolioHero, type PortfolioHeroProps, type AppLogo as PricingAppLogo, type PricingFeature, type PricingPlan, ProductHero, type ProductHeroProps, type ProjectItem, type ScrollFeature, type SearchTypeOption, type SocialContact, type SocialLink, Stagger, type StaggerProps, type StatItem, 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
|
@@ -1701,6 +1701,15 @@ var import_link9 = __toESM(require("next/link"));
|
|
|
1701
1701
|
var import_react37 = require("@hugeicons/react");
|
|
1702
1702
|
var import_core_free_icons8 = require("@hugeicons/core-free-icons");
|
|
1703
1703
|
var ButtonSpinner = () => /* @__PURE__ */ import_react36.default.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ import_react36.default.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ import_react36.default.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
|
|
1704
|
+
var ECOSYSTEM_APPS = [
|
|
1705
|
+
{ id: "desktop", name: "Retina Desktop", description: "Unified AI Workspace", iconSrc: "https://retinalabs.company/assets/images/desktop.avif", url: "https://retinadesktop.com/app" },
|
|
1706
|
+
{ id: "audditur", name: "Audditur", description: "AI Legal & Compliance", iconSrc: "https://retinalabs.company/assets/images/audditur.avif", url: "https://audditur.retinaapps.com/app" },
|
|
1707
|
+
{ id: "docx", name: "Retina Docx", description: "Collaborative Word Processing", iconSrc: "https://retinalabs.company/assets/images/docx.avif", url: "https://docx.retinaapps.com/app" },
|
|
1708
|
+
{ id: "sheets", name: "Retina Sheets", description: "Advanced Spreadsheets", iconSrc: "https://retinalabs.company/assets/images/sheets.avif", url: "https://sheets.retinaapps.com/app" },
|
|
1709
|
+
{ id: "drive", name: "Retina Drive", description: "Secure Cloud Storage", iconSrc: "https://retinalabs.company/assets/images/drive.avif", url: "https://drive.retinaapps.com/app" },
|
|
1710
|
+
{ id: "calendar", name: "Retina Calendar", description: "Smart Scheduling", iconSrc: "https://retinalabs.company/assets/images/calendar.avif", url: "https://calendar.retinaapps.com/app" },
|
|
1711
|
+
{ id: "mail", name: "Retina Mail", description: "Encrypted Communications", iconSrc: "https://retinalabs.company/assets/images/mail.avif", url: "https://mail.retinaapps.com/app" }
|
|
1712
|
+
];
|
|
1704
1713
|
var UniversalSidebar = ({
|
|
1705
1714
|
navItems,
|
|
1706
1715
|
currentPath,
|
|
@@ -1708,7 +1717,7 @@ var UniversalSidebar = ({
|
|
|
1708
1717
|
closeMobile,
|
|
1709
1718
|
openMobile,
|
|
1710
1719
|
onNavClick,
|
|
1711
|
-
|
|
1720
|
+
currentAppType = "unknown",
|
|
1712
1721
|
title = "App",
|
|
1713
1722
|
subtitle,
|
|
1714
1723
|
homeUrl = "/app",
|
|
@@ -1720,7 +1729,6 @@ var UniversalSidebar = ({
|
|
|
1720
1729
|
onSwitchWorkspace,
|
|
1721
1730
|
showLogoutAction = false,
|
|
1722
1731
|
onLogout,
|
|
1723
|
-
// Intercept
|
|
1724
1732
|
showInterceptDialog = false,
|
|
1725
1733
|
onCancelIntercept,
|
|
1726
1734
|
onConfirmIntercept,
|
|
@@ -1728,6 +1736,7 @@ var UniversalSidebar = ({
|
|
|
1728
1736
|
interceptMessage = "Are you sure you want to leave? All unsaved changes will be lost."
|
|
1729
1737
|
}) => {
|
|
1730
1738
|
const [isCollapsed, setIsCollapsed] = (0, import_react36.useState)(false);
|
|
1739
|
+
const [showAppSwitcherDialog, setShowAppSwitcherDialog] = (0, import_react36.useState)(false);
|
|
1731
1740
|
const [showSwitcherDialog, setShowSwitcherDialog] = (0, import_react36.useState)(false);
|
|
1732
1741
|
const [showLogoutDialog, setShowLogoutDialog] = (0, import_react36.useState)(false);
|
|
1733
1742
|
const [isLoggingOut, setIsLoggingOut] = (0, import_react36.useState)(false);
|
|
@@ -1749,11 +1758,12 @@ var UniversalSidebar = ({
|
|
|
1749
1758
|
setShowLogoutDialog(false);
|
|
1750
1759
|
}
|
|
1751
1760
|
};
|
|
1761
|
+
const currentAppConfig = ECOSYSTEM_APPS.find((app) => app.id === currentAppType);
|
|
1752
1762
|
return /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, /* @__PURE__ */ import_react36.default.createElement("div", { className: "md:hidden fixed top-0 left-0 w-full h-16 bg-neutral-100 z-40 flex items-center justify-between px-4" }, /* @__PURE__ */ import_react36.default.createElement(
|
|
1753
1763
|
"button",
|
|
1754
1764
|
{
|
|
1755
1765
|
onClick: openMobile,
|
|
1756
|
-
className: `w-10 h-10 bg-white rounded-full flex items-center justify-center
|
|
1766
|
+
className: `w-10 h-10 bg-white rounded-full flex items-center justify-center text-black transition-all duration-300 outline-none ${isMobileOpen ? "opacity-0 pointer-events-none scale-90" : "opacity-100 scale-100"}`,
|
|
1757
1767
|
"aria-label": "Open Menu"
|
|
1758
1768
|
},
|
|
1759
1769
|
/* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons8.SidebarLeft01Icon, size: 18 })
|
|
@@ -1761,7 +1771,7 @@ var UniversalSidebar = ({
|
|
|
1761
1771
|
import_link9.default,
|
|
1762
1772
|
{
|
|
1763
1773
|
href: backUrl,
|
|
1764
|
-
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center
|
|
1774
|
+
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center text-black hover:bg-neutral-50 transition-all duration-300 outline-none",
|
|
1765
1775
|
"aria-label": "Go Back"
|
|
1766
1776
|
},
|
|
1767
1777
|
/* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons8.ArrowLeft01Icon, size: 18 })
|
|
@@ -1769,7 +1779,7 @@ var UniversalSidebar = ({
|
|
|
1769
1779
|
import_link9.default,
|
|
1770
1780
|
{
|
|
1771
1781
|
href: backUrl,
|
|
1772
|
-
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center
|
|
1782
|
+
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center text-black hover:bg-neutral-50 transition-all duration-300 outline-none pointer-events-auto",
|
|
1773
1783
|
"aria-label": "Go Back"
|
|
1774
1784
|
},
|
|
1775
1785
|
/* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons8.ArrowLeft01Icon, size: 18 })
|
|
@@ -1789,7 +1799,22 @@ var UniversalSidebar = ({
|
|
|
1789
1799
|
${isCollapsed ? "md:w-16 w-64" : "w-64"}
|
|
1790
1800
|
`
|
|
1791
1801
|
},
|
|
1792
|
-
/* @__PURE__ */ import_react36.default.createElement("div", { className: `flex items-center shrink-0 p-5 ${isCollapsed && !isMobileOpen ? "justify-center min-h-18" : "justify-between"}` },
|
|
1802
|
+
/* @__PURE__ */ import_react36.default.createElement("div", { className: `flex items-center shrink-0 p-5 ${isCollapsed && !isMobileOpen ? "justify-center min-h-18" : "justify-between"}` }, /* @__PURE__ */ import_react36.default.createElement(
|
|
1803
|
+
"button",
|
|
1804
|
+
{
|
|
1805
|
+
onClick: () => setShowAppSwitcherDialog(true),
|
|
1806
|
+
className: `flex items-center gap-3 outline-none group text-left ${!isCollapsed || isMobileOpen ? "w-full" : ""}`
|
|
1807
|
+
},
|
|
1808
|
+
currentAppConfig ? /* @__PURE__ */ import_react36.default.createElement(
|
|
1809
|
+
"img",
|
|
1810
|
+
{
|
|
1811
|
+
src: currentAppConfig.iconSrc,
|
|
1812
|
+
alt: currentAppConfig.name,
|
|
1813
|
+
className: "w-7 h-7 rounded-md object-contain shrink-0 group-hover:scale-105 transition-transform"
|
|
1814
|
+
}
|
|
1815
|
+
) : /* @__PURE__ */ import_react36.default.createElement("div", { className: "w-7 h-7 bg-neutral-100 rounded-md shrink-0 flex items-center justify-center border border-neutral-200" }),
|
|
1816
|
+
(!isCollapsed || isMobileOpen) && /* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col justify-center min-w-0 pr-2" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[13px] text-black leading-none truncate tracking-wide mb-1 group-hover:opacity-70 transition-opacity" }, title), subtitle && /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[9px] text-neutral-500 truncate tracking-[0.2em] leading-none uppercase" }, subtitle))
|
|
1817
|
+
), /* @__PURE__ */ import_react36.default.createElement("div", { className: "md:hidden flex shrink-0" }, /* @__PURE__ */ import_react36.default.createElement(
|
|
1793
1818
|
"button",
|
|
1794
1819
|
{
|
|
1795
1820
|
onClick: closeMobile,
|
|
@@ -1846,7 +1871,39 @@ var UniversalSidebar = ({
|
|
|
1846
1871
|
/* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons8.SidebarLeft01Icon, size: 18, className: "shrink-0 text-neutral-400" }),
|
|
1847
1872
|
!isCollapsed && /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-xs" }, "Collapse")
|
|
1848
1873
|
)))
|
|
1849
|
-
),
|
|
1874
|
+
), showAppSwitcherDialog && /* @__PURE__ */ import_react36.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react36.default.createElement(
|
|
1875
|
+
"div",
|
|
1876
|
+
{
|
|
1877
|
+
className: "absolute inset-0 bg-black/30 backdrop-blur-sm transition-opacity",
|
|
1878
|
+
onClick: () => setShowAppSwitcherDialog(false)
|
|
1879
|
+
}
|
|
1880
|
+
), /* @__PURE__ */ import_react36.default.createElement("div", { className: "relative w-full max-w-85 bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 border border-neutral-200" }, /* @__PURE__ */ import_react36.default.createElement("div", { className: "p-5 w-full flex items-center justify-between border-b border-neutral-100" }, /* @__PURE__ */ import_react36.default.createElement("div", null, /* @__PURE__ */ import_react36.default.createElement("h3", { className: "text-[15px] text-black tracking-tight font-medium" }, "Ecosystem"), /* @__PURE__ */ import_react36.default.createElement("p", { className: "text-[10px] text-neutral-500 tracking-widest mt-0.5 uppercase" }, "Switch Applications")), /* @__PURE__ */ import_react36.default.createElement(
|
|
1881
|
+
"button",
|
|
1882
|
+
{
|
|
1883
|
+
onClick: () => setShowAppSwitcherDialog(false),
|
|
1884
|
+
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-neutral-100 text-neutral-400 transition-colors"
|
|
1885
|
+
},
|
|
1886
|
+
/* @__PURE__ */ import_react36.default.createElement(import_react37.HugeiconsIcon, { icon: import_core_free_icons8.CancelCircleIcon, size: 18 })
|
|
1887
|
+
)), /* @__PURE__ */ import_react36.default.createElement("div", { className: "max-h-[60vh] overflow-y-auto w-full custom-scrollbar p-2" }, ECOSYSTEM_APPS.map((app) => {
|
|
1888
|
+
const isActive = currentAppType === app.id;
|
|
1889
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
1890
|
+
"a",
|
|
1891
|
+
{
|
|
1892
|
+
key: app.id,
|
|
1893
|
+
href: app.url,
|
|
1894
|
+
className: `w-full text-left p-3 flex items-center gap-4 rounded-xl transition-all outline-none ${isActive ? "bg-neutral-50 border border-neutral-200" : "hover:bg-neutral-50 border border-transparent"}`
|
|
1895
|
+
},
|
|
1896
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
1897
|
+
"img",
|
|
1898
|
+
{
|
|
1899
|
+
src: app.iconSrc,
|
|
1900
|
+
alt: app.name,
|
|
1901
|
+
className: "w-7 h-7 rounded-lg object-contain shrink-0 bg-white"
|
|
1902
|
+
}
|
|
1903
|
+
),
|
|
1904
|
+
/* @__PURE__ */ import_react36.default.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[13px] text-black font-medium tracking-tight truncate" }, app.name), /* @__PURE__ */ import_react36.default.createElement("span", { className: "text-[10px] text-neutral-500 mt-0.5 truncate leading-snug" }, app.description))
|
|
1905
|
+
);
|
|
1906
|
+
})))), showSwitcherDialog && showWorkspaceSwitcher && workspaces && workspaces.length > 0 && /* @__PURE__ */ import_react36.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ import_react36.default.createElement(
|
|
1850
1907
|
"div",
|
|
1851
1908
|
{
|
|
1852
1909
|
className: "absolute inset-0 bg-black/30",
|
|
@@ -3125,9 +3182,7 @@ var UniversalDirectoryPage = ({
|
|
|
3125
3182
|
headerTitle,
|
|
3126
3183
|
headerDescription,
|
|
3127
3184
|
hideSearch = false,
|
|
3128
|
-
// Default to false
|
|
3129
3185
|
headerAction,
|
|
3130
|
-
// Capture the action button
|
|
3131
3186
|
searchPlaceholder = "Search...",
|
|
3132
3187
|
searchQuery,
|
|
3133
3188
|
onSearchChange,
|
|
@@ -3142,14 +3197,14 @@ var UniversalDirectoryPage = ({
|
|
|
3142
3197
|
detailsContent,
|
|
3143
3198
|
modals
|
|
3144
3199
|
}) => {
|
|
3145
|
-
return /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white" }, /* @__PURE__ */ import_react59.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" ? /* @__PURE__ */ import_react59.default.createElement(import_react59.default.Fragment, null, /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-full" }, /* @__PURE__ */ import_react59.default.createElement("h1", { className: "
|
|
3200
|
+
return /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white" }, /* @__PURE__ */ import_react59.default.createElement(ManagedToaster, null), /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" ? /* @__PURE__ */ import_react59.default.createElement(import_react59.default.Fragment, null, /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-full" }, /* @__PURE__ */ import_react59.default.createElement("h1", { className: " text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ import_react59.default.createElement("p", { className: "text-xs text-neutral-500 mb-6" }, headerDescription), !hideSearch && /* @__PURE__ */ import_react59.default.createElement(
|
|
3146
3201
|
TextInput,
|
|
3147
3202
|
{
|
|
3148
3203
|
placeholder: searchPlaceholder,
|
|
3149
3204
|
value: searchQuery,
|
|
3150
3205
|
onChange: onSearchChange
|
|
3151
3206
|
}
|
|
3152
|
-
)), headerAction && /* @__PURE__ */ import_react59.default.createElement("div", { className: "shrink-0 w-full sm:w-auto mt-4 sm:mt-0" }, headerAction)) : /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react59.default.createElement("button", { onClick: onBackToList, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none uppercase" }, /* @__PURE__ */ import_react59.default.createElement(import_react60.HugeiconsIcon, { icon: import_core_free_icons19.ArrowLeft01Icon, size: 12 }), " Back"))), currentView === "list" && /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-full overflow-hidden pt-2" }, isLoading ? /* @__PURE__ */ import_react59.default.createElement(PageSpinner4, null) : /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "divide-y divide-neutral-100" }, items.length === 0 ? /* @__PURE__ */ import_react59.default.createElement(
|
|
3207
|
+
)), headerAction && /* @__PURE__ */ import_react59.default.createElement("div", { className: "shrink-0 w-full sm:w-auto mt-4 sm:mt-0" }, headerAction)) : /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ import_react59.default.createElement("button", { onClick: onBackToList, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none uppercase" }, /* @__PURE__ */ import_react59.default.createElement(import_react60.HugeiconsIcon, { icon: import_core_free_icons19.ArrowLeft01Icon, size: 12 }), " Back"))), currentView === "list" && /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-full overflow-hidden pt-2" }, isLoading ? /* @__PURE__ */ import_react59.default.createElement(PageSpinner4, null) : /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "divide-y divide-neutral-100" }, items.length === 0 ? /* @__PURE__ */ import_react59.default.createElement("p", { className: "text-xs text-neutral-500 py-6 text-center" }, "No records found.") : items.map((item) => /* @__PURE__ */ import_react59.default.createElement(
|
|
3153
3208
|
"div",
|
|
3154
3209
|
{
|
|
3155
3210
|
key: item.id,
|
|
@@ -3158,7 +3213,23 @@ var UniversalDirectoryPage = ({
|
|
|
3158
3213
|
},
|
|
3159
3214
|
/* @__PURE__ */ import_react59.default.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black text-xs" }, item.icon), /* @__PURE__ */ import_react59.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ import_react59.default.createElement("div", { className: "text-sm text-black truncate pr-2" }, item.primaryText), /* @__PURE__ */ import_react59.default.createElement("div", { className: "text-xs text-neutral-500 truncate pr-2 mt-0.5" }, item.secondaryText))),
|
|
3160
3215
|
item.rightBadge && /* @__PURE__ */ import_react59.default.createElement("div", { className: "shrink-0 pl-2" }, /* @__PURE__ */ import_react59.default.createElement("span", { className: `text-[10px] tracking-[0.2em] px-3 py-1 rounded-full whitespace-nowrap uppercase ${item.rightBadgeClass || "text-neutral-500 border border-neutral-200 bg-white"}` }, item.rightBadge))
|
|
3161
|
-
))),
|
|
3216
|
+
))), /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ import_react59.default.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] uppercase" }, "Page ", currentPage, " of ", Math.max(1, totalPages)), /* @__PURE__ */ import_react59.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ import_react59.default.createElement(
|
|
3217
|
+
"button",
|
|
3218
|
+
{
|
|
3219
|
+
onClick: () => onPageChange(currentPage - 1),
|
|
3220
|
+
disabled: currentPage <= 1 || isLoading,
|
|
3221
|
+
className: "p-2 border border-neutral-200 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30 transition-all"
|
|
3222
|
+
},
|
|
3223
|
+
/* @__PURE__ */ import_react59.default.createElement(import_react60.HugeiconsIcon, { icon: import_core_free_icons19.ArrowLeft01Icon, size: 14 })
|
|
3224
|
+
), /* @__PURE__ */ import_react59.default.createElement(
|
|
3225
|
+
"button",
|
|
3226
|
+
{
|
|
3227
|
+
onClick: () => onPageChange(currentPage + 1),
|
|
3228
|
+
disabled: currentPage >= totalPages || isLoading,
|
|
3229
|
+
className: "p-2 border border-neutral-200 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30 transition-all"
|
|
3230
|
+
},
|
|
3231
|
+
/* @__PURE__ */ import_react59.default.createElement(import_react60.HugeiconsIcon, { icon: import_core_free_icons19.ArrowRight01Icon, size: 14 })
|
|
3232
|
+
))))), currentView === "details" && detailsContent, modals);
|
|
3162
3233
|
};
|
|
3163
3234
|
|
|
3164
3235
|
// src/components/AiApproveDecline.tsx
|
|
@@ -3951,12 +4022,12 @@ AUDDITUR_SECRET_KEY="${secKey}"
|
|
|
3951
4022
|
className: "min-w-32 w-full sm:w-auto"
|
|
3952
4023
|
},
|
|
3953
4024
|
"Save Webhook"
|
|
3954
|
-
))))), isRollModalOpen && !isReadOnly && /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isGenerating && setIsRollModalOpen(false) }), /* @__PURE__ */ import_react69.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_react69.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react69.default.createElement("h3", { className: " text-[17px] text-black tracking-tight mb-1" }, "Roll API Keys"), /* @__PURE__ */ import_react69.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_react69.default.createElement("div", { className: "w-full flex
|
|
4025
|
+
))))), isRollModalOpen && !isReadOnly && /* @__PURE__ */ import_react69.default.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4" }, /* @__PURE__ */ import_react69.default.createElement("div", { className: "absolute inset-0 bg-black/30", onClick: () => !isGenerating && setIsRollModalOpen(false) }), /* @__PURE__ */ import_react69.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_react69.default.createElement("div", { className: "p-6 text-center w-full" }, /* @__PURE__ */ import_react69.default.createElement("h3", { className: " text-[17px] text-black tracking-tight mb-1" }, "Roll API Keys"), /* @__PURE__ */ import_react69.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_react69.default.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ import_react69.default.createElement(
|
|
3955
4026
|
"button",
|
|
3956
4027
|
{
|
|
3957
4028
|
onClick: () => setIsRollModalOpen(false),
|
|
3958
4029
|
disabled: isGenerating,
|
|
3959
|
-
className: "flex-1 py-3 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none
|
|
4030
|
+
className: "flex-1 py-3 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
|
|
3960
4031
|
},
|
|
3961
4032
|
"Cancel"
|
|
3962
4033
|
), /* @__PURE__ */ import_react69.default.createElement(
|
package/dist/index.mjs
CHANGED
|
@@ -1628,6 +1628,15 @@ import {
|
|
|
1628
1628
|
ArrowLeft01Icon as ArrowLeft01Icon2
|
|
1629
1629
|
} from "@hugeicons/core-free-icons";
|
|
1630
1630
|
var ButtonSpinner = () => /* @__PURE__ */ React25.createElement("svg", { className: "animate-spin h-4 w-4 text-neutral-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" }, /* @__PURE__ */ React25.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), /* @__PURE__ */ React25.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }));
|
|
1631
|
+
var ECOSYSTEM_APPS = [
|
|
1632
|
+
{ id: "desktop", name: "Retina Desktop", description: "Unified AI Workspace", iconSrc: "https://retinalabs.company/assets/images/desktop.avif", url: "https://retinadesktop.com/app" },
|
|
1633
|
+
{ id: "audditur", name: "Audditur", description: "AI Legal & Compliance", iconSrc: "https://retinalabs.company/assets/images/audditur.avif", url: "https://audditur.retinaapps.com/app" },
|
|
1634
|
+
{ id: "docx", name: "Retina Docx", description: "Collaborative Word Processing", iconSrc: "https://retinalabs.company/assets/images/docx.avif", url: "https://docx.retinaapps.com/app" },
|
|
1635
|
+
{ id: "sheets", name: "Retina Sheets", description: "Advanced Spreadsheets", iconSrc: "https://retinalabs.company/assets/images/sheets.avif", url: "https://sheets.retinaapps.com/app" },
|
|
1636
|
+
{ id: "drive", name: "Retina Drive", description: "Secure Cloud Storage", iconSrc: "https://retinalabs.company/assets/images/drive.avif", url: "https://drive.retinaapps.com/app" },
|
|
1637
|
+
{ id: "calendar", name: "Retina Calendar", description: "Smart Scheduling", iconSrc: "https://retinalabs.company/assets/images/calendar.avif", url: "https://calendar.retinaapps.com/app" },
|
|
1638
|
+
{ id: "mail", name: "Retina Mail", description: "Encrypted Communications", iconSrc: "https://retinalabs.company/assets/images/mail.avif", url: "https://mail.retinaapps.com/app" }
|
|
1639
|
+
];
|
|
1631
1640
|
var UniversalSidebar = ({
|
|
1632
1641
|
navItems,
|
|
1633
1642
|
currentPath,
|
|
@@ -1635,7 +1644,7 @@ var UniversalSidebar = ({
|
|
|
1635
1644
|
closeMobile,
|
|
1636
1645
|
openMobile,
|
|
1637
1646
|
onNavClick,
|
|
1638
|
-
|
|
1647
|
+
currentAppType = "unknown",
|
|
1639
1648
|
title = "App",
|
|
1640
1649
|
subtitle,
|
|
1641
1650
|
homeUrl = "/app",
|
|
@@ -1647,7 +1656,6 @@ var UniversalSidebar = ({
|
|
|
1647
1656
|
onSwitchWorkspace,
|
|
1648
1657
|
showLogoutAction = false,
|
|
1649
1658
|
onLogout,
|
|
1650
|
-
// Intercept
|
|
1651
1659
|
showInterceptDialog = false,
|
|
1652
1660
|
onCancelIntercept,
|
|
1653
1661
|
onConfirmIntercept,
|
|
@@ -1655,6 +1663,7 @@ var UniversalSidebar = ({
|
|
|
1655
1663
|
interceptMessage = "Are you sure you want to leave? All unsaved changes will be lost."
|
|
1656
1664
|
}) => {
|
|
1657
1665
|
const [isCollapsed, setIsCollapsed] = useState13(false);
|
|
1666
|
+
const [showAppSwitcherDialog, setShowAppSwitcherDialog] = useState13(false);
|
|
1658
1667
|
const [showSwitcherDialog, setShowSwitcherDialog] = useState13(false);
|
|
1659
1668
|
const [showLogoutDialog, setShowLogoutDialog] = useState13(false);
|
|
1660
1669
|
const [isLoggingOut, setIsLoggingOut] = useState13(false);
|
|
@@ -1676,11 +1685,12 @@ var UniversalSidebar = ({
|
|
|
1676
1685
|
setShowLogoutDialog(false);
|
|
1677
1686
|
}
|
|
1678
1687
|
};
|
|
1688
|
+
const currentAppConfig = ECOSYSTEM_APPS.find((app) => app.id === currentAppType);
|
|
1679
1689
|
return /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("div", { className: "md:hidden fixed top-0 left-0 w-full h-16 bg-neutral-100 z-40 flex items-center justify-between px-4" }, /* @__PURE__ */ React25.createElement(
|
|
1680
1690
|
"button",
|
|
1681
1691
|
{
|
|
1682
1692
|
onClick: openMobile,
|
|
1683
|
-
className: `w-10 h-10 bg-white rounded-full flex items-center justify-center
|
|
1693
|
+
className: `w-10 h-10 bg-white rounded-full flex items-center justify-center text-black transition-all duration-300 outline-none ${isMobileOpen ? "opacity-0 pointer-events-none scale-90" : "opacity-100 scale-100"}`,
|
|
1684
1694
|
"aria-label": "Open Menu"
|
|
1685
1695
|
},
|
|
1686
1696
|
/* @__PURE__ */ React25.createElement(HugeiconsIcon12, { icon: SidebarLeft01Icon, size: 18 })
|
|
@@ -1688,7 +1698,7 @@ var UniversalSidebar = ({
|
|
|
1688
1698
|
Link9,
|
|
1689
1699
|
{
|
|
1690
1700
|
href: backUrl,
|
|
1691
|
-
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center
|
|
1701
|
+
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center text-black hover:bg-neutral-50 transition-all duration-300 outline-none",
|
|
1692
1702
|
"aria-label": "Go Back"
|
|
1693
1703
|
},
|
|
1694
1704
|
/* @__PURE__ */ React25.createElement(HugeiconsIcon12, { icon: ArrowLeft01Icon2, size: 18 })
|
|
@@ -1696,7 +1706,7 @@ var UniversalSidebar = ({
|
|
|
1696
1706
|
Link9,
|
|
1697
1707
|
{
|
|
1698
1708
|
href: backUrl,
|
|
1699
|
-
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center
|
|
1709
|
+
className: "w-10 h-10 bg-white rounded-full flex items-center justify-center text-black hover:bg-neutral-50 transition-all duration-300 outline-none pointer-events-auto",
|
|
1700
1710
|
"aria-label": "Go Back"
|
|
1701
1711
|
},
|
|
1702
1712
|
/* @__PURE__ */ React25.createElement(HugeiconsIcon12, { icon: ArrowLeft01Icon2, size: 18 })
|
|
@@ -1716,7 +1726,22 @@ var UniversalSidebar = ({
|
|
|
1716
1726
|
${isCollapsed ? "md:w-16 w-64" : "w-64"}
|
|
1717
1727
|
`
|
|
1718
1728
|
},
|
|
1719
|
-
/* @__PURE__ */ React25.createElement("div", { className: `flex items-center shrink-0 p-5 ${isCollapsed && !isMobileOpen ? "justify-center min-h-18" : "justify-between"}` },
|
|
1729
|
+
/* @__PURE__ */ React25.createElement("div", { className: `flex items-center shrink-0 p-5 ${isCollapsed && !isMobileOpen ? "justify-center min-h-18" : "justify-between"}` }, /* @__PURE__ */ React25.createElement(
|
|
1730
|
+
"button",
|
|
1731
|
+
{
|
|
1732
|
+
onClick: () => setShowAppSwitcherDialog(true),
|
|
1733
|
+
className: `flex items-center gap-3 outline-none group text-left ${!isCollapsed || isMobileOpen ? "w-full" : ""}`
|
|
1734
|
+
},
|
|
1735
|
+
currentAppConfig ? /* @__PURE__ */ React25.createElement(
|
|
1736
|
+
"img",
|
|
1737
|
+
{
|
|
1738
|
+
src: currentAppConfig.iconSrc,
|
|
1739
|
+
alt: currentAppConfig.name,
|
|
1740
|
+
className: "w-7 h-7 rounded-md object-contain shrink-0 group-hover:scale-105 transition-transform"
|
|
1741
|
+
}
|
|
1742
|
+
) : /* @__PURE__ */ React25.createElement("div", { className: "w-7 h-7 bg-neutral-100 rounded-md shrink-0 flex items-center justify-center border border-neutral-200" }),
|
|
1743
|
+
(!isCollapsed || isMobileOpen) && /* @__PURE__ */ React25.createElement("div", { className: "flex flex-col justify-center min-w-0 pr-2" }, /* @__PURE__ */ React25.createElement("span", { className: "text-[13px] text-black leading-none truncate tracking-wide mb-1 group-hover:opacity-70 transition-opacity" }, title), subtitle && /* @__PURE__ */ React25.createElement("span", { className: "text-[9px] text-neutral-500 truncate tracking-[0.2em] leading-none uppercase" }, subtitle))
|
|
1744
|
+
), /* @__PURE__ */ React25.createElement("div", { className: "md:hidden flex shrink-0" }, /* @__PURE__ */ React25.createElement(
|
|
1720
1745
|
"button",
|
|
1721
1746
|
{
|
|
1722
1747
|
onClick: closeMobile,
|
|
@@ -1773,7 +1798,39 @@ var UniversalSidebar = ({
|
|
|
1773
1798
|
/* @__PURE__ */ React25.createElement(HugeiconsIcon12, { icon: SidebarLeft01Icon, size: 18, className: "shrink-0 text-neutral-400" }),
|
|
1774
1799
|
!isCollapsed && /* @__PURE__ */ React25.createElement("span", { className: "text-xs" }, "Collapse")
|
|
1775
1800
|
)))
|
|
1776
|
-
),
|
|
1801
|
+
), showAppSwitcherDialog && /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React25.createElement(
|
|
1802
|
+
"div",
|
|
1803
|
+
{
|
|
1804
|
+
className: "absolute inset-0 bg-black/30 backdrop-blur-sm transition-opacity",
|
|
1805
|
+
onClick: () => setShowAppSwitcherDialog(false)
|
|
1806
|
+
}
|
|
1807
|
+
), /* @__PURE__ */ React25.createElement("div", { className: "relative w-full max-w-85 bg-white rounded-2xl flex flex-col overflow-hidden shadow-2xl animate-in zoom-in-95 duration-200 border border-neutral-200" }, /* @__PURE__ */ React25.createElement("div", { className: "p-5 w-full flex items-center justify-between border-b border-neutral-100" }, /* @__PURE__ */ React25.createElement("div", null, /* @__PURE__ */ React25.createElement("h3", { className: "text-[15px] text-black tracking-tight font-medium" }, "Ecosystem"), /* @__PURE__ */ React25.createElement("p", { className: "text-[10px] text-neutral-500 tracking-widest mt-0.5 uppercase" }, "Switch Applications")), /* @__PURE__ */ React25.createElement(
|
|
1808
|
+
"button",
|
|
1809
|
+
{
|
|
1810
|
+
onClick: () => setShowAppSwitcherDialog(false),
|
|
1811
|
+
className: "w-8 h-8 flex items-center justify-center rounded-full hover:bg-neutral-100 text-neutral-400 transition-colors"
|
|
1812
|
+
},
|
|
1813
|
+
/* @__PURE__ */ React25.createElement(HugeiconsIcon12, { icon: CancelCircleIcon, size: 18 })
|
|
1814
|
+
)), /* @__PURE__ */ React25.createElement("div", { className: "max-h-[60vh] overflow-y-auto w-full custom-scrollbar p-2" }, ECOSYSTEM_APPS.map((app) => {
|
|
1815
|
+
const isActive = currentAppType === app.id;
|
|
1816
|
+
return /* @__PURE__ */ React25.createElement(
|
|
1817
|
+
"a",
|
|
1818
|
+
{
|
|
1819
|
+
key: app.id,
|
|
1820
|
+
href: app.url,
|
|
1821
|
+
className: `w-full text-left p-3 flex items-center gap-4 rounded-xl transition-all outline-none ${isActive ? "bg-neutral-50 border border-neutral-200" : "hover:bg-neutral-50 border border-transparent"}`
|
|
1822
|
+
},
|
|
1823
|
+
/* @__PURE__ */ React25.createElement(
|
|
1824
|
+
"img",
|
|
1825
|
+
{
|
|
1826
|
+
src: app.iconSrc,
|
|
1827
|
+
alt: app.name,
|
|
1828
|
+
className: "w-7 h-7 rounded-lg object-contain shrink-0 bg-white"
|
|
1829
|
+
}
|
|
1830
|
+
),
|
|
1831
|
+
/* @__PURE__ */ React25.createElement("div", { className: "flex flex-col min-w-0 flex-1" }, /* @__PURE__ */ React25.createElement("span", { className: "text-[13px] text-black font-medium tracking-tight truncate" }, app.name), /* @__PURE__ */ React25.createElement("span", { className: "text-[10px] text-neutral-500 mt-0.5 truncate leading-snug" }, app.description))
|
|
1832
|
+
);
|
|
1833
|
+
})))), showSwitcherDialog && showWorkspaceSwitcher && workspaces && workspaces.length > 0 && /* @__PURE__ */ React25.createElement("div", { className: "fixed inset-0 z-110 flex items-center justify-center p-4 pointer-events-auto" }, /* @__PURE__ */ React25.createElement(
|
|
1777
1834
|
"div",
|
|
1778
1835
|
{
|
|
1779
1836
|
className: "absolute inset-0 bg-black/30",
|
|
@@ -3087,9 +3144,7 @@ var UniversalDirectoryPage = ({
|
|
|
3087
3144
|
headerTitle,
|
|
3088
3145
|
headerDescription,
|
|
3089
3146
|
hideSearch = false,
|
|
3090
|
-
// Default to false
|
|
3091
3147
|
headerAction,
|
|
3092
|
-
// Capture the action button
|
|
3093
3148
|
searchPlaceholder = "Search...",
|
|
3094
3149
|
searchQuery,
|
|
3095
3150
|
onSearchChange,
|
|
@@ -3104,14 +3159,14 @@ var UniversalDirectoryPage = ({
|
|
|
3104
3159
|
detailsContent,
|
|
3105
3160
|
modals
|
|
3106
3161
|
}) => {
|
|
3107
|
-
return /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white" }, /* @__PURE__ */ React37.createElement(ManagedToaster, null), /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" ? /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement("div", { className: "w-full" }, /* @__PURE__ */ React37.createElement("h1", { className: "
|
|
3162
|
+
return /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col gap-8 animate-in max-w-3xl fade-in duration-300 p-6 rounded-2xl bg-white" }, /* @__PURE__ */ React37.createElement(ManagedToaster, null), /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start justify-between gap-4" }, currentView === "list" ? /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement("div", { className: "w-full" }, /* @__PURE__ */ React37.createElement("h1", { className: " text-xl text-black mb-1 tracking-tight" }, headerTitle), /* @__PURE__ */ React37.createElement("p", { className: "text-xs text-neutral-500 mb-6" }, headerDescription), !hideSearch && /* @__PURE__ */ React37.createElement(
|
|
3108
3163
|
TextInput,
|
|
3109
3164
|
{
|
|
3110
3165
|
placeholder: searchPlaceholder,
|
|
3111
3166
|
value: searchQuery,
|
|
3112
3167
|
onChange: onSearchChange
|
|
3113
3168
|
}
|
|
3114
|
-
)), headerAction && /* @__PURE__ */ React37.createElement("div", { className: "shrink-0 w-full sm:w-auto mt-4 sm:mt-0" }, headerAction)) : /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React37.createElement("button", { onClick: onBackToList, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none uppercase" }, /* @__PURE__ */ React37.createElement(HugeiconsIcon23, { icon: ArrowLeft01Icon6, size: 12 }), " Back"))), currentView === "list" && /* @__PURE__ */ React37.createElement("div", { className: "w-full overflow-hidden pt-2" }, isLoading ? /* @__PURE__ */ React37.createElement(PageSpinner4, null) : /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React37.createElement("div", { className: "divide-y divide-neutral-100" }, items.length === 0 ? /* @__PURE__ */ React37.createElement(
|
|
3169
|
+
)), headerAction && /* @__PURE__ */ React37.createElement("div", { className: "shrink-0 w-full sm:w-auto mt-4 sm:mt-0" }, headerAction)) : /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col items-start gap-3" }, /* @__PURE__ */ React37.createElement("button", { onClick: onBackToList, className: "text-[10px] text-neutral-400 hover:text-black tracking-[0.2em] flex items-center gap-1.5 transition-colors outline-none uppercase" }, /* @__PURE__ */ React37.createElement(HugeiconsIcon23, { icon: ArrowLeft01Icon6, size: 12 }), " Back"))), currentView === "list" && /* @__PURE__ */ React37.createElement("div", { className: "w-full overflow-hidden pt-2" }, isLoading ? /* @__PURE__ */ React37.createElement(PageSpinner4, null) : /* @__PURE__ */ React37.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ React37.createElement("div", { className: "divide-y divide-neutral-100" }, items.length === 0 ? /* @__PURE__ */ React37.createElement("p", { className: "text-xs text-neutral-500 py-6 text-center" }, "No records found.") : items.map((item) => /* @__PURE__ */ React37.createElement(
|
|
3115
3170
|
"div",
|
|
3116
3171
|
{
|
|
3117
3172
|
key: item.id,
|
|
@@ -3120,7 +3175,23 @@ var UniversalDirectoryPage = ({
|
|
|
3120
3175
|
},
|
|
3121
3176
|
/* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-3 sm:gap-4 min-w-0 flex-1" }, /* @__PURE__ */ React37.createElement("div", { className: "w-10 h-10 shrink-0 rounded-full flex items-center justify-center bg-neutral-100 text-black text-xs" }, item.icon), /* @__PURE__ */ React37.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React37.createElement("div", { className: "text-sm text-black truncate pr-2" }, item.primaryText), /* @__PURE__ */ React37.createElement("div", { className: "text-xs text-neutral-500 truncate pr-2 mt-0.5" }, item.secondaryText))),
|
|
3122
3177
|
item.rightBadge && /* @__PURE__ */ React37.createElement("div", { className: "shrink-0 pl-2" }, /* @__PURE__ */ React37.createElement("span", { className: `text-[10px] tracking-[0.2em] px-3 py-1 rounded-full whitespace-nowrap uppercase ${item.rightBadgeClass || "text-neutral-500 border border-neutral-200 bg-white"}` }, item.rightBadge))
|
|
3123
|
-
))),
|
|
3178
|
+
))), /* @__PURE__ */ React37.createElement("div", { className: "flex items-center justify-between p-4 sm:p-5" }, /* @__PURE__ */ React37.createElement("span", { className: "text-[10px] text-neutral-400 tracking-[0.2em] uppercase" }, "Page ", currentPage, " of ", Math.max(1, totalPages)), /* @__PURE__ */ React37.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React37.createElement(
|
|
3179
|
+
"button",
|
|
3180
|
+
{
|
|
3181
|
+
onClick: () => onPageChange(currentPage - 1),
|
|
3182
|
+
disabled: currentPage <= 1 || isLoading,
|
|
3183
|
+
className: "p-2 border border-neutral-200 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30 transition-all"
|
|
3184
|
+
},
|
|
3185
|
+
/* @__PURE__ */ React37.createElement(HugeiconsIcon23, { icon: ArrowLeft01Icon6, size: 14 })
|
|
3186
|
+
), /* @__PURE__ */ React37.createElement(
|
|
3187
|
+
"button",
|
|
3188
|
+
{
|
|
3189
|
+
onClick: () => onPageChange(currentPage + 1),
|
|
3190
|
+
disabled: currentPage >= totalPages || isLoading,
|
|
3191
|
+
className: "p-2 border border-neutral-200 rounded-full bg-white text-neutral-500 hover:text-black outline-none disabled:opacity-30 transition-all"
|
|
3192
|
+
},
|
|
3193
|
+
/* @__PURE__ */ React37.createElement(HugeiconsIcon23, { icon: ArrowRight01Icon6, size: 14 })
|
|
3194
|
+
))))), currentView === "details" && detailsContent, modals);
|
|
3124
3195
|
};
|
|
3125
3196
|
|
|
3126
3197
|
// src/components/AiApproveDecline.tsx
|
|
@@ -3913,12 +3984,12 @@ AUDDITUR_SECRET_KEY="${secKey}"
|
|
|
3913
3984
|
className: "min-w-32 w-full sm:w-auto"
|
|
3914
3985
|
},
|
|
3915
3986
|
"Save Webhook"
|
|
3916
|
-
))))), 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: " 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
|
|
3987
|
+
))))), 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: " 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(
|
|
3917
3988
|
"button",
|
|
3918
3989
|
{
|
|
3919
3990
|
onClick: () => setIsRollModalOpen(false),
|
|
3920
3991
|
disabled: isGenerating,
|
|
3921
|
-
className: "flex-1 py-3 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none
|
|
3992
|
+
className: "flex-1 py-3 text-[13px] text-neutral-600 hover:bg-neutral-50 transition-colors disabled:opacity-50 outline-none"
|
|
3922
3993
|
},
|
|
3923
3994
|
"Cancel"
|
|
3924
3995
|
), /* @__PURE__ */ React42.createElement(
|