@xenide-io/the-old-ui-theme 0.5.2 → 0.5.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.
package/dist/index.mjs CHANGED
@@ -116,7 +116,7 @@ import {
116
116
  isThemeId,
117
117
  persistTheme,
118
118
  readStoredTheme
119
- } from "./chunk-RZXHZWUB.mjs";
119
+ } from "./chunk-VFTZXPXM.mjs";
120
120
  import {
121
121
  ButtonChrome,
122
122
  CANONICAL_ICONS,
package/dist/suite.d.mts CHANGED
@@ -4,7 +4,7 @@ import { ClassValue } from 'clsx';
4
4
  export { m } from 'motion/react';
5
5
 
6
6
  /**
7
- * Today page content wrapper with soft atmosphere.
7
+ * Today page content wrapper with a soft themed visual treatment.
8
8
  * Does not own scrolling — `#main-content` is the scrollport so sticky headers work.
9
9
  * Glow/clouds are absolute and do not create a nested scrollport.
10
10
  */
@@ -319,16 +319,17 @@ interface SuiteUserMenuProps {
319
319
  onSignOut: () => void;
320
320
  /** Fallback letter(s) when there is no avatar image. */
321
321
  fallbackInitials?: string;
322
+ /** Show the old desktop sidebar sign-out action beside the avatar. */
323
+ showSignOutAction?: boolean;
322
324
  dataTest?: string;
323
325
  className?: string;
324
326
  }
325
327
  /**
326
- * Suite account context menu — one tap on the avatar opens a small menu
327
- * with profile settings and sign out. Used in the mobile app bar of every
328
- * app so account actions behave identically across the suite (no dedicated
329
- * logout icon cluttering the mobile chrome).
328
+ * Suite account context menu — one tap on the avatar opens a small menu with
329
+ * profile settings and sign out. Desktop sidebars can also expose the legacy
330
+ * adjacent sign-out action without adding it to mobile chrome.
330
331
  */
331
- declare function SuiteUserMenu({ name, email, image, settingsHref, onSignOut, fallbackInitials, dataTest, className, }: SuiteUserMenuProps): react.JSX.Element;
332
+ declare function SuiteUserMenu({ name, email, image, settingsHref, onSignOut, fallbackInitials, showSignOutAction, dataTest, className, }: SuiteUserMenuProps): react.JSX.Element;
332
333
 
333
334
  /** Any icon component that accepts sizing/stroke props (Lucide, theme icons). */
334
335
  type SuiteNavIcon = ComponentType<{
@@ -368,7 +369,7 @@ interface SuiteAppDefinition {
368
369
  slug: SuiteAppSlug;
369
370
  name: string;
370
371
  description: string;
371
- /** Public asset path — every app hosts all four icons. */
372
+ /** Public asset path — every app hosts its suite icon. */
372
373
  icon: string;
373
374
  /** Landing route used after cross-app SSO redirect. */
374
375
  landing: string;
@@ -506,19 +507,20 @@ declare function SuiteAiPanel({ presets, emptyState, title, fetchChat, sendMessa
506
507
  * colour like any lucide icon.
507
508
  */
508
509
  type SuiteGlyphElement = {
509
- kind: 'path';
510
+ kind: "path";
510
511
  d: string;
511
512
  accent?: boolean;
512
513
  filled?: boolean;
514
+ transform?: string;
513
515
  } | {
514
- kind: 'circle';
516
+ kind: "circle";
515
517
  cx: number;
516
518
  cy: number;
517
519
  r: number;
518
520
  accent?: boolean;
519
521
  filled?: boolean;
520
522
  } | {
521
- kind: 'rect';
523
+ kind: "rect";
522
524
  x: number;
523
525
  y: number;
524
526
  width: number;
@@ -537,7 +539,7 @@ interface SuiteGlyph {
537
539
  */
538
540
  animatedAccent?: boolean;
539
541
  }
540
- type SuiteIconName = 'timer-shell' | 'kanban-wave' | 'squid-doc' | 'stack-hex' | 'crew-bot' | 'workspace' | 'organisation' | 'integration-plug' | 'suite-grid' | 'bell-wave' | 'today-sun';
542
+ type SuiteIconName = "timer-shell" | "kanban-wave" | "squid-doc" | "stack-hex" | "crew-bot" | "nakama-fist" | "workspace" | "organisation" | "integration-plug" | "suite-grid" | "bell-wave" | "today-sun";
541
543
  declare const SUITE_GLYPHS: Record<SuiteIconName, SuiteGlyph>;
542
544
  declare const SUITE_ICON_NAMES: SuiteIconName[];
543
545
 
@@ -547,7 +549,7 @@ declare const SUITE_ICON_NAMES: SuiteIconName[];
547
549
  * `onTileAccent` drive `<SuiteAppIcon>` (the programmatic favicon-style
548
550
  * tile + glyph mark).
549
551
  */
550
- type SuiteAccentSlug = 'turtletime' | 'tides' | 'kraken' | 'shellstack' | 'crew' | 'nakama';
552
+ type SuiteAccentSlug = "turtletime" | "tides" | "kraken" | "shellstack" | "crew" | "nakama";
551
553
  interface SuiteAppAccent {
552
554
  /** Display name (default aria label for app marks). */
553
555
  label: string;
@@ -618,12 +620,13 @@ declare const SIDEBAR_DEFAULT_WIDTH = 320;
618
620
  * Shared suite sidebar resizing: drag below the threshold to collapse,
619
621
  * drag the rail edge out to expand, and double-click to reset.
620
622
  */
621
- declare function useSidebarWidth(storageKey: string): {
623
+ declare function useSidebarWidth(storageKey: string, defaultWidth?: number): {
622
624
  width: number;
623
625
  collapsed: boolean;
624
626
  setCollapsed: (value: boolean) => void;
625
627
  resetWidth: () => void;
626
628
  startResize: (event: PointerEvent<HTMLDivElement>) => void;
629
+ resizeBy: (delta: number) => void;
627
630
  };
628
631
 
629
632
  declare function cn(...inputs: ClassValue[]): string;
@@ -857,6 +860,8 @@ interface SuiteAppLayoutProps {
857
860
  lockMainScroll?: boolean;
858
861
  /** Drag this to resize the sidebar. */
859
862
  onStartResize?: (e: PointerEvent<HTMLDivElement>) => void;
863
+ /** Keyboard equivalent for the resize handle. */
864
+ onResizeBy?: (delta: number) => void;
860
865
  /** Double-click to reset sidebar width. */
861
866
  onResetWidth?: () => void;
862
867
  className?: string;
@@ -866,6 +871,6 @@ interface SuiteAppLayoutProps {
866
871
  * one `#main-content` landmark. Desktop: fixed sidebar + scrollable main.
867
872
  * Mobile: header + main + bottom nav.
868
873
  */
869
- declare function SuiteAppLayout({ sidebar, children, mobileHeader, bottomNav, sidebarWidth, collapsed, lockMainScroll, onStartResize, onResetWidth, className, }: SuiteAppLayoutProps): react.JSX.Element;
874
+ declare function SuiteAppLayout({ sidebar, children, mobileHeader, bottomNav, sidebarWidth, collapsed, lockMainScroll, onStartResize, onResizeBy, onResetWidth, className, }: SuiteAppLayoutProps): react.JSX.Element;
870
875
 
871
876
  export { APP_ACCENTS, APP_GLYPHS, AnimatedMoon, AnimatedSun, AppSwitcher, AppSwitcherChevron, AppSwitcherMark, CommandPaletteHost, DeferredChrome, SIDEBAR_COLLAPSE_THRESHOLD, SIDEBAR_DEFAULT_WIDTH, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_EXPANDED_WIDTH, SIDEBAR_RAIL_WIDTH, SUITE_APPS, SUITE_APP_MAP, SUITE_GLYPHS, SUITE_ICON_NAMES, SUITE_OPEN_ASK_AI_EVENT, SUITE_SPRINGS, SourceAppGlyph, type SuiteAccentSlug, type SuiteAiChatMessage, SuiteAiPanel, type SuiteAiPreset, type SuiteAppAccent, type SuiteAppDefinition, type SuiteAppEntry, SuiteAppIcon, type SuiteAppIconProps, SuiteAppLayout, type SuiteAppLayoutProps, type SuiteAppSlug, SuiteAppStrip, type SuiteAskAiOpenDetail, SuiteBottomNav, type SuiteBottomNavItem, SuiteBreadcrumbs, type SuiteBreadcrumbsProps, type SuiteCommandItem, type SuiteCommandPaletteComponent, type SuiteDropdownItemComponent, type SuiteDropdownMenuComponent, type SuiteDropdownMenuProps, SuiteEmptyState, type SuiteGlyph, type SuiteGlyphElement, SuiteIcon, type SuiteIconName, type SuiteIconProps, SuiteMobileDrawer, SuiteMobileHeader, SuiteMotionProvider, type SuiteNotification, SuiteNotificationBell, type SuiteNotificationsResponse, SuitePage, SuitePageHeader, type SuitePageWidth, type SuiteResolvedTheme, SuiteSectionHeader, SuiteSettingsLayout, type SuiteSettingsLayoutProps, SuiteSettingsMobileNav, type SuiteSettingsNavItem, SuiteSidebar, type SuiteSidebarNavItem, SuiteSkeleton, SuiteSkeletonCard, SuiteSkeletonList, type SuiteSpinnerComponent, type SuiteSpringName, SuiteTabList, type SuiteTheme, type SuiteThemeConfig, type SuiteThemeContextValue, SuiteThemeProvider, SuiteToolbar, SuiteUserMenu, type SuiteUserMenuProps, TodayAskAiCard, TodayCalibrating, TodayEmptyAction, TodayEmptyState, TodayHero, TodayLayout, TodayPageFrame, TodayPanel, type TodayPrimaryAccent, TodayPrimaryAction, TodaySection, TodayTimeIcon, TodayTopBar, appSwitcherMarkClass, appSwitcherMenuItemClass, appSwitcherTriggerClass, cn, getTodayGreeting, openSuiteAskAi, resolveSuiteNotificationHref, sourceToSuiteApp, suiteAppBaseUrl, suiteAppLabel, useIdleMount, useSidebarWidth, useSuiteTheme };
package/dist/suite.d.ts CHANGED
@@ -4,7 +4,7 @@ import { ClassValue } from 'clsx';
4
4
  export { m } from 'motion/react';
5
5
 
6
6
  /**
7
- * Today page content wrapper with soft atmosphere.
7
+ * Today page content wrapper with a soft themed visual treatment.
8
8
  * Does not own scrolling — `#main-content` is the scrollport so sticky headers work.
9
9
  * Glow/clouds are absolute and do not create a nested scrollport.
10
10
  */
@@ -319,16 +319,17 @@ interface SuiteUserMenuProps {
319
319
  onSignOut: () => void;
320
320
  /** Fallback letter(s) when there is no avatar image. */
321
321
  fallbackInitials?: string;
322
+ /** Show the old desktop sidebar sign-out action beside the avatar. */
323
+ showSignOutAction?: boolean;
322
324
  dataTest?: string;
323
325
  className?: string;
324
326
  }
325
327
  /**
326
- * Suite account context menu — one tap on the avatar opens a small menu
327
- * with profile settings and sign out. Used in the mobile app bar of every
328
- * app so account actions behave identically across the suite (no dedicated
329
- * logout icon cluttering the mobile chrome).
328
+ * Suite account context menu — one tap on the avatar opens a small menu with
329
+ * profile settings and sign out. Desktop sidebars can also expose the legacy
330
+ * adjacent sign-out action without adding it to mobile chrome.
330
331
  */
331
- declare function SuiteUserMenu({ name, email, image, settingsHref, onSignOut, fallbackInitials, dataTest, className, }: SuiteUserMenuProps): react.JSX.Element;
332
+ declare function SuiteUserMenu({ name, email, image, settingsHref, onSignOut, fallbackInitials, showSignOutAction, dataTest, className, }: SuiteUserMenuProps): react.JSX.Element;
332
333
 
333
334
  /** Any icon component that accepts sizing/stroke props (Lucide, theme icons). */
334
335
  type SuiteNavIcon = ComponentType<{
@@ -368,7 +369,7 @@ interface SuiteAppDefinition {
368
369
  slug: SuiteAppSlug;
369
370
  name: string;
370
371
  description: string;
371
- /** Public asset path — every app hosts all four icons. */
372
+ /** Public asset path — every app hosts its suite icon. */
372
373
  icon: string;
373
374
  /** Landing route used after cross-app SSO redirect. */
374
375
  landing: string;
@@ -506,19 +507,20 @@ declare function SuiteAiPanel({ presets, emptyState, title, fetchChat, sendMessa
506
507
  * colour like any lucide icon.
507
508
  */
508
509
  type SuiteGlyphElement = {
509
- kind: 'path';
510
+ kind: "path";
510
511
  d: string;
511
512
  accent?: boolean;
512
513
  filled?: boolean;
514
+ transform?: string;
513
515
  } | {
514
- kind: 'circle';
516
+ kind: "circle";
515
517
  cx: number;
516
518
  cy: number;
517
519
  r: number;
518
520
  accent?: boolean;
519
521
  filled?: boolean;
520
522
  } | {
521
- kind: 'rect';
523
+ kind: "rect";
522
524
  x: number;
523
525
  y: number;
524
526
  width: number;
@@ -537,7 +539,7 @@ interface SuiteGlyph {
537
539
  */
538
540
  animatedAccent?: boolean;
539
541
  }
540
- type SuiteIconName = 'timer-shell' | 'kanban-wave' | 'squid-doc' | 'stack-hex' | 'crew-bot' | 'workspace' | 'organisation' | 'integration-plug' | 'suite-grid' | 'bell-wave' | 'today-sun';
542
+ type SuiteIconName = "timer-shell" | "kanban-wave" | "squid-doc" | "stack-hex" | "crew-bot" | "nakama-fist" | "workspace" | "organisation" | "integration-plug" | "suite-grid" | "bell-wave" | "today-sun";
541
543
  declare const SUITE_GLYPHS: Record<SuiteIconName, SuiteGlyph>;
542
544
  declare const SUITE_ICON_NAMES: SuiteIconName[];
543
545
 
@@ -547,7 +549,7 @@ declare const SUITE_ICON_NAMES: SuiteIconName[];
547
549
  * `onTileAccent` drive `<SuiteAppIcon>` (the programmatic favicon-style
548
550
  * tile + glyph mark).
549
551
  */
550
- type SuiteAccentSlug = 'turtletime' | 'tides' | 'kraken' | 'shellstack' | 'crew' | 'nakama';
552
+ type SuiteAccentSlug = "turtletime" | "tides" | "kraken" | "shellstack" | "crew" | "nakama";
551
553
  interface SuiteAppAccent {
552
554
  /** Display name (default aria label for app marks). */
553
555
  label: string;
@@ -618,12 +620,13 @@ declare const SIDEBAR_DEFAULT_WIDTH = 320;
618
620
  * Shared suite sidebar resizing: drag below the threshold to collapse,
619
621
  * drag the rail edge out to expand, and double-click to reset.
620
622
  */
621
- declare function useSidebarWidth(storageKey: string): {
623
+ declare function useSidebarWidth(storageKey: string, defaultWidth?: number): {
622
624
  width: number;
623
625
  collapsed: boolean;
624
626
  setCollapsed: (value: boolean) => void;
625
627
  resetWidth: () => void;
626
628
  startResize: (event: PointerEvent<HTMLDivElement>) => void;
629
+ resizeBy: (delta: number) => void;
627
630
  };
628
631
 
629
632
  declare function cn(...inputs: ClassValue[]): string;
@@ -857,6 +860,8 @@ interface SuiteAppLayoutProps {
857
860
  lockMainScroll?: boolean;
858
861
  /** Drag this to resize the sidebar. */
859
862
  onStartResize?: (e: PointerEvent<HTMLDivElement>) => void;
863
+ /** Keyboard equivalent for the resize handle. */
864
+ onResizeBy?: (delta: number) => void;
860
865
  /** Double-click to reset sidebar width. */
861
866
  onResetWidth?: () => void;
862
867
  className?: string;
@@ -866,6 +871,6 @@ interface SuiteAppLayoutProps {
866
871
  * one `#main-content` landmark. Desktop: fixed sidebar + scrollable main.
867
872
  * Mobile: header + main + bottom nav.
868
873
  */
869
- declare function SuiteAppLayout({ sidebar, children, mobileHeader, bottomNav, sidebarWidth, collapsed, lockMainScroll, onStartResize, onResetWidth, className, }: SuiteAppLayoutProps): react.JSX.Element;
874
+ declare function SuiteAppLayout({ sidebar, children, mobileHeader, bottomNav, sidebarWidth, collapsed, lockMainScroll, onStartResize, onResizeBy, onResetWidth, className, }: SuiteAppLayoutProps): react.JSX.Element;
870
875
 
871
876
  export { APP_ACCENTS, APP_GLYPHS, AnimatedMoon, AnimatedSun, AppSwitcher, AppSwitcherChevron, AppSwitcherMark, CommandPaletteHost, DeferredChrome, SIDEBAR_COLLAPSE_THRESHOLD, SIDEBAR_DEFAULT_WIDTH, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_EXPANDED_WIDTH, SIDEBAR_RAIL_WIDTH, SUITE_APPS, SUITE_APP_MAP, SUITE_GLYPHS, SUITE_ICON_NAMES, SUITE_OPEN_ASK_AI_EVENT, SUITE_SPRINGS, SourceAppGlyph, type SuiteAccentSlug, type SuiteAiChatMessage, SuiteAiPanel, type SuiteAiPreset, type SuiteAppAccent, type SuiteAppDefinition, type SuiteAppEntry, SuiteAppIcon, type SuiteAppIconProps, SuiteAppLayout, type SuiteAppLayoutProps, type SuiteAppSlug, SuiteAppStrip, type SuiteAskAiOpenDetail, SuiteBottomNav, type SuiteBottomNavItem, SuiteBreadcrumbs, type SuiteBreadcrumbsProps, type SuiteCommandItem, type SuiteCommandPaletteComponent, type SuiteDropdownItemComponent, type SuiteDropdownMenuComponent, type SuiteDropdownMenuProps, SuiteEmptyState, type SuiteGlyph, type SuiteGlyphElement, SuiteIcon, type SuiteIconName, type SuiteIconProps, SuiteMobileDrawer, SuiteMobileHeader, SuiteMotionProvider, type SuiteNotification, SuiteNotificationBell, type SuiteNotificationsResponse, SuitePage, SuitePageHeader, type SuitePageWidth, type SuiteResolvedTheme, SuiteSectionHeader, SuiteSettingsLayout, type SuiteSettingsLayoutProps, SuiteSettingsMobileNav, type SuiteSettingsNavItem, SuiteSidebar, type SuiteSidebarNavItem, SuiteSkeleton, SuiteSkeletonCard, SuiteSkeletonList, type SuiteSpinnerComponent, type SuiteSpringName, SuiteTabList, type SuiteTheme, type SuiteThemeConfig, type SuiteThemeContextValue, SuiteThemeProvider, SuiteToolbar, SuiteUserMenu, type SuiteUserMenuProps, TodayAskAiCard, TodayCalibrating, TodayEmptyAction, TodayEmptyState, TodayHero, TodayLayout, TodayPageFrame, TodayPanel, type TodayPrimaryAccent, TodayPrimaryAction, TodaySection, TodayTimeIcon, TodayTopBar, appSwitcherMarkClass, appSwitcherMenuItemClass, appSwitcherTriggerClass, cn, getTodayGreeting, openSuiteAskAi, resolveSuiteNotificationHref, sourceToSuiteApp, suiteAppBaseUrl, suiteAppLabel, useIdleMount, useSidebarWidth, useSuiteTheme };