@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/CHANGELOG.md +4 -0
- package/dist/index.d.mts +17 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.js +90 -56
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +90 -56
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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
|
|
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: [
|
|
1578
|
-
/* @__PURE__ */ jsx(Text, { style: [
|
|
1579
|
-
/* @__PURE__ */ jsx(Text, { style: [
|
|
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:
|
|
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: [
|
|
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
|
|
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:
|
|
1699
|
+
style: styles5.menuToggle,
|
|
1659
1700
|
testID,
|
|
1660
1701
|
onPress: onOpen,
|
|
1661
|
-
children: /* @__PURE__ */ jsx(Text, { style: [
|
|
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:
|
|
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:
|
|
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: [
|
|
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
|
|
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" ?
|
|
1796
|
-
const navInnerStyle = chromeAlignment === "content" && maxWidth !== "full" ? [
|
|
1797
|
-
const scroller = /* @__PURE__ */
|
|
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: [
|
|
1801
|
-
style:
|
|
1831
|
+
contentContainerStyle: [styles6.scrollContent, { padding: contentPadding }],
|
|
1832
|
+
style: styles6.scroll,
|
|
1802
1833
|
testID: `${testID}${APP_SHELL_SUFFIX.content}`,
|
|
1803
|
-
children:
|
|
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:
|
|
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:
|
|
1817
|
-
] }) : /* @__PURE__ */ jsx(View, { testID: `${testID}${APP_SHELL_SUFFIX.header}`, children: renderTextSlot(header, { color:
|
|
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: [
|
|
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:
|
|
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:
|
|
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: [
|
|
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
|
|
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: [
|
|
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:
|
|
2242
|
-
/* @__PURE__ */ jsx(Text, { style: [
|
|
2243
|
-
item.hint ? /* @__PURE__ */ jsx(Text, { style: [
|
|
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:
|
|
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:
|
|
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: [
|
|
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: [
|
|
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: [
|
|
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
|
|
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: [
|
|
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: [
|
|
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: [
|
|
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: [
|
|
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
|
|
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: [
|
|
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: [
|
|
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(
|