@dloizides/ui-nav 1.29.0 → 1.31.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.
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useCallback, useMemo, useEffect, useRef } from 'react';
2
- import { StyleSheet, Platform, Pressable, Text, View, TextInput, useWindowDimensions, ScrollView, ActivityIndicator, Animated } from 'react-native';
2
+ import { StyleSheet, Platform, Pressable, Text, View, TextInput, useWindowDimensions, Image, ScrollView, ActivityIndicator, Animated } from 'react-native';
3
3
  import { useUi, UiProvider } from '@dloizides/ui-feedback';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
  import { Collapse, motionDurations, motionEasings } from '@dloizides/ui-motion';
@@ -28,6 +28,9 @@ var navStyles = StyleSheet.create({
28
28
  borderRightWidth: 1,
29
29
  height: "100%"
30
30
  },
31
+ sidebarBrand: {
32
+ marginBottom: 12
33
+ },
31
34
  sidebarTitle: {
32
35
  fontWeight: "700",
33
36
  marginBottom: 12
@@ -815,7 +818,7 @@ var Sidebar = ({
815
818
  containerStyle
816
819
  ],
817
820
  children: [
818
- /* @__PURE__ */ jsx(Text, { accessibilityRole: "header", style: [navStyles.sidebarTitle, { color: colors.text }], children: title }),
821
+ typeof title === "string" ? /* @__PURE__ */ jsx(Text, { accessibilityRole: "header", style: [navStyles.sidebarTitle, { color: colors.text }], children: title }) : /* @__PURE__ */ jsx(View, { style: navStyles.sidebarBrand, children: title }),
819
822
  showInlineSearch && search !== void 0 ? /* @__PURE__ */ jsx(
820
823
  SidebarSearch,
821
824
  {
@@ -878,7 +881,9 @@ var NAV_TEST_IDS = {
878
881
  pillNavMenu: "pill-nav-menu",
879
882
  /** the optional middle slot of `Topbar` (rendered only when `center` is passed). */
880
883
  topbarCenter: "topbar-center",
881
- brandHome: "nav-brand-home"
884
+ brandHome: "nav-brand-home",
885
+ brandMarkIcon: "nav-brand-mark-icon",
886
+ brandMarkName: "nav-brand-mark-name"
882
887
  };
883
888
  var APP_SHELL_SUFFIX = {
884
889
  content: "-content",
@@ -1566,6 +1571,44 @@ var BrandHomeLink = ({ route, label, onNavigate, children }) => {
1566
1571
  }
1567
1572
  );
1568
1573
  };
1574
+ var DEFAULT_ICON_SIZE = 32;
1575
+ var NAME_FONT_SIZE = 16;
1576
+ var NAME_GAP = 8;
1577
+ var styles4 = StyleSheet.create({
1578
+ name: { flexShrink: 1, fontSize: NAME_FONT_SIZE, fontWeight: "700" },
1579
+ row: { alignItems: "center", flexDirection: "row", gap: NAME_GAP }
1580
+ });
1581
+ var BrandMark = ({
1582
+ source,
1583
+ name,
1584
+ route,
1585
+ label,
1586
+ onNavigate,
1587
+ size = DEFAULT_ICON_SIZE,
1588
+ iconOnly = false
1589
+ }) => {
1590
+ const { theme } = useUi();
1591
+ return /* @__PURE__ */ jsx(BrandHomeLink, { label, route, onNavigate, children: /* @__PURE__ */ jsxs(View, { style: styles4.row, children: [
1592
+ /* @__PURE__ */ jsx(
1593
+ Image,
1594
+ {
1595
+ accessibilityElementsHidden: true,
1596
+ source,
1597
+ style: { height: size, width: size },
1598
+ testID: NAV_TEST_IDS.brandMarkIcon
1599
+ }
1600
+ ),
1601
+ iconOnly ? null : /* @__PURE__ */ jsx(
1602
+ Text,
1603
+ {
1604
+ numberOfLines: 1,
1605
+ style: [styles4.name, { color: theme.colors.text }],
1606
+ testID: NAV_TEST_IDS.brandMarkName,
1607
+ children: name
1608
+ }
1609
+ )
1610
+ ] }) });
1611
+ };
1569
1612
  var Nav = (props) => {
1570
1613
  if (props.orientation === "vertical") {
1571
1614
  return /* @__PURE__ */ jsx(Sidebar, { ...props });
@@ -1583,7 +1626,7 @@ function resolveRailMode({ viewport, hasSidebar, hasCollapsed, range }) {
1583
1626
  }
1584
1627
  return viewport >= RAIL_FULL_BREAKPOINT ? "full" : "drawer";
1585
1628
  }
1586
- var styles4 = StyleSheet.create({
1629
+ var styles5 = StyleSheet.create({
1587
1630
  band: { left: 0, position: "absolute", right: 0, top: 0 }
1588
1631
  });
1589
1632
  function readBackdrop(theme) {
@@ -1606,7 +1649,7 @@ function resolveShellBackdrop(theme, viewport, contentPadding, testID) {
1606
1649
  View,
1607
1650
  {
1608
1651
  pointerEvents: "none",
1609
- style: [styles4.band, { backgroundColor: band.color, height: contentPadding + overlap }],
1652
+ style: [styles5.band, { backgroundColor: band.color, height: contentPadding + overlap }],
1610
1653
  testID: `${testID}${APP_SHELL_SUFFIX.band}`
1611
1654
  }
1612
1655
  );
@@ -1618,7 +1661,7 @@ var CARD_BORDER_WIDTH = 1;
1618
1661
  var CARD_TITLE_FONT_SIZE = 16;
1619
1662
  var CARD_MESSAGE_FONT_SIZE = 14;
1620
1663
  var CARD_TITLE_MARGIN_BOTTOM = 8;
1621
- var styles5 = StyleSheet.create({
1664
+ var styles6 = StyleSheet.create({
1622
1665
  // Loading is a TRANSITIONAL state: the spinner is an absolute overlay ON TOP of
1623
1666
  // stably-mounted children, never a replacement for them. Replacing children here
1624
1667
  // would unmount whatever they host (e.g. a navigator), and on remount React
@@ -1650,9 +1693,9 @@ function MessageCard({
1650
1693
  }) {
1651
1694
  const { theme } = useUi();
1652
1695
  const colors = theme.colors;
1653
- return /* @__PURE__ */ jsxs(View, { style: [styles5.card, { backgroundColor: colors.surface, borderColor: accentColor }], testID, children: [
1654
- /* @__PURE__ */ jsx(Text, { style: [styles5.cardTitle, { color: accentColor }], children: message.titleText }),
1655
- /* @__PURE__ */ jsx(Text, { style: [styles5.cardMessage, { color: colors.textSecondary }], children: message.messageText })
1696
+ return /* @__PURE__ */ jsxs(View, { style: [styles6.card, { backgroundColor: colors.surface, borderColor: accentColor }], testID, children: [
1697
+ /* @__PURE__ */ jsx(Text, { style: [styles6.cardTitle, { color: accentColor }], children: message.titleText }),
1698
+ /* @__PURE__ */ jsx(Text, { style: [styles6.cardMessage, { color: colors.textSecondary }], children: message.messageText })
1656
1699
  ] });
1657
1700
  }
1658
1701
  function useContentBody(state, children, testID) {
@@ -1664,12 +1707,12 @@ function useContentBody(state, children, testID) {
1664
1707
  return /* @__PURE__ */ jsx(MessageCard, { accentColor: errorColor, message: state.forbidden, testID: `${testID}${APP_SHELL_SUFFIX.forbidden}` });
1665
1708
  if (state.error)
1666
1709
  return /* @__PURE__ */ jsx(MessageCard, { accentColor: errorColor, message: state.error, testID: `${testID}${APP_SHELL_SUFFIX.error}` });
1667
- return /* @__PURE__ */ jsxs(View, { style: styles5.loadingHost, children: [
1710
+ return /* @__PURE__ */ jsxs(View, { style: styles6.loadingHost, children: [
1668
1711
  children,
1669
1712
  state.loading === true ? /* @__PURE__ */ jsx(
1670
1713
  View,
1671
1714
  {
1672
- style: [styles5.loadingOverlay, { backgroundColor: theme.colors.background }],
1715
+ style: [styles6.loadingOverlay, { backgroundColor: theme.colors.background }],
1673
1716
  testID: `${testID}${APP_SHELL_SUFFIX.loading}`,
1674
1717
  children: /* @__PURE__ */ jsx(ActivityIndicator, { color: primary, size: "large" })
1675
1718
  }
@@ -1696,7 +1739,7 @@ var DEFAULT_DRAWER_LABELS = {
1696
1739
  closeLabel: "Close menu",
1697
1740
  closeHint: "Close the navigation menu"
1698
1741
  };
1699
- var styles6 = StyleSheet.create({
1742
+ var styles7 = StyleSheet.create({
1700
1743
  overlay: { ...StyleSheet.absoluteFillObject, zIndex: DRAWER_Z_INDEX },
1701
1744
  // The scrim's tap-to-close hit area is anchored to the RIGHT of the panel
1702
1745
  // (`left: DRAWER_WIDTH`), so it NEVER overlaps the panel: nav-item taps always
@@ -1731,10 +1774,10 @@ var MenuToggle = ({ label, hint, onOpen, testID }) => {
1731
1774
  accessibilityHint: hint,
1732
1775
  accessibilityLabel: label,
1733
1776
  ringColor: theme.palette.primary["500"],
1734
- style: styles6.menuToggle,
1777
+ style: styles7.menuToggle,
1735
1778
  testID,
1736
1779
  onPress: onOpen,
1737
- children: /* @__PURE__ */ jsx(Text, { style: [styles6.menuToggleGlyph, { color: theme.colors.text }], children: MENU_GLYPH2 })
1780
+ children: /* @__PURE__ */ jsx(Text, { style: [styles7.menuToggleGlyph, { color: theme.colors.text }], children: MENU_GLYPH2 })
1738
1781
  }
1739
1782
  );
1740
1783
  };
@@ -1760,14 +1803,14 @@ var MobileDrawer = ({
1760
1803
  node.addEventListener("click", handleClick);
1761
1804
  return () => node.removeEventListener("click", handleClick);
1762
1805
  }, [onClose]);
1763
- return /* @__PURE__ */ jsxs(View, { style: styles6.overlay, children: [
1806
+ return /* @__PURE__ */ jsxs(View, { style: styles7.overlay, children: [
1764
1807
  /* @__PURE__ */ jsx(
1765
1808
  Pressable,
1766
1809
  {
1767
1810
  accessibilityHint: labels.closeHint,
1768
1811
  accessibilityLabel: labels.closeLabel,
1769
1812
  accessibilityRole: "button",
1770
- style: styles6.scrim,
1813
+ style: styles7.scrim,
1771
1814
  testID: scrimTestID,
1772
1815
  onPress: onClose
1773
1816
  }
@@ -1778,7 +1821,7 @@ var MobileDrawer = ({
1778
1821
  ref: panelRef,
1779
1822
  "aria-modal": true,
1780
1823
  role: "dialog",
1781
- style: [styles6.panel, { backgroundColor: theme.colors.surface }],
1824
+ style: [styles7.panel, { backgroundColor: theme.colors.surface }],
1782
1825
  testID: drawerTestID,
1783
1826
  children: renderTextSlot(sidebar, { color: theme.colors.text })
1784
1827
  }
@@ -1796,7 +1839,7 @@ function useContentMaxWidth(width) {
1796
1839
  return resolveContentMaxWidth(width, viewport);
1797
1840
  }
1798
1841
  var DEFAULT_CONTENT_PADDING = 24;
1799
- var styles7 = StyleSheet.create({
1842
+ var styles8 = StyleSheet.create({
1800
1843
  root: { flex: 1 },
1801
1844
  // Auth-pending spinner: an opaque absolute overlay over the mounted shell, so
1802
1845
  // `children` (and any navigator they host) are never unmounted while the gate
@@ -1858,13 +1901,13 @@ var AppShell = ({
1858
1901
  }, [isUnauthenticated, gate]);
1859
1902
  const gatePending = gate?.pending === true;
1860
1903
  if (isUnauthenticated) return null;
1861
- const columnStyle = maxWidth === "full" ? styles7.columnFull : [styles7.columnCapped, { maxWidth }];
1862
- const navInnerStyle = chromeAlignment === "content" && maxWidth !== "full" ? [styles7.chromeCapped, { maxWidth, paddingHorizontal: contentPadding }] : void 0;
1904
+ const columnStyle = maxWidth === "full" ? styles8.columnFull : [styles8.columnCapped, { maxWidth }];
1905
+ const navInnerStyle = chromeAlignment === "content" && maxWidth !== "full" ? [styles8.chromeCapped, { maxWidth, paddingHorizontal: contentPadding }] : void 0;
1863
1906
  const scroller = /* @__PURE__ */ jsxs(
1864
1907
  ScrollView,
1865
1908
  {
1866
- contentContainerStyle: [styles7.scrollContent, { padding: contentPadding }],
1867
- style: styles7.scroll,
1909
+ contentContainerStyle: [styles8.scrollContent, { padding: contentPadding }],
1910
+ style: styles8.scroll,
1868
1911
  testID: `${testID}${APP_SHELL_SUFFIX.content}`,
1869
1912
  children: [
1870
1913
  look.band,
@@ -1872,7 +1915,7 @@ var AppShell = ({
1872
1915
  ]
1873
1916
  }
1874
1917
  );
1875
- const headerRegion = useDrawer ? /* @__PURE__ */ jsxs(View, { style: [styles7.headerRow, look.chrome], testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: [
1918
+ const headerRegion = useDrawer ? /* @__PURE__ */ jsxs(View, { style: [styles8.headerRow, look.chrome], testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: [
1876
1919
  /* @__PURE__ */ jsx(
1877
1920
  MenuToggle,
1878
1921
  {
@@ -1882,14 +1925,14 @@ var AppShell = ({
1882
1925
  onOpen: openDrawer
1883
1926
  }
1884
1927
  ),
1885
- /* @__PURE__ */ jsx(View, { style: styles7.headerFill, children: renderTextSlot(header, { color: look.chromeText }) })
1928
+ /* @__PURE__ */ jsx(View, { style: styles8.headerFill, children: renderTextSlot(header, { color: look.chromeText }) })
1886
1929
  ] }) : /* @__PURE__ */ jsx(View, { style: look.chrome, testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: renderTextSlot(header, { color: look.chromeText }) });
1887
1930
  const railRegion = railMode === "full" ? /* @__PURE__ */ jsx(View, { testID: `${testID}${APP_SHELL_SUFFIX.sidebar}`, children: renderTextSlot(sidebar, { color: theme.colors.text }) }) : railMode === "collapsed" ? /* @__PURE__ */ jsx(View, { testID: `${testID}${APP_SHELL_SUFFIX.collapsedSidebar}`, children: renderTextSlot(collapsedSidebar, { color: theme.colors.text }) }) : null;
1888
- return /* @__PURE__ */ jsxs(View, { style: [styles7.root, look.root], testID, children: [
1931
+ return /* @__PURE__ */ jsxs(View, { style: [styles8.root, look.root], testID, children: [
1889
1932
  headerRegion,
1890
1933
  nav !== void 0 ? /* @__PURE__ */ jsx(View, { style: look.chrome, testID: `${testID}${APP_SHELL_SUFFIX.nav}`, children: navInnerStyle !== void 0 ? /* @__PURE__ */ jsx(View, { style: navInnerStyle, children: renderTextSlot(nav, { color: look.chromeText }) }) : renderTextSlot(nav, { color: look.chromeText }) }) : null,
1891
1934
  banner !== void 0 ? /* @__PURE__ */ jsx(View, { testID: `${testID}${APP_SHELL_SUFFIX.banner}`, children: renderTextSlot(banner, { color: theme.colors.text }) }) : null,
1892
- railRegion !== null ? /* @__PURE__ */ jsxs(View, { style: styles7.bodyRow, children: [
1935
+ railRegion !== null ? /* @__PURE__ */ jsxs(View, { style: styles8.bodyRow, children: [
1893
1936
  railRegion,
1894
1937
  scroller
1895
1938
  ] }) : scroller,
@@ -1906,7 +1949,7 @@ var AppShell = ({
1906
1949
  gatePending ? /* @__PURE__ */ jsx(
1907
1950
  View,
1908
1951
  {
1909
- style: [styles7.pendingOverlay, { backgroundColor: theme.colors.background }],
1952
+ style: [styles8.pendingOverlay, { backgroundColor: theme.colors.background }],
1910
1953
  testID: `${testID}${APP_SHELL_SUFFIX.pending}`,
1911
1954
  children: /* @__PURE__ */ jsx(ActivityIndicator, { color: primary, size: "large" })
1912
1955
  }
@@ -2027,7 +2070,7 @@ var NavShell = ({
2027
2070
  renderChevron: sideRail.renderChevron,
2028
2071
  search: sideRail.search,
2029
2072
  searchQuery: sideRail.searchQuery,
2030
- title: sideRail.title,
2073
+ title: sideRail.brand ?? sideRail.title,
2031
2074
  onNavigate,
2032
2075
  onSearchChange: sideRail.onSearchChange
2033
2076
  }
@@ -2273,7 +2316,7 @@ var KEY_DOWN = "ArrowDown";
2273
2316
  var KEY_UP = "ArrowUp";
2274
2317
  var KEY_ENTER = "Enter";
2275
2318
  var KEY_ESCAPE = "Escape";
2276
- var styles8 = StyleSheet.create({
2319
+ var styles9 = StyleSheet.create({
2277
2320
  overlay: { ...StyleSheet.absoluteFillObject, zIndex: OVERLAY_Z_INDEX, alignItems: "center" },
2278
2321
  scrim: { ...StyleSheet.absoluteFillObject, backgroundColor: SCRIM_COLOR2 },
2279
2322
  panel: {
@@ -2302,14 +2345,14 @@ var PaletteRow = ({ item, selected, onChoose }) => {
2302
2345
  accessibilityLabel: item.label,
2303
2346
  accessibilityRole: "button",
2304
2347
  accessibilityState: { selected },
2305
- style: [styles8.row, selected ? { backgroundColor: colors.border } : void 0],
2348
+ style: [styles9.row, selected ? { backgroundColor: colors.border } : void 0],
2306
2349
  testID: item.testID ?? item.key,
2307
2350
  onPress: () => onChoose(item),
2308
2351
  children: [
2309
2352
  typeof item.renderIcon === "function" ? item.renderIcon(colors.textSecondary, NAV_ICON_SIZE) : null,
2310
- /* @__PURE__ */ jsxs(View, { style: styles8.rowText, children: [
2311
- /* @__PURE__ */ jsx(Text, { style: [styles8.rowLabel, { color: colors.text }], children: item.label }),
2312
- item.hint ? /* @__PURE__ */ jsx(Text, { style: [styles8.rowHint, { color: colors.textSecondary }], children: item.hint }) : null
2353
+ /* @__PURE__ */ jsxs(View, { style: styles9.rowText, children: [
2354
+ /* @__PURE__ */ jsx(Text, { style: [styles9.rowLabel, { color: colors.text }], children: item.label }),
2355
+ item.hint ? /* @__PURE__ */ jsx(Text, { style: [styles9.rowHint, { color: colors.textSecondary }], children: item.hint }) : null
2313
2356
  ] })
2314
2357
  ]
2315
2358
  }
@@ -2349,14 +2392,14 @@ var CommandPalette = ({ open, items, onClose, labels, testID }) => {
2349
2392
  [results, selected, choose, onClose]
2350
2393
  );
2351
2394
  if (!open) return null;
2352
- return /* @__PURE__ */ jsxs(View, { style: styles8.overlay, children: [
2395
+ return /* @__PURE__ */ jsxs(View, { style: styles9.overlay, children: [
2353
2396
  /* @__PURE__ */ jsx(
2354
2397
  Pressable,
2355
2398
  {
2356
2399
  accessibilityHint: labels.closeHint,
2357
2400
  accessibilityLabel: labels.closeLabel,
2358
2401
  accessibilityRole: "button",
2359
- style: styles8.scrim,
2402
+ style: styles9.scrim,
2360
2403
  testID: `${testID ?? "command-palette"}-scrim`,
2361
2404
  onPress: onClose
2362
2405
  }
@@ -2367,7 +2410,7 @@ var CommandPalette = ({ open, items, onClose, labels, testID }) => {
2367
2410
  "aria-modal": true,
2368
2411
  "aria-label": labels.regionLabel,
2369
2412
  role: "dialog",
2370
- style: [styles8.panel, { backgroundColor: colors.surface, borderColor: colors.border }],
2413
+ style: [styles9.panel, { backgroundColor: colors.surface, borderColor: colors.border }],
2371
2414
  testID: testID ?? "command-palette",
2372
2415
  children: [
2373
2416
  /* @__PURE__ */ jsx(
@@ -2377,14 +2420,14 @@ var CommandPalette = ({ open, items, onClose, labels, testID }) => {
2377
2420
  accessibilityLabel: labels.placeholder,
2378
2421
  placeholder: labels.placeholder,
2379
2422
  placeholderTextColor: colors.textSecondary,
2380
- style: [styles8.input, { color: colors.text, borderBottomColor: colors.border }],
2423
+ style: [styles9.input, { color: colors.text, borderBottomColor: colors.border }],
2381
2424
  testID: `${testID ?? "command-palette"}-input`,
2382
2425
  value: query,
2383
2426
  onChangeText: setQuery,
2384
2427
  onKeyPress
2385
2428
  }
2386
2429
  ),
2387
- results.length === 0 ? /* @__PURE__ */ jsx(Text, { style: [styles8.empty, { color: colors.textSecondary }], children: labels.emptyText }) : /* @__PURE__ */ jsx(ScrollView, { keyboardShouldPersistTaps: "handled", style: styles8.list, children: results.map((item, index) => /* @__PURE__ */ jsx(PaletteRow, { item, selected: index === selected, onChoose: choose }, item.key)) })
2430
+ results.length === 0 ? /* @__PURE__ */ jsx(Text, { style: [styles9.empty, { color: colors.textSecondary }], children: labels.emptyText }) : /* @__PURE__ */ jsx(ScrollView, { keyboardShouldPersistTaps: "handled", style: styles9.list, children: results.map((item, index) => /* @__PURE__ */ jsx(PaletteRow, { item, selected: index === selected, onChoose: choose }, item.key)) })
2388
2431
  ]
2389
2432
  }
2390
2433
  )
@@ -2489,7 +2532,7 @@ var TAB_MIN_HEIGHT = 56;
2489
2532
  var LABEL_SIZE = 12;
2490
2533
  var LABEL_GAP = 2;
2491
2534
  var TAB_PADDING = 4;
2492
- var styles9 = StyleSheet.create({
2535
+ var styles10 = StyleSheet.create({
2493
2536
  tab: {
2494
2537
  flex: 1,
2495
2538
  minHeight: TAB_MIN_HEIGHT,
@@ -2526,31 +2569,31 @@ var BottomTab = ({
2526
2569
  accessibilityLabel: item.label,
2527
2570
  accessibilityRole: "link",
2528
2571
  accessibilityState: { selected: isActive },
2529
- style: [styles9.tab, { opacity: feedback.opacity }],
2572
+ style: [styles10.tab, { opacity: feedback.opacity }],
2530
2573
  testID: item.testID ?? item.key,
2531
2574
  onPress: () => onPress(item.route),
2532
2575
  onPressIn: () => setPressed(true),
2533
2576
  onPressOut: () => setPressed(false),
2534
2577
  ...ariaCurrentProps3(isActive),
2535
2578
  children: [
2536
- /* @__PURE__ */ jsxs(Animated.View, { style: [styles9.iconWrap, { transform: [{ scale }] }], children: [
2579
+ /* @__PURE__ */ jsxs(Animated.View, { style: [styles10.iconWrap, { transform: [{ scale }] }], children: [
2537
2580
  feedback.pillScale === null ? null : /* @__PURE__ */ jsx(
2538
2581
  View,
2539
2582
  {
2540
2583
  pointerEvents: "none",
2541
- style: [styles9.pill, { backgroundColor: colors.pill, transform: [{ scale: feedback.pillScale }] }, motion]
2584
+ style: [styles10.pill, { backgroundColor: colors.pill, transform: [{ scale: feedback.pillScale }] }, motion]
2542
2585
  }
2543
2586
  ),
2544
2587
  /* @__PURE__ */ jsx(View, { style: [{ transform: feedback.iconTransform }, motion], children: item.renderIcon?.(color, ICON_SIZE) })
2545
2588
  ] }),
2546
- /* @__PURE__ */ jsx(Text, { style: [styles9.label, { color }], children: item.label })
2589
+ /* @__PURE__ */ jsx(Text, { style: [styles10.label, { color }], children: item.label })
2547
2590
  ]
2548
2591
  }
2549
2592
  );
2550
2593
  };
2551
2594
  var DEFAULT_TEST_ID = "bottom-tab-bar";
2552
2595
  var SLIDER_HEIGHT = 3;
2553
- var styles10 = StyleSheet.create({
2596
+ var styles11 = StyleSheet.create({
2554
2597
  bar: { flexDirection: "row", borderTopWidth: StyleSheet.hairlineWidth },
2555
2598
  slider: { position: "absolute", top: 0, height: SLIDER_HEIGHT }
2556
2599
  });
@@ -2577,14 +2620,14 @@ var BottomTabBar = ({
2577
2620
  {
2578
2621
  "aria-label": regionLabel,
2579
2622
  role: "navigation",
2580
- style: [styles10.bar, { backgroundColor: theme.colors.surface, borderTopColor: theme.colors.border }, containerStyle],
2623
+ style: [styles11.bar, { backgroundColor: theme.colors.surface, borderTopColor: theme.colors.border }, containerStyle],
2581
2624
  testID,
2582
2625
  children: [
2583
2626
  bar === null ? null : /* @__PURE__ */ jsx(
2584
2627
  View,
2585
2628
  {
2586
2629
  pointerEvents: "none",
2587
- style: [styles10.slider, { left: bar.left, width: bar.width, backgroundColor: primary }, webTransition("left", barMs, reducedMotion)]
2630
+ style: [styles11.slider, { left: bar.left, width: bar.width, backgroundColor: primary }, webTransition("left", barMs, reducedMotion)]
2588
2631
  }
2589
2632
  ),
2590
2633
  items.map((item) => /* @__PURE__ */ jsx(
@@ -2605,6 +2648,6 @@ var BottomTabBar = ({
2605
2648
  );
2606
2649
  };
2607
2650
 
2608
- export { ACTIVE_BORDER_RADIUS, ACTIVE_TINT_OPACITY, APP_SHELL_SUFFIX, AppShell, BASE_INDENT, BottomTabBar, BrandHomeLink, CHEVRON_ICON_SIZE, CollapsedRail, CommandPalette, CommandPaletteTrigger, DEFAULT_COLLAPSED_RAIL_MAX, DEFAULT_SEARCH_BREAKPOINT, DarkModeControl, HOVER_TINT_OPACITY, NAV_ICON_SIZE, NAV_LINK_GAP, NAV_ROW_RADIUS, NAV_TEST_IDS, Nav, NavBar, NavExpandableItem, NavHoverFeedback, NavOverflowMenu, NavShell, PillNav, PillNavVariant, RAIL_FULL_BREAKPOINT, Sidebar, SidebarChevron, SidebarSearch, TabFeedback, Topbar, accessibleNavItems, collapsedRailStyles, darkModeStyles, expandableStyles, filterCommands, filterNavItems, isFilterActive, isRouteActive, navStyles, pillNavStyles, resolveActiveRoute, resolveContentMaxWidth, resolvePillMenuLabel, resolveRailMode, resolveSearchAffordance, roleRoutesToNavItems, searchTokens, useCommandPaletteHotkey, useContentMaxWidth };
2651
+ export { ACTIVE_BORDER_RADIUS, ACTIVE_TINT_OPACITY, APP_SHELL_SUFFIX, AppShell, BASE_INDENT, BottomTabBar, BrandHomeLink, BrandMark, CHEVRON_ICON_SIZE, CollapsedRail, CommandPalette, CommandPaletteTrigger, DEFAULT_COLLAPSED_RAIL_MAX, DEFAULT_SEARCH_BREAKPOINT, DarkModeControl, HOVER_TINT_OPACITY, NAV_ICON_SIZE, NAV_LINK_GAP, NAV_ROW_RADIUS, NAV_TEST_IDS, Nav, NavBar, NavExpandableItem, NavHoverFeedback, NavOverflowMenu, NavShell, PillNav, PillNavVariant, RAIL_FULL_BREAKPOINT, Sidebar, SidebarChevron, SidebarSearch, TabFeedback, Topbar, accessibleNavItems, collapsedRailStyles, darkModeStyles, expandableStyles, filterCommands, filterNavItems, isFilterActive, isRouteActive, navStyles, pillNavStyles, resolveActiveRoute, resolveContentMaxWidth, resolvePillMenuLabel, resolveRailMode, resolveSearchAffordance, roleRoutesToNavItems, searchTokens, useCommandPaletteHotkey, useContentMaxWidth };
2609
2652
  //# sourceMappingURL=index.mjs.map
2610
2653
  //# sourceMappingURL=index.mjs.map