@elevasis/ui 1.14.1 → 1.14.3

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.
@@ -1,5 +1,5 @@
1
1
  export { ActivityTrendChart, CombinedTrendChart, CostTrendChart, CyberAreaChart, CyberDonut, CyberDonutTooltip, CyberLegendItem, HeroStatsRow, getSeriesColor, useCyberColors } from '../chunk-HGUJ6SSM.js';
2
- import '../chunk-YHTK43DV.js';
2
+ import '../chunk-MYRCM7VD.js';
3
3
  import '../chunk-EQNXEBGZ.js';
4
4
  import '../chunk-LHQTTUL2.js';
5
5
  import '../chunk-ELJIFLCB.js';
@@ -1953,8 +1953,7 @@ function useSortedData(data, defaultColumn, accessors, defaultDirection = "desc"
1953
1953
  }
1954
1954
  function createUseFeatureAccess({
1955
1955
  useInitialization,
1956
- useOrganization: useOrganization2,
1957
- optInFeatures = []
1956
+ useOrganization: useOrganization2
1958
1957
  }) {
1959
1958
  return function useFeatureAccess() {
1960
1959
  const { profile, organizationReady } = useInitialization();
@@ -1968,18 +1967,14 @@ function createUseFeatureAccess({
1968
1967
  const checkFeature = useCallback(
1969
1968
  (featureKey) => {
1970
1969
  const key = featureKey;
1971
- const orgValue = orgConfig?.features?.[key];
1972
- if (!profile?.is_platform_admin) {
1973
- const membershipValue = membershipConfig?.features?.[key];
1974
- if (membershipValue === false) return { allowed: false, restrictedBy: "membership" };
1975
- if (membershipValue === true) return { allowed: true, restrictedBy: null };
1970
+ if (profile?.is_platform_admin) {
1971
+ return { allowed: true, restrictedBy: null };
1976
1972
  }
1977
- if (optInFeatures.includes(featureKey)) {
1978
- return orgValue === true ? { allowed: true, restrictedBy: null } : { allowed: false, restrictedBy: "org" };
1979
- }
1980
- return orgValue === false ? { allowed: false, restrictedBy: "org" } : { allowed: true, restrictedBy: null };
1973
+ const membershipValue = membershipConfig?.features?.[key];
1974
+ if (membershipValue === false) return { allowed: false, restrictedBy: "membership" };
1975
+ return { allowed: true, restrictedBy: null };
1981
1976
  },
1982
- [profile?.is_platform_admin, membershipConfig, orgConfig]
1977
+ [profile?.is_platform_admin, membershipConfig]
1983
1978
  );
1984
1979
  const hasFeature = useCallback((featureKey) => checkFeature(featureKey).allowed, [checkFeature]);
1985
1980
  return {
@@ -1,4 +1,4 @@
1
- import { usePresetsContext } from './chunk-WNRHQAJA.js';
1
+ import { usePresetsContext } from './chunk-6ZNKDPAO.js';
2
2
  import { useMemo } from 'react';
3
3
 
4
4
  var BUILT_IN_NAMES = /* @__PURE__ */ new Set([
@@ -1,6 +1,6 @@
1
- import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-WNRHQAJA.js';
2
- import { AppBackground } from './chunk-TBRTRBJV.js';
3
1
  import { ElevasisLoader } from './chunk-SZHARWKU.js';
2
+ import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-6ZNKDPAO.js';
3
+ import { AppBackground } from './chunk-TBRTRBJV.js';
4
4
  import { ElevasisCoreProvider } from './chunk-BUN337J3.js';
5
5
  import { AppearanceProvider } from './chunk-QJ2KCHKX.js';
6
6
  import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-FCFLBMVI.js';
@@ -2,7 +2,25 @@ import { UnstyledButton, Group, Box, ThemeIcon } from '@mantine/core';
2
2
  import { IconChevronRight } from '@tabler/icons-react';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
4
 
5
- // src/components/display/NavigationButton.tsx
5
+ // src/components/layout/constants.ts
6
+ var sidebarWidth = 240;
7
+ var sidebarCollapsedWidth = 72;
8
+ var sidebarTransitionDuration = 200;
9
+ var sidebarHoverDelay = 100;
10
+ var topbarHeight = 54;
11
+ var sidebarItemHeight = 42;
12
+ var sidebarItemPadding = 10;
13
+ var sidebarItemGap = 4;
14
+ var sidebarSectionPadding = "var(--mantine-spacing-sm)";
15
+ var sidebarSubLinkIndent = 44;
16
+ var sidebarIconSize = 24;
17
+ var sidebarIconStroke = 1.6;
18
+ var sidebarIconInnerSize = 20;
19
+ var sidebarToggleIconSize = 20;
20
+ var sidebarSubLinkPaddingY = 6;
21
+ var sidebarSubLinkPaddingX = 10;
22
+ var sidebarGroupChevronSize = 14;
23
+ var sidebarListItemIconSize = 14;
6
24
  var NavigationButton = ({
7
25
  icon: Icon,
8
26
  label,
@@ -27,14 +45,14 @@ var NavigationButton = ({
27
45
  onClick?.();
28
46
  },
29
47
  style: {
30
- height: 46,
48
+ height: sidebarItemHeight,
31
49
  display: "flex",
32
50
  alignItems: "center",
33
51
  width: "100%",
34
- padding: "var(--mantine-spacing-xs)",
52
+ padding: sidebarItemPadding,
35
53
  color: textColor,
36
54
  backgroundColor: bgColor,
37
- transition: `all var(--duration-fast) var(--easing)`,
55
+ transition: `all ${transitionDuration}ms var(--easing)`,
38
56
  cursor: "pointer",
39
57
  overflow: "hidden",
40
58
  borderRadius: "var(--mantine-radius-default)",
@@ -57,7 +75,6 @@ var NavigationButton = ({
57
75
  style: {
58
76
  display: "flex",
59
77
  alignItems: "center",
60
- justifyContent: "flex-start",
61
78
  flex: hasSubItems && !isCollapsed ? 1 : "initial",
62
79
  minWidth: 0,
63
80
  overflow: "hidden"
@@ -67,7 +84,7 @@ var NavigationButton = ({
67
84
  ThemeIcon,
68
85
  {
69
86
  variant: "light",
70
- size: 30,
87
+ size: sidebarIconSize,
71
88
  style: {
72
89
  backgroundColor: isActive ? activeColor : "var(--color-surface)",
73
90
  color: isActive ? "white" : activeColor,
@@ -75,7 +92,7 @@ var NavigationButton = ({
75
92
  transition: `margin ${transitionDuration}ms var(--easing)`,
76
93
  flexShrink: 0
77
94
  },
78
- children: /* @__PURE__ */ jsx(Icon, { size: 18, stroke: 1.5 })
95
+ children: /* @__PURE__ */ jsx(Icon, { size: sidebarIconInnerSize, stroke: sidebarIconStroke })
79
96
  }
80
97
  ),
81
98
  !isCollapsed && /* @__PURE__ */ jsx(
@@ -116,4 +133,4 @@ var NavigationButton = ({
116
133
  );
117
134
  };
118
135
 
119
- export { NavigationButton };
136
+ export { NavigationButton, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarListItemIconSize, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, topbarHeight };
@@ -1,4 +1,4 @@
1
- import { CredentialNameSchema, UuidSchema, useErrorNotification } from './chunk-K3LYSU7P.js';
1
+ import { CredentialNameSchema, UuidSchema, useErrorNotification } from './chunk-AMLON3UW.js';
2
2
  import { getTimeRangeDates } from './chunk-EQNXEBGZ.js';
3
3
  import { useNotificationAdapter } from './chunk-BUN337J3.js';
4
4
  import { GC_TIME_SHORT, STALE_TIME_MONITORING, GC_TIME_MEDIUM, STALE_TIME_DEFAULT, getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-FCFLBMVI.js';
@@ -1,18 +1,11 @@
1
- import { NavigationButton } from './chunk-YHTK43DV.js';
2
- import { ElevasisLoader } from './chunk-SZHARWKU.js';
1
+ import { sidebarItemGap, sidebarSubLinkPaddingY, sidebarSubLinkPaddingX, sidebarSubLinkIndent, sidebarHoverDelay, sidebarTransitionDuration, sidebarCollapsedWidth, sidebarWidth, topbarHeight, sidebarToggleIconSize, sidebarSectionPadding, NavigationButton, sidebarGroupChevronSize, sidebarIconInnerSize, sidebarListItemIconSize } from './chunk-MYRCM7VD.js';
3
2
  import { useAppearance } from './chunk-QJ2KCHKX.js';
4
3
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
5
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
- import { Collapse, HoverCard, Stack, Group, Text, UnstyledButton, Tooltip, ScrollArea, Menu, Avatar, Container, Loader, Title, Button, Box, Center, useMantineColorScheme, Switch, Code } from '@mantine/core';
5
+ import { Collapse, HoverCard, Stack, Group, Text, UnstyledButton, Tooltip, ScrollArea, Menu, Avatar, Container, Title, Button, Box, Center, useMantineColorScheme, Switch, Code } from '@mantine/core';
7
6
  import { IconLayoutSidebarLeftExpand, IconLayoutSidebarLeftCollapse, IconUser, IconLogout, IconAlertCircle, IconChevronDown, IconChevronRight, IconMoonStars, IconSun } from '@tabler/icons-react';
8
7
  import { createContext, memo, useEffect, createElement, useContext, useState } from 'react';
9
8
 
10
- // src/components/layout/constants.ts
11
- var sidebarWidth = 240;
12
- var sidebarCollapsedWidth = 72;
13
- var sidebarTransitionDuration = 200;
14
- var sidebarHoverDelay = 100;
15
- var topbarHeight = 54;
16
9
  function Vignette({ strength = 0.35, className }) {
17
10
  return /* @__PURE__ */ jsx(
18
11
  "div",
@@ -116,7 +109,8 @@ var AppShellCenteredContainer = ({ children }) => {
116
109
  );
117
110
  };
118
111
  var AppShellLoader = () => {
119
- return /* @__PURE__ */ jsx(AppShellCenteredContainer, { children: /* @__PURE__ */ jsx(Loader, { size: "xl", loaders: { elevasis: ElevasisLoader }, type: "elevasis" }) });
112
+ const { loader } = useAppearance();
113
+ return /* @__PURE__ */ jsx(AppShellCenteredContainer, { children: loader });
120
114
  };
121
115
  var AppShellError = ({ message, retry }) => {
122
116
  return /* @__PURE__ */ jsxs(AppShellCenteredContainer, { children: [
@@ -230,7 +224,7 @@ var SubLinkItem = ({ linkItem, currentPath }) => {
230
224
  fontSize: "var(--mantine-font-size-sm)",
231
225
  color: isActive ? activeColor3 : defaultColor2,
232
226
  backgroundColor: isActive ? activeColorBg : "transparent",
233
- padding: `var(--mantine-spacing-xs) var(--mantine-spacing-xs) var(--mantine-spacing-xs) 50px`,
227
+ padding: `${sidebarSubLinkPaddingY}px ${sidebarSubLinkPaddingX}px ${sidebarSubLinkPaddingY}px ${sidebarSubLinkIndent}px`,
234
228
  borderRadius: "var(--mantine-radius-xs)",
235
229
  transition: `all var(--duration-fast) var(--easing)`,
236
230
  fontWeight: isActive ? 600 : 400
@@ -278,7 +272,7 @@ var MainButton = ({
278
272
  transitionDuration: sidebarTransitionDuration
279
273
  }
280
274
  );
281
- const wrapperStyle = { marginBottom: "4px" };
275
+ const wrapperStyle = { marginBottom: `${sidebarItemGap}px` };
282
276
  if (noWrapper) {
283
277
  return button;
284
278
  }
@@ -439,7 +433,7 @@ var LinksGroup = memo(function LinksGroup2({
439
433
  noWrapper: true
440
434
  }
441
435
  );
442
- return /* @__PURE__ */ jsx("div", { style: { marginBottom: "4px" }, children: /* @__PURE__ */ jsx(CollapsedWithHoverCard, { label, icon: Icon, links, currentPath, children: mainButtonNoWrapper }) });
436
+ return /* @__PURE__ */ jsx("div", { style: { marginBottom: `${sidebarItemGap}px` }, children: /* @__PURE__ */ jsx(CollapsedWithHoverCard, { label, icon: Icon, links, currentPath, children: mainButtonNoWrapper }) });
443
437
  }
444
438
  if (isCollapsed && !hasLinks) {
445
439
  const mainButtonNoWrapper = /* @__PURE__ */ jsx(
@@ -457,7 +451,7 @@ var LinksGroup = memo(function LinksGroup2({
457
451
  noWrapper: true
458
452
  }
459
453
  );
460
- return /* @__PURE__ */ jsx("div", { style: { marginBottom: "4px" }, children: /* @__PURE__ */ jsx(CollapsedWithTooltip, { label, children: mainButtonNoWrapper }) });
454
+ return /* @__PURE__ */ jsx("div", { style: { marginBottom: `${sidebarItemGap}px` }, children: /* @__PURE__ */ jsx(CollapsedWithTooltip, { label, children: mainButtonNoWrapper }) });
461
455
  }
462
456
  return /* @__PURE__ */ jsxs(Fragment, { children: [
463
457
  mainButton,
@@ -575,7 +569,7 @@ var SidebarTopSection = ({ logo }) => {
575
569
  children: isCollapsed ? /* @__PURE__ */ jsx(
576
570
  IconLayoutSidebarLeftExpand,
577
571
  {
578
- size: 20,
572
+ size: sidebarToggleIconSize,
579
573
  stroke: 1.5,
580
574
  style: {
581
575
  transition: `transform ${sidebarTransitionDuration}ms var(--easing)`
@@ -584,7 +578,7 @@ var SidebarTopSection = ({ logo }) => {
584
578
  ) : /* @__PURE__ */ jsx(
585
579
  IconLayoutSidebarLeftCollapse,
586
580
  {
587
- size: 20,
581
+ size: sidebarToggleIconSize,
588
582
  stroke: 1.5,
589
583
  style: {
590
584
  transition: `transform ${sidebarTransitionDuration}ms var(--easing)`
@@ -597,7 +591,7 @@ var SidebarTopSection = ({ logo }) => {
597
591
  }
598
592
  );
599
593
  };
600
- var SidebarBottomSection = ({ user, onLogout }) => {
594
+ var SidebarBottomSection = ({ user, onLogout, onAccountClick }) => {
601
595
  const { isCollapsed } = useSidebar();
602
596
  if (!user) {
603
597
  return null;
@@ -705,7 +699,7 @@ var SidebarBottomSection = ({ user, onLogout }) => {
705
699
  }
706
700
  ) }),
707
701
  /* @__PURE__ */ jsxs(Menu.Dropdown, { children: [
708
- /* @__PURE__ */ jsx(Menu.Item, { leftSection: /* @__PURE__ */ jsx(IconUser, { size: 14 }), children: "Account" }),
702
+ /* @__PURE__ */ jsx(Menu.Item, { leftSection: /* @__PURE__ */ jsx(IconUser, { size: 14 }), onClick: onAccountClick, children: "Account" }),
709
703
  onLogout && /* @__PURE__ */ jsx(Menu.Item, { leftSection: /* @__PURE__ */ jsx(IconLogout, { size: 14 }), onClick: onLogout, children: "Logout" })
710
704
  ] })
711
705
  ] })
@@ -718,7 +712,7 @@ var SidebarMiddleSection = ({ linkElements }) => {
718
712
  {
719
713
  style: {
720
714
  flex: 1,
721
- padding: "var(--mantine-spacing-sm)",
715
+ padding: sidebarSectionPadding,
722
716
  transition: `padding ${sidebarTransitionDuration}ms var(--easing)`
723
717
  },
724
718
  children: /* @__PURE__ */ jsx("div", { style: { paddingBottom: "var(--mantine-spacing-sm)" }, children: linkElements })
@@ -729,6 +723,7 @@ var Sidebar = memo(function Sidebar2({
729
723
  links = [],
730
724
  user,
731
725
  onLogout,
726
+ onAccountClick,
732
727
  className = "",
733
728
  logo
734
729
  }) {
@@ -758,7 +753,7 @@ var Sidebar = memo(function Sidebar2({
758
753
  return /* @__PURE__ */ jsxs(SidebarContainer, { className, children: [
759
754
  /* @__PURE__ */ jsx(SidebarTopSection, { logo }),
760
755
  /* @__PURE__ */ jsx(SidebarMiddleSection, { linkElements }),
761
- /* @__PURE__ */ jsx(SidebarBottomSection, { user, onLogout })
756
+ /* @__PURE__ */ jsx(SidebarBottomSection, { user, onLogout, onAccountClick })
762
757
  ] });
763
758
  });
764
759
  var activeColor = "var(--color-primary)";
@@ -816,13 +811,13 @@ var CollapsibleSidebarGroup = ({
816
811
  }
817
812
  },
818
813
  children: /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", style: { width: "100%" }, children: [
819
- /* @__PURE__ */ jsx(Box, { style: { flexShrink: 0, color: iconColor }, children: isExpanded ? /* @__PURE__ */ jsx(IconChevronDown, { size: 14 }) : /* @__PURE__ */ jsx(IconChevronRight, { size: 14 }) }),
814
+ /* @__PURE__ */ jsx(Box, { style: { flexShrink: 0, color: iconColor }, children: isExpanded ? /* @__PURE__ */ jsx(IconChevronDown, { size: sidebarGroupChevronSize }) : /* @__PURE__ */ jsx(IconChevronRight, { size: sidebarGroupChevronSize }) }),
820
815
  /* @__PURE__ */ jsx(
821
816
  Box,
822
817
  {
823
818
  style: { flexShrink: 0, color: iconColor, cursor: onLabelClick ? "pointer" : "inherit" },
824
819
  onClick: onLabelClick ? handleLabelClick : void 0,
825
- children: /* @__PURE__ */ jsx(Icon, { size: 18, color: activeColor })
820
+ children: /* @__PURE__ */ jsx(Icon, { size: sidebarIconInnerSize, color: activeColor })
826
821
  }
827
822
  ),
828
823
  /* @__PURE__ */ jsx(
@@ -914,7 +909,7 @@ var SidebarListItem = ({
914
909
  /* @__PURE__ */ jsx(
915
910
  Icon,
916
911
  {
917
- size: 14,
912
+ size: sidebarListItemIconSize,
918
913
  style: {
919
914
  flexShrink: 0,
920
915
  opacity: isActive ? 1 : 0.6,
@@ -1168,4 +1163,4 @@ var Topbar = ({ version, leftContent, children }) => {
1168
1163
  ] });
1169
1164
  };
1170
1165
 
1171
- export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, sidebarCollapsedWidth, sidebarHoverDelay, sidebarTransitionDuration, sidebarWidth, subsidebarWidth, topbarHeight, useSidebar, useSidebarCollapse };
1166
+ export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse };
@@ -3467,16 +3467,16 @@ interface NotificationDTO {
3467
3467
  * Multi-tenancy configuration types
3468
3468
  *
3469
3469
  * Config is stored in dedicated `config` columns (NOT nested in metadata):
3470
- * - organizations.config: Org-level feature config
3470
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
3471
3471
  * - org_memberships.config: Per-user-per-org feature overrides
3472
3472
  * - users.config: User-global config
3473
3473
  */
3474
3474
  /**
3475
- * Org-level feature config (stored in organizations.config)
3476
- * Controls which features are available to all org members
3475
+ * Per-user-per-org config (stored in org_memberships.config)
3476
+ * Controls which features a specific member can access within their org
3477
3477
  * Valid feature keys: operations, monitoring, acquisition, calibration, seo
3478
3478
  */
3479
- interface OrgFeatureConfig {
3479
+ interface MembershipFeatureConfig {
3480
3480
  features?: {
3481
3481
  operations?: boolean;
3482
3482
  monitoring?: boolean;
@@ -3485,11 +3485,6 @@ interface OrgFeatureConfig {
3485
3485
  seo?: boolean;
3486
3486
  };
3487
3487
  }
3488
- /**
3489
- * Per-user-per-org config (stored in org_memberships.config)
3490
- * Overrides org-level feature config for specific users
3491
- */
3492
- type MembershipFeatureConfig = OrgFeatureConfig;
3493
3488
 
3494
3489
  /**
3495
3490
  * Memberships Domain - Zod Validation Schemas
@@ -3548,7 +3543,7 @@ interface MembershipWithDetails extends OrganizationMembership {
3548
3543
  is_test?: boolean;
3549
3544
  status?: string;
3550
3545
  metadata?: Record<string, unknown>;
3551
- config?: OrgFeatureConfig;
3546
+ config?: Record<string, unknown>;
3552
3547
  };
3553
3548
  config?: MembershipFeatureConfig;
3554
3549
  }
@@ -5591,11 +5586,10 @@ declare function DeploymentStatusBadge({ status }: DeploymentStatusBadgeProps):
5591
5586
 
5592
5587
  interface MembershipFeaturePanelProps {
5593
5588
  currentConfig?: MembershipFeatureConfig;
5594
- orgConfig?: OrgFeatureConfig;
5595
5589
  onConfigChange: (config: MembershipFeatureConfig) => void;
5596
5590
  disabled?: boolean;
5597
5591
  }
5598
- declare function MembershipFeaturePanel({ currentConfig, orgConfig, onConfigChange, disabled }: MembershipFeaturePanelProps): react_jsx_runtime.JSX.Element;
5592
+ declare function MembershipFeaturePanel({ currentConfig, onConfigChange, disabled }: MembershipFeaturePanelProps): react_jsx_runtime.JSX.Element;
5599
5593
 
5600
5594
  interface MembershipStatusBadgeProps {
5601
5595
  status: MembershipStatus;
@@ -1,10 +1,10 @@
1
1
  import { useCyberColors, EmptyState, CyberLegendItem, CyberAreaChart, APIErrorAlert, CardHeader, StatsCardSkeleton, TrendIndicator, DetailCardSkeleton, ContextViewer, JsonViewer, StyledMarkdown, PageTitleCaption, StatCard, CyberDonut, CollapsibleSection, ListSkeleton } from '../chunk-HGUJ6SSM.js';
2
2
  export { APIErrorAlert, CardHeader, CollapsibleSection, ContextViewer, CustomSelector, DetailCardSkeleton, EmptyState, JsonViewer, ListSkeleton, PageNotFound, PageTitleCaption, ResourceCard, StatCard, StatCardSkeleton, StatsCardSkeleton, StyledMarkdown, TabCountBadge, TimeRangeSelector, TrendIndicator, catalogItemToResourceDefinition } from '../chunk-HGUJ6SSM.js';
3
- import { SubshellLoader, SubshellContainer, SubshellSidebar, SubshellRightSideContainer, SubshellContentContainer, PageContainer, AppShellLoader, SubshellSidebarSection, CollapsibleSidebarGroup, SidebarListItem } from '../chunk-M3WZAG5D.js';
4
- export { NavigationButton } from '../chunk-YHTK43DV.js';
5
- import { useUpdateApiKey, useDeleteApiKey, useCreateApiKey, useListApiKeys, useDeleteCredential, useCreateCredential, useCredentials, useActivateDeployment, useDeactivateDeployment, useDeleteDeployment, useListDeployments, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, showApiErrorNotification, showSuccessNotification, CredentialSchemas, showErrorNotification } from '../chunk-XPA2FQ6T.js';
6
- export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-XPA2FQ6T.js';
7
- import { useCommandViewLayout, useResourcesHealth, useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useMarkAllAsRead, useNotificationCount, useNotifications, useSubmitAction, useDeleteTask, useErrorDetail, useExecution, useArchivedLogs, useDeleteExecution, useRetryExecution, useCancelExecution, useDeploymentDocs, useResources, useCreateSchedule, useListSchedules, usePauseSchedule, useResumeSchedule, useCancelSchedule, useDeleteSchedule, useCommandQueueTotals } from '../chunk-K3LYSU7P.js';
3
+ import { SubshellLoader, SubshellContainer, SubshellSidebar, SubshellRightSideContainer, SubshellContentContainer, PageContainer, AppShellLoader, SubshellSidebarSection, CollapsibleSidebarGroup, SidebarListItem } from '../chunk-Y5CWAXPF.js';
4
+ export { NavigationButton } from '../chunk-MYRCM7VD.js';
5
+ import { useUpdateApiKey, useDeleteApiKey, useCreateApiKey, useListApiKeys, useDeleteCredential, useCreateCredential, useCredentials, useActivateDeployment, useDeactivateDeployment, useDeleteDeployment, useListDeployments, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, showApiErrorNotification, showSuccessNotification, CredentialSchemas, showErrorNotification } from '../chunk-VPQU5BRN.js';
6
+ export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-VPQU5BRN.js';
7
+ import { useCommandViewLayout, useResourcesHealth, useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useMarkAllAsRead, useNotificationCount, useNotifications, useSubmitAction, useDeleteTask, useErrorDetail, useExecution, useArchivedLogs, useDeleteExecution, useRetryExecution, useCancelExecution, useDeploymentDocs, useResources, useCreateSchedule, useListSchedules, usePauseSchedule, useResumeSchedule, useCancelSchedule, useDeleteSchedule, useCommandQueueTotals } from '../chunk-AMLON3UW.js';
8
8
  import { getTimeRangeDates, formatBucketTime } from '../chunk-EQNXEBGZ.js';
9
9
  import '../chunk-NJJ3NQ7B.js';
10
10
  import '../chunk-LHQTTUL2.js';
@@ -16,11 +16,10 @@ import { ResourceStatusColors, toWorkflowLogMessages } from '../chunk-ELJIFLCB.j
16
16
  import '../chunk-GU46QC4Z.js';
17
17
  import '../chunk-CKFTPEBC.js';
18
18
  import '../chunk-RNP5R5I3.js';
19
- import '../chunk-F5BVI434.js';
20
- import '../chunk-WNRHQAJA.js';
21
- import '../chunk-TBRTRBJV.js';
22
- import { ElevasisLoader } from '../chunk-SZHARWKU.js';
19
+ import '../chunk-LTVTSDWO.js';
23
20
  export { ElevasisLoader } from '../chunk-SZHARWKU.js';
21
+ import '../chunk-6ZNKDPAO.js';
22
+ import '../chunk-TBRTRBJV.js';
24
23
  import '../chunk-BUN337J3.js';
25
24
  import { useAppearance } from '../chunk-QJ2KCHKX.js';
26
25
  import '../chunk-HGNP6EVB.js';
@@ -4049,11 +4048,12 @@ function BaseExecutionLogsHeader({
4049
4048
  ] });
4050
4049
  }
4051
4050
  function BaseExecutionLogsStates({ executionId, isLoading, execution }) {
4051
+ const { loader } = useAppearance();
4052
4052
  if (!executionId) {
4053
4053
  return /* @__PURE__ */ jsx(Center, { h: "100%", children: /* @__PURE__ */ jsx(Text, { c: "dimmed", children: "Select an execution to view details" }) });
4054
4054
  }
4055
4055
  if (isLoading) {
4056
- return /* @__PURE__ */ jsx(Center, { h: "100%", children: /* @__PURE__ */ jsx(Loader, { size: "lg", loaders: { elevasis: ElevasisLoader }, type: "elevasis" }) });
4056
+ return /* @__PURE__ */ jsx(Center, { h: "100%", children: loader });
4057
4057
  }
4058
4058
  if (!execution) {
4059
4059
  return /* @__PURE__ */ jsx(Center, { h: "100%", children: /* @__PURE__ */ jsx(Text, { c: "dimmed", children: "Execution not found" }) });
@@ -8792,7 +8792,6 @@ var FEATURES = [
8792
8792
  ];
8793
8793
  function MembershipFeaturePanel({
8794
8794
  currentConfig,
8795
- orgConfig,
8796
8795
  onConfigChange,
8797
8796
  disabled = false
8798
8797
  }) {
@@ -8807,15 +8806,8 @@ function MembershipFeaturePanel({
8807
8806
  onConfigChange(newConfig);
8808
8807
  };
8809
8808
  return /* @__PURE__ */ jsx(Card, { withBorder: true, children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
8810
- /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Toggle features this member can access. Features not available to your organization are shown as unavailable." }),
8809
+ /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Toggle features this member can access." }),
8811
8810
  FEATURES.map(({ key, label }) => {
8812
- const orgHasFeature = orgConfig?.features?.[key] === true;
8813
- if (!orgHasFeature) {
8814
- return /* @__PURE__ */ jsxs(Group, { justify: "space-between", wrap: "nowrap", children: [
8815
- /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: label }),
8816
- /* @__PURE__ */ jsx(Badge, { color: "gray", variant: "light", children: "Not available" })
8817
- ] }, key);
8818
- }
8819
8811
  const isEnabled = currentConfig?.features?.[key] !== false;
8820
8812
  return /* @__PURE__ */ jsxs(Group, { justify: "space-between", wrap: "nowrap", children: [
8821
8813
  /* @__PURE__ */ jsx(Text, { size: "sm", children: label }),
@@ -3171,16 +3171,16 @@ interface SessionTokenUsage {
3171
3171
  * Multi-tenancy configuration types
3172
3172
  *
3173
3173
  * Config is stored in dedicated `config` columns (NOT nested in metadata):
3174
- * - organizations.config: Org-level feature config
3174
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
3175
3175
  * - org_memberships.config: Per-user-per-org feature overrides
3176
3176
  * - users.config: User-global config
3177
3177
  */
3178
3178
  /**
3179
- * Org-level feature config (stored in organizations.config)
3180
- * Controls which features are available to all org members
3179
+ * Per-user-per-org config (stored in org_memberships.config)
3180
+ * Controls which features a specific member can access within their org
3181
3181
  * Valid feature keys: operations, monitoring, acquisition, calibration, seo
3182
3182
  */
3183
- interface OrgFeatureConfig {
3183
+ interface MembershipFeatureConfig {
3184
3184
  features?: {
3185
3185
  operations?: boolean;
3186
3186
  monitoring?: boolean;
@@ -3189,11 +3189,6 @@ interface OrgFeatureConfig {
3189
3189
  seo?: boolean;
3190
3190
  };
3191
3191
  }
3192
- /**
3193
- * Per-user-per-org config (stored in org_memberships.config)
3194
- * Overrides org-level feature config for specific users
3195
- */
3196
- type MembershipFeatureConfig = OrgFeatureConfig;
3197
3192
  /**
3198
3193
  * User-global config (stored in users.config)
3199
3194
  * Theme and onboarding are user-specific, NOT org-specific
@@ -3305,7 +3300,7 @@ interface MembershipWithDetails extends OrganizationMembership {
3305
3300
  is_test?: boolean;
3306
3301
  status?: string;
3307
3302
  metadata?: Record<string, unknown>;
3308
- config?: OrgFeatureConfig;
3303
+ config?: Record<string, unknown>;
3309
3304
  };
3310
3305
  config?: MembershipFeatureConfig;
3311
3306
  }
@@ -5512,7 +5507,7 @@ interface OrganizationContextValue {
5512
5507
  retry: () => Promise<void>;
5513
5508
  }
5514
5509
 
5515
- type RestrictionSource = 'org' | 'membership' | null;
5510
+ type RestrictionSource = 'membership' | null;
5516
5511
  interface FeatureAccessResult {
5517
5512
  allowed: boolean;
5518
5513
  restrictedBy: RestrictionSource;
@@ -5523,7 +5518,6 @@ interface FeatureAccessResult {
5523
5518
  *
5524
5519
  * @param useInitialization - Initialization hook providing `profile` and `organizationReady`
5525
5520
  * @param useOrganization - Organization hook providing `currentMembership`
5526
- * @param optInFeatures - Feature keys that are disabled by default (must be explicitly enabled)
5527
5521
  *
5528
5522
  * @example
5529
5523
  * ```typescript
@@ -5535,17 +5529,15 @@ interface FeatureAccessResult {
5535
5529
  * export const useFeatureAccess = createUseFeatureAccess({
5536
5530
  * useInitialization,
5537
5531
  * useOrganization,
5538
- * optInFeatures: ['acquisition', 'calibration'],
5539
5532
  * })
5540
5533
  * ```
5541
5534
  */
5542
- declare function createUseFeatureAccess({ useInitialization, useOrganization, optInFeatures }: {
5535
+ declare function createUseFeatureAccess({ useInitialization, useOrganization }: {
5543
5536
  useInitialization: () => Pick<AppInitializationState, 'profile' | 'organizationReady'>;
5544
5537
  useOrganization: () => Pick<OrganizationContextValue, 'currentMembership'>;
5545
- optInFeatures?: string[];
5546
5538
  }): () => {
5547
- orgConfig: OrgFeatureConfig | undefined;
5548
- membershipConfig: OrgFeatureConfig | undefined;
5539
+ orgConfig: Record<string, unknown> | undefined;
5540
+ membershipConfig: MembershipFeatureConfig | undefined;
5549
5541
  userConfig: UserConfig | undefined;
5550
5542
  hasFeature: (featureKey: string) => boolean;
5551
5543
  checkFeature: (featureKey: string) => FeatureAccessResult;
@@ -1,14 +1,14 @@
1
- export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from '../chunk-XPA2FQ6T.js';
2
- export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-K3LYSU7P.js';
1
+ export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from '../chunk-VPQU5BRN.js';
2
+ export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-AMLON3UW.js';
3
3
  export { observabilityKeys, useErrorTrends } from '../chunk-EQNXEBGZ.js';
4
4
  import '../chunk-NJJ3NQ7B.js';
5
5
  import '../chunk-F6RBK7NJ.js';
6
6
  import '../chunk-GU46QC4Z.js';
7
7
  import '../chunk-RNP5R5I3.js';
8
- import '../chunk-F5BVI434.js';
9
- import '../chunk-WNRHQAJA.js';
10
- import '../chunk-TBRTRBJV.js';
8
+ import '../chunk-LTVTSDWO.js';
11
9
  import '../chunk-SZHARWKU.js';
10
+ import '../chunk-6ZNKDPAO.js';
11
+ import '../chunk-TBRTRBJV.js';
12
12
  import '../chunk-BUN337J3.js';
13
13
  import '../chunk-QJ2KCHKX.js';
14
14
  import '../chunk-HGNP6EVB.js';
@@ -3600,16 +3600,16 @@ interface SessionTokenUsage {
3600
3600
  * Multi-tenancy configuration types
3601
3601
  *
3602
3602
  * Config is stored in dedicated `config` columns (NOT nested in metadata):
3603
- * - organizations.config: Org-level feature config
3603
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
3604
3604
  * - org_memberships.config: Per-user-per-org feature overrides
3605
3605
  * - users.config: User-global config
3606
3606
  */
3607
3607
  /**
3608
- * Org-level feature config (stored in organizations.config)
3609
- * Controls which features are available to all org members
3608
+ * Per-user-per-org config (stored in org_memberships.config)
3609
+ * Controls which features a specific member can access within their org
3610
3610
  * Valid feature keys: operations, monitoring, acquisition, calibration, seo
3611
3611
  */
3612
- interface OrgFeatureConfig {
3612
+ interface MembershipFeatureConfig {
3613
3613
  features?: {
3614
3614
  operations?: boolean;
3615
3615
  monitoring?: boolean;
@@ -3618,11 +3618,6 @@ interface OrgFeatureConfig {
3618
3618
  seo?: boolean;
3619
3619
  };
3620
3620
  }
3621
- /**
3622
- * Per-user-per-org config (stored in org_memberships.config)
3623
- * Overrides org-level feature config for specific users
3624
- */
3625
- type MembershipFeatureConfig = OrgFeatureConfig;
3626
3621
  /**
3627
3622
  * User-global config (stored in users.config)
3628
3623
  * Theme and onboarding are user-specific, NOT org-specific
@@ -3681,7 +3676,7 @@ interface MembershipWithDetails extends OrganizationMembership {
3681
3676
  is_test?: boolean;
3682
3677
  status?: string;
3683
3678
  metadata?: Record<string, unknown>;
3684
- config?: OrgFeatureConfig;
3679
+ config?: Record<string, unknown>;
3685
3680
  };
3686
3681
  config?: MembershipFeatureConfig;
3687
3682
  }
@@ -5256,7 +5251,7 @@ interface OrganizationContextValue {
5256
5251
  retry: () => Promise<void>;
5257
5252
  }
5258
5253
 
5259
- type RestrictionSource = 'org' | 'membership' | null;
5254
+ type RestrictionSource = 'membership' | null;
5260
5255
  interface FeatureAccessResult {
5261
5256
  allowed: boolean;
5262
5257
  restrictedBy: RestrictionSource;
@@ -5267,7 +5262,6 @@ interface FeatureAccessResult {
5267
5262
  *
5268
5263
  * @param useInitialization - Initialization hook providing `profile` and `organizationReady`
5269
5264
  * @param useOrganization - Organization hook providing `currentMembership`
5270
- * @param optInFeatures - Feature keys that are disabled by default (must be explicitly enabled)
5271
5265
  *
5272
5266
  * @example
5273
5267
  * ```typescript
@@ -5279,17 +5273,15 @@ interface FeatureAccessResult {
5279
5273
  * export const useFeatureAccess = createUseFeatureAccess({
5280
5274
  * useInitialization,
5281
5275
  * useOrganization,
5282
- * optInFeatures: ['acquisition', 'calibration'],
5283
5276
  * })
5284
5277
  * ```
5285
5278
  */
5286
- declare function createUseFeatureAccess({ useInitialization, useOrganization, optInFeatures }: {
5279
+ declare function createUseFeatureAccess({ useInitialization, useOrganization }: {
5287
5280
  useInitialization: () => Pick<AppInitializationState, 'profile' | 'organizationReady'>;
5288
5281
  useOrganization: () => Pick<OrganizationContextValue, 'currentMembership'>;
5289
- optInFeatures?: string[];
5290
5282
  }): () => {
5291
- orgConfig: OrgFeatureConfig | undefined;
5292
- membershipConfig: OrgFeatureConfig | undefined;
5283
+ orgConfig: Record<string, unknown> | undefined;
5284
+ membershipConfig: MembershipFeatureConfig | undefined;
5293
5285
  userConfig: UserConfig | undefined;
5294
5286
  hasFeature: (featureKey: string) => boolean;
5295
5287
  checkFeature: (featureKey: string) => FeatureAccessResult;
@@ -1,13 +1,13 @@
1
- export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-K3LYSU7P.js';
1
+ export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from '../chunk-AMLON3UW.js';
2
2
  export { observabilityKeys, useErrorTrends } from '../chunk-EQNXEBGZ.js';
3
3
  import '../chunk-NJJ3NQ7B.js';
4
4
  import '../chunk-F6RBK7NJ.js';
5
5
  import '../chunk-GU46QC4Z.js';
6
6
  import '../chunk-RNP5R5I3.js';
7
- import '../chunk-F5BVI434.js';
8
- import '../chunk-WNRHQAJA.js';
9
- import '../chunk-TBRTRBJV.js';
7
+ import '../chunk-LTVTSDWO.js';
10
8
  import '../chunk-SZHARWKU.js';
9
+ import '../chunk-6ZNKDPAO.js';
10
+ import '../chunk-TBRTRBJV.js';
11
11
  import '../chunk-BUN337J3.js';
12
12
  import '../chunk-QJ2KCHKX.js';
13
13
  import '../chunk-HGNP6EVB.js';
package/dist/index.d.ts CHANGED
@@ -3619,16 +3619,16 @@ interface SessionTokenUsage {
3619
3619
  * Multi-tenancy configuration types
3620
3620
  *
3621
3621
  * Config is stored in dedicated `config` columns (NOT nested in metadata):
3622
- * - organizations.config: Org-level feature config
3622
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
3623
3623
  * - org_memberships.config: Per-user-per-org feature overrides
3624
3624
  * - users.config: User-global config
3625
3625
  */
3626
3626
  /**
3627
- * Org-level feature config (stored in organizations.config)
3628
- * Controls which features are available to all org members
3627
+ * Per-user-per-org config (stored in org_memberships.config)
3628
+ * Controls which features a specific member can access within their org
3629
3629
  * Valid feature keys: operations, monitoring, acquisition, calibration, seo
3630
3630
  */
3631
- interface OrgFeatureConfig {
3631
+ interface MembershipFeatureConfig {
3632
3632
  features?: {
3633
3633
  operations?: boolean;
3634
3634
  monitoring?: boolean;
@@ -3637,11 +3637,6 @@ interface OrgFeatureConfig {
3637
3637
  seo?: boolean;
3638
3638
  };
3639
3639
  }
3640
- /**
3641
- * Per-user-per-org config (stored in org_memberships.config)
3642
- * Overrides org-level feature config for specific users
3643
- */
3644
- type MembershipFeatureConfig = OrgFeatureConfig;
3645
3640
  /**
3646
3641
  * User-global config (stored in users.config)
3647
3642
  * Theme and onboarding are user-specific, NOT org-specific
@@ -3753,7 +3748,7 @@ interface MembershipWithDetails extends OrganizationMembership {
3753
3748
  is_test?: boolean;
3754
3749
  status?: string;
3755
3750
  metadata?: Record<string, unknown>;
3756
- config?: OrgFeatureConfig;
3751
+ config?: Record<string, unknown>;
3757
3752
  };
3758
3753
  config?: MembershipFeatureConfig;
3759
3754
  }
@@ -6940,7 +6935,7 @@ interface OrganizationContextValue {
6940
6935
  */
6941
6936
  declare function useOrganization(): OrganizationContextValue;
6942
6937
 
6943
- type RestrictionSource = 'org' | 'membership' | null;
6938
+ type RestrictionSource = 'membership' | null;
6944
6939
  interface FeatureAccessResult {
6945
6940
  allowed: boolean;
6946
6941
  restrictedBy: RestrictionSource;
@@ -6951,7 +6946,6 @@ interface FeatureAccessResult {
6951
6946
  *
6952
6947
  * @param useInitialization - Initialization hook providing `profile` and `organizationReady`
6953
6948
  * @param useOrganization - Organization hook providing `currentMembership`
6954
- * @param optInFeatures - Feature keys that are disabled by default (must be explicitly enabled)
6955
6949
  *
6956
6950
  * @example
6957
6951
  * ```typescript
@@ -6963,17 +6957,15 @@ interface FeatureAccessResult {
6963
6957
  * export const useFeatureAccess = createUseFeatureAccess({
6964
6958
  * useInitialization,
6965
6959
  * useOrganization,
6966
- * optInFeatures: ['acquisition', 'calibration'],
6967
6960
  * })
6968
6961
  * ```
6969
6962
  */
6970
- declare function createUseFeatureAccess({ useInitialization, useOrganization, optInFeatures }: {
6963
+ declare function createUseFeatureAccess({ useInitialization, useOrganization }: {
6971
6964
  useInitialization: () => Pick<AppInitializationState, 'profile' | 'organizationReady'>;
6972
6965
  useOrganization: () => Pick<OrganizationContextValue, 'currentMembership'>;
6973
- optInFeatures?: string[];
6974
6966
  }): () => {
6975
- orgConfig: OrgFeatureConfig | undefined;
6976
- membershipConfig: OrgFeatureConfig | undefined;
6967
+ orgConfig: Record<string, unknown> | undefined;
6968
+ membershipConfig: MembershipFeatureConfig | undefined;
6977
6969
  userConfig: UserConfig | undefined;
6978
6970
  hasFeature: (featureKey: string) => boolean;
6979
6971
  checkFeature: (featureKey: string) => FeatureAccessResult;
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export { useAvailablePresets } from './chunk-ZVVYGKE4.js';
1
+ export { useAvailablePresets } from './chunk-E72FC2ZF.js';
2
2
  import './chunk-XCYKC6OZ.js';
3
- export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from './chunk-XPA2FQ6T.js';
4
- export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from './chunk-K3LYSU7P.js';
3
+ export { ApiKeyService, CredentialService, DeploymentService, OrganizationMembershipService, WebhookEndpointService, filterByDomainFilters, useActivateDeployment, useActivityFilters, useCommandViewDomainFilters, useCreateApiKey, useCreateCredential, useCreateWebhookEndpoint, useCredentials, useDeactivateDeployment, useDeactivateMembership, useDeleteApiKey, useDeleteCredential, useDeleteDeployment, useDeleteWebhookEndpoint, useExecutionLogsFilters, useListApiKeys, useListDeployments, useListWebhookEndpoints, useOrganizationMembers, useReactivateMembership, useResourceSearch, useResourcesDomainFilters, useStatusFilter, useTimeRangeDates, useUpdateApiKey, useUpdateCredential, useUpdateMemberConfig, useUpdateWebhookEndpoint, useUserMemberships, useVisibleResources } from './chunk-VPQU5BRN.js';
4
+ export { OperationsService, createUseFeatureAccess, executionsKeys, isSessionCapable, operationsKeys, scheduleKeys, sessionsKeys, sortData, useActivities, useActivityTrend, useArchiveSession, useArchivedLogs, useBatchDelete, useBatchedResourcesHealth, useBulkDeleteExecutions, useBusinessImpact, useCancelExecution, useCancelSchedule, useCheckpointTasks, useCommandQueue, useCommandQueueTotals, useCommandViewData, useCommandViewLayout, useCommandViewStats, useCommandViewStore, useCostBreakdown, useCostByModel, useCostSummary, useCostTrends, useCreateSchedule, useCreateSession, useDashboardMetrics, useDeleteExecution, useDeleteSchedule, useDeleteSession, useDeleteTask, useDeploymentDocs, useErrorAnalysis, useErrorDetail, useErrorDetails, useErrorDistribution, useErrorNotification, useExecuteAsync, useExecution, useExecutionHealth, useExecutionLogSSE, useExecutionLogs, useExecutionPanelState, useExecutions, useGetExecutionHistory, useGetSchedule, useGraphStats, useListSchedules, useMarkAllAsRead, useMarkAsRead, useNotificationCount, useNotifications, usePaginationState, usePatchTask, usePauseSchedule, useRecentExecutionsByResource, useResolveAllErrors, useResolveError, useResolveErrorsByExecution, useResourceDefinition, useResourceErrors, useResourceExecutions, useResources, useResourcesHealth, useResumeSchedule, useRetryExecution, useSSEConnection, useScheduledTasks, useSession, useSessionExecution, useSessionExecutions, useSessionMessages, useSessionWebSocket, useSessions, useSortedData, useSubmitAction, useSuccessNotification, useTableSelection, useTableSort, useTestNotification, useTopFailingResources, useUnresolveError, useUnresolvedErrors, useUpdateAnchor, useUpdateSchedule, useWarningNotification } from './chunk-AMLON3UW.js';
5
5
  export { observabilityKeys, useErrorTrends } from './chunk-EQNXEBGZ.js';
6
6
  import './chunk-NJJ3NQ7B.js';
7
7
  export { TanStackRouterBridge } from './chunk-LHQTTUL2.js';
@@ -11,10 +11,10 @@ import './chunk-ELJIFLCB.js';
11
11
  export { createOrganizationsSlice, createUseOrgInitialization, createUseOrganizations } from './chunk-GU46QC4Z.js';
12
12
  export { createUseAppInitialization } from './chunk-CKFTPEBC.js';
13
13
  import './chunk-RNP5R5I3.js';
14
- export { ElevasisUIProvider } from './chunk-F5BVI434.js';
15
- export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride, PRESETS as presets, usePresetsContext } from './chunk-WNRHQAJA.js';
16
- import './chunk-TBRTRBJV.js';
14
+ export { ElevasisUIProvider } from './chunk-LTVTSDWO.js';
17
15
  import './chunk-SZHARWKU.js';
16
+ export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride, PRESETS as presets, usePresetsContext } from './chunk-6ZNKDPAO.js';
17
+ import './chunk-TBRTRBJV.js';
18
18
  export { ElevasisCoreProvider, NotificationProvider, useNotificationAdapter } from './chunk-BUN337J3.js';
19
19
  export { AppearanceProvider, useAppearance } from './chunk-QJ2KCHKX.js';
20
20
  export { OrganizationProvider } from './chunk-HGNP6EVB.js';
@@ -2349,16 +2349,16 @@ type SupabaseUserProfile = Tables<'users'>;
2349
2349
  * Multi-tenancy configuration types
2350
2350
  *
2351
2351
  * Config is stored in dedicated `config` columns (NOT nested in metadata):
2352
- * - organizations.config: Org-level feature config
2352
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
2353
2353
  * - org_memberships.config: Per-user-per-org feature overrides
2354
2354
  * - users.config: User-global config
2355
2355
  */
2356
2356
  /**
2357
- * Org-level feature config (stored in organizations.config)
2358
- * Controls which features are available to all org members
2357
+ * Per-user-per-org config (stored in org_memberships.config)
2358
+ * Controls which features a specific member can access within their org
2359
2359
  * Valid feature keys: operations, monitoring, acquisition, calibration, seo
2360
2360
  */
2361
- interface OrgFeatureConfig {
2361
+ interface MembershipFeatureConfig {
2362
2362
  features?: {
2363
2363
  operations?: boolean;
2364
2364
  monitoring?: boolean;
@@ -2367,11 +2367,6 @@ interface OrgFeatureConfig {
2367
2367
  seo?: boolean;
2368
2368
  };
2369
2369
  }
2370
- /**
2371
- * Per-user-per-org config (stored in org_memberships.config)
2372
- * Overrides org-level feature config for specific users
2373
- */
2374
- type MembershipFeatureConfig = OrgFeatureConfig;
2375
2370
 
2376
2371
  /**
2377
2372
  * Organization Membership types based on WorkOS API
@@ -2407,7 +2402,7 @@ interface MembershipWithDetails extends OrganizationMembership {
2407
2402
  is_test?: boolean;
2408
2403
  status?: string;
2409
2404
  metadata?: Record<string, unknown>;
2410
- config?: OrgFeatureConfig;
2405
+ config?: Record<string, unknown>;
2411
2406
  };
2412
2407
  config?: MembershipFeatureConfig;
2413
2408
  }
@@ -6,6 +6,32 @@ declare const sidebarCollapsedWidth = 72;
6
6
  declare const sidebarTransitionDuration = 200;
7
7
  declare const sidebarHoverDelay = 100;
8
8
  declare const topbarHeight = 54;
9
+ /** Height of a main navigation button (px) */
10
+ declare const sidebarItemHeight = 42;
11
+ /** Padding inside main navigation buttons (px) */
12
+ declare const sidebarItemPadding = 10;
13
+ /** Vertical gap between main navigation items (px) */
14
+ declare const sidebarItemGap = 4;
15
+ /** Padding around the nav links scroll area (Mantine spacing token) */
16
+ declare const sidebarSectionPadding = "var(--mantine-spacing-sm)";
17
+ /** Left indent for sub-link items (px) */
18
+ declare const sidebarSubLinkIndent = 44;
19
+ /** ThemeIcon container size in main nav buttons (px) */
20
+ declare const sidebarIconSize = 24;
21
+ /** Icon stroke width inside nav buttons */
22
+ declare const sidebarIconStroke = 1.6;
23
+ /** Actual icon size inside the ThemeIcon (px) */
24
+ declare const sidebarIconInnerSize = 20;
25
+ /** Collapse/expand toggle icon size (px) */
26
+ declare const sidebarToggleIconSize = 20;
27
+ /** Vertical padding for sub-link items (px) */
28
+ declare const sidebarSubLinkPaddingY = 6;
29
+ /** Horizontal padding for sub-link items (px) */
30
+ declare const sidebarSubLinkPaddingX = 10;
31
+ /** Icon size in CollapsibleSidebarGroup chevrons (px) */
32
+ declare const sidebarGroupChevronSize = 14;
33
+ /** Icon size in SidebarListItem (px) */
34
+ declare const sidebarListItemIconSize = 14;
9
35
 
10
36
  declare function AppBackground({ children }: {
11
37
  children?: ReactNode;
@@ -136,6 +162,7 @@ interface SidebarNestedProps {
136
162
  profilePictureUrl?: string | null;
137
163
  };
138
164
  onLogout?: () => void;
165
+ onAccountClick?: () => void;
139
166
  className?: string;
140
167
  logo?: string;
141
168
  }
@@ -330,5 +357,5 @@ declare const TopbarContainer: ({ children }: {
330
357
  children: React.ReactNode;
331
358
  }) => react_jsx_runtime.JSX.Element;
332
359
 
333
- export { AppBackground, AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, FilmGrain, FloatingOrbs, LinksGroup, PageContainer, PerspectiveGrid, RadiantGlow, Sidebar, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, sidebarCollapsedWidth, sidebarHoverDelay, sidebarTransitionDuration, sidebarWidth, subsidebarWidth, topbarHeight, useSidebar, useSidebarCollapse };
360
+ export { AppBackground, AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, FilmGrain, FloatingOrbs, LinksGroup, PageContainer, PerspectiveGrid, RadiantGlow, Sidebar, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarListItemIconSize, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subsidebarWidth, topbarHeight, useSidebar, useSidebarCollapse };
334
361
  export type { CollapsibleSidebarGroupProps, LinkItem, LinksGroupProps, SidebarListItemProps, SidebarNestedProps, SubshellContainerProps, SubshellContentContainerProps, SubshellRightSideContainerProps, SubshellSidebarContainerProps, SubshellSidebarProps, SubshellSidebarSectionProps, TopbarProps };
@@ -1,7 +1,6 @@
1
- export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, sidebarCollapsedWidth, sidebarHoverDelay, sidebarTransitionDuration, sidebarWidth, subsidebarWidth, topbarHeight, useSidebar, useSidebarCollapse } from '../chunk-M3WZAG5D.js';
2
- import '../chunk-YHTK43DV.js';
1
+ export { AppShellCenteredContainer, AppShellContainer, AppShellContentContainer, AppShellError, AppShellLoader, AppShellRightSideContainer, AppShellRightSideOuterContainer, AppTopbarAdjusterWrapper, CollapsibleSidebarGroup, LinksGroup, PageContainer, Sidebar, SidebarListItem, SidebarProvider, SubshellContainer, SubshellContentContainer, SubshellLoader, SubshellRightSideContainer, SubshellSidebar, SubshellSidebarSection, Topbar, TopbarContainer, Vignette, subsidebarWidth, useSidebar, useSidebarCollapse } from '../chunk-Y5CWAXPF.js';
2
+ export { sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarListItemIconSize, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, topbarHeight } from '../chunk-MYRCM7VD.js';
3
3
  import '../chunk-LHQTTUL2.js';
4
4
  export { AppBackground, FilmGrain, FloatingOrbs, PerspectiveGrid, RadiantGlow } from '../chunk-TBRTRBJV.js';
5
- import '../chunk-SZHARWKU.js';
6
5
  import '../chunk-QJ2KCHKX.js';
7
6
  import '../chunk-Q7DJKLEN.js';
@@ -6,16 +6,16 @@ import { UseBoundStore, StoreApi } from 'zustand';
6
6
  * Multi-tenancy configuration types
7
7
  *
8
8
  * Config is stored in dedicated `config` columns (NOT nested in metadata):
9
- * - organizations.config: Org-level feature config
9
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
10
10
  * - org_memberships.config: Per-user-per-org feature overrides
11
11
  * - users.config: User-global config
12
12
  */
13
13
  /**
14
- * Org-level feature config (stored in organizations.config)
15
- * Controls which features are available to all org members
14
+ * Per-user-per-org config (stored in org_memberships.config)
15
+ * Controls which features a specific member can access within their org
16
16
  * Valid feature keys: operations, monitoring, acquisition, calibration, seo
17
17
  */
18
- interface OrgFeatureConfig {
18
+ interface MembershipFeatureConfig {
19
19
  features?: {
20
20
  operations?: boolean;
21
21
  monitoring?: boolean;
@@ -24,11 +24,6 @@ interface OrgFeatureConfig {
24
24
  seo?: boolean;
25
25
  };
26
26
  }
27
- /**
28
- * Per-user-per-org config (stored in org_memberships.config)
29
- * Overrides org-level feature config for specific users
30
- */
31
- type MembershipFeatureConfig = OrgFeatureConfig;
32
27
 
33
28
  /**
34
29
  * Organization Membership types based on WorkOS API
@@ -64,7 +59,7 @@ interface MembershipWithDetails extends OrganizationMembership {
64
59
  is_test?: boolean;
65
60
  status?: string;
66
61
  metadata?: Record<string, unknown>;
67
- config?: OrgFeatureConfig;
62
+ config?: Record<string, unknown>;
68
63
  };
69
64
  config?: MembershipFeatureConfig;
70
65
  }
@@ -1,7 +1,7 @@
1
- export { ElevasisUIProvider } from '../chunk-F5BVI434.js';
2
- import '../chunk-WNRHQAJA.js';
3
- import '../chunk-TBRTRBJV.js';
1
+ export { ElevasisUIProvider } from '../chunk-LTVTSDWO.js';
4
2
  import '../chunk-SZHARWKU.js';
3
+ import '../chunk-6ZNKDPAO.js';
4
+ import '../chunk-TBRTRBJV.js';
5
5
  export { ElevasisCoreProvider, NotificationProvider, useNotificationAdapter } from '../chunk-BUN337J3.js';
6
6
  export { AppearanceProvider, useAppearance } from '../chunk-QJ2KCHKX.js';
7
7
  import '../chunk-HGNP6EVB.js';
@@ -1,2 +1,2 @@
1
- export { useAvailablePresets } from '../chunk-ZVVYGKE4.js';
2
- export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride, PRESETS as presets, usePresetsContext } from '../chunk-WNRHQAJA.js';
1
+ export { useAvailablePresets } from '../chunk-E72FC2ZF.js';
2
+ export { PresetsProvider, TOKEN_VAR_MAP, componentThemes, createCssVariablesResolver, generateShades, getPreset, mantineThemeOverride, PRESETS as presets, usePresetsContext } from '../chunk-6ZNKDPAO.js';
@@ -2915,16 +2915,16 @@ interface SessionTokenUsage {
2915
2915
  * Multi-tenancy configuration types
2916
2916
  *
2917
2917
  * Config is stored in dedicated `config` columns (NOT nested in metadata):
2918
- * - organizations.config: Org-level feature config
2918
+ * - organizations.config: Org-level config (no feature toggles -- all features available by default)
2919
2919
  * - org_memberships.config: Per-user-per-org feature overrides
2920
2920
  * - users.config: User-global config
2921
2921
  */
2922
2922
  /**
2923
- * Org-level feature config (stored in organizations.config)
2924
- * Controls which features are available to all org members
2923
+ * Per-user-per-org config (stored in org_memberships.config)
2924
+ * Controls which features a specific member can access within their org
2925
2925
  * Valid feature keys: operations, monitoring, acquisition, calibration, seo
2926
2926
  */
2927
- interface OrgFeatureConfig {
2927
+ interface MembershipFeatureConfig {
2928
2928
  features?: {
2929
2929
  operations?: boolean;
2930
2930
  monitoring?: boolean;
@@ -2933,11 +2933,6 @@ interface OrgFeatureConfig {
2933
2933
  seo?: boolean;
2934
2934
  };
2935
2935
  }
2936
- /**
2937
- * Per-user-per-org config (stored in org_memberships.config)
2938
- * Overrides org-level feature config for specific users
2939
- */
2940
- type MembershipFeatureConfig = OrgFeatureConfig;
2941
2936
  /**
2942
2937
  * User-global config (stored in users.config)
2943
2938
  * Theme and onboarding are user-specific, NOT org-specific
@@ -3028,7 +3023,7 @@ interface MembershipWithDetails extends OrganizationMembership {
3028
3023
  is_test?: boolean;
3029
3024
  status?: string;
3030
3025
  metadata?: Record<string, unknown>;
3031
- config?: OrgFeatureConfig;
3026
+ config?: Record<string, unknown>;
3032
3027
  };
3033
3028
  config?: MembershipFeatureConfig;
3034
3029
  }
@@ -7109,4 +7104,4 @@ interface CommandViewStatsResponse {
7109
7104
  generatedAt: string
7110
7105
  }
7111
7106
 
7112
- export type { AIResourceDefinition, APIExecutionDetail, APIExecutionListResponse, APIExecutionSummary, AbsoluteScheduleConfig, AbsoluteScheduleItem, ActionConfig, Activity, ActivitySSEEvent, ActivityStatus, ActivityType, AgentIterationData, AgentMemory, ApiKeyListItem, BusinessImpactMetrics, CalibrationProject, CalibrationRun, CalibrationRunWithFullData, CalibrationSSEEvent, ChatMessage, CheckpointListResponse, CommandQueueSSEEvent, CommandViewAgent, CommandViewData, CommandViewNode, CommandViewNodeType, CommandViewStatsResponse, CommandViewWorkflow, ConfigVariant, CostBreakdownMetrics, CostByModelResponse, CostSummaryResponse, CostTrendsResponse, CreateCalibrationProjectInput, CreateCalibrationRunInput, CreateWebhookEndpointRequest, CredentialListItem, DashboardMetrics, Deployment, DeploymentStatus, DomainDefinition, ErrorAnalysisMetrics, ErrorDetailFull, ErrorDetailResponse, ErrorTrend, ExecutionHealthMetrics, ExecutionHistoryItem, ExecutionHistoryResponse, ExecutionLog, ExecutionLogMessage, ExecutionMetricsDetail, ExecutionSSEEvent, ExecutionStatus$1 as ExecutionStatus, ExecutionSummary, FailingResource, GradingRubric, HumanCheckpointDefinition, HumanCheckpointStats, ListMembershipsParams, MembershipFeatureConfig, MembershipStatus, MembershipWithDetails, MessageEvent$1 as MessageEvent, MessageType, ModelConfig, NotificationDTO, NotificationSSEEvent, OrgFeatureConfig, PatchTaskParams, RecentExecutionsByResourceResponse, RecurringScheduleConfig, RelativeScheduleConfig, RelativeScheduleItem, ResourceDefinition$1 as ResourceDefinition, ResourceDomain, ResourceErrorsResponse, ResourceExecutionSummary, ResourceExecutionsResponse, ResourceHealth, ResourceIdentifier, ResourceStats, ResourceStatus$1 as ResourceStatus, ResourceType$1 as ResourceType, ResourcesHealthResponse, SerializedAgentDefinition, SerializedExecutionInterface, SerializedWorkflowDefinition, SessionCalibrationResult, SessionDTO, SessionTokenUsage, SingleCalibrationResult, StatsTimeRange, SupabaseUserProfile, Task, TaskSchedule, TaskScheduleConfig, TaskStatus, TimeRange, WorkflowNodeVisualizerData as TimelineData, UpdateCalibrationProjectInput, UpdateWebhookEndpointRequest, UserConfig, WebhookEndpoint, WebhookEndpointResponse };
7107
+ export type { AIResourceDefinition, APIExecutionDetail, APIExecutionListResponse, APIExecutionSummary, AbsoluteScheduleConfig, AbsoluteScheduleItem, ActionConfig, Activity, ActivitySSEEvent, ActivityStatus, ActivityType, AgentIterationData, AgentMemory, ApiKeyListItem, BusinessImpactMetrics, CalibrationProject, CalibrationRun, CalibrationRunWithFullData, CalibrationSSEEvent, ChatMessage, CheckpointListResponse, CommandQueueSSEEvent, CommandViewAgent, CommandViewData, CommandViewNode, CommandViewNodeType, CommandViewStatsResponse, CommandViewWorkflow, ConfigVariant, CostBreakdownMetrics, CostByModelResponse, CostSummaryResponse, CostTrendsResponse, CreateCalibrationProjectInput, CreateCalibrationRunInput, CreateWebhookEndpointRequest, CredentialListItem, DashboardMetrics, Deployment, DeploymentStatus, DomainDefinition, ErrorAnalysisMetrics, ErrorDetailFull, ErrorDetailResponse, ErrorTrend, ExecutionHealthMetrics, ExecutionHistoryItem, ExecutionHistoryResponse, ExecutionLog, ExecutionLogMessage, ExecutionMetricsDetail, ExecutionSSEEvent, ExecutionStatus$1 as ExecutionStatus, ExecutionSummary, FailingResource, GradingRubric, HumanCheckpointDefinition, HumanCheckpointStats, ListMembershipsParams, MembershipFeatureConfig, MembershipStatus, MembershipWithDetails, MessageEvent$1 as MessageEvent, MessageType, ModelConfig, NotificationDTO, NotificationSSEEvent, PatchTaskParams, RecentExecutionsByResourceResponse, RecurringScheduleConfig, RelativeScheduleConfig, RelativeScheduleItem, ResourceDefinition$1 as ResourceDefinition, ResourceDomain, ResourceErrorsResponse, ResourceExecutionSummary, ResourceExecutionsResponse, ResourceHealth, ResourceIdentifier, ResourceStats, ResourceStatus$1 as ResourceStatus, ResourceType$1 as ResourceType, ResourcesHealthResponse, SerializedAgentDefinition, SerializedExecutionInterface, SerializedWorkflowDefinition, SessionCalibrationResult, SessionDTO, SessionTokenUsage, SingleCalibrationResult, StatsTimeRange, SupabaseUserProfile, Task, TaskSchedule, TaskScheduleConfig, TaskStatus, TimeRange, WorkflowNodeVisualizerData as TimelineData, UpdateCalibrationProjectInput, UpdateWebhookEndpointRequest, UserConfig, WebhookEndpoint, WebhookEndpointResponse };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/ui",
3
- "version": "1.14.1",
3
+ "version": "1.14.3",
4
4
  "description": "UI components and platform-aware hooks for building custom frontends on the Elevasis platform",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,44 +0,0 @@
1
- /* src/components/display/ElevasisLoader.module.css */
2
- .wrapper {
3
- display: inline-flex;
4
- align-items: center;
5
- justify-content: center;
6
- width: var(--loader-size);
7
- height: var(--loader-size);
8
- overflow: visible;
9
- }
10
- .loader {
11
- width: 100%;
12
- height: 100%;
13
- display: block;
14
- overflow: visible;
15
- }
16
- .chevron {
17
- stroke: var(--loader-color);
18
- stroke-width: 2;
19
- stroke-linecap: square;
20
- stroke-linejoin: miter;
21
- fill: none;
22
- opacity: 0.15;
23
- animation: chevronPulse 2s ease-in-out infinite;
24
- filter: drop-shadow(0 0 1.5px var(--loader-color));
25
- }
26
- .c1 {
27
- animation-delay: 0s;
28
- }
29
- .c2 {
30
- animation-delay: 0.2s;
31
- }
32
- .c3 {
33
- animation-delay: 0.4s;
34
- }
35
- @keyframes chevronPulse {
36
- 0%, 100% {
37
- opacity: 0.12;
38
- filter: drop-shadow(0 0 1px var(--loader-color));
39
- }
40
- 40%, 60% {
41
- opacity: 1;
42
- filter: drop-shadow(0 0 3px var(--loader-color));
43
- }
44
- }
@@ -1121,11 +1121,11 @@ var PRESETS = {
1121
1121
  description: "Regal black and gold aesthetic",
1122
1122
  colors: ["#D4A843", "#080604", "#F5F0E8"]
1123
1123
  },
1124
- "cyber-volt": {
1125
- ...cyberVoltPreset,
1126
- label: "Cyber-Volt",
1127
- description: "Neon-soaked sci-fi interface",
1128
- colors: ["#00E5FF", "#0A0E14", "#E8EDF2"]
1124
+ slate: {
1125
+ ...slatePreset,
1126
+ label: "Slate",
1127
+ description: "Industrial precision",
1128
+ colors: ["#7B9EBC", "#0C1016", "#ECEEF0"]
1129
1129
  },
1130
1130
  aurora: {
1131
1131
  ...auroraPreset,
@@ -1175,11 +1175,11 @@ var PRESETS = {
1175
1175
  description: "Lush forest grounding",
1176
1176
  colors: ["#4AA860", "#080F0A", "#EDF3EE"]
1177
1177
  },
1178
- slate: {
1179
- ...slatePreset,
1180
- label: "Slate",
1181
- description: "Industrial precision",
1182
- colors: ["#7B9EBC", "#0C1016", "#ECEEF0"]
1178
+ "cyber-volt": {
1179
+ ...cyberVoltPreset,
1180
+ label: "Cyber-Volt",
1181
+ description: "Neon-soaked sci-fi interface",
1182
+ colors: ["#00E5FF", "#0A0E14", "#E8EDF2"]
1183
1183
  },
1184
1184
  "cyber-strike": {
1185
1185
  ...cyberStrikePreset,