@stigmer/react 0.0.99 → 0.0.100
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/index.d.ts +17 -3
- package/index.d.ts.map +1 -1
- package/index.js +16 -3
- package/index.js.map +1 -1
- package/internal/menu.d.ts +17 -0
- package/internal/menu.d.ts.map +1 -0
- package/internal/menu.js +43 -0
- package/internal/menu.js.map +1 -0
- package/library/LibraryBreadcrumbContext.d.ts +30 -0
- package/library/LibraryBreadcrumbContext.d.ts.map +1 -0
- package/library/LibraryBreadcrumbContext.js +39 -0
- package/library/LibraryBreadcrumbContext.js.map +1 -0
- package/library/index.d.ts +1 -0
- package/library/index.d.ts.map +1 -1
- package/library/index.js +1 -0
- package/library/index.js.map +1 -1
- package/organization/OrgProvider.d.ts +59 -0
- package/organization/OrgProvider.d.ts.map +1 -0
- package/organization/OrgProvider.js +130 -0
- package/organization/OrgProvider.js.map +1 -0
- package/organization/OrgSwitcher.d.ts +36 -0
- package/organization/OrgSwitcher.d.ts.map +1 -0
- package/organization/OrgSwitcher.js +73 -0
- package/organization/OrgSwitcher.js.map +1 -0
- package/organization/index.d.ts +6 -0
- package/organization/index.d.ts.map +1 -1
- package/organization/index.js +3 -0
- package/organization/index.js.map +1 -1
- package/organization/useOrgGate.d.ts +101 -0
- package/organization/useOrgGate.d.ts.map +1 -0
- package/organization/useOrgGate.js +99 -0
- package/organization/useOrgGate.js.map +1 -0
- package/package.json +5 -4
- package/runner/RunnerListPanel.d.ts +13 -8
- package/runner/RunnerListPanel.d.ts.map +1 -1
- package/runner/RunnerListPanel.js +10 -6
- package/runner/RunnerListPanel.js.map +1 -1
- package/settings/ApiKeysSection.d.ts +3 -0
- package/settings/ApiKeysSection.d.ts.map +1 -0
- package/settings/ApiKeysSection.js +30 -0
- package/settings/ApiKeysSection.js.map +1 -0
- package/settings/EnvironmentsSection.d.ts +3 -0
- package/settings/EnvironmentsSection.d.ts.map +1 -0
- package/settings/EnvironmentsSection.js +49 -0
- package/settings/EnvironmentsSection.js.map +1 -0
- package/settings/IdentityProvidersSection.d.ts +12 -0
- package/settings/IdentityProvidersSection.d.ts.map +1 -0
- package/settings/IdentityProvidersSection.js +34 -0
- package/settings/IdentityProvidersSection.js.map +1 -0
- package/settings/InvitationsSection.d.ts +3 -0
- package/settings/InvitationsSection.d.ts.map +1 -0
- package/settings/InvitationsSection.js +13 -0
- package/settings/InvitationsSection.js.map +1 -0
- package/settings/MembersSection.d.ts +3 -0
- package/settings/MembersSection.d.ts.map +1 -0
- package/settings/MembersSection.js +14 -0
- package/settings/MembersSection.js.map +1 -0
- package/settings/OAuthAppsSection.d.ts +3 -0
- package/settings/OAuthAppsSection.d.ts.map +1 -0
- package/settings/OAuthAppsSection.js +33 -0
- package/settings/OAuthAppsSection.js.map +1 -0
- package/settings/OrgProfileSection.d.ts +3 -0
- package/settings/OrgProfileSection.d.ts.map +1 -0
- package/settings/OrgProfileSection.js +15 -0
- package/settings/OrgProfileSection.js.map +1 -0
- package/settings/PlatformClientsSection.d.ts +3 -0
- package/settings/PlatformClientsSection.d.ts.map +1 -0
- package/settings/PlatformClientsSection.js +48 -0
- package/settings/PlatformClientsSection.js.map +1 -0
- package/settings/UsageSection.d.ts +3 -0
- package/settings/UsageSection.d.ts.map +1 -0
- package/settings/UsageSection.js +14 -0
- package/settings/UsageSection.js.map +1 -0
- package/settings/index.d.ts +13 -0
- package/settings/index.d.ts.map +1 -0
- package/settings/index.js +11 -0
- package/settings/index.js.map +1 -0
- package/settings/settings-nav.d.ts +25 -0
- package/settings/settings-nav.d.ts.map +1 -0
- package/settings/settings-nav.js +41 -0
- package/settings/settings-nav.js.map +1 -0
- package/src/index.ts +32 -1
- package/src/internal/menu.tsx +160 -0
- package/src/library/LibraryBreadcrumbContext.tsx +70 -0
- package/src/library/index.ts +6 -0
- package/src/organization/OrgProvider.tsx +184 -0
- package/src/organization/OrgSwitcher.tsx +275 -0
- package/src/organization/index.ts +10 -0
- package/src/organization/useOrgGate.ts +183 -0
- package/src/runner/RunnerListPanel.tsx +14 -9
- package/src/settings/ApiKeysSection.tsx +96 -0
- package/src/settings/EnvironmentsSection.tsx +162 -0
- package/src/settings/IdentityProvidersSection.tsx +123 -0
- package/src/settings/InvitationsSection.tsx +42 -0
- package/src/settings/MembersSection.tsx +41 -0
- package/src/settings/OAuthAppsSection.tsx +100 -0
- package/src/settings/OrgProfileSection.tsx +41 -0
- package/src/settings/PlatformClientsSection.tsx +149 -0
- package/src/settings/UsageSection.tsx +41 -0
- package/src/settings/index.ts +13 -0
- package/src/settings/settings-nav.ts +78 -0
- package/src/user/UserMenu.tsx +241 -0
- package/src/user/index.ts +2 -0
- package/styles.css +1 -1
- package/user/UserMenu.d.ts +82 -0
- package/user/UserMenu.d.ts.map +1 -0
- package/user/UserMenu.js +51 -0
- package/user/UserMenu.js.map +1 -0
- package/user/index.d.ts +3 -0
- package/user/index.d.ts.map +1 -0
- package/user/index.js +2 -0
- package/user/index.js.map +1 -0
package/user/UserMenu.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronsUpDown, LogOut, Settings, SunMoon, User, } from "lucide-react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { Menu, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuTrigger, } from "../internal/menu";
|
|
6
|
+
/**
|
|
7
|
+
* User menu dropdown for sidebar navigation.
|
|
8
|
+
*
|
|
9
|
+
* Displays the current user (avatar + name/email) or a "Local mode"
|
|
10
|
+
* indicator when unauthenticated, with optional color scheme switching,
|
|
11
|
+
* settings navigation, app-specific extra items, and sign out.
|
|
12
|
+
*
|
|
13
|
+
* Designed for sidebar placement — the trigger uses `sidebar-*` design
|
|
14
|
+
* tokens. The portaled dropdown uses standard `popover-*` / main-area
|
|
15
|
+
* tokens per theme-token-guidelines (DD-005).
|
|
16
|
+
*
|
|
17
|
+
* Framework-agnostic: all actions are expressed as callback props
|
|
18
|
+
* (DD-004). The consumer bridges to their routing, auth, and theme
|
|
19
|
+
* systems.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <UserMenu
|
|
24
|
+
* user={{ name: "Jane", email: "jane@acme.com" }}
|
|
25
|
+
* colorMode="dark"
|
|
26
|
+
* onColorModeChange={(mode) => setTheme(mode)}
|
|
27
|
+
* onSettingsClick={() => router.push("/settings")}
|
|
28
|
+
* onSignOut={() => logout()}
|
|
29
|
+
* />
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function UserMenu({ user, colorMode, onColorModeChange, onSettingsClick, onSignOut, extraItems, className, }) {
|
|
33
|
+
const showColorScheme = colorMode != null && onColorModeChange != null;
|
|
34
|
+
const showSettings = onSettingsClick != null;
|
|
35
|
+
const showSignOut = onSignOut != null;
|
|
36
|
+
const hasContentBeforeSignOut = showSettings || showColorScheme || extraItems;
|
|
37
|
+
const displayName = user?.name ?? user?.email;
|
|
38
|
+
const triggerLabel = user ? "User menu" : "Settings";
|
|
39
|
+
return (_jsxs(Menu, { children: [_jsxs(MenuTrigger, { "aria-label": triggerLabel, className: cn("hover:bg-sidebar-accent flex w-full cursor-pointer items-center gap-2 rounded-lg px-2 py-1.5 transition-colors focus:outline-none", className), children: [_jsx(UserAvatar, { name: displayName }), user ? (_jsxs("div", { className: "flex min-w-0 flex-1 flex-col text-left", children: [user.name && (_jsx("span", { className: "truncate text-sm font-medium", children: user.name })), _jsx("span", { className: "text-sidebar-muted-foreground truncate text-xs", children: user.email })] })) : (_jsx("span", { className: "text-sidebar-muted-foreground truncate text-sm", children: "Local mode" })), _jsx(ChevronsUpDown, { className: "text-sidebar-muted-foreground ml-auto size-3.5 shrink-0" })] }), _jsxs(MenuContent, { align: "start", side: "top", sideOffset: 8, children: [showSettings && (_jsxs(MenuItem, { onClick: onSettingsClick, children: [_jsx(Settings, { className: "size-4" }), "Settings"] })), showSettings && showColorScheme && _jsx(MenuSeparator, {}), showColorScheme && (_jsx(ColorSchemeSection, { colorMode: colorMode, onColorModeChange: onColorModeChange })), extraItems && (_jsxs(_Fragment, { children: [(showSettings || showColorScheme) && _jsx(MenuSeparator, {}), extraItems] })), showSignOut && (_jsxs(_Fragment, { children: [hasContentBeforeSignOut && _jsx(MenuSeparator, {}), _jsxs(MenuItem, { onClick: onSignOut, children: [_jsx(LogOut, { className: "size-4" }), "Sign out"] })] }))] })] }));
|
|
40
|
+
}
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
// Internal sub-components
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
function ColorSchemeSection({ colorMode, onColorModeChange, }) {
|
|
45
|
+
return (_jsxs(MenuGroup, { "aria-label": "Color scheme", children: [_jsxs(MenuLabel, { children: [_jsx(SunMoon, { className: "mr-1 inline size-3 align-[-2px]" }), "Color Scheme"] }), _jsxs(MenuRadioGroup, { value: colorMode, onValueChange: (val) => onColorModeChange(val), children: [_jsx(MenuRadioItem, { value: "light", children: "Light" }), _jsx(MenuRadioItem, { value: "dark", children: "Dark" }), _jsx(MenuRadioItem, { value: "system", children: "System" })] })] }));
|
|
46
|
+
}
|
|
47
|
+
function UserAvatar({ name }) {
|
|
48
|
+
const initial = name ? name.charAt(0).toUpperCase() : null;
|
|
49
|
+
return (_jsx("div", { className: cn("bg-sidebar-accent text-sidebar-accent-foreground border-sidebar-border", "flex size-6 shrink-0 items-center justify-center rounded-full border"), children: initial ? (_jsx("span", { className: "text-xs font-medium", children: initial })) : (_jsx(User, { className: "size-3.5" })) }));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=UserMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserMenu.js","sourceRoot":"","sources":["../../src/user/UserMenu.tsx"],"names":[],"mappings":"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"}
|
package/user/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/user/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/user/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|