@dloizides/ui-nav 1.27.0 → 1.28.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
@@ -897,7 +897,8 @@ var APP_SHELL_SUFFIX = {
897
897
  pending: "-pending",
898
898
  loading: "-loading",
899
899
  error: "-error",
900
- forbidden: "-forbidden"
900
+ forbidden: "-forbidden",
901
+ band: "-backdrop-band"
901
902
  };
902
903
  var FocusableTouchable = ({
903
904
  onPress,
@@ -1536,13 +1537,53 @@ var Nav = (props) => {
1536
1537
  }
1537
1538
  return /* @__PURE__ */ jsx(NavBar, { ...props });
1538
1539
  };
1540
+ var RAIL_FULL_BREAKPOINT = LAYOUT_COLLAPSE_BREAKPOINT;
1541
+ var DEFAULT_COLLAPSED_RAIL_MAX = 1024;
1542
+ function resolveRailMode({ viewport, hasSidebar, hasCollapsed, range }) {
1543
+ if (!hasSidebar) return "none";
1544
+ if (hasCollapsed) {
1545
+ if (viewport >= range.max) return "full";
1546
+ if (viewport >= range.min) return "collapsed";
1547
+ return "drawer";
1548
+ }
1549
+ return viewport >= RAIL_FULL_BREAKPOINT ? "full" : "drawer";
1550
+ }
1551
+ var styles3 = StyleSheet.create({
1552
+ band: { left: 0, position: "absolute", right: 0, top: 0 }
1553
+ });
1554
+ function readBackdrop(theme) {
1555
+ return theme.backdrop;
1556
+ }
1557
+ function rootStyle(backdrop, fallback) {
1558
+ if (backdrop === void 0) return { backgroundColor: fallback };
1559
+ const base = { backgroundColor: backdrop.color };
1560
+ if (!IS_WEB || backdrop.image === null) return base;
1561
+ const web = { backgroundImage: backdrop.image, backgroundSize: backdrop.imageSize ?? "auto" };
1562
+ return { ...base, ...web };
1563
+ }
1564
+ function resolveShellBackdrop(theme, viewport, contentPadding, testID) {
1565
+ const backdrop = readBackdrop(theme);
1566
+ const band = backdrop?.band ?? null;
1567
+ const root = rootStyle(backdrop, theme.colors.background);
1568
+ if (band === null) return { root, chrome: void 0, chromeText: theme.colors.text, band: null };
1569
+ const overlap = viewport < RAIL_FULL_BREAKPOINT ? band.overlap.compact : band.overlap.wide;
1570
+ const element = /* @__PURE__ */ jsx(
1571
+ View,
1572
+ {
1573
+ pointerEvents: "none",
1574
+ style: [styles3.band, { backgroundColor: band.color, height: contentPadding + overlap }],
1575
+ testID: `${testID}${APP_SHELL_SUFFIX.band}`
1576
+ }
1577
+ );
1578
+ return { root, chrome: { backgroundColor: band.color }, chromeText: band.text, band: element };
1579
+ }
1539
1580
  var CARD_PADDING = 20;
1540
1581
  var CARD_BORDER_RADIUS = 12;
1541
1582
  var CARD_BORDER_WIDTH = 1;
1542
1583
  var CARD_TITLE_FONT_SIZE = 16;
1543
1584
  var CARD_MESSAGE_FONT_SIZE = 14;
1544
1585
  var CARD_TITLE_MARGIN_BOTTOM = 8;
1545
- var styles3 = StyleSheet.create({
1586
+ var styles4 = StyleSheet.create({
1546
1587
  // Loading is a TRANSITIONAL state: the spinner is an absolute overlay ON TOP of
1547
1588
  // stably-mounted children, never a replacement for them. Replacing children here
1548
1589
  // would unmount whatever they host (e.g. a navigator), and on remount React
@@ -1574,9 +1615,9 @@ function MessageCard({
1574
1615
  }) {
1575
1616
  const { theme } = useUi();
1576
1617
  const colors = theme.colors;
1577
- return /* @__PURE__ */ jsxs(View, { style: [styles3.card, { backgroundColor: colors.surface, borderColor: accentColor }], testID, children: [
1578
- /* @__PURE__ */ jsx(Text, { style: [styles3.cardTitle, { color: accentColor }], children: message.titleText }),
1579
- /* @__PURE__ */ jsx(Text, { style: [styles3.cardMessage, { color: colors.textSecondary }], children: message.messageText })
1618
+ return /* @__PURE__ */ jsxs(View, { style: [styles4.card, { backgroundColor: colors.surface, borderColor: accentColor }], testID, children: [
1619
+ /* @__PURE__ */ jsx(Text, { style: [styles4.cardTitle, { color: accentColor }], children: message.titleText }),
1620
+ /* @__PURE__ */ jsx(Text, { style: [styles4.cardMessage, { color: colors.textSecondary }], children: message.messageText })
1580
1621
  ] });
1581
1622
  }
1582
1623
  function useContentBody(state, children, testID) {
@@ -1588,12 +1629,12 @@ function useContentBody(state, children, testID) {
1588
1629
  return /* @__PURE__ */ jsx(MessageCard, { accentColor: errorColor, message: state.forbidden, testID: `${testID}${APP_SHELL_SUFFIX.forbidden}` });
1589
1630
  if (state.error)
1590
1631
  return /* @__PURE__ */ jsx(MessageCard, { accentColor: errorColor, message: state.error, testID: `${testID}${APP_SHELL_SUFFIX.error}` });
1591
- return /* @__PURE__ */ jsxs(View, { style: styles3.loadingHost, children: [
1632
+ return /* @__PURE__ */ jsxs(View, { style: styles4.loadingHost, children: [
1592
1633
  children,
1593
1634
  state.loading === true ? /* @__PURE__ */ jsx(
1594
1635
  View,
1595
1636
  {
1596
- style: [styles3.loadingOverlay, { backgroundColor: theme.colors.background }],
1637
+ style: [styles4.loadingOverlay, { backgroundColor: theme.colors.background }],
1597
1638
  testID: `${testID}${APP_SHELL_SUFFIX.loading}`,
1598
1639
  children: /* @__PURE__ */ jsx(ActivityIndicator, { color: primary, size: "large" })
1599
1640
  }
@@ -1620,7 +1661,7 @@ var DEFAULT_DRAWER_LABELS = {
1620
1661
  closeLabel: "Close menu",
1621
1662
  closeHint: "Close the navigation menu"
1622
1663
  };
1623
- var styles4 = StyleSheet.create({
1664
+ var styles5 = StyleSheet.create({
1624
1665
  overlay: { ...StyleSheet.absoluteFillObject, zIndex: DRAWER_Z_INDEX },
1625
1666
  // The scrim's tap-to-close hit area is anchored to the RIGHT of the panel
1626
1667
  // (`left: DRAWER_WIDTH`), so it NEVER overlaps the panel: nav-item taps always
@@ -1655,10 +1696,10 @@ var MenuToggle = ({ label, hint, onOpen, testID }) => {
1655
1696
  accessibilityHint: hint,
1656
1697
  accessibilityLabel: label,
1657
1698
  ringColor: theme.palette.primary["500"],
1658
- style: styles4.menuToggle,
1699
+ style: styles5.menuToggle,
1659
1700
  testID,
1660
1701
  onPress: onOpen,
1661
- children: /* @__PURE__ */ jsx(Text, { style: [styles4.menuToggleGlyph, { color: theme.colors.text }], children: MENU_GLYPH2 })
1702
+ children: /* @__PURE__ */ jsx(Text, { style: [styles5.menuToggleGlyph, { color: theme.colors.text }], children: MENU_GLYPH2 })
1662
1703
  }
1663
1704
  );
1664
1705
  };
@@ -1684,14 +1725,14 @@ var MobileDrawer = ({
1684
1725
  node.addEventListener("click", handleClick);
1685
1726
  return () => node.removeEventListener("click", handleClick);
1686
1727
  }, [onClose]);
1687
- return /* @__PURE__ */ jsxs(View, { style: styles4.overlay, children: [
1728
+ return /* @__PURE__ */ jsxs(View, { style: styles5.overlay, children: [
1688
1729
  /* @__PURE__ */ jsx(
1689
1730
  Pressable,
1690
1731
  {
1691
1732
  accessibilityHint: labels.closeHint,
1692
1733
  accessibilityLabel: labels.closeLabel,
1693
1734
  accessibilityRole: "button",
1694
- style: styles4.scrim,
1735
+ style: styles5.scrim,
1695
1736
  testID: scrimTestID,
1696
1737
  onPress: onClose
1697
1738
  }
@@ -1702,24 +1743,13 @@ var MobileDrawer = ({
1702
1743
  ref: panelRef,
1703
1744
  "aria-modal": true,
1704
1745
  role: "dialog",
1705
- style: [styles4.panel, { backgroundColor: theme.colors.surface }],
1746
+ style: [styles5.panel, { backgroundColor: theme.colors.surface }],
1706
1747
  testID: drawerTestID,
1707
1748
  children: renderTextSlot(sidebar, { color: theme.colors.text })
1708
1749
  }
1709
1750
  )
1710
1751
  ] });
1711
1752
  };
1712
- var RAIL_FULL_BREAKPOINT = LAYOUT_COLLAPSE_BREAKPOINT;
1713
- var DEFAULT_COLLAPSED_RAIL_MAX = 1024;
1714
- function resolveRailMode({ viewport, hasSidebar, hasCollapsed, range }) {
1715
- if (!hasSidebar) return "none";
1716
- if (hasCollapsed) {
1717
- if (viewport >= range.max) return "full";
1718
- if (viewport >= range.min) return "collapsed";
1719
- return "drawer";
1720
- }
1721
- return viewport >= RAIL_FULL_BREAKPOINT ? "full" : "drawer";
1722
- }
1723
1753
  function resolveContentMaxWidth(width, viewport) {
1724
1754
  if (width === "full") return "full";
1725
1755
  const wideMinViewport = width.wideMinViewport ?? Number.POSITIVE_INFINITY;
@@ -1731,7 +1761,7 @@ function useContentMaxWidth(width) {
1731
1761
  return resolveContentMaxWidth(width, viewport);
1732
1762
  }
1733
1763
  var DEFAULT_CONTENT_PADDING = 24;
1734
- var styles5 = StyleSheet.create({
1764
+ var styles6 = StyleSheet.create({
1735
1765
  root: { flex: 1 },
1736
1766
  // Auth-pending spinner: an opaque absolute overlay over the mounted shell, so
1737
1767
  // `children` (and any navigator they host) are never unmounted while the gate
@@ -1771,6 +1801,7 @@ var AppShell = ({
1771
1801
  const maxWidth = useContentMaxWidth(width);
1772
1802
  const body = useContentBody(state, children, testID);
1773
1803
  const { width: viewportWidth } = useWindowDimensions();
1804
+ const look = resolveShellBackdrop(theme, viewportWidth, contentPadding, testID);
1774
1805
  const railRange = collapsedRailRange ?? { min: RAIL_FULL_BREAKPOINT, max: DEFAULT_COLLAPSED_RAIL_MAX };
1775
1806
  const railMode = resolveRailMode({
1776
1807
  viewport: viewportWidth,
@@ -1792,18 +1823,21 @@ var AppShell = ({
1792
1823
  }, [isUnauthenticated, gate]);
1793
1824
  const gatePending = gate?.pending === true;
1794
1825
  if (isUnauthenticated) return null;
1795
- const columnStyle = maxWidth === "full" ? styles5.columnFull : [styles5.columnCapped, { maxWidth }];
1796
- const navInnerStyle = chromeAlignment === "content" && maxWidth !== "full" ? [styles5.chromeCapped, { maxWidth, paddingHorizontal: contentPadding }] : void 0;
1797
- const scroller = /* @__PURE__ */ jsx(
1826
+ const columnStyle = maxWidth === "full" ? styles6.columnFull : [styles6.columnCapped, { maxWidth }];
1827
+ const navInnerStyle = chromeAlignment === "content" && maxWidth !== "full" ? [styles6.chromeCapped, { maxWidth, paddingHorizontal: contentPadding }] : void 0;
1828
+ const scroller = /* @__PURE__ */ jsxs(
1798
1829
  ScrollView,
1799
1830
  {
1800
- contentContainerStyle: [styles5.scrollContent, { padding: contentPadding }],
1801
- style: styles5.scroll,
1831
+ contentContainerStyle: [styles6.scrollContent, { padding: contentPadding }],
1832
+ style: styles6.scroll,
1802
1833
  testID: `${testID}${APP_SHELL_SUFFIX.content}`,
1803
- children: /* @__PURE__ */ jsx(View, { style: columnStyle, children: body })
1834
+ children: [
1835
+ look.band,
1836
+ /* @__PURE__ */ jsx(View, { style: columnStyle, children: body })
1837
+ ]
1804
1838
  }
1805
1839
  );
1806
- const headerRegion = useDrawer ? /* @__PURE__ */ jsxs(View, { style: styles5.headerRow, testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: [
1840
+ const headerRegion = useDrawer ? /* @__PURE__ */ jsxs(View, { style: [styles6.headerRow, look.chrome], testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: [
1807
1841
  /* @__PURE__ */ jsx(
1808
1842
  MenuToggle,
1809
1843
  {
@@ -1813,14 +1847,14 @@ var AppShell = ({
1813
1847
  onOpen: openDrawer
1814
1848
  }
1815
1849
  ),
1816
- /* @__PURE__ */ jsx(View, { style: styles5.headerFill, children: renderTextSlot(header, { color: theme.colors.text }) })
1817
- ] }) : /* @__PURE__ */ jsx(View, { testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: renderTextSlot(header, { color: theme.colors.text }) });
1850
+ /* @__PURE__ */ jsx(View, { style: styles6.headerFill, children: renderTextSlot(header, { color: look.chromeText }) })
1851
+ ] }) : /* @__PURE__ */ jsx(View, { style: look.chrome, testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: renderTextSlot(header, { color: look.chromeText }) });
1818
1852
  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;
1819
- return /* @__PURE__ */ jsxs(View, { style: [styles5.root, { backgroundColor: theme.colors.background }], testID, children: [
1853
+ return /* @__PURE__ */ jsxs(View, { style: [styles6.root, look.root], testID, children: [
1820
1854
  headerRegion,
1821
- nav !== void 0 ? /* @__PURE__ */ jsx(View, { testID: `${testID}${APP_SHELL_SUFFIX.nav}`, children: navInnerStyle !== void 0 ? /* @__PURE__ */ jsx(View, { style: navInnerStyle, children: renderTextSlot(nav, { color: theme.colors.text }) }) : renderTextSlot(nav, { color: theme.colors.text }) }) : null,
1855
+ 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,
1822
1856
  banner !== void 0 ? /* @__PURE__ */ jsx(View, { testID: `${testID}${APP_SHELL_SUFFIX.banner}`, children: renderTextSlot(banner, { color: theme.colors.text }) }) : null,
1823
- railRegion !== null ? /* @__PURE__ */ jsxs(View, { style: styles5.bodyRow, children: [
1857
+ railRegion !== null ? /* @__PURE__ */ jsxs(View, { style: styles6.bodyRow, children: [
1824
1858
  railRegion,
1825
1859
  scroller
1826
1860
  ] }) : scroller,
@@ -1837,7 +1871,7 @@ var AppShell = ({
1837
1871
  gatePending ? /* @__PURE__ */ jsx(
1838
1872
  View,
1839
1873
  {
1840
- style: [styles5.pendingOverlay, { backgroundColor: theme.colors.background }],
1874
+ style: [styles6.pendingOverlay, { backgroundColor: theme.colors.background }],
1841
1875
  testID: `${testID}${APP_SHELL_SUFFIX.pending}`,
1842
1876
  children: /* @__PURE__ */ jsx(ActivityIndicator, { color: primary, size: "large" })
1843
1877
  }
@@ -2204,7 +2238,7 @@ var KEY_DOWN = "ArrowDown";
2204
2238
  var KEY_UP = "ArrowUp";
2205
2239
  var KEY_ENTER = "Enter";
2206
2240
  var KEY_ESCAPE = "Escape";
2207
- var styles6 = StyleSheet.create({
2241
+ var styles7 = StyleSheet.create({
2208
2242
  overlay: { ...StyleSheet.absoluteFillObject, zIndex: OVERLAY_Z_INDEX, alignItems: "center" },
2209
2243
  scrim: { ...StyleSheet.absoluteFillObject, backgroundColor: SCRIM_COLOR2 },
2210
2244
  panel: {
@@ -2233,14 +2267,14 @@ var PaletteRow = ({ item, selected, onChoose }) => {
2233
2267
  accessibilityLabel: item.label,
2234
2268
  accessibilityRole: "button",
2235
2269
  accessibilityState: { selected },
2236
- style: [styles6.row, selected ? { backgroundColor: colors.border } : void 0],
2270
+ style: [styles7.row, selected ? { backgroundColor: colors.border } : void 0],
2237
2271
  testID: item.testID ?? item.key,
2238
2272
  onPress: () => onChoose(item),
2239
2273
  children: [
2240
2274
  typeof item.renderIcon === "function" ? item.renderIcon(colors.textSecondary, NAV_ICON_SIZE) : null,
2241
- /* @__PURE__ */ jsxs(View, { style: styles6.rowText, children: [
2242
- /* @__PURE__ */ jsx(Text, { style: [styles6.rowLabel, { color: colors.text }], children: item.label }),
2243
- item.hint ? /* @__PURE__ */ jsx(Text, { style: [styles6.rowHint, { color: colors.textSecondary }], children: item.hint }) : null
2275
+ /* @__PURE__ */ jsxs(View, { style: styles7.rowText, children: [
2276
+ /* @__PURE__ */ jsx(Text, { style: [styles7.rowLabel, { color: colors.text }], children: item.label }),
2277
+ item.hint ? /* @__PURE__ */ jsx(Text, { style: [styles7.rowHint, { color: colors.textSecondary }], children: item.hint }) : null
2244
2278
  ] })
2245
2279
  ]
2246
2280
  }
@@ -2280,14 +2314,14 @@ var CommandPalette = ({ open, items, onClose, labels, testID }) => {
2280
2314
  [results, selected, choose, onClose]
2281
2315
  );
2282
2316
  if (!open) return null;
2283
- return /* @__PURE__ */ jsxs(View, { style: styles6.overlay, children: [
2317
+ return /* @__PURE__ */ jsxs(View, { style: styles7.overlay, children: [
2284
2318
  /* @__PURE__ */ jsx(
2285
2319
  Pressable,
2286
2320
  {
2287
2321
  accessibilityHint: labels.closeHint,
2288
2322
  accessibilityLabel: labels.closeLabel,
2289
2323
  accessibilityRole: "button",
2290
- style: styles6.scrim,
2324
+ style: styles7.scrim,
2291
2325
  testID: `${testID ?? "command-palette"}-scrim`,
2292
2326
  onPress: onClose
2293
2327
  }
@@ -2298,7 +2332,7 @@ var CommandPalette = ({ open, items, onClose, labels, testID }) => {
2298
2332
  "aria-modal": true,
2299
2333
  "aria-label": labels.regionLabel,
2300
2334
  role: "dialog",
2301
- style: [styles6.panel, { backgroundColor: colors.surface, borderColor: colors.border }],
2335
+ style: [styles7.panel, { backgroundColor: colors.surface, borderColor: colors.border }],
2302
2336
  testID: testID ?? "command-palette",
2303
2337
  children: [
2304
2338
  /* @__PURE__ */ jsx(
@@ -2308,14 +2342,14 @@ var CommandPalette = ({ open, items, onClose, labels, testID }) => {
2308
2342
  accessibilityLabel: labels.placeholder,
2309
2343
  placeholder: labels.placeholder,
2310
2344
  placeholderTextColor: colors.textSecondary,
2311
- style: [styles6.input, { color: colors.text, borderBottomColor: colors.border }],
2345
+ style: [styles7.input, { color: colors.text, borderBottomColor: colors.border }],
2312
2346
  testID: `${testID ?? "command-palette"}-input`,
2313
2347
  value: query,
2314
2348
  onChangeText: setQuery,
2315
2349
  onKeyPress
2316
2350
  }
2317
2351
  ),
2318
- results.length === 0 ? /* @__PURE__ */ jsx(Text, { style: [styles6.empty, { color: colors.textSecondary }], children: labels.emptyText }) : /* @__PURE__ */ jsx(ScrollView, { keyboardShouldPersistTaps: "handled", style: styles6.list, children: results.map((item, index) => /* @__PURE__ */ jsx(PaletteRow, { item, selected: index === selected, onChoose: choose }, item.key)) })
2352
+ results.length === 0 ? /* @__PURE__ */ jsx(Text, { style: [styles7.empty, { color: colors.textSecondary }], children: labels.emptyText }) : /* @__PURE__ */ jsx(ScrollView, { keyboardShouldPersistTaps: "handled", style: styles7.list, children: results.map((item, index) => /* @__PURE__ */ jsx(PaletteRow, { item, selected: index === selected, onChoose: choose }, item.key)) })
2319
2353
  ]
2320
2354
  }
2321
2355
  )
@@ -2420,7 +2454,7 @@ var TAB_MIN_HEIGHT = 56;
2420
2454
  var LABEL_SIZE = 12;
2421
2455
  var LABEL_GAP = 2;
2422
2456
  var TAB_PADDING = 4;
2423
- var styles7 = StyleSheet.create({
2457
+ var styles8 = StyleSheet.create({
2424
2458
  tab: {
2425
2459
  flex: 1,
2426
2460
  minHeight: TAB_MIN_HEIGHT,
@@ -2457,31 +2491,31 @@ var BottomTab = ({
2457
2491
  accessibilityLabel: item.label,
2458
2492
  accessibilityRole: "link",
2459
2493
  accessibilityState: { selected: isActive },
2460
- style: [styles7.tab, { opacity: feedback.opacity }],
2494
+ style: [styles8.tab, { opacity: feedback.opacity }],
2461
2495
  testID: item.testID ?? item.key,
2462
2496
  onPress: () => onPress(item.route),
2463
2497
  onPressIn: () => setPressed(true),
2464
2498
  onPressOut: () => setPressed(false),
2465
2499
  ...ariaCurrentProps3(isActive),
2466
2500
  children: [
2467
- /* @__PURE__ */ jsxs(Animated.View, { style: [styles7.iconWrap, { transform: [{ scale }] }], children: [
2501
+ /* @__PURE__ */ jsxs(Animated.View, { style: [styles8.iconWrap, { transform: [{ scale }] }], children: [
2468
2502
  feedback.pillScale === null ? null : /* @__PURE__ */ jsx(
2469
2503
  View,
2470
2504
  {
2471
2505
  pointerEvents: "none",
2472
- style: [styles7.pill, { backgroundColor: colors.pill, transform: [{ scale: feedback.pillScale }] }, motion]
2506
+ style: [styles8.pill, { backgroundColor: colors.pill, transform: [{ scale: feedback.pillScale }] }, motion]
2473
2507
  }
2474
2508
  ),
2475
2509
  /* @__PURE__ */ jsx(View, { style: [{ transform: feedback.iconTransform }, motion], children: item.renderIcon?.(color, ICON_SIZE) })
2476
2510
  ] }),
2477
- /* @__PURE__ */ jsx(Text, { style: [styles7.label, { color }], children: item.label })
2511
+ /* @__PURE__ */ jsx(Text, { style: [styles8.label, { color }], children: item.label })
2478
2512
  ]
2479
2513
  }
2480
2514
  );
2481
2515
  };
2482
2516
  var DEFAULT_TEST_ID = "bottom-tab-bar";
2483
2517
  var SLIDER_HEIGHT = 3;
2484
- var styles8 = StyleSheet.create({
2518
+ var styles9 = StyleSheet.create({
2485
2519
  bar: { flexDirection: "row", borderTopWidth: StyleSheet.hairlineWidth },
2486
2520
  slider: { position: "absolute", top: 0, height: SLIDER_HEIGHT }
2487
2521
  });
@@ -2508,14 +2542,14 @@ var BottomTabBar = ({
2508
2542
  {
2509
2543
  "aria-label": regionLabel,
2510
2544
  role: "navigation",
2511
- style: [styles8.bar, { backgroundColor: theme.colors.surface, borderTopColor: theme.colors.border }, containerStyle],
2545
+ style: [styles9.bar, { backgroundColor: theme.colors.surface, borderTopColor: theme.colors.border }, containerStyle],
2512
2546
  testID,
2513
2547
  children: [
2514
2548
  bar === null ? null : /* @__PURE__ */ jsx(
2515
2549
  View,
2516
2550
  {
2517
2551
  pointerEvents: "none",
2518
- style: [styles8.slider, { left: bar.left, width: bar.width, backgroundColor: primary }, webTransition("left", barMs, reducedMotion)]
2552
+ style: [styles9.slider, { left: bar.left, width: bar.width, backgroundColor: primary }, webTransition("left", barMs, reducedMotion)]
2519
2553
  }
2520
2554
  ),
2521
2555
  items.map((item) => /* @__PURE__ */ jsx(