@the-portland-company/shell 0.92.0 → 0.93.0

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.
@@ -93,6 +93,22 @@ type HeaderTabBarProps = {
93
93
  */
94
94
  declare function HeaderTabBar({ items, activeId, onChange, className, ariaLabel, }: HeaderTabBarProps): react_jsx_runtime.JSX.Element;
95
95
 
96
+ /** A tab icon: the same shape `NavTabStrip` passes (`size`, `className`, `strokeWidth`). */
97
+ type TabGlyphComponent = ComponentType<{
98
+ size?: number;
99
+ className?: string;
100
+ strokeWidth?: number;
101
+ }>;
102
+ /**
103
+ * Resolve a Brand tab-icon name to its component. Trims, strips surrounding
104
+ * quotes (the CSS var value is a quoted string) and lowercases. Returns null
105
+ * for an empty or unknown name so `NavTabStrip` falls back to the tab's own
106
+ * `icon` prop: an unrecognised token never renders a broken or empty icon.
107
+ */
108
+ declare function resolveTabGlyph(name: string | null | undefined): TabGlyphComponent | null;
109
+ /** The tab icon names the shell knows, in vocabulary order. The Brand editor offers only these. */
110
+ declare const KNOWN_TAB_GLYPHS: readonly string[];
111
+
96
112
  /**
97
113
  * The six canonical top-bar action slots (Reference/Global-Rules v9 → top-bar
98
114
  * icons). Each slot's GLYPH is unique and comes from the Brand API
@@ -1057,6 +1073,16 @@ type NavTabStripProps = {
1057
1073
  size?: 'md' | 'sm';
1058
1074
  /** Extra classes on the tablist container. */
1059
1075
  className?: string;
1076
+ /**
1077
+ * The app's strip key in the Brand tab icon map (`tabIcons`), e.g.
1078
+ * `"forms"` or `"contacts-tribes"` (Reference/UI-Platform → Tabs, "Tab icon
1079
+ * map", decided 2026-10-24). When set, each tab reads
1080
+ * `--tab-icon-<iconStrip>-<tab.key>` from the Brand token sheet at runtime
1081
+ * and renders that Lucide icon; when the variable is missing, empty or names
1082
+ * an icon not in `KNOWN_TAB_GLYPHS`, the tab renders its own `icon` prop.
1083
+ * Omit it and every tab renders its own `icon`, as before.
1084
+ */
1085
+ iconStrip?: string;
1060
1086
  /**
1061
1087
  * Optional tab panel rendered directly below the strip, on the page
1062
1088
  * surface with no card chrome. Omit to render only the strip and compose
@@ -1069,7 +1095,7 @@ type NavTabStripProps = {
1069
1095
  * in the page body below the page header; pass the app's `Link` as
1070
1096
  * `linkComponent` for `href` tabs.
1071
1097
  */
1072
- declare function NavTabStrip({ tabs, 'aria-label': ariaLabel, linkComponent, size, className, children, }: NavTabStripProps): react_jsx_runtime.JSX.Element;
1098
+ declare function NavTabStrip({ tabs, 'aria-label': ariaLabel, linkComponent, size, className, iconStrip, children, }: NavTabStripProps): react_jsx_runtime.JSX.Element;
1073
1099
  /**
1074
1100
  * sessionStorage key holding the Beta-banner dismissal. sessionStorage — not
1075
1101
  * localStorage — so the dismissal lasts only for the browser session; and it is
@@ -1142,4 +1168,4 @@ type NavAppShellProps = {
1142
1168
  };
1143
1169
  declare function NavAppShell({ sidebar, topBar, betaBanner, contentWrapper, accountMenuPlacement, modeId, children, }: NavAppShellProps): react_jsx_runtime.JSX.Element;
1144
1170
 
1145
- export { NavChromeProvider as $, type CampaignFeatureAvailability as A, type BreadcrumbBarProps as B, Card as C, type ChromeMe as D, type ChromeNotificationAlert as E, FormColumn as F, type ChromeNotificationImport as G, HeaderTabBar as H, type ChromeNotificationQuarantine as I, type ChromeNotificationReply as J, type ChromeNotificationsPayload as K, type ChromeOrgSummary as L, type CommunicationsFuelStatus as M, type NavItem as N, type CreditHealthState as O, type PageHeaderProps as P, type CreditTypeKey as Q, CreditsAction as R, type StandardNavIconKey as S, type CreditsIconState as T, FuelAction as U, type FuelChannelStatus as V, NavAppShell as W, type NavAppShellProps as X, NavBetaBanner as Y, type NavBetaBannerProps as Z, type NavBrand as _, type CommsNotification as a, NavDisplayAction as a0, type NavLinkProps as a1, type NavLinkedAccount as a2, type NavModeOption as a3, type NavOrg as a4, type NavRoleBadge as a5, NavSidebar as a6, type NavSidebarProps as a7, type NavTab as a8, NavTabStrip as a9, envChipClasses as aA, isNavItemActive as aB, modeIdFromLabel as aC, resolveOrgLogoUrl as aD, shortEnvLabel as aE, shortUserName as aF, standardPolitogyNav as aG, topBarIconButtonClass as aH, useChromeMe as aI, useChromeOrgs as aJ, useNavChromeDedupedFetch as aK, useNavChromeFetcher as aL, useThemePreference as aM, type NavTabStripProps as aa, NavThemeControl as ab, NavTopBar as ac, type NavTopBarAction as ad, type NavTopBarProps as ae, type NavUser as af, NotificationsAction as ag, PageHeader as ah, type PageHeaderMode as ai, SPECS_ORIGIN as aj, SpecOverlayAction as ak, type StandardNavOptions as al, SupportAction as am, type ThemePreference as an, TopBarCountBadge as ao, type TopBarIconTone as ap, TopBarPanelArrow as aq, TopBarPopover as ar, TopBarTooltip as as, TopBarWidgetSlot as at, clearBetaBannerDismissal as au, creditGaugeRatio as av, creditStateWord as aw, creditTooltipLine as ax, creditsAriaLabel as ay, creditsIconState as az, type CommsNotificationKind as b, type HeaderTabBarItem as c, type NotificationsAdapter as d, type NotificationsFeed as e, createCommsNotificationsAdapter as f, emptyNotificationsFeed as g, type NavIcon as h, type NavBreadcrumb as i, type StandardNavMode as j, type NavLinkComponent as k, type NavChromeFetcher as l, type NavMode as m, normalizeNotificationsFeed as n, type NavUserMenu as o, type NavOrgOption as p, type NavFooterLink as q, type NavFooter as r, type NavDisplayMode as s, BETA_BANNER_DISMISS_KEY as t, BreadcrumbBar as u, CAMPAIGN_FEATURE_AVAILABILITY as v, CORE_APP_ORIGIN as w, CORE_BILLING_PATH as x, CREDIT_TYPE_LABELS as y, CREDIT_TYPE_ORDER as z };
1171
+ export { NavBetaBanner as $, CREDIT_TYPE_ORDER as A, type BreadcrumbBarProps as B, Card as C, type CampaignFeatureAvailability as D, type ChromeMe as E, FormColumn as F, type ChromeNotificationAlert as G, HeaderTabBar as H, type ChromeNotificationImport as I, type ChromeNotificationQuarantine as J, KNOWN_TAB_GLYPHS as K, type ChromeNotificationReply as L, type ChromeNotificationsPayload as M, type NavItem as N, type ChromeOrgSummary as O, type PageHeaderProps as P, type CommunicationsFuelStatus as Q, type CreditHealthState as R, type StandardNavIconKey as S, type TabGlyphComponent as T, type CreditTypeKey as U, CreditsAction as V, type CreditsIconState as W, FuelAction as X, type FuelChannelStatus as Y, NavAppShell as Z, type NavAppShellProps as _, type CommsNotification as a, type NavBetaBannerProps as a0, type NavBrand as a1, NavChromeProvider as a2, NavDisplayAction as a3, type NavLinkProps as a4, type NavLinkedAccount as a5, type NavModeOption as a6, type NavOrg as a7, type NavRoleBadge as a8, NavSidebar as a9, creditTooltipLine as aA, creditsAriaLabel as aB, creditsIconState as aC, envChipClasses as aD, isNavItemActive as aE, modeIdFromLabel as aF, resolveOrgLogoUrl as aG, shortEnvLabel as aH, shortUserName as aI, standardPolitogyNav as aJ, topBarIconButtonClass as aK, useChromeMe as aL, useChromeOrgs as aM, useNavChromeDedupedFetch as aN, useNavChromeFetcher as aO, useThemePreference as aP, type NavSidebarProps as aa, type NavTab as ab, NavTabStrip as ac, type NavTabStripProps as ad, NavThemeControl as ae, NavTopBar as af, type NavTopBarAction as ag, type NavTopBarProps as ah, type NavUser as ai, NotificationsAction as aj, PageHeader as ak, type PageHeaderMode as al, SPECS_ORIGIN as am, SpecOverlayAction as an, type StandardNavOptions as ao, SupportAction as ap, type ThemePreference as aq, TopBarCountBadge as ar, type TopBarIconTone as as, TopBarPanelArrow as at, TopBarPopover as au, TopBarTooltip as av, TopBarWidgetSlot as aw, clearBetaBannerDismissal as ax, creditGaugeRatio as ay, creditStateWord as az, type CommsNotificationKind as b, type HeaderTabBarItem as c, type NotificationsAdapter as d, type NotificationsFeed as e, createCommsNotificationsAdapter as f, emptyNotificationsFeed as g, type NavIcon as h, type NavBreadcrumb as i, type StandardNavMode as j, type NavLinkComponent as k, type NavChromeFetcher as l, type NavMode as m, normalizeNotificationsFeed as n, type NavUserMenu as o, type NavOrgOption as p, type NavFooterLink as q, resolveTabGlyph as r, type NavFooter as s, type NavDisplayMode as t, BETA_BANNER_DISMISS_KEY as u, BreadcrumbBar as v, CAMPAIGN_FEATURE_AVAILABILITY as w, CORE_APP_ORIGIN as x, CORE_BILLING_PATH as y, CREDIT_TYPE_LABELS as z };
@@ -93,6 +93,22 @@ type HeaderTabBarProps = {
93
93
  */
94
94
  declare function HeaderTabBar({ items, activeId, onChange, className, ariaLabel, }: HeaderTabBarProps): react_jsx_runtime.JSX.Element;
95
95
 
96
+ /** A tab icon: the same shape `NavTabStrip` passes (`size`, `className`, `strokeWidth`). */
97
+ type TabGlyphComponent = ComponentType<{
98
+ size?: number;
99
+ className?: string;
100
+ strokeWidth?: number;
101
+ }>;
102
+ /**
103
+ * Resolve a Brand tab-icon name to its component. Trims, strips surrounding
104
+ * quotes (the CSS var value is a quoted string) and lowercases. Returns null
105
+ * for an empty or unknown name so `NavTabStrip` falls back to the tab's own
106
+ * `icon` prop: an unrecognised token never renders a broken or empty icon.
107
+ */
108
+ declare function resolveTabGlyph(name: string | null | undefined): TabGlyphComponent | null;
109
+ /** The tab icon names the shell knows, in vocabulary order. The Brand editor offers only these. */
110
+ declare const KNOWN_TAB_GLYPHS: readonly string[];
111
+
96
112
  /**
97
113
  * The six canonical top-bar action slots (Reference/Global-Rules v9 → top-bar
98
114
  * icons). Each slot's GLYPH is unique and comes from the Brand API
@@ -1057,6 +1073,16 @@ type NavTabStripProps = {
1057
1073
  size?: 'md' | 'sm';
1058
1074
  /** Extra classes on the tablist container. */
1059
1075
  className?: string;
1076
+ /**
1077
+ * The app's strip key in the Brand tab icon map (`tabIcons`), e.g.
1078
+ * `"forms"` or `"contacts-tribes"` (Reference/UI-Platform → Tabs, "Tab icon
1079
+ * map", decided 2026-10-24). When set, each tab reads
1080
+ * `--tab-icon-<iconStrip>-<tab.key>` from the Brand token sheet at runtime
1081
+ * and renders that Lucide icon; when the variable is missing, empty or names
1082
+ * an icon not in `KNOWN_TAB_GLYPHS`, the tab renders its own `icon` prop.
1083
+ * Omit it and every tab renders its own `icon`, as before.
1084
+ */
1085
+ iconStrip?: string;
1060
1086
  /**
1061
1087
  * Optional tab panel rendered directly below the strip, on the page
1062
1088
  * surface with no card chrome. Omit to render only the strip and compose
@@ -1069,7 +1095,7 @@ type NavTabStripProps = {
1069
1095
  * in the page body below the page header; pass the app's `Link` as
1070
1096
  * `linkComponent` for `href` tabs.
1071
1097
  */
1072
- declare function NavTabStrip({ tabs, 'aria-label': ariaLabel, linkComponent, size, className, children, }: NavTabStripProps): react_jsx_runtime.JSX.Element;
1098
+ declare function NavTabStrip({ tabs, 'aria-label': ariaLabel, linkComponent, size, className, iconStrip, children, }: NavTabStripProps): react_jsx_runtime.JSX.Element;
1073
1099
  /**
1074
1100
  * sessionStorage key holding the Beta-banner dismissal. sessionStorage — not
1075
1101
  * localStorage — so the dismissal lasts only for the browser session; and it is
@@ -1142,4 +1168,4 @@ type NavAppShellProps = {
1142
1168
  };
1143
1169
  declare function NavAppShell({ sidebar, topBar, betaBanner, contentWrapper, accountMenuPlacement, modeId, children, }: NavAppShellProps): react_jsx_runtime.JSX.Element;
1144
1170
 
1145
- export { NavChromeProvider as $, type CampaignFeatureAvailability as A, type BreadcrumbBarProps as B, Card as C, type ChromeMe as D, type ChromeNotificationAlert as E, FormColumn as F, type ChromeNotificationImport as G, HeaderTabBar as H, type ChromeNotificationQuarantine as I, type ChromeNotificationReply as J, type ChromeNotificationsPayload as K, type ChromeOrgSummary as L, type CommunicationsFuelStatus as M, type NavItem as N, type CreditHealthState as O, type PageHeaderProps as P, type CreditTypeKey as Q, CreditsAction as R, type StandardNavIconKey as S, type CreditsIconState as T, FuelAction as U, type FuelChannelStatus as V, NavAppShell as W, type NavAppShellProps as X, NavBetaBanner as Y, type NavBetaBannerProps as Z, type NavBrand as _, type CommsNotification as a, NavDisplayAction as a0, type NavLinkProps as a1, type NavLinkedAccount as a2, type NavModeOption as a3, type NavOrg as a4, type NavRoleBadge as a5, NavSidebar as a6, type NavSidebarProps as a7, type NavTab as a8, NavTabStrip as a9, envChipClasses as aA, isNavItemActive as aB, modeIdFromLabel as aC, resolveOrgLogoUrl as aD, shortEnvLabel as aE, shortUserName as aF, standardPolitogyNav as aG, topBarIconButtonClass as aH, useChromeMe as aI, useChromeOrgs as aJ, useNavChromeDedupedFetch as aK, useNavChromeFetcher as aL, useThemePreference as aM, type NavTabStripProps as aa, NavThemeControl as ab, NavTopBar as ac, type NavTopBarAction as ad, type NavTopBarProps as ae, type NavUser as af, NotificationsAction as ag, PageHeader as ah, type PageHeaderMode as ai, SPECS_ORIGIN as aj, SpecOverlayAction as ak, type StandardNavOptions as al, SupportAction as am, type ThemePreference as an, TopBarCountBadge as ao, type TopBarIconTone as ap, TopBarPanelArrow as aq, TopBarPopover as ar, TopBarTooltip as as, TopBarWidgetSlot as at, clearBetaBannerDismissal as au, creditGaugeRatio as av, creditStateWord as aw, creditTooltipLine as ax, creditsAriaLabel as ay, creditsIconState as az, type CommsNotificationKind as b, type HeaderTabBarItem as c, type NotificationsAdapter as d, type NotificationsFeed as e, createCommsNotificationsAdapter as f, emptyNotificationsFeed as g, type NavIcon as h, type NavBreadcrumb as i, type StandardNavMode as j, type NavLinkComponent as k, type NavChromeFetcher as l, type NavMode as m, normalizeNotificationsFeed as n, type NavUserMenu as o, type NavOrgOption as p, type NavFooterLink as q, type NavFooter as r, type NavDisplayMode as s, BETA_BANNER_DISMISS_KEY as t, BreadcrumbBar as u, CAMPAIGN_FEATURE_AVAILABILITY as v, CORE_APP_ORIGIN as w, CORE_BILLING_PATH as x, CREDIT_TYPE_LABELS as y, CREDIT_TYPE_ORDER as z };
1171
+ export { NavBetaBanner as $, CREDIT_TYPE_ORDER as A, type BreadcrumbBarProps as B, Card as C, type CampaignFeatureAvailability as D, type ChromeMe as E, FormColumn as F, type ChromeNotificationAlert as G, HeaderTabBar as H, type ChromeNotificationImport as I, type ChromeNotificationQuarantine as J, KNOWN_TAB_GLYPHS as K, type ChromeNotificationReply as L, type ChromeNotificationsPayload as M, type NavItem as N, type ChromeOrgSummary as O, type PageHeaderProps as P, type CommunicationsFuelStatus as Q, type CreditHealthState as R, type StandardNavIconKey as S, type TabGlyphComponent as T, type CreditTypeKey as U, CreditsAction as V, type CreditsIconState as W, FuelAction as X, type FuelChannelStatus as Y, NavAppShell as Z, type NavAppShellProps as _, type CommsNotification as a, type NavBetaBannerProps as a0, type NavBrand as a1, NavChromeProvider as a2, NavDisplayAction as a3, type NavLinkProps as a4, type NavLinkedAccount as a5, type NavModeOption as a6, type NavOrg as a7, type NavRoleBadge as a8, NavSidebar as a9, creditTooltipLine as aA, creditsAriaLabel as aB, creditsIconState as aC, envChipClasses as aD, isNavItemActive as aE, modeIdFromLabel as aF, resolveOrgLogoUrl as aG, shortEnvLabel as aH, shortUserName as aI, standardPolitogyNav as aJ, topBarIconButtonClass as aK, useChromeMe as aL, useChromeOrgs as aM, useNavChromeDedupedFetch as aN, useNavChromeFetcher as aO, useThemePreference as aP, type NavSidebarProps as aa, type NavTab as ab, NavTabStrip as ac, type NavTabStripProps as ad, NavThemeControl as ae, NavTopBar as af, type NavTopBarAction as ag, type NavTopBarProps as ah, type NavUser as ai, NotificationsAction as aj, PageHeader as ak, type PageHeaderMode as al, SPECS_ORIGIN as am, SpecOverlayAction as an, type StandardNavOptions as ao, SupportAction as ap, type ThemePreference as aq, TopBarCountBadge as ar, type TopBarIconTone as as, TopBarPanelArrow as at, TopBarPopover as au, TopBarTooltip as av, TopBarWidgetSlot as aw, clearBetaBannerDismissal as ax, creditGaugeRatio as ay, creditStateWord as az, type CommsNotificationKind as b, type HeaderTabBarItem as c, type NotificationsAdapter as d, type NotificationsFeed as e, createCommsNotificationsAdapter as f, emptyNotificationsFeed as g, type NavIcon as h, type NavBreadcrumb as i, type StandardNavMode as j, type NavLinkComponent as k, type NavChromeFetcher as l, type NavMode as m, normalizeNotificationsFeed as n, type NavUserMenu as o, type NavOrgOption as p, type NavFooterLink as q, resolveTabGlyph as r, type NavFooter as s, type NavDisplayMode as t, BETA_BANNER_DISMISS_KEY as u, BreadcrumbBar as v, CAMPAIGN_FEATURE_AVAILABILITY as w, CORE_APP_ORIGIN as x, CORE_BILLING_PATH as y, CREDIT_TYPE_LABELS as z };
package/dist/index.cjs CHANGED
@@ -6,6 +6,7 @@ var clsx5 = require('clsx');
6
6
  var reactRouterDom = require('react-router-dom');
7
7
  var react$1 = require('react');
8
8
  require('react-dom');
9
+ var lu = require('react-icons/lu');
9
10
 
10
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
12
 
@@ -1654,6 +1655,139 @@ function getUserDisplayName(user) {
1654
1655
  if (!user) return "User";
1655
1656
  return user.profile?.full_name || user.profile?.name || user.user_metadata?.full_name || user.user_metadata?.name || (typeof user.email === "string" ? user.email.split("@")[0] : "") || user.email || "User";
1656
1657
  }
1658
+ var TAB_GLYPHS = {
1659
+ "layout-dashboard": lu.LuLayoutDashboard,
1660
+ "layout-list": lu.LuLayoutList,
1661
+ "layout-grid": lu.LuLayoutGrid,
1662
+ "layout-template": lu.LuLayoutTemplate,
1663
+ "users": lu.LuUsers,
1664
+ "users-round": lu.LuUsersRound,
1665
+ "user": lu.LuUser,
1666
+ "user-plus": lu.LuUserPlus,
1667
+ "user-check": lu.LuUserCheck,
1668
+ "square-user": lu.LuSquareUser,
1669
+ "upload": lu.LuUpload,
1670
+ "download": lu.LuDownload,
1671
+ "copy": lu.LuCopy,
1672
+ "library": lu.LuLibrary,
1673
+ "flag": lu.LuFlag,
1674
+ "flag-triangle-right": lu.LuFlagTriangleRight,
1675
+ "activity": lu.LuActivity,
1676
+ "table-2": lu.LuTable2,
1677
+ "chart-pie": lu.LuChartPie,
1678
+ "chart-column": lu.LuChartColumn,
1679
+ "chart-line": lu.LuChartLine,
1680
+ "chart-bar": lu.LuChartBar,
1681
+ "chart-area": lu.LuChartArea,
1682
+ "chart-no-axes-combined": lu.LuChartNoAxesCombined,
1683
+ "lightbulb": lu.LuLightbulb,
1684
+ "crosshair": lu.LuCrosshair,
1685
+ "map": lu.LuMap,
1686
+ "map-pin": lu.LuMapPin,
1687
+ "footprints": lu.LuFootprints,
1688
+ "brain": lu.LuBrain,
1689
+ "clipboard-list": lu.LuClipboardList,
1690
+ "clipboard-check": lu.LuClipboardCheck,
1691
+ "timer": lu.LuTimer,
1692
+ "clock": lu.LuClock,
1693
+ "calendar": lu.LuCalendar,
1694
+ "layers": lu.LuLayers,
1695
+ "scale": lu.LuScale,
1696
+ "route": lu.LuRoute,
1697
+ "bot": lu.LuBot,
1698
+ "messages-square": lu.LuMessagesSquare,
1699
+ "message-square": lu.LuMessageSquare,
1700
+ "message-circle": lu.LuMessageCircle,
1701
+ "send": lu.LuSend,
1702
+ "gauge": lu.LuGauge,
1703
+ "split": lu.LuSplit,
1704
+ "file-text": lu.LuFileText,
1705
+ "file": lu.LuFile,
1706
+ "files": lu.LuFiles,
1707
+ "folder": lu.LuFolder,
1708
+ "folder-lock": lu.LuFolderLock,
1709
+ "list": lu.LuList,
1710
+ "list-checks": lu.LuListChecks,
1711
+ "list-ordered": lu.LuListOrdered,
1712
+ "list-todo": lu.LuListTodo,
1713
+ "trending-up": lu.LuTrendingUp,
1714
+ "megaphone": lu.LuMegaphone,
1715
+ "shield": lu.LuShield,
1716
+ "shield-check": lu.LuShieldCheck,
1717
+ "phone": lu.LuPhone,
1718
+ "phone-call": lu.LuPhoneCall,
1719
+ "book-open": lu.LuBookOpen,
1720
+ "notebook-pen": lu.LuNotebookPen,
1721
+ "radio": lu.LuRadio,
1722
+ "voicemail": lu.LuVoicemail,
1723
+ "square-check": lu.LuSquareCheck,
1724
+ "circle-check": lu.LuCircleCheck,
1725
+ "rotate-ccw": lu.LuRotateCcw,
1726
+ "refresh-cw": lu.LuRefreshCw,
1727
+ "history": lu.LuHistory,
1728
+ "smartphone": lu.LuSmartphone,
1729
+ "pencil": lu.LuPencil,
1730
+ "sparkles": lu.LuSparkles,
1731
+ "target": lu.LuTarget,
1732
+ "flask-conical": lu.LuFlaskConical,
1733
+ "settings": lu.LuSettings,
1734
+ "sliders-horizontal": lu.LuSlidersHorizontal,
1735
+ "inbox": lu.LuInbox,
1736
+ "share-2": lu.LuShare2,
1737
+ "building-2": lu.LuBuilding2,
1738
+ "palette": lu.LuPalette,
1739
+ "credit-card": lu.LuCreditCard,
1740
+ "wallet": lu.LuWallet,
1741
+ "receipt": lu.LuReceipt,
1742
+ "dollar-sign": lu.LuDollarSign,
1743
+ "mail": lu.LuMail,
1744
+ "mail-open": lu.LuMailOpen,
1745
+ "bell": lu.LuBell,
1746
+ "house": lu.LuHouse,
1747
+ "star": lu.LuStar,
1748
+ "heart": lu.LuHeart,
1749
+ "hand-heart": lu.LuHandHeart,
1750
+ "tag": lu.LuTag,
1751
+ "filter": lu.LuFilter,
1752
+ "search": lu.LuSearch,
1753
+ "globe": lu.LuGlobe,
1754
+ "link": lu.LuLink,
1755
+ "image": lu.LuImage,
1756
+ "video": lu.LuVideo,
1757
+ "mic": lu.LuMic,
1758
+ "printer": lu.LuPrinter,
1759
+ "eye": lu.LuEye,
1760
+ "lock": lu.LuLock,
1761
+ "key": lu.LuKey,
1762
+ "vote": lu.LuVote,
1763
+ "landmark": lu.LuLandmark,
1764
+ "newspaper": lu.LuNewspaper,
1765
+ "kanban": lu.LuKanban,
1766
+ "wrench": lu.LuWrench,
1767
+ "zap": lu.LuZap,
1768
+ "rocket": lu.LuRocket,
1769
+ "archive": lu.LuArchive,
1770
+ "trash-2": lu.LuTrash2,
1771
+ "circle-help": lu.LuCircleHelp,
1772
+ "info": lu.LuInfo,
1773
+ "triangle-alert": lu.LuTriangleAlert,
1774
+ "door-open": lu.LuDoorOpen,
1775
+ "signpost": lu.LuSignpost,
1776
+ "badge-check": lu.LuBadgeCheck,
1777
+ "award": lu.LuAward,
1778
+ "briefcase": lu.LuBriefcase,
1779
+ "handshake": lu.LuHandshake,
1780
+ "network": lu.LuNetwork,
1781
+ "workflow": lu.LuWorkflow,
1782
+ "git-branch": lu.LuGitBranch
1783
+ };
1784
+ function resolveTabGlyph(name) {
1785
+ if (!name) return null;
1786
+ const key = name.trim().replace(/^['"]|['"]$/g, "").trim().toLowerCase();
1787
+ if (!key) return null;
1788
+ return Object.prototype.hasOwnProperty.call(TAB_GLYPHS, key) ? TAB_GLYPHS[key] : null;
1789
+ }
1790
+ var KNOWN_TAB_GLYPHS = Object.freeze(Object.keys(TAB_GLYPHS));
1657
1791
 
1658
1792
  // src/sw/registerShellPrecache.ts
1659
1793
  async function registerShellPrecache(opts = {}) {
@@ -1773,6 +1907,7 @@ exports.Card = Card;
1773
1907
  exports.FormColumn = FormColumn;
1774
1908
  exports.GlobalUiIdProvider = GlobalUiIdProvider;
1775
1909
  exports.HeaderTabBar = HeaderTabBar;
1910
+ exports.KNOWN_TAB_GLYPHS = KNOWN_TAB_GLYPHS;
1776
1911
  exports.PageContainer = PageContainer;
1777
1912
  exports.PageHeader = PageHeader;
1778
1913
  exports.ShellChromeContext = ShellChromeContext;
@@ -1800,6 +1935,7 @@ exports.normalizeHexColor = normalizeHexColor;
1800
1935
  exports.normalizeNotificationsFeed = normalizeNotificationsFeed;
1801
1936
  exports.politogyTheme = politogyTheme;
1802
1937
  exports.registerShellPrecache = registerShellPrecache;
1938
+ exports.resolveTabGlyph = resolveTabGlyph;
1803
1939
  exports.useAppRegistry = useAppRegistry;
1804
1940
  exports.useCurrentApp = useCurrentApp;
1805
1941
  exports.useShellAuth = useShellAuth;