@ankhorage/navigator 1.0.0 → 1.1.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +3 -2
  3. package/dist/definitions/NavigatorPlan.d.ts +11 -0
  4. package/dist/definitions/NavigatorPlan.d.ts.map +1 -1
  5. package/dist/expo-router/createNavigatorPlan.d.ts.map +1 -1
  6. package/dist/expo-router/createNavigatorPlan.js +12 -10
  7. package/dist/expo-router/createNavigatorPlan.js.map +1 -1
  8. package/dist/expo-router/resolveTabsNavigatorPlan.d.ts.map +1 -1
  9. package/dist/expo-router/resolveTabsNavigatorPlan.js +17 -4
  10. package/dist/expo-router/resolveTabsNavigatorPlan.js.map +1 -1
  11. package/dist/generation/generateNavigatorFiles.d.ts.map +1 -1
  12. package/dist/generation/generateNavigatorFiles.js +5 -15
  13. package/dist/generation/generateNavigatorFiles.js.map +1 -1
  14. package/dist/generation/generateTabsLayoutFile.d.ts +4 -0
  15. package/dist/generation/generateTabsLayoutFile.d.ts.map +1 -0
  16. package/dist/generation/generateTabsLayoutFile.js +137 -0
  17. package/dist/generation/generateTabsLayoutFile.js.map +1 -0
  18. package/dist/generation/generationSafety.d.ts +6 -0
  19. package/dist/generation/generationSafety.d.ts.map +1 -0
  20. package/dist/generation/generationSafety.js +18 -0
  21. package/dist/generation/generationSafety.js.map +1 -0
  22. package/dist/metadata/index.d.ts +14 -1
  23. package/dist/metadata/index.d.ts.map +1 -1
  24. package/dist/metadata/index.js +6 -1
  25. package/dist/metadata/index.js.map +1 -1
  26. package/dist/tabs/CustomTabsLayout.d.ts +39 -0
  27. package/dist/tabs/CustomTabsLayout.d.ts.map +1 -0
  28. package/dist/tabs/CustomTabsLayout.js +122 -0
  29. package/dist/tabs/CustomTabsLayout.js.map +1 -0
  30. package/dist/tabs/index.d.ts +3 -0
  31. package/dist/tabs/index.d.ts.map +1 -0
  32. package/dist/tabs/index.js +2 -0
  33. package/dist/tabs/index.js.map +1 -0
  34. package/dist/tabs/nativeIconFamilies.d.ts +16 -0
  35. package/dist/tabs/nativeIconFamilies.d.ts.map +1 -0
  36. package/dist/tabs/nativeIconFamilies.js +24 -0
  37. package/dist/tabs/nativeIconFamilies.js.map +1 -0
  38. package/dist/validation/validateNavigatorManifest.d.ts.map +1 -1
  39. package/dist/validation/validateNavigatorManifest.js +2 -36
  40. package/dist/validation/validateNavigatorManifest.js.map +1 -1
  41. package/dist/validation/validateTabsNavigator.d.ts +5 -0
  42. package/dist/validation/validateTabsNavigator.d.ts.map +1 -0
  43. package/dist/validation/validateTabsNavigator.js +140 -0
  44. package/dist/validation/validateTabsNavigator.js.map +1 -0
  45. package/package.json +34 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ankhorage/navigator
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 11f9f2e: Add native, JavaScript, and responsive Surface-owned headless Tabs generation.
8
+
3
9
  ## 1.0.0
4
10
 
5
11
  ### Major Changes
package/README.md CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  # NAVIGATOR
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v0.1.1](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v1.0.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
- Standalone manifest-driven navigator capability for Expo Router across React Native and React Native Web.
8
+ Standalone Navigator capability with topology configured independently from platform implementation and visual presentation. Adaptive tabs use Native Tabs on Android/iOS and one stable Expo Router headless topology with Surface-owned responsive presentation on Web.
9
9
 
10
10
  ## Generated documentation
11
11
 
@@ -15,5 +15,6 @@ Standalone manifest-driven navigator capability for Expo Router across React Nat
15
15
  - [Architecture overview](././paradox/diagrams/architecture-overview.mmd)
16
16
  - [Module relationships](././paradox/diagrams/module-relationships.mmd)
17
17
  - [Export graph](././paradox/diagrams/export-graph.mmd)
18
+ - [CustomTabsLayout sequence](././paradox/diagrams/sequences/custom-tabs-layout.mmd)
18
19
  - [resolveCustomTabsPresentation sequence](././paradox/diagrams/sequences/resolve-custom-tabs-presentation.mmd)
19
20
  - [resolveTabsNavigatorPlan sequence](././paradox/diagrams/sequences/resolve-tabs-navigator-plan.mmd)
@@ -25,13 +25,22 @@ export interface NavigatorAdapterPlan {
25
25
  }
26
26
  export type ResolvedTabsImplementation = 'custom' | 'javascript' | 'native';
27
27
  export type ResolvedTabsPresentation = 'bottom' | 'top' | 'rail' | 'sidebar' | 'custom';
28
+ /**
29
+ * Disposable adapter plan for a `tabs` topology.
30
+ *
31
+ * The implementation selects the Router runtime. Presentation only selects its visual chrome and
32
+ * never creates another route topology.
33
+ */
28
34
  export interface TabsNavigatorPlan {
29
35
  implementation: ResolvedTabsImplementation;
30
36
  module: ExpoRouterNavigatorModule;
31
37
  exportName: string;
32
38
  stability: NavigatorApiStability;
33
39
  presentation?: ResolvedTabsPresentation;
40
+ presentations?: Readonly<Record<NavigatorResponsiveSize, ResolvedTabsPresentation>>;
34
41
  customPresentationId?: string;
42
+ minimizeBehavior?: 'automatic' | 'never' | 'onScrollDown' | 'onScrollUp';
43
+ bottomAccessoryScreenId?: string;
35
44
  }
36
45
  export interface NavigatorRoutePlan {
37
46
  name: string;
@@ -88,10 +97,12 @@ export interface NavigatorScreenModule {
88
97
  export interface NavigatorGenerationBindings {
89
98
  screens: Readonly<Record<string, NavigatorScreenModule>>;
90
99
  guards: Readonly<Record<string, NavigatorScreenModule>>;
100
+ iconSourceResolver?: NavigatorScreenModule;
91
101
  flows?: {
92
102
  onboardingRoute?: string;
93
103
  authenticationRoute?: string;
94
104
  };
105
+ tabPresentations?: Readonly<Record<string, NavigatorScreenModule>>;
95
106
  }
96
107
  export interface NavigatorGeneratedFile {
97
108
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/definitions/NavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AACjE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,aAAa,CAAC;AAEjE,MAAM,MAAM,yBAAyB,GACjC,aAAa,GACb,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,yBAAyB,GACzB,gBAAgB,GAChB,kCAAkC,CAAC;AAEvC,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,cAAc,GACd,kBAAkB,GAClB,oBAAoB,GACpB,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,kBAAkB,CAAC;IACvB,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC;IAChC,SAAS,EAAE,qBAAqB,CAAC;IACjC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC5E,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,0BAA0B,CAAC;IAC3C,MAAM,EAAE,yBAAyB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,qBAAqB,CAAC;IACjC,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACpF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,cAAc,GAAG,YAAY,CAAC;IACzE,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE;QACN,cAAc,EAAE,mBAAmB,CAAC;QACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC;KAC9B,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,sBAAsB,CAAC;KAClC,CAAC;IACF,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,SAAS,CAAC,EAAE;QACV,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;YAChB,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,sBAAsB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,eAAe,CAAC;KACpE,CAAC;IACF,MAAM,CAAC,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACxC,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,0BAA0B,CAAC;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACxD,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,KAAK,CAAC,EAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"createNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAGV,aAAa,EACb,uBAAuB,EAEvB,wBAAwB,EAEzB,MAAM,8BAA8B,CAAC;AAStC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAoOD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAmBf"}
1
+ {"version":3,"file":"createNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAGV,aAAa,EACb,uBAAuB,EAEvB,wBAAwB,EAEzB,MAAM,8BAA8B,CAAC;AAStC,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,uBAAuB,CAAC;CAC1C;AAkPD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,GAClC,aAAa,CAmBf"}
@@ -30,22 +30,24 @@ function createStackAdapter(stack, routerMajor) {
30
30
  limitations: [],
31
31
  };
32
32
  }
33
- function createTabsAdapter(tabs) {
33
+ function createTabsAdapter(tabs, platform, routerMajor) {
34
+ const nativeUnavailable = tabs.implementation === 'native' &&
35
+ (platform === 'web' || routerMajor === undefined || routerMajor < 54);
36
+ const customUnavailable = tabs.implementation === 'custom' && platform !== 'web';
34
37
  return {
35
38
  id: `tabs.${tabs.implementation}`,
36
39
  module: tabs.module,
37
40
  exportName: tabs.exportName,
38
- support: 'unavailable',
41
+ support: nativeUnavailable || customUnavailable ? 'unavailable' : 'supported',
39
42
  stability: tabs.stability,
40
43
  limitations: tabs.implementation === 'native'
41
- ? [
42
- 'Owned by the optional Tabs adapter.',
43
- 'Alpha API; unavailable on web and requires Expo Router 54.0.0 or newer.',
44
- ]
45
- : ['Owned by the optional Tabs adapter.'],
44
+ ? ['Alpha API; unavailable on web and requires Expo Router 54.0.0 or newer.']
45
+ : tabs.implementation === 'custom'
46
+ ? ['Web-only Surface presentation over Expo Router headless tabs.']
47
+ : [],
46
48
  };
47
49
  }
48
- function createAdapter(node, stack, tabs, routerMajor) {
50
+ function createAdapter(node, stack, tabs, platform, routerMajor) {
49
51
  switch (node.type) {
50
52
  case 'slot':
51
53
  return {
@@ -70,7 +72,7 @@ function createAdapter(node, stack, tabs, routerMajor) {
70
72
  case 'tabs':
71
73
  if (tabs === undefined)
72
74
  throw new Error('Tabs planning did not resolve an adapter.');
73
- return createTabsAdapter(tabs);
75
+ return createTabsAdapter(tabs, platform, routerMajor);
74
76
  case 'split-view':
75
77
  return {
76
78
  id: 'split-view',
@@ -167,7 +169,7 @@ function createNodePlan(manifest, node, pointer, options, responsiveSize) {
167
169
  return {
168
170
  type: node.type,
169
171
  pointer,
170
- adapter: createAdapter(node, stack, tabs, parseExpoRouterMajor(options.expoRouterVersion)),
172
+ adapter: createAdapter(node, stack, tabs, options.platform, parseExpoRouterMajor(options.expoRouterVersion)),
171
173
  ...(node.initialRouteName === undefined ? {} : { initialRouteName: node.initialRouteName }),
172
174
  routes,
173
175
  ...createNodeDetails(node, stack, tabs),
@@ -1 +1 @@
1
- {"version":3,"file":"createNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/createNavigatorPlan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTabsNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAkEtC,2FAA2F;AAC3F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,QAAQ,EAAE,wBAAwB,EAClC,IAAI,EAAE,uBAAuB,GAC5B,iBAAiB,CAcnB"}
1
+ {"version":3,"file":"resolveTabsNavigatorPlan.d.ts","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAsFtC,2FAA2F;AAC3F,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,GAAG,SAAS,EAC5C,QAAQ,EAAE,wBAAwB,EAClC,IAAI,EAAE,uBAAuB,GAC5B,iBAAiB,CAcnB"}
@@ -11,7 +11,7 @@ function resolveAdaptiveConfig(config) {
11
11
  : undefined;
12
12
  }
13
13
  /*** Create the alpha native-tabs plan and reject unsupported Web usage. */
14
- function createNativeTabsPlan(platform) {
14
+ function createNativeTabsPlan(platform, config) {
15
15
  if (platform === 'web') {
16
16
  throw new Error('Native tabs are not available for the Web navigator plan.');
17
17
  }
@@ -20,6 +20,12 @@ function createNativeTabsPlan(platform) {
20
20
  module: 'expo-router/unstable-native-tabs',
21
21
  exportName: 'NativeTabs',
22
22
  stability: 'alpha',
23
+ ...(config?.minimizeBehavior === undefined
24
+ ? {}
25
+ : { minimizeBehavior: config.minimizeBehavior }),
26
+ ...(config?.bottomAccessory === undefined
27
+ ? {}
28
+ : { bottomAccessoryScreenId: config.bottomAccessory.screenId }),
23
29
  };
24
30
  }
25
31
  /*** Create the stable JavaScript tabs plan for bottom or top presentation. */
@@ -35,18 +41,25 @@ function createJavaScriptTabsPlan(config) {
35
41
  }
36
42
  /*** Create the stable headless custom-tabs plan for Web or explicit custom use. */
37
43
  function createCustomTabsPlan(config, size) {
44
+ const resolved = resolveCustomTabsPresentation(config, size);
45
+ const presentations = {
46
+ compact: resolveCustomTabsPresentation(config, 'compact').presentation,
47
+ medium: resolveCustomTabsPresentation(config, 'medium').presentation,
48
+ expanded: resolveCustomTabsPresentation(config, 'expanded').presentation,
49
+ };
38
50
  return {
39
51
  implementation: 'custom',
40
52
  module: 'expo-router/ui',
41
53
  exportName: 'Tabs',
42
54
  stability: 'stable',
43
- ...resolveCustomTabsPresentation(config, size),
55
+ ...resolved,
56
+ presentations,
44
57
  };
45
58
  }
46
59
  /*** Resolve the adaptive tabs plan for the selected runtime platform. */
47
60
  function createAdaptiveTabsPlan(config, platform, size) {
48
61
  if (platform !== 'web')
49
- return createNativeTabsPlan(platform);
62
+ return createNativeTabsPlan(platform, resolveAdaptiveConfig(config)?.native);
50
63
  return createCustomTabsPlan(resolveAdaptiveConfig(config)?.web ?? DEFAULT_WEB_CUSTOM_TABS, size);
51
64
  }
52
65
  /*** Resolve the Expo Router module/export and presentation for one tabs implementation. */
@@ -58,7 +71,7 @@ export function resolveTabsNavigatorPlan(config, platform, size) {
58
71
  case 'adaptive':
59
72
  return createAdaptiveTabsPlan(config, platform, size);
60
73
  case 'native':
61
- return createNativeTabsPlan(platform);
74
+ return createNativeTabsPlan(platform, config);
62
75
  case 'javascript':
63
76
  return createJavaScriptTabsPlan(config);
64
77
  case 'custom':
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTabsNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+CAA+C,CAAC;AAE9F,MAAM,uBAAuB,GAAG;IAC9B,YAAY,EAAE,YAAY;CAClB,CAAC;AAEX,mFAAmF;AACnF,SAAS,qBAAqB,CAC5B,MAA4C;IAE5C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU;QAChF,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,2EAA2E;AAC3E,SAAS,oBAAoB,CAAC,QAAkC;IAC9D,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO;QACL,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,kCAAkC;QAC1C,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,OAAO;KACnB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS,wBAAwB,CAAC,MAA4B;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC;IAC1C,OAAO;QACL,cAAc,EAAE,YAAY;QAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,qBAAqB;QAC/D,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QACpC,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;KACrC,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,oBAAoB,CAC3B,MAAgD,EAChD,IAA6B;IAE7B,OAAO;QACL,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,QAAQ;QACnB,GAAG,6BAA6B,CAAC,MAAM,EAAE,IAAI,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,SAAS,sBAAsB,CAC7B,MAA4C,EAC5C,QAAkC,EAClC,IAA6B;IAE7B,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC9D,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,uBAAuB,EAAE,IAAI,CAAC,CAAC;AACnG,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,wBAAwB,CACtC,MAA4C,EAC5C,QAAkC,EAClC,IAA6B;IAE7B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAEhF,QAAQ,MAAM,CAAC,cAAc,EAAE,CAAC;QAC9B,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACb,OAAO,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACxC,KAAK,YAAY;YACf,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resolveTabsNavigatorPlan.js","sourceRoot":"","sources":["../../src/expo-router/resolveTabsNavigatorPlan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateNavigatorFiles.d.ts","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAE3B,aAAa,EAGd,MAAM,8BAA8B,CAAC;AAuNtC,sGAAsG;AACtG,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,2BAA2B,GACpC,SAAS,sBAAsB,EAAE,CAkBnC"}
1
+ {"version":3,"file":"generateNavigatorFiles.d.ts","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAE3B,aAAa,EAGd,MAAM,8BAA8B,CAAC;AAwMtC,sGAAsG;AACtG,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,2BAA2B,GACpC,SAAS,sBAAsB,EAAE,CAkBnC"}
@@ -1,20 +1,7 @@
1
1
  const APP_DIRECTORY = 'src/app';
2
- const SAFE_EXPORT_NAME = /^[A-Za-z_$][A-Za-z0-9_$]*$/u;
3
2
  const SAFE_ROUTE_NAME = /^[A-Za-z0-9_.()[\]-]+$/u;
4
- const SAFE_MODULE = /^(?:@\/[A-Za-z0-9_./-]+|\.{1,2}\/[A-Za-z0-9_./-]+|@?[A-Za-z0-9][A-Za-z0-9._-]*(?:\/[A-Za-z0-9._-]+)*)$/u;
5
- function assertModuleBinding(binding, description) {
6
- if (!SAFE_MODULE.test(binding.module) ||
7
- binding.module.includes('\\') ||
8
- binding.module.split('/').slice(1).includes('..')) {
9
- throw new Error(`${description} has an unsafe module specifier.`);
10
- }
11
- if (!SAFE_EXPORT_NAME.test(binding.exportName)) {
12
- throw new Error(`${description} has an invalid exported symbol.`);
13
- }
14
- }
15
- function quote(value) {
16
- return JSON.stringify(value);
17
- }
3
+ import { generateTabsLayoutFile } from './generateTabsLayoutFile';
4
+ import { assertModuleBinding, quote } from './generationSafety';
18
5
  function assertRouteName(name) {
19
6
  if (!SAFE_ROUTE_NAME.test(name) || name === '.' || name === '..') {
20
7
  throw new Error(`Route name ${JSON.stringify(name)} is not a safe generated file segment.`);
@@ -91,6 +78,9 @@ function createLayoutFile(node, directory, bindings) {
91
78
  node.adapter.exportName === undefined) {
92
79
  throw new Error(`Cannot generate unavailable navigator adapter ${JSON.stringify(node.adapter.id)} at ${node.pointer || '/'}.`);
93
80
  }
81
+ const tabsLayout = generateTabsLayoutFile(node, directory, bindings);
82
+ if (tabsLayout !== undefined)
83
+ return tabsLayout;
94
84
  const componentName = node.adapter.exportName;
95
85
  assertModuleBinding({ module: node.adapter.module, exportName: componentName }, `Adapter ${JSON.stringify(node.adapter.id)}`);
96
86
  const guardAliases = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"generateNavigatorFiles.js","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateNavigatorFiles.js","sourceRoot":"","sources":["../../src/generation/generateNavigatorFiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { NavigatorGeneratedFile, NavigatorGenerationBindings, NavigatorNodePlan } from '../definitions/NavigatorPlan';
2
+ /*** Generate the specialized layout file for a supported tabs implementation. */
3
+ export declare function generateTabsLayoutFile(node: NavigatorNodePlan, directory: string, bindings: NavigatorGenerationBindings): NavigatorGeneratedFile | undefined;
4
+ //# sourceMappingURL=generateTabsLayoutFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateTabsLayoutFile.d.ts","sourceRoot":"","sources":["../../src/generation/generateTabsLayoutFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EAGlB,MAAM,8BAA8B,CAAC;AAoKtC,iFAAiF;AACjF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,2BAA2B,GACpC,sBAAsB,GAAG,SAAS,CASpC"}
@@ -0,0 +1,137 @@
1
+ import { assertModuleBinding, quote } from './generationSafety';
2
+ /*** Resolve and validate the native vector-icon provider for one planned route icon. */
3
+ function nativeIconProvider(icon) {
4
+ if (icon === undefined || 'source' in icon) {
5
+ throw new Error('Native Tabs require a supported named icon.');
6
+ }
7
+ const provider = icon.provider ?? 'Ionicons';
8
+ switch (provider) {
9
+ case 'FontAwesome':
10
+ case 'FontAwesome5':
11
+ case 'FontAwesome6':
12
+ case 'Ionicons':
13
+ case 'MaterialDesignIcons':
14
+ return provider;
15
+ default:
16
+ throw new Error(`Native Tabs icon provider ${JSON.stringify(provider)} is unsupported.`);
17
+ }
18
+ }
19
+ /*** Read the required native vector-icon name from one planned route icon. */
20
+ function nativeIconName(icon) {
21
+ if (icon === undefined || 'source' in icon) {
22
+ throw new Error('Native Tabs require a supported named icon.');
23
+ }
24
+ return icon.name;
25
+ }
26
+ /*** Map a supported provider to the Navigator-owned Native Tabs family export. */
27
+ function nativeIconFamily(provider) {
28
+ switch (provider) {
29
+ case 'FontAwesome':
30
+ return 'NativeFontAwesomeFamily';
31
+ case 'FontAwesome5':
32
+ return 'NativeFontAwesome5Family';
33
+ case 'FontAwesome6':
34
+ return 'NativeFontAwesome6Family';
35
+ case 'Ionicons':
36
+ return 'NativeIoniconsFamily';
37
+ case 'MaterialDesignIcons':
38
+ return 'NativeMaterialDesignIconsFamily';
39
+ }
40
+ }
41
+ /*** Render a complete Native Tabs layout module from one validated node plan. */
42
+ function createNativeTabsContents(node, componentName, imports, accessoryName) {
43
+ const initialRoute = node.initialRouteName === undefined
44
+ ? ''
45
+ : `\n\nexport const unstable_settings = { initialRouteName: ${quote(node.initialRouteName)} };`;
46
+ const minimize = node.tabs?.minimizeBehavior === undefined
47
+ ? ''
48
+ : ` minimizeBehavior=${quote(node.tabs.minimizeBehavior)}`;
49
+ const triggers = node.routes
50
+ .map((route) => {
51
+ const label = route.label ?? route.name;
52
+ const icon = route.icon === undefined
53
+ ? ''
54
+ : `\n <${componentName}.Trigger.Icon src={<${componentName}.Trigger.VectorIcon family={${nativeIconFamily(nativeIconProvider(route.icon))}} name=${quote(nativeIconName(route.icon))} />} />`;
55
+ return ` <${componentName}.Trigger name=${quote(route.name)}>\n <${componentName}.Trigger.Label>{${quote(label)}}</${componentName}.Trigger.Label>${icon}\n </${componentName}.Trigger>`;
56
+ })
57
+ .join('\n');
58
+ const accessory = accessoryName === undefined
59
+ ? ''
60
+ : `\n <${componentName}.BottomAccessory>\n <${accessoryName} />\n </${componentName}.BottomAccessory>`;
61
+ return `${imports}${initialRoute}\n\nexport default function NavigatorLayout() {\n return (\n <${componentName}${minimize}>\n${triggers}${accessory}\n </${componentName}>\n );\n}\n`;
62
+ }
63
+ /*** Create the generated Native Tabs layout file and its narrow runtime imports. */
64
+ function createNativeTabsFile(node, directory, bindings) {
65
+ const componentName = node.adapter.exportName ?? 'NativeTabs';
66
+ const imports = [`import { ${componentName} } from ${quote(node.adapter.module ?? '')};`];
67
+ const iconFamilies = [
68
+ ...new Set(node.routes.flatMap((route) => route.icon === undefined ? [] : [nativeIconFamily(nativeIconProvider(route.icon))])),
69
+ ].sort();
70
+ if (iconFamilies.length > 0) {
71
+ imports.push(`import { ${iconFamilies.join(', ')} } from "@ankhorage/navigator/tabs/native-icons";`);
72
+ }
73
+ let accessoryName;
74
+ if (node.tabs?.bottomAccessoryScreenId !== undefined) {
75
+ const binding = Reflect.get(bindings.screens, node.tabs.bottomAccessoryScreenId);
76
+ if (binding === undefined)
77
+ throw new Error('Missing Native Tabs bottom-accessory binding.');
78
+ assertModuleBinding(binding, 'Native Tabs bottom accessory');
79
+ accessoryName = 'NavigatorBottomAccessory';
80
+ imports.push(`import { ${binding.exportName} as ${accessoryName} } from ${quote(binding.module)};`);
81
+ }
82
+ return {
83
+ path: `${directory}/_layout.tsx`,
84
+ contents: createNativeTabsContents(node, componentName, imports.join('\n'), accessoryName),
85
+ };
86
+ }
87
+ /*** Create the generated Web custom-tabs layout file and registered integration imports. */
88
+ function createCustomTabsFile(node, directory, bindings) {
89
+ const { tabs } = node;
90
+ if (tabs?.presentations === undefined) {
91
+ throw new Error('Custom Tabs planning did not preserve responsive presentations.');
92
+ }
93
+ const imports = ['import { CustomTabsLayout } from "@ankhorage/navigator/tabs";'];
94
+ let customPresentation = '';
95
+ let iconSourceResolver = '';
96
+ if (tabs.customPresentationId !== undefined) {
97
+ const binding = Reflect.get(bindings.tabPresentations ?? {}, tabs.customPresentationId);
98
+ if (binding === undefined)
99
+ throw new Error('Missing registered custom Tabs presentation.');
100
+ assertModuleBinding(binding, 'Custom Tabs presentation');
101
+ customPresentation = ' customPresentation={NavigatorCustomTabsPresentation}';
102
+ imports.push(`import { ${binding.exportName} as NavigatorCustomTabsPresentation } from ${quote(binding.module)};`);
103
+ }
104
+ if (node.routes.some((route) => route.icon !== undefined && 'source' in route.icon)) {
105
+ const binding = bindings.iconSourceResolver;
106
+ if (binding === undefined)
107
+ throw new Error('Missing registered Tabs icon-source resolver.');
108
+ assertModuleBinding(binding, 'Tabs icon-source resolver');
109
+ iconSourceResolver = ' resolveIconSource={NavigatorResolveTabsIconSource}';
110
+ imports.push(`import { ${binding.exportName} as NavigatorResolveTabsIconSource } from ${quote(binding.module)};`);
111
+ }
112
+ const routes = node.routes.map((route) => ({
113
+ name: route.name,
114
+ href: route.path,
115
+ label: route.label ?? route.name,
116
+ ...(route.icon === undefined ? {} : { icon: route.icon }),
117
+ visible: route.showInPrimaryNavigation !== false,
118
+ }));
119
+ const initialRoute = node.initialRouteName === undefined ? '' : ` initialRouteName=${quote(node.initialRouteName)}`;
120
+ return {
121
+ path: `${directory}/_layout.tsx`,
122
+ contents: `${imports.join('\n')}\n\nconst routes = ${JSON.stringify(routes)} as const;\nconst presentations = ${JSON.stringify(tabs.presentations)} as const;\n\nexport default function NavigatorLayout() {\n return <CustomTabsLayout${customPresentation}${initialRoute} presentations={presentations}${iconSourceResolver} routes={routes} />;\n}\n`,
123
+ };
124
+ }
125
+ /*** Generate the specialized layout file for a supported tabs implementation. */
126
+ export function generateTabsLayoutFile(node, directory, bindings) {
127
+ if (node.type !== 'tabs')
128
+ return undefined;
129
+ if (node.tabs?.implementation === 'native') {
130
+ return createNativeTabsFile(node, directory, bindings);
131
+ }
132
+ if (node.tabs?.implementation === 'custom') {
133
+ return createCustomTabsFile(node, directory, bindings);
134
+ }
135
+ return undefined;
136
+ }
137
+ //# sourceMappingURL=generateTabsLayoutFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateTabsLayoutFile.js","sourceRoot":"","sources":["../../src/generation/generateTabsLayoutFile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { NavigatorScreenModule } from '../definitions/NavigatorPlan';
2
+ /*** Reject module and export bindings that cannot be emitted as safe static imports. */
3
+ export declare function assertModuleBinding(binding: NavigatorScreenModule, description: string): void;
4
+ /*** Serialize a generated string literal with JSON escaping. */
5
+ export declare function quote(value: string): string;
6
+ //# sourceMappingURL=generationSafety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generationSafety.d.ts","sourceRoot":"","sources":["../../src/generation/generationSafety.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAM1E,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAW7F;AAED,gEAAgE;AAChE,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C"}
@@ -0,0 +1,18 @@
1
+ const SAFE_EXPORT_NAME = /^[A-Za-z_$][A-Za-z0-9_$]*$/u;
2
+ const SAFE_MODULE = /^(?:@\/[A-Za-z0-9_./-]+|\.{1,2}\/[A-Za-z0-9_./-]+|@?[A-Za-z0-9][A-Za-z0-9._-]*(?:\/[A-Za-z0-9._-]+)*)$/u;
3
+ /*** Reject module and export bindings that cannot be emitted as safe static imports. */
4
+ export function assertModuleBinding(binding, description) {
5
+ if (!SAFE_MODULE.test(binding.module) ||
6
+ binding.module.includes('\\') ||
7
+ binding.module.split('/').slice(1).includes('..')) {
8
+ throw new Error(`${description} has an unsafe module specifier.`);
9
+ }
10
+ if (!SAFE_EXPORT_NAME.test(binding.exportName)) {
11
+ throw new Error(`${description} has an invalid exported symbol.`);
12
+ }
13
+ }
14
+ /*** Serialize a generated string literal with JSON escaping. */
15
+ export function quote(value) {
16
+ return JSON.stringify(value);
17
+ }
18
+ //# sourceMappingURL=generationSafety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generationSafety.js","sourceRoot":"","sources":["../../src/generation/generationSafety.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AACvD,MAAM,WAAW,GACf,yGAAyG,CAAC;AAE5G,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,OAA8B,EAAE,WAAmB;IACrF,IACE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EACjD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,kCAAkC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,kCAAkC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
@@ -30,7 +30,20 @@ export declare const NAVIGATOR_PACKAGE_METADATA: {
30
30
  };
31
31
  readonly optionalAdapters: {
32
32
  readonly tabs: {
33
- readonly support: "unavailable";
33
+ readonly support: "supported";
34
+ readonly native: {
35
+ readonly platforms: readonly ["android", "ios"];
36
+ readonly stability: "alpha";
37
+ };
38
+ readonly javascript: {
39
+ readonly platforms: readonly ["android", "ios", "web"];
40
+ readonly stability: "stable";
41
+ };
42
+ readonly custom: {
43
+ readonly platforms: readonly ["web"];
44
+ readonly stability: "stable";
45
+ readonly presentationOwner: "@ankhorage/surface";
46
+ };
34
47
  };
35
48
  readonly experimentalStack: {
36
49
  readonly support: "unavailable";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8C7B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmD7B,CAAC"}
@@ -18,7 +18,12 @@ export const NAVIGATOR_PACKAGE_METADATA = {
18
18
  drawer: { support: 'supported', stability: 'stable', module: 'expo-router/drawer' },
19
19
  },
20
20
  optionalAdapters: {
21
- tabs: { support: 'unavailable' },
21
+ tabs: {
22
+ support: 'supported',
23
+ native: { platforms: ['android', 'ios'], stability: 'alpha' },
24
+ javascript: { platforms: ['android', 'ios', 'web'], stability: 'stable' },
25
+ custom: { platforms: ['web'], stability: 'stable', presentationOwner: '@ankhorage/surface' },
26
+ },
22
27
  experimentalStack: { support: 'unavailable', stability: 'alpha' },
23
28
  splitView: { support: 'unavailable', stability: 'alpha' },
24
29
  custom: { support: 'unavailable' },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,iBAAiB,EACjB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAExC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,WAAW,EAAE,sBAAsB;IACnC,gBAAgB,EAAE,WAAW;IAC7B,eAAe,EAAE,gCAAgC;IACjD,cAAc,EAAE,eAAe;IAC/B,OAAO,EAAE,iBAAiB;IAC1B,UAAU,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;IAC7F,YAAY,EAAE;QACZ,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QAC1E,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QACjF,eAAe,EAAE;YACf,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,sBAAsB;YAC9B,wBAAwB,EAAE,QAAQ;SACnC;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE;KACpF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;QAChC,iBAAiB,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE;QACjE,SAAS,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE;QACzD,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;KACnC;IACD,IAAI,EAAE;QACJ,eAAe,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC/D,mBAAmB,EAAE,yBAAyB;QAC9C,wBAAwB,EAAE,+BAA+B;QACzD,eAAe,EAAE;YACf,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,QAAQ;YACb,aAAa,EAAE;gBACb,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,SAAS;aACpB;SACF;QACD,UAAU,EAAE;YACV,gBAAgB,EAAE,qBAAqB;YACvC,aAAa,EAAE,yBAAyB;YACxC,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,kCAAkC;YAC1C,eAAe,EAAE,OAAO;SACzB;KACF;CACO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,iBAAiB,EACjB,eAAe,GAChB,MAAM,gCAAgC,CAAC;AAExC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,WAAW,EAAE,sBAAsB;IACnC,gBAAgB,EAAE,WAAW;IAC7B,eAAe,EAAE,gCAAgC;IACjD,cAAc,EAAE,eAAe;IAC/B,OAAO,EAAE,iBAAiB;IAC1B,UAAU,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;IAC7F,YAAY,EAAE;QACZ,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QAC1E,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QACjF,eAAe,EAAE;YACf,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,sBAAsB;YAC9B,wBAAwB,EAAE,QAAQ;SACnC;QACD,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE;KACpF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE;YACJ,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE;YAC7D,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;YACzE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,oBAAoB,EAAE;SAC7F;QACD,iBAAiB,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE;QACjE,SAAS,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE;QACzD,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;KACnC;IACD,IAAI,EAAE;QACJ,eAAe,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC/D,mBAAmB,EAAE,yBAAyB;QAC9C,wBAAwB,EAAE,+BAA+B;QACzD,eAAe,EAAE;YACf,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,QAAQ;YACb,GAAG,EAAE,QAAQ;YACb,aAAa,EAAE;gBACb,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,SAAS;aACpB;SACF;QACD,UAAU,EAAE;YACV,gBAAgB,EAAE,qBAAqB;YACvC,aAAa,EAAE,yBAAyB;YACxC,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,kCAAkC;YAC1C,eAAe,EAAE,OAAO;SACzB;KACF;CACO,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { RouteDefinition } from '@ankhorage/contracts/navigator';
2
+ import { type NavigationItemIcon } from '@ankhorage/surface';
3
+ import { type ComponentType, type ReactNode } from 'react';
4
+ import type { NavigatorResponsiveSize, ResolvedTabsPresentation } from '../definitions/NavigatorPlan';
5
+ /** One explicit Expo Router tab registration plus optional Surface-owned presentation metadata. */
6
+ export interface CustomTabsRoute {
7
+ name: string;
8
+ href: string;
9
+ label: string;
10
+ icon?: RouteDefinition['icon'];
11
+ badge?: ReactNode;
12
+ visible: boolean;
13
+ }
14
+ export interface CustomTabsPresentationProps {
15
+ routes: readonly CustomTabsRoute[];
16
+ renderItem: (route: CustomTabsRoute, compact?: boolean) => ReactNode;
17
+ }
18
+ type IconMediaReference = Extract<NonNullable<RouteDefinition['icon']>, {
19
+ source: unknown;
20
+ }>['source'];
21
+ type ResolvedSvgSource = Extract<NavigationItemIcon, {
22
+ source: unknown;
23
+ }>['source'];
24
+ export type CustomTabsIconSourceResolver = (source: IconMediaReference) => ResolvedSvgSource;
25
+ /**
26
+ * Runtime inputs for the Web custom-tabs adapter. Routes remain mounted in one headless Router
27
+ * topology while Surface selects bottom, top, rail, sidebar, or registered custom chrome.
28
+ */
29
+ export interface CustomTabsLayoutProps {
30
+ routes: readonly CustomTabsRoute[];
31
+ presentations: Readonly<Record<NavigatorResponsiveSize, ResolvedTabsPresentation>>;
32
+ initialRouteName?: string;
33
+ resolveIconSource?: CustomTabsIconSourceResolver;
34
+ customPresentation?: ComponentType<CustomTabsPresentationProps>;
35
+ }
36
+ /*** Render one stable headless Expo Router tab topology with Surface-owned presentations. */
37
+ export declare function CustomTabsLayout({ routes, presentations, initialRouteName, resolveIconSource, customPresentation: CustomPresentation, }: CustomTabsLayoutProps): import("react").JSX.Element;
38
+ export {};
39
+ //# sourceMappingURL=CustomTabsLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomTabsLayout.d.ts","sourceRoot":"","sources":["../../src/tabs/CustomTabsLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAEL,KAAK,kBAAkB,EAIxB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAIjF,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AAEtC,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,SAAS,CAAC;CACtE;AAED,KAAK,kBAAkB,GAAG,OAAO,CAC/B,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EACpC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CACpB,CAAC,QAAQ,CAAC,CAAC;AACZ,KAAK,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpF,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,kBAAkB,KAAK,iBAAiB,CAAC;AAE7F;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,4BAA4B,CAAC;IACjD,kBAAkB,CAAC,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;CACjE;AAqKD,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAAE,kBAAkB,GACvC,EAAE,qBAAqB,+BAyCvB"}
@@ -0,0 +1,122 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { NavigationItem, TabBarItem, useBreakpoint, } from '@ankhorage/surface';
3
+ import { TabList, Tabs, TabSlot, TabTrigger, useTabTrigger } from 'expo-router/ui';
4
+ import { useSyncExternalStore } from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
7
+ const ICON_PROVIDERS = new Set([
8
+ 'Ionicons',
9
+ 'FontAwesome',
10
+ 'FontAwesome5',
11
+ 'FontAwesome6',
12
+ 'MaterialDesignIcons',
13
+ ]);
14
+ /*** Convert portable route icon metadata to the Surface navigation icon contract. */
15
+ function resolveIcon(icon, resolveIconSource) {
16
+ if (icon === undefined)
17
+ return undefined;
18
+ if ('source' in icon) {
19
+ return resolveIconSource === undefined || icon.source === undefined
20
+ ? undefined
21
+ : { source: resolveIconSource(icon.source) };
22
+ }
23
+ const provider = icon.provider ?? 'Ionicons';
24
+ if (!ICON_PROVIDERS.has(provider))
25
+ return undefined;
26
+ const variant = provider === 'FontAwesome5' || provider === 'FontAwesome6' ? 'regular' : undefined;
27
+ return { name: icon.name, provider, variant };
28
+ }
29
+ /*** Render one Surface navigation control bound to Expo Router's headless tab trigger. */
30
+ function SurfaceTabTrigger({ route, presentation, compact, resolveIconSource, }) {
31
+ const { switchTab, trigger } = useTabTrigger({ name: route.name });
32
+ const item = {
33
+ id: route.name,
34
+ label: route.label,
35
+ active: trigger?.isFocused ?? false,
36
+ onPress: () => switchTab(route.name, {}),
37
+ accessibilityLabel: route.label,
38
+ accessibilityRole: 'tab',
39
+ icon: resolveIcon(route.icon, resolveIconSource),
40
+ badge: route.badge,
41
+ };
42
+ return presentation === 'horizontal' ? (_jsx(TabBarItem, { compact: compact, item: item, testID: "navigator-tabs" })) : (_jsx(NavigationItem, { compact: compact, item: item, testID: "navigator-tabs" }));
43
+ }
44
+ /*** Resolve a hydration-safe semantic size from the Surface breakpoint owner. */
45
+ function useHydrationSafeSize() {
46
+ const breakpoint = useBreakpoint();
47
+ const hydrated = useSyncExternalStore(subscribeToHydration, getClientHydration, getServerHydration);
48
+ if (!hydrated)
49
+ return 'compact';
50
+ if (breakpoint === 'base' || breakpoint === 'sm')
51
+ return 'compact';
52
+ return breakpoint === 'md' ? 'medium' : 'expanded';
53
+ }
54
+ /*** Provide the stable no-op subscription required for the hydration snapshot boundary. */
55
+ function subscribeToHydration() {
56
+ return () => undefined;
57
+ }
58
+ /*** Report that client rendering can consume the live responsive breakpoint. */
59
+ function getClientHydration() {
60
+ return true;
61
+ }
62
+ /*** Keep server output deterministic at the compact presentation. */
63
+ function getServerHydration() {
64
+ return false;
65
+ }
66
+ /*** Select one fixed presentation without altering the Router-owned topology. */
67
+ function selectPresentation(presentations, size) {
68
+ switch (size) {
69
+ case 'compact':
70
+ return presentations.compact;
71
+ case 'medium':
72
+ return presentations.medium;
73
+ case 'expanded':
74
+ return presentations.expanded;
75
+ }
76
+ }
77
+ /*** Render Surface-owned bottom, top, rail, or sidebar tab chrome. */
78
+ function BuiltInPresentation({ presentation, routes, resolveIconSource, }) {
79
+ const horizontal = presentation === 'bottom' || presentation === 'top';
80
+ const compact = presentation === 'rail';
81
+ const style = horizontal ? styles.horizontalNavigation : styles.verticalNavigation;
82
+ return (_jsx(View, { accessibilityRole: "tablist", style: style, testID: `navigator-tabs-${presentation}`, children: routes.map((route) => (_jsx(SurfaceTabTrigger, { compact: compact, presentation: horizontal ? 'horizontal' : 'vertical', resolveIconSource: resolveIconSource, route: route }, route.name))) }));
83
+ }
84
+ /*** Select built-in or registered custom chrome for the currently visible routes. */
85
+ function TabsNavigation({ CustomPresentation, presentation, resolveIconSource, routes, }) {
86
+ const visibleRoutes = routes.filter((route) => route.visible);
87
+ const renderItem = (route, compact = false) => (_jsx(SurfaceTabTrigger, { compact: compact, presentation: "vertical", resolveIconSource: resolveIconSource, route: route }, route.name));
88
+ if (presentation === 'custom') {
89
+ return CustomPresentation === undefined ? null : (_jsx(CustomPresentation, { renderItem: renderItem, routes: visibleRoutes }));
90
+ }
91
+ return (_jsx(BuiltInPresentation, { presentation: presentation, resolveIconSource: resolveIconSource, routes: visibleRoutes }));
92
+ }
93
+ /*** Render one stable headless Expo Router tab topology with Surface-owned presentations. */
94
+ export function CustomTabsLayout({ routes, presentations, initialRouteName, resolveIconSource, customPresentation: CustomPresentation, }) {
95
+ const size = useHydrationSafeSize();
96
+ const presentation = selectPresentation(presentations, size);
97
+ const insets = useSafeAreaInsets();
98
+ const navigation = (_jsx(TabsNavigation, { CustomPresentation: CustomPresentation, presentation: presentation, resolveIconSource: resolveIconSource, routes: routes }));
99
+ const vertical = presentation === 'rail' || presentation === 'sidebar';
100
+ const navigationFirst = vertical || presentation === 'top' || presentation === 'custom';
101
+ const navigationInsets = presentation === 'top'
102
+ ? { paddingTop: insets.top }
103
+ : vertical
104
+ ? { paddingLeft: insets.left, paddingRight: insets.right }
105
+ : undefined;
106
+ const layoutStyle = vertical ? styles.row : styles.column;
107
+ const bottomNavigationStyle = StyleSheet.compose(styles.bottomNavigation, {
108
+ paddingBottom: insets.bottom,
109
+ });
110
+ return (_jsxs(Tabs, { options: { initialRouteName }, style: styles.root, children: [_jsxs(View, { style: layoutStyle, children: [navigationFirst ? _jsx(View, { style: navigationInsets, children: navigation }) : null, _jsx(View, { style: styles.screen, children: _jsx(TabSlot, {}) }), !navigationFirst ? _jsx(View, { style: bottomNavigationStyle, children: navigation }) : null] }), _jsx(TabList, { style: styles.hidden, children: routes.map((route) => (_jsx(TabTrigger, { href: route.href, name: route.name }, route.name))) })] }));
111
+ }
112
+ const styles = StyleSheet.create({
113
+ bottomNavigation: {},
114
+ column: { flex: 1, flexDirection: 'column' },
115
+ hidden: { display: 'none' },
116
+ horizontalNavigation: { flexDirection: 'row' },
117
+ root: { flex: 1 },
118
+ row: { flex: 1, flexDirection: 'row' },
119
+ screen: { flex: 1 },
120
+ verticalNavigation: { flexDirection: 'column' },
121
+ });
122
+ //# sourceMappingURL=CustomTabsLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomTabsLayout.js","sourceRoot":"","sources":["../../src/tabs/CustomTabsLayout.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { CustomTabsIconSourceResolver, CustomTabsLayoutProps, CustomTabsPresentationProps, CustomTabsRoute, } from './CustomTabsLayout';
2
+ export { CustomTabsLayout } from './CustomTabsLayout';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tabs/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { CustomTabsLayout } from './CustomTabsLayout';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tabs/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ColorValue, ImageSourcePropType } from 'react-native';
2
+ interface NativeVectorIconFamily {
3
+ getImageSource(name: string, size: number, color: ColorValue): Promise<ImageSourcePropType | null>;
4
+ }
5
+ /*** Ionicons-compatible Font Awesome family adapter for Expo Native Tabs. */
6
+ export declare const NativeFontAwesomeFamily: NativeVectorIconFamily;
7
+ /*** Ionicons family adapter for Expo Native Tabs. */
8
+ export declare const NativeIoniconsFamily: NativeVectorIconFamily;
9
+ /*** Material Design Icons family adapter for Expo Native Tabs. */
10
+ export declare const NativeMaterialDesignIconsFamily: NativeVectorIconFamily;
11
+ /*** Regular-style Font Awesome 5 family adapter for Expo Native Tabs. */
12
+ export declare const NativeFontAwesome5Family: NativeVectorIconFamily;
13
+ /*** Regular-style Font Awesome 6 family adapter for Expo Native Tabs. */
14
+ export declare const NativeFontAwesome6Family: NativeVectorIconFamily;
15
+ export {};
16
+ //# sourceMappingURL=nativeIconFamilies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeIconFamilies.d.ts","sourceRoot":"","sources":["../../src/tabs/nativeIconFamilies.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEpE,UAAU,sBAAsB;IAC9B,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;CACxC;AAED,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,EAA6B,sBAAsB,CAAC;AACxF,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,EAA0B,sBAAsB,CAAC;AAClF,kEAAkE;AAClE,eAAO,MAAM,+BAA+B,EACR,sBAAsB,CAAC;AAE3D,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,EAAE,sBAItC,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,EAAE,sBAQtC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { FontAwesome } from '@react-native-vector-icons/fontawesome/static';
2
+ import { FontAwesome5, } from '@react-native-vector-icons/fontawesome5/static';
3
+ import { FontAwesome6, } from '@react-native-vector-icons/fontawesome6/static';
4
+ import { Ionicons } from '@react-native-vector-icons/ionicons/static';
5
+ import { MaterialDesignIcons } from '@react-native-vector-icons/material-design-icons/static';
6
+ /*** Ionicons-compatible Font Awesome family adapter for Expo Native Tabs. */
7
+ export const NativeFontAwesomeFamily = FontAwesome;
8
+ /*** Ionicons family adapter for Expo Native Tabs. */
9
+ export const NativeIoniconsFamily = Ionicons;
10
+ /*** Material Design Icons family adapter for Expo Native Tabs. */
11
+ export const NativeMaterialDesignIconsFamily = MaterialDesignIcons;
12
+ /*** Regular-style Font Awesome 5 family adapter for Expo Native Tabs. */
13
+ export const NativeFontAwesome5Family = {
14
+ getImageSource(name, size, color) {
15
+ return FontAwesome5.getImageSource('regular', name, size, color);
16
+ },
17
+ };
18
+ /*** Regular-style Font Awesome 6 family adapter for Expo Native Tabs. */
19
+ export const NativeFontAwesome6Family = {
20
+ getImageSource(name, size, color) {
21
+ return FontAwesome6.getImageSource('regular', name, size, color);
22
+ },
23
+ };
24
+ //# sourceMappingURL=nativeIconFamilies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeIconFamilies.js","sourceRoot":"","sources":["../../src/tabs/nativeIconFamilies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAC5E,OAAO,EACL,YAAY,GAEb,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACL,YAAY,GAEb,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAW9F,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAgD,CAAC;AACxF,qDAAqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAA6C,CAAC;AAClF,kEAAkE;AAClE,MAAM,CAAC,MAAM,+BAA+B,GAC1C,mBAAwD,CAAC;AAE3D,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK;QAC9B,OAAO,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,IAAmC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClG,CAAC;CACF,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,cAAc,CACZ,IAAY,EACZ,IAAY,EACZ,KAAiB;QAEjB,OAAO,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,IAAmC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAClG,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateNavigatorManifest.d.ts","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAKrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAmRpG,qFAAqF;AACrF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,GAClC,SAAS,mBAAmB,EAAE,CAmBhC"}
1
+ {"version":3,"file":"validateNavigatorManifest.d.ts","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAIrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAqOpG,qFAAqF;AACrF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,0BAA0B,GAClC,SAAS,mBAAmB,EAAE,CAmBhC"}
@@ -1,5 +1,6 @@
1
- import { parseExpoRouterMajor, resolveEffectiveStackConfig, resolveEffectiveTabsConfig, } from '../expo-router/resolveNavigatorConfig';
1
+ import { parseExpoRouterMajor, resolveEffectiveStackConfig, } from '../expo-router/resolveNavigatorConfig';
2
2
  import { validatePresetTopology } from './validatePresetTopology';
3
+ import { addTabsAdapterDiagnostics } from './validateTabsNavigator';
3
4
  function addStackAdapterDiagnostics(diagnostics, manifest, node, pointer, context, routerMajor) {
4
5
  const config = resolveEffectiveStackConfig(manifest, node, context.platform);
5
6
  const implementation = config.implementation ?? 'native';
@@ -20,41 +21,6 @@ function addStackAdapterDiagnostics(diagnostics, manifest, node, pointer, contex
20
21
  });
21
22
  }
22
23
  }
23
- function addTabsAdapterDiagnostics(diagnostics, manifest, node, pointer, context, routerMajor) {
24
- const config = resolveEffectiveTabsConfig(manifest, node, context.platform);
25
- const implementation = config?.implementation ?? 'adaptive';
26
- const native = implementation === 'native' || (implementation === 'adaptive' && context.platform !== 'web');
27
- if (native && context.platform === 'web') {
28
- diagnostics.push({
29
- code: 'unsupported-platform',
30
- severity: 'error',
31
- path: pointer,
32
- message: 'Native Tabs are not available on web.',
33
- });
34
- }
35
- if (native && routerMajor !== undefined && routerMajor < 54) {
36
- diagnostics.push({
37
- code: 'unsupported-expo-router-version',
38
- severity: 'error',
39
- path: pointer,
40
- message: 'Native Tabs require Expo Router 54.0.0 or newer.',
41
- });
42
- }
43
- if (native) {
44
- diagnostics.push({
45
- code: 'alpha-adapter',
46
- severity: 'warning',
47
- path: pointer,
48
- message: 'Native Tabs are an alpha Expo Router API.',
49
- });
50
- }
51
- diagnostics.push({
52
- code: 'adapter-unavailable',
53
- severity: 'error',
54
- path: pointer,
55
- message: 'Tabs generation is owned by the optional Tabs adapter and is not available in the core release.',
56
- });
57
- }
58
24
  function addUnsupportedAdapterDiagnostics(diagnostics, manifest, node, pointer, context, routerMajor) {
59
25
  if (node.type === 'stack') {
60
26
  addStackAdapterDiagnostics(diagnostics, manifest, node, pointer, context, routerMajor);
@@ -1 +1 @@
1
- {"version":3,"file":"validateNavigatorManifest.js","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateNavigatorManifest.js","sourceRoot":"","sources":["../../src/validation/validateNavigatorManifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AppNavigatorManifest, TabsNavigatorNode } from '@ankhorage/contracts/navigator';
2
+ import type { NavigatorDiagnostic, NavigatorValidationContext } from '../definitions/NavigatorPlan';
3
+ /*** Add tabs-specific semantic diagnostics for one manifest navigator node. */
4
+ export declare function addTabsAdapterDiagnostics(diagnostics: NavigatorDiagnostic[], manifest: AppNavigatorManifest, node: TabsNavigatorNode, pointer: string, validationContext: NavigatorValidationContext, routerMajor: number | undefined): void;
5
+ //# sourceMappingURL=validateTabsNavigator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateTabsNavigator.d.ts","sourceRoot":"","sources":["../../src/validation/validateTabsNavigator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAE9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAsKpG,+EAA+E;AAC/E,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,mBAAmB,EAAE,EAClC,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,0BAA0B,EAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,IAAI,CAeN"}
@@ -0,0 +1,140 @@
1
+ import { resolveEffectiveTabsConfig } from '../expo-router/resolveNavigatorConfig';
2
+ const SURFACE_ICON_PROVIDERS = new Set([
3
+ 'Ionicons',
4
+ 'FontAwesome',
5
+ 'FontAwesome5',
6
+ 'FontAwesome6',
7
+ 'MaterialDesignIcons',
8
+ ]);
9
+ /*** Add platform and stability diagnostics for the resolved tabs implementation. */
10
+ function addTabsPlatformDiagnostics(diagnostics, pointer, context, routerMajor) {
11
+ if (context.native && context.platform === 'web') {
12
+ diagnostics.push({
13
+ code: 'unsupported-platform',
14
+ severity: 'error',
15
+ path: pointer,
16
+ message: 'Native Tabs are not available on web.',
17
+ });
18
+ }
19
+ if (context.native && routerMajor !== undefined && routerMajor < 54) {
20
+ diagnostics.push({
21
+ code: 'unsupported-expo-router-version',
22
+ severity: 'error',
23
+ path: pointer,
24
+ message: 'Native Tabs require Expo Router 54.0.0 or newer.',
25
+ });
26
+ }
27
+ if (context.native) {
28
+ diagnostics.push({
29
+ code: 'alpha-adapter',
30
+ severity: 'warning',
31
+ path: pointer,
32
+ message: 'Native Tabs are an alpha Expo Router API.',
33
+ });
34
+ }
35
+ if (context.custom && context.platform !== 'web') {
36
+ diagnostics.push({
37
+ code: 'unsupported-platform',
38
+ severity: 'error',
39
+ path: pointer,
40
+ message: 'Surface custom Tabs are only available on web.',
41
+ });
42
+ }
43
+ }
44
+ /*** Validate route icon compatibility for native and Surface-backed tabs. */
45
+ function addTabsIconDiagnostics(diagnostics, route, routePointer, context) {
46
+ if (context.native && route.icon !== undefined && 'source' in route.icon) {
47
+ diagnostics.push({
48
+ code: 'unsupported-native-tabs-icon-source',
49
+ severity: 'error',
50
+ path: `${routePointer}/icon/source`,
51
+ message: 'Expo Native Tabs cannot render arbitrary SVG sources; use a named icon or platform-native image asset.',
52
+ });
53
+ }
54
+ if (route.icon !== undefined &&
55
+ 'name' in route.icon &&
56
+ route.icon.provider !== undefined &&
57
+ (context.native || context.custom) &&
58
+ !SURFACE_ICON_PROVIDERS.has(route.icon.provider)) {
59
+ diagnostics.push({
60
+ code: 'unsupported-tabs-icon-provider',
61
+ severity: 'error',
62
+ path: `${routePointer}/icon/provider`,
63
+ message: `Tabs do not support the icon provider ${JSON.stringify(route.icon.provider)}.`,
64
+ });
65
+ }
66
+ }
67
+ /*** Validate route reachability, guards, paths, counts, and icons for tabs. */
68
+ function addTabsRouteDiagnostics(diagnostics, node, pointer, context) {
69
+ if (context.native && context.platform === 'android' && node.routes.length > 5) {
70
+ diagnostics.push({
71
+ code: 'native-tabs-route-limit',
72
+ severity: 'error',
73
+ path: `${pointer}/routes`,
74
+ message: 'Android Native Tabs support at most five visible routes.',
75
+ });
76
+ }
77
+ for (const [index, route] of node.routes.entries()) {
78
+ const routePointer = `${pointer}/routes/${index}`;
79
+ if (context.native && route.showInPrimaryNavigation === false) {
80
+ diagnostics.push({
81
+ code: 'native-tabs-hidden-route',
82
+ severity: 'error',
83
+ path: `${routePointer}/showInPrimaryNavigation`,
84
+ message: 'Hiding a Native Tabs trigger makes the route unreachable; use an owning stack.',
85
+ });
86
+ }
87
+ if ((context.native || context.custom) && (route.guards ?? []).length > 0) {
88
+ diagnostics.push({
89
+ code: 'unsupported-tabs-guard',
90
+ severity: 'error',
91
+ path: `${routePointer}/guards`,
92
+ message: 'This Tabs implementation cannot register protected Screen entries.',
93
+ });
94
+ }
95
+ if (context.custom && route.path === undefined) {
96
+ diagnostics.push({
97
+ code: 'missing-tabs-path',
98
+ severity: 'error',
99
+ path: `${routePointer}/path`,
100
+ message: 'Headless custom Tabs require an explicit route path; Navigator never infers URLs.',
101
+ });
102
+ }
103
+ addTabsIconDiagnostics(diagnostics, route, routePointer, context);
104
+ }
105
+ }
106
+ /*** Gate newer Native Tabs options on the Expo Router version that supports them. */
107
+ function addNativeVersionDiagnostics(diagnostics, config, pointer, native, routerMajor) {
108
+ const nativeConfig = config?.implementation === 'native'
109
+ ? config
110
+ : config?.implementation === undefined || config.implementation === 'adaptive'
111
+ ? config?.native
112
+ : undefined;
113
+ if (native &&
114
+ routerMajor !== undefined &&
115
+ routerMajor < 55 &&
116
+ (nativeConfig?.minimizeBehavior !== undefined || nativeConfig?.bottomAccessory !== undefined)) {
117
+ diagnostics.push({
118
+ code: 'unsupported-expo-router-version',
119
+ severity: 'error',
120
+ path: pointer,
121
+ message: 'Native Tabs minimize behavior and bottom accessory require Expo Router 55 or newer.',
122
+ });
123
+ }
124
+ }
125
+ /*** Add tabs-specific semantic diagnostics for one manifest navigator node. */
126
+ export function addTabsAdapterDiagnostics(diagnostics, manifest, node, pointer, validationContext, routerMajor) {
127
+ const config = resolveEffectiveTabsConfig(manifest, node, validationContext.platform);
128
+ const implementation = config?.implementation ?? 'adaptive';
129
+ const context = {
130
+ native: implementation === 'native' ||
131
+ (implementation === 'adaptive' && validationContext.platform !== 'web'),
132
+ custom: implementation === 'custom' ||
133
+ (implementation === 'adaptive' && validationContext.platform === 'web'),
134
+ platform: validationContext.platform,
135
+ };
136
+ addTabsPlatformDiagnostics(diagnostics, pointer, context, routerMajor);
137
+ addTabsRouteDiagnostics(diagnostics, node, pointer, context);
138
+ addNativeVersionDiagnostics(diagnostics, config, pointer, context.native, routerMajor);
139
+ }
140
+ //# sourceMappingURL=validateTabsNavigator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateTabsNavigator.js","sourceRoot":"","sources":["../../src/validation/validateTabsNavigator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/navigator",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Standalone manifest-driven navigator capability for Expo Router across React Native and React Native Web.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -43,6 +43,14 @@
43
43
  "types": "./dist/metadata/index.d.ts",
44
44
  "default": "./dist/metadata/index.js"
45
45
  },
46
+ "./tabs": {
47
+ "types": "./dist/tabs/index.d.ts",
48
+ "default": "./dist/tabs/index.js"
49
+ },
50
+ "./tabs/native-icons": {
51
+ "types": "./dist/tabs/nativeIconFamilies.d.ts",
52
+ "default": "./dist/tabs/nativeIconFamilies.js"
53
+ },
46
54
  "./package.json": "./package.json"
47
55
  },
48
56
  "publishConfig": {
@@ -65,11 +73,36 @@
65
73
  "dependencies": {
66
74
  "@ankhorage/contracts": "^11.0.0"
67
75
  },
76
+ "peerDependencies": {
77
+ "@ankhorage/surface": "^3.4.1",
78
+ "@react-native-vector-icons/fontawesome": "^13.1.3",
79
+ "@react-native-vector-icons/fontawesome5": "^13.1.3",
80
+ "@react-native-vector-icons/fontawesome6": "^13.1.3",
81
+ "@react-native-vector-icons/ionicons": "^13.1.3",
82
+ "@react-native-vector-icons/material-design-icons": "^13.1.3",
83
+ "expo-router": ">=57.0.0 <58.0.0",
84
+ "react": "19.2.3",
85
+ "react-native": "0.86.x",
86
+ "react-native-safe-area-context": ">=5.6.0 <6.0.0",
87
+ "react-native-web": "~0.21.0"
88
+ },
68
89
  "devDependencies": {
90
+ "@ankhorage/surface": "^3.4.1",
69
91
  "@ankhorage/devtools": "^1.11.0",
70
92
  "@ankhorage/paradox": "^0.1.24",
93
+ "@react-native-vector-icons/fontawesome": "^13.1.3",
94
+ "@react-native-vector-icons/fontawesome5": "^13.1.3",
95
+ "@react-native-vector-icons/fontawesome6": "^13.1.3",
96
+ "@react-native-vector-icons/ionicons": "^13.1.3",
97
+ "@react-native-vector-icons/material-design-icons": "^13.1.3",
71
98
  "@types/bun": "^1.4.1",
72
99
  "@types/node": "^24.13.3",
100
+ "@types/react": "^19.2.18",
101
+ "expo-router": "57.0.18",
102
+ "react": "19.2.3",
103
+ "react-native": "0.86.3",
104
+ "react-native-safe-area-context": "~5.7.0",
105
+ "react-native-web": "~0.21.0",
73
106
  "typescript": "~6.0.3"
74
107
  },
75
108
  "packageManager": "bun@1.4.1"